尽管正常直方图,正常性测试的P值非常小

时间:2016-09-26 15:04:45

标签: python numpy scipy statistics

我已经查看了scipy.stats.mstats.normaltest以及scipy.stats.shapiro的scipy统计数据中的正态性测试,看起来他们都假设零假设是他们所依据的数据给定是正常的。

即,小于.05的p值表示它们不正常。

我在SKLearn中使用LassoCV进行回归,并且为了给自己更好的结果,我记录了对答案的转换,这给出了如下所示的直方图:

Histogram of data

对我来说很正常。

但是,当我通过上面提到的两个测试中的任何一个运行数据时,我得到非常小的p值,表明数据不正常,并且很大。

这是我使用scipy.stats.shapiro

时得到的
scipy.stats.shapiro(y)
Out[69]: (0.9919402003288269, 3.8889791653673456e-07)

当我运行scipy.stats.mstats.normaltest:

时,我得到了这个
scipy.stats.mstats.normaltest(y)
NormaltestResult(statistic=25.755128535282189, pvalue=2.5547293546709236e-06)

对我而言,我的数据会因为它的直方图而远离常态,这似乎不可信。

是否有导致这种差异的事情,或者我没有正确解释结果?

2 个答案:

答案 0 :(得分:0)

如果垂直轴上的数字是相应类别的观察数量,则样本大小约为1500.对于如此大的样本大小,拟合优度测试很少有用。但是,您的数据是否真的必须正常分布?如果您想用统计方法分析数据,这种方法在正常分布假设(“小”)偏差下是否可能是稳健的? 在实践中,我的统计分析通常是“正态分布假设是否可接受”。完美的正态分布非常简单。 关于直方图的附加注释:必须通过解释直方图中的数据来小心,因为如果数据“看起来正常”或不相关可能取决于直方图类的宽度。直方图只是应该谨慎对待的提示。

答案 1 :(得分:0)

如果运行n次并取p值的平均值,则将获得期望的结果。以Monte Carlo方式循环运行它。