【问题标题】:scipy.stats.normaltest() to test the normality of numpy.random.normal()scipy.stats.normaltest() 测试 numpy.random.normal() 的正常性
【发布时间】:2017-02-05 00:56:23
【问题描述】:

我使用 scipy.stats.normaltest() 来测试 numpy.random.normal() 生成的数据的正态性。代码如下:

from numpy import random
from scipy import stats

for i in range(0, 10):
  d = numpy.random.normal(size=50000)
  n = scipy.stats.normaltest(d)
  print n

结果如下:

(1.554124262066523, 0.45975472830684272)
(2.4982341884494002, 0.28675786530134384)
(2.0918010143075256, 0.35137526093176125)
(0.90623072927961634, 0.63564479846313271)
(2.3015160217986934, 0.31639684620041014)
(3.4005006481463624, 0.18263779969208352)
(2.5241123233368978, 0.28307138716898311)
(12.705060069198185, 0.001742333391388526)
(0.83646951793409796, 0.65820769012847313)
(0.12008522338293379, 0.94172440425950443)

根据文档here,normaltest()返回的值的第二个元素是

pvalue : float or array
  A 2-sided chi squared probability for the hypothesis test.

如果我的理解是正确的,则表明输入数据处于正态分布的可能性有多大。我曾预计上述代码生成的所有 pvalue 都非常接近 1。但是,其中一些可以小到 0.001742333391388526。这里有什么问题?

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    如果我的理解是正确的,则表明输入数据处于正态分布的可能性有多大。我原以为上面代码生成的所有 pvalue 都非常接近 1。

    恐怕你的理解不正确。 p-value 是获得至少与零假设下的观察结果一样极端的结果的概率(即在数据实际上是正态分布的假设下)。它不需要接近 1。通常,大于 0.05 的 p 值被认为不显着,这意味着正常性未被检验证明。

    正如 Victor Chubukov 所指出的,即使数据确实是正态分布的,您也可以偶然获得低 p 值。

    统计假设检验相当复杂,可能看起来有些违反直觉。如果您需要了解更多详情,Cross Validated 是获得更详细答案的地方。

    【讨论】:

      【解决方案2】:

      有人可能会过来对我大喊大叫,说这不是 p 值的正确定义,但作为粗略估计,您可以期望得到一个低至 x 的 p 值以概率 x。因此,大约每 575 次尝试一次,您将获得低至 0.00174 的 p 值。

      import numpy as np
      from scipy.stats import normaltest
      import matplotlib.pyplot as plt
      %matplotlib inline
      
      L=[]
      for i in range(0, 10000):
          d = np.random.normal(size=50000)
          n = normaltest(d)
          L.append(n.pvalue)
      
      
      plt.hist(L,bins=20)
      plt.show()
      

      【讨论】:

      • 没什么可大喊大叫的,AFAICS。如果分布正确,则 p 值在原假设下均匀分布。
      猜你喜欢
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 2021-10-05
      相关资源
      最近更新 更多