Regresi Linier Berganda di R: Sederhana & Bertahap dengan Contoh

⚡ Ringkasan Cerdas

Regresi Linier Sederhana dan Berganda di R memodelkan hasil kontinu sebagai jumlah tertimbang dari prediktor yang diestimasi dengan metode kuadrat terkecil biasa. Panduan ini mencakup fungsi lm(), pembacaan koefisien, prediktor faktor, diagnostik residual, prediksi, dan pemilihan variabel otomatis.

  • 📐 Persamaan Inti: Regresi sederhana sesuai dengan y = alpha + beta x, dan regresi berganda memperluas garis yang sama ke k prediktor dalam bentuk matriks.
  • 🧮 Metode Estimasi: Metode kuadrat terkecil biasa meminimalkan jumlah kuadrat jarak vertikal antara nilai yang diamati dan nilai yang diprediksi.
  • ️ Sintaks Model: lm(formula, data) mengganti tanda sama dengan dengan tilde, dan -1 menghilangkan intersep.
  • 📊 Hasil Pembacaan: Fungsi summary() melaporkan koefisien, nilai p, dan R-squared yang disesuaikan, yang mencapai 0.8199 pada contoh mtcars.
  • 🔎 Diagnostik: par(mfrow = c(2, 2)) diikuti oleh plot(fit) menghasilkan empat plot residual yang digunakan untuk menguji asumsi OLS.
  • 🔁 Pemilihan Variabel: Regresi bertahap di olsrr menambahkan dan menghapus prediktor berdasarkan nilai p dan menetapkan wt ditambah hp.

Regresi Linier Berganda di R

Di mana Regresi Linier Berperan dalam Pembelajaran Mesin

Regresi linier adalah salah satu metode supervised tertua. Mesin belajar algoritma, dan ini masih menjadi model pertama yang digunakan sebagian besar analis. Salah satu aplikasi pembelajaran mesin paling awal adalah filter spam.

Aplikasi umum lainnya dari pembelajaran mesin meliputi:

  • Identifikasi pesan spam yang tidak diinginkan dalam email
  • Segmentasi perilaku pelanggan untuk iklan bertarget
  • Pengurangan transaksi kartu kredit palsu
  • Optimalisasi penggunaan energi di rumah dan gedung perkantoran
  • Pengenalan wajah

Pembelajaran yang Diawasi

In Pembelajaran yang Diawasi, data pelatihan yang Anda masukkan ke algoritme menyertakan label.

Klasifikasi Ini mungkin merupakan teknik pembelajaran terawasi yang paling banyak digunakan. Salah satu tugas klasifikasi pertama yang ditangani para peneliti adalah filter spam. Tujuan pembelajaran ini adalah untuk memprediksi apakah sebuah email diklasifikasikan sebagai spam atau ham (email yang baik). Mesin, setelah tahap pelatihan, dapat mendeteksi kelas email tersebut.

Regresi Regresi umumnya digunakan dalam bidang pembelajaran mesin untuk memprediksi nilai kontinu. Tugas regresi dapat memprediksi nilai suatu nilai. variabel tak bebas berdasarkan satu set Variabel independen (juga disebut prediktor atau regressor). Misalnya, regresi linier dapat memprediksi harga saham, ramalan cuaca, penjualan, dan sebagainya.

Beberapa algoritma pembelajaran terawasi yang mendasar adalah:

  • Regresi linier
  • Regresi logistik
  • Tetangga Terdekat
  • Dukungan Mesin Vektor (SVM)
  • Pohon keputusan dan Hutan Acak
  • Jaringan Saraf Tiruan

Pembelajaran Tanpa Pengawasan

In Pembelajaran Tanpa Pengawasan, data pelatihan tidak diberi label. Sistem mencoba belajar tanpa referensi. Di bawah ini adalah daftar algoritma pembelajaran tanpa pengawasan.

  • K-berarti
  • Hierarkis Cluster Sampel
  • Maksimalisasi Harapan
  • Pengurangan visualisasi dan dimensi
  • Analisis Komponen Utama
  • PCA kernel
  • Penyematan Linier Lokal

Dengan konteks tersebut, sisa tutorial ini akan membangun model regresi di R langkah demi langkah.

Regresi Linier Sederhana di R

Regresi linier menjawab pertanyaan sederhana: dapatkah Anda mengukur hubungan yang tepat antara satu variabel target dan serangkaian prediktor?

Model probabilistik paling sederhana adalah model garis lurus:

Regresi Linier Sederhana di R

dimana

  • y = Variabel terikat
  • x = Variabel bebas
  • Regresi Linier Sederhana di R = komponen kesalahan acak
  • Regresi Linier Sederhana di R = mencegat
  • Regresi Linier Sederhana di R = Koefisien x

Perhatikan alur cerita berikut ini:

Regresi Linier Sederhana di R

