Regresi Linear adalah suatu metode satistik yang digunakan untuk memodelkan hubungan antara 2 variabel yang dimana variabel Y sebagai variabel dependen dan variabel X sebagai variabel independen. Model ini bertujuan untuk menjelaskan hubungan antar variabel dan juga memprediksi nilai Y sebagai variabel dependen berdasarkan X sebagai variabel independen.
Dengan rumus: Y =β0+β1X+ε
Pada kali ini Saya membuat regresi linear sederhana dan dan berganda di R Studio dan melakukan uji asumsi pada masing-masing persamaan regresi. Untuk data yang digunakan yaitu data bawaan dari aplikasi R yaitu mtcars, yang 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(Y) dan “hp” dan “wt” sebagai variabel independen(X) untuk regresi sederhana saya menggunakan variabel “mpg” dan “hp” saja baru untuk regresi linear berganda saya menggunakan ketiga variabel tersebut.
# Load data
data(mtcars)
mtcars
## 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 menjalankan analisis regresi, sebaiknya terlebih dahulu diperiksa nilai korelasi antar variabel. Langkah ini penting karena korelasi dapat memberikan gambaran awal mengenai ada atau tidaknya hubungan linear antara dua variabel, sekaligus arah hubungan tersebut. Apabila nilai korelasi mendekati nol, maka hampir tidak terdapat hubungan linear sehingga regresi linear kurang sesuai digunakan. Sebaliknya, jika korelasi cukup kuat, baik bernilai positif maupun negatif, maka regresi linear dapat dimanfaatkan untuk memodelkan hubungan yang ada. Untuk menghitung korelasi, kita dapat menggunakan syntax berikut:
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:
cat("Korelasi mpg dan hp:", cor(mtcars$mpg, mtcars$hp), "\n\n")
## Korelasi mpg dan hp: -0.7761684
cat("Korelasi mpg dan wt:", cor(mtcars$mpg, mtcars$wt))
## Korelasi mpg dan wt: -0.8676594
Korelasi mpg dengan hp Hasil perhitungan korelasi antara variabel mpg dan hp menghasilkan nilai -0,776. Tanda negatif pada nilai tersebut menunjukkan hubungan yang berlawanan arah, yaitu semakin besar horsepower maka konsumsi bahan bakar per mil galon cenderung menurun. Nilai korelasi yang cukup dekat dengan -1 menandakan hubungan yang kuat, meskipun tidak sepenuhnya sempurna. Dengan demikian, dapat disimpulkan bahwa mobil dengan tenaga mesin lebih tinggi biasanya memiliki efisiensi bahan bakar yang lebih rendah dibandingkan mobil dengan tenaga mesin lebih kecil.
Korelasi mpg dengan wt Korelasi antara mpg dan wt diperoleh sebesar -0,868. Nilai negatif ini mengindikasikan bahwa hubungan kedua variabel bersifat berlawanan, di mana semakin berat mobil, semakin besar pula konsumsi bahan bakarnya atau semakin rendah efisiensinya. Besarnya korelasi yang hampir mendekati -1 menunjukkan adanya hubungan yang sangat kuat. Oleh karena itu, dapat disimpulkan bahwa berat kendaraan berperan signifikan terhadap efisiensi bahan bakar, sehingga mobil dengan bobot lebih besar cenderung lebih boros dibandingkan mobil yang lebih ringan.
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)
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
Dari output nya kita bisa menentukan model regresinya dari bagian “estimate” nya, 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)
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
Setelah variabel berat mobil ditambahkan ke dalam model regresi berganda (mpg ~ hp + wt), terjadi peningkatan performa model yang cukup signifikan. Nilai R² meningkat menjadi 0,83, artinya 83 variasi pada mpg dapat dijelaskan oleh kombinasi hp dan wt. Selain itu, standar error residual turun dari 3,86 menjadi 2,59, yang menunjukkan bahwa hasil prediksi model menjadi lebih akurat.
Dalam model ini, baik hp maupun wt terbukti berpengaruh signifikan terhadap mpg. Namun, koefisien hp berkurang dari −0,068 menjadi −0,032. Hal ini menandakan bahwa sebagian besar pengaruh hp sebelumnya dipengaruhi oleh faktor berat mobil. Setelah mempertimbangkan wt, kontribusi hp terhadap mpg lebih kecil. Sebaliknya, wt memiliki pengaruh yang cukup besar, di mana setiap penambahan 1 ton bobot mobil akan menurunkan mpg sekitar 3,88.
Secara keseluruhan, memasukkan variabel wt ke dalam model berhasil meningkatkan kualitas prediksi serta memberikan gambaran yang lebih jelas mengenai faktor-faktor yang memengaruhi efisiensi bahan bakar kendaraan.
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)
# ambil residual
resid1 <- residuals(model1)
# uji normalitas Shapiro-Wilk
shapiro.test(resid1)
##
## Shapiro-Wilk normality test
##
## data: resid1
## W = 0.92337, p-value = 0.02568
Hasil uji normalitas Shapiro-Wilk terhadap residual menunjukkan nilai statistik W sebesar 0,92337 dengan p-value 0,02568. Karena p-value lebih kecil dari tingkat signifikansi 0,05, maka hipotesis nol yang menyatakan residual berdistribusi normal ditolak. Artinya, residual pada model regresi tidak mengikuti distribusi normal, sehingga asumsi normalitas error tidak terpenuhi dan kondisi ini harus diperhatikan saat melakukan interpretasi hasil analisis regresi.
Visualisasinya:
# plot Q-Q
qqnorm(resid1)
qqline(resid1, col = "maroon")
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)
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:
qqnorm(resid2)
qqline(resid2, col = "lightblue")
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)
library(lmtest)
## 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
resettest(model1)
##
## RESET test
##
## data: model1
## RESET = 9.2467, df1 = 2, df2 = 28, p-value = 0.0008255
Hasil uji linearitas menggunakan Ramsey RESET Test menghasilkan nilai statistik RESET sebesar 9,2467 dengan p-value 0,0008255. Karena p-value lebih kecil dari tingkat signifikansi 0,05, maka hipotesis nol ditolak. Hal ini menunjukkan bahwa model regresi yang dibangun tidak sepenuhnya bersifat linear, sehingga terdapat indikasi adanya hubungan non-linear antara variabel independen dan variabel dependen.
Syntax untuk uji linearitas regresi ganda nya yaitu: resettest(model2)
resettest(model2)
##
## RESET test
##
## data: model2
## RESET = 7.2384, df1 = 2, df2 = 27, p-value = 0.003041
Uji linearitas menggunakan Ramsey RESET Test pada model2 menghasilkan nilai statistik RESET sebesar 7,2384 dengan p-value 0,003041, yang lebih kecil dari tingkat signifikansi 0,05. Kondisi ini menunjukkan bahwa H₀ ditolak, sehingga model regresi tidak sepenuhnya linear. Dengan kata lain, hubungan antara variabel independen dan dependen pada model2 cenderung bersifat non-linear, atau masih terdapat variabel relevan 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)
library(lmtest)
# Model sederhana
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)
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)
library(car)
## 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
vif(model2)
## hp wt
## 1.766625 1.766625
Hasil perhitungan Variance Inflation Factor (VIF) menunjukkan bahwa variabel hp memiliki nilai VIF sebesar 1,77 dan variabel wt juga sebesar 1,77. Nilai tersebut berada jauh di bawah batas umum 10, bahkan masih rendah dibandingkan batas konservatif 5. Dengan demikian, dapat disimpulkan bahwa tidak terdapat masalah multikolinearitas pada model regresi berganda (H₀ tidak ditolak). Artinya, variabel independen hp dan wt tidak saling berkorelasi tinggi dan masing-masing mampu memberikan informasi yang berbeda dalam menjelaskan variabel dependen.
Pada model regresi sederhana, hasil uji normalitas menunjukkan bahwa residual tidak sepenuhnya mengikuti distribusi normal. Uji linearitas dengan Ramsey RESET Test menghasilkan p-value 0,0008255 < 0,05, yang menandakan adanya indikasi hubungan non-linear. Sementara itu, uji homoskedastisitas menggunakan Breusch-Pagan Test memberikan p-value 0,8243 > 0,05, sehingga varians residual dapat dianggap konstan atau tidak terdapat masalah heteroskedastisitas. Karena model hanya melibatkan satu variabel independen, pengujian multikolinearitas tidak diperlukan. Secara keseluruhan, model regresi sederhana ini memenuhi asumsi homoskedastisitas, namun belum memenuhi asumsi normalitas residual maupun linearitas.
Pada model regresi berganda, hasil uji normalitas dengan Shapiro-Wilk maupun Q-Q Plot menunjukkan bahwa residual tidak sepenuhnya mengikuti distribusi normal. Uji linearitas melalui Ramsey RESET Test menghasilkan p-value 0,003041 < 0,05, sehingga terdapat indikasi hubungan non-linear. Sebaliknya, uji homoskedastisitas dengan Breusch-Pagan Test memberikan p-value 0,6438 > 0,05, yang berarti asumsi varians residual konstan terpenuhi. Selain itu, nilai VIF kedua variabel sekitar 1,77 (< 10), menandakan tidak terdapat masalah multikolinearitas. Secara keseluruhan, model regresi berganda ini memenuhi asumsi homoskedastisitas dan bebas dari multikolinearitas, tetapi melanggar asumsi normalitas serta linearitas.
Secara keseluruhan, hasil uji asumsi klasik pada regresi sederhana maupun berganda menunjukkan bahwa kedua model sama-sama memenuhi asumsi homoskedastisitas, dan pada regresi berganda juga tidak ditemukan masalah multikolinearitas. Namun, baik pada regresi sederhana maupun berganda, terdapat pelanggaran terhadap asumsi normalitas residual serta linearitas. Dengan demikian, meskipun model sudah cukup baik dari sisi kestabilan varians dan independensi antar variabel bebas, distribusi residual serta bentuk hubungan linear masih belum terpenuhi dengan baik.
Untuk mengatasi masalah normalitas, dapat dilakukan transformasi pada variabel dependen, misalnya menggunakan logaritma, akar kuadrat, atau Box-Cox. Sementara itu, untuk memperbaiki asumsi linearitas, penambahan komponen polinomial dapat digunakan guna menangkap pola hubungan yang bersifat non-linear.