Analisis Regresi dengan Peubah Lag : Tekanan Udara Memengaruhi Kelembaban Udara

Pendahuluan

Latar Belakang

Tekanan udara adalah tenaga yang bekerja untuk menggerakkan massa udara dalam setiap satuan luas tertentu (Siswanto 2011). Faktor tekanan udara dalam memengaruhi kelembaban udara berbanding lurus. Artinya, apabila suatu tempat memiliki tekanan udara yang semakin tinggi, maka kelembaban udaranya akan semakin tinggi juga.

Tujuan

Menganalisis hubungan antara peubah tekanan udara(X) dengan kelembaban udara(Y) dengan melakukan pemodelan koyck, distribusi lag model, autoregressive model. Kemudian, melihat perbandingan antara model-model tersebut untuk mendapatkan model terbaik.

Tinjauan Pustaka

Analisis Deret Waktu

Analisis deret waktu adalah menganalisis suatu data yang diamati berdasarkan urutan waktu(jam, hari, minggu, bulan, maupun dalam tahun) dengan rentang yang sama sehingga memperoleh pola data deret waktu. Analisis ini digunakan untuk memprediksi kondisi atau nilai pada masa mendatang berdasarkan dari pengamatan sebelumnya (Maulana 2018).

Metode Koyck

Metode Koyck didasari asumsi bahwa semakin jauh jarak lag pada peubah bebas dari periode sekarang maka semakin kecil pengaruh peubah lag terhadap peubah tak bebas (Gujarati 2004). Metode Koyck digunakan ketika panjang (lag) tidak diketahui untuk menentukan estimasi model dinamis terdistribusi lag. Persamaan Koyck diakhiri dengan model autoregresif karena variabel independen Yt-1 muncul (Lihawa et al. 2022).

Model Autoregressive

Model Autoregressive Distributed Lag (ARDL) adalah model regresi yang memasukkan nilai peubah yang menjelaskan baik nilai masa sekarang atau nilai masa lalu (lag) dari peubah independen sebagai tambahan pada model yang memasukkan nilai lag dari peubah dependen sebagai salah satu peubah penjelas. Model distributed lag disebut sebagai model dynamic regression karena efek perubahan satu unit dalam nilai variabel bebas terdistribusi pada sejumlah periode waktu. Oleh karena itu, model autoregressive dan model dynamic regression sering disebut satu rangkaian yaitu autoregressive distributed lag (ARDL) (Gujarati 2006).

Data Preparation

Packages & Library

Untuk menganalisis regresi dengan peubah lag memerlukan packages sebagai berikut.

  1. dLagM
  2. dynlm
  3. MLmetrics
  4. lmtest
  5. car
lapply(c("dLagM","dynlm","MLmetrics","lmtest","car"),
       library,character.only=T)

Deklarasi & Deskripsi Data

Dataset yang digunakan adalah data Jena Climate yang bersumber dari kaggle yang dapat diakses pada link berikut https://www.kaggle.com/datasets/mnassrib/jena-climate. Data ini merupakan data timeseries yang direkam oleh Stasiun Cuaca Max Planck Institut Biogeochemistry di Jena Jerman pada setiap sepuluh menit. Data ini terdiri dari 420551 amatan yang direkam sejak 1 Januari 2009 hingga 31 Desember 2016. Kemudian, diambil 2 dari 15 peubah dengan 143 amatan pada tanggal 31 Desember 2016, yaitu Kelembaban sebagai peubah (Y) dan Tekanan Udara sebagaipeubah (X) yang akan dianalisis.

#INPUT DATA
dt.climate <- read.csv("D:/Semester 5/MPDW/Pertemuan 4/jena_climate_2009_2016.csv")
dt.climate <- dt.climate[(420407:420550),-c(2:7,9,11:15)]
View(dt.climate)
colnames(dt.climate)[1] <- "Periode Waktu"
colnames(dt.climate)[2] <- "Tekanan Udara"
colnames(dt.climate)[3] <- "Kelembaban"
head(dt.climate)
##              Periode Waktu Tekanan Udara Kelembaban
## 420407 31.12.2016 00:00:00          4.14       2.56
## 420408 31.12.2016 00:10:00          4.09       2.53
## 420409 31.12.2016 00:20:00          4.06       2.51
## 420410 31.12.2016 00:30:00          4.07       2.51
## 420411 31.12.2016 00:40:00          4.03       2.49
## 420412 31.12.2016 00:50:00          3.86       2.39
Yt <- dt.climate$`Kelembaban`
Xt <- dt.climate$`Tekanan Udara`

