Cara melakukan regresi linier berganda di r


Panduan ini menunjukkan contoh cara melakukan regresi linier berganda di R, termasuk:

  • Periksa data sebelum memasang model
  • Penyesuaian model
  • Memeriksa asumsi model
  • Menafsirkan keluaran model
  • Menilai kesesuaian model
  • Gunakan model untuk membuat prediksi

Ayo pergi!

Fasilitas

Untuk contoh ini, kita akan menggunakan kumpulan data R mtcars bawaan, yang berisi informasi tentang berbagai atribut dari 32 mobil berbeda:

 #view first six lines of mtcars
head(mtcars)

# mpg cyl disp hp drat wt qsec vs am gear carb
#Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

Dalam contoh ini, kita akan membangun model regresi linier berganda yang menggunakan mpg sebagai variabel respon dan disp , hp dan drat sebagai variabel prediktor.

 #create new data frame that contains only the variables we would like to use to
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#view first six rows of new data frame
head(data)

# mpg disp hp drat
#Mazda RX4 21.0 160 110 3.90
#Mazda RX4 Wag 21.0 160 110 3.90
#Datsun 710 22.8 108 93 3.85
#Hornet 4 Drive 21.4 258 110 3.08
#Hornet Sportabout 18.7 360 175 3.15
#Valiant 18.1 225 105 2.76

Tinjauan Data

Sebelum memasang model, kita dapat melihat data untuk memahaminya dengan lebih baik dan juga mengevaluasi secara visual apakah regresi linier berganda bisa menjadi model yang baik untuk menyesuaikan data ini atau tidak.

Secara khusus, kita perlu memeriksa apakah variabel prediktor memiliki hubungan linier dengan variabel respons, yang menunjukkan bahwa model regresi linier berganda mungkin cocok.

Untuk melakukan ini, kita dapat menggunakan fungsipairs() untuk membuat plot sebar dari setiap kemungkinan pasangan variabel:

 pairs(data, pch = 18, col = "steelblue")

Dari grafik berpasangan ini kita dapat melihat hal berikut:

  • mpg dan ketersediaan tampaknya memiliki korelasi linier negatif yang kuat
  • mpg dan hp tampaknya memiliki korelasi linier positif yang kuat
  • mpg dan drat tampaknya memiliki korelasi linier negatif yang sederhana

Perhatikan bahwa kita juga bisa menggunakan fungsi ggpairs() dari perpustakaan GGally untuk membuat plot serupa yang berisi koefisien korelasi linier sebenarnya untuk setiap pasangan variabel:

 #install and load the GGally library
install.packages("GGally")
library(GGally)

#generate the pairs plot
ggpairs(data)

Masing-masing variabel prediktor tampaknya memiliki korelasi linier yang penting dengan variabel respons mpg , jadi kami akan melanjutkan untuk menyesuaikan model regresi linier dengan data.

Penyesuaian model

Sintaks dasar untuk memasang model regresi linier berganda di R adalah:

 lm(response_variable ~ predictor_variable1 + predictor_variable2 + ..., data = data)

Dengan menggunakan data kami, kami dapat menyesuaikan model menggunakan kode berikut:

 model <- lm(mpg ~ disp + hp + drat, data = data)

Memeriksa asumsi model

Sebelum melanjutkan untuk memverifikasi hasil model, terlebih dahulu kita harus memverifikasi bahwa asumsi model terpenuhi. Yaitu, kita perlu memeriksa hal-hal berikut:

1. Distribusi residu model harus mendekati normal.

Kita dapat memeriksa apakah asumsi ini terpenuhi dengan membuat histogram residu sederhana:

 hist(residuals(model), col = "steelblue")

Meskipun distribusinya sedikit condong ke kanan , hal ini tidak cukup abnormal untuk menimbulkan kekhawatiran besar.

2. Varians dari residu harus konsisten untuk semua observasi.

Kondisi yang disukai ini dikenal sebagai homoskedastisitas. Pelanggaran asumsi ini dikenal dengan istilah heteroskedastisitas .

Untuk memeriksa apakah asumsi ini terpenuhi, kita dapat membuat grafik nilai penyesuaian/nilai sisa:

 #create fitted value vs residual plot
plot(fitted(model), residuals(model))

#add horizontal line at 0
abline(h = 0, lty = 2)

Idealnya, kita ingin residu tersebar secara merata pada setiap nilai yang sesuai. Kita dapat melihat dari grafik bahwa dispersi cenderung menjadi lebih besar untuk nilai yang lebih besar, namun tren ini tidak cukup ekstrim untuk menimbulkan terlalu banyak kekhawatiran.

Menafsirkan keluaran model

Setelah kami memverifikasi bahwa asumsi model cukup terpenuhi, kami dapat memeriksa keluaran model menggunakan fungsi ringkasan() :

 summary(model)

