【问题标题】:Repeated t-test based on a condition for multiple times基于一个条件多次重复 t 检验
【发布时间】:2021-09-07 02:42:42
【问题描述】:

我想通过 F1 ~ F4 重复执行基于年龄组的两样本 t 检验。 这是我的数据(真实数据集有超过 1000 行)。我从两个国家的 4 个年龄段收集数据。

group country   F1   F2   F3   F4
  1        1     0.2   0.2  1.3  7.1
  2        2     1.3   0.1  2.1  1.1
  1        2     2.1   4.6  0.2  3.2
  4        1     0.4   0.1  2.5  5.1
  3        1     0.1   0.8  3.7  4.4

我尝试使用 group_by 函数来划分组 并使用 lapply 函数多次进行 t 检验 但它不起作用。 第一个错误是 '.[-c(1, 2, 3)]' 不是函数、字符或符号。 这里我想排除不需要做t检验的前三列。

df_M %>%
  group_by(group) %>%
  lapply(.[-c(1,2,3)], function(x) t.test(x ~ .$country))

所以我尝试先执行 group_by 函数,例如:

test <- df_M %>%
  group_by(group)
t.test <- lapply(test [-c(1,2,3)], function(x) t.test(x ~ test $country))

但第二个问题来了,我没有得到我想要的,而是国家 1 和 3 之间 F1~F4 的 t 检验,没有进一步基于不同的组。

如果我按组创建不同的数据框可以解决,例如:

G1 <- filter(df_M, df_M$group == 1)
G1_ttest <- lapply(G1[-c(1,2,3)], function(x) t.test(x ~ G1$country))

【问题讨论】:

  • “不起作用”到底是什么意思?你有错误吗?如果是这样,错误是什么?你得到了你不期望的输出吗?如果是这样,您将其与什么进行比较?如果你要手动写出你想用完的命令,那会是什么样子?看起来第2组只有一个国家。在这种情况下,您到底在测试什么?
  • @MrFlick 感谢您的提问。我更新描述。关于我想测试的是,我想知道 2 个国家之间每组 4 个因素的差异。例如,在第 1 组中,F1 的国家 1 和国家 3 之间是否存在显着差异。
  • 嗯,由于某些组只有一个国家/地区,因此实际上不可能测试您提供的样本数据的假设。请更改您的样本数据,以便实际上可以测试该特定假设或描述在这种情况下应该发生什么。

标签: r


【解决方案1】:

您不能将lapplygroup_by 一起使用。 group_by 动词仅适用于 dplyr 命令。像lapply 这样的基本 R 函数不会考虑那个额外的属性。看来您正在尝试做类似的事情

df_M %>% 
  group_by(group) %>% 
  summarize(across(F1:F4, ~list(t.test(.x ~ country))))

如果你真的想要一个命名列表,你也可以添加

df_M %>% 
  group_by(group) %>% 
  summarize(across(F1:F4, ~list(t.test(.x ~ country)))) %>% 
  select(F1:F4) %>% 
  as.list()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-25
    • 2011-12-21
    • 2019-06-20
    • 2020-12-14
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多