R中多变量的Shapiro-Wilk正态性检验

R中多变量的Shapiro-Wilk正态性检验,r,variables,R,Variables,R中多变量的Shapiro-Wilk正态性检验:我有一个名为data的数据集和三个名为a、b、c的连续变量。如何编写for循环,分别对变量执行shapiro.test() 如果有3个向量a、b、c: vars由朋友提供 for (i in 1:3){print(shapiro.test(data[,i]))} 正如您所知,以这种方式循环通过独立假设测试通常是一种不好的做法。每次这样做,你都会面临少量风险(通常为5%,如果alpha为0.05),那么如果你有100个变量,你实际上会接受0.05+

R中多变量的Shapiro-Wilk正态性检验:我有一个名为data的数据集和三个名为a、b、c的连续变量。如何编写for循环,分别对变量执行shapiro.test()

如果有3个向量a、b、c:


vars由朋友提供

for (i in 1:3){print(shapiro.test(data[,i]))}

正如您所知,以这种方式循环通过独立假设测试通常是一种不好的做法。每次这样做,你都会面临少量风险(通常为5%,如果alpha为0.05),那么如果你有100个变量,你实际上会接受
0.05+0.05+0.05+…+0.05=0.05*100
。这是不合理的。即使它们都通过了正态性测试,你现在可以肯定(概率联盟)它们都不可信。它并不像上面提到的那样严格地是可加的,但很接近。每一个变量你都对你的结论有信心,然后在第二次它变为
0.95^2
,如此下去。这会让你(通常)对他们的总体正常性有一点信心。尽管统计学家在过去已经这样做了。不鼓励。

例如,请参见基本R中的应用。谢谢。我终于成功了。但是如何指定数据集?数据集的类是什么?类是数据帧谢谢您的警告。这也应该是多重测试问题的一个例子。
    result <- list()
    for(i in seq(dim(data)[2])) {
        result <- append(result, shapiro.test(data[[i]]))
    }
for (i in 1:3){print(shapiro.test(data[,i]))}