我经常遇到这个问题:我想拟合一个带约束的多层回归模型,但不知道如何操作。通常我会使用
lavaan
,它可以对回归系数设置约束。但它不能拥有随机斜率模型(只能有随机截距),而事实上我也不知道如何在 lavaan
中设置截距的约束。我希望能够采用多层方法。
所以基本上我的 y
变量是一个关于 x
的二阶多项式函数,其系数取决于主题 ID
:
library(data.table)
library(ggplot2)
df <- data.table(x = rep(0:10,5),ID = rep(LETTERS[1:5],each = 11))
df[,a:= rnorm(1,2,1),by = ID]
df[,b:= rnorm(1,1,0.2),by = ID]
df[,y := rnorm(.N,0,10) + a*x + b*x^2 ]
ggplot(df,aes(x,y,color = ID))+
geom_point()
我可以进行正常的多级处理:
lmer(y ~ x + I(x^2) + (x+ I(x^2)|ID),df)
但我希望将截距限制为0。有简单的方法吗? 谢谢
?lme4::modular
,了解如何在非线性优化步骤中分解拟合过程并添加约束条件... - Ben Bolker