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

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

本文介绍在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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。