SMAC-Group / gmwm

Generalized Method of Wavelet Moments (GMWM) is an estimation technique for the parameters of time series models. It uses the wavelet variance in a moment matching approach that makes it particularly suitable for the estimation of certain state-space models.
Other
28 stars 14 forks source link

AR-GM confidence intervals #172

Open robertomolinari opened 8 years ago

robertomolinari commented 8 years ago

When estimating the beta in GM we get CIs (and SE?) based on AR parameter.

Model Information: 
             Estimates        CI Low      CI High           SE
BETA      8.930278e-03  9.987464e-01 9.994683e-01 2.194496e-04
SIGMA2_GM 2.622751e-04  3.803454e-07 5.556945e-07 5.330234e-08
BETA      2.686225e+01 -6.599552e-02 2.022709e-01 8.154720e-02
SIGMA2_GM 3.793013e-03 -3.869825e-03 1.142063e-02 4.647969e-03
WN        2.693655e-04 -7.344853e-03 7.883584e-03 4.629116e-03
coatless commented 8 years ago

@robertomolinari

SE in this case should not undergo a transformation since we are pulling it either from PSI or the Bootstrapped samples?

robertomolinari commented 8 years ago

No transformation needed if we are bootstrapping the transformed value I guess. What do you mean by "pulling it from PSI"?

coatless commented 8 years ago

@robertomolinari

The issue is we transform to an AR(1) then perform the inference procedure. So, the SE is given by AR(1) values.

For the asymptotic version we have:

https://github.com/SMAC-Group/gmwm/blob/master/src/inference.cpp#L90-L99

where:

se = sqrt(diagvec(psi));

is obtained from: https://github.com/SMAC-Group/gmwm/blob/master/src/inference.cpp#L40-L45

For the bootstrapped version we have:

The bootstrap happening under an AR(1) with the SE being given by:

  out(3) = stddev(bs_theta,0,1); // Use N-1 and take by row
robertomolinari commented 8 years ago

In theory we can derive the SE for GM through the delta method. Did you try that? We can discuss this on Friday after the meeting with Sachin where I will gladly lurk in the background…

coatless commented 8 years ago

@robertomolinari Meeting is on Thursday.

In this case, wouldn't a more efficient use be to just derive under zhang the GM() WV form?

robertomolinari commented 8 years ago

Whoops! We can discuss this on Thursday then!

coatless commented 8 years ago

Misc:

Transform all sample values...

coatless commented 8 years ago

[g'(theta)^2] * sigma ^2

coatless commented 8 years ago

GM() formulation via #97 under delta we have:

g(phi) = beta = -ln(phi)/delta_t

g'(phi) = -1/(phi*delta_t)

=> g'(phi)^2 = 1/(phi*delta_t)^2

g(sigma) = sigma^2_gm = sigma^2 / (1-phi^2)

g'(sigma) = -2*sigma/(1-phi^2)

=> g'(sigma)^2 = 4*sigma^2/(1-phi^2)^2

Note: This makes the bootstrapped CI values not exact.