shapiro.test是做什么的?
shapiro.test
检验"样本来自于正态分布"的零假设对样本不来自于正态分布的备择假设。
如何在R中执行shapiro.test?
R的帮助页面?shapiro.test
给出:
x - a numeric vector of data values. Missing values are allowed,
but the number of non-missing values must be between 3 and 5000.
也就是说,shapiro.test
函数需要一个数值向量作为输入,该向量对应要测试的样本,并且这是唯一必需的输入。由于您有一个数据框,因此必须按以下方式将所需列作为输入传递给函数:
> shapiro.test(heisenberg$HWWIchg)
解释 shapiro.test 结果:
首先,我强烈建议您阅读Ian Fellows在testing for normality
上的精彩回答。
如上所示,shapiro.test
测试了样本来自正态分布的NULL假设。这意味着如果您的p值≤0.05,那么您将拒绝样本来自正态分布的NULL假设。正如Ian Fellows所说,您正在测试反对正态性假设。换句话说(如果我错了,请纠正我),如果测试空假设为样本不来自正态分布,则会更好。为什么?因为拒绝一个空假设并不等于接受备择假设。
在shapiro.test
的空假设情况下,p值≤0.05将拒绝样本来自正态分布的零假设。简单来说,存在很小的可能性样本来自正态分布。这种假设检验的副作用是这种罕见的可能性很少发生。举个例子,比如:
set.seed(450)
x <- runif(50, min=2, max=4)
shapiro.test(x)
因此,这个(特定的)样本
runif(50, min=2, max=4)
来自正态分布,根据这个测试。我的意思是,在许多情况下,“极端”要求(p < 0.05)不满足,这导致大多数时候接受“NULL假设”,这可能会误导。
我想引用@PaulHiemstra在评论中提到的大样本量效应的另一个问题:
“Shapiro-Wilk's测试的另一个问题是,当你输入更多数据时,零假设被拒绝的机会变得更大。因此,对于大量数据甚至可以检测到非常小的偏离正常性,导致拒绝零假设,即使对于实际目的而言,数据已足够正常。”
尽管他还指出R的数据大小限制有些保护:
“幸运的是,shapiro.test通过将数据大小限制为5000来保护用户免受上述描述的影响。”
如果零假设相反,意味着样本
不来自正态分布,并且您获得
p值<0.05,则可以得出结论,这些样本
不通常不来自正态分布(拒绝零假设)。简单地说,样本很可能是正态分布的(尽管一些统计学家可能不喜欢这种解释方式)。我认为这也是Ian Fellows在他的帖子中试图解释的内容。如果我错了,请纠正我!
@PaulHiemstra还评论了实际情况(例如回归)中遇到这个测试正态性问题时的情况:
“实际上,如果分析假设正态性,例如lm,我不会进行Shapiro-Wilk's测试,而是进行分析并查看分析结果的诊断图来判断是否违反了分析的任何假设。对于使用lm的线性回归,可以通过查看使用plot(lm())获得的一些诊断图来完成这项工作。统计学不是一系列咳嗽几个数字(嘿p <0.05!),而需要大量经验和技能来判断如何正确分析数据。”
在这里,我发现Ian Fellows回复Ben Bolker在同一问题下的评论的回复同样(如果不是更加)有信息价值:
“对于线性回归,”
不要太担心正态性。 CLT很快接管,如果您具有除最小样本大小以外的所有样本大小和一个看起来合理的直方图,那么您就可以放心了。
担心不等方差(异方差性)。我担心这一点,以至于(几乎)默认使用HCCM测试。比例位置图将给出一些关于是否破坏的想法,但并不总是如此。此外,在大多数情况下没有先验理由假定平等的变异性。
异常值。烹饪距离> 1是令人担忧的充分理由。
"这些是我的想法(FWIW)。
希望这可以澄清一些事情。
lm
,我不会进行Shapiro-Wilks检验,而是进行分析并查看分析结果的诊断图,以判断是否违反了任何分析假设。对于使用lm
进行线性回归,可以通过查看使用plot(lm())
得到的一些诊断图来完成此操作。统计学不仅仅是一系列步骤,可以得出一些数字(嘿,p < 0.05!),而需要许多经验和技能来判断如何正确地分析数据。 - Paul Hiemstrashapiro.test
通过将数据大小限制为5000来保护用户免受上述描述的影响。 - Paul Hiemstra