【问题标题】:Different results with Shapiro Wilk test in RR中夏皮罗威尔克检验的不同结果
【发布时间】:2021-10-22 02:08:02
【问题描述】:

我有一个包含两个因素的独立样本 t 检验的大数据,其中一个是性别。我希望它检查变量中每个组的正态性以决定下一步。所以我采用了我在这个论坛中找到的以下脚本并进行了一些修改。

for (i in 9:ncol(AF)) {
  print(names(AF)[i]) 
  print(AF %>%
          group_by(Gender) %>%
          summarise(`W Statistic` = ifelse(sd(AF[, i])!=0,
                                           shapiro.test(AF[, i])$statistic,NA),
                    `p-value` = ifelse(sd(AF[, i])!=0,
                                       shapiro.test(AF[, i])$p.value,NA)))
}

第一个变量 (R_44) 的结果如下:

## [1] "R_44"
## # A tibble: 2 × 3
##   Gender Statistic `p-value`
##   <fct>      <dbl>     <dbl>
## 1 F          0.560  9.31e-10
## 2 M          0.560  9.31e-10

我记得在我开始工作时这个变量是使用 JASP 进行正常性检查的,但它是不同的。

在 JASP 中结果不同:

## 1 F          0.465  1.559e -7
## 2 M          0.623  5.149e -6

我在 R 中对相同的变量重复了测试,但没有如下循环函数:

shapiro.test(AF$R_44[AF$Gender == "F"])
shapiro.test(AF$R_44[AF$Gender == "M"])

结果是:

data:  AF$R_44[AF$Gender == "F"]
W = 0.46505, p-value = 1.559e-07

data:  AF$R_44[AF$Gender == "M"]
W = 0.62303, p-value = 5.149e-06

类似于 JASP。因此,我假设我在上面的第一个脚本中有一个错误,但我不确定它在哪里。在这里需要帮助!

【问题讨论】:

    标签: r statistics static-analysis


    【解决方案1】:

    AF[, i] 是整个数据帧的子集数据,不考虑Gender 的分组。您可以使用cur_data() 对当前组中的数据进行子集化。

    此外,由于sd 返回单个值,因此最好使用if/else 而不是矢量化ifelse

    这样的东西应该可以工作,因为我没有数据,所以无法测试。

    library(dplyr)
    
    for (i in 9:ncol(AF)) {
      print(names(AF)[i]) 
      print(AF %>%
              group_by(Gender) %>%
              summarise(`W Statistic` = if(sd(select(cur_data(), i)) !=0)
                                shapiro.test(cur_data()[[i]])$statistic else NA
                        `p-value` = if(sd(select(cur_data(), i)) !=0)
                                shapiro.test(cur_data()[[i]])$p.value else NA)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-20
      • 2012-06-06
      • 2020-03-11
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      相关资源
      最近更新 更多