Splitting & Setting Data

Kemudian, dilakukan splitting data sebanyak 80% (115/143 amatan) data train dan sebanyak 20% (28/143 amatan) data test.

#SPLIT DATA
train<-dt.climate[(1:115),]
test<-dt.climate[(116:143),]

#TIME SERIES
train.ts<-ts(train)
test.ts<-ts(test)
data.ts<-ts(dt.climate)

Eksplorasi Data

Time Series Plot

#Time Series Plot Tekanan Udara
plot(ts(Xt), main = "Time Series Plot Tekanan Udara", xlab = "Periode Waktu", ylab="Tekanan Udara")
points(Xt)

Dapat dilihat bahwa pola data peubah tekanan udara cenderung membetuk pola data gabungan, yaitu pola tren positif dan pola tren negatif.

#Time Series Plot Kelembaban
plot(ts(Yt), main = "Time Series Plot Kelembaban", xlab = "Periode Waktu", ylab="Kelembaban")
points(Yt)

Dapat dilihat bahwa pola data peubah kelembaban cenderung membetuk pola data gabungan, yaitu pola tren positif dan pola tren negatif.

Korelasi

cor(Xt, Yt)
## [1] 0.9997938

Scatter Plot

plot(Xt,Yt, pch = 20, col = "#A10035", xlab = "Tekanan Udara", ylab = "Kelembaban", main = "Scatter Plot Kelembaban vs Tekanan Udara")
abline(lm(Yt ~ Xt), col = "blue", lwd = 2)

Dapat dilihat bahwa hubungan antara Peubah Tekanan Udara(X) dan Kelembaban(Y) memiliki hubungan linear positif dengan nilai korelasi sebesar 0.9997938. Artinya, kedua peubah memiliki hubungan linear positif kuat.

Analisis Data

Model Koyck

#MODEL KOYCK
Yt_train <- train$Kelembaban
Xt_train <- train$`Tekanan Udara`
model.koyck <- dLagM :: koyckDlm(x=Xt_train , y=Yt_train)
summary(model.koyck)
## 
## Call:
## "Y ~ (Intercept) + Y.1 + X.t"
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.191273 -0.053416  0.006365  0.051770  0.190265 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)  0.05886    0.21843   0.269    0.788
## Y.1          1.51935    3.62678   0.419    0.676
## X.t         -0.33756    2.30392  -0.147    0.884
## 
## Residual standard error: 0.07918 on 111 degrees of freedom
## Multiple R-Squared: 0.9476,  Adjusted R-squared: 0.9466 
## Wald test:  1035 on 2 and 111 DF,  p-value: < 2.2e-16 
## 
## Diagnostic tests:
## NULL
## 
##                               alpha       beta      phi
## Geometric coefficients:  -0.1133388 -0.3375601 1.519354
#AIC dan BIC
AIC(model.koyck)
## [1] -249.7282
BIC(model.koyck)
## [1] -238.7834
#ramalan
(fore.koyck <- forecast(model = model.koyck, x=test$`Tekanan Udara`, h=28))
## $forecasts
##  [1]    2.461433    2.492293    2.542555    2.629049    2.790843    3.094051
##  [7]    3.527727    4.206887    5.245523    6.793197    9.175043   12.790534
## [13]   18.263491   26.585598   39.229824   58.440876   87.629259  131.983491
## [19]  199.383385  301.831551  457.510184  693.973589 1053.255277 1599.195393
## [25] 2428.685061 3688.976675 5603.798718 8513.104276
## 
## $call
## forecast.koyckDlm(model = model.koyck, x = test$`Tekanan Udara`, 
##     h = 28)
## 
## attr(,"class")
## [1] "forecast.koyckDlm" "dLagM"
#MAPE data testing
mape.koyck <- MAPE(fore.koyck$forecasts, test$Kelembaban)

