我一直在努力在我的数据框上获取一张 shapiro-wilkes 正态性假设检验 p 值表。以下是逗号分隔的 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
函数以获得 shapiro-wilkes 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
这个怎么可能?有什么想法吗?