[R] Replacing the for loop for time series buid-up

Berend Hasselman bhh at xs4all.nl
Sun Dec 19 20:12:27 CET 2010



Torch wrote:
> 
> Hi,
> is there a function that replaces the following code?
> 
> n=200
> boot.x[1]=odhad+boot.res[1]  #(boot.x[0]=1)
> 
>       for (j in 1:(n-1)) {
>       boot.x[j+1]=odhad*boot.x[j]+boot.res[j+1]
>       }
> 
> This is nested in two other loops, and I am looking for some way to
> improve code performance
> I tried sapply and cumprod but no success.
> 

You can have a look at filter.
Test example:

alpha <- 0.75
N <- 10

boot.res <- ts(rnorm(N))
boot.res

val.init <- boot.res[1] + alpha

boot.x <- ts(val.init, start=1,end=N)
for(t in 2:N) { boot.x[t] <- alpha*boot.x[t-1] + boot.res[t] }
boot.x

boot.x.filter <-
ts(c(val.init,filter(boot.res[-1],filter=alpha,method="recursive",init=val.init)))
boot.x.filter
boot.x - boot.x.filter

succes

Berend


-- 
View this message in context: http://r.789695.n4.nabble.com/Replacing-the-for-loop-for-time-series-buid-up-tp3094421p3094757.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list