使用分组变量进行T检验

0 statistics grouping r

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

例如:数据框包含"年龄""体重"和"组"变量.现在我想我可以用这段代码为每个变量做ttest:

t.test(age~group)

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

Sve*_*ein 5

示例数据框:

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

你可以使用lapply:

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

在上面的命令中,1:3表示包括变量的列的编号.该参数paired = TRUE对于执行配对t检验是必要的.


Nat*_*ley 5

Sven 为您提供了一种很好的方式来实现您想要实现的内容。但是,我想警告您有关您所做工作的统计方面的信息。

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

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

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

仅供参考。

  • 评论太大了,对于阅读此主题的人来说非常重要。+1 (5认同)