6

使用虚拟数据集:

Species      Var1     Var2   Var3
   a          1         2      3
   a          4         5      6 
   b          7         8      9
   b          10       11      12

我有多个物种和大约 50 个变量(Var50)。例如,我想对每个响应变量的配对分组变量(物种)执行单向方差分析,并获得在 95% CI 处具有统计显着性的频率输出。我开始编写一个函数来执行此操作,如下所示:

data<-read.table("example.txt", header=T, sep="\t")
function(y){
for(y in 2:50)
anova.r<-aov(y~Species, data = data)
result<-TukeyHSD(anova.r, conf.level = 0.95) 
f.result ## I cannot figure out how to extract the "p adj" from the results

f.result<-sum(prob.result>=0.05)
write.table(f.result, file = "anova95.csv", sep = ",",
        col.names = FALSE, append=TRUE)
}  

最终,我希望决赛桌(虚拟答案)看起来像

                     Var1   Var2   Var3......Var50 
Frequency at 95% CI   106    200    45         246 

我知道我可以[[]]用来访问 Tukey 测试结果中的数据。我尝试使用tukey.results[[1]][,1]最多tukey.results[[1]][,3]无济于事。tukey.results[[1]]返回 Tukey 测试的所有列。

另外,我想我可能不得不cbind在函数中的某个地方使用来获取它们各自列中的数据。或者我认为可以使用该apply命令,但我不知道如何在每次迭代时改变响应变量的同时保持分组变量不变。

任何建议将不胜感激。

4

2 回答 2

3

如果你也在寻找变量,试试这个:

summary(fm1 <- aov(breaks ~ wool + tension, data = warpbreaks))
kk<-TukeyHSD(fm1, "tension", ordered = TRUE)
kk$tension
result<-data.frame( kk$tension)
result["p.adj"]

            p.adj
M-H 0.447421021
L-H 0.001121788
L-M 0.033626219
于 2013-09-10T18:23:30.943 回答
2

答案在我的系统上不起作用。这是我的解决方案,从提供的代码指标开始。

 summary(fm1 <- aov(breaks ~ wool + tension, data = warpbreaks))
 kk<-TukeyHSD(fm1, "tension", ordered = TRUE)
 kk<-kk$tension          #strips off some headers in kk
 kk<-as.data.frame(kk)   #converts to data frame
 kk<-kk$'p adj'          #selects relevant output
 print(kk)               #to check answer
于 2017-02-10T15:39:04.150 回答