如何在R中引导混合效应模型

5
我有一个数据集(df),其格式如下:
index <- runif(n = 100,min = 0, max = 1)
type1 <- rep("low", 50)
type2 <- rep("high", 50)
type <- c(type1,type2)

level1 <- rep("single", 25)
level2 <- rep("multiple", 25)
level3 <- rep("single", 25)
level4 <- rep("multiple", 25)
level <- c(level1,level2,level3,level4)

block <- rep(1:5, 10)
set <- rep(1:5, 10)

df <- data.frame("index" = index,"type" = type, "level" = level, "block" = block, "set" = set)
df$block <- as.factor(df$block)
df$set <- as.factor(df$set)

我希望创建一个类似于这样的模型。
model <- lmer(index ~ type * level + (1|block) + (1|set), data = df)

然而,在我的原始数据中,拟合效果不好,因为数据被限制在0和1之间。我想对这个混合效应模型进行自助法。有没有关于如何实现这种模型的自助法的想法?我想比较这个完整模型与子模型,例如没有交互作用,或者只有leveltype。我还希望得到最终模型的置信区间。


一个 beta 回归是理想的,因为它特别适用于介于 0 和 1 之间的结果。 - Phil
我尝试了 glmmTMB(index ~ type + level + (1|block), df, family=list(family="beta",link="logit")) 以及 betareg,但是输出警告信息为“奇异拟合(singular fit)”导致了无限循环。 - Rspacer
我尝试了 brms::brm(index ~ type * level + (1|block) + (1|set), data = df, family = Beta()),看起来它表现良好。只是一个问题,你是否愿意运行贝叶斯模型。 - Phil
我以前从未使用过贝叶斯模型。我该如何阅读输出?我该如何比较以查看类型是否具有显著影响?就像在GLMM中一样,我是否需要进行带固定效应和不带固定效应的模型简化,并运行ANOVA? - Rspacer
估计在贝叶斯模型和频率学模型中具有相同的含义,可以使用summary(model)进行提取。区间仅仅表示“真实”系数在该区间内的(默认95%)概率。因此,如果类型系数的区间包括0,则可以认为它是不显著的。至于模型比较,我更喜欢使用信息准则进行比较,例如WAIC或PSIS-LOO。brms软件包具有waic()loo()compare_ic()函数,允许您比较模型的相应WAIC或LOO分数。 - Phil
@Biotechgeek 你也可以尝试 Dimitris Rizopoulos 的 GLMMadaptive::mixed_model()。他在 GitHub 上还有很棒的说明文档。 - Dion Groothof
1个回答

0

confint()函数有一个适用于merMod对象的方法。以下应该可以工作:

confint(model, method = "boot", nsim = 1000)

而且还有多个CPU:

confint(model, method = "boot", nsim = 1000,
        parallel = "multicore", ncpus = 8)

这会产生一个无限循环,显示“奇异拟合”。另外,我修改了我的问题以反映我正在寻找的内容。 - Rspacer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接