Python正态性检验实战:直方图、QQ图与KS检验详解

晚来风
晚来风
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍在Python中进行正态性检验的多种方法,包括通过直方图结合密度线进行视觉初判,以及利用QQ图观察分位数与理论值的线性关系。文中提供了基于Scipy库的KS检验代码示例,通过计算D值和P值(P>0.05通常视为正态分布)来量化判断数据是否服从正态分布,适用于统计分析前的数据验证环节。

正态性检验概述

正态性检验是一种利用观测数据判断总体是否服从正态分布的统计方法,属于统计判决中重要的特殊拟合优度假设检验。

视觉检验方法:直方图与QQ图

初步判断可采用直方图结合密度曲线的方式,通过观察数据分布形态与正态分布曲线的吻合程度进行直观评估。

另一种方法是绘制QQ图,通过计算理论分位数 p(i)=(i-0.5)/n 并与实际观测值进行对比作图,若点大致落在直线上,则表明数据可能服从正态分布。

数据排序与分位数计算

在进行分位数计算前,需对数据进行排序处理,以便准确获取各位置对应的统计量。


 s.sort_values(by = 'value',inplace = True)
 s_r = s.reset_index(drop=False)

接下来计算具体的分位数值,为后续绘图和检验提供数据基础。

KS检验实现与结果解读


s_r['p'] = (s_r.index - 0.5)/len(s_r)
s_r['q'] = (s_r['value'] - mean) / std
print(s_r.head())
# 计算百分位数
# 计算q值

ax3 = fig.add_subplot(3,1,3)
ax3.plot(s_r['p'],s_r['value'],'k',alpha=0.5,linewidth = 3)

st = s['value'].describe()
x1 ,y1 = 0.25, st['25%']
x2 ,y2 = 0.75, st['75%']
ax3.plot([x1,x2],[y1,y2],'-r',linewidth = 3)

 

# 直接用算法做KS检验

from scipy import stats
stats.kstest(df['value'], 'norm', (u, std))
# 结果返回两个值:statistic → D值,pvalue → P值
# p值大于0.05,很可能为正态分布
'''

以上是在Python中进行正态性检验的完整示例,希望能为读者提供有效的参考,欢迎继续支持相关技术分享。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表