我得到了一个包含36个变量和74个观测值的数据框架。我想通过1个分组变量(具有两个级别)对35个变量进行两个样本配对测试。
例如:数据框包含“年龄”、“体重”和“组”变量。现在,我想我可以用下面的代码对每个变量进行测试:
t.test(age~group)
但是,有没有一种方法可以用一段代码测试所有35个变量,而不是逐个测试?
发布于 2013-12-13 05:04:04
示例数据帧:
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检验所必需的。
发布于 2013-12-13 06:09:51
Sven为您提供了一种很好的方法来实现您想要实现的功能。然而,我想警告你关于你正在做的事情的统计方面。
回想一下,如果您使用0.05的标准置信水平,这意味着对于每个执行的t测试,您有5%的机会犯类型1错误(错误地拒绝零假设)。根据概率定律,运行35个单独的t测试将你犯类型1错误的概率增加35倍,或者更准确地说:
Pr(类型1错误)=1- (0.95)^35 = 0.834
这意味着你有大约83.4%的机会错误地拒绝无效假设。基本上,这意味着,通过运行如此多的T-test,很有可能至少有一个T-test会提供不正确的结果。
仅供参考。
https://stackoverflow.com/questions/20553995
复制相似问题