Praktikum 8 Analisis Regresi
Package
## Warning: package 'readxl' was built under R version 4.5.2
## Warning: package 'dplyr' was built under R version 4.5.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Warning: package 'car' was built under R version 4.5.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.2
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
## Warning: package 'olsrr' was built under R version 4.5.2
##
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
##
## rivers
## Warning: package 'MASS' was built under R version 4.5.3
##
## Attaching package: 'MASS'
## The following object is masked from 'package:olsrr':
##
## cement
## The following object is masked from 'package:dplyr':
##
## select
## Warning: package 'glmnet' was built under R version 4.5.3
## Loading required package: Matrix
## Loaded glmnet 5.0
Data
Data yang digunakan memiliki 38 amatan berupa Provinsi di Indonesia dengan 1 peubah respon yaitu Angka Harapan Hidup (AHH) dan 5 peubah penjelas, yaitu Rata-rata Lama Sekolah (RLS), PDRB per kapita ADHB (PDRB), Jumlah Penduduk (JP), Tingkat Pengangguran Terbuka (TPT), dan Persentase Penduduk Miskin (PPM).
## # A tibble: 38 × 9
## Provinsi Angka Harapan Hidup …¹ Persentase Angkatan …² Rata-rata Lama Sekol…³
## <chr> <dbl> <dbl> <dbl>
## 1 ACEH 141. 65.1 9.64
## 2 SUMATER… 141. 71.4 9.93
## 3 SUMATER… 141. 70.3 9.44
## 4 RIAU 145. 66.3 9.43
## 5 JAMBI 144. 68.9 8.9
## 6 SUMATER… 142. 70.8 8.57
## 7 BENGKULU 140. 71.7 9.04
## 8 LAMPUNG 143. 70.4 8.36
## 9 KEP. BA… 143. 68.9 8.33
## 10 KEP. RI… 143. 69.2 10.5
## # ℹ 28 more rows
## # ℹ abbreviated names: ¹`Angka Harapan Hidup (tahun)`,
## # ²`Persentase Angkatan Kerja Terhadap Penduduk Usia Kerja (TPAK) (%)`,
## # ³`Rata-rata Lama Sekolah (tahun)`
## # ℹ 5 more variables: `PDRB per kapita ADHB (Ribu Rp)` <dbl>,
## # `Jumlah Penduduk (Ribu Jiwa)` <dbl>,
## # `Tingkat Pengangguran Terbuka (%)` <dbl>, …
data <- select(data, -Provinsi, -`Persentase Angkatan Kerja Terhadap Penduduk Usia Kerja (TPAK) (%)`, -`Rumah Tangga Yang Memiliki Akses Air Minum Layak (%)`)
# menghapus peubah yang tidak akan digunakandata <- rename(data,
Y = `Angka Harapan Hidup (tahun)`,
X1 = `Rata-rata Lama Sekolah (tahun)`,
X2 = `PDRB per kapita ADHB (Ribu Rp)`,
X3 = `Jumlah Penduduk (Ribu Jiwa)`,
X4 = `Tingkat Pengangguran Terbuka (%)`,
X5 = `Persentase Penduduk Miskin (%)`)
# mengganti nama peubah agar lebih mudah digunakanUji F Parsial dan Sekuensial
F Sekuensial
# Model 1: tanpa prediktor
m1 <- lm( Y ~ 1, data = data)
# Model 2: tambah X1
m2 <- lm(Y ~ X1, data = data)
# Model 3: tambah X2
m3 <- lm(Y ~ X1 + X2, data = data)
# Model 4 : tambah X3
m4 <- lm(Y ~ X1 + X2 + X3, data = data)
# Model 5 : tambah X4
m5 <- lm(Y ~ X1 + X2 + X3 + X4, data = data)
# Model 6 : tambah X5
m6 <- lm(Y ~ X1 + X2 + X3 + X4 + X5, data = data)## Analysis of Variance Table
##
## Model 1: Y ~ 1
## Model 2: Y ~ X1
## Model 3: Y ~ X1 + X2
## Model 4: Y ~ X1 + X2 + X3
## Model 5: Y ~ X1 + X2 + X3 + X4
## Model 6: Y ~ X1 + X2 + X3 + X4 + X5
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 37 1050.18
## 2 36 742.02 1 308.156 28.6166 7.187e-06 ***
## 3 35 718.07 1 23.952 2.2243 0.145651
## 4 34 482.73 1 235.341 21.8546 5.100e-05 ***
## 5 33 447.43 1 35.299 3.2780 0.079612 .
## 6 32 344.59 1 102.838 9.5499 0.004119 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Variabel X1 berpengaruh signifikan terhadap Y (p < 0.001). Setelah variabel X1 dimasukkan, variabel X2 tidak memberikan tambahan pengaruh yang signifikan (p = 0.146). Variabel X3 kemudian memberikan pengaruh tambahan yang signifikan setelah variabel X1 dan X2 dimasukkan (p < 0.001). Akan tetapi, variabel X4 tidak memberikan pengaruh tambahan yang signifikan (p = 0.080). Terakhir, variabel X5 memberikan pengaruh tambahan yang signifikan setelah variabel X1, X2, X3, dan X4 dimasukkan ke dalam model (p < 0.01).
Berdasarkan hasil tersebut, model yang cukup baik adalah Model 2 (Y ~ X1) dan Model 4 (Y ~ X1 + X2 + X3), karena keduanya menunjukkan peningkatan kemampuan model yang signifikan. Pemilihan model akhir dapat disesuaikan dengan tujuan analisis. Model 2 lebih sederhana dan mudah diinterpretasikan, sedangkan Model 4 memberikan informasi yang lebih lengkap dengan melibatkan lebih banyak variabel penjelas.
F Parsial
Akan diuji apakah variabel X3 signifikan setelah semua variabel lain dikontrol
# full model
full <- lm(Y ~ X1 + X2 + X3 + X4 + X5, data = data)
# reduced (tanpa X3)
red <- lm(Y ~ X1 + X2 + X4 + X5, data = data)
anova(red, full)## Analysis of Variance Table
##
## Model 1: Y ~ X1 + X2 + X4 + X5
## Model 2: Y ~ X1 + X2 + X3 + X4 + X5
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 33 496.79
## 2 32 344.59 1 152.2 14.133 0.0006849 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Variabel X3 berpengaruh signifikan terhadap Y setelah mengontrol X1, X2, X4, dan X5 (p < 0.05).
Pemodelan Awal
##
## Call:
## lm(formula = Y ~ ., data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.9260 -2.0078 0.1767 1.7943 9.4791
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.361e+02 6.879e+00 19.780 < 2e-16 ***
## X1 9.977e-01 7.748e-01 1.288 0.207062
## X2 1.790e-05 9.770e-06 1.832 0.076320 .
## X3 2.010e-04 5.346e-05 3.759 0.000685 ***
## X4 -6.226e-01 4.994e-01 -1.247 0.221545
## X5 -3.599e-01 1.165e-01 -3.090 0.004119 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.282 on 32 degrees of freedom
## Multiple R-squared: 0.6719, Adjusted R-squared: 0.6206
## F-statistic: 13.1 on 5 and 32 DF, p-value: 5.592e-07
Persamaan yang terbentuk dari seluruh peubah tersebut menghasilkan nilai koefisien determinasi sebesar 62.06% dengan 2 parameter yang tidak signifikan yaitu peubah X1 dan X4. Selanjutnya akan diperiksa ada tidaknya multikolinearitas pada model
\(\hat{AHH} = 136.1+0.9977RLS+0.00001790PDRB+0.000201JP-0.6226TPT-0.3599PPM\)
Pemeriksaan Multikolinieritas
## X1 X2 X3 X4 X5
## 3.109331 1.268760 1.260777 1.713793 2.121326
Hasil pemeriksaan nilai VIF menunjukkan semua peubah penjelas memiliki VIF<10 sehingga tidak ada multikolinearitas
Penyeleksian Peubah
Best Subset
## Best Subsets Regression
## -----------------------------
## Model Index Predictors
## -----------------------------
## 1 X5
## 2 X3 X5
## 3 X2 X3 X5
## 4 X1 X2 X3 X5
## 5 X1 X2 X3 X4 X5
## -----------------------------
##
## Subsets Regression Summary
## -----------------------------------------------------------------------------------------------------------------------------------
## Adj. Pred
## Model R-Square R-Square R-Square C(p) AIC SBIC SBC MSEP FPE HSP APC
## -----------------------------------------------------------------------------------------------------------------------------------
## 1 0.4930 0.4790 0.4494 15.4412 214.1524 105.2803 219.0652 562.0274 15.5674 0.4225 0.5633
## 2 0.5982 0.5752 0.5426 7.1852 207.3180 99.2954 213.8684 458.5432 13.0079 0.3546 0.4707
## 3 0.6503 0.6194 0.5804 4.1063 204.0430 97.0909 212.2309 411.2041 11.9392 0.3273 0.4320
## 4 0.6559 0.6142 0.5457 5.5543 205.4230 98.8734 215.2485 417.1915 12.3900 0.3422 0.4483
## 5 0.6719 0.6206 0.5367 6.0000 205.6206 99.9610 217.0837 410.7003 12.4687 0.3474 0.4512
## -----------------------------------------------------------------------------------------------------------------------------------
## AIC: Akaike Information Criteria
## SBIC: Sawa's Bayesian Information Criteria
## SBC: Schwarz Bayesian Criteria
## MSEP: Estimated error of prediction, assuming multivariate normality
## FPE: Final Prediction Error
## HSP: Hocking's Sp
## APC: Amemiya Prediction Criteria
Backward, Forward, dan Stepwise
null<-lm(Y ~ 1, data=data)
full<-lm(Y ~ ., data=data)
step(full, scope=list(lower=null, upper=full),data=data, direction='backward', trace=0)##
## Call:
## lm(formula = Y ~ X2 + X3 + X5, data = data)
##
## Coefficients:
## (Intercept) X2 X3 X5
## 1.431e+02 2.064e-05 1.704e-04 -4.415e-01
##
## Call:
## lm(formula = Y ~ X5 + X3 + X2, data = data)
##
## Coefficients:
## (Intercept) X5 X3 X2
## 1.431e+02 -4.415e-01 1.704e-04 2.064e-05
##
## Call:
## lm(formula = Y ~ X5 + X3 + X2, data = data)
##
## Coefficients:
## (Intercept) X5 X3 X2
## 1.431e+02 -4.415e-01 1.704e-04 2.064e-05
Hasil penyeleksian melalui best subset, backward, forward, dan stepwise menghasilkan model yang sama, yaitu dengan 3 peubah penjelas (PDRB, JP, dan PPM)
##
## Call:
## lm(formula = Y ~ X2 + X3 + X5, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.6192 -1.9644 0.2728 1.7115 11.0680
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.431e+02 1.624e+00 88.099 < 2e-16 ***
## X2 2.064e-05 9.171e-06 2.250 0.03102 *
## X3 1.704e-04 4.910e-05 3.469 0.00144 **
## X5 -4.415e-01 8.609e-02 -5.129 1.17e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.287 on 34 degrees of freedom
## Multiple R-squared: 0.6503, Adjusted R-squared: 0.6194
## F-statistic: 21.07 on 3 and 34 DF, p-value: 6.813e-08
## [1] 204.043
## [1] 212.2309
Model yang dihasilkan memiliki 3 peubah penjelas yang signifikan pada taraf nyata 5% dengan nilai adjusted r square sebesar 61.94% yang lebih kecil daripada model dengan semua peubah. Nilai AIC pada model ini adalah 204.043 dan BIC sebesar 212.2309
\[\hat{AHH} = 143.1+0.00002064PDRB+0.0001704JP-0.4415PPM\]
Jika pada metode seleksi peubah yang digunakan menghasilkan model yang berbeda, maka bisa dibandingkan nilai MSE, adjusted R-square, AIC, BIC, dan kriteria lainnya.
Shrinkage Methods
Ridge
x <- as.matrix(data[, -1])
y <- data$Y
rid <- cv.glmnet(x, y, alpha = 0, nfolds = 5) # Ridge regression
# secara default, nfolds = 10 sehingga akan buruk ketika n<30
rid##
## Call: cv.glmnet(x = x, y = y, nfolds = 5, alpha = 0)
##
## Measure: Mean-Squared Error
##
## Lambda Index Measure SE Nonzero
## min 1.237 87 11.47 3.312 5
## 1se 7.953 67 14.43 3.967 5
## 6 x 1 sparse Matrix of class "dgCMatrix"
## lambda.min
## (Intercept) 1.358409e+02
## X1 8.386232e-01
## X2 1.514394e-05
## X3 1.572976e-04
## X4 -2.644206e-01
## X5 -3.039155e-01
Model yang terbentuk menggunakan semua peubah penjelas, pemodelan ridge akan lebih terlihat berguna jika digunakan peubah yang terdapat multikolinearitas sehingga tidak perlu disisihkan ketika ada yang memiliki VIF > 10
\(\hat{AHH} = 135.8123+0.8299393RLS+0.00001492887PDRB+0.0001542184JP-0.2428861TPT-0.2992546PPM\)
Lasso
##
## Call: cv.glmnet(x = x, y = y, nfolds = 5, alpha = 1)
##
## Measure: Mean-Squared Error
##
## Lambda Index Measure SE Nonzero
## min 0.3606 26 12.29 2.457 4
## 1se 1.0035 15 14.39 2.535 4
## 6 x 1 sparse Matrix of class "dgCMatrix"
## lambda.min
## (Intercept) 1.400811e+02
## X1 3.410312e-01
## X2 1.356544e-05
## X3 1.439335e-04
## X4 .
## X5 -3.727143e-01
Lasso menghasilkan pemodelan regresi dengan penyusutan/penyeleksian peubah yang memiliki koefisien yang sangat mendekati atau bahkan tepat nol
\[\hat{AHH}=139.0028+0.4912041RLS+0.00001521624PDRB+0.0001606378JP−1.171122TPT−0.3726701PPM\]