循环混合模型和tukey比较

时间:2017-10-18 12:05:51

标签: r mixed-models tukey

我想循环混合模型和Tukey测试。 我想要做的就是重复3个列的拟合和比较(每个列包含一个响应)和4个子组(总计= 12)。

此处提供了类似的数据框:https://drive.google.com/open?id=0Bwrsa11LAnrgTXMzWk1fYXR1MHM。 3个目标是“RESP_1”,“RESP_2”和“RESP_3”列,子组是“层”列的变量。

我通过以下方式获得单个响应和唯一图层的模型和调整:

#mixed model    
Mlm_RESP_1 <-lme(RESP_1~clay+till, random=~1|strata/point, data=loop_lm_tukey)

#tukey
ls_RSP_1 <- lsmeans(Mlm_RESP_1,pairwise~till,adjust="tukey")
ls_RSP_1$contrasts
cld(ls_RSP_1)

然后,我尝试通过以下方式循环每列的模型:

#loop model    
mlm_RESP <- lapply(c("RESP_1", "RESP_2","RESP_3"), function(k) {
      lme(eval(substitute(j ~ clay+till, list(j = as.name(k)))), random = ~1|strata/point, data = loop_lm_tukey)})

从现在开始,我无法使用lsmeans包循环Tukey比较,因为lapply返回一个列表,而且这个包无法处理这种类。

此外,我如何为每一层循环?

任何有关Tukey比较循环的帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

试试这个:

mlm_RESP <- lapply(c("RESP_1", "RESP_2","RESP_3"), function(k) { 
  df=cbind(resp=loop_lm_tukey[,k],loop_lm_tukey[,-c(1:3)])
  lme(resp~clay+till, random = ~1|strata/point, data = df)})

res1=lapply(mlm_RESP,function(rm)lsmeans(rm,pairwise~till,adjust="tukey"))

或:

res2=list()
for (i in 1:3) res2[[i]]=lsmeans(mlm_RESP[[i]],pairwise~till,adjust="tukey")

结果是一样的。