## #82 Bartlett’s confitence intervals for ACF

open
nobody
None
5
2014-10-09
2014-05-21
No

Dear developers,

We are often criticized for the use of fixed CI’s for ACF on correlograms, since the confidence band increases as the lag order increases. As seen on Wikipedia “Correlogram” page, the CI for ARIMA models looks like
[
\pm z_{1-\alpha/2}\sqrt{\frac{1}{N}\left(1+2\sum_{i=1}^{k} r_i^2\right)}
]
It is also mentioned in (Pankratz, A. 1983. Forecasting with univariate Box-Jenkins models: Concepts and cases). However, the currently implemented CI formula is ±1.96/T^{0.5}, so it is fixed. Please consider the code presented on StackExchange (implementation in R). I tried to rewrite it in hansl, but am not completely sure whether the implementation is correct.

<hansl>
nulldata 200
setobs 4 1960:1 --time-series
wn = randgen(n,0,1)
phi = {0.6, 0.4, -0.2}
theta = {5, -1.35, 0.275, 0.17, -0.04}
matrix z = filter(wn, theta, phi)

# ACF values
acfsize = round($nobs/5) matrix t = cum(ones(acfsize,1)) matrix acfs = zeros(acfsize,1) loop k=1..acfsize scalar ends =$nobs - k
scalar starts = 1 + k
acfs[k] = corr(z[starts:$nobs],z[1:ends]) endloop # Bartlett errors matrix bartError = zeros(acfsize,1) bartError[1,] =$nobs^-0.5
# Use a for loop to fill the vector with the standard errors
loop k=2..acfsize
ends = k-1
bartError[k] = ((1 + 2*sum(acfs[1:ends,].*acfs[1:ends,]))^0.5)*($nobs^-0.5) endloop matrix plots = t~acfs~bartError gnuplot 3 2 1 --matrix=plots --output=display </hansl>  It is possible to add such an option to the corrgm command (fixed or Bartlett CI)? ## Discussion • On Wed, 21 May 2014, Andreï Victorovitch Kostyrka wrote: We are often criticized for the use of fixed CI’s for ACF on correlograms, since the confidence band increases as the lag order increases. [...] I personally don't think it makes much of a difference. All this stuff is asymptotic anyway. However, it would be nice to give users the option. By the way, the following script is a slight elaboration of yours, which uses the same data as the example on the stackexchange page that you linked in your original message: <hansl> set echo off set messages off nulldata 60 setobs 4 1955:1 pank_inv = {\ 4.4, 5.8, 6.7, 7.1, 5.7, 4.1, 4.6, 4.3, 2.0, 2.2, 3.6, -2.2, \ -5.1, -4.9, 0.1, 4.1, 3.8, 9.9, 0.0, 6.5, 10.8, 4.1, 2.7, -2.9, \ -2.9, 1.5, 5.7, 5.0, 7.9, 6.8, 7.1, 4.1, 5.5, 5.1, 8.0, 5.6, \ 4.5, 6.1, 6.7, 6.1, 10.6, 8.6, 11.6, 7.6, 10.9, 14.6, 14.5, 17.4, \ 11.7, 5.8, 11.5, 11.7, 5.0, 10.0, 8.9, 7.1, 8.3, 10.2, 13.3, 6.2 \ } series bus_inv = pank_inv' # ACF values acfsize = 14 matrix t = seq(1, acfsize)' matrix acfs = corrgm(bus_inv,acfsize) matrix tc = acfs[,1] # Bartlett errors scalar isqT = 1.96/sqrt($nobs)
matrix bartError = isqT * sqrt(1 + 2*cum(tc.^2))
matrix plots = t ~ tc ~ bartError ~ -bartError
gnuplot 2 3 4 1 --matrix=plots --output=display --with-lines --single-yaxis

</hansl>

Riccardo (Jack) Lucchetti
Dipartimento di Scienze Economiche e Sociali (DiSES)

Università Politecnica delle Marche
(formerly known as Università di Ancona)

r.lucchetti@univpm.it
http://www2.econ.univpm.it/servizi/hpp/lucchetti

• It makes an important difference if the series you are applying the correlogram to is not a white noise. I think it should not be given as an option to the users, I think this should be the default option for any original series, but not for a series of residuals of an estimation. For residuals the confidence band should be the current ±1.96/T^{0.5}.

I also asked for this some time ago.