library(corrplot)
## Warning: package 'corrplot' was built under R version 4.4.3
## corrplot 0.95 loaded
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
library(plm)
## Warning: package 'plm' was built under R version 4.4.3
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.2
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.4.1
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(tseries)
## Warning: package 'tseries' was built under R version 4.4.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plm':
##
## between, lag, lead
## The following object is masked from 'package:car':
##
## recode
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'tidyr' was built under R version 4.4.2
## Warning: package 'readr' was built under R version 4.4.3
## Warning: package 'purrr' was built under R version 4.4.2
## Warning: package 'forcats' was built under R version 4.4.2
## Warning: package 'lubridate' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.5
## ✔ ggplot2 4.0.1 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::between() masks plm::between()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks plm::lag(), stats::lag()
## ✖ dplyr::lead() masks plm::lead()
## ✖ dplyr::recode() masks car::recode()
## ✖ purrr::some() masks car::some()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data <- read.csv("D:/STATISTIKA/SEMESTER 6/Ekonometrika Lanjut/Data Proyek Ekolan.csv")
data
numeric_cols <- c("PengeluaranPerKapita","RLS","TPT","PersentasePendudukMiskin")
summary(data[numeric_cols])
## PengeluaranPerKapita RLS TPT
## Min. : 580838 Min. : 5.150 Min. : 0.180
## 1st Qu.: 921322 1st Qu.: 8.640 1st Qu.: 2.590
## Median :1043844 Median : 9.340 Median : 4.750
## Mean :1056598 Mean : 9.178 Mean : 4.811
## 3rd Qu.:1188226 3rd Qu.:10.030 3rd Qu.: 6.790
## Max. :1937127 Max. :11.620 Max. :11.500
## PersentasePendudukMiskin
## Min. : 3.44
## 1st Qu.: 8.21
## Median : 8.99
## Mean :10.59
## 3rd Qu.:11.88
## Max. :26.42
library(car)
vif(lm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT, data = data))
## PengeluaranPerKapita RLS TPT
## 3.048367 3.018426 1.198261
Semua variabel independen yaitu PengeluaranPerKapita (VIF = 3.05), RLS (VIF = 3.02), dan TPT (VIF = 1.20) memiliki nilai VIF <10 , sehingga dapat disimpulkan bahwa model regresi ini tidak mengalami masalah multikolinearitas sehingga asumsi multikolinearitas terpenuhi.
# Model Pooled OLS
model_pooled <- plm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT, data = data, model = "pooling")
summary(model_pooled)
## Pooling Model
##
## Call:
## plm(formula = PersentasePendudukMiskin ~ PengeluaranPerKapita +
## RLS + TPT, data = data, model = "pooling")
##
## Balanced Panel: n = 33, T = 5, N = 165
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -4.73689 -2.21519 -0.92183 1.99105 9.62175
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## (Intercept) 3.1962e+01 1.6649e+00 19.1979 < 2.2e-16 ***
## PengeluaranPerKapita -1.7479e-06 1.7970e-06 -0.9727 0.3322
## RLS -2.1115e+00 3.0257e-01 -6.9787 7.359e-11 ***
## TPT -3.0480e-02 9.6946e-02 -0.3144 0.7536
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 3361.6
## Residual Sum of Squares: 1554.3
## R-Squared: 0.53764
## Adj. R-Squared: 0.52902
## F-statistic: 62.4045 on 3 and 161 DF, p-value: < 2.22e-16
F-statistik = 62.40, p-value < 0.001 → model secara keseluruhan signifikan.
Dari model Pooling, hanya RLS yang berpengaruh signifikan terhadap persentase penduduk miskin di kabupaten/kota di Jawa Tengah. Model ini menjelaskan sekitar 54% variasi kemiskinan, sementara PengeluaranPerKapita dan TPT tidak signifikan secara statistik
# Model Fixed Effects
model_fixed <- plm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT, data = data, model = "within")
summary(model_fixed)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = PersentasePendudukMiskin ~ PengeluaranPerKapita +
## RLS + TPT, data = data, model = "within")
##
## Balanced Panel: n = 33, T = 5, N = 165
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -1.948071 -0.181284 -0.012028 0.209493 1.426216
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## PengeluaranPerKapita -2.2121e-06 5.2379e-07 -4.2233 4.514e-05 ***
## RLS -7.1937e-01 2.5910e-01 -2.7764 0.006316 **
## TPT 1.3461e-01 4.5086e-02 2.9857 0.003386 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 44.725
## Residual Sum of Squares: 26.259
## R-Squared: 0.41288
## Adj. R-Squared: 0.25358
## F-statistic: 30.2386 on 3 and 129 DF, p-value: 7.1663e-15
F-statistik = 30.24, p-value < 0.001 → model secara keseluruhan signifikan.
Dalam model Fixed Effect, semua variabel independen (PengeluaranPerKapita, RLS, TPT) berpengaruh signifikan terhadap persentase penduduk miskin. Pengeluaran per kapita dan rata-rata lama sekolah menurunkan kemiskinan, sedangkan TPT meningkatkan kemiskinan. Model ini mampu menjelaskan sekitar 41% variasi kemiskinan antar kabupaten/kota.
# Model Random Effects
model_random <- plm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT, data = data, model = "random")
summary(model_random)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = PersentasePendudukMiskin ~ PengeluaranPerKapita +
## RLS + TPT, data = data, model = "random")
##
## Balanced Panel: n = 33, T = 5, N = 165
##
## Effects:
## var std.dev share
## idiosyncratic 0.2036 0.4512 0.019
## individual 10.4199 3.2280 0.981
## theta: 0.9376
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -1.270516 -0.275878 -0.064108 0.207068 2.138788
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) 2.2002e+01 1.9433e+00 11.3218 < 2.2e-16 ***
## PengeluaranPerKapita -1.8801e-06 5.2063e-07 -3.6111 0.0003048 ***
## RLS -1.0885e+00 2.3555e-01 -4.6210 3.819e-06 ***
## TPT 1.1724e-01 4.5134e-02 2.5976 0.0093868 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 57.634
## Residual Sum of Squares: 34.31
## R-Squared: 0.40469
## Adj. R-Squared: 0.39359
## Chisq: 109.445 on 3 DF, p-value: < 2.22e-16
Chi-square = 109.45, p-value < 0.001 → model secara keseluruhan signifikan.
Dalam model Random Effect, semua variabel independen (PengeluaranPerKapita, RLS, TPT) berpengaruh signifikan terhadap persentase penduduk miskin di kabupaten/kota. Peningkatan pengeluaran per kapita dan rata-rata lama sekolah menurunkan kemiskinan, sedangkan peningkatan TPT meningkatkan kemiskinan. Model ini mampu menjelaskan sekitar 40% variasi kemiskinan antar kabupaten/kota.
Uji Chow merupakan pengujian untuk menentukan model, apakah commont effect atau fixed effect yang paling tepat dalam mengestimasi data panel (Widarjono, 2009).
chow_test <- pFtest(model_fixed, model_pooled)
print(chow_test)
##
## F test for individual effects
##
## data: PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT
## F = 234.58, df1 = 32, df2 = 129, p-value < 2.2e-16
## alternative hypothesis: significant effects
\(𝐻_0\) ditolak jika nilai \(𝐹𝑜𝑏𝑠 > 𝐹_𝛼;𝑁−1; 𝑁𝑇−𝑘\) atau nilai dari 𝑝-𝑣𝑎𝑙𝑢𝑒 ≤ 𝛼.
\(𝐻_0\) ditolak karena p-value ≤ 𝛼.
Kesimpulan: Model yang tepat untuk regresi data panel adalah FEM
Pengujian ini bertujuan untuk menentukan model terbaik yang dapat digunakan di antara random effect dan fixed effect dalam mengestimasi data panel (Widarjono, 2009).
hausman_test <- phtest(model_fixed, model_random)
print(hausman_test)
##
## Hausman Test
##
## data: PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT
## chisq = 10.27, df = 3, p-value = 0.01641
## alternative hypothesis: one model is inconsistent
Daerah kritis: \(𝐻_0\) ditolak jika nilai 𝑝-𝑣𝑎𝑙𝑢𝑒 ≤ 𝛼.
\(𝐻_0\) ditolak karena p-value ≤ 𝛼.
Kesimpulan: Model yang tepat untuk regresi data panel adalah FEM
Uji Breusch Pagan merupakan uji yang digunakan dalam membandingkan model common effect dan random effect dalam mengestimasi data panel (Widarjono, 2009).
lm_test <- plmtest(model_pooled, type = "bp")
print(lm_test)
##
## Lagrange Multiplier Test - (Breusch-Pagan)
##
## data: PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT
## chisq = 310.64, df = 1, p-value < 2.2e-16
## alternative hypothesis: significant effects
Daerah kritis: \(𝐻_0\) ditolak jika nilai 𝑝-𝑣𝑎𝑙𝑢𝑒 ≤ 𝛼.
\(𝐻_0\) ditolak karena p-value ≤ 𝛼.
Kesimpulan: Model yang tepat untuk regresi data panel adalah REM
Berdasarkan rangkaian uji Chow, Hausman, dan LM Test, model yang paling tepat digunakan adalah model Fixed Effect Model (FEM).
p-value < 0.05 → variabel independen simultan signifikan
# MOdel FEM
model_fixed <- plm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT,
data = data,
model = "within")
summary(model_fixed)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = PersentasePendudukMiskin ~ PengeluaranPerKapita +
## RLS + TPT, data = data, model = "within")
##
## Balanced Panel: n = 33, T = 5, N = 165
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -1.948071 -0.181284 -0.012028 0.209493 1.426216
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## PengeluaranPerKapita -2.2121e-06 5.2379e-07 -4.2233 4.514e-05 ***
## RLS -7.1937e-01 2.5910e-01 -2.7764 0.006316 **
## TPT 1.3461e-01 4.5086e-02 2.9857 0.003386 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 44.725
## Residual Sum of Squares: 26.259
## R-Squared: 0.41288
## Adj. R-Squared: 0.25358
## F-statistic: 30.2386 on 3 and 129 DF, p-value: 7.1663e-15
residuals_fixed <- residuals(model_fixed)
ks.test(residuals_fixed, "pnorm", mean = mean(residuals_fixed), sd = sd(residuals_fixed))
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: residuals_fixed
## D = 0.082482, p-value = 0.2116
## alternative hypothesis: two-sided
p-value ≥ 0.05 → residual normal
library(car)
vif(lm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT, data = data))
## PengeluaranPerKapita RLS TPT
## 3.048367 3.018426 1.198261
bptest(model_fixed)
##
## studentized Breusch-Pagan test
##
## data: model_fixed
## BP = 27.359, df = 3, p-value = 4.949e-06
pbgtest(model_fixed)
##
## Breusch-Godfrey/Wooldridge test for serial correlation in panel models
##
## data: PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT
## chisq = 35.489, df = 5, p-value = 1.202e-06
## alternative hypothesis: serial correlation in idiosyncratic errors
# Robust Standard Errors
# a) Heteroskedastisitas & autokorelasi robust
coeftest(model_fixed, vcov = vcovHC(model_fixed, type="HC1"))
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## PengeluaranPerKapita -2.2121e-06 4.9392e-07 -4.4787 1.635e-05 ***
## RLS -7.1937e-01 2.1845e-01 -3.2931 0.001279 **
## TPT 1.3461e-01 4.5406e-02 2.9646 0.003611 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# b) Cluster robust SE per kabupaten/kota
coeftest(model_fixed, vcov = vcovHC(model_fixed, type="HC1", cluster="group"))
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## PengeluaranPerKapita -2.2121e-06 4.9392e-07 -4.4787 1.635e-05 ***
## RLS -7.1937e-01 2.1845e-01 -3.2931 0.001279 **
## TPT 1.3461e-01 4.5406e-02 2.9646 0.003611 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Optional: Uji Autokorelasi (panel)
pbgtest(model_fixed) # Wooldridge test panel FEM
##
## Breusch-Godfrey/Wooldridge test for serial correlation in panel models
##
## data: PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT
## chisq = 35.489, df = 5, p-value = 1.202e-06
## alternative hypothesis: serial correlation in idiosyncratic errors
library(plm)
library(lmtest)
# Pooling Model
model_pooling <- plm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT,
data = data,
model = "pooling")
# Fixed Effect Model (FEM)
model_fixed <- plm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT,
data = data,
model = "within")
# F-test untuk melihat apakah semua variabel independen signifikan secara simultan
pFtest(model_fixed, model_pooling)
##
## F test for individual effects
##
## data: PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT
## F = 234.58, df1 = 32, df2 = 129, p-value < 2.2e-16
## alternative hypothesis: significant effects
p-value < 0.05 → variabel independen simultan signifikan
library(plm)
# FEM
model_fixed <- plm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT, data = data, model = "within")
# Uji parsial (signifikansi tiap variabel)
summary(model_fixed)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = PersentasePendudukMiskin ~ PengeluaranPerKapita +
## RLS + TPT, data = data, model = "within")
##
## Balanced Panel: n = 33, T = 5, N = 165
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -1.948071 -0.181284 -0.012028 0.209493 1.426216
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## PengeluaranPerKapita -2.2121e-06 5.2379e-07 -4.2233 4.514e-05 ***
## RLS -7.1937e-01 2.5910e-01 -2.7764 0.006316 **
## TPT 1.3461e-01 4.5086e-02 2.9857 0.003386 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 44.725
## Residual Sum of Squares: 26.259
## R-Squared: 0.41288
## Adj. R-Squared: 0.25358
## F-statistic: 30.2386 on 3 and 129 DF, p-value: 7.1663e-15
p-value < 0.05 → variabel signifikan secara parsial