library(plm)
library(spdep)
library(readxl)
library(tidyverse)
library(dplyr)
library(tidyr)
library(DT)
data <- read_excel("C:/Users/Dicky Girsang/Desktop/2023 Kolokium/data_penelitian.xlsx", sheet = "Sheet4")
data <- data %>%
pivot_longer(cols = -Provinsi,
names_to = c(".value", "Tahun"),
names_pattern = "(\\w+)_(\\d{4})")
dengan rata-rata Y tahun sebelumnya di setiap provinsi
data_filled <- data %>%
group_by(Provinsi) %>%
mutate(Y = ifelse(is.na(Y), mean(Y, na.rm = TRUE), Y))
print(data_filled)
## # A tibble: 238 × 7
## # Groups: Provinsi [34]
## Provinsi Tahun Y X1 X2 X3 X4
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ACEH 2016 26.4 38.0 54.4 74.5 848.
## 2 ACEH 2017 23.5 49.8 62.1 70.6 873.
## 3 ACEH 2018 37.1 33.3 70.9 70.7 839.
## 4 ACEH 2019 22 49.8 64 70.0 819.
## 5 ACEH 2020 13.4 65.4 68.0 70.1 815.
## 6 ACEH 2021 12.1 66.7 69.3 74.4 834.
## 7 ACEH 2022 8 65.9 68.0 70.7 807.
## 8 SUMATERA UTARA 2016 24.4 33.5 64.0 69.7 1456.
## 9 SUMATERA UTARA 2017 16 50.9 63.6 67.2 1454.
## 10 SUMATERA UTARA 2018 32.4 25.7 71.9 68.3 1325.
## # ℹ 228 more rows
data <- data_filled
datatable(data, options = list(scrollX = TRUE, pageLength = 10))
summary(data)
## Provinsi Tahun Y X1
## Length:238 Length:238 Min. : 0.100 Min. :21.27
## Class :character Class :character 1st Qu.: 9.325 1st Qu.:50.70
## Mode :character Mode :character Median :18.650 Median :59.27
## Mean :18.135 Mean :58.61
## 3rd Qu.:25.530 3rd Qu.:68.15
## Max. :42.700 Max. :81.46
## X2 X3 X4
## Min. :19.63 Min. :27.44 Min. : 41.12
## 1st Qu.:70.38 1st Qu.:55.90 1st Qu.: 195.70
## Median :77.52 Median :62.65 Median : 366.16
## Mean :74.49 Mean :62.25 Mean : 785.72
## 3rd Qu.:82.20 3rd Qu.:67.80 3rd Qu.: 838.18
## Max. :92.78 Max. :90.12 Max. :4703.30
vif_model <- lm(Y ~ X1 + X2 + X3 + X4, data = data)
vif_values <- car::vif(vif_model)
print(vif_values)
## X1 X2 X3 X4
## 1.027088 1.287308 1.314296 1.044224
VIF<10, Tidak ada indikasi multikolinearitas yang signifikan dalam model regresi Anda, karena semua nilai VIF berada dalam rentang yang dapat diterima
cem_model <- plm(Y ~ X1 + X2 + X3 + X4, data = data, model = "within", effect = "individual")
fem_model <- plm(Y ~ X1 + X2 + X3 + X4, data = data, model = "within", effect = "time")
rem_model <- plm(Y ~ X1 + X2 + X3 + X4, data = data, model = "random")
print(summary(cem_model))
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = Y ~ X1 + X2 + X3 + X4, data = data, effect = "individual",
## model = "within")
##
## Balanced Panel: n = 34, T = 7, N = 238
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -14.91971 -3.04976 -0.13102 2.85868 17.69158
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## X1 -0.5590876 0.0443771 -12.5986 < 2e-16 ***
## X2 -0.1245355 0.0589183 -2.1137 0.03578 *
## X3 0.0093254 0.1067226 0.0874 0.93046
## X4 0.0074912 0.0048807 1.5349 0.12640
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 16022
## Residual Sum of Squares: 7319.1
## R-Squared: 0.54319
## Adj. R-Squared: 0.45869
## F-statistic: 59.4557 on 4 and 200 DF, p-value: < 2.22e-16
print(summary(fem_model))
## Oneway (time) effect Within Model
##
## Call:
## plm(formula = Y ~ X1 + X2 + X3 + X4, data = data, effect = "time",
## model = "within")
##
## Balanced Panel: n = 34, T = 7, N = 238
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -13.46855 -3.37131 -0.23679 3.33873 17.55714
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## X1 0.13257638 0.03934249 3.3698 0.0008838 ***
## X2 -0.06986366 0.03669190 -1.9041 0.0581667 .
## X3 -0.27774167 0.03729299 -7.4476 1.967e-12 ***
## X4 -0.00095365 0.00032503 -2.9340 0.0036893 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 9789
## Residual Sum of Squares: 6598.5
## R-Squared: 0.32593
## Adj. R-Squared: 0.29623
## F-statistic: 27.4398 on 4 and 227 DF, p-value: < 2.22e-16
Terdapat perbedaan dalam hasil antara model dengan efek individu (CEM) dan efek waktu (FEM). - Model CEM memiliki R-squared yang lebih tinggi, menunjukkan bahwa model ini lebih baik dalam menjelaskan variabilitas dalam Y. Namun, dalam model FEM, efek waktu dan hubungan antara peubah X1 dan X3 terbukti signifikan. - Model CEM ini menghasilkan R-squared sebesar 0.54319, yang mengindikasikan bahwa sekitar 54.32% variabilitas dalam Y dapat dijelaskan oleh X1, X2, X3, dan X4 dalam model ini.
# Uji Chow untuk memilih antara CEM dan FEM
chow_test <- pFtest(cem_model, fem_model)
print(chow_test)
##
## F test for individual effects
##
## data: Y ~ X1 + X2 + X3 + X4
## F = -0.72924, df1 = 27, df2 = 200, p-value = 1
## alternative hypothesis: significant effects
# Uji Chow untuk memilih antara CEM dan FEM
chow_test <- pFtest(cem_model, fem_model)
print(chow_test)
##
## F test for individual effects
##
## data: Y ~ X1 + X2 + X3 + X4
## F = -0.72924, df1 = 27, df2 = 200, p-value = 1
## alternative hypothesis: significant effects
# Inisialisasi objek selected_model
selected_model <- NULL
selected_model_type <- ""
# Jika hasil uji Chow signifikan, maka pilih model dengan efek individu (CEM)
if (chow_test$p.value < 0.05) {
selected_model <- cem_model
selected_model_type <- "CEM"
} else {
# Jika uji Chow tidak signifikan, lakukan uji Breusch Pagan
bp_test <- plmtest(fem_model, type = c("bp"))
print(bp_test)
# Jika hasil uji Breusch Pagan signifikan, pilih model dengan efek waktu (FEM)
if (bp_test$p.value < 0.05) {
selected_model <- fem_model
selected_model_type <- "FEM"
} else {
# Jika uji Breusch Pagan tidak signifikan, lakukan uji Hausman
hausman_test <- phtest(fem_model, cem_model)
print(hausman_test)
# Jika hasil uji Hausman menunjukkan perbedaan signifikan antara model CEM dan FEM, pilih model CEM
if (hausman_test$p.value < 0.05) {
selected_model <- cem_model
selected_model_type <- "CEM"
} else {
# Jika uji Hausman tidak signifikan, pilih model dengan efek waktu (FEM)
selected_model <- fem_model
selected_model_type <- "FEM"
}
}
}
##
## Lagrange Multiplier Test - (Breusch-Pagan)
##
## data: Y ~ X1 + X2 + X3 + X4
## chisq = 61.471, df = 1, p-value = 4.494e-15
## alternative hypothesis: significant effects
print(summary(selected_model))
## Oneway (time) effect Within Model
##
## Call:
## plm(formula = Y ~ X1 + X2 + X3 + X4, data = data, effect = "time",
## model = "within")
##
## Balanced Panel: n = 34, T = 7, N = 238
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -13.46855 -3.37131 -0.23679 3.33873 17.55714
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## X1 0.13257638 0.03934249 3.3698 0.0008838 ***
## X2 -0.06986366 0.03669190 -1.9041 0.0581667 .
## X3 -0.27774167 0.03729299 -7.4476 1.967e-12 ***
## X4 -0.00095365 0.00032503 -2.9340 0.0036893 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 9789
## Residual Sum of Squares: 6598.5
## R-Squared: 0.32593
## Adj. R-Squared: 0.29623
## F-statistic: 27.4398 on 4 and 227 DF, p-value: < 2.22e-16
print(paste("Model terpilih:", selected_model_type))
## [1] "Model terpilih: FEM"
Jadi, hasil ini mengindikasikan bahwa model FEM adalah yang terbaik untuk data panel ini. Peubah X1, X2, X3, dan X4 masing-masing memiliki pengaruh pada Y, dengan X3 memiliki pengaruh negatif yang sangat signifikan. R-squared yang lebih rendah menunjukkan bahwa sebagian besar variasi dalam Y tetap tidak dijelaskan oleh model ini, dan faktor lain mungkin perlu dipertimbangkan
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
jarque_bera_test <- jarque.bera.test(fem_model$residuals)
print(jarque_bera_test)
##
## Jarque Bera Test
##
## data: fem_model$residuals
## X-squared = 3.6229, df = 2, p-value = 0.1634
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
bptest(fem_model)
##
## studentized Breusch-Pagan test
##
## data: fem_model
## BP = 21.357, df = 4, p-value = 0.000269
dw_test <- plm::pwartest(fem_model, alternative = "two.sided")
print(dw_test)
##
## Wooldridge's test for serial correlation in FE panels
##
## data: fem_model
## F = 138.13, df1 = 1, df2 = 202, p-value < 2.2e-16
## alternative hypothesis: serial correlation
Secara keseluruhan, model mungkin memiliki residu yang berdistribusi normal, tetapi menunjukkan heteroskedastisitas dan korelasi serial. Mungkin perlu menangani masalah-masalah ini saat menginterpretasikan hasil atau mempertimbangkan model alternatif untuk memperbaiki masalah tersebut