Python生成正态分布,判断数据是不是正态分布
在对数据进行建模之前,我们往往需要对数据进行正态性检验,然后通过检验结果来确定下一步的分析方案。以下是Python中常用的一些常规测试方法:
scipy . stats . kst
KS是一个强大的测试模块,除了正态性测试,还可以测试scipy.stats中的其他数据分布类型。
kstest(rvs,cdf,args=(),N=20,alternative=two_sided ,mode=approx ,**kwds)
对于正态性检验,我们只需要手动设置三个参数:
Rvs:要测试的数据
Cdf:检验方法,这里我们设为‘norm’,即正态性检验。
可选:默认为双尾检验,对于单尾检验,可以设置为“较小”或“较大”。
将numpy作为np导入
从scipy.stats导入kstest
x=np.linspace(-15,15,9)
kstest(x, norm )
(0.44435602715924361, 0.038850142705171065)
输出中第一个是统计,第二个是P值。
详见官方文档scipy.stats.kstest。
夏皮罗
与kstest不同,shapiro是一个专门用于正态性检验的模块。
注:夏皮罗不适合样本数> 5000的正态性检验,检验结果的P值可能不准确。
scipy.stats.shapiro(x,a=无,reta=假)
一般我们只用X参数,X是要检验的数据。
从scipy导入统计
随机种子(12345678)
x=stats.norm.rvs(loc=5,scale=3,size=100)
夏皮罗统计公司
(0.9772805571556091, 0.08144091814756393)
输出中第一个是统计,第二个是P值。
详见官方文件scipy.stats.shapiro。
scipy.stats.normaltest
Normaltest也是一个专门用于正态性测试的模块。
scipy.stats.normaltest(a,axis=0,nan_policy=propagate )
这里有必要看一下三个参数:
答:要测试的数据
轴:默认值为0,表示在0轴上测试,即测试每一行数据的正态性。我们可以设置axis=None来测试整个数据。
Nan_policy:当输入数据中有空值时的处理方法。默认值为“propagate”,它返回空值。当设置为“raise”时,将引发错误;当设置为“忽略”时,计算中将忽略空值。
将numpy作为np导入
从scipy.stats导入正常测试
x=np.random.randn(10,20)
正常测试(x,轴=无)
NormaltestResult(statistic=0.3582062593239369,pvalue=0.83601967652440512)
输出中第一个是统计,第二个是P值。
详见官方文档scipy.stats.normaltest。
scipy.stats.anderson
Anderson是kstest的修改版。说是加强版也不为过。还可以做各种分布测试,默认测试是正态测试。
scipy.stats.anderson(x,dist=norm )
这里就不多说参数了,解释一下输出结果:
安德森有三个输出值,第一个是统计值,第二个是评价值,第三个是显著性水平。评估值对应于显著性水平。
对于正态检验,显著性水平为:15%,10%,5%,2.5%,1%。
将numpy作为np导入
来自scipy.stats import anderson
x=np.linspace(-15,15,9)
安德森(x)
Anderson result(statistic=0.13676646631470213,critical_values=array([ 0.507,0.578,0.693,0.808,0.961]),significance_level=array([ 15。 10. 5. 2.5, 1.]))
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。