【问题标题】:How to test if every column is significantly different than the others [closed]如何测试每列是否与其他列显着不同[关闭]
【发布时间】:2014-11-03 18:07:37
【问题描述】:

我在 R 中有 data.frame 包含数百列。我需要检查每一列是否与所有其他列显着不同。我正在查看aov() 函数,但我不知道我应该如何指定模型以及如何以有效的方式为每一列执行它。如果有人有任何想法,那就太好了。

【问题讨论】:

  • 将您的数据从“宽”格式更改为“长”格式(可能使用熔化)以获得 2 列,1 列是每列的名称,第二列是要测试的数据。然后使用 g = 您的列名变量执行 pairwise.t.test 或 pairwise.prop.test。
  • 感谢您的建议,这可能是一种方式,但是我必须对每一列重复执行此操作...而且我不确定是否有数百个配对 t.tests数据集在统计上是正确的......
  • 您的意思是要比较所有列对的均值,例如用 t 检验?
  • 这个问题似乎是题外话,因为它要求使用统计方法的建议。但是,问题的质量不足以将其迁移到 stats.stackexchange.com。

标签: r statistics anova


【解决方案1】:

使用pairwise.t.test,正如this post 中所建议的那样,我们可以识别p 表中所有比较都具有p <= 0.05 的行。

例如:

# dummy data
set.seed(1)
J <- 10 # number of groups
n <- 50 # number of obs per group
m <- mapply(rnorm, n, rnorm(J))
d <- data.frame(y=c(m), x=factor(rep(seq_len(ncol(m)), each=nrow(m))))

plot(jitter(as.numeric(d$x)), d$y, pch=20, xlab='Group', ylab='Value')

p <- cbind(rbind('1'=NA, pairwise.t.test(d$y, d$x)$p.value), NA)
p[upper.tri(p)] <- t(p)[upper.tri(t(p))] # add values to upper triangle
rowSums(p <= 0.05, na.rm=TRUE) == J - 1

#     1     2     3     4     5     6     7     8     9    10 
# FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE 

如果所有其他组的均值显着不同(在 alpha = 0.05 时),则最终向量的元素为 TRUEpairwise.t.test 的默认 p 调整方法是 holm - 有关可用方法,请参阅 p.adjust.methods

【讨论】:

  • 这很好用,非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 2021-09-29
  • 1970-01-01
  • 2019-11-27
相关资源
最近更新 更多