İstatistik Sınıfı ile Medyan ve Yüzdelik Almak

PHP
45 lines
<?php
class istatistik{
function ortanca($veri){
$ortanca = $this->yuzdebirlik($veri,50);
return $ortanca;
}
function yuzdebirlik($veri,$yuzdebirlik){
if( 0 < $yuzdebirlik && $yuzdebirlik < 1 ) {
$p = $yuzdebirlik;
}else if( 1 < $yuzdebirlik && $yuzdebirlik <= 100 ) {
$p = $yuzdebirlik * .01;
}else {
return "";
}
$say = count($veri);
$tumindeks = ($say-1)*$p;
$sayiindex = intval($tumindeks);
$deger = $tumindeks - $sayiindex;
sort($veri);
if(!is_float($deger)){
$sonuc = $veri[$sayiindex];
}else {
if($say > $sayiindex+1)
$sonuc = $deger*($veri[$sayiindex+1] - $veri[$sayiindex]) + $veri[$sayiindex];
else
$sonuc = $veri[$sayiindex];
}
return $sonuc;
}
function ceyrekler($veri) {
$q1 = $this->yuzdebirlik($veri,25);
$q2 = $this->yuzdebirlik($veri, 50);
$q3 = $this->yuzdebirlik($veri, 75);
$ceyrek = array ( '25' => $q1, '50' => $q2, '75' => $q3);
return $ceyrek;
}
}
$s = new istatistik();
$veri = array(12,34,56);
echo "25. Yüzdebirlik = ".$s->yuzdebirlik($veri,25)."<br />";
echo "Ortanca (50. yuzdebirlik) = ".$s->ortanca($veri)."<br />";
echo "95. Yüzdebirlik = ".$s->yuzdebirlik($veri,95)."<br />";
echo "Çeyrek(25., 50., 75. yuzdebirlik) = ".implode(", ", $s->ceyrekler($veri));
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

Markdown
4 lines
25. Yüzdebirlik = 23
Ortanca (50. yuzdebirlik) = 34
95. Yüzdebirlik = 53.8
Çeyrek(25., 50., 75. yuzdebirlik) = 23, 34, 45
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Sizin Değerli Görüşlerinize İhtiyacımız Var.