Saya tahu bagaimana melakukan regresi linier pada set poin. Yaitu, saya tahu bagaimana menyesuaikan polinomial pilihan saya, dengan kumpulan data yang diberikan, (dalam arti LSE). Namun, yang saya tidak tahu, adalah bagaimana memaksa solusi saya untuk melewati beberapa poin tertentu yang saya pilih. Saya telah melihat ini dilakukan sebelumnya, tetapi saya tidak ingat apa prosedurnya, apalagi bagaimana itu dilakukan.
Sebagai contoh yang sangat sederhana dan konkret, mari kita katakan bahwa saya memiliki 100 poin yang tersebar di bidang xy, dan saya memilih untuk memasukkan polinomial pesanan apa pun melalui mereka. Saya tahu bagaimana melakukan regresi linier ini dengan sangat baik. Namun, mari kita katakan bahwa saya ingin 'memaksa' solusi saya, untuk melewati, katakanlah, tiga titik data saya di koordinat , , dan , (dan koordinat y-nya yang sesuai tentu saja).x = 19 x = 89
Apa yang disebut prosedur umum ini, bagaimana hal itu dilakukan, dan adakah perangkap khusus yang perlu saya ketahui?
Edit:
Saya ingin menambahkan, bahwa saya sedang mencari cara konkret untuk melakukan ini. Saya telah menulis sebuah program yang benar-benar melakukan regresi linier dalam satu dari dua cara, membalikkan matriks kovarians secara langsung, atau melalui gradient descent. Yang saya tanyakan adalah, bagaimana, tepatnya, langkah demi langkah, bagaimana saya memodifikasi apa yang saya lakukan, sehingga saya memaksa solusi polinomial untuk melalui poin-poin tertentu?
Terima kasih!
Jawaban:
Model yang dimaksud dapat ditulis
di mana adalah polinomial derajat melewati titik yang telah ditentukan dan adalah acak. (Gunakan polinomial interpolasi Lagrange .) Menulis memungkinkan kita untuk menulis ulang model ini sebagai d - 1 ( x 1 , y 1 ) , … , ( x d , y d ) ε ( x - x 1 ) ⋯ ( x - x d ) = r ( x )p ( xsaya) = ysaya d- 1 ( x1, y1) , … , ( Xd, yd) ε ( x - x1) ⋯ ( x - xd) = r ( x )
yang merupakan masalah regresi berganda OLS standar dengan struktur kesalahan yang sama dengan yang asli di mana variabel independen adalah kuantitas . Hitung saja variabel-variabel ini dan jalankan perangkat lunak regresi yang Anda kenal , pastikan untuk mencegahnya memasukkan istilah yang konstan. Peringatan biasa tentang regresi tanpa istilah yang konstan berlaku; khususnya, dapat secara artifisial tinggi; interpretasi yang biasa tidak berlaku.r ( x ) x i , i = 0 , 1 , … , p R 2p + 1 r ( x )xsaya, i = 0 , 1 , … , hlm R2
(Bahkan, regresi melalui titik asal adalah kasus khusus dari konstruksi ini di mana , ( x 1 , y 1 ) = ( 0 , 0 ) , dan p ( x ) = 0 , sehingga modelnya adalah y = β 0 x + ⋯ + β p x p + 1 + ε . )d= 1 ( x1, y1) = ( 0 , 0 ) p ( x ) = 0 y= β0x + ⋯ + βhalxp + 1+ ε .
Berikut ini contoh yang berhasil (dalam
R
)Tiga titik tetap ditampilkan dalam warna merah solid - mereka bukan bagian dari data. Kotak kuadrat polinomial urutan keempat yang tidak dibatasi ditampilkan dengan garis putus-putus hitam (memiliki lima parameter); fit terbatas (dari pesanan lima, tetapi dengan hanya tiga parameter gratis) ditunjukkan dengan garis merah.
Memeriksa keluaran kuadrat terkecil (
summary(fit0)
dansummary(fit)
) bisa menjadi pelajaran - saya serahkan ini pada pembaca yang tertarik.sumber
Jika Anda ingin memaksakan garis melewati dua titik dalam bidang XY, itu cukup mudah dilakukan. Dua poin bisa cocok dengan garis. Anda bisa menggunakan rumus titik-kemiringan untuk menghitung kemiringan Anda, dan kemudian menggunakan salah satu poin, kemiringan, dan persamaan garis untuk menemukan intersep.
Namun saya merasa harus menyebutkan pada titik ini bahwa ini mungkin bukan hal yang baik untuk dilakukan (kecuali teori Anda memberikan alasan yang sangat kuat untuk melakukannya). Anda mungkin juga ingin melihat ke dalam regresi Bayesian , di mana Anda dapat memungkinkan model Anda untuk menemukan kombinasi terbaik dari informasi dalam data Anda, dan beberapa informasi sebelumnya (yang dapat Anda gunakan untuk sangat bias mencegat intersep Anda ke nol, misalnya, tanpa cukup memaksanya).
sumber
Untuk menambahkan sedikit informasi tambahan ke liputan @ gung yang sangat baik tentang kasus linear, dalam kasus polinomial tingkat tinggi ada beberapa cara Anda bisa melakukannya dengan tepat atau kira-kira (tetapi cukup seakurat yang Anda butuhkan).
Pertama, perhatikan bahwa derajat kebebasan untuk polinomial (atau bahkan dari fungsi apa pun yang cocok) harus setidaknya sebesar jumlah titik "yang diketahui". Jika derajat kebebasannya sama, Anda tidak perlu data sama sekali, karena kurva sepenuhnya ditentukan. Jika ada lebih banyak poin 'diketahui' Anda tidak bisa menyelesaikannya (kecuali mereka semua terletak pada polinomial yang sama persis dari tingkat yang ditentukan dalam hal mana cukup subset berukuran sesuai akan cukup). Dari sini, saya hanya akan berbicara tentang kapan polinomial memiliki lebih banyak df daripada poin yang diketahui (seperti kubik - dengan 4df - dan tiga poin yang diketahui, sehingga kubik tidak terlalu ditentukan oleh poin yang diketahui atau tidak sepenuhnya ditentukan oleh mereka) .
1) "kurva harus melewati titik ini" adalah batasan linier pada parameter, menghasilkan estimasi terbatas atau kuadrat terkecil terbatasi (meskipun kedua istilah dapat mencakup hal-hal lain selain batasan linear, seperti batasan positif). Anda dapat memasukkan batasan linear dengan salah satunya
(a) menyusun kembali parameterisasi untuk secara implisit memasukkan setiap kendala yang menghasilkan model urutan yang lebih rendah.
(B) menggunakan alat standar yang dapat menggabungkan kendala linier pada parameter yang paling cocok kuadrat. (biasanya melalui sesuatu seperti rumus yang diberikan di tautan di atas)
2) Cara lain adalah melalui regresi tertimbang. Jika Anda memberikan poin yang diketahui cukup besar, pada dasarnya Anda bisa mendapatkan kecocokan yang sama seperti pada (1). Ini sering kali mudah diimplementasikan, bisa jauh lebih cepat daripada reparameterisasi, dan dapat dilakukan dalam paket yang tidak menawarkan pemasangan terbatas.
Semua peringatan @ gung berlaku
sumber