Saya selalu menggunakan lm()
dalam R untuk melakukan regresi linier pada . Fungsi itu mengembalikan koefisien sehingga
Hari ini saya belajar tentang kuadrat terkecil total dan princomp()
fungsi itu (analisis komponen utama, PCA) dapat digunakan untuk melakukannya. Itu harus baik untuk saya (lebih akurat). Saya telah melakukan beberapa tes menggunakan princomp()
, seperti:
r <- princomp( ~ x + y)
Masalah saya adalah: bagaimana menafsirkan hasilnya? Bagaimana saya bisa mendapatkan koefisien regresi? Dengan "koefisien" Maksud saya angka yang harus saya gunakan untuk mengalikan nilai untuk memberikan angka mendekati .x y
Jawaban:
Kuadrat terkecil biasa vs kuadrat terkecil total
Pertama mari kita pertimbangkan kasus paling sederhana dari hanya satu variabel prediktor (independen) . Untuk kesederhanaan, biarkan keduanya x dan y dipusatkan, yaitu intersep selalu nol. Perbedaan antara regresi OLS standar dan regresi "orthogonal" TLS jelas ditunjukkan pada gambar (diadaptasi oleh saya) ini dari jawaban paling populer di utas terpopuler di PCA:x x y
OLS cocok persamaan dengan meminimalkan jarak kuadrat antara nilai-nilai yang diamati y dan nilai-nilai diprediksi y . TLS cocok dengan persamaan yang sama dengan meminimalkan jarak kuadrat antara ( x , y ) poin dan proyeksi mereka di telepon. Dalam kasus paling sederhana ini garis TLS hanyalah komponen utama pertama dari data 2D. Untuk menemukan β , jangan PCA pada ( x , y ) poin, yaitu membangun 2 × 2 kovarians matriks Σ dan menemukan vektor eigen pertama v =y=βx y y^ (x,y) β (x,y) 2 × 2 Σ ; maka β = v y / v x .v =( vx, vy) β= vy/ vx
Di Matlab:
Dalam R:
By the way, ini akan menghasilkan kemiringan yang benar bahkan jika dan y tidak terpusat (karena fungsi PCA bawaan secara otomatis melakukan pemusatan). Untuk memulihkan intersep, hitung β 0 = ˉ y - β ˉ x .x y β0= y¯- βx¯
OLS vs. TLS, regresi berganda
Diberikan variabel dependen dan banyak variabel independen x i (sekali lagi, semuanya berpusat untuk kesederhanaan), regresi sesuai dengan persamaan y = β 1 x 1 + ... + β p x p . OLS tidak cocok dengan meminimalkan kesalahan kuadrat antara nilai-nilai yang diamati dari y dan diperkirakan nilai-nilai y . TLS melakukan fit dengan meminimalkan jarak kuadrat antara yang diamati ( x , y ) ∈ R p + 1y xsaya
Perhatikan bahwa tidak ada lagi "garis regresi"! Persamaan di atas menentukan hyperplane : ini adalah bidang 2D jika ada dua prediktor, 3D hyperplane jika ada tiga prediktor, dll. Jadi solusi di atas tidak berfungsi: kita tidak bisa mendapatkan solusi TLS dengan hanya mengambil PC pertama (yang merupakan sebuah garis). Meski begitu, solusinya dapat dengan mudah diperoleh melalui PCA.
Seperti sebelumnya, PCA dilakukan pada titik . Ini menghasilkan p + 1 vektor eigen di kolom V . Vektor p eigen pertama mendefinisikan hyperplane p -dimensional H yang kita butuhkan; yang terakhir (nomor p + 1 ) vektor eigen v p + 1 adalah orthogonal untuk itu. Pertanyaannya adalah bagaimana mengubah basis H yang diberikan oleh vektor eigen p pertama menjadi koefisien β .(x,y) p+1 V p p H p+1 vp+1 H p β
Perhatikan bahwa jika kita mengatur untuk semua i ≠ k dan hanya x k = 1 , maka y = β k , yaitu vektor ( 0 , ... , 1 , ... , β k ) ∈ H terletak pada hyperplane H . Di sisi lain, kita tahu bahwa v p + 1 = ( v 1 , ... , v p + 1xi=0 i≠k xk=1 y^=βk
Di Matlab:
Dalam R:
Sekali lagi, ini akan menghasilkan lereng yang benar bahkan jika dan y tidak terpusat (karena fungsi PCA bawaan secara otomatis melakukan pemusatan). Untuk memulihkan intersep, hitung β 0 = ˉ y - ˉ x β .x y β0=y¯−x¯β
Solusi formulir tertutup untuk TLS
Regresi berganda multivarian
Rumus yang sama dapat digeneralisasi ke kasus multivariat, tetapi bahkan untuk menentukan apa yang dilakukan TLS multivariat, akan memerlukan beberapa aljabar. Lihat Wikipedia di TLS . Regresi OLS multivariat setara dengan sekelompok regresi OLS univariat untuk setiap variabel dependen, tetapi dalam kasus TLS tidak demikian.
sumber
Berdasarkan implementasi GNU Octave yang naif ditemukan di sini , sesuatu seperti ini mungkin (butiran garam, sudah terlambat) bekerja.
sumber
princomp
menjalankan analisis komponen utama alih-alih total kuadrat terkecil regresi. Sejauh yang saya tahu tidak ada fungsi R atau paket yang melakukan TLS; paling banyak ada regresi Deming di MethComp .Namun, tolong perlakukan ini sebagai saran bahwa kemungkinan besar itu tidak sepadan.
sumber