正态性检验(Shapiro-Wilk test检验和kstest检验)
创作时间:
作者:
@小白创作中心
正态性检验(Shapiro-Wilk test检验和kstest检验)
引用
CSDN
1.
https://blog.csdn.net/qq_45932996/article/details/141689121
正态分布又称高斯分布(Gaussian distribution)。若随机变量X服从一个数学期望为μ、方差为σ2的正态分布,记为N(μ,σ2),其中期望值μ决定了其位置,标准差σ决定了分布的幅度。当μ=0,σ=1时的正态分布就是标准正态分布。有相当多的统计程序对数据要求比较严格,它们只有在变量服从或者近似服从正态分布的时候才是有效的,所以在对整理收集的数据进行预处理的时候需要对它们进行正态检验。
1 Shapiro-Wilk test检验
使用Shapiro-Wilk test检验数据是否服从正态分布的代码如下:
import pandas as pd # 载入pandas模块,并简称为pd
import numpy as np # 载入numpy模块,并简称为np
from scipy import stats # 载入stats模块
data = pd.read_csv(r'数据4.1.csv')
# Shapiro-Wilk test检验
Ho = '数据服从正态分布' # 定义原假设
Ha = '数据不服从正态分布' # 定义备择假设
alpha = 0.05 # 定义显著性P值
def normality_check(data):
for columnName, columnData in data.items():
print("Shapiro test for {columnName}".format(columnName=columnName))
res = stats.shapiro(columnData)
pValue = round(res[1], 2)
if pValue > alpha:
print("pvalue = {pValue} > {alpha}. 不能拒绝原假设. {Ho}".format(pValue=pValue, alpha=alpha, Ho=Ho))
else:
print("pvalue = {pValue} <= {alpha}. 拒绝原假设. {Ha}".format(pValue=pValue, alpha=alpha, Ha=Ha))
normality_check(data)
结果:
综上所述,根据Shapiro-Wilk test检验结果,变量year、profit、labor服从正态分布,invest、rd不服从正态分布。
说明:
- 首先定义了原假设Ho和备择假设Ha,以及显著性水平alpha为 0.05。
- 原假设Ho表示数据服从正态分布。
- 备择假设Ha表示数据不服从正态分布。
- 显著性水平alpha通常用于判断是否拒绝原假设,一般取值较小,这里取 0.05 表示在 5% 的显著性水平下进行检验。
- 定义了一个名为normality_check的函数,该函数接受一个参数data,通常这个参数是一个字典或者类似的数据结构,其中包含不同的数据集,每个数据集可以通过一个键(比如列名)来访问。
- 在normality_check函数内部,使用for循环遍历data中的每一个键值对,其中columnName是键(通常是列名),columnData是对应的值(通常是一列数据)。
- print("Shapiro test for {columnName}".format(columnName=columnName))这行代码打印出正在进行 Shapiro-Wilk 检验的列名。
- res = stats.shapiro(columnData)调用stats.shapiro函数对当前列的数据进行 Shapiro-Wilk 检验,这个函数会返回一个包含检验统计量和 p 值的元组。
- pValue = round(res[1], 2)从元组中取出 p 值,并将其保留两位小数。
- if pValue > alpha:如果 p 值大于显著性水平alpha,则表示不能拒绝原假设,即数据可能服从正态分布。打印出相应的信息,包括 p 值、显著性水平和原假设的内容。
- else:如果 p 值小于等于显著性水平alpha,则拒绝原假设,即数据不服从正态分布。打印出相应的信息,包括 p 值、显著性水平和备择假设的内容。
- 最后,调用normality_check(data)函数,传入要进行正态性检验的数据,开始执行整个检验过程。
使用 Shapiro-Wilk 检验来判断给定数据集中的每一列数据是否服从正态分布,并根据检验结果打印出相应的结论。
2 kstest检验
使用kstest检验数据是否服从正态分布的代码如下:
# 使用kstest检验数据是否服从正态分布
Ho = '数据服从正态分布' # 定义原假设
Ha = '数据不服从正态分布' # 定义备择假设
alpha = 0.05 # 定义显著性P值
def normality_check(data):
for columnName, columnData in data.items():
print("kstest for {columnName}".format(columnName=columnName))
res = stats.kstest(columnData, 'norm')
pValue = round(res[1], 2)
if pValue > alpha:
print("pvalue = {pValue} > {alpha}. 不能拒绝原假设. {Ho}".format(pValue=pValue, alpha=alpha, Ho=Ho))
else:
print("pvalue = {pValue} <= {alpha}. 拒绝原假设. {Ha}".format(pValue=pValue, alpha=alpha, Ha=Ha))
normality_check(data)
结果:
综上所述,根据kstest检验结果,变量year、profit、invest、labor、rd均不服从正态分布。综合两种检验结果,我们可以认为year、profit、invest、labor、rd均不服从正态分布。
说明:
- 首先定义了原假设Ho、备择假设Ha和显著性水平alpha:
- Ho表示数据服从正态分布。
- Ha表示数据不服从正态分布。
- alpha设置为 0.05,通常用于判断是否拒绝原假设,即在 5% 的显著性水平下进行检验。
- 定义了一个名为normality_check的函数,该函数接受一个参数data,通常这个参数是一个字典或者类似的数据结构,其中包含不同的数据集,每个数据集可以通过一个键(比如列名)来访问。
- 在normality_check函数内部:
- 使用for循环遍历data中的每一个键值对,其中columnName是键(通常是列名),columnData是对应的值(通常是一列数据)。
- print("kstest for {columnName}".format(columnName=columnName))打印出正在进行 Kolmogorov-Smirnov 检验的列名。
- res = stats.kstest(columnData, 'norm')使用scipy.stats模块中的kstest函数对当前列的数据进行检验。第一个参数columnData是要检验的数据,第二个参数'norm'表示检验其是否服从正态分布。这个函数会返回一个包含检验统计量和 p 值的元组。
- pValue = round(res[1], 2)从元组中取出 p 值,并将其保留两位小数。
- 如果pValue > alpha,表示 p 值大于显著性水平,此时不能拒绝原假设,打印出相应的信息,包括 p 值、显著性水平和原假设的内容。
- 如果pValue <= alpha,表示 p 值小于等于显著性水平,此时拒绝原假设,打印出相应的信息,包括 p 值、显著性水平和备择假设的内容。
- 最后,调用normality_check(data)函数,传入要进行正态性检验的数据,开始执行整个检验过程。
使用 Kolmogorov-Smirnov 检验来判断给定数据集中的每一列数据是否服从正态分布,并根据检验结果打印出相应的结论。
热门推荐
基金该如何止盈?三个实用办法
脑机接口技术能成为人脑的理想“知己”吗
431手!宝岛女棋手创职业比赛最长手数 原纪录保持者是暴躁日本老农
锅包肉:东北名菜的完美复刻
儿子也是抑郁症怎么办呢
2024年中国新青年"兴趣消费"行为调研数据
宝宝奶瓶材质怎么选?PP、PPSU、tritan哪家强!
电梯噪声污染引纠纷,法院判决安装方生产方赔偿4000元
装修房子整体流程是怎样的?
西双版纳7天6夜深度游:从热带雨林到傣族文化,全方位体验攻略
洗衣机显示E2故障怎么办?15个实用解决方案帮你轻松应对
点评日本三大幕府政体利弊,他们是如何衰弱的?
中国电信张成良:拥抱AI,加速网络创新与演进
农民被逼两年认罪九次,当杀人犯坐牢12年!被杀的人却打工回来了
饿了喝牛奶真的健康吗?揭秘牛奶缓解饥饿的真相与禁忌!
黑芝麻的功效与作用:从免疫到记忆的全方位保健
暗疮大解析:如何分辨、成因及日常防护全攻略!
在家之人如何修行?六祖慧能总结的这8条,可以说是面面俱到
买卖房屋如何避免落入诈骗陷阱?
执行款利息法院怎么算出来的
【药师专栏】纠结母乳喂养会影响宝宝肠道发展?母乳或益生菌都是好选择
低糖低脂的甜品,真的更健康吗?
古代妃子和皇后是怎么自称吗?“哀家”“臣妾”“本宫”有何区别?
100克干面条的热量:干面条与湿面条热量对比及减肥期间适宜摄入量
列宁讲透马克思主义思想的来龙去脉与核心内容
如何测量餐后血糖
日柱福星贵人:贵人何时出现与命运影响
房屋遗产继承起诉书怎么写?遗产继承对残疾人有照顾吗?
诸葛亮:蜀汉丞相的非凡一生
艾草足贴去湿气减肥的功效分析