python 概率分布函数_概率分布函数Python

这篇博客介绍了如何在Python中使用SciPy库进行正态性和对数正态分布的Shapiro-Wilk检验,以及如何通过Q-Q图来判断数据与特定概率分布的匹配程度。通过示例代码,展示了如何进行概率分布的适配和评估,帮助读者理解如何判断数据是否符合特定的概率分布。
摘要由CSDN通过智能技术生成

绝对是一个统计问题-听起来你是想做一个概率测试,看看这个分布是否与正态分布、对数正态分布、二项式分布等有显著的相似性。最简单的方法是测试正常或对数正常,如下所述。

设置Pvalue截止值,通常如果Pvalue<=0.05,则它不是正态分布的。

在Python use SciPy中,您只需要返回p值来测试,所以这个函数返回2个值(为了清楚起见,这里忽略了可选的(不需要的)输入):

import scipy.stats

[W, Pvalue] = scipy.stats.morestats.shapiro(x)

执行Shapiro-Wilk正态性测试。Shapiro-Wilk检验检验了数据来自正态分布的零假设。

如果要查看它是否为对数正态分布(前提是它未通过上面的p测试),可以尝试:

import numpy

[W, Pvalue] = scipy.stats.morestats.shapiro(numpy.log(x))

用同样的方法解释——我只是在一个已知的对数正态分布模拟上进行了测试,在np.log(x)测试中得到了0.17个p值,在标准shapiro(x)测试中得到了一个接近0的数字。这告诉我对数正态分布是更好的选择,正态分布失败惨重。

我把你要找的东西简单化了。对于其他发行版,您可能需要沿着Q-Q图https://en.wikipedia.org/wiki/Q%E2%80%93Q_plot的路线做更多的工作,而不是简单地遵循我提出的一些测试。这意味着你有一个你想要适应的分布图和你的数据图。下面是一个简单的例子,如果你愿意的话,可以让你走上这条路:import numpy as np

import pylab

import scipy.stats as stats

mydata = whatever data you are looking to fit to a distribution

stats.probplot(mydata, dist='norm', plot=pylab)

pylab.show()

上面的代码可以替换scipy库中的dist='norm'的任何内容http://docs.scipy.org/doc/scipy/reference/tutorial/stats/continuous.html#continuous-distributions-in-scipy-stats

然后找到它的scipy名称(必须根据文档添加形状参数,例如stats.probplot(mydata, dist='loggamma', sparams=(1,1), plot=pylab)或对于student Tstats.probplot(mydata, dist='t', sparams=(1), plot=pylab)),然后查看绘图并查看数据在该分布下的接近程度。如果数据点很接近,则可以找到分布。它在图上也会给你一个R^2值;一般来说,接近1的值越适合。

如果您想继续尝试使用数据帧,请尝试更改为:plt.hist(df['Frequency'].values)

如果这个答案回答了你的问题,请投赞成票:)需要一些赏金来回答我自己的编程难题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值