As part of an on-going paper with Kerrie Mengersen and Pierre Pudlo, we are using a GARCH(1,1) model as a target. Thus, the model is of the form
which is a somehow puzzling object: the latent (variance) part is deterministic and can be reconstructed exactly given the series and the parameters. However, estimation is not such an easy task and using the garch() function in the tseries package leads to puzzling results! Indeed, simulating data shows some high variability of the procedure against starting values:
genedata=function(para,nobs){ pata=epst=sigt=rnorm(nobs) sigt[1]=sqrt(para[1]) pata[1]=epst[1]*sigt[1] for (t in 2:nobs){ sigt[t]=sqrt(para[1]+para[2]*pata[t-1]^2+para[3]*sigt[t-1]^2) pata[t]=epst[t]*sigt[t] } list(pata=pata,sigt=sigt,epst=epst) } > x = genedata(c(1, 0.3, 0.2),1000)$pata > garch(x,trace=FALSE) Call: garch(x = x, trace = FALSE) Coefficient(s): a0 a1 b1 4.362e+00 1.976e-01 6.805e-14 > garch(x,trace=FALSE,start=c(1,.3,.2)) Call: garch(x = x, trace = FALSE, start = c(1, 0.3, 0.2)) Coefficient(s): a0 a1 b1 0.8025 0.2592 0.3255 > simgarch=genedata(c(1, 0.2, 0.7),1000) Call: garch(x = simgarch$pat, trace = FALSE) Coefficient(s): a0 a1 b1 8.044e+00 1.826e-01 4.051e-14 > garch(simgarch$pat,trace=FALSE,star=c(1, 0.2, 0.7)) Call: garch(x = simgarch$pat, trace = FALSE, star = c(1, 0.2, 0.7)) Coefficient(s): a0 a1 b1 1.1814 0.2079 0.6590
The above code clearly shows the huge impact of the starting value on the final estimate….