[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