ivo_welch-rstat8783@mailblocks.com
2004-Sep-15 14:53 UTC
[R] adding observations to lm for fast recursive residuals?
dear R community: i have been looking but failed to find the following: is there a function in R that updates a plain OLS lm() model with one additional observation, so that I can write a function that computes recursive residuals *quickly*? PS: (I looked at package strucchange, but if I am not mistaken, the recresid function there takes longer than iterating over the models fresh from start to end.) I know the two functions do not do the same thing, but the main part (OLS) is the same: > handrecurse.test <- function( y, x ) { z<- rep(NA, T); for (i in 2:T) { z[i] <- coef(lm(y[1:i] ~ x[1:i]))[2]; }; return(z); } > system.time(handrecurse.test(y,x)) [1] 0.69 0.00 0.70 0.00 0.00 > system.time(length(recresid( y~x ))) [1] 1.44 0.07 1.59 0.00 0.00 pointers appreciated. regards, /iaw --- ivo welch
roger koenker
2004-Sep-15 15:07 UTC
[R] adding observations to lm for fast recursive residuals?
In my quantreg package there is a function called lm.fit.recursive() that, as the .Rd file says: Description: This function fits a linear model by recursive least squares. It is a utility routine for the 'khmaladzize' function of the quantile regression package. Usage: lm.fit.recursive(X, y, int=TRUE) Arguments: X: Design Matrix y: Response Variable int: if TRUE then append intercept to X Value: return p by n matrix of fitted parameters, where p. The ith column gives the solution up to "time" i. It is written in fortran so it should be reasonably quick. HTH url: www.econ.uiuc.edu/~roger Roger Koenker email rkoenker at uiuc.edu Department of Economics vox: 217-333-4558 University of Illinois fax: 217-244-6678 Champaign, IL 61820 On Sep 15, 2004, at 9:53 AM, <ivo_welch-rstat8783 at mailblocks.com> wrote:> > dear R community: i have been looking but failed to find the > following: is there a function in R that updates a plain OLS lm() > model with one additional observation, so that I can write a function > that computes recursive residuals *quickly*? > > PS: (I looked at package strucchange, but if I am not mistaken, the > recresid function there takes longer than iterating over the models > fresh from start to end.) I know the two functions do not do the same > thing, but the main part (OLS) is the same: > > handrecurse.test <- function( y, x ) { z<- rep(NA, T); for (i in > 2:T) { z[i] <- coef(lm(y[1:i] ~ x[1:i]))[2]; }; return(z); } > > system.time(handrecurse.test(y,x)) > [1] 0.69 0.00 0.70 0.00 0.00 > > system.time(length(recresid( y~x ))) > [1] 1.44 0.07 1.59 0.00 0.00 > > pointers appreciated. regards, /iaw > > --- > ivo welch > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html