0
点赞
收藏
分享

微信扫一扫

python numpy 求数组的百位分数

码农K 2022-05-18 阅读 136

百分位数,统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。运用在教育统计学中,例如表现测验成绩时,称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




举报

相关推荐

0 条评论