Tugas 9 ADW - ARCH GARCH

library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(tseries)
library(TTR)
library("graphics")
library("TSA")
## Registered S3 methods overwritten by 'TSA':
##   method       from    
##   fitted.Arima forecast
##   plot.Arima   forecast
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar
library("xlsx")
## Warning: package 'xlsx' was built under R version 4.1.3

Import data

Dataset ini merupakan data Rata-rata Harga Beras di Tingkat Perdagangan Besar/Grosir Indonesia (Rupiah/Kg), 2010-2020 yang diperoleh dari website BPS https://www.bps.go.id/linkTableDinamis/view/id/963 . Rentang data selama 11 Tahun yaitu mulai Januari 2010 hingga Juli 2020.

data.hargaberas <- read.csv("D:/3. KULIAH PPs STATISTIKA/SEMESTER 2/STA542 Analisis Deret Waktu/Harga Beras.csv",header=TRUE)

Menampilkan Data Univariat yaitu Kolom Ketiga

price <- data.hargaberas [,3]

Membentuk Data time-series

#price.ts<-ts(price, start= c(2010,1), end=c(2020,7)) 

price.ts<-ts(price, start= 1, end=127) 
price.ts
## Time Series:
## Start = 1 
## End = 127 
## Frequency = 1 
##   [1]  6702.49  6887.83  6853.78  6761.49  6772.46  6873.45  7025.88  7317.51
##   [9]  7350.80  7391.27  7457.08  7617.46  7853.48  7612.37  7371.25  7199.03
##  [17]  7233.47  7463.10  7899.41  8152.01  8255.34  8416.09  8496.46  8726.09
##  [25]  8726.09  8777.55  8687.01  8582.55  8536.89  8554.30  8606.15  8635.17
##  [33]  8623.56  8624.33  8654.51  8702.10  8834.82  8842.94  8782.58  8711.39
##  [41]  8681.21  8784.42  9017.72  9056.67  9057.99  9108.46  9152.07  9262.00
##  [49]  9433.17  9531.20  9595.89  9424.65  9413.91  9462.01  9525.38  9525.38
##  [57]  9693.67  9780.91  9924.39 10343.98 10612.11 10765.74 10986.76 10648.34
##  [65] 10568.63 10679.00 10732.00 10935.00 11055.00 11169.00 11365.00 11465.00
##  [73] 11614.37 11729.36 11677.75 11449.00 11417.00 11469.00 11498.00 11475.00
##  [81] 11448.00 11432.58 11450.00 11476.00 11579.00 11571.24 11494.00 11449.00
##  [89] 11465.00 11465.00 11448.00 11411.00 11481.84 11552.00 11665.08 11838.00
##  [97] 12276.00 12414.00 12299.00 12035.00 11943.00 11907.26 11936.00 11899.00
## [105] 11900.00 11926.21 12013.00 12105.77 12211.09 12222.00 12124.00 12019.00
## [113] 12008.00 12009.00 12021.00 12018.00 12050.00 12108.00 12120.00 12183.03
## [121] 12342.74 12355.15 12368.00 12382.10 12293.03 12223.98 12212.63

Create training and validation Data

price.train <- subset(price.ts,start=1,end=108) #Data 5 Tahun pertama
price.test <- subset(price.ts,start=109,end=127) #Data 1 tahun terakhir

Plot Time Series

ts.plot(price.train, xlab="Periode", ylab="Harga", lty=1)
title("Harga Beras")
points(price.train)

Cek Kestasioneran

#Cek Kestasioneran
acf(price.train, lag.max=20)

adf.test(price.train,alternative=c("stationary"),
         k=trunc((length(price.train)-1)^(1/3))) #Augmented Dickey-Fuller
## 
##  Augmented Dickey-Fuller Test
## 
## data:  price.train
## Dickey-Fuller = -1.9938, Lag order = 4, p-value = 0.5792
## alternative hypothesis: stationary

Terlihat bahwa nilai p value > dari 0.05 maka H0 gagal ditolak . Hal ini berarti bahwa plot data belum stasioner. Dan juga jika dilihat dari plot yang dihasilkan, nampak jelas bahwa data belum stasioner dalam nilai tengah dan ragam. Ditinjau dari plot acf yang turun secara lambat atau tail off terindikasi bahwa data belum stasioner. Sehingga perlu dilakukan differencing.

#Differencing Ordo 1
price.dif1 <- diff(price.train,difference=1)
plot.ts(price.dif1, lty=1, xlab="Waktu", ylab="Data Diff Ordo 1")
points(price.dif1)

