Pendahuluan

Laporan ini bertujuan untuk menganalisis pengaruh Rata-rata Lama Sekolah (RLS), Tingkat Pengangguran Terbuka (TPT), dan Gini Ratio terhadap persentase kemiskinan kabupaten/kota di Provinsi Jawa Tengah tahun 2024 menggunakan metode regresi linear berganda.


Model Regresi

\[ Y_i = \beta_0 + \beta_1 X_{1i} + \beta_2 X_{2i} + \beta_3 X_{3i} + \varepsilon_i \]

Estimator OLS:

\[ \hat{\beta} = (X'X)^{-1}X'Y \]

Diketahui Y = Presentase Kemiskinan; X1 = Rata-Rata Lama Sekolah (RLS); X2 = Tingkat Pengangguran Terbuka (TPT); X3 = Gini Ratio


Load dan Persiapan Data

data = read_excel("C:/Users/ACER SWIFT/Documents/Vindy Andrea/Kuliah/Semester 6/Komstat Lanjut/Tugas 1 Vindy.xlsx")

colnames(data) = make.names(colnames(data))

colnames(data)
## [1] "Wilayah" "Y"       "X1"      "X2"      "X3"
head(data)
## # A tibble: 6 × 5
##   Wilayah          Y    X1    X2    X3
##   <chr>        <dbl> <dbl> <dbl> <dbl>
## 1 Cilacap       10.7  7.4   7.83 0.355
## 2 Banyumas      12.0  7.91  6.18 0.385
## 3 Purbalingga   14.2  7.36  4.96 0.314
## 4 Banjarnegara  14.7  6.87  5.57 0.357
## 5 Kebumen       15.7  7.87  5.07 0.327
## 6 Purworejo     10.9  8.65  3.89 0.354

Pembentukan Model

model = lm(Y ~ X1 + X2 + X3, data = data)
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.0554 -1.5406 -0.2521  1.9399  4.9613 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 21.10014    4.08038   5.171 1.31e-05 ***
## X1          -1.74187    0.38816  -4.487 9.28e-05 ***
## X2           0.08554    0.28401   0.301    0.765    
## X3           8.94009   13.10897   0.682    0.500    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.429 on 31 degrees of freedom
## Multiple R-squared:  0.4784, Adjusted R-squared:  0.4279 
## F-statistic: 9.476 on 3 and 31 DF,  p-value: 0.0001351
res = residuals(model)
alpha = 0.05

Uji Linearitas

Uji linearitas bertujuan untuk mengetahui apakah dua variabel mempunyai hubungan yang linear atau tidak secara signifikan. Uji ini biasanya digunakan sebagai prasyarat dalam analisis korelasi atau regresi linear.

reset = resettest(model, power = 2:3, type = "fitted")
reset
## 
##  RESET test
## 
## data:  model
## RESET = 0.65013, df1 = 2, df2 = 29, p-value = 0.5294
if(reset$p.value > alpha){
  cat("Kesimpulan: H0 diterima karena p-value =", round(reset$p.value,4),
      "> 0,05. Model memenuhi asumsi linearitas.\n")
} else {
  cat("Kesimpulan: H0 ditolak karena p-value =", round(reset$p.value,4),
      "< 0,05. Model tidak memenuhi asumsi linearitas.\n")
}

Kesimpulan: H0 diterima karena p-value = 0.5294 > 0,05. Model memenuhi asumsi linearitas.


Uji Normalitas

Model regresi yang baik adalah model regresi yang memiliki nilai residual yang terdistribusi secara normal. Untuk mendeteksi apakah data berdistribusi normal atau tidak, digunakan analisis statistik non-parametrik one-sample Kolmogorov-Smirnov atau Shapiro-Wilk.

shap = shapiro.test(res)
shap
## 
##  Shapiro-Wilk normality test
## 
## data:  res
## W = 0.98234, p-value = 0.8325
qqnorm(res)
qqline(res, col="red")

if(shap$p.value > alpha){
  cat("Kesimpulan: H0 diterima karena p-value =", round(shap$p.value,4),
      "> 0,05. Residual berdistribusi normal.\n")
} else {
  cat("Kesimpulan: H0 ditolak karena p-value =", round(shap$p.value,4),
      "< 0,05. Residual tidak berdistribusi normal.\n")
}

Kesimpulan: H0 diterima karena p-value = 0.8325 > 0,05. Residual berdistribusi normal.


Uji Homoskedastisitas

Uji homoskedastisitas digunakan untuk mengetahui ada atau tidaknya penyimpangan asumsi klasik heteroskedastisitas yaitu adanya ketidaksamaan varian dari residual untuk semua pengamatan pada model regresi. Jika variance dari residual satu pengamatan ke pengamatan yang lain tetap, maka disebut homoskedastisitas. Namun jika variance dari residual satu pengamatan ke pengamatan yang lain berbeda disebut heteroskedastisitas. Prasyarat yang harus terpenuhi dalam model regresi adalah tidak adanya gejala heteroskedastisitas.

bp = bptest(model)
bp
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 3.4733, df = 3, p-value = 0.3242
if(bp$p.value > alpha){
  cat("Kesimpulan: H0 diterima karena p-value =", round(bp$p.value,4),
      "> 0,05. Tidak terjadi heteroskedastisitas.\n")
} else {
  cat("Kesimpulan: H0 ditolak karena p-value =", round(bp$p.value,4),
      "< 0,05. Terjadi heteroskedastisitas.\n")
}

Kesimpulan: H0 diterima karena p-value = 0.3242 > 0,05. Tidak terjadi heteroskedastisitas.


Uji Non-Autokorelasi

Uji autokorelasi digunakan untuk mengetahui ada atau tidaknya penyimpangan asumsi klasik autokorelasi yaitu korelasi yang terjadi antara residual pada satu pengamatan dengan pengamatan lain pada model regresi. Prasyarat yang harus terpenuhi adalah tidak adanya autokorelasi dalam model regresi.

dw = dwtest(model)
dw
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 1.7669, p-value = 0.1624
## alternative hypothesis: true autocorrelation is greater than 0
if(dw$p.value > alpha){
  cat("Kesimpulan: H0 diterima karena p-value =", round(dw$p.value,4),
      "> 0,05. Tidak terdapat autokorelasi.\n")
} else {
  cat("Kesimpulan: H0 ditolak karena p-value =", round(dw$p.value,4),
      "< 0,05. Terdapat autokorelasi.\n")
}

Kesimpulan: H0 diterima karena p-value = 0.1624 > 0,05. Tidak terdapat autokorelasi.


Uji Non-Multikolinearitas (VIF)

Untuk menguji apakah ada hubungan antarvariabel bebas dalam regresi. Model yang baik sebaiknya tidak ada hubungan antar variable bebas. Pada SPSS dapat dilihat dari nilai VIF pada tabel Coefficients. Jika VIF < 10 maka asumsi terpenuhi. Ada beberapa cara untuk mengetahui adanya multikolinieritas, yaitu dengan menggunakan harga Variance Inflation Factor (VIF).

vif_values = vif(model)
vif_values
##       X1       X2       X3 
## 1.642357 1.038258 1.604481
if(all(vif_values < 10)){
  cat("Kesimpulan: Seluruh variabel memiliki VIF < 10 sehingga tidak terjadi multikolinearitas.\n")
} else {
  cat("Kesimpulan: Terdapat variabel dengan VIF > 10 sehingga terjadi multikolinearitas.\n")
}

Kesimpulan: Seluruh variabel memiliki VIF < 10 sehingga tidak terjadi multikolinearitas.


Uji F (Simultan)

fstat = summary(model)$fstatistic
p_f = pf(fstat[1], fstat[2], fstat[3], lower.tail = FALSE)
p_f
##        value 
## 0.0001350784
if(p_f < alpha){
  cat("Kesimpulan: H0 ditolak karena p-value =", round(p_f,4),
      "< 0,05. Secara simultan X1, X2, dan X3 berpengaruh signifikan.\n")
} else {
  cat("Kesimpulan: H0 diterima karena p-value =", round(p_f,4),
      "> 0,05. Variabel independen tidak berpengaruh signifikan secara simultan.\n")
}

Kesimpulan: H0 ditolak karena p-value = 1e-04 < 0,05. Secara simultan X1, X2, dan X3 berpengaruh signifikan.


Uji t (Parsial)

coef_table = summary(model)$coefficients
coef_table
##                Estimate Std. Error    t value     Pr(>|t|)
## (Intercept) 21.10013983  4.0803806  5.1711205 1.314938e-05
## X1          -1.74187012  0.3881611 -4.4874931 9.275653e-05
## X2           0.08553854  0.2840118  0.3011795 7.652886e-01
## X3           8.94009431 13.1089719  0.6819829 5.003139e-01
p_t = coef_table[,4]
coef_names = rownames(coef_table)

for(i in 2:length(p_t)){
  if(p_t[i] < alpha){
    cat("H0 ditolak untuk variabel", coef_names[i],
        "karena p-value =", round(p_t[i],4),
        "< 0,05. Variabel ini berpengaruh signifikan.\n")
  } else {
    cat("H0 diterima untuk variabel", coef_names[i],
        "karena p-value =", round(p_t[i],4),
        "> 0,05. Variabel ini tidak berpengaruh signifikan.\n")
  }
}

H0 ditolak untuk variabel X1 karena p-value = 1e-04 < 0,05. Variabel ini berpengaruh signifikan. H0 diterima untuk variabel X2 karena p-value = 0.7653 > 0,05. Variabel ini tidak berpengaruh signifikan. H0 diterima untuk variabel X3 karena p-value = 0.5003 > 0,05. Variabel ini tidak berpengaruh signifikan.


Koefisien Determinasi

# Nilai aktual dan prediksi
Y = data$Kemiskinan
## Warning: Unknown or uninitialised column: `Kemiskinan`.
Y_hat = fitted(model)
Y_bar = mean(Y)
## Warning in mean.default(Y): argument is not numeric or logical: returning NA
# Hitung jumlah kuadrat
JKT = sum((Y - Y_bar)^2)
JKR = sum((Y_hat - Y_bar)^2)
JKG = sum((Y - Y_hat)^2)

# Koefisien determinasi
R2_manual = JKR / JKT
R2_manual
## [1] NA

Mean Squared Error (MSE)

SSE = sum(res^2)
n = nrow(data)
k = 3
MSE = SSE/(n-k-1)
MSE
## [1] 5.900179

Persamaan Model Akhir

Berdasarkan analisis menggunakan uji F dan uji t diperoleh model akhir persamaan regresi linier berganda sebagai berikut:

coef(model)
## (Intercept)          X1          X2          X3 
## 21.10013983 -1.74187012  0.08553854  8.94009431

\[ \hat{Y} = 21.1 + -1.742X1 + 0.086X2 + 8.94X3 \]