Modèles d'ajustement en R où les coefficients sont soumis à des restrictions linéaires

16

Comment définir une formule de modèle dans R, lorsqu'une (ou plusieurs) restrictions linéaires exactes liant les coefficients est disponible. Par exemple, disons que vous savez que b1 = 2 * b0 dans un modèle de régression linéaire simple.

Je vous remercie!

George Dontas
la source

Réponses:

16

Supposons que votre modèle soit

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

et vous prévoyez de restreindre les coefficients, par exemple comme:

β1=2β2

insérer la restriction, réécrire le modèle de régression d'origine, vous obtiendrez

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

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

Z(t)=2X1(t)+X2(t) and your model with restriction will be

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

In this way you can handle any exact restrictions, because the number of equal signs reduces the number of unknown parameters by the same number.

Playing with R formulas you can do directly by I() function

lm(formula = Y ~ I(1 + 2*X1) + X2 + X3 - 1, data = <your data>) 
lm(formula = Y ~ I(2*X1 + X2) + X3, data = <your data>)
Dmitrij Celov
la source
This is pretty clear, but the question was suggesting a restriction between b0 and b1. Should I also create a new variable Z = 2X + 1 and fit a model without intercept?
George Dontas
2
I think usualy I is used instead of eval in formulas, i.e. Y~I(1+2*X1)+X2+X3-1
mpiktas
@gd047: I have updated with a code pieces, yes it is as you say. @mpiktas: will change this, yes it is shorter ;)
Dmitrij Celov
4
This is a good answer for the general theoretical approach, but for an easier way to actually implement these hypotheses in R, which also has the advantage of not requiring one to estimate multiple models, see linearHypothesis() in the car package.
Jake Westfall