#akurasi data training
mape_train <- dLagM::GoF(model.koyck)["MAPE"]

c("MAPE_testing" = mape.koyck, "MAPE_training" = mape_train)
## $MAPE_testing
## [1] 428.2624
## 
## $MAPE_training.MAPE
## [1] 0.02765901

Regression with Distributed Lag

Regression with Distributed Lag (lag=2)

model.dlm = dLagM::dlm(x = Xt_train,y = Yt_train , q = 2)
summary(model.dlm)
## 
## Call:
## lm(formula = model.formula, data = design)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0146427 -0.0028151  0.0001628  0.0029713  0.0111684 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.030131   0.003344  -9.009 7.74e-15 ***
## x.t          0.628610   0.005848 107.483  < 2e-16 ***
## x.1         -0.005546   0.008769  -0.632    0.528    
## x.2          0.004608   0.005866   0.786    0.434    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.005012 on 109 degrees of freedom
## Multiple R-squared:  0.9998, Adjusted R-squared:  0.9998 
## F-statistic: 1.758e+05 on 3 and 109 DF,  p-value: < 2.2e-16
## 
## AIC and BIC values for the model:
##         AIC       BIC
## 1 -870.2598 -856.6228
#AIC dan BIC
AIC(model.dlm)
## [1] -870.2598
BIC(model.dlm)
## [1] -856.6228
#ramalan
(fore.dlm <- forecast(model = model.dlm, x=test$`Tekanan Udara`, h=28))
## $forecasts
##  [1] 2.536709 2.398386 2.393688 2.373872 2.317417 2.210914 2.261731 2.222788
##  [9] 2.210917 2.267326 2.210160 2.217360 2.254606 2.241747 2.242135 2.242043
## [17] 2.242043 2.229470 2.210723 2.129078 2.085658 2.211169 2.190879 2.072531
## [25] 2.048302 2.041362 2.053806 2.028504
## 
## $call
## forecast.dlm(model = model.dlm, x = test$`Tekanan Udara`, h = 28)
## 
## attr(,"class")
## [1] "forecast.dlm" "dLagM"
#MAPE data testing
mape.dlm <- MAPE(fore.dlm$forecasts, test$Kelembaban)

#akurasi data training
mape_train <- GoF(model.dlm)["MAPE"]

c("MAPE_testing" = mape.dlm, "MAPE_training" = mape_train)
## $MAPE_testing
## [1] 0.004659511
## 
## $MAPE_training.MAPE
## [1] 0.001651307

Penentuan Lag Optimum

colnames(train)[1] <- "t"
colnames(train)[2] <- "Xt"
colnames(train)[3] <- "Yt"
finiteDLMauto(formula = Yt ~ Xt,
              data = data.frame(train), q.min = 1, q.max = 4 ,
              model.type = "dlm", error.type = "AIC", trace = TRUE)
##   q - k    MASE       AIC       BIC   GMRAE   MBRAE R.Adj.Sq    Ljung-Box
## 1     1 0.09542 -878.4156 -867.4708 0.31855 0.11894  0.99979 3.395206e-11
## 2     2 0.09262 -870.2598 -856.6228 0.29448 0.12481  0.99979 4.838441e-11
## 3     3 0.09059 -863.1071 -846.7961 0.24480 0.10974  0.99979 4.210713e-10
## 4     4 0.08753 -861.6810 -842.7143 0.24268 0.12384  0.99981 7.553411e-10

Regression with Distributed Lag (lag=4)

#model dlm dengan lag optimum
model.dlm2 = dLagM::dlm(x = Xt_train,y = Yt_train, q = 4)
summary(model.dlm2)
## 
## Call:
## lm(formula = model.formula, data = design)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0144416 -0.0029453 -0.0001422  0.0029875  0.0110514 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.0304441  0.0032473  -9.375 1.55e-15 ***
## x.t          0.6284264  0.0056995 110.260  < 2e-16 ***
## x.1         -0.0069474  0.0084757  -0.820    0.414    
## x.2          0.0098651  0.0086003   1.147    0.254    
## x.3         -0.0026215  0.0086223  -0.304    0.762    
## x.4         -0.0009137  0.0058043  -0.157    0.875    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.004817 on 105 degrees of freedom
## Multiple R-squared:  0.9998, Adjusted R-squared:  0.9998 
## F-statistic: 1.138e+05 on 5 and 105 DF,  p-value: < 2.2e-16
## 
## AIC and BIC values for the model:
##        AIC       BIC
## 1 -861.681 -842.7143
#AIC dan BIC
AIC(model.dlm2)
## [1] -861.681
BIC(model.dlm2)
## [1] -842.7143
#ramalan
(fore.dlm2 <- forecast(model = model.dlm2, x=test$`Tekanan Udara`, h=28))
## $forecasts
##  [1] 2.536277 2.398743 2.394650 2.373405 2.317460 2.211184 2.261839 2.222164
##  [9] 2.211329 2.267380 2.210083 2.217988 2.254519 2.241786 2.242572 2.242209
## [17] 2.242206 2.229656 2.210942 2.129258 2.085928 2.210914 2.190349 2.073432
## [25] 2.048858 2.040874 2.053643 2.028546
## 
## $call
## forecast.dlm(model = model.dlm2, x = test$`Tekanan Udara`, h = 28)
## 
## attr(,"class")
## [1] "forecast.dlm" "dLagM"
#akurasi testing
mape.dlm2 <- MAPE(fore.dlm2$forecasts, test$Kelembaban)

#akurasi data training
mape_train <- GoF(model.dlm2)["MAPE"]

c("MAPE_testing" = mape.dlm2, "MAPE_training" = mape_train)
## $MAPE_testing
## [1] 0.004612677
## 
## $MAPE_training.MAPE
## [1] 0.001590233

Model Autoregressive / Dynamic Regression

#MODEL AUTOREGRESSIVE 
#library(dLagM)
model.ardl = ardlDlm(x = Xt_train, y = Yt_train, p = 1 , q = 1)
summary(model.ardl)
## 
## Time series regression with "ts" data:
## Start = 2, End = 115
## 
## Call:
## dynlm(formula = as.formula(model.text), data = data, start = 1)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0120774 -0.0025107  0.0001804  0.0027584  0.0096264 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.011312   0.003407  -3.320  0.00122 ** 
## X.t          0.626206   0.004549 137.665  < 2e-16 ***
## X.1         -0.388636   0.046178  -8.416 1.60e-13 ***
## Y.1          0.621484   0.073650   8.438 1.43e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.003933 on 110 degrees of freedom
## Multiple R-squared:  0.9999, Adjusted R-squared:  0.9999 
## F-statistic: 2.861e+05 on 3 and 110 DF,  p-value: < 2.2e-16
#AIC dan BIC
AIC(model.ardl)
## [1] -933.3185
BIC(model.ardl)
## [1] -919.6375
#ramalan
(fore.ardl <- forecast(model = model.ardl, x=test$`Tekanan Udara`, h=28))
## $forecasts
##  [1] 2.538937 2.400494 2.393692 2.374565 2.317978 2.211333 2.261219 2.223559
##  [9] 2.210948 2.267242 2.210892 2.217110 2.254661 2.242156 2.242157 2.242158
## [17] 2.242158 2.229634 2.210837 2.129408 2.085489 2.210639 2.191905 2.072942
## [25] 2.047801 2.041460 2.053929 2.028858
## 
## $call
## forecast.ardlDlm(model = model.ardl, x = test$`Tekanan Udara`, 
##     h = 28)
## 
## attr(,"class")
## [1] "forecast.ardlDlm" "dLagM"
#akurasi testing
mape.ardl <- MAPE(fore.ardl$forecasts, test$Kelembaban) #data testing

#akurasi data training
mape_train <- GoF(model.ardl)["MAPE"]

