13分布拟合检验预测:考试成绩分析

本篇说明

上前一篇内容“描述性统计分析:考试成绩分析”,已经把“19级财管管理会计”科目考试成绩进行了描述性统计分析 。想必您已经对成绩总体情况,以及分班级成绩情况有了基本的了解 。
然而,在分析最后,我进行了hist和kde分析并画出了便于大家认知的统计图 。那么 , 画出hist和kde的目的是什么呢?在上文并没有进行分析和说明 。其实质是为了本文进行分布拟合和预测做前导 。
本文将在前一篇“描述性统计分析:考试成绩分析”基础之上 , 继续做分析 。
主要完成以下几个重要任务 , 这几个点也是经济类、管理类专业做数据分布拟合和预测的痛点 。
  • 成绩数据经验分布的猜想;
  • 根据猜想对成绩数据进行猜想分布的拟合;
  • 对分布进行检验;
  • 预测 。
如果不清楚前因,请先阅读前文:
“描述性统计分析:考试成绩分析”

13分布拟合检验预测:考试成绩分析

对分布的经验判断

import numpy as npimport pandas as pdfrom scipy.stats import beta ,kstestimport matplotlib.pyplot as pltimport seaborn as snsdf = pd.read_excel('19财管管理会计成绩.xlsx')data =https://www.itzhengshu.com/excel/df['glkj'].tolist()
该数据集为excel表格"19财管管理会计成绩.xlsx":
  • class:班级 。19财管1—19财管6 。分类变量 。
  • glkj:管理会计,该科目考试成绩 。可度量变量 。

13分布拟合检验预测:考试成绩分析

  • 成绩整体分布情况,在前一篇文中已经介绍过,不清楚的可以查阅前一篇内容 。

13分布拟合检验预测:考试成绩分析

  • 对该图分布进行经验分析和判断:从图上可以清楚的看到,分布的特征是严重“左偏” , 峰值附近分布很窄,收尾很快 。
  • 有这种特征的分布有很多:beta分布、genextreme分布等 。
感兴趣的话,可以对不限于上面两种分布进行拟合,形态如下图所示:
13分布拟合检验预测:考试成绩分析

13分布拟合检验预测:考试成绩分析

基于经验的判断:拟合beta分布

a_glkj, b_glkj, loc_glkj, scale_glkj = beta.fit(data)#a_glkj, b_glkj, loc_glkj, scale_glkj为拟合beta分布返回的分布参数值 。
  • 结果:
(a_glkj, b_glkj, loc_glkj, scale_glkj)
(91.93, 1.65, -564.81, 665)

分布检验:Kolmogorov-Smirnov test

cdf = stats.beta.cdfstats.kstest(rvs=data, cdf, args=(a_glkj, b_glkj, loc_glkj, scale_glkj), N=20, alternative='two-sided', mode='auto')
  • 结果:
KstestResult(statistic=0.05016, pvalue=https://www.itzhengshu.com/excel/0.3581)
  • p>0.05:在0.05水平上,没有理由说它不服从beta分布 。
  • 即:19财管管理会计成绩符合beta分布 。
  • 分布参数为:
(a_glkj, b_glkj, loc_glkj, scale_glkj)
(91.93, 1.65, -564.81, 665)

给定参数的理论分布:beta

bins=np.linspace(start=data.min(),stop=data.max(), num=30, endpoint=True)ax1= sns.distplot(data,bins=bins,norm_hist=True,hist=True,kde=False,label='19财管管理会计成绩hist')plt.legend(loc='best')x = np.linspace(data.min(), data.max(), 100)y = beta.pdf(x, a_glkj, b_glkj, loc_glkj, scale_glkj)ax1 = plt.plot(x, y, 'c', linewidth=3, label='19财管管理会计成绩pdf')plt.legend(loc='best')
13分布拟合检验预测:考试成绩分析

13分布拟合检验预测:考试成绩分析

根据理论分布进行预测

  • beta分布:给定参数下的理论 pdf
fig, ax = plt.subplots(1, 1)mean, var, skew, kurt =beta.stats(a_glkj,b_glkj,loc_glkj,scale_glkj, moments='mvsk')min_x = beta.ppf(0.001, a_glkj, b_glkj, loc_glkj, scale_glkj)max_x = beta.ppf(0.999, a_glkj, b_glkj, loc_glkj, scale_glkj)x = np.linspace(start= min_x, stop= max_x, num= 400,endpoint=True)y = beta.pdf(x, a_glkj, b_glkj, loc_glkj, scale_glkj)ax.plot(x, y,'r-', lw=3, alpha=0.4, label='19财管管理会计成绩beta pdf')ax.legend(loc='best')
13分布拟合检验预测:考试成绩分析

  • beta分布:给定参数下的理论 cdf
z = beta.cdf(x, a_glkj, b_glkj, loc_glkj, scale_glkj)plt.plot(x, z ,'r-', lw=3, alpha=0.4, label='19财管管理会计成绩beta cdf')plt.legend()plt.show()
13分布拟合检验预测:考试成绩分析

预测

  • 预测:分数<=X分的概率
beta.cdf([43,60,80,90,100], a_glkj, b_glkj, loc_glkj, scale_glkj)
结果:array([0.001, 0.01, 0.13, 0.43, 0.97])
按既定的数据分布预测 , 考60分以下的概率仅仅为1% 。如此低的不及格率 。
  • 预测:概率=X% 下的分数
beta.ppf([0.001, 0.5, 0.999], a_glkj, b_glkj, loc_glkj, scale_glkj)
结果:array([ 41.81, 90.65, 100])
13分布拟合检验预测:考试成绩分析

【13分布拟合检验预测:考试成绩分析】

13分布拟合检验预测:考试成绩分析

13分布拟合检验预测:考试成绩分析

相关经验推荐