Tugas Individu MPDW Pertemua 4

Library

Sebelum melakukan pemodelan diperlukan library-library sebagai berikut:

## Loading required package: nardl
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## Loading required package: dynlm
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:dLagM':
## 
##     MAPE
## The following object is masked from 'package:base':
## 
##     Recall
## Loading required package: carData

data yang digunakan merupakan data hubungan temperature rata-rata dan kelembapan dengans satuan waktu harian

data <- read.csv("C:/Users/Agsyan/Documents/kuliah IPB/Metode Peramalan Deret Waktu/DailyDelhiClimateTest.csv")
View(data)
train <- data[1:81,]
test <- data[82:108,]

train.ts <- ts(train)
test.ts <- ts(test)
data.ts <- ts(data)
train
##          date meantemp humidity wind_speed meanpressure
## 1  2017-01-01 15.91304 85.86957   2.743478       59.000
## 2  2017-01-02 18.50000 77.22222   2.894444     1018.278
## 3  2017-01-03 17.11111 81.88889   4.016667     1018.333
## 4  2017-01-04 18.70000 70.05000   4.545000     1015.700
## 5  2017-01-05 18.38889 74.94444   3.300000     1014.333
## 6  2017-01-06 19.31818 79.31818   8.681818     1011.773
## 7  2017-01-07 14.70833 95.83333  10.041667     1011.375
## 8  2017-01-08 15.68421 83.52632   1.950000     1015.550
## 9  2017-01-09 14.57143 80.80952   6.542857     1015.952
## 10 2017-01-10 12.11111 71.94444   9.361111     1016.889
## 11 2017-01-11 11.00000 72.11111   9.772222     1016.778
## 12 2017-01-12 11.78947 74.57895   6.626316     1016.368
## 13 2017-01-13 13.23529 67.05882   6.435294     1017.529
## 14 2017-01-14 13.20000 74.28000   5.276000     1018.840
## 15 2017-01-15 16.43478 72.56522   3.630435     1018.130
## 16 2017-01-16 14.65000 78.45000  10.380000     1017.150
## 17 2017-01-17 11.72222 84.44444   8.038889     1018.389
## 18 2017-01-18 13.04167 78.33333   6.029167     1021.958
## 19 2017-01-19 14.61905 75.14286  10.338095     1022.810
## 20 2017-01-20 15.26316 66.47368  11.226316     1021.789
## 21 2017-01-21 15.39130 70.86957  13.695652     1020.478
## 22 2017-01-22 18.44000 76.24000   5.868000     1021.040
## 23 2017-01-23 18.11765 76.00000   6.752941     1019.824
## 24 2017-01-24 18.34783 68.13043   3.391304     1018.870
## 25 2017-01-25 21.00000 69.96000   8.756000     1018.400
## 26 2017-01-26 16.17857 91.64286   8.467857     1017.786
## 27 2017-01-27 16.50000 77.04167  14.358333     1018.125
## 28 2017-01-28 14.86364 82.77273   9.690909     1019.636
## 29 2017-01-29 15.66667 81.77778  10.294444     1017.389
## 30 2017-01-30 16.44444 77.55556   4.322222     1015.833
## 31 2017-01-31 16.12500 76.00000   4.625000     1015.500
## 32 2017-02-01 15.25000 78.62500   5.100000     1017.500
## 33 2017-02-02 17.09091 66.54545   3.027273     1018.909
## 34 2017-02-03 15.63636 78.18182   1.854545     1017.727
## 35 2017-02-04 18.70000 77.60000   9.820000     1014.400
## 36 2017-02-05 18.63158 77.63158   8.100000     1014.211
## 37 2017-02-06 16.88889 69.66667   9.044444     1016.000
## 38 2017-02-07 15.12500 63.75000   7.637500     1016.125
## 39 2017-02-08 15.70000 68.40000   4.080000     1015.600
## 40 2017-02-09 15.37500 68.37500   7.875000     1016.375
## 41 2017-02-10 14.66667 71.77778   9.066667     1015.667
## 42 2017-02-11 15.62500 64.00000   3.950000     1016.625
## 43 2017-02-12 16.25000 70.37500   1.625000     1019.625
## 44 2017-02-13 16.33333 67.00000   6.377778     1021.556
## 45 2017-02-14 16.87500 65.50000   6.962500     1021.375
## 46 2017-02-15 17.57143 67.71429   5.557143     1020.571
## 47 2017-02-16 20.25000 56.75000  10.437500     1017.625
## 48 2017-02-17 21.30000 64.40000   9.280000     1016.500
## 49 2017-02-18 21.12500 70.75000   6.250000     1016.250
## 50 2017-02-19 22.36364 66.09091   6.054545     1013.000
## 51 2017-02-20 23.37500 60.12500   6.937500     1005.375
## 52 2017-02-21 21.83333 69.41667  12.341667     1007.417
## 53 2017-02-22 19.12500 57.12500   7.412500     1012.250
## 54 2017-02-23 18.62500 42.87500  14.350000     1015.250
## 55 2017-02-24 19.12500 40.37500  16.662500     1016.125
## 56 2017-02-25 19.00000 50.42857  11.928571     1014.286
## 57 2017-02-26 18.75000 59.00000  11.112500     1012.375
## 58 2017-02-27 19.87500 58.37500   5.100000     1014.250
## 59 2017-02-28 23.33333 51.66667   3.911111     1013.111
## 60 2017-03-01 24.46154 47.92308   6.415385     1012.923
## 61 2017-03-02 23.75000 54.25000   5.930000     1012.150
## 62 2017-03-03 20.50000 42.50000   7.412500     1010.625
## 63 2017-03-04 19.12500 43.12500   8.350000     1010.000
## 64 2017-03-05 19.75000 41.25000   9.962500     1010.500
## 65 2017-03-06 20.00000 42.44444   9.666667     1010.333
## 66 2017-03-07 22.62500 41.50000   6.025000     1007.375
## 67 2017-03-08 21.54545 52.72727  10.263636     1008.909
## 68 2017-03-09 20.78571 69.07143   8.342857     1007.357
## 69 2017-03-10 19.93750 67.75000  11.462500     1006.875
## 70 2017-03-11 18.53333 60.40000   5.566667     1009.800
## 71 2017-03-12 17.37500 56.62500   7.637500     1014.750
## 72 2017-03-13 17.44444 49.33333   9.055556     1014.889
## 73 2017-03-14 18.00000 56.33333   4.522222     1016.556
## 74 2017-03-15 19.87500 54.75000   7.175000     1014.125
## 75 2017-03-16 24.00000 49.20000   5.560000     1011.100
## 76 2017-03-17 20.90000 59.70000  11.490000     1010.700
## 77 2017-03-18 24.69231 46.30769   7.123077     1009.846
## 78 2017-03-19 24.66667 52.27778   9.161111     1011.889
## 79 2017-03-20 23.33333 54.66667  10.077778     1012.556
## 80 2017-03-21 25.00000 49.00000   9.262500     1011.750
## 81 2017-03-22 27.25000 45.00000  10.187500     1009.750

Model KOYCK

Ahli Statistika bernama Koyck mengusulkan suatu metode untuk menduga model dinasim distributed lag dengan mengasumsikan bahwa semua kefisien Beta memunyai tanda sama.

Semakin jauh jarak lag peubah independen dari periode sekarang maka semakin kecil pengaruh peubah lag terhadap peubah dependen

model.koyck <- dLagM::koyckDlm(x = train$humidity, y = train$meantemp)
summary(model.koyck)
## 
## Call:
## "Y ~ (Intercept) + Y.1 + X.t"
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.41012 -0.87195 -0.08079  0.99509  3.66792 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  6.01358    2.53256   2.375   0.0201 *  
## Y.1          0.81742    0.07258  11.262   <2e-16 ***
## X.t         -0.03918    0.02248  -1.743   0.0853 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.65 on 77 degrees of freedom
## Multiple R-Squared: 0.7807,  Adjusted R-squared: 0.775 
## Wald test: 131.8 on 2 and 77 DF,  p-value: < 2.2e-16 
## 
## Diagnostic tests:
## NULL
## 
##                           alpha        beta       phi
## Geometric coefficients:  32.937 -0.03918195 0.8174218
AIC(model.koyck)
## [1] 312.1038
BIC(model.koyck)
## [1] 321.6319
#Ramalan
(fore.koyck <- forecast(model = model.koyck, x=test$humidity, h = 27))
## $forecasts
##  [1] 26.33902 26.06782 25.77919 25.63240 25.45266 25.22574 25.28187 25.23540
##  [9] 25.16732 25.20963 25.29809 25.52712 25.63141 25.16288 25.56354 25.73921
## [17] 25.90240 26.35905 26.79879 27.22401 27.24835 27.14634 26.72937 26.66988
## [25] 26.47214 26.14615 26.31504
## 
## $call
## forecast.koyckDlm(model = model.koyck, x = test$humidity, h = 27)
## 
## attr(,"class")
## [1] "forecast.koyckDlm" "dLagM"
#MAPE data testing
mape.koyck <- MAPE(fore.koyck$forecasts, test$meantemp)
mape_train <- dLagM::GoF(model.koyck)["MAPE"]

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

Regression with Distributed Lag

Model lag terdistribusi adalah model data deret waktu di mana persamaan regresi digunakan untuk mmeprediksi nilai saat ini dari peubah dependen berdasarkan nilai saat ini dari peubah penjelas dan nilai lag

#Lag = 2
model.dlm <- dLagM::dlm(x = train$humidity, y = train$meantemp, q = 27)
summary(model.dlm)
## 
## Call:
## lm(formula = model.formula, data = design)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0496 -1.2510 -0.0079  1.0825  3.8351 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 35.6929972  3.8197211   9.344 1.24e-09 ***
## x.t         -0.1054381  0.0632350  -1.667   0.1079    
## x.1         -0.0385658  0.0746411  -0.517   0.6099    
## x.2         -0.0020110  0.0656192  -0.031   0.9758    
## x.3         -0.0128850  0.0636417  -0.202   0.8412    
## x.4         -0.0008517  0.0618584  -0.014   0.9891    
## x.5         -0.0302766  0.0631064  -0.480   0.6356    
## x.6         -0.0538737  0.0632937  -0.851   0.4028    
## x.7          0.0809987  0.0634403   1.277   0.2134    
## x.8          0.0206085  0.0631987   0.326   0.7471    
## x.9          0.0591748  0.0635571   0.931   0.3607    
## x.10         0.0488499  0.0640595   0.763   0.4529    
## x.11        -0.0176464  0.0642468  -0.275   0.7858    
## x.12        -0.0215205  0.0640828  -0.336   0.7398    
## x.13        -0.0568623  0.0646720  -0.879   0.3876    
## x.14        -0.0706909  0.0713484  -0.991   0.3313    
## x.15        -0.0706779  0.0712531  -0.992   0.3307    
## x.16        -0.0126492  0.0709242  -0.178   0.8599    
## x.17         0.0521922  0.0722715   0.722   0.4769    
## x.18         0.0674955  0.0711372   0.949   0.3518    
## x.19        -0.0271411  0.0682736  -0.398   0.6943    
## x.20         0.0155920  0.0701713   0.222   0.8260    
## x.21        -0.0064067  0.0634746  -0.101   0.9204    
## x.22         0.0150193  0.0648521   0.232   0.8187    
## x.23         0.0703533  0.0665616   1.057   0.3006    
## x.24         0.0126081  0.0655848   0.192   0.8491    
## x.25         0.0114000  0.0666626   0.171   0.8656    
## x.26        -0.0563160  0.0669637  -0.841   0.4083    
## x.27        -0.1204386  0.0630603  -1.910   0.0677 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.462 on 25 degrees of freedom
## Multiple R-squared:  0.7134, Adjusted R-squared:  0.3924 
## F-statistic: 2.222 on 28 and 25 DF,  p-value: 0.02356
## 
## AIC and BIC values for the model:
##        AIC      BIC
## 1 268.9591 328.6286
AIC(model.dlm)
## [1] 268.9591
BIC(model.dlm)
## [1] 328.6286
#ramalan
#(fore.dlm <- forecast(model = model.dlm , x = test$humidity, h = 27))

Di sini saya tidak dapat melakukan forecasting untuk model dlm disebabkan r version yang tidak mendukung

Dynamic Regression

model.ardl = ardlDlm(x = train$humidity, y = train$meantemp, p = 1, q = 1)
summary(model.ardl)
## 
## Time series regression with "ts" data:
## Start = 2, End = 81
## 
## Call:
## dynlm(formula = as.formula(model.text), data = data, start = 1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.1445 -0.7622 -0.0236  0.8659  3.2781 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  6.87942    2.20224   3.124  0.00253 ** 
## X.t         -0.10703    0.02443  -4.382 3.72e-05 ***
## X.1          0.05549    0.02665   2.083  0.04066 *  
## Y.1          0.81277    0.06869  11.832  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.583 on 76 degrees of freedom
## Multiple R-squared:  0.8009, Adjusted R-squared:  0.7931 
## F-statistic: 101.9 on 3 and 76 DF,  p-value: < 2.2e-16
AIC(model.ardl)
## [1] 306.3683
BIC(model.ardl)
## [1] 318.2785
(fore.ardl  <- forecast(model = model.ardl, x = test$humidity,h= 27))
## $forecasts
##  [1] 26.19995 26.90334 26.62168 26.73104 26.53046 26.23354 26.76552 26.60341
##  [9] 26.52028 26.76289 26.96851 27.48745 27.46072 26.04378 27.81698 27.73362
## [17] 27.93442 28.95285 29.50437 30.03814 29.49585 29.17992 28.18456 28.61652
## [25] 28.16185 27.55456 28.48292
## 
## $call
## forecast.ardlDlm(model = model.ardl, x = test$humidity, h = 27)
## 
## attr(,"class")
## [1] "forecast.ardlDlm" "dLagM"
mape.ardl <- MAPE(fore.ardl$forecasts, test$meantemp)
mape_train <- GoF(model.ardl)["MAPE"]
c("MAPE_testing" = mape.ardl, "MAPE_training" = mape_train)
## $MAPE_testing
## [1] 0.08655886
## 
## $MAPE_training.MAPE
## [1] 0.06644807
ardlBoundOrders(data = data.frame(train), formula = meantemp ~ humidity, ic = "AIC")
## $p
##   humidity
## 1       15
## 
## $q
## [1] 3
## 
## $Stat.table
##           q = 1    q = 2    q = 3    q = 4    q = 5    q = 6    q = 7    q = 8
## p = 1  296.2420 295.5327 291.6710 289.3769 285.5460 283.5709 281.5553 280.4933
## p = 2  295.5945 297.3419 293.6477 291.3753 287.5308 285.5243 283.3777 282.3869
## p = 3  295.9381 295.9381 293.9327 292.3658 288.4786 286.3893 284.0183 283.3711
## p = 4  291.5694 292.1648 292.1648 294.0261 290.4771 288.3892 285.9427 285.3180
## p = 5  287.6241 289.4331 290.1046 290.1046 290.5211 286.3266 284.5396 283.5685
## p = 6  284.6356 286.6278 284.6979 285.9861 285.9861 286.9941 283.9992 282.7649
## p = 7  283.4924 285.4909 283.9501 285.9231 286.1519 286.1519 284.5515 281.9991
## p = 8  279.4003 281.3399 279.6523 281.6499 280.3718 282.0688 282.0688 283.1399
## p = 9  274.6883 276.6871 274.9017 276.7357 277.1031 278.9277 276.8250 276.8250
## p = 10 273.2561 275.2342 273.3238 274.9888 275.4894 277.3561 277.3426 275.3810
## p = 11 270.6449 272.6428 271.4553 272.9531 274.2235 275.9048 275.6165 274.3436
## p = 12 271.9866 273.9844 272.4967 274.2143 275.6359 276.8864 275.8180 276.0966
## p = 13 269.4285 271.3718 269.6943 271.6879 272.9028 274.2571 272.7634 273.9571
## p = 14 267.1656 268.9831 267.3939 269.3427 270.7088 272.3569 270.4945 272.2453
## p = 15 262.7285 264.4849 261.8923 263.3624 265.1267 266.9839 264.0650 266.0192
##           q = 9   q = 10   q = 11   q = 12   q = 13   q = 14   q = 15
## p = 1  277.0026 272.2849 271.6392 270.4258 269.8854 268.2939 264.2874
## p = 2  279.0026 274.2718 273.6385 272.4053 271.8694 270.1254 265.7138
## p = 3  279.4821 275.3637 274.8483 273.8209 273.2192 270.9994 267.1958
## p = 4  281.0010 276.3107 275.8659 275.0456 274.5627 272.6579 268.9802
## p = 5  279.6425 276.6283 276.1259 275.3020 274.6693 273.2038 269.9491
## p = 6  278.6645 275.8253 274.8100 273.6472 272.8748 271.9892 267.1432
## p = 7  277.8786 274.5250 273.5606 272.9346 272.0632 271.2095 267.1203
## p = 8  279.8085 276.4107 275.5166 274.9097 273.9804 273.0604 269.1119
## p = 9  275.7297 274.9033 274.0808 273.7925 273.1519 271.8424 267.2850
## p = 10 275.3810 276.9019 275.9457 275.6662 275.0323 273.6864 268.8093
## p = 11 275.4509 275.4509 277.3290 276.9320 276.3212 274.4697 269.8943
## p = 12 275.4959 277.0513 277.0513 278.9320 278.2911 276.4692 271.8756
## p = 13 272.5914 274.2752 276.1736 276.1736 276.6398 275.8456 271.1325
## p = 14 270.3243 272.0860 273.9633 275.2025 275.2025 275.2771 271.0417
## p = 15 264.6314 266.2122 267.6266 268.3626 270.3612 270.3612 272.3434
## 
## $min.Stat
## [1] 261.8923

Pemodelan library dynlm

#dlm p = 1
cons_lm1 <- dynlm(meantemp ~ humidity + L(humidity), data = train.ts)
cons_lm1
## 
## Time series regression with "ts" data:
## Start = 2, End = 81
## 
## Call:
## dynlm(formula = meantemp ~ humidity + L(humidity), data = train.ts)
## 
## Coefficients:
## (Intercept)     humidity  L(humidity)  
##    30.33007     -0.11407     -0.06991
#ardl p = 0 q = 1
cons_lm2 <- dynlm(meantemp ~ humidity + L(meantemp), data = train.ts)
cons_lm2
## 
## Time series regression with "ts" data:
## Start = 2, End = 81
## 
## Call:
## dynlm(formula = meantemp ~ humidity + L(meantemp), data = train.ts)
## 
## Coefficients:
## (Intercept)     humidity  L(meantemp)  
##     9.07505     -0.06889      0.75587
#ardl p = 1 q = 1
cons_lm3 <- dynlm(meantemp ~ humidity + L(humidity) + L(meantemp), data = train.ts)
cons_lm3
## 
## Time series regression with "ts" data:
## Start = 2, End = 81
## 
## Call:
## dynlm(formula = meantemp ~ humidity + L(humidity) + L(meantemp), 
##     data = train.ts)
## 
## Coefficients:
## (Intercept)     humidity  L(humidity)  L(meantemp)  
##     6.87942     -0.10703      0.05549      0.81277
#dlm p = 2
cons_lm4 <- dynlm(meantemp ~ humidity + L(humidity) + L(meantemp,2), data = train.ts)
cons_lm4
## 
## Time series regression with "ts" data:
## Start = 3, End = 81
## 
## Call:
## dynlm(formula = meantemp ~ humidity + L(humidity) + L(meantemp, 
##     2), data = train.ts)
## 
## Coefficients:
##    (Intercept)        humidity     L(humidity)  L(meantemp, 2)  
##       14.16187        -0.04301        -0.05727         0.59158

Ringkasan model

summary(cons_lm1)
## 
## Time series regression with "ts" data:
## Start = 2, End = 81
## 
## Call:
## dynlm(formula = meantemp ~ humidity + L(humidity), data = train.ts)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.0749 -2.2979 -0.0907  2.1049  5.4785 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 30.33007    1.60768  18.866  < 2e-16 ***
## humidity    -0.11407    0.04090  -2.789  0.00665 ** 
## L(humidity) -0.06991    0.04094  -1.707  0.09178 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.65 on 77 degrees of freedom
## Multiple R-squared:  0.4342, Adjusted R-squared:  0.4195 
## F-statistic: 29.54 on 2 and 77 DF,  p-value: 3.004e-10
summary(cons_lm2)
## 
## Time series regression with "ts" data:
## Start = 2, End = 81
## 
## Call:
## dynlm(formula = meantemp ~ humidity + L(meantemp), data = train.ts)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5991 -1.0133 -0.1275  1.0056  3.2915 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  9.07505    1.97492   4.595 1.66e-05 ***
## humidity    -0.06889    0.01651  -4.173 7.83e-05 ***
## L(meantemp)  0.75587    0.06438  11.741  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.616 on 77 degrees of freedom
## Multiple R-squared:  0.7895, Adjusted R-squared:  0.7841 
## F-statistic: 144.4 on 2 and 77 DF,  p-value: < 2.2e-16
summary(cons_lm3)
## 
## Time series regression with "ts" data:
## Start = 2, End = 81
## 
## Call:
## dynlm(formula = meantemp ~ humidity + L(humidity) + L(meantemp), 
##     data = train.ts)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.1445 -0.7622 -0.0236  0.8659  3.2781 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  6.87942    2.20224   3.124  0.00253 ** 
## humidity    -0.10703    0.02443  -4.382 3.72e-05 ***
## L(humidity)  0.05549    0.02665   2.083  0.04066 *  
## L(meantemp)  0.81277    0.06869  11.832  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.583 on 76 degrees of freedom
## Multiple R-squared:  0.8009, Adjusted R-squared:  0.7931 
## F-statistic: 101.9 on 3 and 76 DF,  p-value: < 2.2e-16
summary(cons_lm4)
## 
## Time series regression with "ts" data:
## Start = 3, End = 81
## 
## Call:
## dynlm(formula = meantemp ~ humidity + L(humidity) + L(meantemp, 
##     2), data = train.ts)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.7982 -1.3738 -0.0326  1.4819  4.4412 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    14.16187    2.80035   5.057 2.93e-06 ***
## humidity       -0.04301    0.03432  -1.253   0.2140    
## L(humidity)    -0.05727    0.03327  -1.721   0.0893 .  
## L(meantemp, 2)  0.59158    0.08959   6.603 5.10e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.117 on 75 degrees of freedom
## Multiple R-squared:  0.6483, Adjusted R-squared:  0.6343 
## F-statistic: 46.09 on 3 and 75 DF,  p-value: < 2.2e-16

SSE untuk model

deviance(cons_lm1)
## [1] 540.9058
deviance(cons_lm2)
## [1] 201.1904
deviance(cons_lm3)
## [1] 190.3289
deviance(cons_lm4)
## [1] 336.1596

Uji DIagnostik Model

akan dilakukan 3 jenis uji yaitu sebagai berikut:

#Uji non autokorelasi
dwtest(cons_lm1)
## 
##  Durbin-Watson test
## 
## data:  cons_lm1
## DW = 0.44658, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
dwtest(cons_lm2)
## 
##  Durbin-Watson test
## 
## data:  cons_lm2
## DW = 1.6991, p-value = 0.06293
## alternative hypothesis: true autocorrelation is greater than 0
dwtest(cons_lm3)
## 
##  Durbin-Watson test
## 
## data:  cons_lm3
## DW = 1.5764, p-value = 0.01818
## alternative hypothesis: true autocorrelation is greater than 0
dwtest(cons_lm4)
## 
##  Durbin-Watson test
## 
## data:  cons_lm4
## DW = 0.89479, p-value = 1.605e-08
## alternative hypothesis: true autocorrelation is greater than 0
#Uji Heterogenitas
bptest(cons_lm1)
## 
##  studentized Breusch-Pagan test
## 
## data:  cons_lm1
## BP = 3.4216, df = 2, p-value = 0.1807
bptest(cons_lm2)
## 
##  studentized Breusch-Pagan test
## 
## data:  cons_lm2
## BP = 1.8174, df = 2, p-value = 0.4031
bptest(cons_lm3)
## 
##  studentized Breusch-Pagan test
## 
## data:  cons_lm3
## BP = 7.7642, df = 3, p-value = 0.05115
bptest(cons_lm4)
## 
##  studentized Breusch-Pagan test
## 
## data:  cons_lm4
## BP = 8.2753, df = 3, p-value = 0.04065
#Uji normalitas
shapiro.test(residuals(cons_lm1))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(cons_lm1)
## W = 0.97994, p-value = 0.2418
shapiro.test(residuals(cons_lm2))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(cons_lm2)
## W = 0.985, p-value = 0.4747
shapiro.test(residuals(cons_lm3))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(cons_lm3)
## W = 0.98626, p-value = 0.5513
shapiro.test(residuals(cons_lm4))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(cons_lm4)
## W = 0.9914, p-value = 0.8804

Perbandingan Keakuratan ramalan

akurasi <- matrix(c(mape.koyck, mape.ardl))
row.names(akurasi) <- c("koyck", "Autoregressive")
colnames(akurasi) <- c("MAPE")
akurasi
##                      MAPE
## koyck          0.12163637
## Autoregressive 0.08655886

dapat dilihat bahwa model ardl lebih baik dari modelmkoyck karena memiliki mape yang lebih kecil