#Cek Kestasioneran
acf(price.dif1, lag.max=20)

adf.test(price.dif1, alternative= c("stationary"), 
k= trunc((length(price.train)-1)^(1/3))) #Augmented Dickey-Fuller
## Warning in adf.test(price.dif1, alternative = c("stationary"), k =
## trunc((length(price.train) - : p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  price.dif1
## Dickey-Fuller = -4.6098, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

Terlihat bahwa nilai p value < dari 0.05 maka H0 ditolak dan H1 diterima. Hal ini berarti bahwa plot data stasioner. Dan juga jika dilihat dari plot yang dihasilkan, nampak jelas bahwa data sudah stasioner dalam nilai tengah dan ragam, meskipun masih terdapat pencilan. Ditinjau dari plot acf yang cut off setelah lag pertama menandakan bahwa data sudah stasioner. Selanjutnya kan dilakukan uji model ARIMA tentatif nya

Pengidentifikasian Model

#Pengidentifikasian Model
acf(price.dif1, lag.max=20)

pacf(price.dif1, lag.max=20)

eacf(price.dif1)
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 x o o x o o o o o o x  x  o  o 
## 1 x o o x o o o o o o x  x  x  o 
## 2 x o o x o o o o o o o  o  o  o 
## 3 x o x x o o o o o o o  x  o  o 
## 4 x o x x o o o o o o o  x  o  o 
## 5 x o x o o o o o o o o  x  o  o 
## 6 x x x o x o o o o o o  x  o  o 
## 7 x x x x o x o o o o o  o  o  o

Kandidat Model Hasil Identifikasi

#Pendugaan Parameter dan Penentuan Model Terbaik
#Berdasarkan Kandidat model Hasil Identifikasi

arima(price.train, order=c(0,0,1), method="ML") #ARIMA (0,1,1) #Berdasarkan ACF dan EACF
## 
## Call:
## arima(x = price.train, order = c(0, 0, 1), method = "ML")
## 
## Coefficients:
##          ma1  intercept
##       0.9715  9795.1336
## s.e.  0.0245   167.0755
## 
## sigma^2 estimated as 782697:  log likelihood = -887.49,  aic = 1778.98
arima(price.train, order=c(2,0,0), method="ML") #ARIMA (2,1,0) #Berdasarkan PACF
## 
## Call:
## arima(x = price.train, order = c(2, 0, 0), method = "ML")
## 
## Coefficients:
##          ar1      ar2  intercept
##       1.5314  -0.5339   9458.035
## s.e.  0.0818   0.0821   2198.077
## 
## sigma^2 estimated as 14355:  log likelihood = -673.33,  aic = 1352.66
arima(price.train, order=c(2,0,1), method="ML") #ARIMA (2,1,1) #Berdasarkan ACF dan PACF
## 
## Call:
## arima(x = price.train, order = c(2, 0, 1), method = "ML")
## 
## Coefficients:
##          ar1      ar2     ma1  intercept
##       1.3785  -0.3811  0.2228   9461.787
## s.e.  0.1550   0.1551  0.1607   2290.131
## 
## sigma^2 estimated as 14088:  log likelihood = -672.36,  aic = 1352.72
arima(price.train, order=c(1,0,1), method="ML") #ARIMA (1,1,1) #Berdasarkan EACF
## 
## Call:
## arima(x = price.train, order = c(1, 0, 1), method = "ML")
## 
## Coefficients:
##          ar1     ma1  intercept
##       0.9975  0.5160   9476.256
## s.e.  0.0034  0.0734   2441.417
## 
## sigma^2 estimated as 14688:  log likelihood = -674.58,  aic = 1355.17
#Kompare AIC

model.arima1 <- c("ARIMA(0,0,1)","ARIMA(2,0,0)","ARIMA(2,0,1)","ARIMA(1,0,1)")
AIC.kandididat1 = c (1778.98,  1352.66, 1352.72, 1355.17)
comp.arima1 <- cbind(model.arima1, AIC.kandididat1)
colnames(comp.arima1) <- c("Kandidat Model", "Nilai AIC")
comp.aic1 <- as.data.frame(comp.arima1)
comp.aic1
##   Kandidat Model Nilai AIC
## 1   ARIMA(0,0,1)   1778.98
## 2   ARIMA(2,0,0)   1352.66
## 3   ARIMA(2,0,1)   1352.72
## 4   ARIMA(1,0,1)   1355.17

Fungsi auto.arima

auto.arima(price.train, trace=TRUE)
## 
##  ARIMA(2,1,2) with drift         : 1325.609
##  ARIMA(0,1,0) with drift         : 1353.094
##  ARIMA(1,1,0) with drift         : 1329.237
##  ARIMA(0,1,1) with drift         : 1327.997
##  ARIMA(0,1,0)                    : 1365.579
##  ARIMA(1,1,2) with drift         : 1330.276
##  ARIMA(2,1,1) with drift         : 1324.694
##  ARIMA(1,1,1) with drift         : 1328.413
##  ARIMA(2,1,0) with drift         : 1326.684
##  ARIMA(3,1,1) with drift         : 1326.939
##  ARIMA(3,1,0) with drift         : 1326.202
##  ARIMA(3,1,2) with drift         : 1329.151
##  ARIMA(2,1,1)                    : 1333.575
## 
##  Best model: ARIMA(2,1,1) with drift
## Series: price.train 
## ARIMA(2,1,1) with drift 
## 
## Coefficients:
##          ar1      ar2      ma1    drift
##       1.2184  -0.5102  -0.7142  51.5505
## s.e.  0.1621   0.0876   0.1765  10.8026
## 
## sigma^2 = 13056:  log likelihood = -657.05
## AIC=1324.1   AICc=1324.69   BIC=1337.46

Jika ditinjau berdasarkan nilai komparasi aic yang diperoleh dari fungsi ‘arima’ dengan metode ML diperoleh model arima(2,1,0) dan arima(2,1,1) dengan nilai aic terkecil yang nyaris seimbang. Untuk itu, dalam memperkuat analisis, digunakan fungsi ‘auto.arima’ yang menghasilkan model terbaik yaitu ARIMA(2,1,1). Olehnya itu, model terbaik yang dihasilkan adalah model ARIMA(2,1,1).

#Plot Data Aktual dan Nilai Dugaan Berdasarkan Model Terbaik

model <- arima(price.train, order=c(2,0,1), method="ML") #ARIMA (2,1,1)
dugaan <- fitted(model)
cbind(price.train, dugaan)
## Time Series:
## Start = 1 
## End = 108 
## Frequency = 1 
##     price.train    dugaan
##   1     6702.49  6831.581
##   2     6887.83  6736.245
##   3     6853.78  6992.526
##   4     6761.49  6816.996
##   5     6772.46  6721.099
##   6     6873.45  6795.197
##   7     7025.88  6936.218
##   8     7317.51  7110.391
##   9     7350.80  7480.468
##  10     7391.27  7340.181
##  11     7457.08  7423.552
##  12     7617.46  7494.933
##  13     7853.48  7710.758
##  14     7612.37  7979.480
##  15     7371.25  7443.584
##  16     7199.03  7268.772
##  17     7233.47  7123.843
##  18     7463.10  7276.913
##  19     7899.41  7597.381
##  20     8152.01  8137.112
##  21     8255.34  8255.060
##  22     8416.09  8297.973
##  23     8496.46  8506.434
##  24     8726.09  8527.420
##  25     8726.09  8859.811
##  26     8777.55  8698.243
##  27     8687.01  8816.641
##  28     8582.55  8625.673
##  29     8536.89  8535.458
##  30     8554.30  8522.254
##  31     8606.15  8570.475
##  32     8635.17  8636.122
##  33     8623.56  8648.204
##  34     8624.33  8615.862
##  35     8654.51  8628.725
##  36     8702.10  8673.892
##  37     8834.82  8728.531
##  38     8842.94  8910.739
##  39     8782.58  8832.566
##  40     8711.39  8750.236
##  41     8681.21  8677.589
##  42     8784.42  8672.580
##  43     9017.72  8850.463
##  44     9056.67  9145.070
##  45     9057.99  9052.890
##  46     9108.46  9060.697
##  47     9152.07  9139.270
##  48     9262.00  9172.361
##  49     9433.17  9324.394
##  50     9531.20  9522.714
##  51     9595.89  9570.267
##  52     9424.65  9625.898
##  53     9413.91  9314.651
##  54     9462.01  9432.058
##  55     9525.38  9487.014
##  56     9525.38  9557.910
##  57     9693.67  9517.964
##  58     9780.91  9796.339
##  59     9924.39  9809.876
##  60    10343.98 10003.360
##  61    10612.11 10577.442
##  62    10765.74 10718.976
##  63    10986.76 10831.259
##  64    10648.34 11101.603
##  65    10568.63 10415.244
##  66    10679.00 10569.499
##  67    10732.00 10742.239
##  68    10935.00 10746.557
##  69    11055.00 11050.451
##  70    11169.00 11097.532
##  71    11365.00 11223.853
##  72    11465.00 11466.109
##  73    11614.37 11497.565
##  74    11729.36 11691.625
##  75    11677.75 11775.592
##  76    11449.00 11630.421
##  77    11417.00 11316.147
##  78    11469.00 11422.103
##  79    11498.00 11493.957
##  80    11475.00 11504.567
##  81    11448.00 11454.322
##  82    11432.58 11431.048
##  83    11450.00 11421.832
##  84    11476.00 11457.656
##  85    11579.00 11484.668
##  86    11571.24 11633.670
##  87    11494.00 11548.794
##  88    11449.00 11446.981
##  89    11465.00 11427.044
##  90    11465.00 11474.256
##  91    11448.00 11457.639
##  92    11411.00 11434.120
##  93    11481.84 11386.592
##  94    11552.00 11524.715
##  95    11665.08 11579.289
##  96    11838.00 11721.461
##  97    12276.00 11923.580
##  98    12414.00 12513.997
##  99    12299.00 12436.505
## 100    12035.00 12217.033
## 101    11943.00 11887.026
## 102    11907.26 11913.846
## 103    11936.00 11885.704
## 104    11899.00 11951.614
## 105    11900.00 11866.731
## 106    11926.21 11901.344
## 107    12013.00 11935.220
## 108    12105.77 12056.657
plot.ts(price.train, xlab="Waktu", ylab="Harga Beras")

points(price.train)
par(col="red")
lines(dugaan)

par(col="black")

Analisis Diagnostik

# Model ARIMA (2,1,1) menggunakan Data Awal Y
model.diag = stats::arima(price.train, order = c(2,0,1), method="ML")
model.diag
## 
## Call:
## stats::arima(x = price.train, order = c(2, 0, 1), method = "ML")
## 
## Coefficients:
##          ar1      ar2     ma1  intercept
##       1.3785  -0.3811  0.2228   9461.787
## s.e.  0.1550   0.1551  0.1607   2290.131
## 
## sigma^2 estimated as 14088:  log likelihood = -672.36,  aic = 1354.72

Uji Sisaan

sisaan = checkresiduals(model.diag)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(2,0,1) with non-zero mean
## Q* = 15.64, df = 6, p-value = 0.01582
## 
## Model df: 4.   Total lags used: 10
sisaan
## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(2,0,1) with non-zero mean
## Q* = 15.64, df = 6, p-value = 0.01582
sisaan2 <- model.diag$residuals
# Eksplorasi
par(mfrow=c(2,2))
qqnorm(sisaan2)
qqline(sisaan2, col = "blue", lwd = 2)
plot(c(1:length(sisaan2)),sisaan2)
acf(sisaan2)
pacf(sisaan2)

Terlihat dari plot di atas bahwa sisaan tidak mengikuti sebaran normal. Selanjutnya ditinjau dari plot ACF dan PACFterlihat ada lag-lag yang signifikan. Hal ini berarti bahwa ada gejala autokorelasi pada sisaan.

Normalitas Data

H0: sisaan menyebar normal

H1: sisaan tidak mengikuti sebaran normal

Hasil : p−value=0.000000002466<α=0.05 yang berarti TOLAK H0.Sisaan tidak menyebar normal

Autokorelasi

Plot ACF dan PACFterlihat ada lag-lag yang signifikan. Hal ini berarti bahwa ada gejala autokorelasi pada sisaan.

Kesimpulan : Asumsi tidak terpenuhi

Karena terdapat hetereskedastik pada model terbaik yang dihasilkan maka selanjutnya akan dilakukan uji ‘ARCH-GARCH’

#ARCH-GARCH

##Evaluasi perilaku volatilitas – mean model

library(dynlm)
## Warning: package 'dynlm' was built under R version 4.1.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.1.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
price.mean <- dynlm(price.dif1~1)
summary(price.mean)
## 
## Time series regression with "ts" data:
## Start = 2, End = 108
## 
## Call:
## dynlm(formula = price.dif1 ~ 1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -388.92  -70.50   -6.89   64.00  387.50 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    50.50      12.85   3.931 0.000151 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 132.9 on 106 degrees of freedom

Evaluasi perilaku volatilitas – variance model

ehatsq <- ts(resid(price.mean)^2)
price.ARCH <- dynlm(ehatsq~L(ehatsq))
summary(price.ARCH)
## 
## Time series regression with "ts" data:
## Start = 2, End = 107
## 
## Call:
## dynlm(formula = ehatsq ~ L(ehatsq))
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -36588 -13968 -11186   -820 133210 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1.392e+04  3.507e+03    3.97 0.000132 ***
## L(ehatsq)   2.019e-01  9.615e-02    2.10 0.038134 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 31600 on 104 degrees of freedom
## Multiple R-squared:  0.04068,    Adjusted R-squared:  0.03146 
## F-statistic: 4.411 on 1 and 104 DF,  p-value: 0.03813

Evaluasi perilaku volatilitas – LM Test

library(broom)
## Warning: package 'broom' was built under R version 4.1.3
T <- nobs(price.mean)
q <- length(coef(price.ARCH))-1
Rsq <- glance(price.ARCH)[[1]]
## Warning: Tidiers for objects of class dynlm are not maintained by the broom
## team, and are only supported through the lm tidier method. Please be cautious in
## interpreting and reporting broom output.
LM <- (T-q)*Rsq
alpha <- 0.05
Chicr <- qchisq(1-alpha, q)

Evaluasi perilaku volatilitas – ARCH Test

library(FinTS)
## Warning: package 'FinTS' was built under R version 4.1.3
## 
## Attaching package: 'FinTS'
## The following object is masked from 'package:forecast':
## 
##     Acf
priceArchTest <- ArchTest(price.dif1, lags=1, demean=TRUE)
priceArchTest
## 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  price.dif1
## Chi-squared = 4.3126, df = 1, p-value = 0.03783
library(FinTS)
priceArchTest2 <- ArchTest(price.dif1, lags=2, demean=TRUE)
priceArchTest2
## 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  price.dif1
## Chi-squared = 5.0202, df = 2, p-value = 0.08126

##Evaluasi perilaku volatilitas – model ragam

library(tseries)
price.arch <- garch(price.dif1,c(0,1))
## 
##  ***** ESTIMATION WITH ANALYTICAL GRADIENT ***** 
## 
## 
##      I     INITIAL X(I)        D(I)
## 
##      1     1.677244e+04     1.000e+00
##      2     5.000000e-02     1.000e+00
## 
##     IT   NF      F         RELDF    PRELDF    RELDX   STPPAR   D*STEP   NPRELDF
##      0    1  5.758e+02
##      1    2  5.744e+02  2.31e-03  6.68e-02  3.0e-05  4.0e+01  1.0e+00  1.32e+00
##      2    3  5.737e+02  1.36e-03  7.01e-04  4.0e-06  0.0e+00  1.3e-01  7.01e-04
##      3    4  5.718e+02  3.28e-03  4.14e-03  1.6e-05  3.3e+00  5.4e-01  6.17e-03
##      4    6  5.718e+02  1.75e-05  2.91e-05  8.3e-07  3.3e+00  2.8e-02  4.30e-05
##      5    7  5.718e+02  2.36e-08  2.18e-08  2.7e-08  0.0e+00  1.2e-03  2.18e-08
##      6    8  5.718e+02  1.21e-09  6.89e-10  2.5e-08  0.0e+00  8.5e-04  6.89e-10
##      7   10  5.718e+02  5.76e-09  3.67e-09  1.7e-07  0.0e+00  5.7e-03  3.67e-09
##      8   12  5.718e+02  1.26e-08  7.68e-09  4.5e-07  0.0e+00  1.5e-02  7.68e-09
##      9   14  5.718e+02  3.55e-08  2.20e-08  1.4e-06  0.0e+00  4.6e-02  2.20e-08
##     10   16  5.718e+02  9.04e-08  5.58e-08  3.7e-06  0.0e+00  1.2e-01  5.58e-08
##     11   18  5.718e+02  2.40e-07  1.48e-07  1.0e-05  0.0e+00  3.4e-01  1.48e-07
##     12   20  5.718e+02  6.26e-07  3.87e-07  2.7e-05  0.0e+00  9.1e-01  3.87e-07
##     13   22  5.718e+02  1.65e-06  1.02e-06  7.2e-05  0.0e+00  2.4e+00  1.02e-06
##     14   24  5.718e+02  4.34e-06  2.69e-06  1.9e-04  0.0e+00  6.4e+00  2.69e-06
##     15   26  5.718e+02  1.15e-05  7.11e-06  5.1e-04  0.0e+00  1.7e+01  7.11e-06
##     16   28  5.717e+02  3.07e-05  1.90e-05  1.3e-03  0.0e+00  4.5e+01  1.90e-05
##     17   30  5.717e+02  8.28e-05  5.13e-05  3.6e-03  0.0e+00  1.2e+02  5.13e-05
##     18   32  5.716e+02  2.28e-04  1.41e-04  1.0e-02  0.0e+00  3.3e+02  1.41e-04
##     19   34  5.712e+02  6.49e-04  4.03e-04  2.9e-02  0.0e+00  9.1e+02  4.03e-04
##     20   36  5.702e+02  1.81e-03  1.17e-03  9.1e-02  0.0e+00  2.6e+03  1.17e-03
##     21   37  5.687e+02  2.54e-03  2.57e-03  2.6e-01  0.0e+00  5.2e+03  2.57e-03
##     22   38  5.668e+02  3.39e-03  2.38e-03  2.2e-02  0.0e+00  3.4e+02  2.38e-03
##     23   39  5.657e+02  1.96e-03  1.53e-03  2.2e-02  1.8e+00  3.4e+02  2.38e-03
##     24   42  5.649e+02  1.30e-03  1.41e-03  1.5e-01  4.9e-01  2.0e+03  1.51e-03
##     25   43  5.647e+02  4.86e-04  3.95e-04  1.2e-02  0.0e+00  1.4e+02  3.95e-04
##     26   44  5.646e+02  7.10e-05  6.47e-05  1.2e-02  1.4e+00  1.4e+02  7.21e-05
##     27   45  5.646e+02  1.28e-05  1.20e-05  1.1e-02  0.0e+00  1.2e+02  1.20e-05
##     28   46  5.646e+02  1.71e-07  1.79e-07  3.5e-04  0.0e+00  3.9e+00  1.79e-07
##     29   47  5.646e+02  1.66e-09  1.76e-09  2.1e-04  0.0e+00  2.3e+00  1.76e-09
##     30   48  5.646e+02  6.28e-12  6.29e-12  1.2e-05  0.0e+00  1.4e-01  6.29e-12
## 
##  ***** RELATIVE FUNCTION CONVERGENCE *****
## 
##  FUNCTION     5.646214e+02   RELDX        1.242e-05
##  FUNC. EVALS      48         GRAD. EVALS      31
##  PRELDF       6.286e-12      NPRELDF      6.286e-12
## 
##      I      FINAL X(I)        D(I)          G(I)
## 
##      1    5.465279e+03     1.000e+00    -2.100e-11
##      2    1.093498e+00     1.000e+00    -7.241e-07
## Warning in sqrt(pred$e): NaNs produced
spricearch <- summary(price.arch)
spricearch
## 
## Call:
## garch(x = price.dif1, order = c(0, 1))
## 
## Model:
## GARCH(0,1)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.4992 -0.1872  0.3817  0.9552  2.7924 
## 
## Coefficient(s):
##     Estimate  Std. Error  t value Pr(>|t|)    
## a0 5465.2792   1288.5041    4.242 2.22e-05 ***
## a1    1.0935      0.2894    3.779 0.000158 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostic Tests:
##  Jarque Bera Test
## 
## data:  Residuals
## X-squared = 1.3439, df = 2, p-value = 0.5107
## 
## 
##  Box-Ljung test
## 
## data:  Squared.Residuals
## X-squared = 0.4677, df = 1, p-value = 0.494
hhat <- ts(2*price.arch$fitted.values[-1,1]^2)
plot.ts(hhat)

Evaluasi perilaku volatilitas – model GARCH

library(rugarch)
## Warning: package 'rugarch' was built under R version 4.1.3
## Loading required package: parallel
## 
## Attaching package: 'rugarch'
## The following object is masked from 'package:stats':
## 
##     sigma
garchSpec <- ugarchspec(
variance.model=list(model="sGARCH",
garchOrder=c(1,1)),
mean.model=list(armaOrder=c(0,0)),
distribution.model="std")
garchFit <- ugarchfit(spec=garchSpec, data=price.dif1)
coef(garchFit)
##           mu        omega       alpha1        beta1        shape 
## 4.772236e+01 1.804649e+01 2.441475e-08 9.970588e-01 5.019162e+00
rhat <- garchFit@fit$fitted.values
plot.ts(rhat)

hhat <- ts(garchFit@fit$sigma^2)
plot.ts(hhat)

Terimakasih.