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

上一篇:C语言编程练习52:迷瘴


下一篇:getimagesize()获取图片尺寸等信息