persamaannya adalah Regresi Linier Sederhana di R Dalam persamaan ini, titik potongnya adalah 4.77, jadi ketika x sama dengan 0, nilai y yang diprediksi adalah 4.77. Kemiringannya menunjukkan proporsi perubahan y ketika x berubah.

Untuk memperkirakan nilai optimal Regresi Linier Sederhana di R ke Regresi Linier Sederhana di R, Anda menggunakan metode yang disebut Kuadrat Terkecil Biasa (OLS). Metode ini mencoba mencari parameter yang meminimalkan jumlah kesalahan kuadrat, yaitu jarak vertikal antara nilai prediksi y dengan nilai y sebenarnya. Perbedaan tersebut dikenal dengan sebutan istilah kesalahan.

Sebelum memperkirakan model, Anda dapat menentukan apakah hubungan linier antara y dan x masuk akal dengan membuat plot sebar.

petak sebar

Kami akan menggunakan kumpulan data yang sangat sederhana untuk menjelaskan konsep regresi linier sederhana. Kami akan mengimpor Rata-Rata Tinggi dan Berat Badan untuk Wanita Amerika. Dataset berisi 15 observasi. Anda ingin mengukur apakah Tinggi badan berkorelasi positif dengan berat badan.

library(ggplot2)
path <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/women.csv'
df <-read.csv(path)
ggplot(df,aes(x=height, y =  weight))+
geom_point()

Keluaran:

petak sebar

Diagram sebaran menunjukkan kecenderungan umum bahwa berat badan meningkat seiring dengan peningkatan tinggi badan. Pada langkah selanjutnya, Anda akan mengukur seberapa besar peningkatan berat badan untuk setiap penambahan satuan tinggi badan.

Estimasi Kuadrat Terkecil

Dalam regresi OLS sederhana, perhitungan Estimasi Kuadrat Terkecil ke Estimasi Kuadrat Terkecil Ini cukup mudah. ​​Tutorial ini tidak menurunkan rumus-rumusnya, hanya menyatakannya saja.

Anda ingin memperkirakan: Estimasi Kuadrat Terkecil

Tujuan dari regresi OLS adalah untuk meminimalkan persamaan berikut:

Estimasi Kuadrat Terkecil

dimana

Estimasi Kuadrat Terkecil adalah nilai sebenarnya dan Estimasi Kuadrat Terkecil adalah nilai prediksi.

Solusi untuk Estimasi Kuadrat Terkecil is Estimasi Kuadrat Terkecil

Perhatikan bahwa Estimasi Kuadrat Terkecil berarti nilai rata-rata x

Solusi untuk Estimasi Kuadrat Terkecil is Estimasi Kuadrat Terkecil

Di R, Anda dapat menggunakan fungsi cov() dan var() untuk memperkirakan Estimasi Kuadrat Terkecil dan Anda dapat menggunakan fungsi mean() untuk memperkirakan Estimasi Kuadrat Terkecil

beta <- cov(df$height, df$weight) / var (df$height)
beta

Keluaran:

##[1] 3.45
alpha <- mean(df$weight) - beta * mean(df$height)
alpha

Keluaran:

## [1] -87.51667

Koefisien beta menunjukkan bahwa untuk setiap penambahan satu inci tinggi badan, berat rata-rata meningkat sebesar 3.45 pon.

Memperkirakan persamaan linear secara manual memang bermanfaat, tetapi tidak praktis. R menyediakan fungsi lm() untuk melakukannya untuk Anda, dan Anda akan menggunakannya mulai dari bagian selanjutnya. Dalam proyek nyata, Anda hampir tidak pernah akan menyesuaikan model prediktor tunggal; tugas regresi biasanya melibatkan banyak estimator sekaligus.

Regresi Linier Berganda di R

Penerapan praktis analisis regresi menggunakan model yang lebih kompleks daripada model garis lurus sederhana. Model probabilistik yang mencakup lebih dari satu variabel independen disebut model regresi berganda. Bentuk umum dari model ini adalah:

Regresi Linier Berganda di R

Dalam notasi matriks, Anda dapat menulis ulang modelnya:

  • Regresi Linier Berganda di R

Variabel terikat y sekarang merupakan fungsi dari k variabel bebas. Nilai koefisien Regresi Linier Berganda di R menentukan kontribusi variabel independen Regresi Linier Berganda di R ke Regresi Linier Berganda di R.

Kami secara singkat memperkenalkan asumsi yang kami buat tentang kesalahan acak Regresi Linier Berganda di R dari OLS:

  • Berarti sama dengan 0
  • Varians sama dengan Regresi Linier Berganda di R
  • Distribusi normal
  • Kesalahan acak bersifat independen (dalam arti probabilistik)

Anda perlu menyelesaikannya Regresi Linier Berganda di R, vektor koefisien regresi yang meminimalkan jumlah kesalahan kuadrat antara nilai y prediksi dan nilai aktual.

Solusi bentuk tertutupnya adalah:

