[R] GLS models - bootstrapping

Christian Kamenik christian.kamenik at giub.unibe.ch
Wed Feb 21 12:16:32 CET 2007


Dear Lillian,

I tried to estimate parameters for time series regression using time 
series bootstrapping as described on page 434 in Davison & Hinkley 
(1997) - bootstrap methods and their application. This approach is based 
on an AR process (ARIMA model) with a regression term (compare also with 
page 414 in Venable & Ripley (2002) - modern applied statistics with S) 
I rewrote the code for R (this comes without any warranty):

fit <- function( data )
{ X <- cbind(rep(1,100),data$activ)
   para <- list( X=X,data=data)
   assign("para",para)
   d <- arima(x=para$data$temp,order=c(1,0,0),xreg=para$X)
   res <- d$residuals
   res <- res[!is.na(res)]
   list(paras=c(d$model$ar,d$reg.coef,sqrt(d$sigma2)),
        res=res-mean(res),fit=X %*% d$reg.coef)
}
beaver.args <- fit( beaver )
white.noise <- function( n.sim, ts) sample(ts,size=n.sim,replace=T)
beaver.gen <- function( ts, n.sim, ran.args )
{ tsb <- ran.args$res
   fit <- ran.args$fit
   coeff <- ran.args$paras
   ts$temp <- fit + coeff[4]*arima.sim( model=list(ar=coeff[1]),
                             n=n.sim,rand.gen=white.noise,ts=tsb )
   ts }
new.beaver <- beaver.gen( beaver, 100, beaver.args )

beaver.fun <- function(ts) fit(ts)$paras
beaver.boot <- tsboot( beaver, beaver.fun, R=99,sim="model",
                n.sim=100,ran.gen=beaver.gen,ran.args=beaver.args)
names(beaver.boot)
beaver.boot$t0
beaver.boot$t[1:10,]

Maybe there is a more elegant way for doing this. Anyway, boot.ci should 
give you confidence intervals.

Let me know how you are doing.

Best, Christian




> From: Lillian Sandeman <l.sandeman>
> Date: Mon, 2 Oct 2006 13:59:09 +0100 (BST)
> 
> Hello,
> 
> I am have fitted GLS models to time series data. Now I wish to bootstrap
> this data to produce confidence intervals for the model.
> 
> However, because this is time series data, normal bootstrapping is not
> applicable. Secondly, 'tsboot' appears to only be useful for ar models -
> and does not seem to be applicable to GLS models.
> 
> I have written code in R to randomly sample blocks of the data (as in
> Davison & Hinkley's book - bootstrap methods and their application) and
> use this resampling to re-run the model, but this does not seem to be the
> correct approach since Confidence Intervals produced do not show the
> underlying pattern (cycles) in the data [even when block length is
> increased, it only picks up a little of this variation].
> 
> Any help as to how to proceed with this would be greatly appreciated, as I
> cannot find anything applicable on the R pages. Alternatively, if there
> is another method to proceed with this (other than bootstrapping), I would
> also be happy to try it.
> 
> Thankyou,
> 
> Lillian.



More information about the R-help mailing list