Shapiro-Wilk对R中多个变量的正态性检验:我有一个名为data的数据集,以及三个连续变量a,b,c。如何编写for循环分别对变量执行shapiro.test()?
答案 0 :(得分:1)
由朋友捐赠。
for (i in 1:3){print(shapiro.test(data[,i]))}
答案 1 :(得分:0)
如果您有3个向量a,b,c:
vars <- list(a, b, c)
result <- list()
for(i in seq(length(vars))) {
result <- append(result, shapiro.test(vars[[i]]))
}
如果您有数据框:
result <- list()
for(i in seq(dim(data)[2])) {
result <- append(result, shapiro.test(data[[i]]))
}
答案 2 :(得分:0)
您也知道,通过这种方式循环独立的假设测试通常是一种不好的做法。每次这样做,你都会承担少量的风险(通常为5%,如果alpha为0.05),那么如果你有100个变量,那么你真的会接受0.05+0.05+0.05+...+0.05 = 0.05*100
的总风险。这是不合理的。即使他们都通过了正常性的考验,你现在肯定(概率 - 盟友),他们不相信他们都是正确的。它不是如上所述的严格添加剂,而是接近的。每个变量0.95
对你的结论都有信心,然后第二次成为0.95^2
,所以它继续。这使你最终对其总体正常性有一个(通常)很小的信心。虽然统计学家过去曾这样做过。不鼓励。