Regresi Linier Berganda di R

dengan:

  • menunjukkan mengubah urutan dari matriks X
  • Regresi Linier Berganda di R menunjukkan matriks yang dapat dibalik

Contoh-contoh di bawah ini menggunakan dataset mtcars bawaan. Tujuannya adalah untuk memprediksi konsumsi bahan bakar (mil per galon/mpg) dari serangkaian fitur.

Variabel Kontinyu di R

Untuk saat ini, Anda hanya akan menggunakan variabel kontinu dan mengesampingkan fitur kategoris. Variabel am adalah variabel biner yang mengambil nilai 1 jika transmisi manual dan 0 untuk mobil otomatis; vs juga merupakan variabel biner.

library(dplyr)
df <- mtcars %>%
select(-c(am, vs, cyl, gear, carb))
glimpse(df)

Keluaran:

## Observations: 32
## Variables: 6
## $ mpg  <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19....
## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1...
## $ hp   <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ...
## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9...
## $ wt   <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3...
## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2...

Anda dapat menggunakan fungsi lm() untuk menghitung parameter. Sintaks dasar dari fungsi ini adalah:

lm(formula, data, subset)
Arguments:
	-formula: The equation you want to estimate	
	-data: The dataset used
	-subset: Estimate the model on a subset of the dataset

Ingat persamaan memiliki bentuk berikut

Variabel Kontinyu di R

di R

  • Simbol = diganti dengan ~
  • Setiap x diganti dengan nama variabel
  • Jika Anda ingin menghilangkan konstanta, tambahkan -1 di akhir rumus

Contoh:

Anda ingin memperkirakan berat badan seseorang berdasarkan tinggi badan dan pendapatannya. Persamaannya adalah

Variabel Kontinyu di R

Persamaan dalam R ditulis sebagai berikut:

y ~ X1+ X2+…+Xn # Dengan intersepsi

Jadi untuk contoh kita:

  • Timbang ~ tinggi badan + pendapatan

Tujuan Anda adalah memperkirakan mil per galon berdasarkan serangkaian variabel. Persamaan untuk memperkirakannya adalah:

Variabel Kontinyu di R

Anda akan memperkirakan regresi linier pertama Anda dan menyimpan hasilnya di objek fit.

model <- mpg ~ disp + hp + drat + wt + qsec
fit <- lm(model, df)
fit

Code Penjelasan

  • model <- mpg ~ disp + hp + drat + wt + qsec: Simpan model yang akan diestimasi
  • lm(model, df): Perkirakan model dengan kerangka data df
## 
## Call:
## lm(formula = model, data = df)
## 
## Coefficients:
## (Intercept)         disp           hp         drat           wt  
##    16.53357      0.00872     -0.02060      2.01577     -4.38546  
##        qsec  
##     0.64015	

Output tidak memberikan informasi yang cukup tentang kualitas kecocokan. Anda dapat mengakses detail lebih lanjut seperti signifikansi koefisien, derajat kebebasan, dan bentuk residual dengan fungsi summary().

summary(fit)

Keluaran:

## return the p-value and coefficient
## 
## Call:
## lm(formula = model, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5404 -1.6701 -0.4264  1.1320  5.4996 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 16.53357   10.96423   1.508  0.14362   
## disp         0.00872    0.01119   0.779  0.44281   
## hp          -0.02060    0.01528  -1.348  0.18936   
## drat         2.01578    1.30946   1.539  0.13579   
## wt          -4.38546    1.24343  -3.527  0.00158 **
## qsec         0.64015    0.45934   1.394  0.17523   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.558 on 26 degrees of freedom
## Multiple R-squared:  0.8489, Adjusted R-squared:  0.8199 
## F-statistic: 29.22 on 5 and 26 DF, p-value: 6.892e-10

Kesimpulan dari keluaran tabel di atas

  • Tabel tersebut menunjukkan hubungan negatif yang kuat antara wt dan mpg, serta koefisien positif untuk drat.
  • Hanya variabel wt yang memiliki dampak statistik terhadap mpg. Ingat, untuk menguji hipotesis dalam statistik, kami menggunakan:
    • H0: Tidak ada dampak statistik
    • H1: Prediktor mempunyai pengaruh yang berarti terhadap y
    • Jika nilai p lebih kecil dari 0.05, hal ini menunjukkan variabel tersebut signifikan secara statistik
  • R-kuadrat yang disesuaikan: bagian dari varians y yang dijelaskan oleh model, dikoreksi untuk jumlah prediktor. Di sini nilainya adalah 0.8199, jadi model tersebut menjelaskan sekitar 82 persen dari varians mpg. R-kuadrat selalu berada di antara 0 dan 1, dan nilai yang lebih tinggi lebih baik.

Anda dapat menjalankan ANOVA uji untuk memperkirakan pengaruh setiap fitur terhadap varians dengan fungsi anova()

anova(fit)

Keluaran:

