要計算的第k個百分點,你應該:
- 訂購的所有數據值從最小到最大設置。
- 將k值乘以值的總數n。
- 如果步驟2中獲得的指標不是一個整數,則將其四捨五入到最接近的整數並轉到步驟4.如果步驟2中獲得的指標是整數,則轉到步驟5。
- 算在你的數據中設置的值從左至右(從最小到最大的值),直到你到達的第3步 指示的號碼與您的數據設置相應的值是第k個百分點
- 算上數據集中的值從左到右,直到達到步驟2指示的數字。 第k百分位數是數據集中對應值的平均值,以及緊跟在i後面的值噸。
(從here)
轉換爲PHP:
$sData = sort($data);
$percentile = 50/100;
$index = ceil($percentile * count($sData));
$value = $sData[$index-1];
或更短:
$sData = sort($data);
$value = $sData[ceil((50/100) * count($sData)) - 1]
然而,在一個小數據集,有時百分最終是相同的。例如,以下代碼會生成以下輸出。
代碼
$data = array(74, 15, 25, 62, 45, 9, 16, 63, 60, 76, 7, 20, 67, 30, 12);
sort($data);
for($i=5;$i<100;$i+=5){
echo $i . " - " . $data[ceil(($i/100) * count($data)) - 1];
echo PHP_EOL;
}
輸出
5 - 7
10 - 9
15 - 12
20 - 12 //same as aboce
25 - 15
30 - 16
35 - 20
40 - 20 //same as above
45 - 25
50 - 30
55 - 45
60 - 45 //same as above
65 - 60
70 - 62
75 - 63
80 - 63 //same as above
85 - 67
90 - 74
95 - 76
感謝你爲這個,但是我的輸出有沒有比你差,這意味着我們都給予不同的百分比,以相同的數字 – EnexoOnoma
是,那麼百分位數是如何工作的。你需要別的東西,每個數字都是唯一的。也許是Z分數? @Xalloumokkelos –