Memasang model dalam R di mana koefisien tunduk pada batasan linear

16

Bagaimana saya harus mendefinisikan formula model dalam R, ketika satu (atau lebih) batasan linear yang tepat mengikat koefisien tersedia. Sebagai contoh, katakan bahwa Anda tahu bahwa b1 = 2 * b0 dalam model regresi linier sederhana.

Terima kasih!

George Dontas
sumber

Jawaban:

16

Misalkan model Anda

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

dan Anda berencana untuk membatasi koefisien, misalnya seperti:

β1=2β2

memasukkan batasan, menulis ulang model regresi asli yang akan Anda dapatkan

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

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

perkenalkan variabel baru dan model Anda dengan batasan akan menjadiZ(t)=2X1(t)+X2(t)

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

Dengan cara ini Anda dapat menangani pembatasan yang tepat, karena jumlah tanda sama mengurangi jumlah parameter yang tidak diketahui dengan angka yang sama.

Bermain dengan rumus R dapat Anda lakukan langsung dengan fungsi 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>)
Dmitrij Celov
sumber
Ini cukup jelas, tetapi pertanyaan itu menyarankan pembatasan antara b0 dan b1. Haruskah saya juga membuat variabel baru Z = 2X +1 dan cocok dengan model tanpa intersep?
George Dontas
2
Saya pikir biasanya saya digunakan sebagai ganti eval dalam rumus, yaitu Y ~ I (1 + 2 * X1) + X2 + X3-1
mpiktas
@ gd047: Saya telah memperbarui dengan potongan kode, ya seperti yang Anda katakan. @mpiktas: akan mengubah ini, ya lebih pendek;)
Dmitrij Celov
4
Ini adalah jawaban yang baik untuk pendekatan teoretis umum, tetapi untuk cara yang lebih mudah untuk benar-benar menerapkan hipotesis ini dalam R, yang juga memiliki keuntungan karena tidak memerlukan satu untuk memperkirakan beberapa model, lihat linearHypothesis()dalam carpaket.
Jake Westfall