## Analysis of Variance Table
## 
## Response: mpg
##           Df Sum Sq Mean Sq  F value   Pr(>F)    
## disp       1 808.89  808.89 123.6185 2.23e-11 ***
## hp         1  33.67   33.67   5.1449 0.031854 *  
## drat       1  30.15   30.15   4.6073 0.041340 *  
## wt         1  70.51   70.51  10.7754 0.002933 ** 
## qsec       1  12.71   12.71   1.9422 0.175233    
## Residuals 26 170.13    6.54                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1	

Cara yang lebih konvensional untuk memperkirakan kinerja model adalah dengan menampilkan residu terhadap berbagai ukuran.

Anda dapat menggunakan fungsi plot() untuk menampilkan empat grafik:

– Nilai Residual vs Nilai yang Dipasang

– Plot QQ normal: Kuartil Teoretis vs Residu terstandar

– Skala-Lokasi: Nilai yang disesuaikan vs Akar kuadrat dari residu standar

– Residual vs Leverage: Leverage vs Residual terstandar

Anda menambahkan kode par(mfrow = c(2, 2)) sebelum plot(fit). Jika Anda tidak menambahkan baris kode ini, R akan meminta Anda untuk menekan perintah enter untuk menampilkan grafik berikutnya.

par(mfrow = c(2, 2))

Code Penjelasan

  • (mfrow=c(2,2)): mengembalikan jendela dengan empat grafik berdampingan.
  • 2 yang pertama menambahkan jumlah baris
  • 2 yang kedua menambahkan jumlah kolom.
  • Jika Anda menulis (mfrow=c(3,2)): Anda akan membuat jendela 3 baris 2 kolom
plot(fit)

Keluaran:

Variabel Kontinyu di R

Rumus lm() mengembalikan daftar yang berisi banyak informasi berguna. Anda dapat mengaksesnya dengan objek fit yang telah Anda buat, diikuti dengan tanda $ dan informasi yang ingin Anda ekstrak.tract.

– koefisien: `koefisien$cocok`

– sisa: `cocok$sisa`

– nilai pas: `fit$fitted.values`

Faktor Regresi di R

Dalam estimasi model terakhir, Anda melakukan regresi mpg pada variabel kontinu saja. Menambahkan variabel faktor ke model sangatlah mudah. Anda menambahkan variabel am ke model Anda. Penting untuk memastikan bahwa variabel tersebut merupakan tingkat faktor dan tidak kontinu.

df <- mtcars %>%
    mutate(cyl = factor(cyl),
        vs = factor(vs),
        am = factor(am),
        gear = factor(gear),
        carb = factor(carb))
model <- mpg ~ .
summary(lm(model, df))

Keluaran:

## 
## Call:
## lm(formula = model, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5087 -1.3584 -0.0948  0.7745  4.6251 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept) 23.87913   20.06582   1.190   0.2525  
## cyl6        -2.64870    3.04089  -0.871   0.3975  
## cyl8        -0.33616    7.15954  -0.047   0.9632  
## disp         0.03555    0.03190   1.114   0.2827  
## hp          -0.07051    0.03943  -1.788   0.0939 .
## drat         1.18283    2.48348   0.476   0.6407  
## wt          -4.52978    2.53875  -1.784   0.0946 .
## qsec         0.36784    0.93540   0.393   0.6997  
## vs1          1.93085    2.87126   0.672   0.5115  
## am1          1.21212    3.21355   0.377   0.7113  
## gear4        1.11435    3.79952   0.293   0.7733  
## gear5        2.52840    3.73636   0.677   0.5089  
## carb2       -0.97935    2.31797  -0.423   0.6787  
## carb3        2.99964    4.29355   0.699   0.4955  
## carb4        1.09142    4.44962   0.245   0.8096  
## carb6        4.47757    6.38406   0.701   0.4938  
## carb8        7.25041    8.36057   0.867   0.3995  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.833 on 15 degrees of freedom
## Multiple R-squared:  0.8931, Adjusted R-squared:  0.779 
## F-statistic:  7.83 on 16 and 15 DF,  p-value: 0.000124

R menggunakan tingkat faktor pertama sebagai kelompok dasar. Anda perlu membandingkan koefisien kelompok lain dengan kelompok dasar.

Asumsi Regresi Linier di R

