R中系数受线性限制的拟合模型


16

当有一个(或多个)约束系数的精确线性限制可用时,我应该如何在R中定义模型公式。例如,假设您知道在简单的线性回归模型中b1 = 2 * b0。

谢谢!

Answers:


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)

通过这种方式,您可以处理所有确切的限制,因为等号的数量会将未知参数的数量减少相同的数量。

可以通过I()函数直接执行R公式

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 2011年

@ gd047:我已经更新了代码片段,是的,正如您所说。@mpiktas:将会改变这一点,是的,它会更短;)
Dmitrij Celov 2011年

4
这是一般的理论方法一个很好的答案,但实际上更简单的方法实现R,其中也有不要求一个估计多个模型的优势,这些假设,请参阅linearHypothesis()car包中。
Jake Westfall
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.