R t.test 分组统计

5
我发现了一个有点烦人的问题。我正在尝试一次性执行多个独立样本t检验,并按值分组。
举个例子,在5个城市中,我们测量了男性和女性之间的工作满意度。对于每个受试者,我们知道他们所在的城市、性别和满意度得分。我们可以像这样对整个样本进行t检验:
t.test(Score ~ Gender, paired = FALSE)

然而,我想为每个城市执行一个t检验,以查看每个城市的男女平均工作满意度是否存在差异。 我该怎么做?


我在这里回答了一个非常类似的问题。请参考:https://stackoverflow.com/a/60553532/12176280 - George Savva
但你也可以考虑一下是否想要一个线性模型来测试城市和性别之间的交互作用,即测试性别的影响是否因城市而异。这是一个稍微不同的问题。 - George Savva
1
作为一个附注:要注意'多重检验问题' - dario
2个回答

4
您可以使用splitlapply进行分组t.test
lapply(split(mtcars, factor(mtcars$cyl)), function(x)t.test(data=x, mpg ~ am, paired=FALSE))

在这里,我使用mtcars数据,并使用cyl作为组,对mpg(连续数据)和am(分类数据)进行独立的t.test。如果这不是您期望的,请告诉我。


2
你可以使用purrr包将测试数据返回为一个tibble:
library(tidyverse)
mtcars %>%
  select(mpg, am, cyl) %>%
  nest(data = c(mpg, am)) %>%
  mutate(data = map(data, ~ {
    out <- t.test(.x$mpg ~ .x$am)
    tibble(t_value = out$statistic, p_value = out$p.value)
  })) %>%
  unnest(cols = data)

# A tibble: 3 × 3
    cyl t_value p_value
  <dbl>   <dbl>   <dbl>
1     6  -1.56   0.187 
2     4  -2.89   0.0180
3     8  -0.391  0.704 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接