||
两个月前,在科学网看到张学文老师的博文,《猜想:高考分数为不同值的学生数量符合gamma分布?》,文中张老师讨论了一个很有意思的问题:获得某分数的人数满足的分布?
我今天想讨论的是另一个相关的问题: 如果认为高考成绩是一个随机变量 $X\in[0,750]" style="font-size:20px;$ ,那么X服从什么分布?
我很早就想写篇博文跟大家讨论高考成绩的分布问题,无奈前段时间博导给的事情有点多,就把这个问题放在一边了。最近这不又到高考的时候了,我想如果能对高考成绩的分布多一些了解,说不定对报志愿能有一些帮助。
先给出结果吧,我在网上搜了一下,因为北京的高考成绩最容易找到,而其中关于2012年的高考成绩分布【1】记录的又最为详细,于是楼主就拿2012年北京理工科高考成绩画了下面这张分布图。
图1.蓝色的直方图是样本的分布,红线是正态分布,绿线是我认为的分布。横轴是考试成绩,纵轴是靠这个成绩的学生占总人数的比例。
为了方便阅读,我先只说我是怎么做的,至于为什么这么做,我会在后面的分析中解释。
首先,从网上拿到的数据也不是特别细,比如【1】只会告诉我600到610这个区间有779个人,但是不会告诉我这些人具体考多少分。所以,我首先要做一点点数据的恢复(重采样)。怎么办呢?我用计算机生成779个均匀分布在600到610这个区间的离散随机数。比如600,600.5,601,。。。609.5。
其次,根据第一步的办法,我得到了43496个样本,于是我画出了这些样本的分布直方图,就是上图中那个蓝蓝的柱状图。因为我做了第一步,所以手里的样本多了很多。反之,如果我不做第一步,直方图就会是一些大块,不容易反映出数据的分布。
第三步,我计算了样本的方差和平均值,用红线画出了如果假设样本服从正态分布,那么理论上样本分布应该满足的形状。它是一个均值为450,标准差为109.5的正态分布。
第四步,其实我内心里不认为样本服从高斯分布,我认为样本应该是服从高斯混合分布。话句话说,我认为考生有不止一类人,有教育条件非常好的重点中学学生,也有条件非常差的农民工学校子弟,还有一部分在中间的普通人。总之,不管怎么分类,学生都不止一类。对于每一类人,他们的考试成绩都是服从相同的正态分布,但是对于不同类的学生,他们的考试成绩服从不同的正态分布。于是,总体的分布是这些正态分布的混合。
做个类比,要统计西安市民的收入分布,可能就不是一个正态分布,而是几个正态分布混在一起。因为有些职业收入高,有些职业收入低,有些职业收入在中间。如果职业差异大,那这个几个分布就更不能用一个正态分布来替代了。
有些读者可能会奇怪,为什么全国人民的身高服从正态分布呢?楼主认为这是因为东北人没有比四川人高得太多【2】。(见谅见谅,我不是区分地域,我就是看了一下统计数据。)因为不同省份的分布也比较接近,所以混在一起看起来说是一个正态分布也无妨。
言归正传。我根据样本经验性的将学生分三类(其实我就是用不同的参数试了好几次,找了一组比较靠谱的结果,说得好听点,呵呵。),比例分别是:
[0.05 0.88 0.07]
期望是:
[195 450 600]
标准差是:
[40 92 33]
可以从上图中明显的看到,绿线和样本的分布更加接近,尤其是两百分左右那个“小山包”,实在是无法用单独的正态分布解释。还有,大家都知道高考分数分布是非对称的,高分段学生会密一些,差一分就差N多人,这是因为有一类学霸考试成绩就不会低于500(第三个高斯分布)。
按我的理解,有时候假设数据服从正态分布并不是很合理。这样做会使问题过于简化,也许会导致后续的分析有失偏颇。比如我很不喜欢有些大学要把学生的成绩“正态化”,甚至用一些奇奇怪怪的公式(一般是一一映射)把本来的分布生生扭曲成“正态分布”,还仅仅是长得像正态分布的分布。
枉我当年还觉得这些公式好厉害,现在看这不就是凑数字,蒙小孩么?是为了好管理么?晕,反正我想不出来这么做的道理在哪里。人家明明就不是正态分布么,强扭的瓜不甜好不好。不过还好貌似现在越来越少的学校做这种事情了。
楼主认为评价学生应该用聚类分析,就是ABCD那种,95和96没有本质区别。如果成绩是分得比较开的高斯多模分布,那我还更容易给学生分类了。
再评论一下高斯混合模型。这个东西用处很广泛,就拿我们实验室的东西来说吧,接收机得到的信号有可能有“多径效应”,就会产生不止一个“钟形曲线”。再比如,有个同学做心电图的信号处理,病人至少可以分成两类,有病的没病的,所以他拿到的心电图,就服从一个混合分布。
我用这个高斯混合模型来描述样本的分布,不是因为我看见了数据,才这么拟合它。在我看到数据以前,我就有理由把成绩分布建模成GMM模型。第一,成绩750分是所有题目得分的和,750很大,根据大数定律,每个学生的成绩都近似是正态分布。第二,学生可以明显的分成若干类,每一类的参数不同。其实这个GMM的背后,是一个贝叶斯分层模型。
最后呢,说实话,这些参数都是我试了几次试出来的,见笑见笑。我这样分类和估计,肯定不是最优了,我只是懒得编优化程序了,就胡乱猜了三类。但是,可以很明显的从图中看出,即使是我瞎猜,用高斯混合模型也比简单的假设成绩服从正态分布要合理得多。打个比方,就算我胡乱找几个数字拿一次函数,二次函数,三次函数拟合数据,可能也比仅仅用直线拟合产生的误差要小。
顺便说一下,我算了K-S检验的P值,用GMM可以把这个值从 $10^{-18}$ 提升到 $10^{-4}$ 。由于时间的关系,样本的似然函数我没算。p值也能反映出得到这组数据的可能性,越大越好。
那么这三类学生占得比例和每类学生分布的参数怎么估计呢?还有,把学生分为几类更加合适呢?这两个问题似乎都没有简单的答案。我知道的有用EM算法做最大似然估计的,也有用蒙特卡洛方法做贝叶斯估计的,都是机器学习的内容。
因为毕竟是博文嘛,我没有解释太多的数学。我本周内会再写一篇博文把这个模型背后的数学尽量解释清楚,包括resampling,分类,优化,估计,KS检验。我厚颜无耻的推荐本科生朋友看我的下一篇博文,因为我刚才说的那些名词似乎都挺有用。
我找数据,编程序,写博文,折腾了一个晚上,如果您觉得我说的有道理,点个赞吧。谢谢啦。
[2] 中国各省男女平均身高表
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 13:01
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社