On Dec 19, 2010, at 8:08 AM, 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)

No. there is no boot.x[0] ... in R anyway.


     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.

Probably because you didn't use paper and pencil to figure out what x_n was going to be.

You end up with a series that looks like:

boot.x[n] = odhad^n + boot.res[1]*odhad^(n-1) +boot.res[2]*odhad^(n-2) + ... boot.res[n]

I'm thinking you should play around with n=20 instead of 200 because I don't know what odhad might be and I'd be afraid of overflow with the ^200 operation. Here's a failed attempt:

geo_od <- odhad^(19:0)
geo_res <- boot.res*geo_od
boot.x <- odhad^(1:20) + cumsum(geo_res)

But that's not correct ... except for the fact that it does get the last term correct.


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

David Winsemius, MD
West Hartford, CT

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to