c("MAPE_testing" = mape.ardl, "MAPE_training" = mape_train)
## $MAPE_testing
## [1] 0.004539664
## 
## $MAPE_training.MAPE
## [1] 0.00132682
#penentuan lag optimum
colnames(dt.climate)[1] <- "t"
colnames(dt.climate)[2] <- "Xt"
colnames(dt.climate)[3] <- "Yt"
ardlBoundOrders(data = data.frame(dt.climate) , formula = Yt ~ Xt )
## $p
##   Xt
## 1 15
## 
## $q
## [1] 1
## 
## $Stat.table
##            q = 1     q = 2     q = 3     q = 4     q = 5     q = 6     q = 7
## p = 1  -1167.325 -1157.213 -1150.964 -1140.016 -1130.893 -1132.573 -1121.398
## p = 2  -1157.695 -1167.294 -1160.787 -1149.399 -1140.046 -1138.616 -1127.295
## p = 3  -1160.708 -1160.708 -1161.756 -1150.391 -1140.687 -1139.157 -1127.730
## p = 4  -1146.164 -1150.353 -1150.353 -1151.019 -1141.377 -1141.179 -1129.718
## p = 5  -1137.290 -1142.370 -1141.358 -1141.358 -1139.670 -1139.272 -1127.837
## p = 6  -1135.941 -1138.767 -1138.548 -1139.674 -1139.674 -1139.521 -1128.053
## p = 7  -1127.453 -1130.240 -1129.121 -1130.054 -1128.054 -1128.054 -1126.555
## p = 8  -1111.217 -1114.726 -1114.678 -1116.762 -1114.988 -1115.128 -1115.128
## p = 9  -1105.447 -1106.878 -1106.954 -1108.342 -1106.342 -1105.783 -1104.355
## p = 10 -1095.494 -1097.390 -1098.382 -1098.991 -1096.992 -1096.634 -1094.828
## p = 11 -1088.859 -1090.429 -1090.261 -1090.463 -1088.592 -1087.713 -1086.280
## p = 12 -1092.730 -1092.727 -1092.727 -1091.735 -1090.506 -1089.184 -1088.441
## p = 13 -1076.663 -1077.986 -1078.097 -1078.702 -1077.418 -1076.516 -1075.945
## p = 14 -1057.861 -1059.242 -1061.133 -1061.497 -1059.586 -1058.837 -1057.486
## p = 15 -1045.740 -1047.230 -1049.263 -1050.137 -1048.149 -1048.480 -1046.607
##            q = 8     q = 9    q = 10    q = 11    q = 12    q = 13    q = 14
## p = 1  -1110.863 -1102.605 -1093.678 -1082.708 -1074.975 -1064.196 -1053.429
## p = 2  -1116.074 -1106.353 -1098.019 -1086.831 -1078.280 -1067.066 -1056.124
## p = 3  -1116.389 -1107.495 -1099.707 -1088.432 -1080.054 -1068.858 -1058.256
## p = 4  -1118.526 -1109.551 -1100.861 -1089.856 -1081.463 -1070.360 -1059.336
## p = 5  -1116.641 -1107.564 -1098.861 -1087.873 -1079.573 -1068.432 -1057.426
## p = 6  -1116.642 -1107.598 -1099.046 -1088.135 -1080.659 -1069.569 -1058.266
## p = 7  -1115.132 -1105.869 -1097.227 -1086.242 -1078.854 -1067.834 -1056.538
## p = 8  -1113.684 -1104.367 -1095.381 -1084.352 -1076.873 -1065.841 -1054.547
## p = 9  -1104.355 -1102.401 -1093.384 -1082.356 -1074.917 -1063.912 -1052.648
## p = 10 -1093.014 -1093.014 -1093.665 -1082.538 -1075.102 -1064.186 -1052.888
## p = 11 -1084.295 -1082.601 -1082.601 -1090.282 -1083.847 -1072.268 -1060.689
## p = 12 -1087.171 -1085.367 -1083.546 -1083.546 -1086.704 -1075.519 -1064.241
## p = 13 -1074.262 -1072.964 -1072.275 -1075.478 -1075.478 -1073.676 -1062.332
## p = 14 -1055.555 -1053.581 -1052.853 -1059.416 -1062.253 -1062.253 -1061.177
## p = 15 -1044.790 -1042.918 -1043.001 -1052.371 -1056.921 -1054.974 -1054.974
##           q = 15
## p = 1  -1045.459
## p = 2  -1048.818
## p = 3  -1050.911
## p = 4  -1051.749
## p = 5  -1049.750
## p = 6  -1050.791
## p = 7  -1048.817
## p = 8  -1047.009
## p = 9  -1045.017
## p = 10 -1045.038
## p = 11 -1054.826
## p = 12 -1058.622
## p = 13 -1056.638
## p = 14 -1055.340
## p = 15 -1055.400
## 
## $min.Stat
## [1] -1167.325

