marginaleffects包结合nlme模型调用comparisons函数报错的问题求助
marginaleffects包结合nlme模型调用comparisons函数报错的问题求助
我这个问题刚从crossvalidated迁移过来,因为它确实更偏向编程问题。
我试了各种方法(给newdata参数传数据的所有方式),下面列出了一些尝试。总结下来就是:用lme4的时候所有操作都正常,但换成nlme之后只有第一个comparisons调用能成功,其他都会报错。
我的需求是必须用nlme而不是lme4,因为我需要处理异方差问题。但不管怎么尝试,marginaleffects包的comparisons函数一直报同一个错:
Error: Unable to compute predicted values with this model. You can try to supply a different dataset to the newdata argument.
下面是能复现问题的玩具数据和代码,只有第一个comparisons命令能运行,其他都会弹出上面的错误信息:
library(tidyverse) library(nlme) library(marginaleffects) # 生成玩具数据 base <- expand.grid(time = 0:5, Treat = LETTERS[1:3], stringsAsFactors = FALSE) base <- base%>%bind_rows(base, base)%>%group_by(time, Treat)%>% mutate(repl = row_number(), replicate = sprintf("%s-%s", Treat, repl))%>%ungroup() re <- data.frame(replicate = unique(base$replicate), re = rnorm(9)) datasim <- base%>%left_join(re)%>% mutate(out = re + rnorm(54, sd = 1 + time))%>% mutate(ctime = as.character(time)) # 拟合nlme模型 fit <- nlme::lme(out ~ ctime*Treat, random = ~ 1| replicate, weights = varIdent(form = ~ 1 | ctime), data = datasim) # 以下只有第一个调用正常,其余均报错 comparisons(fit) comparisons(fit, variables = "Treat") comparisons(fit, variables = list(Treat = "pairwise")) comparisons(fit, variables = list(Treat = "reference"), ) comparisons(fit, variables = list(Treat = "pairwise"), newdata = datagrid(ctime = "5")) comparisons(fit, variables = list(Treat = "pairwise"), newdata = datagrid(ctime = "5", model = fit)) comparisons(fit, variables = list(Treat = "pairwise"), newdata = datagrid(ctime = "5", replicate = "A-1"))
如果把上面的lme调用换成lmer(lme4包的函数),所有comparisons调用都能正常运行。
备注:内容来源于stack exchange,提问作者Dries
相关产品推荐
相关产品推荐

