Подходящие модели в R, где коэффициенты подчиняются линейным ограничениям

16

Как определить формульную формулу в R, когда доступно одно (или несколько) точных линейных ограничений, связывающих коэффициенты. В качестве примера, скажем, что вы знаете, что b1 = 2 * b0 в простой модели линейной регрессии.

Спасибо!

Джордж Донтас
источник

Ответы:

16

Предположим, ваша модель

Y(t)=β0+β1X1(t)+β2X2(t)+ε(t)

и вы планируете ограничить коэффициенты, например:

β1=2β2

вставив ограничение, переписав исходную регрессионную модель, вы получите

Y(t)=β0+2β2X1(t)+β2X2(t)+ε(t)

Y(t)=β0+β2(2X1(t)+X2(t))+ε(t)

Z(t)=2X1(t)+X2(t)

Y(t)=β0+β2Z(t)+ε(t)

Таким образом, вы можете обрабатывать любые точные ограничения, потому что количество знаков равенства уменьшает количество неизвестных параметров на одно и то же число.

Играть с формулами R вы можете сделать напрямую с помощью функции I ()

lm(formula = Y ~ I(1 + 2*X1) + X2 + X3 - 1, data = <your data>) 
lm(formula = Y ~ I(2*X1 + X2) + X3, data = <your data>)
Дмитрий Челов
источник
Это довольно ясно, но вопрос предполагал ограничение между b0 и b1. Должен ли я также создать новую переменную Z = 2X + 1 и соответствовать модели без перехвата?
Джордж Донтас
2
Я думаю, что обычно я использую вместо Eval в формулах, то есть Y ~ I (1 + 2 * X1) + X2 + X3-1
mpiktas
@ gd047: я обновил код, да, это так, как вы говорите. @mpiktas: изменит это, да, оно короче;)
Дмитрий Челов
4
Это хороший ответ для общего теоретического подхода, но для более простого способа фактически реализовать эти гипотезы в R, который также имеет то преимущество, что не требует оценки нескольких моделей, см. linearHypothesis()В carпакете.
Джейк Уэстфолл