Metode kuadrat terkecil biasa (Ordinary Least Squares/OLS) hanya menghasilkan koefisien dan nilai p yang dapat dipercaya jika lima kondisi terpenuhi. Empat plot diagnostik yang dihasilkan oleh plot(fit) ada justru untuk memeriksa kondisi-kondisi tersebut.

  • Linearitas: Hubungan antara setiap prediktor dan y bersifat linier. Periksa Residual vs. Sesuai plot; kurva yang terlihat berarti Anda memerlukan transformasi atau suku polinomial.
  • Kemerdekaan: Istilah kesalahan tidak berkorelasi. Data yang diurutkan berdasarkan waktu sering melanggar hal ini, yang dapat Anda uji dengan durbinWatsonTest() dari paket car.
  • Homoskedastisitas: Varians kesalahan bersifat konstan di seluruh nilai yang diprediksi. Bentuk corong pada Lokasi Skala Plot tersebut memberi sinyal adanya pelanggaran.
  • Normalitas residual: Kesalahan tersebut mengikuti distribusi normal. Titik-titik tersebut seharusnya berada pada diagonalnya. QQ normal merencanakan.
  • Tidak ada multikolinearitas: Prediktor bukanlah duplikat yang hampir identik satu sama lain. Faktor inflasi varians di atas 5 biasanya merupakan garis peringatan.
library(car)
vif(fit)           # variance inflation factors
shapiro.test(residuals(fit))   # normality of residuals

Pelanggaran tidak selalu membatalkan model, tetapi hal itu mengubah seberapa yakin Anda dapat terhadap nilai p, jadi periksalah sebelum melaporkan koefisien apa pun.

Cara Membuat Prediksi dengan Model Regresi Linier di R

Membuat model hanyalah setengah dari pekerjaan. Fungsi predict() menerapkan koefisien yang telah disesuaikan ke observasi baru.

predict(object, newdata, interval = "none", level = 0.95)
arguments:
-object: The model returned by lm()
-newdata: A data frame whose columns match the predictors used in the formula
-interval: "none", "confidence" for the mean response, or "prediction" for a single new case
-level: The confidence level, 0.95 by default

Ikuti tiga langkah ini.

  1. Buatlah data frame untuk kasus-kasus baru. Nama kolom harus sama persis dengan nama prediktor dalam rumus, dan level faktor harus sesuai dengan data pelatihan.
  2. Panggil fungsi predict(). Lewatkan objek yang telah disesuaikan dan data frame yang baru.
  3. Tambahkan interval. Pilih “confidence” jika Anda menginginkan ketidakpastian seputar respons rata-rata, dan “prediction” jika Anda menginginkan rentang untuk satu mobil tertentu.
new_cars <- data.frame(wt = c(2.5, 3.2), hp = c(110, 175))
fit_final <- lm(mpg ~ wt + hp, data = mtcars)

predict(fit_final, newdata = new_cars)
predict(fit_final, newdata = new_cars, interval = "prediction")

Membaca hasilnya. Sebuah mobil dengan berat 2.5 pon dan tenaga 110 tenaga kuda diprediksi memiliki konsumsi bahan bakar sekitar 24.1 mpg. Interval prediksi selalu lebih lebar daripada interval kepercayaan, karena interval prediksi membawa ketidakpastian dari satu pengamatan di atas ketidakpastian garis yang dipasang.

Dua aturan menjaga prediksi tetap akurat. Jangan pernah melakukan ekstrapolasi di luar rentang prediktor pelatihan, karena garis lurus tidak memiliki bukti di luar sana. Dan selalu evaluasi pada data yang belum pernah dilihat model, jika tidak, kesalahan yang dilaporkan akan terlalu optimis.

Regresi Linier vs Regresi Logistik di R

Analis sering menggunakan lm() ketika hasilnya tidak kontinu. Tabel di bawah ini menunjukkan di mana batasnya berada.

Kriteria linear Regression Regresi logistik
Variabel respons Kontinu Biner atau kategorikal
Output yang diprediksi Bilangan riil apa pun Probabilitas antara 0 dan 1
Perkiraan Kuadrat terkecil biasa Kemungkinan maksimum
Ukuran yang pas R-squared, RMSE AIC, deviasi, akurasi
fungsi R lm(rumus, data) glm(formula, data, family = “binomial”)

Jika hasilnya berupa keputusan ya atau tidak, lanjutkan ke langkah berikutnya. model linier umum alih-alih memaksakan garis lurus melalui angka nol dan satu.

Regresi Linier Bertahap dalam R

Bagian terakhir dari tutorial ini membahas tentang regresi bertahap algoritma. Tujuan dari algoritma ini adalah untuk menambah dan menghapus kandidat potensial dalam model dan mempertahankan kandidat yang memiliki dampak signifikan pada variabel dependen. Algoritma ini berguna ketika kumpulan data berisi daftar prediktor yang besar. Anda tidak perlu menambahkan dan menghapus variabel independen secara manual. Regresi bertahap dibuat untuk memilih kandidat terbaik agar sesuai dengan model.

Mari kita lihat cara kerjanya secara langsung. Anda menggunakan dataset mtcars dengan variabel kontinu saja untuk ilustrasi pedagogis. Sebelum memulai analisis, ada baiknya untuk memeriksa hubungan dalam data dengan matriks korelasi. Pustaka GGally adalah perluasan dari ggplot2.

Pustaka ini mencakup berbagai fungsi untuk menampilkan ringkasan statistik seperti korelasi dan distribusi semua variabel dalam matriks. Kami akan menggunakan fungsi ggscatmat, tetapi Anda dapat merujuk ke skema untuk informasi lebih lanjut tentang perpustakaan GGally.

Sintaks dasar untuk ggscatmat() adalah:

ggscatmat(df, columns = 1:ncol(df), corMethod = "pearson")
arguments:
-df:  A matrix of continuous variables
-columns: Pick up the columns to use in the function. By default, all columns are used
-corMethod: Define the function to compute the correlation between variable. By default, the algorithm uses the Pearson formula

Anda menampilkan korelasi untuk semua variabel Anda dan memutuskan mana yang merupakan kandidat terbaik untuk langkah pertama regresi bertahap. Terdapat beberapa korelasi yang kuat antara variabel Anda dan variabel dependen, mpg.

library(GGally)
df <- mtcars %>%
	select(-c(am, vs, cyl, gear, carb))
ggscatmat(df, columns = 1: ncol(df))

Keluaran:

Regresi Linier Bertahap dalam R

Contoh Regresi Bertahap Langkah demi Langkah

Pemilihan variabel merupakan bagian penting dalam menyesuaikan model, dan regresi bertahap melakukan pencarian tersebut secara otomatis. Untuk memperkirakan berapa banyak pilihan yang mungkin ada dalam dataset, Anda menghitung Contoh Regresi Bertahap Langkah demi Langkah dengan k adalah jumlah prediktor. Besarnya kemungkinan semakin besar seiring dengan banyaknya variabel independen. Itu sebabnya Anda perlu memiliki pencarian otomatis.

Anda perlu menginstal paket olsrr dari CRAN. Paket ini belum tersedia di Anaconda. Oleh karena itu, Anda menginstalnya langsung dari baris perintah:

install.packages("olsrr")

Anda dapat memplot semua himpunan bagian kemungkinan dengan kriteria kecocokan (yaitu R-square, Adjusted R-square, kriteria Bayesian). Model dengan kriteria AIC terendah akan menjadi model akhir.

library(olsrr)
model <- mpg~.
fit <- lm(model, df)
test <- ols_all_subset(fit)
plot(test)

Code Penjelasan

  • mpg ~.: Buatlah model yang akan diestimasi
  • lm(model, df): Jalankan model OLS
  • ols_all_subset(sesuaikan): Buat grafik dengan informasi statistik yang relevan
  • merencanakan (tes): Plot grafiknya

Keluaran:

Contoh Regresi Bertahap Langkah demi Langkah

Model regresi linier menggunakan uji-t Untuk memperkirakan dampak statistik dari variabel independen terhadap variabel dependen. Para peneliti umumnya menetapkan ambang batas maksimum pada 10 persen, dan nilai p yang lebih rendah menunjukkan hubungan statistik yang lebih kuat. Regresi bertahap dibangun berdasarkan uji ini untuk menambah dan menghapus prediktor kandidat. Algoritma bekerja sebagai berikut:

Regresi Linier Bertahap dalam R
Regresi Linier Bertahap dalam R
  • Langkah 1: Regresi setiap prediktor pada y secara terpisah. Yaitu regresi x_1 pada y, x_2 pada y hingga x_n. Simpan p-value dan pertahankan regressor dengan nilai p lebih rendah dari ambang batas yang ditentukan (0.1 secara default). Prediktor dengan signifikansi lebih rendah dari ambang batas akan ditambahkan ke model akhir. Jika tidak ada variabel yang memiliki nilai p lebih rendah dari ambang batas yang dimasukkan, maka algoritme berhenti, dan Anda memiliki model akhir dengan konstanta saja.
  • Langkah 2: Gunakan prediktor dengan nilai-p terendah dan tambahkan satu variabel secara terpisah. Anda meregresi sebuah konstanta, prediktor terbaik dari langkah pertama dan variabel ketiga. Anda menambahkan ke model bertahap, prediktor baru dengan nilai lebih rendah dari ambang batas yang masuk. Jika tidak ada variabel yang memiliki nilai-p lebih rendah dari 0.1, maka algoritme berhenti, dan Anda memiliki model akhir dengan satu prediktor saja. Anda meregresi model bertahap untuk memeriksa signifikansi prediktor terbaik langkah pertama. Jika lebih tinggi dari ambang batas penghapusan, Anda mempertahankannya dalam model bertahap. Jika tidak, Anda mengecualikannya.
  • Langkah 3: Anda mengulangi langkah 2 pada model bertahap terbaik yang baru. Algoritme menambahkan prediktor ke model bertahap berdasarkan nilai yang dimasukkan dan mengecualikan prediktor dari model bertahap jika tidak memenuhi ambang batas pengecualian.
  • Algoritme terus berjalan hingga tidak ada variabel yang dapat ditambahkan atau dikecualikan.

Anda dapat menjalankan algoritma dengan fungsi ols_stepwise() dari paket olsrr.

ols_stepwise(fit, pent = 0.1, prem = 0.3, details = FALSE)

arguments:
-fit:  Model to fit. Need to use `lm()`before to run `ols_stepwise()
-pent: Threshold of the p-value used to enter a variable into the stepwise model. By default, 0.1
-prem: Threshold of the p-value used to exclude a variable into the stepwise model. By default, 0.3
-details: Print the details of each step

⚠️ Catatan pada kemasan: Versi terbaru olsrr telah mengganti nama fungsi-fungsi ini. Gunakan ols_step_all_possible() sebagai pengganti ols_all_subset() dan ols_step_both_p() sebagai pengganti ols_stepwise(). Argumen dan outputnya tidak berubah.

Sebelum itu, kami tunjukkan langkah-langkah algoritmanya. Di bawah ini adalah tabel variabel terikat dan bebas:

Variabel tak bebas Variabel independen
mpg tersedia
hp
tikus
wt
qdetik

Start

Untuk memulainya, algoritma dimulai dengan menjalankan model pada setiap variabel independen secara terpisah. Tabel menunjukkan nilai p untuk setiap model.

## [[1]]
##  (Intercept)         disp 
## 3.576586e-21 9.380327e-10 
## 
## [[2]]
##  (Intercept)           hp 
## 6.642736e-18 1.787835e-07 
## 
## [[3]]
##  (Intercept)         drat 
## 0.1796390847 0.0000177624 
## 
## [[4]]
##  (Intercept)           wt 
## 8.241799e-19 1.293959e-10 
## 
## [[5]
## (Intercept)        qsec 
##  0.61385436  0.01708199

Untuk memasukkan model, algoritma menyimpan variabel dengan nilai p terendah. Dari output di atas, itu adalah wt

Langkah 1

Pada langkah pertama, algoritme menjalankan mpg pada wt dan variabel lainnya secara independen.

## [[1]]
##  (Intercept)           wt         disp
## 4.910746e-16 7.430725e-03 6.361981e-02 
## 
## [[2]]
##  (Intercept)           wt           hp 
## 2.565459e-20 1.119647e-06 1.451229e-03 
## 
## [[3]]
##  (Intercept)           wt         drat 
## 2.737824e-04 1.589075e-06 3.308544e-01 
## 
## [[4]]
##  (Intercept)           wt         qsec 
## 7.650466e-04 2.518948e-11 1.499883e-03

Setiap variabel merupakan kandidat potensial untuk masuk ke dalam model akhir. Namun, algoritma hanya mempertahankan variabel dengan nilai p yang lebih rendah. Ternyata hp memiliki nilai p yang sedikit lebih rendah daripada qsec, sehingga hp masuk ke dalam model akhir.

Langkah 2

Algoritme mengulangi langkah pertama tetapi kali ini dengan dua variabel independen di model akhir.

## [[1]]
##  (Intercept)           wt           hp         disp 
## 1.161936e-16 1.330991e-03 1.097103e-02 9.285070e-01 
## 
## [[2]]
##  (Intercept)           wt           hp         drat 
## 5.133678e-05 3.642961e-04 1.178415e-03 1.987554e-01 
## 
## [[3]]
##  (Intercept)           wt           hp         qsec 
## 2.784556e-03 3.217222e-06 2.441762e-01 2.546284e-01

Tidak satu pun dari kandidat yang tersisa memiliki nilai p di bawah ambang batas masuk. Algoritma berhenti di sini, dan ini adalah model akhirnya:

## 
## Call:
## lm(formula = mpg ~ wt + hp, data = df)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -3.941 -1.600 -0.182  1.050  5.854 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 37.22727    1.59879  23.285  < 2e-16 ***
## wt          -3.87783    0.63273  -6.129 1.12e-06 ***
## hp          -0.03177    0.00903  -3.519  0.00145 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.593 on 29 degrees of freedom
## Multiple R-squared:  0.8268, Adjusted R-squared:  0.8148 
## F-statistic: 69.21 on 2 and 29 DF,  p-value: 9.109e-12

Anda dapat menggunakan fungsi ols_stepwise() untuk membandingkan hasilnya.

stp_s <-ols_stepwise(fit, details=TRUE)

Keluaran:

Algoritma ini menemukan solusi setelah dua langkah dan memberikan output yang sama dengan panduan manual di atas.

Oleh karena itu, model akhir dijelaskan oleh dua prediktor dan sebuah intersep: konsumsi bahan bakar (mil per galon) berbanding terbalik dengan tenaga kuda kotor dan berat.

## You are selecting variables based on p value...
## 1 variable(s) added....
## Variable Selection Procedure
##  Dependent Variable: mpg 
## 
##  Stepwise Selection: Step 1 
## 
##  Variable wt Entered 
## 
##                         Model Summary                          
## --------------------------------------------------------------
## R                       0.868       RMSE                3.046 
## R-Squared               0.753       Coef. Var          15.161 
## Adj. R-Squared          0.745       MSE                 9.277 
## Pred R-Squared          0.709       MAE                 2.341 
## --------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##		ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression     847.725         1        847.725    91.375    0.0000 
## Residual       278.322        30          9.277                     
## Total         1126.047        31                                    
## --------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##       model      Beta    Std. Error    Std. Beta      t        Sig      lower     upper 
## ----------------------------------------------------------------------------------------
## (Intercept)    37.285         1.878                 19.858    0.000    33.450    41.120 
##          wt    -5.344         0.559       -0.868    -9.559    0.000    -6.486    -4.203 
## ----------------------------------------------------------------------------------------
## 1 variable(s) added...
## Stepwise Selection: Step 2 
## 
##  Variable hp Entered 
## 
##                         Model Summary                          
## --------------------------------------------------------------
## R                       0.909       RMSE                2.593 
## R-Squared               0.827       Coef. Var          12.909 
## Adj. R-Squared          0.815       MSE                 6.726 
## Pred R-Squared          0.781       MAE                 1.901 
## --------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##			ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression     930.999         2        465.500    69.211    0.0000 
## Residual       195.048        29          6.726                     
## Total         1126.047        31                                    
## --------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##       model      Beta    Std. Error    Std. Beta      t        Sig      lower     upper 
## ----------------------------------------------------------------------------------------
## (Intercept)    37.227         1.599                 23.285    0.000    33.957    40.497 
##          wt    -3.878         0.633       -0.630    -6.129    0.000    -5.172    -2.584 
##          hp    -0.032         0.009       -0.361    -3.519    0.001    -0.050    -0.013 
## ----------------------------------------------------------------------------------------
## No more variables to be added or removed.

Regresi Linier di R: Poin-Poin Penting dan Referensi Fungsi

  • Regresi linier menjawab pertanyaan sederhana: dapatkah Anda mengukur hubungan yang tepat antara satu variabel target dan serangkaian prediktor?
  • Metode Ordinary Least Squares (OLS) menemukan parameter yang meminimalkan jumlah kuadrat kesalahan, yaitu jarak vertikal antara nilai y yang diprediksi dan nilai y sebenarnya.
  • Model probabilistik yang mencakup lebih dari satu variabel independen disebut model regresi berganda.
  • Tujuan dari algoritma Regresi Linier Bertahap adalah untuk menambah dan menghapus kandidat potensial dalam model dan mempertahankan kandidat yang memiliki dampak signifikan pada variabel dependen.
  • Pemilihan variabel merupakan bagian penting dari penyesuaian model, dan regresi bertahap melakukan pencarian tersebut secara otomatis.

Semua fungsi yang digunakan dalam tutorial ini tercantum di bawah ini:

Perpustakaan Tujuan fungsi kasus
mendasarkan Hitung regresi linier aku() rumus, data
mendasarkan Ringkaslah modelnya ringkasan() cocok
mendasarkan Extrackoefisien t lm()$koefisien
mendasarkan Extracsisaan t lm()$sisa
mendasarkan Extracnilai yang sesuai lm()$dilengkapi.nilai
olsrr Jalankan regresi bertahap ols_bertahap() cocok, pent = 0.1, prem = 0.3, detail = SALAH

NoteIngat untuk mengubah variabel kategorikal menjadi faktor sebelum menyesuaikan model.

Pertanyaan Umum Demo Slot

Nilai R-squared selalu meningkat ketika Anda menambahkan prediktor, bahkan yang tidak berguna sekalipun. Adjusted R-squared memberikan penalti untuk setiap suku tambahan, sehingga nilainya bisa menurun. Gunakan adjusted R-squared saat membandingkan model dengan jumlah prediktor yang berbeda.

Plot Residuals vs Leverage menandai titik-titik berpengaruh melalui jarak Cook. Selidiki titik-titik tersebut sebelum menghapus apa pun: outlier mungkin merupakan kesalahan entri data, atau mungkin merupakan pengamatan yang paling informatif dalam sampel.

Tidak. R membuat variabel dummy secara otomatis begitu sebuah kolom menjadi faktor. Level pertama menjadi kelompok referensi, dan setiap koefisien lainnya dibaca sebagai perbedaan dari garis dasar tersebut.

Regresi linier cepat, sepenuhnya dapat diaudit, dan sulit mengalami overfitting, yang menjadikannya standar dasar sebelum tim AI mana pun berkomitmen pada gradient boosting atau jaringan saraf. Sektor-sektor yang diatur seringkali membutuhkan transparansi tersebut.

Ya. Asisten AI dapat mengusulkan spesifikasi kandidat, menjelaskan keluaran langkah demi langkah, dan memperingatkan tentang multikolinearitas. Perlakukan saran tersebut sebagai hipotesis dan konfirmasikan masing-masing dengan diagnostik dan pengetahuan domain Anda sendiri.

Ringkaslah postingan ini dengan: