Gagasannya: garis kuadrat terkecil
Regresi linear memasang garis lurus melalui awan titik: y = intercept + slope × x. Dari semua garis yang mungkin, lm() memilih garis yang meminimalkan jumlah kuadrat residual, dengan residual adalah jarak vertikal antara sebuah titik dan garisnya. Pengkuadratan membuat meleset yang besar terhitung jauh lebih berat, itulah sebabnya satu pencilan liar bisa memiringkan seluruh model.
Kalau korelasi memberimu satu angka tanpa satuan untuk "seberapa kompak keduanya bergerak bersama", regresi memberimu sebuah persamaan: dengan satuan, kemiringan yang bisa ditafsirkan, dan perangkat untuk membuat prediksi.
Baca formulanya sebagai "modelkan mpg sebagai fungsi dari wt." Dua koefisien itu adalah garis hasil model: mpg ≈ 37,3 − 5,3 × berat. Kemiringannya punya satuan nyata: setiap tambahan 1000 lbs berat mobil (wt dalam satuan 1000 lbs) mengurangi sekitar 5,3 mil per galon. Intercept (37,3 mpg pada berat nol) hanyalah tempat garis memotong sumbu di nol; tidak ada mobil yang beratnya nol, jadi jangan terlalu menafsirkannya.
Menelusuri summary()
summary(fit) adalah output yang diminta untuk ditafsirkan di setiap mata kuliah statistika. Jalankan, lalu baca blok demi blok:
Call: mengulang model yang kamu buat. Sepele sekarang, penyelamat saat kamu menangani enam objek model sekaligus.
Residuals: ringkasan lima angka dari sisa-sisanya (aktual − prediksi). Kamu ingin median mendekati 0 dan simetri kasar antara Min/Max serta 1Q/3Q; asimetri yang kuat mengisyaratkan model garis lurus melewatkan sesuatu.
Coefficients: inti dari output-nya, satu baris per suku:
- Estimate: nilai hasil model. Untuk
wt, −5,34: setiap tambahan 1000 lbs berkaitan dengan sekitar 5,3 mpg lebih sedikit. Selalu terjemahkan kemiringan menjadi kalimat dengan satuan; kalimat itulah seluruh isi praktis model. - Std. Error: seberapa besar perkiraannya akan bergoyang pada sampel yang diulang-ulang. Perkiraan yang berjarak kurang dari dua standard error dari nol patut diragukan.
- t value: Estimate ÷ Std. Error, yaitu berapa standard error jarak koefisien dari nol (−9,56 di sini).
- Pr(>|t|): p-value untuk "mungkinkah koefisien ini sebenarnya nol?" Untuk
wtnilainya sekitar 1,3e-10: kalau berat benar-benar tidak punya hubungan linear dengan mpg, kemiringan setajam ini nyaris tidak akan pernah muncul pada sampel berisi 32 mobil. P-value kecil = bukti bahwa hubungannya ada, bukan bukti bahwa modelnya benar, dan bukan ukuran pentingnya (efek yang sangat kecil tapi diperkirakan dengan tepat juga mendapat p-value yang sangat kecil). - Signif. codes / bintang: singkatan visual untuk kolom p-value. Praktis, tapi tidak menambah informasi.
Residual standard error: 3.05 on 30 degrees of freedom: ukuran khas meleset sebuah prediksi, dalam satuan respons itu sendiri: prediksi biasanya meleset sekitar 3 mpg. Nilai ini dibandingkan dengan skala mpg (yang rentangnya sekitar 10-34).
Multiple R-squared: 0.75: berat menjelaskan sekitar 75% varians mpg. Adjusted R-squared (0.74) menghitung ulang nilai itu dengan penalti per prediktor, karena versi mentahnya hanya bisa naik saat kamu menambah variabel, bahkan derau acak sekalipun. Saat membandingkan model dengan jumlah prediktor yang berbeda, versi adjusted-lah yang jujur. Dan tahan refleks "model bagus = R² tinggi": efek yang benar-benar berguna bisa ada di model dengan R² rendah (hasil yang berderau, salah satu dari banyak pendorong), sedangkan R² tinggi bisa berasal dari overfit atau variabel yang bocor.
F-statistic: 91.4 ... p-value: 1.29e-10: uji seluruh model, yaitu apakah model ini mengalahkan "cukup prediksi rata-ratanya untuk semua orang"? Dengan satu prediktor, uji ini menggandakan uji t untuk kemiringan (perhatikan 9,56² ≈ 91,4); dengan beberapa prediktor, uji ini menjadi uji gabungan bahwa setidaknya satu koefisien tidak nol. Mesinnya adalah dekomposisi varians yang sama dengan ANOVA.
Regresi berganda: menjaga yang lain tetap
Tambahkan prediktor dengan +:
Penafsirannya berubah dengan satu cara yang sangat penting. Setiap Estimate sekarang adalah efek prediktor itu dengan prediktor lain dijaga tetap: koefisien wt (sekitar −3,9, turun dari −5,3) adalah biaya mpg dari berat tambahan saat membandingkan mobil dengan tenaga kuda yang sama. Nilai −5,3 dari regresi sederhana diam-diam ikut membawa fakta bahwa mobil yang lebih berat juga cenderung lebih bertenaga; regresi berganda memisahkannya. Ini juga alasan koefisien bergeser saat kamu menambah variabel: kalau prediktor baru berkorelasi dengan yang lama, "deskripsi tugas" prediktor lama ikut berubah. R-squared naik menjadi sekitar 0,83, dan di sini versi adjusted-lah perbandingan yang adil terhadap model dengan satu prediktor.
Prediksi: predict()
Model hasil pemasangan adalah sebuah fungsi; predict() mengevaluasinya. Buat data frame newdata yang nama kolomnya persis sama dengan prediktornya:
Kedua jenis interval menjawab pertanyaan yang berbeda, dan menukar keduanya adalah kesalahan klasik di ujian:
interval = "confidence": ketidakpastian tentang rata-rata: "untuk semua mobil seberat 2500 lbs, di mana rata-rata mpg-nya?" Sempit, dan menyusut seiring bertambahnya data.interval = "prediction": rentang tempat satu mobil baru dengan berat itu kemungkinan besar jatuh. Jauh lebih lebar, karena satu mobil membawa sebarannya sendiri di sekitar garis, sebaran yang tidak bisa dirata-ratakan oleh sebanyak apa pun data.
Melaporkan interval kepercayaan saat pertanyaannya tentang satu observasi baru membuat ketelitianmu terlihat jauh lebih tinggi daripada kenyataannya.
Diagnostik dan jebakan ekstrapolasi
summary() memberi tahu apa yang diperkirakan model; plot residual memberi tahu apakah kamu boleh memercayainya. Di sesi interaktif:
par(mfrow = c(2, 2))
plot(fit) # four diagnostic plots
Yang perlu dicari: Residuals vs Fitted seharusnya berupa awan tanpa bentuk; lengkungan berarti hubungannya tidak lurus, dan corong (sebaran yang melebar seiring nilai prediksi) berarti varians yang tidak konstan, sehingga standard error-mu meleset. Titik-titik Q-Q plot seharusnya menempel pada garis; ekor yang berat berarti pencilan sedang mendistorsi model. Scale-Location adalah pemeriksaan corong sekali lagi. Residuals vs Leverage menandai titik-titik yang berpengaruh, yaitu observasi yang sendirian bisa menyeret koefisien (di mtcars, mobil eksotis seperti Chrysler Imperial cenderung muncul di sini). Scatter plot singkat dari data mentah sebelum membuat model menangkap sebagian besar hal ini sejak awal.
Terakhir, jebakan yang tidak tertangkap oleh diagnostik mana pun: ekstrapolasi. Model ini belajar dari mobil yang beratnya kira-kira 1500-5400 lbs. Berikan wt sebesar 8 ke predict() dan fungsi itu dengan riang mengembalikan mpg negatif: matematikanya memperpanjang garis tanpa batas, tapi buktinya berhenti di tepi data. Buat prediksi hanya di dalam (atau di dekat) rentang data yang dipakai untuk membuat model.
Yang kamu bawa pulang
fit <- lm(y ~ x, data = df)memasang garis kuadrat terkecil;coef(fit)adalah persamaannya,summary(fit)laporan lengkapnya.- Baca Estimate sebagai kalimat dengan satuan;
Pr(>|t|)bertanya "mungkinkah ini nol?", bukan "apakah ini penting?" - Residual standard error adalah meleset yang khas dalam satuan nyata; adjusted R-squared adalah angka yang adil untuk membandingkan model.
- Dalam regresi berganda, setiap koefisien berarti "dengan yang lain dijaga tetap", dan koefisien bergeser saat prediktor yang berkorelasi ikut masuk.
predict(fit, newdata, interval = ...): "confidence" untuk rata-rata, "prediction" untuk satu kasus baru, yang lebih lebar.- Periksa
plot(fit)untuk lengkungan, corong, dan titik yang berpengaruh; jangan pernah memercayai prediksi di luar rentang data.
Berikutnya: saat hasilnya ya/tidak, bukan angka, yaitu regresi logistik dengan glm().
Pertanyaan yang sering diajukan
Bagaimana cara menjalankan regresi linear di R?
Dengan lm() dan sebuah formula: fit <- lm(mpg ~ wt, data = mtcars) meregresikan mpg terhadap berat. Lalu summary(fit) mencetak koefisien, p-value-nya, R-squared, dan F-statistic. Tambahkan prediktor lain dengan +: lm(mpg ~ wt + hp, data = mtcars).
Bagaimana cara membaca output summary lm di R?
Di blok Coefficients, setiap Estimate adalah perubahan respons yang diharapkan untuk kenaikan satu unit pada prediktor itu (dengan prediktor lain tetap); Pr(>|t|) menguji apakah koefisien itu mungkin saja nol. Multiple R-squared adalah proporsi varians yang dijelaskan. F-statistic di bagian bawah menguji model secara keseluruhan terhadap model yang hanya berisi intercept.
Apa perbedaan Multiple R-squared dan Adjusted R-squared?
Multiple R-squared adalah proporsi mentah varians yang dijelaskan, dan nilainya hanya bisa naik saat kamu menambah prediktor, bahkan yang tidak berguna sekalipun. Adjusted R-squared mengenakan penalti untuk setiap prediktor, sehingga hanya naik saat variabel baru memang layak masuk. Bandingkan model memakai versi adjusted.
Bagaimana cara memprediksi nilai baru dari regresi di R?
Buat data frame yang nama kolomnya sama dengan prediktornya, lalu panggil predict(fit, newdata = ...). Tambahkan interval = "confidence" untuk ketidakpastian tentang respons rata-rata, atau interval = "prediction" untuk rentang (yang jauh lebih lebar) tempat sebuah observasi baru kemungkinan besar jatuh.