Lmer многоуровневая посадка с ограничением перехвата - PullRequest
0 голосов
/ 12 декабря 2018

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

enter image description here

и я могу сделать нормальный многоуровневый:

lmer(y ~ x + I(x^2) + (x+ I(x^2)|ID),df)

Но я бы хотел ограничить перехват до 0. Есть ли простой способ сделать это?Спасибо

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете подавить перехват с помощью -1.Например:

coef(summary(lmer(y ~ x + I(x^2) + (x+ I(x^2)|ID),df)))
             Estimate Std. Error    t value
(Intercept) -1.960196   4.094491 -0.4787398
x            2.535092   1.754963  1.4445275
I(x^2)       1.015212   0.130004  7.8090889

coef(summary(lmer(y ~ -1 + x + I(x^2) + (x+ I(x^2)|ID),df)))
       Estimate Std. Error  t value
x      1.831692  0.9780500 1.872800
I(x^2) 1.050261  0.1097583 9.568856
...