Pembangunan ekonomi regional di Indonesia dicirikan oleh keragaman spasial dan dinamika temporal yang tinggi. Setiap daerah memiliki karakteristik unik dalam kapasitas fiskal, potensi sumber daya alam, dan kualitas modal manusia. Untuk menganalisis faktor-faktor penentu output ekonomi daerah secara komprehensif, regresi data panel digunakan karena mampu mengintegrasikan variasi antar-wilayah (cross-section) sekaligus dinamika antar-waktu (time-series). Penelitian ini mengkaji pengaruh Realisasi Investasi PMDN, Pengeluaran Riil Per Kapita yang Disesuaikan, dan Indeks Pembangunan Manusia (IPM) terhadap Produk Domestik Regional Bruto (PDRB) pada 34 Provinsi di Indonesia selama periode 2020–2023.
Produk Domestik Regional Bruto Atas Dasar Harga Konstan
(PDRB ADHK)
PDRB ADHK merupakan nilai tambah bruto seluruh barang dan jasa yang
dihasilkan di suatu wilayah dalam satu tahun tertentu yang dihitung
berdasarkan harga konstan tahun 2010. Variabel ini digunakan sebagai
ukuran pertumbuhan ekonomi riil dan output daerah yang bebas dari
pengaruh inflasi harga (satuan: Miliar Rupiah).
Realisasi Investasi Penanaman Modal Dalam Negeri
(PMDN)
Investasi PMDN mencerminkan total realisasi modal yang ditanamkan oleh
investor domestik pada proyek-proyek di wilayah provinsi terkait.
Investasi berfungsi sebagai pembentukan modal tetap bruto (gross
fixed capital formation) yang memperluas kapasitas produksi dan
penyerapan tenaga kerja lokal (satuan: Miliar Rupiah).
Pengeluaran Riil Per Kapita yang
Disesuaikan
Pengeluaran riil per kapita yang disesuaikan merupakan indikator proksi
daya beli dan standar hidup layak masyarakat. Data BPS menyajikan
variabel ini dalam satuan Ribu Rupiah / Orang / Tahun
(sebagai contoh, nilai 10.998,79 berarti rata-rata pengeluaran konsumsi
riil per orang mencapai Rp 10.998.790,- per tahun atau sekitar Rp
916.500,- per bulan). Nilai ini telah disesuaikan dengan paritas daya
beli (purchasing power parity) antar-daerah.
Indeks Pembangunan Manusia (IPM)
IPM adalah ukuran capaian komposit pembangunan manusia yang
mengintegrasikan tiga dimensi dasar: umur panjang dan hidup sehat (Umur
Harapan Hidup), pengetahuan (Harapan Lama Sekolah dan Rata-rata Lama
Sekolah), serta standar hidup layak (pengeluaran per kapita). Nilai IPM
berada pada rentang skala 0 hingga 100.
Data yang dianalisis merupakan data sekunder resmi Badan Pusat Statistik (BPS) dengan struktur Balanced Panel: - Entitas Cross-Section (\(N\)): 34 Provinsi di Indonesia. - Dimensi Time-Series (\(T\)): 4 Tahun (2020, 2021, 2022, 2023). - Total Pengamatan (\(N \times T\)): 136 baris observasi lengkap tanpa missing value.
# Membaca dataset panel resmi BPS
data_panel <- read.csv("data_panel_bps_provinsi.csv")
# Menampilkan cuplikan data dalam format tabel rapi (10 Baris Pertama)
kable(
head(data_panel, 10),
row.names = FALSE,
col.names = c(
"Provinsi",
"Tahun",
"PDRB ADHB (Miliar Rp)",
"PDRB ADHK (Miliar Rp)",
"IPM",
"Investasi PMDN (Miliar Rp)",
"Pengeluaran/Kapita (Ribu Rp/Thn)"
),
caption = "Cuplikan Data Panel BPS 34 Provinsi di Indonesia (10 Baris Pertama)",
digits = 2,
align = c("l", "c", "r", "r", "r", "r", "r")
)
| Provinsi | Tahun | PDRB ADHB (Miliar Rp) | PDRB ADHK (Miliar Rp) | IPM | Investasi PMDN (Miliar Rp) | Pengeluaran/Kapita (Ribu Rp/Thn) |
|---|---|---|---|---|---|---|
| ACEH | 2020 | 166372.3 | 131581.0 | 71.99 | 8241.1 | 9492 |
| ACEH | 2021 | 184979.9 | 135274.0 | 72.18 | 7904.7 | 9572 |
| ACEH | 2022 | 210418.4 | 140971.7 | 72.80 | 4424.2 | 9963 |
| ACEH | 2023 | 227110.2 | 146932.4 | 73.40 | 8883.3 | 10334 |
| BALI | 2020 | 224225.7 | 147498.9 | 75.50 | 5432.7 | 13929 |
| BALI | 2021 | 220466.4 | 143871.7 | 75.69 | 6355.2 | 13820 |
| BALI | 2022 | 245362.9 | 150830.4 | 76.44 | 6002.1 | 13942 |
| BALI | 2023 | 274355.7 | 159447.6 | 77.10 | 6950.8 | 14382 |
| BANTEN | 2020 | 625895.4 | 441148.6 | 72.45 | 31145.7 | 11964 |
| BANTEN | 2021 | 665870.3 | 460952.8 | 72.72 | 25989.5 | 12033 |
# Menyusun tabel statistik deskriptif manual yang rapi
stat_deskriptif <- data.frame(
Variabel = c(
"PDRB ADHK (Miliar Rp)",
"Investasi PMDN (Miliar Rp)",
"Pengeluaran Per Kapita (Ribu Rp/Orang/Tahun)",
"IPM"
),
Mean = c(
mean(data_panel$PDRB_ADHK),
mean(data_panel$Investasi_PMDN),
mean(data_panel$Pengeluaran_Per_Kapita),
mean(data_panel$IPM)
),
Standar_Deviasi = c(
sd(data_panel$PDRB_ADHK),
sd(data_panel$Investasi_PMDN),
sd(data_panel$Pengeluaran_Per_Kapita),
sd(data_panel$IPM)
),
Minimum = c(
min(data_panel$PDRB_ADHK),
min(data_panel$Investasi_PMDN),
min(data_panel$Pengeluaran_Per_Kapita),
min(data_panel$IPM)
),
Maksimum = c(
max(data_panel$PDRB_ADHK),
max(data_panel$Investasi_PMDN),
max(data_panel$Pengeluaran_Per_Kapita),
max(data_panel$IPM)
)
)
kable(
stat_deskriptif,
row.names = FALSE,
caption = "Ringkasan Statistika Deskriptif Variabel Penelitian",
digits = 2,
col.names = c(
"Variabel",
"Rata-rata (Mean)",
"Standar Deviasi",
"Minimum",
"Maksimum"
),
align = c("l", "r", "r", "r", "r")
)
| Variabel | Rata-rata (Mean) | Standar Deviasi | Minimum | Maksimum |
|---|---|---|---|---|
| PDRB ADHK (Miliar Rp) | 339707.01 | 482716.37 | 28031.44 | 2050465.97 |
| Investasi PMDN (Miliar Rp) | 15337.13 | 20023.73 | 252.90 | 95202.10 |
| Pengeluaran Per Kapita (Ribu Rp/Orang/Tahun) | 10998.79 | 2225.25 | 6954.00 | 19373.00 |
| IPM | 71.76 | 3.90 | 60.44 | 82.46 |
# 1. Histogram Distribusi PDRB (Skala Asli vs Skala Log-Natural)
p_hist1 <- ggplot(data_panel, aes(x = PDRB_ADHK / 1000)) +
geom_histogram(bins = 15, fill = "#34495e", color = "white") +
labs(
title = "Distribusi PDRB ADHK",
x = "PDRB ADHK (Triliun Rupiah)",
y = "Frekuensi (Jumlah Observasi)"
) +
theme_bw()
p_hist2 <- ggplot(data_panel, aes(x = log(PDRB_ADHK))) +
geom_histogram(bins = 15, fill = "#2980b9", color = "white") +
labs(
title = "Distribusi Log(PDRB ADHK)",
x = "Log(PDRB ADHK)",
y = "Frekuensi (Jumlah Observasi)"
) +
theme_bw()
print(p_hist1)
print(p_hist2)
Distribusi PDRB pada skala asli memperlihatkan kemencengan ke kanan (positive skewness). Hal ini mencerminkan realitas struktur perekonomian Indonesia yang terkonsentrasi di beberapa provinsi raksasa di Pulau Jawa (DKI Jakarta, Jawa Timur, dan Jawa Barat dengan output di atas 1.500 Triliun Rupiah), sedangkan sebagian besar provinsi lainnya berada di bawah rentang 300 Triliun Rupiah. Setelah dilakukan transformasi log-natural (\(\ln(\text{PDRB})\)), sebaran data menjadi simetris dan variansi lebih stabil.
# 2. Deret Waktu Rata-rata PDRB Nasional Periode 2020-2023
trend_pdrb <- aggregate(PDRB_ADHK ~ Tahun, data = data_panel, FUN = mean)
p_trend <- ggplot(trend_pdrb, aes(x = factor(Tahun), y = PDRB_ADHK / 1000, group = 1)) +
geom_line(color = "#2980b9", linewidth = 1.2) +
geom_point(color = "#c0392b", size = 3.5) +
labs(
title = "Tren Rata-rata PDRB ADHK Provinsi di Indonesia (2020–2023)",
x = "Tahun",
y = "Rata-rata PDRB ADHK (Triliun Rupiah)"
) +
theme_bw()
print(p_trend)
Grafik deret waktu di atas memperlihatkan pemulihan ekonomi regional yang konsisten pasca-pandemi tahun 2020, di mana rata-rata output riil provinsi terus meningkat dari tahun 2021 hingga 2023.
# 3. Hubungan Investasi PMDN dan PDRB (Skala Log-Natural)
p_scatter <- ggplot(
data_panel,
aes(
x = log(Investasi_PMDN),
y = log(PDRB_ADHK),
color = factor(Tahun)
)
) +
geom_point(size = 2.5, alpha = 0.8) +
geom_smooth(method = "lm", se = FALSE, linetype = "dashed") +
labs(
title = "Hubungan Investasi PMDN dan PDRB (Skala Log-Natural)",
x = "Log(Investasi PMDN)",
y = "Log(PDRB)",
color = "Tahun"
) +
theme_bw()
print(p_scatter)
Dalam ekonometrika data panel, terdapat tiga pendekatan estimasi utama:
Common Effect Model (CEM / Pooled OLS)
CEM merupakan pendekatan paling sederhana yang menggabungkan seluruh
data deret waktu dan lintas wilayah tanpa memperhatikan heterogenitas
antar-individu. Model ini mengasumsikan bahwa intercept (\(\beta_0\)) dan kemiringan (slope)
bernilai konstan dan identik untuk seluruh provinsi di setiap
periode.
Fixed Effect Model (FEM / Within
Estimator)
FEM mengasumsikan bahwa setiap entitas provinsi memiliki karakteristik
unik yang tidak teramati (unobserved heterogeneity) yang
bersifat konstan antar-waktu. Heterogenitas ini diakomodasi melalui
nilai intercept yang berbeda-beda untuk tiap individu (\(\alpha_i\)). Slope diasumsikan tetap sama
antar-provinsi.
Random Effect Model (REM / Error Component
Model)
REM mengasumsikan bahwa perbedaan antar-provinsi diakomodasi melalui
komponen galat acak (\(\alpha_i\)) yang
bersifat tidak berkorelasi dengan variabel bebas. Estimasi dilakukan
dengan metode Generalized Least Squares (GLS).
# Data Simulasi Ilustrasi Konsep Model Data Panel (Perusahaan A, B, C)
set.seed(123)
x_vals <- seq(2, 10, length.out = 7)
df_illus <- data.frame(
X = rep(x_vals, 3),
Perusahaan = factor(rep(c("Perusahaan A", "Perusahaan B", "Perusahaan C"), each = 7))
)
# Intercept berbeda: A (2 + 0.6X), B (6 + 0.6X), C (10 + 0.6X) + noise
df_illus$Y <- ifelse(
df_illus$Perusahaan == "Perusahaan A", 2 + 0.6 * df_illus$X + rnorm(7, 0, 0.4),
ifelse(
df_illus$Perusahaan == "Perusahaan B", 6 + 0.6 * df_illus$X + rnorm(7, 0, 0.4),
10 + 0.6 * df_illus$X + rnorm(7, 0, 0.4)
)
)
cols <- c("Perusahaan A" = "#2980b9", "Perusahaan B" = "#27ae60", "Perusahaan C" = "#c0392b")
shapes <- c("Perusahaan A" = 1, "Perusahaan B" = 0, "Perusahaan C" = 2)
# 1. Plot Ilustrasi Konsep CEM (Global Fit)
p_cem <- ggplot(df_illus, aes(x = X, y = Y)) +
geom_point(aes(color = Perusahaan, shape = Perusahaan), size = 3, stroke = 1.2) +
geom_smooth(method = "lm", se = FALSE, color = "#2980b9", linewidth = 1.2) +
annotate("label", x = 8.5, y = 8.5, label = "GLOBAL FIT", fill = "white", color = "black", size = 3.5) +
scale_color_manual(values = cols) +
scale_shape_manual(values = shapes) +
labs(
title = "Ilustrasi Konsep CEM: Satu Garis Regresi Tunggal (Global Fit)",
x = "Investasi (X)",
y = "Keuntungan (Y)"
) +
theme_bw() +
theme(legend.position = "right")
# 2. Plot Ilustrasi Konsep FEM (Intercept Berbeda untuk Masing-Masing Entitas)
p_fem <- ggplot(df_illus, aes(x = X, y = Y, color = Perusahaan, shape = Perusahaan)) +
geom_point(size = 3, stroke = 1.2) +
geom_smooth(method = "lm", se = FALSE, linewidth = 1.1) +
annotate("label", x = 5.5, y = 14, label = "INTERCEPT BERBEDA", fill = "white", color = "black", size = 3.5) +
scale_color_manual(values = cols) +
scale_shape_manual(values = shapes) +
labs(
title = "Ilustrasi Konsep FEM: Intercept Berbeda Tiap Objek (Slope Sejajar)",
x = "Investasi (X)",
y = "Keuntungan (Y)"
) +
theme_bw() +
theme(legend.position = "right")
# 3. Plot Ilustrasi Konsep REM (Random Variance)
p_rem <- ggplot(df_illus, aes(x = X, y = Y)) +
geom_point(aes(color = Perusahaan, shape = Perusahaan), size = 3, stroke = 1.2) +
geom_smooth(method = "lm", se = FALSE, color = "grey40", linetype = "dashed", linewidth = 1.1) +
annotate("label", x = 4.5, y = 7, label = "RANDOM VARIANCE (u_i)", fill = "white", color = "black", size = 3.5) +
annotate("errorbar", x = 3.5, ymin = 3.5, ymax = 11.5, color = "#c0392b", width = 0.3, linewidth = 0.9) +
scale_color_manual(values = cols) +
scale_shape_manual(values = shapes) +
labs(
title = "Ilustrasi Konsep REM: Variansi Acak Antar-Entitas di Sekitar Garis Rata-rata",
x = "Investasi (X)",
y = "Keuntungan (Y)"
) +
theme_bw() +
theme(legend.position = "right")
print(p_cem)
print(p_fem)
print(p_rem)
Fungsi regresi panel log-linear dirumuskan sebagai berikut:
\[ \begin{aligned} \ln(\text{PDRB}_{it}) &= \beta_0 + \beta_1 \ln(\text{Investasi}_{it}) + \beta_2 \ln(\text{Pengeluaran}_{it}) + \beta_3 \text{IPM}_{it} + \alpha_i + \gamma_t + \varepsilon_{it} \end{aligned} \]
Keterangan:
\(\ln(\text{PDRB}_{it})\): Log natural PDRB provinsi \(i\) pada tahun \(t\).
\(\ln(\text{Investasi}_{it})\): Log natural realisasi investasi PMDN.
\(\ln(\text{Pengeluaran}_{it})\): Log natural pengeluaran riil per kapita.
\(\text{IPM}_{it}\): Indeks Pembangunan Manusia.
\(\alpha_i\): Efek spesifik individu (provinsi).
\(\gamma_t\): Efek spesifik waktu (periode).
\(\varepsilon_{it}\): Galat sisaan idiosinkratik.
# Konversi data frame menjadi objek panel pdata.frame
pdata <- pdata.frame(data_panel, index = c("Provinsi", "Tahun"))
formula_model <- log(PDRB_ADHK) ~ log(Investasi_PMDN) +
log(Pengeluaran_Per_Kapita) + IPM
# Estimasi Model Awal
cem <- plm(formula_model, data = pdata, model = "pooling")
fem_oneway <- plm(formula_model, data = pdata, model = "within", effect = "individual")
rem_oneway <- plm(formula_model, data = pdata, model = "random", effect = "individual")
uji_chow
##
## F test for individual effects
##
## data: formula_model
## F = 88.545, df1 = 33, df2 = 99, p-value < 2.2e-16
## alternative hypothesis: significant effects
uji_hausman
##
## Hausman Test
##
## data: formula_model
## chisq = 460.97, df = 3, p-value < 2.2e-16
## alternative hypothesis: one model is inconsistent
uji_twoway
##
## F test for twoways effects
##
## data: formula_model
## F = 3.9703, df1 = 3, df2 = 96, p-value = 0.01028
## alternative hypothesis: significant effects
Pengujian asumsi klasik dilakukan terhadap sisaan (residuals) model Two-Way Fixed Effect:
uji_jb <- jarque.bera.test(res_model)
p_val_jb_str <- ifelse(uji_jb$p.value < 0.001, "< 0.001", sprintf("%.4f", uji_jb$p.value))
uji_jb
##
## Jarque Bera Test
##
## data: res_model
## X-squared = 6735.3, df = 2, p-value < 2.2e-16
ols_base <- lm(formula_model, data = data_panel)
vif_res <- vif(ols_base)
vif_res
## log(Investasi_PMDN) log(Pengeluaran_Per_Kapita)
## 1.432668 5.215226
## IPM
## 5.041870
uji_bp <- bptest(formula_model, data = pdata, studentize = TRUE)
p_val_bp_str <- ifelse(uji_bp$p.value < 0.001, "< 0.001", sprintf("%.4f", uji_bp$p.value))
uji_bp
##
## studentized Breusch-Pagan test
##
## data: formula_model
## BP = 12.017, df = 3, p-value = 0.007326
uji_wool <- pwartest(fem_oneway)
p_val_wool_str <- ifelse(uji_wool$p.value < 0.001, "< 0.001", sprintf("%.4f", uji_wool$p.value))
uji_wool
##
## Wooldridge's test for serial correlation in FE panels
##
## data: fem_oneway
## F = 0.19141, df1 = 1, df2 = 100, p-value = 0.6627
## alternative hypothesis: serial correlation
Karena terdeteksi heteroskedastisitas antar-provinsi, kovarians standar galat dikoreksi menggunakan Cluster-Robust Standard Errors (Arellano / HC1):
# Estimasi Model Akhir dengan Robust Standard Error
model_final_robust <- coeftest(
fem_twoway,
vcov = vcovHC(
fem_twoway,
method = "arellano",
type = "HC1",
cluster = "group"
)
)
# Menyusun tabel ringkasan model akhir yang rapi (Hanya Model Robust)
tabel_model_robust <- data.frame(
Variabel = c(
"Log(Investasi PMDN)",
"Log(Pengeluaran Per Kapita)",
"IPM"
),
Koefisien = round(model_final_robust[, 1], 4),
SE_Robust = round(model_final_robust[, 2], 4),
t_Statistik = round(model_final_robust[, 3], 3),
p_Value = sprintf("%.4f", model_final_robust[, 4]),
Keputusan_alpha_0.05 = ifelse(
model_final_robust[, 4] < 0.05,
"Signifikan (Tolak H0)",
"Tidak Signifikan (Gagal Tolak H0)"
)
)
kable(
tabel_model_robust,
row.names = FALSE,
caption = "Hasil Estimasi Model Akhir Two-Way Fixed Effect (Cluster-Robust Standard Errors)",
col.names = c(
"Variabel Independen",
"Koefisien (Beta)",
"SE Robust (Arellano)",
"t-Statistik",
"p-value",
"Keputusan (Alpha = 0.05)"
),
align = c("l", "r", "r", "r", "r", "c")
)
| Variabel Independen | Koefisien (Beta) | SE Robust (Arellano) | t-Statistik | p-value | Keputusan (Alpha = 0.05) |
|---|---|---|---|---|---|
| Log(Investasi PMDN) | 0.0732 | 0.0460 | 1.592 | 0.1146 | Tidak Signifikan (Gagal Tolak H0) |
| Log(Pengeluaran Per Kapita) | 0.5955 | 1.7360 | 0.343 | 0.7323 | Tidak Signifikan (Gagal Tolak H0) |
| IPM | -0.3292 | 0.2169 | -1.518 | 0.1324 | Tidak Signifikan (Gagal Tolak H0) |
Persamaan estimasi model Two-Way Fixed Effect dengan Cluster-Robust Standard Error adalah:
\[ \begin{aligned} \widehat{\ln(\text{PDRB}_{it})} &= 0.0732 \ln(\text{Investasi}_{it}) + 0.5955 \ln(\text{Pengeluaran}_{it}) - 0.3292 \text{IPM}_{it} + \hat{\alpha}_i + \hat{\gamma}_t \end{aligned} \]