我要执行Shapiro-Wilk正态性测试。我的数据是csv
格式。看起来像这样:
heisenberg
HWWIchg
1 -15.60
2 -21.60
3 -19.50
4 -19.10
5 -20.90
6 -20.70
7 -19.30
8 -18.30
9 -15.10
但是,当我执行测试时,我得到:
shapiro.test(heisenberg)
为什么不选择正确的列,我该怎么做?
最佳答案
shapiro.test有什么作用? shapiro.test
测试NULLt假设“样本来自正态分布” ,而不是替代假设“样本不来自正态分布”。
如何在R中执行shapiro.test? ?shapiro.test
的R帮助页面提供了,
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
需要一个数字 vector 作为输入,它对应于您要测试的样本,并且它是唯一需要的输入。由于具有data.frame,因此必须将所需的列作为输入传递给函数,如下所示:> shapiro.test(heisenberg$HWWIchg)
# Shapiro-Wilk normality test
# data: heisenberg$HWWIchg
# W = 0.9001, p-value = 0.2528
解释shapiro.test的结果:
首先,我强烈建议您使用
testing for normality
的Ian Fellows的read this excellent answer。如上所示,
shapiro.test
测试NULL假设,即样本来自正态分布。这意味着,如果您的p值和的正态性假设。换句话说(如果我错了,请纠正我),如果测试一个NULL假设(样本不是来自于一个),那会更好。正态分布为什么?因为拒绝NULL假设与接受替代假设不同。在
shapiro.test
的零假设的情况下,p值set.seed(450)
x <- runif(50, min=2, max=4)
shapiro.test(x)
# Shapiro-Wilk normality test
# data: runif(50, min = 2, max = 4)
# W = 0.9601, p-value = 0.08995
因此,根据该测试,这个(特定的)样本
runif(50, min=2, max=4)
来自正态分布。我想说的是,在许多情况下,“极端”要求(p 我想在@PaulHiemstra中引用有关对大样本量的影响的评论,这是另一个问题:
尽管他还指出R的数据大小限制对此有所保护:
如果NULL假设相反,则意味着样本不是来自正态分布,并且p值
@PaulHiemstra还谈到实际情况(示例回归),当遇到这种测试正常性的问题时:
在这里,我发现伊恩·费洛夫(Ian Fellows)对本·博克(Ben Bolker)在同一个问题上的评论的答复已经同上(如果没有更多的话)具有引用值(value):
希望这能使事情变得顺利。