【发布时间】:2023-03-18 02:55:01
【问题描述】:
我一直致力于在我的数据框上获取 shapiro-wilkes 正态性假设检验 p 值表。这是comma-delimeted CSV的数据框(名为“mdf1”)。
R 中的 Shapiro-Wilkes 测试需要大于 3 的样本量。为了对我的数据框(其中包含两个相关因素,“变量”和“站点”)进行子集化,我使用了以下代码:
Z <- as.data.frame(data.table(mdf1)[, list(freq=.N, value=value), by=list(Site,variable)][freq > 3])
这导致数据框“Z”包含属于 n 大于 3 的“站点”*“变量”组合的所有值。然后,我尝试将 Z 传递给ddply 函数以获得一个夏皮罗-威尔克斯 p 值表:
norm2 <- ddply(Z, .(Site, variable), summarize, n=length(value), sw=shapiro.test(value)[2])
这个命令的结果是:
Error in shapiro.test(val) : all 'x' values are identical
怎么可能?有什么想法吗?
【问题讨论】:
-
我不确定,但我想您是按变量拆分数据帧,然后对拆分后的变量应用测试。例如。对所有这些
c(1,1,....,1)和c(2,2,....2)等的测试。 -
我知道这会是个问题,但是在
ddply包中的shapiro.test命令中,我清楚地输入了“值”,而不是变量或因子。每个值都是不同的数值。 -
这最后一条评论让我走错了路:
all 'x' values are identical消息清楚地表明提供给 shapiro.test 的所有值都是相同的。这可能不是本意,但它确实发生了。