Perbandingan Keakuratan Ramalan

#PERBANDINGAN
akurasi <- matrix(c(mape.koyck, mape.dlm, mape.dlm2, mape.ardl))
row.names(akurasi)<- c("Koyck","DLM 1","DLM 2","Autoregressive")
colnames(akurasi) <- c("MAPE")
knitr::kable(akurasi, align = "c")
MAPE
Koyck 428.2623613
DLM 1 0.0046595
DLM 2 0.0046127
Autoregressive 0.0045397

Berdasarkan perbandingan ukuran akurasi MAPE di atas, model autoregressive memiliki nilai MAPE terkecil dibandingkan dengan model koyck, DLM 1, dan DLM 2. Oleh karena itu, dapat disimpulkan bahwa model autoregressive merupakan model yang terbaik.

#PLOT
par(mfrow=c(1,1))
plot(test$`Tekanan Udara`, test$Kelembaban, type="b", col="black")
points(test$`Tekanan Udara`, fore.koyck$forecasts,col="red")
lines(test$`Tekanan Udara`, fore.koyck$forecasts,col="red")
points(test$`Tekanan Udara`, fore.dlm$forecasts,col="blue")
lines(test$`Tekanan Udara`, fore.dlm$forecasts,col="blue")
points(test$`Tekanan Udara`, fore.dlm2$forecasts,col="orange")
lines(test$`Tekanan Udara`, fore.dlm2$forecasts,col="orange")
points(test$`Tekanan Udara`, fore.ardl$forecasts,col="green")
lines(test$`Tekanan Udara`, fore.ardl$forecasts,col="green")
legend("topleft",c("aktual", "koyck","DLM 1","DLM 2", "autoregressive"), lty=1, col=c("black","red","blue","orange","green"), cex=0.8)

Berdasarkan plot di atas, dapat dilihat bahwa model autoregressive yang paling mendekati data aktual dibandingkan 3 model lainnya.

Uji Diagnostik Model Autoregressive

Uji Non-Autokorelasi

bgtest(model.ardl$model)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  model.ardl$model
## LM test = 7.2602, df = 1, p-value = 0.00705

Dari hasil pengujian di atas, nilai p-value < 0.05 sehingga Tolak H0. Artinya, tidak cukup bukti untuk menyatakan bahwa sisaan saling bebas atau tidak ada autokorelasi pada taraf nyata 5%.

Uji Heterogenitas

