Import library

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

Import data

data <- read.csv("D:/STATISTIKA/SEMESTER 6/Ekonometrika Lanjut/Data Proyek Ekolan.csv")
data

Statistika Deskriptif

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

Multikolinearitas

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.

Pemodelan Regresi

CEM

# 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

FEM

# 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.

REM

# 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.

Pemilihan Model Regresi

Uji Chow

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

Uji Hausman

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

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

Uji Asumsi Klasik

# 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

Uji Normalitas Residual

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

Non-Multikolienaritas

library(car)

vif(lm(PersentasePendudukMiskin ~ PengeluaranPerKapita + RLS + TPT, data = data))
## PengeluaranPerKapita                  RLS                  TPT 
##             3.048367             3.018426             1.198261

Homoskedastisitas

bptest(model_fixed)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_fixed
## BP = 27.359, df = 3, p-value = 4.949e-06

Non-Autokorelasi

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

Uji Signifikansi

Uji Simultan

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

Uji Parsial

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