【问题标题】:Shapiro-Wilk normality test for multiple variables in RR中多个变量的Shapiro-Wilk正态性检验
【发布时间】:2017-03-18 03:25:34
【问题描述】:

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

【问题讨论】:

  • apply in base R 例如。
  • 谢谢。我终于成功了。变量 [,c("statistic", "p.value")); lshaps;

标签: r variables


【解决方案1】:

由朋友提供。

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

【讨论】:

    【解决方案2】:

    如果你有 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]]))
        }
    

    【讨论】:

    • 但是如何指定数据集呢?
    • 你的数据集的类别是什么?
    • 类是数据框
    【解决方案3】:

    请注意,以这种方式循环独立假设检验通常是一种不好的做法。每次这样做时,您都会承担少量风险(通常为 5%,如果 alpha 为 0.05),那么如果您有 100 个变量,您实际上将接受0.05+0.05+0.05+...+0.05 = 0.05*100 的总风险。这是不合理的。即使它们都通过了正常性的检验,您现在可以肯定(概率同盟)在一起,它们都成立是没有信心的。如上所述,它不是严格的加法,但很接近。你对你的结论有信心的每个变量0.95,然后第二次变成0.95^2,这样继续下去。这最终会让您(通常)对他们的总体正常性有一点信心。尽管统计学家过去曾这样做过。不鼓励。

    【讨论】:

    • 感谢您的警告。这也应该是多重测试问题的一个案例。
    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 2018-12-08
    • 2021-07-10
    相关资源
    最近更新 更多