python numpy 求數組的百位分數


百分位數,統計學術語,如果將一組數據從小到大排序,並計算相應的累計百分位,則某一百分位所對應數據的值就稱為這一百分位的百分位數。運用在教育統計學中,例如表現測驗成績時,稱PR值。
分位數是以概率將一批數據進行分割
比如說,這里有一組6個同學的分數為[12, 31, 22, 61, 52, 88],然后我們將其由小到大排序[12, 22, 31, 52, 61, 88]
給定概率點求p分位數
1.比如我給定一個概率點無論是哪一組數據,至少40%的分數不及格,該事件的反面是至多60%的分數及格。(由微積分的知識可知某一點的概率為0,所以這兩個是至多,至少,<=, >=)

2.按照這個概率點,我們要在這組數據中找到一個數,小於該數的數至少占總數的40%,大於該數的數至多占總數的60%

3.因為這組數據有6個數,所以
至少有40%,即至少有6*40%=2.4個學生,取整3個,所以x_0.4 >=31;
至多有60%,即至多有6*60%=3.6個學生,取整4個,所以x_0.4 <=31;
兩個的交集剛好是數31,所以31是分位數

三、求分位數有兩種情況
交集為一個值的情況:
import numpy as np
a=np.array([12, 31, 22, 61, 52, 88])
p=np.percentile(a,40)
print(p)
結果:
31.0

上面介紹的是一種情況,下面介紹另一種情況,即交集為兩個值的情況:
還是上面的數據,若給的概率點是至少50%的分數不及格,該事件的反面是至多50%的分數及格。
至少有50%,即至少有6*50%=3個學生,所以x_0.4 >=31;
至多有50%,即至多有6*60%=3個學生,所以x_0.4 <=52;
這個時候分位數等於兩個數的平均值,即(31+52)/2=41.5
import numpy as np
a=np.array([12, 31, 22, 61, 52, 88])
p=np.percentile(a,50)
print(p)
結果:
41.5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM