r - 如何在 R 中跨多个独立向量执行成对 t.test?

标签 r

TL;DR 版

我有向量 X1,X2,X3,...Xn。我想测试一下,对于每种可能的向量组合,任何一个向量的平均值是否与任何其他向量的平均值显着不同。我正在寻找一种比运行 n^2 个单独的 t.tests 更好的方法在 R 中做到这一点。

全文

我有一个包含特定 CSA 的人口普查数据的数据框。每行包含特定人口普查区域的每个变量(列)的观测值。

我需要做的是比较不同 MSA 中不同人口普查区域的相同变量的均值。换句话说,我想根据 MSA 指定变量(它是列之一)分解我的 data.frame,然后在每个新分解的 MSA 中成对比较另一个感兴趣变量的均值差异。这本质上是对每个随后的向量进行成对的 t.tests,但我希望以一种比一遍又一遍地编写 t.test(MSAx, MSAy) 更优雅的方式来做到这一点。我怎样才能做到这一点?

最佳答案

下面我的方法比@ashkan 提出的方法的优点是我的方法可以删除重复项。 (即 X1 vs X2 或 X2 vs X1 将出现在结果中,而不是同时出现)

# Generate dummy data
df <- data.frame(matrix(rnorm(100), ncol = 10))
colnames(df) <- paste0("X", 1:10)

# Create combinations of the variables
combinations <- combn(colnames(df),2, simplify = FALSE)

# Do the t.test
results <- lapply(seq_along(combinations), function (n) {
                  df <- df[,colnames(df) %in% unlist(combinations[n])]
                  result <- t.test(df[,1], df[,2])
                  return(result)})

# Rename list for legibility    
names(results) <- paste(matrix(unlist(combinations), ncol = 2, byrow = TRUE)[,1], matrix(unlist(combinations), ncol = 2, byrow = TRUE)[,2], sep = " vs. ")

关于r - 如何在 R 中跨多个独立向量执行成对 t.test?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14745379/

相关文章:

r - 计算 NA 之间的行数

r - 导航栏中的复选框小部件 Shiny

r - 列出数据框中每一列的唯一值

r - 如何使用R从Dropbox下载文件(任何形式)

r - 如何使用 dplyr 计算 R 中的分组 z 分数?

可靠地识别和处理特定情况,例如错误或警告

r - 改变 R 中的重要性符号

可调整大小的 Tk 窗口做得很好

r - 对数据框进行排序,同时保留原始行 ID 和维度

R ggplot2 : Setting additional specific axis tick marks