首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环混合模型和tukey比较

循环混合模型和tukey比较
EN

Stack Overflow用户
提问于 2017-10-18 20:05:51
回答 1查看 310关注 0票数 1

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

这里提供了一个类似的数据帧:https://drive.google.com/open?id=0Bwrsa11LAnrgTXMzWk1fYXR1MHM。3个对应列是"RESP_1“、"RESP_2”和"RESP_3",子组是"layer“列的变量。

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

代码语言:javascript
复制
#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)

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

代码语言:javascript
复制
#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包来循环执行图键比较,因为lapply返回一个列表,而这个包不能处理这种类。

此外,我如何才能为每一层循环这个函数?

对Tukey比较循环的任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-10-18 23:41:40

试试这个:

代码语言:javascript
复制
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"))

或者:

代码语言:javascript
复制
res2=list()
for (i in 1:3) res2[[i]]=lsmeans(mlm_RESP[[i]],pairwise~till,adjust="tukey")

结果是一样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46809794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档