英文:
A setting to subjectively adjust random effect variance in R package glmmTMB?
问题
根据我对频率派层次模型的初步理解,似乎在似然函数中内置了一种惩罚机制,以防止随机效应对数据进行过度拟合,而是将它们“收缩”到一个组的平均值附近。
显然,有时模型师可以调整这种惩罚机制,以反映他们认为在组之间的随机效应应该具有更多/更少方差,而不是使用似然函数的默认设置所达到的。
在R中的glmmTMB
中,是否有此选项?是否有可调整以调整随机效应方差的设置/参数?
英文:
From my layman understanding of frequentist hierarchical models, there is some penalty mechanism built into the likelihood function, that prevents the random effects from overfitting to the data and instead ‘shrinks’ them towards a group mean.
Apparently, this penalty mechanism can sometimes be adjusted by the modeller to reflect their belief that there should be more/less variance between groups’ random effects than is achieved with the likelihood function’s default setting.
Is this an option with glmmTMB
in R? Is there a setting/parameter than can be adjusted to regulate the variance attributed to random effects?
答案1
得分: 2
Yes, you can set the random effects variance using the map
argument to specify which model parameters should be fixed rather than estimated (and start
to specify their values).
To illustrate, start by fitting the model (a model with only a single random effects variance, for simplicity) to see what the data (+ assumptions) say the variance "should" be:
library(glmmTMB)
data("sleepstudy", package = "lme4")
m1 <- glmmTMB(Reaction ~ Days + (1|Subject), sleepstudy)
VarCorr(m1)
Conditional model:
Groups Name Std.Dev.
Subject (Intercept) 36.012
Residual 30.895
Now suppose we think the model has (for some reason) overestimated the among-subject variance, i.e. the subject intercepts "should" be more tightly grouped.
We need to know that the random effects are parameterized on a log-SD scale, and that the relevant parameter is called theta
.
m2 <- update(m1,
map = list(theta = factor(NA)),
start = list(theta = log(10)))
Check that this worked:
Conditional model:
Groups Name Std.Dev.
Subject (Intercept) 10.000
Residual 37.248
You could look at the fixed effects and their SEs etc. to see how this choice affects the rest of the model.
英文:
Yes, you can set the random effects variance to whatever you want by using the map
argument to specify which model parameters should be fixed rather than estimated (and start
to specify their values).
To illustrate, start by fitting the model (a model with only a single random effects variance, for simplicity) to see what the data (+ assumptions) say the variance "should" be:
library(glmmTMB)
data("sleepstudy", package = "lme4")
m1 <- glmmTMB(Reaction ~ Days + (1|Subject), sleepstudy)
VarCorr(m1)
Conditional model:
Groups Name Std.Dev.
Subject (Intercept) 36.012
Residual 30.895
Now suppose we think the model has (for some reason) overestimated the among-subject variance, i.e. the subject intercepts "should" be more tightly grouped.
We need to know that the random effects are parameterized on a log-SD scale, and that the relevant parameter is called theta
(there is a little bit of this information in the "Mapping" section of the covstruct vignette).
m2 <- update(m1,
map = list(theta = factor(NA)),
start = list(theta = log(10)))
(You don't have to use update()
- you could have fitted the model from scratch with these arguments.) Check that this worked:
Conditional model:
Groups Name Std.Dev.
Subject (Intercept) 10.000
Residual 37.248
You could look at the fixed effects and their SEs etc. to see how this choice affects the rest of the model.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论