Regresi linear adalah metode statistik untuk memodelkan hubungan antara satu variabel independen (X) dengan satu variabel dependen (Y ). Tujuan: 1. Menjelaskan hubungan antara variabel. 2. Memprediksi nilai Y berdasarkan X.
Dengan rumus: Y =β0+β1X+ε
Nah pada kali ini kita akan membuat regresi linear sederhana dan dan berganda di aplikasi R Studio dan melakukan uji asumsi pada masing-masing persamaan regresi nya temen-temen. Untuk data yang digunakan yaitu data bawaan dari aplikasi R yaitu mtcars, isinya adalah data tentang mobil (cars), dengan 32 observasi (baris) untuk 32 jenis mobil, dan 11 variabel (kolom) tentang spesifikasi mobil. Tetapi kami akan menggunakan kolom “mpg” sebagai variabel dependen dan “hp” dan “wt” sebagai variabel independen untuk regresi sederhana saya menggunakan variabel “mpg” dan “hp” saja baru untuk regresi linear berganda saya menggunakan ketiga variabel tersebut.
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
Sebelum melakukan analisis regresi, sangat disarankan untuk mengetahui terlebih dahulu nilai korelasi antar variabel. Hal ini penting karena korelasi memberikan gambaran awal mengenai ada atau tidaknya hubungan linear antara dua variabel, serta arah hubungan tersebut. Jika nilai korelasi mendekati nol, maka hubungan linear hampir tidak ada sehingga penggunaan regresi linear mungkin kurang tepat. Sebaliknya, jika korelasi bernilai cukup kuat, baik positif maupun negatif, maka regresi linear bisa digunakan untuk memodelkan hubungan tersebut. Untuk melakukan analisis korelasi kita bisa menggunakan syntax :
Untuk korelasi mpg dan hp: cat(“korelasi mpg dan hp:”, cor(mtcars\(mpg, mtcars\)hp)) Untuk korelasi mpg dan wt: cat(“korelasi mpg dan wt:”, cor(mtcars\(mpg, mtcars\)wt))
Sehingga outputnya:
## Korelasi mpg dan hp: -0.7761684
## Korelasi mpg dan wt: -0.8676594
Karena kita sudah mengetahui variabel yang digunakan memiliki korelasi yang kuat maka kita bisa lanjut ke tahap analisis regresinya.
Untuk membuat model regresi nya kita perlu menggunakan perintah lm () untuk membuat linear model nya (regresi linear), dan summary() untuk menampilkan ringkasan lengkap dari objek modelnya. Syntaxnya yaitu: model1 <- lm(mpg ~ hp, data = mtcars) summary(model1)
##
## Call:
## lm(formula = mpg ~ hp, data = mtcars)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.7121 -2.1122 -0.8854 1.5819 8.2360
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 30.09886 1.63392 18.421 < 2e-16 ***
## hp -0.06823 0.01012 -6.742 1.79e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.863 on 30 degrees of freedom
## Multiple R-squared: 0.6024, Adjusted R-squared: 0.5892
## F-statistic: 45.46 on 1 and 30 DF, p-value: 1.788e-07
Nah dari output nya kita bisa menentukan model regresinya dari bagian “estimate” nya teman-teman, jadi model nya yaitu :
mpg = 30.09 − 0.068hp
Artinya, pada model regresi linear sederhana (mpg ~ hp), horsepower (hp) berpengaruh negatif terhadap efisiensi bahan bakar (mpg). Setiap penambahan 1 unit hp akan menurunkan rata-rata mpg sebesar 0.068. Nilai R2 sebesar 0.60 menunjukkan bahwa sekitar 60 variasi mpg dapat dijelaskan hanya oleh hp. Dengan demikian, masih ada faktor lain yang belum dimasukkan dalam model yang memengaruhi konsumsi bahan bakar.
Sama seperti pada regresi sederhana yang membedakannya terdapat pada penambahan tanda “+” untuk menambahkan variabel yang lain sehingga syntax nya yaitu:
model2 <- lm(mpg ~ hp + wt, data = mtcars) summary(model2)
##
## Call:
## lm(formula = mpg ~ hp + wt, data = mtcars)
##
## 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 ***
## hp -0.03177 0.00903 -3.519 0.00145 **
## wt -3.87783 0.63273 -6.129 1.12e-06 ***
## ---
## 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
Jadi model regresi gandanya yaitu:
mpg = 37.22 − 0.031 hp − 3.87 wt
Ketika ditambahkan variabel berat mobil (model regresi berganda: mpg ~ hp + wt), model mengalami peningkatan yang cukup besar. Nilai R2 naik menjadi 0.83, yang berarti 83 variasi mpg kini dapat dijelaskan oleh kombinasi hp dan wt. Selain itu, standard error residual turun dari 3.86 menjadi 2.59, menandakan prediksi model lebih tepat.
Dalam model berganda ini, baik hp maupun wt sama-sama signifikan memengaruhi mpg. Namun, koefisien hp mengecil (dari −0.068 menjadi −0.032). Hal ini menunjukkan bahwa sebagian pengaruh hp terhadap mpg sebelumnya “tercampur” dengan efek berat mobil. Setelah mengontrol wt, pengaruh murni hp terhadap mpg lebih kecil. Sementara itu, wt memberikan dampak yang cukup besar: setiap kenaikan 1 ton berat mobil menurunkan mpg sekitar 3.88.
Secara keseluruhan, penambahan variabel wt terbukti memperbaiki model, meningkatkan kemampuan prediksi, dan memberikan pemahaman yang lebih akurat mengenai faktor-faktor yang memengaruhi efisiensi bahan bakar mobil.
Uji asumsi adalah serangkaian pemeriksaan yang dilakukan sebelum atau sesudah membangun model statistik (misalnya regresi) untuk memastikan bahwa data yang kita gunakan memenuhi syarat tertentu agar hasil analisis valid, tidak bias, dan dapat dipercaya. Jika asumsi dilanggar, hasil regresi bisa menyesatkan: koefisien bisa bias, uji signifikansi tidak valid, atau prediksi jadi lemah.
Uji normalitas adalah uji statistik yang digunakan untuk mengetahui apakah suatu data berdistribusi normal atau tidak. Distribusi normal sangat penting karena banyak metode analisis statistik (seperti uji-t, ANOVA, regresi linear klasik) mensyaratkan bahwa data residual atau sampel mengikuti distribusi normal. Hipotesis uji nya yaitu:
Uji normalitas error adalah uji statistik yang digunakan untuk mengecek apakah residual (selisih antara nilai aktual dengan nilai prediksi model regresi) mengikuti distribusi normal. Syntax nya menggunakan fungsi residuals() untuk mengambil nilai residual dari model regresi, dan shapiro.test(…) untuk menjalankan uji normalitas Shapiro-Wilk pada data residual.
Syntaxnya yaitu: resid1 <- residuals(model1) shapiro.test(resid1)
##
## Shapiro-Wilk normality test
##
## data: resid1
## W = 0.92337, p-value = 0.02568
Berdasarkan hasil uji normalitas Shapiro-Wilk terhadap residual diperoleh nilai statistik W sebesar 0,92337 dengan p-value sebesar 0,02568. Karena p-value lebih kecil dari taraf signifikansi 0,05, maka hipotesis nol yang menyatakan bahwa residual berdistribusi normal ditolak. Dengan demikian, dapat disimpulkan bahwa residual dari model regresi tidak mengikuti distribusi normal, sehingga asumsi normalitas error pada model ini tidak terpenuhi dan hal ini perlu diperhatikan dalam interpretasi hasil analisis regresi.
Visualisasinya:
Berdasarkan Q-Q Plot, titik-titik residual sebagian besar mengikuti
garis diagonal di bagian tengah, namun pada ekor bawah dan ekor atas
terlihat menyimpang cukup jauh dari garis (data berdistribusi menceng ke
kanan). Hal ini menunjukkan bahwa distribusi residual tidak sepenuhnya
mengikuti distribusi normal, terutama pada bagian ekstrem data yang
cenderung memiliki ekor lebih berat. Dengan demikian, asumsi normalitas
residual pada model regresi ini tidak sepenuhnya terpenuhi, sama seperti
pada hasil uji normalitas errornya.
Syntaxnya sama seperti regresi sederhana yaitu: resid2 <- residuals(model2) shapiro.test(resid2)
##
## Shapiro-Wilk normality test
##
## data: resid2
## W = 0.92792, p-value = 0.03427
Berdasarkan hasil uji normalitas Shapiro-Wilk diperoleh nilai statistik W sebesar 0,92792 dengan p-value sebesar 0,03427. Karena nilai p-value lebih kecil dari taraf signifikansi 0,05, maka hipotesis nol yang menyatakan bahwa residual berdistribusi normal ditolak. Dengan demikian, dapat disimpulkan bahwa residual dari model regresi ganda tidak berdistribusi normal.
Visualisasinya:
Berdasarkan Q-Q Plot residual pada model regresi ganda, terlihat bahwa
titik-titik residual sebagian besar mengikuti garis diagonal pada bagian
tengah, yang mengindikasikan kesesuaian dengan distribusi normal di area
pusat data. Namun, pada bagian ekor bawah dan terutama ekor atas,
titik-titik terlihat menyimpang cukup jauh dari garis diagonal, pola ini
menandakan bahwa distribusi residual cenderung right-skewed (positif
skew). Hal ini menunjukkan bahwa residual tidak sepenuhnya berdistribusi
normal karena terdapat deviasi pada nilai ekstrem (outlier atau heavy
tails). Dengan demikian, asumsi normalitas error pada regresi ganda ini
tidak sepenuhnya terpenuhi.
Uji linearitas adalah uji untuk mengetahui apakah hubungan antara variabel bebas (X) dan variabel terikat (Y) dalam suatu model regresi berbentuk garis lurus (linear) atau tidak. Hipotesis uji nya: H₀: Model regresi bersifat linear.
H₁: Model regresi tidak linear.
Sebelum melakukan uji linearitasnya kita harus instal package “lmtest” agar bisa menggunakan fungsi “resettest()”untuk uji linearitasnya.
Syntaxnya: library(lmtest) resettest(model1)
## Warning: package 'lmtest' was built under R version 4.4.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.4.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## RESET test
##
## data: model1
## RESET = 9.2467, df1 = 2, df2 = 28, p-value = 0.0008255
Berdasarkan hasil uji linearitas dengan Ramsey RESET Test diperoleh nilai statistik RESET sebesar 9,2467 dengan p-value sebesar 0,0008255. Karena nilai p-value lebih kecil dari taraf signifikansi 0,05,dengan demikian dapat disimpulkan bahwa model regresi yang dibangun tidak sepenuhnya linear, sehingga ada indikasi hubungan non-linear antara variabel independen dan dependen. Maka H0 ditolak.
Syntax untuk uji linearitas regresi ganda nya yaitu: resettest(model2)
##
## RESET test
##
## data: model2
## RESET = 7.2384, df1 = 2, df2 = 27, p-value = 0.003041
Hasil uji linearitas dengan Ramsey RESET test pada model2 menunjukkan nilai statistik RESET = 7.2384 dengan p-value = 0.003041 yang lebih kecil dari taraf signifikansi 0,05. Hal ini mengindikasikan bahwa H₀ ditolak, sehingga dapat disimpulkan bahwa model regresi tidak sepenuhnya linear. Dengan demikian, hubungan antara variabel independen dan dependen dalam model2 cenderung bersifat non-linear atau masih ada variabel penting yang belum dimasukkan ke dalam model.
Uji homoskedastisitas adalah pengujian dalam analisis regresi yang bertujuan untuk mengetahui apakah varians dari residual (error) bersifat konstan pada semua nilai variabel independen. Jika varians residual sama (konstan), maka disebut homoskedastisitas, sedangkan jika varians residual berbeda-beda atau menyebar tidak merata, maka disebut heteroskedastisitas. Hipotesis Ujinya:
H₀: residual bersifat homoskedastis (varian konstan).
H₁: residual heteroskedastis (varian tidak konstan).
Untuk melakukan uji Homoskedastisitas kita perlu menginstal package “lmtest”terlebih dahulu untuk menggunakan fungsi bptest (Breucsh-Pagan test). Syntaxnya yaitu: library(lmtest) bptest(model1)
##
## studentized Breusch-Pagan test
##
## data: model1
## BP = 0.049298, df = 1, p-value = 0.8243
Berdasarkan hasil uji homoskedastisitas dengan Breusch-Pagan Test, diperoleh nilai statistik uji BP = 0.049298 dengan p-value = 0.8243. Karena p-value jauh lebih besar daripada taraf signifikansi umum (α = 0.05), maka gagal menolak H₀ yang menyatakan bahwa varians residual bersifat konstan pada seluruh nilai variabel independen, sehingga tidak terdapat indikasi masalah heteroskedastisitas dalam model regresi sederhana ini.
Cara masih sama dengan regresi sederhana jadi syntaxnya yaitu: bptest(model2)
##
## studentized Breusch-Pagan test
##
## data: model2
## BP = 0.88072, df = 2, p-value = 0.6438
Berdasarkan hasil Breusch-Pagan Test pada model regresi ganda, diperoleh nilai statistik uji BP = 0.88072 dengan p-value = 0.6438. Karena p-value lebih besar daripada taraf signifikansi 0.05, maka gagal menolak H₀ yang menyatakan bahwa varians residual adalah konstan. Artinya, model regresi ganda ini memenuhi asumsi homoskedastisitas, sehingga tidak terdapat indikasi masalah heteroskedastisitas.
Uji multikolinearitas adalah pengujian dalam regresi ganda yang bertujuan untuk mengetahui apakah terdapat hubungan (korelasi) yang sangat tinggi antar-variabel independen (bebas). Hipotesis Uji: H₀: Tidak terdapat multikolinearitas dalam model regresi (korelasi antar-variabel independen rendah, VIF < 10). H₁: Terdapat multikolinearitas dalam model regresi (korelasi antar-variabel independen tinggi, VIF ≥ 10).
Sebelum melakukan uji multikolinearitas kita harus menginstal package “car” agar kita bisa menggunakan library “car”(Companion to Applied Regression) nya dilanjutkan dengan menggunakan fungsi vif() untuk mengukur Variance Inflation Factor (uji multikolinearitas).
Syntax yang digunakan yaitu: library(car) # Hitung VIF vif(model2)
## Warning: package 'car' was built under R version 4.4.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.3
## hp wt
## 1.766625 1.766625
Berdasarkan hasil perhitungan Variance Inflation Factor (VIF), diperoleh nilai VIF untuk variabel hp sebesar 1.77 dan untuk variabel wt juga sebesar 1.77. Nilai ini jauh di bawah ambang batas umum (10), bahkan masih rendah jika dibandingkan dengan batas konservatif (5). Hal ini menunjukkan bahwa tidak terdapat masalah multikolinearitas dalam model regresi ganda (gagal menolak H0), artinya variabel independen hp dan wt tidak memiliki korelasi tinggi satu sama lain dan masing-masing dapat memberikan informasi yang unik dalam menjelaskan variabel dependen.
Pada model regresi sederhana, hasil uji normalitas menunjukkan bahwa residual tidak sepenuhnya berdistribusi normal.Uji linearitas menggunakan Ramsey RESET test menghasilkan 0.0008255 < 0,05, yang berarti terdapat indikasi hubungan non-linear. Namun, uji homoskedastisitas dengan Breusch-Pagan test menghasilkan 0.8243 > 0,05 sehingga varians residual dapat dianggap konstan (tidak terdapat heteroskedastisitas). Karena hanya ada satu variabel independen, maka uji multikolinearitas tidak dilakukan. Secara keseluruhan, model regresi sederhana ini memenuhi asumsi homoskedastisitas, namun asumsi normalitas residual dan linearitas.
Pada model regresi ganda, uji normalitas dengan Shapiro-Wilk dan Q-Q Plot menunjukkan bahwa residual tidak sepenuhnya normal. Uji linearitas menggunakan Ramsey RESET test menghasilkan 0.003041 < 0,05, yang berarti terdapat indikasi hubungan non-linear. Sementara itu, uji homoskedastisitas dengan Breusch-Pagan test menunjukkan 0.6438 > 0,05, sehingga asumsi varians residual konstan terpenuhi. Uji multikolinearitas juga kedua variabel memperlihatkan nilai VIF sekitar 1,77 (< 10), yang berarti tidak ada masalah multikolinearitas. Dengan demikian, model regresi ganda ini memenuhi asumsi homoskedastisitas dan bebas dari multikolinearitas, namun terdapat pelanggaran pada asumsi normalitas dan linearitas.
Secara umum, hasil pengujian asumsi klasik pada regresi sederhana maupun ganda menunjukkan bahwa kedua model sama-sama memenuhi asumsi homoskedastisitas dan pada regresi ganda juga bebas dari multikolinearitas. Namun demikian, baik pada regresi sederhana maupun ganda, terdapat indikasi pelanggaran pada asumsi normalitas residual, dan linearitas. Dengan kata lain, model regresi sudah cukup baik dari sisi kestabilan varians dan independensi variabel bebas, tetapi kurang ideal dalam hal distribusi residual dan bentuk hubungan yang seharusnya linear. Upaya yang dapat dilakukan untuk memenuhi uji normalitas yaitu dengan melakukan transformasi data pada variabel dependen, misalnya logaritma, akar kuadrat, atau Box-Cox. Sedangkan untuk memenuhi uji linearitas kita bisa menambahkan polinomial untuk menjelaskan hubungan non linear.