#Call:
#lm(formula = mpg ~ disp + hp + drat, data = data)
#
#Residuals:
# Min 1Q Median 3Q Max 
#-5.1225 -1.8454 -0.4456 1.1342 6.4958 
#
#Coefficients:
#Estimate Std. Error t value Pr(>|t|)   
#(Intercept) 19.344293 6.370882 3.036 0.00513 **
#disp -0.019232 0.009371 -2.052 0.04960 * 
#hp -0.031229 0.013345 -2.340 0.02663 * 
#drat 2.714975 1.487366 1.825 0.07863 . 
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#Residual standard error: 3.008 on 28 degrees of freedom
#Multiple R-squared: 0.775, Adjusted R-squared: 0.7509 
#F-statistic: 32.15 on 3 and 28 DF, p-value: 3.28e-09

Dari hasilnya kita dapat melihat hal berikut:

  • Statistik F keseluruhan model adalah 32,15 dan nilai p yang sesuai adalah 3,28e-09 . Hal ini menunjukkan bahwa model secara keseluruhan signifikan secara statistik. Dengan kata lain, model regresi secara keseluruhan bermanfaat.
  • disp signifikan secara statistik pada tingkat signifikansi 0,10. Secara khusus, koefisien dari hasil model menunjukkan bahwa peningkatan ketersediaan sebesar satu unit dikaitkan dengan penurunan rata-rata sebesar -0,019 unit dalam mpg , dengan asumsi tenaga kuda dan konsumsi bahan bakar tetap konstan. .
  • hp signifikan secara statistik pada tingkat signifikansi 0,10. Secara khusus, koefisien dari hasil model menunjukkan bahwa peningkatan satu unit tenaga kuda dikaitkan dengan penurunan rata-rata sebesar -0,031 unit dalam mpg , dengan asumsi bahwa disp dan drat tetap konstan.
  • drat signifikan secara statistik pada tingkat signifikansi 0,10. Secara khusus, koefisien dari hasil model menunjukkan bahwa peningkatan konsumsi bensin sebesar satu unit dikaitkan dengan peningkatan rata-rata sebesar 2.715 unit mpg , dengan asumsi laju aliran dan tenaga kuda tetap konstan.

Menilai kesesuaian model

Untuk menilai seberapa cocok model regresi dengan data, kita dapat melihat beberapa metrik berbeda:

1. Beberapa kotak R

Ini mengukur kekuatan hubungan linier antara variabel prediktor dan variabel respon. Kelipatan R-kuadrat dari 1 menunjukkan hubungan linier sempurna, sedangkan kelipatan R-kuadrat dari 0 menunjukkan tidak ada hubungan linier.

Kelipatan R juga merupakan akar kuadrat dari R kuadrat, yaitu proporsi varians variabel respon yang dapat dijelaskan oleh variabel prediktor. Dalam contoh ini, kelipatan R-kuadrat adalah 0,775 . Jadi R kuadratnya adalah 0,775 2 = 0,601 . Hal ini menunjukkan bahwa 60,1% varian dalam mpg dapat dijelaskan oleh prediktor model.

Terkait: Berapa nilai R-kuadrat yang bagus?

2. Kesalahan standar sisa

Ini mengukur jarak rata-rata antara nilai yang diamati dan garis regresi. Dalam contoh ini, nilai yang diamati rata-rata menyimpang sebesar 3,008 satuan dari garis regresi .

Terkait:   Memahami Kesalahan Standar Regresi

Gunakan model untuk membuat prediksi

Dari hasil model diketahui persamaan regresi linier berganda yang cocok adalah:

topi mpg = -19.343 – 0.019*disp – 0.031*hp + 2.715*drat

Kita dapat menggunakan persamaan ini untuk membuat prediksi tentang nilai mpg untuk observasi baru. Misalnya, kita dapat mengetahui prediksi nilai mpg untuk mobil yang memiliki atribut berikut:

  • tampilan = 220
  • jam = 150
  • omong kosong = 3
 #define the coefficients from the model output
intercept <- coef(summary(model))["(Intercept)", "Estimate"]
disp <- coef(summary(model))["disp", "Estimate"]
hp <- coef(summary(model))["hp", "Estimate"]
drat <- coef(summary(model))["drat", "Estimate"]

#use the model coefficients to predict the value for mpg
intercept + disp*220 + hp*150 + drat*3

#[1] 18.57373

Untuk mobil dengan disp = 220, hp = 150 dan drat = 3, model memperkirakan mobil tersebut akan memperoleh 18.57373 mpg .

Anda dapat menemukan kode R lengkap yang digunakan dalam tutorial ini di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara menyesuaikan jenis model regresi lainnya di R:

Bagaimana melakukan regresi kuadrat di R
Bagaimana melakukan regresi polinomial di R
Bagaimana melakukan regresi eksponensial di R

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *