Tugas Individu Praktikum PSD
Data
Menggunakan dataset yang terdapat di R
, yaitu dataset
mtcars
. Dataset mtcars
merupakan kumpulan data
bawaan di R
yang berisi pengukuran pada 11 atribut berbeda
untuk 32 mobil berbeda. Peubah yang digunakan:
Peubah
y
= mpg (Miles/(US) gallon)
x1
= cyl (Number of cylinders)
x2
= disp (Displacement (cu.in.))
x3
= hp (Gross horsepower)
x4
= wt (Weight (1000 lbs))
Matriks Korelasi
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
df <- data.frame(y,x1,x2,x3,x4)
df %>%
as_tibble() %>%
cor() %>%
ggcorrplot::ggcorrplot(type = "upper", lab = TRUE, lab_size = 2, colors = "pink4") +
theme_minimal() +
labs(title = "Hubungan Antar Peubah",
subtitle = "Peubah respon : Production.",
x = NULL, y = NULL)
Dari eksplorasi menggunakan plot di atas, terlihat bahwa peubah
x1
, x2
, x3
, dan x4
memiliki nilai korelasi yang tinggi terhadap y
.
Peubah-peubah tersebut yang akan digunakan sebagai peubah penjelas dalam
tahapan analisis berikutnya.Peubah responnya adalah y
Regresi Klasik
Pemodelan
##
## Call:
## lm(formula = y ~ x1 + x2 + x3 + x4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.0562 -1.4636 -0.4281 1.2854 5.8269
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 40.82854 2.75747 14.807 1.76e-14 ***
## x1 -1.29332 0.65588 -1.972 0.058947 .
## x2 0.01160 0.01173 0.989 0.331386
## x3 -0.02054 0.01215 -1.691 0.102379
## x4 -3.85390 1.01547 -3.795 0.000759 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.513 on 27 degrees of freedom
## Multiple R-squared: 0.8486, Adjusted R-squared: 0.8262
## F-statistic: 37.84 on 4 and 27 DF, p-value: 1.061e-10
Didapatkan model regresi klasik dengan R-squared sebesar
84.86%. Model ini memiliki p-value < 0.05 artinya cukup bukti untuk
menyatakan bahwa minimal ada satu peubah penjelas yang berpengaruh
signifikan terhadap peubah respon. Berdasarkan hasil uji t, peubah
penjelas yang berpengaruh yaitu peubah x4 (wt)
.
\[Y=40.82854-1.29332X_1+0.01160X_2-0.02054X_3-3.85390X_4\]
Multikolinearitas
## x1 x2 x3 x4
## 6.737707 10.373286 3.405983 4.848016
Metode VIF digunakan untuk mendeteksi multikolinearitas yang
terjadi ketika VIF > 10. Diperoleh bahwa terdapat
multikolinearitas pada peubah x2 (disp)
yang memiliki
VIF = 10.373286 > 10. Sehingga akan dicoba membuat model
tanpa peubah x2
dan model ditangani menggunakan metode
penyusutan, yaitu Regresi Ridge dan Lasso.
Model tanpa x2
##
## Call:
## lm(formula = y ~ x1 + x3 + x4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.9290 -1.5598 -0.5311 1.1850 5.8986
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 38.75179 1.78686 21.687 < 2e-16 ***
## x1 -0.94162 0.55092 -1.709 0.098480 .
## x3 -0.01804 0.01188 -1.519 0.140015
## x4 -3.16697 0.74058 -4.276 0.000199 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.512 on 28 degrees of freedom
## Multiple R-squared: 0.8431, Adjusted R-squared: 0.8263
## F-statistic: 50.17 on 3 and 28 DF, p-value: 2.184e-11
## x1 x3 x4
## 4.757456 3.258481 2.580486
Dugaan Model Regresi Klasik: \[Y=38.75179-0.94162X_1-0.01804X_3-3.16697X_4\]
Diperoleh bahwa VIF > 10 sehingga tidak terdapat
multikolinearitas pada model regresi klasik tanpa peubah
x2 (disp)
.
Pengujian Asumsi
1. Uji Multikolinearitas
## x1 x3 x4
## 4.757456 3.258481 2.580486
Nilai VIF pada kedua peubah penjelas < 10. Sehingga tidak terjadi multikolinearitas pada kedua peubah penjelas tersebut.
2. Sisaan menyebar normal
Dari QQ-Plot tersebut terlihat bahwa titik-titiknya cenderung mengikuti garis kenormalan. Sehingga dapat disimpulkan bahwa sisaan menyebar normal.
3. Nilai harapan sisaan sama dengan nol
\(H_0 : E[\varepsilon]=0\) \(H_1 : E[\varepsilon]\ne0\)
##
## One Sample t-test
##
## data: resid(modelreg2)
## t = 2.9189e-16, df = 31, p-value = 1
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.8605801 0.8605801
## sample estimates:
## mean of x
## 1.231654e-16
\(p-value=1 > 0.1\) (tak tolak \(H_0\)), artinya nilai harapan sisaan sama dengan nol
4. Ragam sisaan homogen
\(H_0: Var[\varepsilon]=\sigma^2I\) \(H_1: Var[\varepsilon]\ne \sigma^2I\)
##
## studentized Breusch-Pagan test
##
## data: modelreg2
## BP = 2.9351, df = 3, p-value = 0.4017
\(p-value=0.4017 > 0.1\) (tolak \(H_0\)), artinya ragam sisaan homogen
5. Deteksi autokorelasi (tidak terjadi autokorelasi)
\(H_0 : Cov[\varepsilon_i,\varepsilon_j]=0\) (tidak terjadi autokorelasi pada sisaan) \(H_0 : Cov[\varepsilon_i,\varepsilon_j]\neq0\) (terjadi autokorelasi pada sisaan)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Durbin-Watson test
##
## data: modelreg2
## DW = 1.6441, p-value = 0.1002
## alternative hypothesis: true autocorrelation is greater than 0
#ACF dan PACF identifikasi autokorelasi
sisaan = modelreg2$residuals
par(mfrow = c(1,2))
acf(sisaan)
pacf(sisaan)
\(p-value=0.1002 > 0.1\) (tak tolak \(H_0\)), artinya tidak terjadi autkorelasi pada sisaan pada taraf 5%.
Seleksi Peubah
Metode Backward
## Start: AIC=62.66
## y ~ x1 + x3 + x4
##
## Df Sum of Sq RSS AIC
## <none> 176.62 62.665
## - x3 1 14.551 191.17 63.198
## - x1 1 18.427 195.05 63.840
## - x4 1 115.354 291.98 76.750
##
## Call:
## lm(formula = y ~ x1 + x3 + x4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.9290 -1.5598 -0.5311 1.1850 5.8986
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 38.75179 1.78686 21.687 < 2e-16 ***
## x1 -0.94162 0.55092 -1.709 0.098480 .
## x3 -0.01804 0.01188 -1.519 0.140015
## x4 -3.16697 0.74058 -4.276 0.000199 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.512 on 28 degrees of freedom
## Multiple R-squared: 0.8431, Adjusted R-squared: 0.8263
## F-statistic: 50.17 on 3 and 28 DF, p-value: 2.184e-11
Metode Forward
## Start: AIC=115.94
## y ~ 1
##
## Df Sum of Sq RSS AIC
## + x4 1 847.73 278.32 73.217
## + x1 1 817.71 308.33 76.494
## + x3 1 678.37 447.67 88.427
## <none> 1126.05 115.943
##
## Step: AIC=73.22
## y ~ x4
##
## Df Sum of Sq RSS AIC
## + x1 1 87.150 191.17 63.198
## + x3 1 83.274 195.05 63.840
## <none> 278.32 73.217
##
## Step: AIC=63.2
## y ~ x4 + x1
##
## Df Sum of Sq RSS AIC
## + x3 1 14.551 176.62 62.665
## <none> 191.17 63.198
##
## Step: AIC=62.66
## y ~ x4 + x1 + x3
##
## Call:
## lm(formula = y ~ x4 + x1 + x3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.9290 -1.5598 -0.5311 1.1850 5.8986
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 38.75179 1.78686 21.687 < 2e-16 ***
## x4 -3.16697 0.74058 -4.276 0.000199 ***
## x1 -0.94162 0.55092 -1.709 0.098480 .
## x3 -0.01804 0.01188 -1.519 0.140015
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.512 on 28 degrees of freedom
## Multiple R-squared: 0.8431, Adjusted R-squared: 0.8263
## F-statistic: 50.17 on 3 and 28 DF, p-value: 2.184e-11
Merode Stepwise
## Start: AIC=115.94
## y ~ 1
##
## Df Sum of Sq RSS AIC
## + x4 1 847.73 278.32 73.217
## + x1 1 817.71 308.33 76.494
## + x3 1 678.37 447.67 88.427
## <none> 1126.05 115.943
##
## Step: AIC=73.22
## y ~ x4
##
## Df Sum of Sq RSS AIC
## + x1 1 87.15 191.17 63.198
## + x3 1 83.27 195.05 63.840
## <none> 278.32 73.217
## - x4 1 847.73 1126.05 115.943
##
## Step: AIC=63.2
## y ~ x4 + x1
##
## Df Sum of Sq RSS AIC
## + x3 1 14.551 176.62 62.665
## <none> 191.17 63.198
## - x1 1 87.150 278.32 73.217
## - x4 1 117.162 308.33 76.494
##
## Step: AIC=62.66
## y ~ x4 + x1 + x3
##
## Df Sum of Sq RSS AIC
## <none> 176.62 62.665
## - x3 1 14.551 191.17 63.198
## - x1 1 18.427 195.05 63.840
## - x4 1 115.354 291.98 76.750
##
## Call:
## lm(formula = y ~ x4 + x1 + x3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.9290 -1.5598 -0.5311 1.1850 5.8986
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 38.75179 1.78686 21.687 < 2e-16 ***
## x4 -3.16697 0.74058 -4.276 0.000199 ***
## x1 -0.94162 0.55092 -1.709 0.098480 .
## x3 -0.01804 0.01188 -1.519 0.140015
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.512 on 28 degrees of freedom
## Multiple R-squared: 0.8431, Adjusted R-squared: 0.8263
## F-statistic: 50.17 on 3 and 28 DF, p-value: 2.184e-11
Seleksi peubah menggunakan metode backward,
forward, dan stepwise hasilnya sama, yaitu menggunakan
peubah x1
, x3
, dan x4
. \[R-square=84.31\%\]
Regresi Ridge (glmnet)
Packages
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
## Loaded glmnet 4.1-8
## [1] "glmnet" "Matrix" "lmtest" "zoo" "lubridate" "forcats"
## [7] "stringr" "dplyr" "purrr" "readr" "tidyr" "tibble"
## [13] "ggplot2" "tidyverse" "stats" "graphics" "grDevices" "utils"
## [19] "datasets" "methods" "base"
Best Model
## 5 x 1 sparse Matrix of class "dgCMatrix"
## s0
## (Intercept) 37.703388902
## x1 -0.921014161
## x2 -0.001918732
## x3 -0.018202005
## x4 -2.735655859
Dugaan Model Regresi Ridge:
\[Y=37.703388902-0.921014161X_1-0.001918732X_2-0.018202005X_3-2.735655859X_4\]
Interpretasi:
Intersep
: nilai rataan peubah respon (mpg
) ketika seluruh peubah penjelas bernilai 0 sebesar 37.703388902X1 (cyl)
: -0.921014161, artinya jikacyl
(Number of cylinders
) bertambah satu satuan, makampg
turun dengan rata-rata sebesar 0.921014161X2 (dips)
: -0.001918732, artinya jikadisp
(Displacement (cu.in.)
) bertambah satu satuan, makampg
turun dengan rata-rata sebesar 0.001918732X3 (hp)
: -0.018202005, artinya jikahp
(Gross horsepower
) bertambah satu satuan, makampg
turun dengan rata-rata sebesar 0.018202005X4 (wt)
: -2.735655859, artinya jikawt
(Weight (1000 lbs)
) bertambah satu satuan, makampg
turun dengan rata-rata sebesar 2.735655859
Fungsi R-Square
Regresi Lasso (glmnet)
Best Model
## 5 x 1 sparse Matrix of class "dgCMatrix"
## s0
## (Intercept) 38.35869594
## x1 -0.93185789
## x2 .
## x3 -0.01715355
## x4 -3.10388967
Tidak ada koefisien yang ditampilkan untuk x2
prediktor
karena regresi lasso mengecilkan koefisien hingga nol. Artinya, peubah
tersebut dikeluarkan sepenuhnya dari model karena tidak cukup
berpengaruh.
Regresi Ridge (lmridge)
##
## Call:
## lmridge.default(formula = mpg ~ cyl + disp + hp + wt, data = mtcars,
## scaling = "centered")
##
##
## Coefficients: for Ridge parameter K= 0
## Estimate Estimate (Sc) StdErr (Sc) t-value (Sc) Pr(>|t|)
## Intercept 40.8285 40.8285 6.1179 6.6736 <2e-16 ***
## cyl -1.2933 -1.2933 0.6441 -2.0081 0.0547 .
## disp 0.0116 0.0116 0.0115 1.0073 0.3227
## hp -0.0205 -0.0205 0.0119 -1.7219 0.0965 .
## wt -3.8539 -3.8539 0.9972 -3.8648 0.0006 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Ridge Summary
## R2 adj-R2 DF ridge F AIC BIC
## 0.84860 0.83240 4.00000 39.24578 61.52554 178.29203
## Ridge minimum MSE= 1.409444 at K= 0
## P-value for F-test ( 4 , 28.00001 ) = 4.268799e-11
## -------------------------------------------------------------------
Membandingkan R-Square
Membandingkan Residual Standard Error
Regresi Ridge
# Prediksi model ridge pada data pelatihan
train_predictionsridge <- predict(bestridge,newx = x)
# Hitung residu (selisih antara prediksi dan nilai sebenarnya)
residualsridge <- y - train_predictionsridge
# Hitung varian residu
dfridge <- length(y) - length(bestridge$beta)
residual_varianceridge <- sum(residualsridge^2) / dfridge
# Hitung RSE
rseridge <- sqrt(residual_varianceridge)
# Tampilkan hasil RSE
print(paste("Residual Standard Error (RSE):",rseridge))
## [1] "Residual Standard Error (RSE): 2.53995779147227"
Regresi Lasso
# Prediksi model Lasso pada data pelatihan
train_predictionsLasso <- predict(bestlasso,newx = x)
# Hitung residu (selisih antara prediksi dan nilai sebenarnya)
residualsLasso <- y - train_predictionsLasso
# Hitung varian residu
dfLasso <- length(y) - length(bestlasso$beta)
residual_varianceLasso <- sum(residualsLasso^2) / dfLasso
# Hitung RSE
rseLasso <- sqrt(residual_varianceLasso)
# Tampilkan hasil RSE
print(paste("Residual Standard Error (RSE):",rseLasso))
## [1] "Residual Standard Error (RSE): 2.515109350162"
Model Regresi Terbaik
Model | R-Square | Residual Standard Error |
---|---|---|
Regresi Klasik | \(84.31 \%\) | \(2.511548\) |
Regresi Ridge | \(83.95\%\) | \(2.53995779147227\) |
Regresi Lasso | \(84.27\%\) | \(2.515109350162\) |
Model Regresi Klasik memiliki R-Square paling besar dan RSE paling kecil. Jadi, model terbaik adalah Model Regresi Klasik.
\[Y=38.75179-0.94162X_1-0.01804X_3-3.16697X_4\]
Interpretasi Model Terbaik
Intersep
: nilai rataan peubah respon (mpg
) ketika seluruh peubah penjelas bernilai 0 sebesar 38.75179X1 (cyl)
: -0.94162, artinya jikacyl
(Number of cylinders
) bertambah satu satuan, makampg
turun dengan rata-rata sebesar 0.94162X3 (hp)
: -0.01804 , artinya jikahp
(Gross horsepower
) bertambah satu satuan, makampg
turun dengan rata-rata sebesar 0.01804X4 (wt)
: -3.16697, artinya jikawt
(Weight (1000 lbs)
) bertambah satu satuan, makampg
turun dengan rata-rata sebesa 3.16697