Python判断一组数据是否服从正态分布

前言

从文件中获取数据,判断数据是否服从正态分布或者近似服从正态分布。

正态分布:也称“常态分布”,又名高斯分布(Gaussian distribution)
若随机变量X服从一个数学期望为μ、方差为σ2的正态分布,记为N(μ,σ2)。
其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。
当μ = 0,σ = 1时的正态分布是标准正态分布。

判断方法

  • KS检验
    基于累计分布函数的,用于检验一个分布是否符合某种理论分布或比较两个经验分布是否有显著差异。

kstest方法:参数分别是:待检验的数据,检验方法(这里设置成norm正态分布),均值与标准差
结果返回两个值:statistic → D值,pvalue → P值
p值大于0.05,为正态分布
H0:样本符合
H1:样本不符合
如何p>0.05接受H0 ,反之

#导入scipy模块
from scipy import stats
import pandas as pd
data = pd.read_excel(r'sale.xls', index_col = False) #读取数据
u = data[u'销量'].mean()  # 计算均值
std = data[u'销量'].std()  # 计算标准差
stats.kstest(data[u'销量'], 'norm', (u, std))

结果展示

KstestResult(statistic=0.16962184456795837, pvalue=1.5900252683896546e-05)

pvalue < 0.05,不符合

  • 画图观测
#导入模块
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
#导入scipy模块
from scipy import stats

data = pd.read_excel(r'sale.xls', index_col = False) #读取数据

# 构造一组随机数据
s = data[u'销量']

# 画散点图和直方图
fig = plt.figure(figsize = (10,6))
ax1 = fig.add_subplot(2,1,1)  # 创建子图1
ax1.scatter(s.index, s.values)
plt.grid()

ax2 = fig.add_subplot(2,1,2)  # 创建子图2
s.hist(bins=30,alpha = 0.5,ax = ax2)
s.plot(kind = 'kde', secondary_y=True,ax = ax2)
plt.grid()

在这里插入图片描述
从图中观察,不符合,但近似符合。

总结

有些时候需要数据为正态分布才能进行研究,所以要先对数据进行判断一下。如果不满足正态分布,可以对数据进行处理分析。
采用方法为log 取对数,之后再对其进行分析。

data[u'销量'] = data['销量'].apply(lambda x: np.log(x))

针对具体应用场景,近似正态分布也可以采用正态分布相关的方法分析。

  • 12
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
根据引用中的代码和结果,我们可以看到采用KS检验检验数据是否服从正态分布的p值为0.7749,大于0.05的显著性水平,因此我们不能拒绝原假设。此外,引用中的代码也使用了三种统计检验方法(KS检验、normaltest和shapiro)来检验生成的样本是否服从正态分布。你可以根据自己的数据使用这些方法进行检验123 #### 引用[.reference_title] - *1* [python正态性检验检验数据是否服从正态分布](https://blog.csdn.net/shiyuzuxiaqianli/article/details/118060492)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [Python判断一组数据是否服从正态分布](https://blog.csdn.net/weixin_45063703/article/details/122379055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *3* [Python检验样本是否服从正态分布](https://blog.csdn.net/tszupup/article/details/108432814)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nsq_ai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值