У меня регулярно возникает эта проблема: я хочу использовать многоуровневую регрессию с ограничениями.Я не знаю, как это сделать.Я обычно заканчиваю тем, что использую 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. Есть ли простой способ сделать это?Спасибо