【问题标题】:T-test with grouping variable带有分组变量的 T 检验
【发布时间】:2013-12-31 11:36:22
【问题描述】:

我有一个包含 36 个变量和 74 个观察值的数据框。我想通过 1 个分组变量(有两个级别)对 35 个变量进行两个样本配对测试。

例如:数据框包含“年龄”“体重”和“组”变量。 现在我想我可以用这段代码对每个变量进行测试:

t.test(age~group)

但是,有没有办法用一个代码而不是一个一个地测试所有 35 个变量?

【问题讨论】:

  • 请发布一个可重现的例子。
  • 你可以循环/*覆盖每一列...
  • 有一种方法,但不是t.test。做一些关于多重比较的阅读。如果您不了解“组”与这些变量的关系,则可以使用二元逻辑回归进行探索性分析,但请尽量避免 SAS 和 SPSS 鼓励的逐步过程。
  • 我应该问你而不是 Swen。这真的是“配对学习”吗?配对是如何完成的?
  • @DWin 我觉得是配对的,看下面的评论

标签: r statistics grouping


【解决方案1】:

Sven 为您提供了一种很好的方式来实现您想要实现的功能。然而,我想警告你关于你正在做的事情的统计方面。

回想一下,如果您使用 0.05 的标准置信水平,这意味着对于执行的每个 t 检验,您有 5% 的机会犯第 1 类错误(错误地拒绝原假设)。根据概率定律,运行 35 个单独的 t 检验会使您犯第 1 类错误的概率增加 35 倍,或更准确地说:

Pr(类型 1 错误)= 1 - (0.95)^35 = 0.834

这意味着您有大约 83.4% 的机会错误地拒绝原假设。基本上这意味着,通过运行如此多的 T 检验,很有可能您的至少一个 T 检验会提供不正确的结果。

仅供参考。

【讨论】:

  • 对于评论来说太大了,对于阅读此主题的任何人来说都非常重要。 +1
【解决方案2】:

一个示例数据框:

dat <- data.frame(age = rnorm(10, 30), body = rnorm(10, 30), 
                  weight = rnorm(10, 30), group = gl(2,5))

你可以使用lapply:

lapply(dat[1:3], function(x) 
                   t.test(x ~ dat$group, paired = TRUE, na.action = na.pass))

在上面的命令中,1:3 表示包含变量的列数。参数 paired = TRUE 是执行配对 t 检验所必需的。

【讨论】:

  • 两个问题:您是否使用大小不等的组测试此代码?为什么这会被视为“配对”测试?
  • @DWin 1) 是的,我测试了代码。 2) OP 要求进行配对测试。我不知道这里使用的group 变量的实际含义。
  • @DWin BTW:我同意 t 检验似乎不适合所描述的任务。不幸的是,OP没有澄清group的含义和假设。
  • 好的。我错过了“配对”这个词。但通常会进行“双样本”t 检验或“配对”t 检验。鉴于显示的统计知识不足的其他建议,也许更负责任地确定提问者关于真实数据情况是什么以及正在检查哪些假设。
  • @DWin 当然,代码不适用于大小不等的组。在这种情况下,必须使用paired = FALSE
猜你喜欢
  • 2015-09-30
  • 2017-02-02
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多