library(readxl)
library(ggplot2)
library(tseries)Registered S3 method overwritten by 'quantmod':
method from
as.zoo.data.frame zoo
library(forecast)Dalam analisis ini, data bulanan tingkat inflasi di Indonesia dari Januari 2016 hingga Desember 2020 akan diunduh dari sumber resmi seperti Badan Pusat Statistik (BPS), kemudian disajikan dalam bentuk plot time series untuk mengidentifikasi pola dan tren. Dilakukan uji stasioneritas, dan jika ditemukan ketidakan stasioneran, proses differencing akan diterapkan. Parameter model ARIMA yang sesuai akan ditentukan menggunakan plot ACF dan PACF, dan model ARIMA akan dilatih dengan data hingga Desember 2020. Selanjutnya, model ini akan divalidasi dengan data aktual pada periode Januari hingga Desember 2021, dan metrik evaluasi seperti RMSE akan digunakan untuk mengukur kinerja model. Akhirnya, model ARIMA yang telah dilatih akan digunakan untuk membuat prediksi tingkat inflasi untuk tahun 2022, dan hasilnya akan dibandingkan dengan data aktual jika tersedia. Analisis ini bertujuan untuk memahami dan memprediksi tingkat inflasi dengan menggunakan metode ARIMA.
Library yang digunakan dalam analisis ini meliputi: readxl, ggplot2, tseries, forceast.
library(readxl)
library(ggplot2)
library(tseries)Registered S3 method overwritten by 'quantmod':
method from
as.zoo.data.frame zoo
library(forecast)Dalam analisis ini menggunakan Data Inflasi Indonesia dari tahun 2016 sampai dengan tahun 2020, bersumber dari Badan Pusat Statistik (BPS) Indonesia. Data yang telah di masukkan menggunakan fungsi dari read_excel dengan nama file Inflasi.xlsx.
Selanjutnya data yang digunakan kemudian di trasnformasi kedalam bentuk time series dengan menggunkan fungsi dari ts.
data <- read_excel("Inflasi.xlsx",
sheet = "Sheet2")
data.ts <- ts(data,
frequency=12,
start=c(2016,1))
print(data.ts) Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2016 4.14 4.42 4.45 3.60 3.33 3.45 3.21 2.79 3.07 3.31 3.58 3.02
2017 3.49 3.83 3.61 4.17 4.33 4.37 3.88 3.82 3.72 3.58 3.30 3.61
2018 3.25 3.18 3.40 3.41 3.23 3.12 3.18 3.20 2.88 3.16 3.23 3.13
2019 2.82 2.57 2.48 2.83 3.32 3.28 3.32 3.49 3.39 3.13 3.00 2.72
2020 2.68 2.98 2.96 2.67 2.19 1.96 1.54 1.32 1.42 1.44 1.59 1.68
plot(data.ts, xlab = "Periode",
ylab = "Inflasi",
col="black",
main = "Inflasi")
points(data.ts)Uji stasioner dilakukan untuk mengetahui apakah data deret waktu yang digunakan bersifat stasioner atau tidak stasioner. Sifat kestasioneran (stationary) sangat penting bagi data time series, karena jika suatu data time series tidak stasioner maka kita hanya dapat mempelajari perilakunya pada waktu tertentu, sedangkan untuk peramalan (forecasting) akan sulit untuk dilakukan. Pengujian terhadap keberadaan unit root untuk semua variabel yang dimasukkan dalam model menunjukkan bahwa seluruh variabel pada level tidak mepunyai unit root atau dapat dikatakan sema variabel stasioner. Dalam Analisis ini menggunakan unit root dengan menggunakan pendekatan uji Augmented Dickey-Fuller (ADF) dan Kwiatkowski-Phillips-Schmidt-Shin (KPSS). uji Augmented Dickey-Fuller (ADF) menggunakan fungsi adf.test dan Kwiatkowski-Phillips-Schmidt-Shin (KPSS) menggunakan fungsi kpss.test.
adf.test(data.ts)
Augmented Dickey-Fuller Test
data: data.ts
Dickey-Fuller = -2.5124, Lag order = 3, p-value = 0.3677
alternative hypothesis: stationary
kpss.test(data.ts)Warning in kpss.test(data.ts): p-value smaller than printed p-value
KPSS Test for Level Stationarity
data: data.ts
KPSS Level = 1.0417, Truncation lag parameter = 3, p-value = 0.01
Berdasarkan hasil uji Augmented Dickey-Fuller diperoleh p-value sebesar 0.3667 > 0.05 yang berarti bahwa H0 gagal ditolak atau data tidak stasioner. Karena data tidak stasioner maka selanjutnya dilakukan differencing untuk membuat data stasioner sebelum dilakukan identifikasi model tentatif.
Apabila ditemukan data yang tidak stasioner, maka harus menstasionerkan data terlebih dahulu dengan proses differencing. Proses differencing dilakukan sampai data menjadi stasioner
data.dif1<-diff(data.ts,
differences = 1)
plot(data.dif1,
main = "Data yang Telah di-Differencing")adf.test(data.dif1)
Augmented Dickey-Fuller Test
data: data.dif1
Dickey-Fuller = -3.5252, Lag order = 3, p-value = 0.0472
alternative hypothesis: stationary
Hasilnya hanya perlu 1 kali differencing untuk membuat data stasioner. Jadi model dasar ini bahwa model optimal hanya membutuhkan 1 kali differencing.
plot ACF (Autocorrelation Function) dan PACF (Partial Autocorrelation Function) dari data yang telah didifferencing. Plot ini akan membantu Anda menentukan nilai p (lag untuk model AR) dan q (lag untuk model MA). Selanjutnya Kami membuat model ARIMA menggunakan fungsi auto.arima, fungsi otomatis ini akan memberikan hasil yang optimal dari model arima.
acf(data.dif1,
main="Plot ACF Data Inflasi")pacf(data.dif1,
main="Plot PACF Data Inflasi")auto.arima(data,
trace = TRUE)
ARIMA(2,1,2) with drift : 22.14357
ARIMA(0,1,0) with drift : 21.15307
ARIMA(1,1,0) with drift : 22.9851
ARIMA(0,1,1) with drift : 22.77065
ARIMA(0,1,0) : 20.30916
ARIMA(1,1,1) with drift : 24.28718
Best model: ARIMA(0,1,0)
Series: data
ARIMA(0,1,0)
sigma^2 = 0.07976: log likelihood = -9.12
AIC=20.24 AICc=20.31 BIC=22.32
Model yang kita peroleh adalah ARIMA(0,1,0), seperti yang kita prediksi sebelum differencing optimum adalah 1, kita bisa melihatnya dari ARIMA(p,d,q) sehingga differencing berdasarkan model adalah d = 1.
Model ARIMA dengan parameter yang telah ditentukan menggunakan data tingkat inflasi sebelum Desember 2020.
data20.train <- ts(data.ts[1:59,1])
data2 <-ts(data20.train,
frequency=12,
start=c(2016,1))
print(data2) Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2016 4.14 4.42 4.45 3.60 3.33 3.45 3.21 2.79 3.07 3.31 3.58 3.02
2017 3.49 3.83 3.61 4.17 4.33 4.37 3.88 3.82 3.72 3.58 3.30 3.61
2018 3.25 3.18 3.40 3.41 3.23 3.12 3.18 3.20 2.88 3.16 3.23 3.13
2019 2.82 2.57 2.48 2.83 3.32 3.28 3.32 3.49 3.39 3.13 3.00 2.72
2020 2.68 2.98 2.96 2.67 2.19 1.96 1.54 1.32 1.42 1.44 1.59
plot(data2,
main = "Data Sebelum Desember 2020")model_arima <- Arima(data2, order = c(0, 1, 0))
summary(model_arima)Series: data2
ARIMA(0,1,0)
sigma^2 = 0.081: log likelihood = -9.41
AIC=20.82 AICc=20.89 BIC=22.88
Training set error measures:
ME RMSE MAE MPE MAPE MASE
Training set -0.04315017 0.2821743 0.2256634 -2.068089 7.658258 0.3267461
ACF1
Training set 0.07864049
RMSE adalah akar dari rata-rata kuadrat dari selisih antara nilai aktual dan prediksi. RMSE adalah ukuran kesalahan model yang umum digunakan. Dalam konteks ini, RMSE adalah sekitar 0.2821743, yang berarti rata-rata selisih antara prediksi dan nilai aktual adalah sekitar 0.2821743.
Validasi model ARIMA dengan membandingkan prediksi tingkat inflasi pada periode Januari 2021 hingga Desember 2021 dengan data aktual 2021.
prediksi <- forecast(model_arima, h = 13)
prediksi Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
Dec 2020 1.59 1.2252750 1.954725 1.03220126 2.147799
Jan 2021 1.59 1.0742010 2.105799 0.80115346 2.378847
Feb 2021 1.59 0.9582778 2.221722 0.62386425 2.556136
Mar 2021 1.59 0.8605500 2.319450 0.47440253 2.705597
Apr 2021 1.59 0.7744501 2.405550 0.34272411 2.837276
May 2021 1.59 0.6966099 2.483390 0.22367772 2.956322
Jun 2021 1.59 0.6250284 2.554972 0.11420326 3.065797
Jul 2021 1.59 0.5584019 2.621598 0.01230692 3.167693
Aug 2021 1.59 0.4958250 2.684175 -0.08339621 3.263396
Sep 2021 1.59 0.4366383 2.743362 -0.17391448 3.353914
Oct 2021 1.59 0.3803441 2.799656 -0.26000912 3.440009
Nov 2021 1.59 0.3265556 2.853444 -0.34227150 3.522272
Dec 2021 1.59 0.2749653 2.905035 -0.42117194 3.601172
plot(prediksi, main = "Prediksi Tingkat Inflasi")data2021 <- read_excel("Inflasi.xlsx", sheet = "2021")
data.aktual2021 <- ts(data2021,
frequency=12,
start=c(2021,1))
print(data.aktual2021) Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2021 1.55 1.38 1.37 1.42 1.68 1.33 1.52 1.59 1.60 1.66 1.75 1.87
plot(prediksi, main = "Prediksi ARIMA vs Tingkat Inflasi Aktual")
lines(data.aktual2021,
col = "red")
legend("topleft",
legend = c("Prediksi", "Aktual"),
col = c("black", "blue"), lty = 1)Model ARIMA yang telah dilatih untuk membuat prediksi tingkat inflasi untuk tahun 2022 dan pebandingan prediksi dengan data aktual 2022
prediksi2 <- forecast(model_arima, h = 25)
prediksi2 Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
Dec 2020 1.59 1.2252750106 1.954725 1.03220126 2.147799
Jan 2021 1.59 1.0742009734 2.105799 0.80115346 2.378847
Feb 2021 1.59 0.9582777875 2.221722 0.62386425 2.556136
Mar 2021 1.59 0.8605500211 2.319450 0.47440253 2.705597
Apr 2021 1.59 0.7744501305 2.405550 0.34272411 2.837276
May 2021 1.59 0.6966098794 2.483390 0.22367772 2.956322
Jun 2021 1.59 0.6250283810 2.554972 0.11420326 3.065797
Jul 2021 1.59 0.5584019468 2.621598 0.01230692 3.167693
Aug 2021 1.59 0.4958250317 2.684175 -0.08339621 3.263396
Sep 2021 1.59 0.4366383138 2.743362 -0.17391448 3.353914
Oct 2021 1.59 0.3803440583 2.799656 -0.26000912 3.440009
Nov 2021 1.59 0.3265555750 2.853444 -0.34227150 3.522272
Dec 2021 1.59 0.2749653491 2.905035 -0.42117194 3.601172
Jan 2022 1.59 0.2253240491 2.954676 -0.49709176 3.677092
Feb 2022 1.59 0.1774261899 3.002574 -0.57034522 3.750345
Mar 2022 1.59 0.1311000422 3.048900 -0.64119494 3.821195
Apr 2022 1.59 0.0862003442 3.093800 -0.70986311 3.889863
May 2022 1.59 0.0426029202 3.137397 -0.77653961 3.956540
Jun 2022 1.59 0.0002006288 3.179799 -0.84138832 4.021388
Jul 2022 1.59 -0.0410997390 3.221100 -0.90455178 4.084552
Aug 2022 1.59 -0.0813798720 3.261380 -0.96615493 4.146155
Sep 2022 1.59 -0.1207118385 3.300712 -1.02630798 4.206308
Oct 2022 1.59 -0.1591596017 3.339160 -1.08510876 4.265109
Nov 2022 1.59 -0.1967802412 3.376780 -1.14264457 4.322645
Dec 2022 1.59 -0.2336249472 3.413625 -1.19899368 4.378994
plot(prediksi2, main = "Prediksi Tingkat Inflasi")data2022 <- read_excel("Inflasi.xlsx", sheet = "2022")
View(data2022)
data.aktual2022 <- ts(data2022,
frequency=12,
start=c(2022))
print(data.aktual2022) Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2022 2.18 2.06 2.64 3.47 3.55 4.35 4.94 4.69 5.95 5.71 5.42 5.51
# Plot prediksi dan data aktual
plot(prediksi2, main = "Prediksi ARIMA vs Tingkat Inflasi Aktual 2022")
lines(data.aktual2022, col = "Red")
legend("topleft", legend = c("Prediksi", "Aktual"), col = c("black", "blue"), lty = 1)Dalam analisis ini, kami menggunakan paket “readxl” untuk membaca file Excel dan mengimpor data, paket “plm” untuk analisis data panel, paket “car” untuk analisis regresi dan uji statistik, paket “tseries” untuk analisis deret waktu, dan paket “lmtest” untuk uji statistik pada model regresi. Dengan menggunakan paket-paket ini, kami dapat melakukan berbagai analisis yang relevan dengan data yang kami miliki. data penlitian ini terdiri dari data NPL (%) dan Loan Growth (%) dari usaha UMKM selama periode 2013-2022
library(readxl)
library(plm)
library(car)Loading required package: carData
library(tseries)
library(lmtest)Loading required package: zoo
Attaching package: 'zoo'
The following objects are masked from 'package:base':
as.Date, as.Date.numeric
library(car)library(readxl)
data <- read_excel("datapanelsukma.xlsx")
View(data)Dalam analisis ini, data Anda telah berhasil ditransformasikan menjadi bentuk panel data menggunakan fungsi pdata.frame() dari paket plm dalam bahasa pemrograman R. Dalam pemodelan data panel, penting untuk mengorganisir data ke dalam bentuk yang tepat, di mana unit pengamatan yang sama diamati dalam beberapa periode waktu. Dengan melakukan transformasi ini, Anda dapat menganalisis hubungan antara variabel dalam unit yang sama seiring wfgsdghndaktu. Dalam kasus ini, data Anda telah diubah menjadi format panel dengan variabel “Code” dan “Year” sebagai indeks panel. Transformasi ini memungkinkan Anda untuk melihat dan menganalisis efek individual serta efek waktu dalam data panel. Data yang digunkan dalam analisis ini
Data_panel <- pdata.frame(x = data, index = c("Code", "Years"))
Data_panel Code Years LG NPL
Kecil-2013 Kecil 2013 13.3784947 4.28
Kecil-2014 Kecil 2014 1.2634659 7.11
Kecil-2015 Kecil 2015 5.3006095 8.29
Kecil-2016 Kecil 2016 21.1352631 4.30
Kecil-2017 Kecil 2017 15.9289716 9.92
Kecil-2018 Kecil 2018 11.2211246 10.65
Kecil-2019 Kecil 2019 15.5924142 10.71
Kecil-2020 Kecil 2020 5.0290992 11.50
Kecil-2021 Kecil 2021 9.6029626 9.70
Kecil-2022 Kecil 2022 12.4020749 10.58
Mikro-2013 Mikro 2013 22.3437464 2.46
Mikro-2014 Mikro 2014 33.4349969 7.89
Mikro-2015 Mikro 2015 3.2608435 9.35
Mikro-2016 Mikro 2016 0.7886032 2.10
Mikro-2017 Mikro 2017 3.5794390 10.36
Mikro-2018 Mikro 2018 5.3061058 10.38
Mikro-2019 Mikro 2019 7.3932107 12.31
Mikro-2020 Mikro 2020 -10.8462265 12.21
Mikro-2021 Mikro 2021 -5.7506882 10.29
Mikro-2022 Mikro 2022 12.8095137 11.15
Sedang-2013 Sedang 2013 14.5706545 2.72
Sedang-2014 Sedang 2014 17.6259485 3.72
Sedang-2015 Sedang 2015 23.9017644 4.48
Sedang-2016 Sedang 2016 13.0785907 5.06
Sedang-2017 Sedang 2017 21.3822279 7.07
Sedang-2018 Sedang 2018 24.0751438 6.71
Sedang-2019 Sedang 2019 19.9497852 8.30
Sedang-2020 Sedang 2020 7.1611026 8.91
Sedang-2021 Sedang 2021 13.6369994 7.75
Sedang-2022 Sedang 2022 23.6661920 10.42
Dalam analisis ini, kami menggunakan data panel yang terdiri dari unit pengamatan yang sama diamati dalam beberapa periode waktu. Dalam analisis data panel, terdapat beberapa jenis model yang digunakan untuk mengestimasi hubungan antara variabel-variabel dalam data panel. Model-model yang umum digunakan adalah common effect, fixed effect, dan random effect.
Model common effect adalah salah satu jenis model dalam analisis data panel yang memperhitungkan efek individu yang bersifat tetap dan umum bagi semua unit pengamatan. Dalam model ini, efek individu dianggap sebagai variabel yang tidak diamati dan mempengaruhi semua unit pengamatan dalam data panel.. Model fixed effect memperhitungkan efek individual yang konsisten pada setiap unit pengamatan, dengan menambahkan variabel dummy untuk setiap unit. Model random effect memperhitungkan efek individual yang tidak tetap antara unit-unit pengamatan dengan mengasumsikan distribusi acak. Sedangkan, model common effect memperhitungkan efek individu yang umum bagi semua unit pengamatan.
common_model <- plm(NPL ~ LG, data = Data_panel, model = "pooling")
summary(common_model)Pooling Model
Call:
plm(formula = NPL ~ LG, data = Data_panel, model = "pooling")
Balanced Panel: n = 3, T = 10, N = 30
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-7.25440 -2.17801 0.29746 2.37906 3.76525
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
(Intercept) 9.447457 0.858734 11.0016 1.123e-11 ***
LG -0.118004 0.055876 -2.1119 0.04375 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Total Sum of Squares: 274.87
Residual Sum of Squares: 237.1
R-Squared: 0.1374
Adj. R-Squared: 0.10659
F-statistic: 4.46006 on 1 and 28 DF, p-value: 0.043748
fixed_model <- plm(NPL ~ LG, data = Data_panel, model = "within", effect = "individual")
summary(fixed_model)Oneway (individual) effect Within Model
Call:
plm(formula = NPL ~ LG, data = Data_panel, effect = "individual",
model = "within")
Balanced Panel: n = 3, T = 10, N = 30
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-7.31104 -1.78363 0.86565 1.91483 4.40765
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
LG -0.087072 0.063698 -1.367 0.1833
Total Sum of Squares: 240.62
Residual Sum of Squares: 224.49
R-Squared: 0.06705
Adj. R-Squared: -0.040598
F-statistic: 1.86859 on 1 and 26 DF, p-value: 0.18334
random_model <- plm(NPL ~ LG, data = Data_panel, model = "random")
summary(random_model)Oneway (individual) effect Random Effect Model
(Swamy-Arora's transformation)
Call:
plm(formula = NPL ~ LG, data = Data_panel, model = "random")
Balanced Panel: n = 3, T = 10, N = 30
Effects:
var std.dev share
idiosyncratic 8.634 2.938 1
individual 0.000 0.000 0
theta: 0
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-7.25440 -2.17801 0.29746 2.37906 3.76525
Coefficients:
Estimate Std. Error z-value Pr(>|z|)
(Intercept) 9.447457 0.858734 11.0016 <2e-16 ***
LG -0.118004 0.055876 -2.1119 0.0347 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Total Sum of Squares: 274.87
Residual Sum of Squares: 237.1
R-Squared: 0.1374
Adj. R-Squared: 0.10659
Chisq: 4.46006 on 1 DF, p-value: 0.034696
Untuk memilih model yang paling tepat terdapat beberapa pengujian yang dapat dilakukan, antara lain:
Uji Chow Chow test adalah pengujian untuk menentukan model apakah Common Effect (CE) ataukah Fixed Effect (FE) yang paling tepat digunakan dalam mengestimasi data panel. Apabila Hasil: H0: Pilih PLS (CE) H1: Pilih FE (FE)
Uji Hausman Hausman test adalah pengujian statistik untuk memilih apakah model Fixed Effect atau Random Effect yang paling tepat digunakan. Apabila Hasil: H0: Pilih RE H1: Pilih FE.
Uji Lagrange Multiplier Uji Lagrange Multiplier (LM) adalah uji untuk mengetahui apakah model Random Effect lebih baik daripada metode Common Effect (PLS) digunakan. Apabila Hasil: H0: Pilih PLS H1: Pilih RE.
# Uji Chow
chow_test <- pooltest(common_model, fixed_model)
chow_test
F statistic
data: NPL ~ LG
F = 0.73044, df1 = 2, df2 = 26, p-value = 0.4913
alternative hypothesis: unstability
# Uji Hausman
hausman_test <- phtest(fixed_model, random_model)
hausman_test
Hausman Test
data: NPL ~ LG
chisq = 1.023, df = 1, p-value = 0.3118
alternative hypothesis: one model is inconsistent
# Uji Lagrange Multiplier
lagrange_test <- plmtest(fixed_model, effect = "individual", type = "bp")
lagrange_test
Lagrange Multiplier Test - (Breusch-Pagan)
data: NPL ~ LG
chisq = 0.51131, df = 1, p-value = 0.4746
alternative hypothesis: significant effects
kriteria pemilihan model yang paling tepat adalah berdasarkan p-value dengan tingkat signifikansi 0.05 (atau nilai alpha yang sejenis), mari kita evaluasi hasil pengujian dengan kriteria ini:
Pada pengujian Chow test, p-value adalah 0.4913. Dengan tingkat signifikansi 0.05, karena p-value (0.4913) lebih besar dari alpha (0.05), kita tidak memiliki cukup bukti statistik untuk menolak hipotesis nol (H0: Pilih PLS/CE). Oleh karena itu, berdasarkan kriteria ini, kita tidak memilih Fixed Effect (FE). Hasil Hausman test menunjukkan p-value adalah 0.3118. Dengan tingkat signifikansi 0.05, karena p-value (0.3118) juga lebih besar dari alpha (0.05), kita tidak memiliki cukup bukti statistik untuk menolak hipotesis nol (H0: Pilih RE). Oleh karena itu, berdasarkan kriteria ini, kita tidak memilih Fixed Effect (FE) juga. Hasil Lagrange Multiplier Test menunjukkan p-value adalah 0.4746. Dengan tingkat signifikansi 0.05, p-value (0.4746) lebih besar dari alpha (0.05), yang menunjukkan bahwa kita tidak memiliki cukup bukti statistik untuk menolak hipotesis nol (H0: Pilih PLS/CE). Oleh karena itu, berdasarkan kriteria ini, kita tidak memilih Random Effect (RE). Berdasarkan hasil penelitian maka random effect model yang digunakan dalam analisis ini
# Uji Jarque-Bera
jarque_bera_test <- jarque.bera.test(residuals(random_model))
jarque_bera_test
Jarque Bera Test
data: residuals(random_model)
X-squared = 2.7596, df = 2, p-value = 0.2516
Hasil Jarque-Bera Test menunjukkan bahwa nilai uji chi-squared adalah 2.7596 dengan derajat kebebasan (df) sebesar 2, dan p-value sebesar 0.2516. Dalam konteks uji normalitas, Jarque-Bera Test digunakan untuk menguji apakah residual dari model yang digunakan (dalam hal ini, “random_model”) mengikuti distribusi normal.
# Uji Breusch-Pagan
breusch_pagan_test <- bptest(random_model)
breusch_pagan_test
studentized Breusch-Pagan test
data: random_model
BP = 0.0012441, df = 1, p-value = 0.9719
# Uji White
white_test <- bptest(random_model, studentize = FALSE)
white_test
Breusch-Pagan test
data: random_model
BP = 0.0010616, df = 1, p-value = 0.974
Hasil uji Breusch-Pagan menunjukkan bahwa p-value untuk kedua model, yaitu “random_model” dan “fixed_model,” cukup besar. Uji Breusch-Pagan digunakan untuk menguji kehadiran heteroskedastisitas dalam residual dari model regresi. Dalam konteks “random_model,” nilai uji Breusch-Pagan (BP) adalah 0.0012441 dengan derajat kebebasan (df) sebesar 1, dan p-value sebesar 0.9719. Sementara pada “random_model,” nilai uji Breusch-Pagan (BP) adalah 0.0010616 dengan df = 1, dan p-value sebesar 0.974. Dalam keduanya, p-value yang cukup besar, melebihi tingkat signifikansi umumnya pada 0.05, menunjukkan bahwa tidak ada cukup bukti statistik untuk menolak hipotesis nol. Dengan demikian, hasil ini menyiratkan bahwa tidak ada bukti yang cukup untuk menyatakan adanya heteroskedastisitas dalam residual dari kedua model
residuals_fixed <- residuals(random_model)
residuals_fixed Kecil-2013 Kecil-2014 Kecil-2015 Kecil-2016 Kecil-2017 Kecil-2018
-3.58874064 -2.18836256 -0.53196345 -2.65341090 2.35222585 2.52668105
Kecil-2019 Kecil-2020 Kecil-2021 Kecil-2022 Mikro-2013 Mikro-2014
3.10251073 2.64599724 1.38573145 2.59603791 -4.35080503 2.38800695
Mikro-2015 Mikro-2016 Mikro-2017 Mikro-2018 Mikro-2019 Mikro-2020
0.28733600 -7.25439827 1.33493154 1.55868514 3.73497188 1.48264523
Mikro-2021 Mikro-2022 Sedang-2013 Sedang-2014 Sedang-2015 Sedang-2016
0.16393916 3.21411732 -5.00806101 -3.64752408 -2.14695267 -2.84413051
Sedang-2017 Sedang-2018 Sedang-2019 Sedang-2020 Sedang-2021 Sedang-2022
0.14573194 0.10350681 1.20669796 0.30758219 -0.08823605 3.76524884
bg_test <- bgtest(random_model, order = 1, type = "F")
bg_test
Breusch-Godfrey test for serial correlation of order up to 1
data: random_model
LM test = 0.54292, df1 = 1, df2 = 27, p-value = 0.4676
Hasil uji Breusch-Godfrey menunjukkan bahwa p-value untuk model “random_model” adalah 0.4676. Uji Breusch-Godfrey digunakan untuk menguji kehadiran autokorelasi (korelasi antara residual dalam deret waktu).
Dalam hasil ini, dengan tingkat signifikansi umumnya diatur pada 0.05, p-value (0.4676) lebih besar dari alpha (0.05). Oleh karena itu, kita tidak memiliki cukup bukti statistik untuk menolak hipotesis nol. Hipotesis nol dalam uji Breusch-Godfrey adalah bahwa tidak ada autokorelasi dalam residual model.
Berdasarkan hasil ini, kita dapat menyimpulkan bahwa dalam “random_model,” tidak ada cukup bukti statistik untuk menyatakan adanya autokorelasi hingga urutan 1 (order up to 1) dalam residual.
Melakukan pendugaan parameter menggunakan First Differences generalized method of moments (FD-GMM) Arellano dan Bond (1991) melakukan prosedur pembedaan pertama (first difference) pada persamaan regresi data panel dinamis tanpa peubah penjelas untuk memperoleh instrumen first difference yang valid (berkorelasi dengan yi,t- 1-yi,t-2 dan tidak berkorelasi dengan vi,t-vi,t-1 sehingga menghilangkan pengaruh individu μi). Instrumen GMM dengan lag dari peubah respons mulai dari t-2, atau disebut FD-GMM.
gmm_model <- pgmm(formula = NPL ~ lag(NPL) + LG | lag(NPL, 2),
data = Data_panel, effect = "individual", model = "onestep",
transformation = "d")Warning in pgmm(formula = NPL ~ lag(NPL) + LG | lag(NPL, 2), data = Data_panel,
: the second-step matrix is singular, a general inverse is used
summary(gmm_model)Warning in vcovHC.pgmm(object): a general inverse is used
Oneway (individual) effect One-step model Difference GMM
Call:
pgmm(formula = NPL ~ lag(NPL) + LG | lag(NPL, 2), data = Data_panel,
effect = "individual", model = "onestep", transformation = "d")
Balanced Panel: n = 3, T = 10, N = 30
Number of Observations Used: 24
Residuals:
Min. 1st Qu. Median Mean 3rd Qu. Max.
-7.2630 -0.2415 0.5508 0.6120 1.6254 7.8345
Coefficients:
Estimate Std. Error z-value Pr(>|z|)
lag(NPL) -0.078581 0.147829 -0.5316 0.5950
LG -0.051681 0.040736 -1.2687 0.2046
Sargan test: chisq(7) = 3 (p-value = 0.885)
Autocorrelation test (1): normal = -1.672849 (p-value = 0.094357)
Autocorrelation test (2): normal = 1.282483 (p-value = 0.19967)
Wald test for coefficients: chisq(2) = 1.944687 (p-value = 0.3782)
Analisis data panel menggunakan model GMM dengan efek individu (one-way individual effect), model satu langkah (onestep), dan perbedaan (difference) menghasilkan beberapa temuan kunci. Data panel terdiri dari 30 unit individu dengan masing-masing memiliki 10 periode waktu, meskipun dalam analisis hanya menggunakan 24 observasi. Hasil model menunjukkan bahwa koefisien untuk lag(NPL) dan LG memiliki p-value yang lebih besar dari tingkat signifikansi umumnya, menunjukkan bahwa keduanya tidak signifikan dalam mempengaruhi NPL. Uji statistik, seperti uji Sargan dan uji autokorelasi, menunjukkan konsistensi model dengan instrumen dan ketiadaan autokorelasi. Meskipun demikian, penting untuk merinci implikasi praktis dari temuan ini dalam konteks analisis data panel dan mempertimbangkan asumsi-asumsi yang mendasarinya.
Dalam analisis data ekonometrika, metode Ordinary Least Squares (OLS) sering digunakan untuk memodelkan hubungan antara variabel dependen dan variabel independen. Namun, terkadang kita menghadapi situasi di mana ada variabel instrumental yang berkorelasi dengan variabel independen dan variabel dependen yang tidak bersifat eksogen. Dalam kasus ini, metode Two-Stage Least Squares (2SLS) dapat digunakan untuk menangani masalah endogenitas variabel.
Analisis data di atas merupakan bagian dari penelitian yang mencoba untuk memahami hubungan antara variabel Loan Growth (LG), Baki Debet (BD), Non-Performing Loans (NPL), dan Jumlah Rekening (JR) dalam konteks skala usaha yang berbeda. Analisis dilakukan dengan menggunakan metode Ordinary Least Squares (OLS) dan metode regresi dua tahap terbatas (2SLS) untuk mengatasi masalah potensial endogenitas dalam model.
library(AER)Loading required package: sandwich
Loading required package: survival
data2sls <- read_excel("data2sls.xlsx")
head(data2sls)# A tibble: 6 × 6
`Skala Usaha` Periode LG BD NPL JR
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Mikro 2013 22.3 118889 2.46 6.65
2 <NA> 2014 33.4 158640 7.89 9.22
3 <NA> 2015 3.26 176412 9.35 10.2
4 <NA> 2016 0.789 195621 2.1 11.8
5 <NA> 2017 3.58 221409 10.4 12.2
6 <NA> 2018 5.31 251336 10.4 12.4
reg <- lm(LG ~ log(BD) + NPL, data = data2sls)
summary(reg)
Call:
lm(formula = LG ~ log(BD) + NPL, data = data2sls)
Residuals:
Min 1Q Median 3Q Max
-16.906 -4.396 -0.470 5.838 24.649
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -43.9270 58.0612 -0.757 0.456
log(BD) 5.2898 4.6849 1.129 0.269
NPL -1.3473 0.5721 -2.355 0.026 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 9.096 on 27 degrees of freedom
Multiple R-squared: 0.1763, Adjusted R-squared: 0.1153
F-statistic: 2.889 on 2 and 27 DF, p-value: 0.07293
Hasil analisis OLS menunjukkan bahwa variabel logaritma Baki Debet (log(BD)) dan NPL memiliki pengaruh yang signifikan terhadap variabel Loan Growth (LG) pada tingkat kepercayaan tertentu. Koefisien log(BD) memiliki dampak positif yang signifikan pada LG, sedangkan koefisien NPL memiliki dampak negatif yang signifikan. Namun, perlu diingat bahwa hasil analisis OLS belum mengatasi masalah potensial endogenitas.
iv <- ivreg(LG ~ log(BD) + NPL | NPL + JR, data = data2sls)
summary(iv)
Call:
ivreg(formula = LG ~ log(BD) + NPL | NPL + JR, data = data2sls)
Residuals:
Min 1Q Median 3Q Max
-30.61822 -17.59031 -0.08909 11.12843 60.44725
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -723.293 1121.565 -0.645 0.524
log(BD) 60.288 90.792 0.664 0.512
NPL -3.249 3.420 -0.950 0.350
Residual standard error: 22.47 on 27 degrees of freedom
Multiple R-Squared: -4.028, Adjusted R-squared: -4.401
Wald test: 0.5894 on 2 and 27 DF, p-value: 0.5617
Untuk mengatasi masalah endogenitas, analisis dilanjutkan dengan metode 2SLS. Hasil analisis 2SLS menunjukkan bahwa penggunaan instrumental variabel (JR) untuk menggantikan variabel NPL dalam model tidak memberikan hasil yang signifikan. Koefisien log(BD) dan NPL tetap tidak signifikan dalam model 2SLS. Hasil ini mengindikasikan bahwa pemilihan instrumental variabel mungkin tidak cukup tepat untuk mengatasi endogenitas dalam model.
reg1 <- lm(log(BD) ~ NPL + JR, data = data2sls)
summary(reg1)
Call:
lm(formula = log(BD) ~ NPL + JR, data = data2sls)
Residuals:
Min 1Q Median 3Q Max
-0.71859 -0.24815 -0.01284 0.31711 0.60635
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12.342376 0.192271 64.193 <2e-16 ***
NPL 0.039906 0.023733 1.681 0.104
JR -0.005415 0.008107 -0.668 0.510
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.3706 on 27 degrees of freedom
Multiple R-squared: 0.09515, Adjusted R-squared: 0.02813
F-statistic: 1.42 on 2 and 27 DF, p-value: 0.2593
BD_hat <- fitted(reg1)reg2 <- lm(LG ~ BD_hat + NPL, data = data2sls)
summary(reg2)
Call:
lm(formula = LG ~ BD_hat + NPL, data = data2sls)
Residuals:
Min 1Q Median 3Q Max
-17.5776 -5.1638 -0.2751 5.4642 22.2897
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -723.293 441.880 -1.637 0.113
BD_hat 60.288 35.771 1.685 0.103
NPL -3.249 1.347 -2.412 0.023 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 8.855 on 27 degrees of freedom
Multiple R-squared: 0.2195, Adjusted R-squared: 0.1617
F-statistic: 3.797 on 2 and 27 DF, p-value: 0.03523
Hasil analisis dengan model regresi LM (Least Squares) menunjukkan bahwa variabel Loan Growth (LG) secara signifikan dipengaruhi oleh variabel instrumental BD_hat dan Non-Performing Loans (NPL). Koefisien BD_hat memiliki nilai sekitar 60.288, dengan standar error sekitar 35.771, menunjukkan dampak positif yang signifikan pada variabel Loan Growth (LG) pada tingkat kepercayaan sekitar 90%. Di sisi lain, koefisien NPL memiliki nilai sekitar -3.249, dengan standar error sekitar 1.347, dan menunjukkan dampak negatif yang signifikan pada variabel Loan Growth (LG) pada tingkat kepercayaan sekitar 95%. Meskipun koefisien intersep negatif, ia tidak signifikan pada tingkat kepercayaan yang tinggi, menunjukkan bahwa ketika kedua variabel BD_hat dan NPL adalah nol, Loan Growth (LG) tidak selalu nol. Statistik-model, seperti residual standard error, multiple R-squared, dan adjusted R-squared, memberikan informasi tentang kualitas model. Residual standard error adalah sekitar 8.855, yang mengukur sebaran residu di sekitar garis regresi. Multiple R-squared adalah sekitar 0.2195, yang mengindikasikan sejauh mana model menjelaskan variasi dalam variabel dependen. Adjusted R-squared adalah sekitar 0.1617, yang memperhitungkan jumlah variabel independen dalam model. F-statistic adalah sekitar 3.797, dan p-value adalah sekitar 0.03523, mengukur signifikansi keseluruhan model.