分位数 百分位数php算法

1. 分位数概率学概念

分位数指的就是连续分布函数中的一个点,这个点对应概率p。若概率0 百分位数,统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。

1)第一四分位数(Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字;

2)第二四分位数(Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字;

3)第三四分位数(Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

第三四分位数与第一四分位数的差距又称四分位距。

2.
php写一个分位数算法

php 算法

<?php
// set an array of values
//https://blog.poettner.de/2011/06/09/simple-statistics-with-php/
//https://www.excel-easy.com/examples/percentiles-quartiles.html
 
//$values = array(2,1,2,3,3,4,5,6,10,23,98,33,89,178,23,123,334,998.2);
$values = array(2,3,3,5,7,11,16,17,17,20,22,25,48,52,56,76,89,96,115);
 
sort($values);
foreach ($values as $key => $v) {
	echo $v.'<br />';
}
 
echo '<hr>';
echo count($values);
echo '<hr>';
echo Quartile($values,0.25);
echo '<br>';
echo Quartile($values,0.50);
echo '<br>';
echo Quartile($values,0.75);
 
function Median($Array) {
  return Quartile_50($Array);
}
 
function Quartile_25($Array) {
  return Quartile($Array, 0.25);
}
 
function Quartile_50($Array) {
  return Quartile($Array, 0.5);
}
 
function Quartile_75($Array) {
  return Quartile($Array, 0.75);
}
 
function Quartile($Array, $Quartile) {
  $pos = (count($Array) - 1) * $Quartile;
 
  $base = floor($pos);
  $rest = $pos - $base;
 
  if( isset($Array[$base+1]) ) {
    return $Array[$base] + $rest * ($Array[$base+1] - $Array[$base]);
  } else {
    return $Array[$base];
  }
}
 
function Average($Array) {
  return array_sum($Array) / count($Array);
}
 
function StdDev($Array) {
  if( count($Array) < 2 ) {
    return;
  }
 
  $avg = Average($Array);
 
  $sum = 0;
  foreach($Array as $value) {
    $sum += pow($value - $avg, 2);
  }
 
  return sqrt((1 / (count($Array) - 1)) * $sum);
}
?>

输出

3. 用Excel检查算法的正确性


Excel有百分位公式
25% 分位

=PERCENTILE(A1:A19,0.25)

Excel计算出来的结果和php结果相同


This entry was posted in PHP, 数学与算法 and tagged , , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/quartile-php/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.
2020.03.24 评论已经全局关闭,有事加QQ聊天