#heterogenitas
bptest(model.ardl$model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model.ardl$model
## BP = 5.9171, df = 3, p-value = 0.1157

Dari hasil pengujian di atas, nilai p-value > 0.05 sehingga Tak Tolak H0. Artinya, cukup bukti untuk menyatakan bahwa ragam sisaan homogen pada taraf nyata 5%.

Uji Normalitas

#shapiro wilk
ujinormal <- shapiro.test(residuals(model.ardl))
## Time Series:
## Start = 2 
## End = 115 
## Frequency = 1 
##             2             3             4             5             6 
## -1.918178e-03 -3.919265e-03 -9.410720e-03 -4.761183e-04  2.863164e-03 
##             7             8             9            10            11 
## -1.207737e-02 -2.699775e-04 -2.042097e-03 -5.257002e-03 -1.288155e-03 
##            12            13            14            15            16 
## -1.615550e-03 -8.648217e-03  1.898978e-04 -1.502399e-03  2.741910e-03 
##            17            18            19            20            21 
##  2.053793e-03 -4.535663e-03 -1.419911e-03  1.104211e-03 -4.095117e-03 
##            22            23            24            25            26 
## -1.686812e-03  3.344767e-03 -2.198620e-03 -4.395347e-03 -7.565602e-04 
##            27            28            29            30            31 
##  3.504413e-03 -3.252791e-03  2.796966e-03  4.302910e-03 -5.421628e-03 
##            32            33            34            35            36 
##  1.646308e-03 -3.825817e-03 -2.501899e-04  1.930215e-04  7.091267e-03 
##            37            38            39            40            41 
## -3.764599e-03  2.980692e-04  6.623289e-03  9.965824e-05  1.709203e-04 
##            42            43            44            45            46 
## -2.222992e-04  7.003341e-03 -5.799014e-03 -1.455446e-03  1.822617e-03 
##            47            48            49            50            51 
##  3.809707e-03  2.824857e-03 -1.700352e-03 -4.420114e-03 -2.614666e-03 
##            52            53            54            55            56 
##  2.007030e-03  3.303336e-03 -5.174056e-03  7.385334e-03 -5.663579e-04 
##            57            58            59            60            61 
##  3.515640e-03  3.171581e-03  2.400975e-03  4.828610e-03 -2.974663e-03 
##            62            63            64            65            66 
## -1.708913e-03 -1.444678e-03 -1.967712e-03 -1.276929e-03  2.477674e-03 
##            67            68            69            70            71 
##  2.576827e-03 -6.536750e-03  1.778330e-03 -3.057610e-03  5.976145e-03 
##            72            73            74            75            76 
## -1.108454e-03  2.763906e-03 -6.236521e-03  7.515917e-04  3.443741e-04 
##            77            78            79            80            81 
##  1.921580e-03 -7.202988e-04  2.364791e-03  7.437562e-04 -3.074006e-03 
##            82            83            84            85            86 
## -4.563286e-03  1.423313e-03  4.063251e-03  3.488285e-03 -3.021348e-03 
##            87            88            89            90            91 
##  1.291558e-03 -7.893528e-04  4.853187e-03 -4.491298e-03  6.088775e-04 
##            92            93            94            95            96 
## -2.685850e-03  2.802939e-03  4.179068e-03 -8.149414e-03  1.996339e-03 
##            97            98            99           100           101 
##  1.041320e-03  1.547690e-03 -2.881032e-03  3.168725e-03  7.005817e-03 
##           102           103           104           105           106 
## -8.077695e-03  2.645691e-03  1.627513e-03  8.402431e-04  9.626426e-03 
##           107           108           109           110           111 
## -8.660521e-04  4.870309e-03  3.295769e-03 -4.421705e-04  3.293103e-03 
##           112           113           114           115 
## -3.495291e-05  1.619410e-03  6.747476e-03 -2.743487e-03
ujinormal$p.value
## [1] 0.554043

Dari hasil pengujian di atas, nilai p-value > 0.05 sehingga Tak Tolak H0. Artinya, cukup bukti untuk meyatakan bahwa sisaan menyebar normal pada taraf nyaa 5%.

Kesimpulan

Berdasarkan hasil analisis regresi dengan peubah lag, didapatkan bahwa model autoregressive merupakan model terbaik untuk data time series dengan peubah tekanan udara (X) dan peubah kelembaban udara (Y) karena memiliki nilai MAPE terkecil. Meskipun begitu, hasil pengujian diagnostik model masih ada yang belum memenuhi sehingga model tersebut masih memerlukan penanganan lebih lanjut.

Daftar Pustaka

Gujarati DN. 2004. Basic Econometrics. Fourth Edition. New York: The McGrawHill.

Gujarati DN. 2006. Ekonometrika Dasar. Jakarta: Erlangga.

Lihawa SH, Resmawan, Isa DR, Nashar LO. 2022. Distributed lag model pengaruh jumlah uang beredar terhadap nilai tukar rupiah menggunakan metode koyck dan almon. Jambura Journal of Probability and Statistics. 3(1): 40-45.

Maulana HA. 2018. Pemodelan deret waktu dan peramalan curah hujan pada dua belas stasiun di bogor. Jurnal Matematika, Statistika, & Komputasi. 15(1): 51-63.

Siswanto KY. 2011. Model fungsi transfer multivariat dan aplikasinya untuk meramalkan curah hujan di kota yogyakarta. [skripsi]. Yogyakarta: Universitas Negeri Yogyakarta].