Regression Model
Background
Pada tutorial kali ini, akan membahas mengenai Regression Model. Apa itu regression model?
Regression Model merupakan salah satu metode dalam machine learning yang dapat digunakan untuk melakukan prediksi dari suatu target variabel yang bersifat numerik. Keunggulan dari regression model adalah selain kita dapat memperoleh hasil akurasi dari prediksi kita, kita juga memperoleh model untuk prediksi data serta dapat melakukan interpretasi dari model yang kita miliki.
Regression Model memiliki beberapa tipe tergantung dari bentuk data yang kita miliki. Regression Model yang paling simple adalah Linear Regression. Linear Regression memiliki pembagian lagi, tergantung prediktor yang kita gunakan, hanya ada 1 prediktor atau lebih dari satu prediktor. Jika satu prediktor maka kita gunakan Simple Linear Regression, namun jika lebih dari satu prediktor maka kita gunakan Multiple Linear Regression.
Linear Regression
Model dari Linear Regression adalah sebagai berikut :
\(\hat{y} = \beta_0 +\beta_1 x_1\)
di mana :
- \(\hat{y}\) : nilai prediksi
- \(\beta_0\) : nilai intercept
- \(\beta_1\) : nilai koefisien regresi unutk \(x_1\)
- \(x_1\) : variabel prediktor
Untuk memperjelas yang akan kita pelajari tentang linear regression, kita akan gunakan data red wines quality. Berdasarkan data red wines quality kita akan melakukan prediksi terhadap nilai quality pada red wines yang ada berdasarkan parameter-parameter atau variabel prediktor yang telah tersedia. Berikut ini isi dari data red wines quality.
wine <- read.csv("C:/Users/Algoritma/Downloads/Wines Quality/winequality-white.csv", sep = ";")
str(wine)## 'data.frame': 4898 obs. of 12 variables:
## $ fixed.acidity : num 7 6.3 8.1 7.2 7.2 8.1 6.2 7 6.3 8.1 ...
## $ volatile.acidity : num 0.27 0.3 0.28 0.23 0.23 0.28 0.32 0.27 0.3 0.22 ...
## $ citric.acid : num 0.36 0.34 0.4 0.32 0.32 0.4 0.16 0.36 0.34 0.43 ...
## $ residual.sugar : num 20.7 1.6 6.9 8.5 8.5 6.9 7 20.7 1.6 1.5 ...
## $ chlorides : num 0.045 0.049 0.05 0.058 0.058 0.05 0.045 0.045 0.049 0.044 ...
## $ free.sulfur.dioxide : num 45 14 30 47 47 30 30 45 14 28 ...
## $ total.sulfur.dioxide: num 170 132 97 186 186 97 136 170 132 129 ...
## $ density : num 1.001 0.994 0.995 0.996 0.996 ...
## $ pH : num 3 3.3 3.26 3.19 3.19 3.26 3.18 3 3.3 3.22 ...
## $ sulphates : num 0.45 0.49 0.44 0.4 0.4 0.44 0.47 0.45 0.49 0.45 ...
## $ alcohol : num 8.8 9.5 10.1 9.9 9.9 10.1 9.6 8.8 9.5 11 ...
## $ quality : int 6 6 6 6 6 6 6 6 6 6 ...
Data wine yang tela diimport berisi 12 variabel, dimana semua variabel bertipe numerik data. Untuk target variabel yang kita gunakan yaitu variabel quality karena disini kita ingin memprediksi besar kualitas dari red wine berdasarkan variabel prediktor yang ada.
Build Model
Dalam melakukan prediksi menggunakan linear regression, kita gunakan function lm() yang ada pada R.
##
## Call:
## lm(formula = quality ~ ., data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.8348 -0.4934 -0.0379 0.4637 3.1143
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.502e+02 1.880e+01 7.987 1.71e-15 ***
## fixed.acidity 6.552e-02 2.087e-02 3.139 0.00171 **
## volatile.acidity -1.863e+00 1.138e-01 -16.373 < 2e-16 ***
## citric.acid 2.209e-02 9.577e-02 0.231 0.81759
## residual.sugar 8.148e-02 7.527e-03 10.825 < 2e-16 ***
## chlorides -2.473e-01 5.465e-01 -0.452 0.65097
## free.sulfur.dioxide 3.733e-03 8.441e-04 4.422 9.99e-06 ***
## total.sulfur.dioxide -2.857e-04 3.781e-04 -0.756 0.44979
## density -1.503e+02 1.907e+01 -7.879 4.04e-15 ***
## pH 6.863e-01 1.054e-01 6.513 8.10e-11 ***
## sulphates 6.315e-01 1.004e-01 6.291 3.44e-10 ***
## alcohol 1.935e-01 2.422e-02 7.988 1.70e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7514 on 4886 degrees of freedom
## Multiple R-squared: 0.2819, Adjusted R-squared: 0.2803
## F-statistic: 174.3 on 11 and 4886 DF, p-value: < 2.2e-16
Berdasarkan hasil analisis regresi yang kita lakukan diatas dengan menggunakan seluruh variabel prediktor, kita akan analisis satu persatu dari modelnya. Untuk melakukan analisis pada model regresi yang telah kita buat, kita perlu melihat apakah model yang kita buat mampu untuk mejelaskan target variabel yang kita miliki.
Uji Overall
Uji yang pertama kita lakukan disebut uji overall. Untuk hipotesis yang digunakan yaitu :
\(H_0\) : Model tidak signifikan (Model belum mampu menjelaskan target variabel)
\(H_1\) : Model signifikan (Model mampu menjelaskan target variabel)
Dalam melakukan uji overall, kita melihat nilai F-statistic yang ditampilkan dalam model dan melihat p-value yang paling bawah. Karena nilai p-value < \(\alpha\) yaitu <2.2e-16 < 0.05 sehingga kita memperoleh keputusan tolak \(H_0\) yang artinya model yang kita buat dapat menjelaskan target variabel yang kita miliki yaitu quality.
R-Squared
Selanjutnya kita akan melihat kebaikan dari model yang telah kita buat. Untuk melihat kebaikan model kita, kita bisa menggunakan nilai Multiple R-Squared (untuk univariat regression) dan Adjusted R-Squared (untuk multiple regression). Nilai Multiple dan Adjusted R-Squared berkisar dari 0 hingga 1. Semakin mendekati 1, maka model yang kita miliki semakin bagus dalam artian variabel prediktor dapat menjelaskan target variabel kita dengan baik.
Nilai adjusted R-Squared yang kita miliki yaitu 0.2803 atau sebesar 28.03% model dapat menjelaskan target variabel sisanya dijelaskan oleh faktor lain.
Error
Karena nilai Multiple R-quared yang kita miliki kecil, kita bisa melihat dari nilai error dari hasil prediksi kita. Untuk melihat nilai error, ada beberapa perhitungan error yang bisa kita gunakan. Salah satunya yaitu RMSE (Root Mean Square Error)
## Loading required package: lattice
##
## Attaching package: 'caret'
## The following object is masked from 'package:purrr':
##
## lift
## [1] 0.7504359
Nilai error yang kita dapatkan cukup kecil, sehingga kita bisa gunakan model regresi yang telah kita buat untuk memprediksi nilai quality selanjutnya.
Uji Parsial
Selanjutnya untuk mengimprove dari model kita agar nilai R-Squared lebih tinggi, kita melakukan uji parsial. Uji parsial adalah untuk melihat apakah dari masing-masing variabel prediktor yang kita gunakan untuk melakukan prediksi berpengaruh signifikan terhadap target variabel yang kita miliki.
Hipotesis yang digunakan adalah sebagai berikut :
\(H_0\) : Variabel prediktor tidak signifikan (Variabel prediktor tidak berpengaruh terhadap nilai dari target variabel)
\(H_1\) : variabel prediktor signifikan (Variabel prediktor berpengaruh terhadap nilai dari target variabel)
Untuk melakukan uji parsial atau melihat apakah berpengaruh atau tidak variabel prediktor yang kita gunakan bisa dilihat pada nilai Pr(>|t|). Jika nilai Pr(>|t|) lebih kecil dari nilai \(\alpha\) = 0.05, maka dapat kita katakan bahwa variabel prediktor tersebut berpengaruh terhadap target variabel kita. Untuk simplenya, kita bisa liat tanda bintang-bintang disamping nilai Pr(>|t|), semakin banyak bintang disana, artinya variabel prediktor tersebut berpengaruh terhadap target variabel.
Ketika ada variabel prediktor yang tidak signifikan, kita dapat membuangnya dengan tidak mengikut sertakan variabel tersebut dalam model. Pada model awal yang kita buat, terdapat 3 variabel prediktor yang tidak signifikan, yaitu citric.acid, chlorides, dan total.sulfur.dioxide. Untuk membuang variabel yang tidak berpengaruh, kita membuangnya satu persatu agar kita memperoleh model yang paling baik.
Stepwise
Untuk mempermudah pengevaluasian variabel prediktor, kita dapat menggunakan metode stepwise. Stepwise merupakan metode yang digunakan untuk evaluasi variabel yang tidak berpengaruh terhadap model. Stepwise memiliki 3 cara dalam mengevaluasi variabel, diantaranya yaitu :
- backward : Mengevaluasi model dengan cara memasukkan seluruh variabel prediktor lalu mengurangi satu persatu variabel prediktor yang tidak berpengaruh hingga memperoleh nilai AIC (Akaike Information Criterion) terkecil/R-Squared terbesar
- forward : Mengevaluasi model dengan cara memasukkan satu persatu variabel yang dirasa berpengaruh terhadap target variabel hingga memperoleh nilai AIC terkecil/R-Squared terbesar
- both : Mengevaluasi model dengan cara menambahkan dan mengurangi variabel-variabel yang dirasa berpengaruh dan tidak berpengaruh terhadap target variabel
Untuk melakukan analisis stepwise, kita membuat model sebagai berikut.
Untuk melakukan stepwise dengan cara backward, kita dapat menggunakan model_all.
## Start: AIC=-2788.44
## quality ~ fixed.acidity + volatile.acidity + citric.acid + residual.sugar +
## chlorides + free.sulfur.dioxide + total.sulfur.dioxide +
## density + pH + sulphates + alcohol
##
## Df Sum of Sq RSS AIC
## - citric.acid 1 0.030 2758.4 -2790.4
## - chlorides 1 0.116 2758.4 -2790.2
## - total.sulfur.dioxide 1 0.323 2758.7 -2789.9
## <none> 2758.3 -2788.4
## - fixed.acidity 1 5.562 2763.9 -2780.6
## - free.sulfur.dioxide 1 11.039 2769.4 -2770.9
## - sulphates 1 22.339 2780.7 -2750.9
## - pH 1 23.948 2782.3 -2748.1
## - density 1 35.044 2793.4 -2728.6
## - alcohol 1 36.020 2794.3 -2726.9
## - residual.sugar 1 66.152 2824.5 -2674.4
## - volatile.acidity 1 151.345 2909.7 -2528.8
##
## Step: AIC=-2790.39
## quality ~ fixed.acidity + volatile.acidity + residual.sugar +
## chlorides + free.sulfur.dioxide + total.sulfur.dioxide +
## density + pH + sulphates + alcohol
##
## Df Sum of Sq RSS AIC
## - chlorides 1 0.105 2758.5 -2792.2
## - total.sulfur.dioxide 1 0.315 2758.7 -2791.8
## <none> 2758.4 -2790.4
## - fixed.acidity 1 5.749 2764.1 -2782.2
## - free.sulfur.dioxide 1 11.096 2769.4 -2772.7
## - sulphates 1 22.444 2780.8 -2752.7
## - pH 1 23.971 2782.3 -2750.0
## - density 1 35.066 2793.4 -2730.5
## - alcohol 1 36.540 2794.9 -2727.9
## - residual.sugar 1 66.160 2824.5 -2676.3
## - volatile.acidity 1 156.805 2915.2 -2521.6
##
## Step: AIC=-2792.2
## quality ~ fixed.acidity + volatile.acidity + residual.sugar +
## free.sulfur.dioxide + total.sulfur.dioxide + density + pH +
## sulphates + alcohol
##
## Df Sum of Sq RSS AIC
## - total.sulfur.dioxide 1 0.320 2758.8 -2793.6
## <none> 2758.5 -2792.2
## - fixed.acidity 1 6.157 2764.6 -2783.3
## - free.sulfur.dioxide 1 11.036 2769.5 -2774.7
## - sulphates 1 22.570 2781.0 -2754.3
## - pH 1 25.297 2783.8 -2749.5
## - alcohol 1 36.536 2795.0 -2729.8
## - density 1 36.823 2795.3 -2729.2
## - residual.sugar 1 70.134 2828.6 -2671.2
## - volatile.acidity 1 158.543 2917.0 -2520.5
##
## Step: AIC=-2793.63
## quality ~ fixed.acidity + volatile.acidity + residual.sugar +
## free.sulfur.dioxide + density + pH + sulphates + alcohol
##
## Df Sum of Sq RSS AIC
## <none> 2758.8 -2793.6
## - fixed.acidity 1 6.270 2765.1 -2784.5
## - free.sulfur.dioxide 1 13.826 2772.6 -2771.2
## - sulphates 1 22.303 2781.1 -2756.2
## - pH 1 25.460 2784.2 -2750.6
## - alcohol 1 36.300 2795.1 -2731.6
## - density 1 39.920 2798.7 -2725.3
## - residual.sugar 1 72.942 2831.7 -2667.8
## - volatile.acidity 1 167.753 2926.5 -2506.5
##
## Call:
## lm(formula = quality ~ fixed.acidity + volatile.acidity + residual.sugar +
## free.sulfur.dioxide + density + pH + sulphates + alcohol,
## data = wine)
##
## Coefficients:
## (Intercept) fixed.acidity volatile.acidity
## 1.541e+02 6.810e-02 -1.888e+00
## residual.sugar free.sulfur.dioxide density
## 8.285e-02 3.349e-03 -1.543e+02
## pH sulphates alcohol
## 6.942e-01 6.285e-01 1.932e-01
Dari hasil stepwise menggunakan backward, kita memperoleh model yang optimal menurutnya yaitu sebagai berikut.
lm(formula = quality ~ fixed.acidity + volatile.acidity + residual.sugar + free.sulfur.dioxide + density + pH + sulphates + alcohol, data = wine)
backward <- lm(formula = quality ~ fixed.acidity + volatile.acidity + residual.sugar +
free.sulfur.dioxide + density + pH + sulphates + alcohol, data = wine)
summary(backward)##
## Call:
## lm(formula = quality ~ fixed.acidity + volatile.acidity + residual.sugar +
## free.sulfur.dioxide + density + pH + sulphates + alcohol,
## data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.8246 -0.4938 -0.0396 0.4660 3.1208
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.541e+02 1.810e+01 8.514 < 2e-16 ***
## fixed.acidity 6.810e-02 2.043e-02 3.333 0.000864 ***
## volatile.acidity -1.888e+00 1.095e-01 -17.242 < 2e-16 ***
## residual.sugar 8.285e-02 7.287e-03 11.370 < 2e-16 ***
## free.sulfur.dioxide 3.349e-03 6.766e-04 4.950 7.67e-07 ***
## density -1.543e+02 1.834e+01 -8.411 < 2e-16 ***
## pH 6.942e-01 1.034e-01 6.717 2.07e-11 ***
## sulphates 6.285e-01 9.997e-02 6.287 3.52e-10 ***
## alcohol 1.932e-01 2.408e-02 8.021 1.31e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7512 on 4889 degrees of freedom
## Multiple R-squared: 0.2818, Adjusted R-squared: 0.2806
## F-statistic: 239.7 on 8 and 4889 DF, p-value: < 2.2e-16
Jika kita menggunakan metode forward untuk stepwise adalah sebagai berikut.
## Start: AIC=-1188.69
## quality ~ 1
##
## Df Sum of Sq RSS AIC
## + alcohol 1 728.73 3112.3 -2217.1
## + density 1 362.30 3478.7 -1672.0
## + chlorides 1 169.28 3671.7 -1407.5
## + volatile.acidity 1 145.64 3695.4 -1376.0
## + total.sulfur.dioxide 1 117.28 3723.7 -1338.6
## + fixed.acidity 1 49.62 3791.4 -1250.4
## + pH 1 37.97 3803.0 -1235.3
## + residual.sugar 1 36.57 3804.4 -1233.5
## + sulphates 1 11.07 3829.9 -1200.8
## <none> 3841.0 -1188.7
## + citric.acid 1 0.33 3840.7 -1187.1
## + free.sulfur.dioxide 1 0.26 3840.7 -1187.0
##
## Step: AIC=-2217.14
## quality ~ alcohol
##
## Df Sum of Sq RSS AIC
## + volatile.acidity 1 193.992 2918.3 -2530.4
## + free.sulfur.dioxide 1 56.181 3056.1 -2304.4
## + residual.sugar 1 46.959 3065.3 -2289.6
## + fixed.acidity 1 14.509 3097.8 -2238.0
## + sulphates 1 14.424 3097.8 -2237.9
## + chlorides 1 12.419 3099.8 -2234.7
## + density 1 10.484 3101.8 -2231.7
## + pH 1 8.442 3103.8 -2228.4
## + citric.acid 1 2.184 3110.1 -2218.6
## + total.sulfur.dioxide 1 2.079 3110.2 -2218.4
## <none> 3112.3 -2217.1
##
## Step: AIC=-2530.37
## quality ~ alcohol + volatile.acidity
##
## Df Sum of Sq RSS AIC
## + residual.sugar 1 70.271 2848.0 -2647.8
## + free.sulfur.dioxide 1 40.484 2877.8 -2596.8
## + density 1 25.639 2892.6 -2571.6
## + fixed.acidity 1 16.109 2902.2 -2555.5
## + total.sulfur.dioxide 1 11.165 2907.1 -2547.2
## + sulphates 1 11.006 2907.3 -2546.9
## + pH 1 5.489 2912.8 -2537.6
## + chlorides 1 4.473 2913.8 -2535.9
## <none> 2918.3 -2530.4
## + citric.acid 1 0.301 2918.0 -2528.9
##
## Step: AIC=-2647.76
## quality ~ alcohol + volatile.acidity + residual.sugar
##
## Df Sum of Sq RSS AIC
## + free.sulfur.dioxide 1 21.0028 2827.0 -2682.0
## + density 1 20.8069 2827.2 -2681.7
## + fixed.acidity 1 19.0015 2829.0 -2678.5
## + pH 1 13.5270 2834.5 -2669.1
## + sulphates 1 13.0677 2834.9 -2668.3
## + total.sulfur.dioxide 1 1.9014 2846.1 -2649.0
## + chlorides 1 1.6387 2846.3 -2648.6
## + citric.acid 1 1.5879 2846.4 -2648.5
## <none> 2848.0 -2647.8
##
## Step: AIC=-2682.01
## quality ~ alcohol + volatile.acidity + residual.sugar + free.sulfur.dioxide
##
## Df Sum of Sq RSS AIC
## + density 1 19.0411 2807.9 -2713.1
## + fixed.acidity 1 15.4963 2811.5 -2706.9
## + pH 1 11.4714 2815.5 -2699.9
## + sulphates 1 11.0877 2815.9 -2699.3
## + total.sulfur.dioxide 1 2.4096 2824.6 -2684.2
## + chlorides 1 2.2177 2824.8 -2683.8
## + citric.acid 1 2.2107 2824.8 -2683.8
## <none> 2827.0 -2682.0
##
## Step: AIC=-2713.11
## quality ~ alcohol + volatile.acidity + residual.sugar + free.sulfur.dioxide +
## density
##
## Df Sum of Sq RSS AIC
## + pH 1 23.9315 2784.0 -2753.0
## + sulphates 1 22.2233 2785.7 -2750.0
## + fixed.acidity 1 4.1638 2803.8 -2718.4
## + chlorides 1 1.4137 2806.5 -2713.6
## <none> 2807.9 -2713.1
## + citric.acid 1 0.4310 2807.5 -2711.9
## + total.sulfur.dioxide 1 0.0843 2807.9 -2711.3
##
## Step: AIC=-2753.04
## quality ~ alcohol + volatile.acidity + residual.sugar + free.sulfur.dioxide +
## density + pH
##
## Df Sum of Sq RSS AIC
## + sulphates 1 18.9648 2765.1 -2784.5
## + fixed.acidity 1 2.9318 2781.1 -2756.2
## <none> 2784.0 -2753.0
## + chlorides 1 0.5578 2783.5 -2752.0
## + citric.acid 1 0.2232 2783.8 -2751.4
## + total.sulfur.dioxide 1 0.0992 2783.9 -2751.2
##
## Step: AIC=-2784.51
## quality ~ alcohol + volatile.acidity + residual.sugar + free.sulfur.dioxide +
## density + pH + sulphates
##
## Df Sum of Sq RSS AIC
## + fixed.acidity 1 6.2700 2758.8 -2793.6
## <none> 2765.1 -2784.5
## + chlorides 1 0.5311 2764.5 -2783.5
## + total.sulfur.dioxide 1 0.4328 2764.6 -2783.3
## + citric.acid 1 0.1415 2764.9 -2782.8
##
## Step: AIC=-2793.63
## quality ~ alcohol + volatile.acidity + residual.sugar + free.sulfur.dioxide +
## density + pH + sulphates + fixed.acidity
##
## Df Sum of Sq RSS AIC
## <none> 2758.8 -2793.6
## + total.sulfur.dioxide 1 0.32024 2758.5 -2792.2
## + chlorides 1 0.10967 2758.7 -2791.8
## + citric.acid 1 0.01298 2758.8 -2791.7
##
## Call:
## lm(formula = quality ~ alcohol + volatile.acidity + residual.sugar +
## free.sulfur.dioxide + density + pH + sulphates + fixed.acidity,
## data = wine)
##
## Coefficients:
## (Intercept) alcohol volatile.acidity
## 1.541e+02 1.932e-01 -1.888e+00
## residual.sugar free.sulfur.dioxide density
## 8.285e-02 3.349e-03 -1.543e+02
## pH sulphates fixed.acidity
## 6.942e-01 6.285e-01 6.810e-02
Untuk model yang terbentuk pada metode forward sebagai berikut :
lm(formula = quality ~ alcohol + volatile.acidity + residual.sugar + free.sulfur.dioxide + density + pH + sulphates + fixed.acidity, data = wine)
forward <- lm(formula = quality ~ alcohol + volatile.acidity + residual.sugar +
free.sulfur.dioxide + density + pH + sulphates + fixed.acidity,
data = wine)
summary(forward)##
## Call:
## lm(formula = quality ~ alcohol + volatile.acidity + residual.sugar +
## free.sulfur.dioxide + density + pH + sulphates + fixed.acidity,
## data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.8246 -0.4938 -0.0396 0.4660 3.1208
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.541e+02 1.810e+01 8.514 < 2e-16 ***
## alcohol 1.932e-01 2.408e-02 8.021 1.31e-15 ***
## volatile.acidity -1.888e+00 1.095e-01 -17.242 < 2e-16 ***
## residual.sugar 8.285e-02 7.287e-03 11.370 < 2e-16 ***
## free.sulfur.dioxide 3.349e-03 6.766e-04 4.950 7.67e-07 ***
## density -1.543e+02 1.834e+01 -8.411 < 2e-16 ***
## pH 6.942e-01 1.034e-01 6.717 2.07e-11 ***
## sulphates 6.285e-01 9.997e-02 6.287 3.52e-10 ***
## fixed.acidity 6.810e-02 2.043e-02 3.333 0.000864 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7512 on 4889 degrees of freedom
## Multiple R-squared: 0.2818, Adjusted R-squared: 0.2806
## F-statistic: 239.7 on 8 and 4889 DF, p-value: < 2.2e-16
Dari hasil stepwise menggunakan metode forward memperlihatkan hasil akurasi atau R-squared yang sama dengan backward. Berdasarkan business wise, kita gunakan model yang kita peroleh berdasarkan hasil dari stepwise yang telah kita bentuk.
Assumtional Checking
Dalam linear regression, kita memiliki asumsi-asumsi yang harus terpenuhi. Beberapa asumsi yang harus terpenuhi yaitu :
- Linearity : memiliki hubungan linear antara variabel prediktor dengan target variabel
- Residual Normal : eror berdistribusi normal
- No-Heteroskedastisity : erornya tidak berpola dan homogen
- No-Multikolinearity : tidak ada multikolinearitas antar variabel independen
Untuk melakukan checking asumsi diatas, kita lakukan langkah berikut.
Linearity
Untuk melakukan pengecekan linearity, kita bisa menggunakan nilai korelasi antar variabel. Ketika kita memiliki data yang tidak linear, kita bisa mengatasinya dengan melakukan transformasi terhadap datanya menggunakan log() atau exp().
Normality
Untuk melakukan pengecekan bahwa residual dari model yang telah kita buat itu berdistribusi normal atau tidak, kita bisa menggunakan uji shapiro test atau bisa juga dengan menggunakan histogram.
Uji hipotesis dalam normality yaitu : \(H_0\) : residual berdistribusi normal \(H_1\) : residual tidak berdistribusi normal
##
## Shapiro-Wilk normality test
##
## data: forward$residuals
## W = 0.9894, p-value < 2.2e-16
Berdasarkan hasil histogram dapat kita ketahui bahwa residual berdistribusi normal.
No-Heteroskedastisity
Untuk melakukan pengecekan no-heteroskedastisity, kita bisa melihat persebaran dari resisual data kita atau bisa menggunakan Breuche Pagan test.
uji hipotesisnya adalah sebagai berikut :
- \(H_0\): error tidak memiliki pola
- \(H_1\): errornya berpola
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## studentized Breusch-Pagan test
##
## data: forward
## BP = 86.194, df = 8, p-value = 2.748e-15
No-Multikolinearity
Untuk melihat bahwa data yang kita gunakan tidak terdapat multikolinearitas, kita bisa menggunakan nilai VIF, dimana ketika nilai VIF < 10, maka data yang kita gunakan tidak terdapat multikolinearitas.
## alcohol volatile.acidity residual.sugar
## 7.622843 1.057310 11.854253
## free.sulfur.dioxide density pH
## 1.149027 26.123154 2.113597
## sulphates fixed.acidity
## 1.129688 2.579640
Untuk variabel residual.sugar dan density memiliki nilai VIF lebih besar dari 10, sehingga kita bisa tidak menggunakan kedua variabel tersebut dalam pengujian.
model_fix <- lm(formula = quality ~ alcohol + volatile.acidity +
free.sulfur.dioxide + pH + sulphates + fixed.acidity, data = wine)
summary(model_fix)##
## Call:
## lm(formula = quality ~ alcohol + volatile.acidity + free.sulfur.dioxide +
## pH + sulphates + fixed.acidity, data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.3201 -0.5001 -0.0482 0.4780 3.3200
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.787519 0.328659 8.481 < 2e-16 ***
## alcohol 0.337236 0.009291 36.297 < 2e-16 ***
## volatile.acidity -1.900031 0.109179 -17.403 < 2e-16 ***
## free.sulfur.dioxide 0.005154 0.000669 7.704 1.59e-14 ***
## pH 0.032128 0.081416 0.395 0.693139
## sulphates 0.360709 0.097264 3.709 0.000211 ***
## fixed.acidity -0.056576 0.014424 -3.922 8.89e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7643 on 4891 degrees of freedom
## Multiple R-squared: 0.2562, Adjusted R-squared: 0.2553
## F-statistic: 280.8 on 6 and 4891 DF, p-value: < 2.2e-16
## alcohol volatile.acidity free.sulfur.dioxide
## 1.095951 1.015258 1.085124
## pH sulphates fixed.acidity
## 1.267060 1.032998 1.242129
##
## Shapiro-Wilk normality test
##
## data: model_fix$residual
## W = 0.98846, p-value < 2.2e-16
##
## studentized Breusch-Pagan test
##
## data: model_fix
## BP = 57.888, df = 6, p-value = 1.207e-10
Conclusion
Berdasarkan dari hasil analisis regresi yang dilakukan, karena setelah di cek asumsi banyak asumsi yang tidak terpenuhi. Terkadang ketika dalam bisnis, asumsi tidak terlalu dihiraukan, namun ada baiknya digunakan pengecekan asumsi.
Hasil dari model regresi yang terbentuk adalah :
\(\hat{y} = 2.787519 + 0.337236 alcohol -1.900031 volatile.acidity + 0.005154 free.sulfur\) \(+ 0.032128 pH +0.360709 sulphates - 0.056576 fix.acidity\)
Arti dari model tersebut adalah ketika bertambah satu satuan untuk nilai alcohol, maka akan menaikkan quality dari red wine. Sedangkan ketika bertambah satu satuan nilai volatile.acidity, maka akan menurunkan tingkat quality dari red wine.