Python科研数据分析专题之正态性检验

数据的正态性检验

Sim_Jackson | 2023

  • 在时间序列预测类的论文中应用较多
# 导入需要的第三方库
import pandas as pd
import os
import warnings
warnings.filterwarnings('ignore')
dir_ = r'D:\科研论文\Python\数据分析'
os.chdir(dir_)
files = os.listdir(dir_) # 将该地址下的文件都列出来
files # finaldata为填补完缺失值之后的数据
['data.xlsx', 'finaldata.csv', 'google.csv', 'reaseach_data.xlsx']
# 数据读取
df = pd.read_csv(files[1]) # 1即为第2个,'finaldata.csv'
collst = df.drop(columns=['time']).columns
collst
Index(['X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8', 'X9', 'X10'], dtype='object')
df[collst[2]]
0      1527.100000
1      1548.750000
2      1573.100000
3      1567.850000
4      1571.950000
          ...     
752    1789.400408
753    1789.400408
754    1803.350000
755    1813.750000
756    1789.400408
Name: X3, Length: 757, dtype: float64
import scipy.stats as stats
# Jarque-Bera检验(Jarque-Bera test )是一种拟合优度检验,它确定样本数据是否具有与正态分布相匹配的偏度(skewness)和峰度
#P值<指定水平0.05,拒绝原假设,认为样本数据在5%的显著水平下不服从正态分布
#输出(统计量JB的值,P值)=(0.28220016508625245, 0.86840239542814834)
for col in collst:
    print(col, stats.jarque_bera(df[col]))
X1 Jarque_beraResult(statistic=59.454720948523104, pvalue=1.2290168882600483e-13)
X2 Jarque_beraResult(statistic=36.29592246751836, pvalue=1.3135317611379094e-08)
X3 Jarque_beraResult(statistic=17.54796785231033, pvalue=0.00015470601396028183)
X4 Jarque_beraResult(statistic=96.21929966917415, pvalue=0.0)
X5 Jarque_beraResult(statistic=18.26592700292738, pvalue=0.00010804491891125423)
X6 Jarque_beraResult(statistic=4263.5528015676455, pvalue=0.0)
X7 Jarque_beraResult(statistic=81.06892326459135, pvalue=0.0)
X8 Jarque_beraResult(statistic=71.48073636057188, pvalue=3.3306690738754696e-16)
X9 Jarque_beraResult(statistic=29.700531080527117, pvalue=3.553134283462711e-07)
X10 Jarque_beraResult(statistic=85.37705482352717, pvalue=0.0)

输出结果为:

  • 第一个statistic为统计量,第二个值为P值
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!在Python中,你可以使用SciPy库中的stats模块来进行正态性检验。具体而言,你可以使用shapiro函数来进行Shapiro-Wilk正态性检验,或者使用normaltest函数来进行D'Agostino-Pearson正态性检验。 下面是一个示例代码,展示如何使用SciPy库进行正态性检验: ```python from scipy import stats # 示例数据 data1 = [1, 2, 3, 4, 5] data2 = [0.5, 1.5, 2.5, 3.5, 4.5] # Shapiro-Wilk 正态性检验 statistic, p_value = stats.shapiro(data1) print("Data 1 - Shapiro-Wilk test:") print("Statistic:", statistic) print("p-value:", p_value) statistic, p_value = stats.shapiro(data2) print("Data 2 - Shapiro-Wilk test:") print("Statistic:", statistic) print("p-value:", p_value) # D'Agostino-Pearson 正态性检验 statistic, p_value = stats.normaltest(data1) print("Data 1 - D'Agostino-Pearson test:") print("Statistic:", statistic) print("p-value:", p_value) statistic, p_value = stats.normaltest(data2) print("Data 2 - D'Agostino-Pearson test:") print("Statistic:", statistic) print("p-value:", p_value) ``` 运行以上代码,你将会得到两组数据的正态性检验结果。在这个示例中,data1和data2是两组示例数据,你可以根据自己的需要替换它们。 值得注意的是,正态性检验是一种统计方法,用于检验数据是否符合正态分布的假设。然而,正态性检验并不一定能够准确判断数据是否真正符合正态分布,而只是提供了一个参考。因此,在进行正态性检验之前,你应该先对你的数据和研究领域进行充分的了解和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值