library(readxl)
## Warning: package 'readxl' was built under R version 4.4.2
library(GGally)
## Warning: package 'GGally' was built under R version 4.4.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.4.2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.4.3
## corrplot 0.95 loaded
library(nortest)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.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
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
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.2
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
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.2
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
library(olsrr)
## Warning: package 'olsrr' was built under R version 4.4.3
##
## Attaching package: 'olsrr'
## The following object is masked from 'package:datasets':
##
## rivers
library(MASS)
## Warning: package 'MASS' was built under R version 4.4.3
##
## Attaching package: 'MASS'
## The following object is masked from 'package:olsrr':
##
## cement
## The following object is masked from 'package:dplyr':
##
## select
library(psych)
## Warning: package 'psych' was built under R version 4.4.3
##
## Attaching package: 'psych'
## The following object is masked from 'package:car':
##
## logit
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
library(car)
dt <- read_excel("C:/Users/LENOVO/Downloads/Data tugas praktikum anreg.xlsx")
head(dt)
## # A tibble: 6 × 6
## IPM TPT TPAK PPM SAML RKMRT
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 72.8 6.17 63.5 14.8 89.7 2773116.
## 2 72.71 6.16 69.5 8.33 92.1 2653705.
## 3 73.26 6.28 69.3 6.04 85.2 2995544.
## 4 73.52 4.37 63.9 6.84 90.1 2953900.
## 5 72.14 4.59 67.8 7.7 79.2 2604722.
## 6 70.9 4.63 69.3 12.0 86.4 2488706.
Y _> Index Pembangunan Manusia,
X1 _> Tingkat Pengangguran Terbuka
X2 _> Tingkat Partisipasi Angkatan Kerja (%)
X3 _> Persentase Penduduk Miskin
X4 _> Persentase Sumber Air Minum Layak
X5 _> Rata-rata konsumsi Makanan Rumah Tangga
dt_numeric <- data.frame(lapply(dt, function(x) as.numeric(as.character(x))))
TPT
plot(dt_numeric$IPM, dt_numeric$TPT)
TPAK
plot(dt_numeric$IPM, dt_numeric$TPAK)
PPM
plot(dt_numeric$IPM, dt_numeric$PPM)
SAML
plot(dt_numeric$IPM, dt_numeric$SAML)
RKMRT
plot(dt_numeric$IPM, dt_numeric$RKMRT)
cor_matrix <- cor(dt_numeric, use = "complete.obs")
corrplot(cor_matrix, method = "color", type = "lower",
col = colorRampPalette(c("red", "white", "blue"))(200),
addCoef.col = "black", tl.col = "black", tl.srt = 35)
library(GGally)
library(psych)
pairs.panels(dt_numeric)
ggpairs(dt_numeric,
upper = list(continuous = wrap('cor', size = 3)),
title = "Matriks Scatterplot Data")
Berdasarkan hasil eksplorasi korelasi antara peubah penjelas dan peubah terikat dapat disimpulkan bahwa
IPM dan TPT memiliki hubungan positif sedang, sehingga ketika TPT naik maka IPM pun akan naik. Akan tetapi hasil korelasi ini berbanding terbalik dengan konsep IPM.
IPM dan TPAT memiliki hbungan negatif lemah, sehingga ketika TPAT naik maka IPM turun, Akan tetapi hasil korelasi ini berbanding terbalik dengan konsep IPM.
IPM dan PPM memiliki hubungan negatif kuat, sehingga ketika PPM naik maka IPM turun
IPM dan SAML memiliki hubungan postif kuat, sehingga ketika SAML naik maka IPM naik
IPM dan RKMRT hampir tidak memiliki hubungan karena mendekati nol
model1 = lm(formula = IPM ~ ., data = dt_numeric)
summary(model1)
##
## Call:
## lm(formula = IPM ~ ., data = dt_numeric)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.6440 -1.2412 -0.2265 0.3090 7.6984
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.450e+01 1.224e+01 4.454 0.000123 ***
## TPT 3.488e-01 3.535e-01 0.987 0.332293
## TPAK 2.424e-02 1.497e-01 0.162 0.872528
## PPM -3.804e-01 1.005e-01 -3.787 0.000742 ***
## SAML 1.948e-01 6.111e-02 3.188 0.003508 **
## RKMRT 3.489e-07 8.224e-07 0.424 0.674586
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.533 on 28 degrees of freedom
## Multiple R-squared: 0.6423, Adjusted R-squared: 0.5784
## F-statistic: 10.06 on 5 and 28 DF, p-value: 1.368e-05
Pada permodelan awal terbentuk model regresi linear berganda :
IPM = 54.5 + 0.3448 TPT + 0.0242TPAK - 0.3804PPM + 0.1948 + 0.0000003RKMRT
library(car)
vif(model1)
## TPT TPAK PPM SAML RKMRT
## 1.646228 1.528020 1.450515 1.185360 1.150418
Dari hasi VIF tidak terdapat peubah yang mengalami multikolinieritas (VIF > 10).
bs <- ols_step_best_subset(model1)
bs
## Best Subsets Regression
## --------------------------------------
## Model Index Predictors
## --------------------------------------
## 1 PPM
## 2 PPM SAML
## 3 TPT PPM SAML
## 4 TPT PPM SAML RKMRT
## 5 TPT TPAK PPM SAML RKMRT
## --------------------------------------
##
## Subsets Regression Summary
## ---------------------------------------------------------------------------------------------------------------------------------
## Adj. Pred
## Model R-Square R-Square R-Square C(p) AIC SBIC SBC MSEP FPE HSP APC
## ---------------------------------------------------------------------------------------------------------------------------------
## 1 0.4537 0.4367 0.3878 12.7596 173.4736 76.0824 178.0527 291.4631 9.0757 0.2765 0.6145
## 2 0.6211 0.5966 0.5458 1.6604 163.0370 67.3842 169.1424 208.9137 6.6790 0.2046 0.4523
## 3 0.6398 0.6037 0.5457 2.1985 163.3185 68.3919 170.9503 205.4654 6.7388 0.2079 0.4563
## 4 0.6420 0.5926 0.5239 4.0262 165.1101 70.6629 174.2683 211.5035 7.1109 0.2214 0.4815
## 5 0.6423 0.5784 0.5008 6.0000 167.0783 73.0701 177.7628 219.1318 7.5466 0.2376 0.5110
## ---------------------------------------------------------------------------------------------------------------------------------
## 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
Berdasarkan best subset dapat disimpulkan bahwa hanya PPM dan SAML (model 2) yang dapat digunakan.
null<-lm(IPM ~ 1, data=dt_numeric)
full<-lm(IPM ~ ., data=dt_numeric)
step(full, scope=list(lower=null, upper=full),data=dt_numeric, direction='backward', trace=0)
##
## Call:
## lm(formula = IPM ~ PPM + SAML, data = dt_numeric)
##
## Coefficients:
## (Intercept) PPM SAML
## 57.4838 -0.4035 0.2127
Berdasarkan metode Backward dapat disimpulkan bahwa hanya PPM dan SAML yang dapat digunakan dalam model.
step(null, scope=list(lower=null, upper=full),data=data, direction='forward', trace=0)
##
## Call:
## lm(formula = IPM ~ PPM + SAML, data = dt_numeric)
##
## Coefficients:
## (Intercept) PPM SAML
## 57.4838 -0.4035 0.2127
Berdasarkan metode Foward dapat disimpulkan bahwa hanya PPM dan SAML yang dapat digunakan dalam model.
step(null, scope=list(lower=null, upper=full),data=data, direction='both', trace=0)
##
## Call:
## lm(formula = IPM ~ PPM + SAML, data = dt_numeric)
##
## Coefficients:
## (Intercept) PPM SAML
## 57.4838 -0.4035 0.2127
Berdasarkan metode stepwise dapat disimpulkan bahwa hanya PPM dan SAML yang dapat digunakan dalam model.
IPM = 57.4838 - 0.4035 PPM + 0.2127 SAML
model2 <- lm(IPM ~ PPM + SAML, data=dt_numeric)
vif(model2)
## PPM SAML
## 1.096144 1.096144
t.test(model2$residuals,mu = 0,conf.level = 0.95)
##
## One Sample t-test
##
## data: model2$residuals
## t = -1.348e-16, df = 33, p-value = 1
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.8377975 0.8377975
## sample estimates:
## mean of x
## -5.551115e-17
Berdasarkan hasil uji One Sample t-test terhadap residual, diperoleh p-value sebesar 1 (lebih besar dari 0.05). Dengan demikian, tidak terdapat cukup bukti untuk menolak hipotesis nol. Oleh karena itu, dapat disimpulkan bahwa rata-rata sisa adalah nol, sehingga asumsi nilai harapan residual = 0 terpenuhi.
bptest(model2)
##
## studentized Breusch-Pagan test
##
## data: model2
## BP = 0.65066, df = 2, p-value = 0.7223
Berdasarkan uji Breusch-Pagan, diperoleh p-value sebesar 0.7223 (lebih besar dari 0.05). Dengan demikian, tidak terdapat cukup bukti untuk menolak hipotesis nol. Oleh karena itu, dapat disimpulkan bahwa model memenuhi asumsi homoskedastisitas (ragam residual homogen).
dwtest(model2)
##
## Durbin-Watson test
##
## data: model2
## DW = 1.8346, p-value = 0.2494
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan uji Durbin–Watson, diperoleh statistik DW = 1.8346 dengan p-value sebesar 0.2494 (lebih besar dari 0.05). Dengan demikian, tidak terdapat cukup bukti untuk menolak hipotesis nol. Oleh karena itu, dapat disimpulkan bahwa model memenuhi asumsi residual saling bebas (tidak ada autokorelasi pada sisa).
shapiro.test(model2$residuals)
##
## Shapiro-Wilk normality test
##
## data: model2$residuals
## W = 0.87899, p-value = 0.001337
Berdasarkan uji Shapiro-Wilk, diperoleh statistik W = 0.87899 dengan p-value sebesar 0.001337 (lebih kecil dari 0.05). Dengan demikian, terdapat cukup bukti untuk menolak hipotesis nol. Oleh karena itu, dapat disimpulkan bahwa residual model tidak berdistribusi normal.
bc_model <- boxcox(IPM ~ PPM + SAML, data = dt,
lambda = seq(-2, 2, by = 0.1))
interpretasi
(optimal_lambda <- bc_model$x[which.max(bc_model$y)])
## [1] -2
Berdasarkan hasil analisis Box-Cox transformation, diperoleh nilai optimal lambda sebesar -2. Nilai lambda ini menunjukkan bentuk transformasi terbaik terhadap variabel respons (IPM) untuk mendekati asumsi normalitas residual. Karena nilai lamda sebesar -2 maka Ybaru = 1/Y^2. Artinya, transfomasi IPM dilakukan dengan mengambil invers kuadrat dari IPM.
lambda_opt <- -2
dt_numeric$IPM_bc <- (dt_numeric$IPM^lambda_opt - 1) / lambda_opt
model_bc <- lm(IPM_bc ~ PPM + SAML, data = dt_numeric)
summary(model_bc)
##
## Call:
## lm(formula = IPM_bc ~ PPM + SAML, data = dt_numeric)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.131e-05 -2.259e-06 -1.067e-06 6.711e-07 1.668e-05
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.999e-01 1.336e-05 37421.863 < 2e-16 ***
## PPM -1.225e-06 2.120e-07 -5.776 2.32e-06 ***
## SAML 5.946e-07 1.427e-07 4.168 0.000229 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.149e-06 on 31 degrees of freedom
## Multiple R-squared: 0.6968, Adjusted R-squared: 0.6772
## F-statistic: 35.62 on 2 and 31 DF, p-value: 9.27e-09
shapiro.test(residuals(model_bc))
##
## Shapiro-Wilk normality test
##
## data: residuals(model_bc)
## W = 0.90373, p-value = 0.005765
interpretasi
bptest(model2)
##
## studentized Breusch-Pagan test
##
## data: model2
## BP = 0.65066, df = 2, p-value = 0.7223
Hipotesis nol (H₀): Tidak ada heteroskedastisitas (varian residual konstan).
Hipotesis alternatif (H₁): Ada heteroskedastisitas (varian residual tidak konstan).
Berdasarkan hasil analisis uji Breusch-Pagan, diperoleh nilai p-value sebesar 0.9944. Nilai p-value yang lebih besar dari 0.05 ini menunjukkan bahwa tidak terdapat bukti adanya heteroskedastisitas pada model (model3). Dengan demikian, asumsi homoskedastisitas (varian residual konstan) pada model telah terpenuhi.
plot(model2,1)
Berdasarkan hasil plot Residuals vs Fitted pada model (model3), terlihat bahwa sebaran residual berada secara acak di sekitar garis horizontal nol dan tidak membentuk pola tertentu. Hal ini menunjukkan bahwa asumsi homogenitas varians (homoskedastisitas) dan linearitas hubungan antara variabel bebas dan variabel respon telah terpenuhi.