从多个t.test输出中获取某些结果以创建表

时间:2014-02-17 21:53:45

标签: r statistics

我已经运行了48次t检验(手工编码而不是编写循环),并希望将这些t.test的某些结果拼接出来,以创建一个我最感兴趣的事物表。

具体来说,我只想保留 p值置信区间,以及x的平均值和y 的平均值这48个测试中的每一个然后构建一个结果表。

除了详细的here之外,还有一种优雅,快捷的方法可以做到这一点,其中我会参加所有48个测试并使用ttest$p.value的内容获取所有三个所需的输出?也许是一个循环?

下面是一个t检验的编码输入样本,然后是R.

提供的输出
# t.test comparing means of Change_Unemp for 2005 government employment (ix)

lowgov6 <- met_res[met_res$Gov_Emp_2005 <= 93310, "Change_Unemp"]
highgov6 <- met_res[met_res$Gov_Emp_2005 > 93310, "Change_Unemp"]
t.test(lowgov6,highgov6,pool.sd=FALSE,na.rm=TRUE)  

Welch Two Sample t-test

data:  lowgov6 and highgov6
t = 1.5896, df = 78.978, p-value = 0.1159
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.1813909  1.6198399
sample estimates:
mean of x mean of y 
4.761224  4.042000 

1 个答案:

答案 0 :(得分:6)

将所有t检验保存到列表中:

tests <- list()
tests[[1]] <- t.test(lowgov6,highgov6,pool.sd=FALSE,na.rm=TRUE)
# repeat for all tests
# there are probably faster ways than doing all of that by hand

# extract your values using `sapply`
sapply(tests, function(x) {
     c(x$estimate[1],
       x$estimate[2],
       ci.lower = x$conf.int[1],
       ci.upper = x$conf.int[2],
       p.value = x$p.value)
})

输出类似于以下内容:

                 [,1]        [,2]
mean of x  0.12095949  0.03029474
mean of y -0.05337072  0.07226999
ci.lower  -0.11448679 -0.31771191
ci.upper   0.46314721  0.23376141
p.value    0.23534905  0.76434012

但是会有48列。如果您希望转置,可以t()结果。