簡體   English   中英

在R中進行多個T測試(精簡)

[英]Conduct Multiple T-Tests in R, Condensed

我希望在R中進行多個t檢驗,而不必進行每個測試的復制粘貼。 當查看“ Level_#”時,每個測試將確定“類型”中是否存在差異(無論是“左”還是“右”)。 目前,我可能有:

t.test(Level_1 ~ Type, alternative="two.sided", conf.level=0.99)
t.test(Level_2 ~ Type, alternative="two.sided", conf.level=0.99)

Type Level_1 Level_2 Level_3
Left      17      50      98
Right     18      65      65
Left      23       7      19
Left      65       7     100
Right     9       13      17

問題是我有數百個“ Level_#”,並且想知道如何自動執行此過程並輸出結果的數據幀。 我的想法是以某種方式合並應用功能。

您可以使用tidyverse方法並使用purrrbroom軟件包來實現。

require(tidyverse)
require(broom)

df %>% 
  gather(var, level, -type) %>% 
  nest(-var) %>%
  mutate(model = purrr::map(data, function(x) { 
    t.test(level ~ type, alternative="two.sided", conf.level=0.99, 
           data = x)}), 
    value = purrr::map(model, tidy), 
    conf.low = purrr::map(value, "conf.low"),
    conf.high = purrr::map(value, "conf.high"),
    pvalue = purrr::map(value, "p.value")) %>% 
  select(-data, -model, -value)

輸出:

     var  conf.low conf.high    pvalue
1 level1 -3.025393  4.070641 0.6941518
2 level2 -3.597754  3.356125 0.9260015
3 level3 -3.955293  3.673493 0.9210724

樣本數據:

set.seed(123)
df <- data.frame(type = rep(c("left", "right"), 25), 
                 level1 = rnorm(50, mean = 85, sd = 5), 
                 level2 = rnorm(50, mean = 75, sd = 5), 
                 level3 = rnorm(50, mean = 65, sd = 5))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM