Hi, A not unusual task is performing a multiple regression in a rolling window on a time-series. A standard piece of advice for doing in R is something like the code that follows at the end of the email. I am currently using an "embed" variant of that code and that piece of advice is out there too.
But, it occurs to me that for such an easily specified matrix operation standard R code is really slow. rollapply constantly returns to R interpreter at each window step for a new lm. All lm is at its heart is (X^t X)^(-1) * Xy, and if you think about doing that with Rcpp in rolling window you are just incrementing a counter and peeling off rows (or columns of X and y) of a particular window size, and following that up with some matrix multiplication in a loop. The psuedo-code for that Rcpp practically writes itself and you might want a wrapper of something like: rolling_lm (y=y, x=x, width=4). My question is this: has any of the thousands of R packages out there published anything like that. Rolling window multiple regressions that stay in C/C++ until the rolling window completes? No sense and writing it if it exist. Thanks, Jeremiah Standard (slow) advice for "rolling window regression" follows: set.seed(1) z <- zoo(matrix(rnorm(10), ncol = 2)) colnames(z) <- c("y", "x") ## rolling regression of width 4 rollapply(z, width = 4, function(x) coef(lm(y ~ x, data = as.data.frame(x))), by.column = FALSE, align = "right") ## result is identical to coef(lm(y ~ x, data = z[1:4,])) coef(lm(y ~ x, data = z[2:5,])) [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.