在R中添加观测值和/或预测变量时,有效地更新线性回归


15

我想在R中找到一种方法,以便在添加观察值或预测变量时有效地更新线性模型。在添加观察值时,biglm具有更新功能,但是我的数据足够小以驻留在内存中(尽管我确实有大量实例需要更新)。有一些方法可以赤手空拳,例如,更新QR因式分解(请参阅Hammarling和Lucas的“更新QR因式分解和最小二乘问题”),但我希望有一个现有的实现。

Answers:


6

如果您要查找的算法确实类似于Applied Statistics 274,1992,Vol 41(2),那么您可以使用biglm,因为它不需要您将数据保存在文件中。


谢谢,但是biglm可以更新预测数字吗?我认为它仅更新了观察结果。
令人毛骨悚然的2011年

是否存在用于添加预测变量的封闭式解决方案?您需要inv(X'X)的等效项,是否存在添加列的等效项?无论如何,您的问题不是像几(几万)乘几百一样小吗?真的有关系吗?
Dirk Eddelbuettel 2011年

2
有简单的封闭形式来更新SVD,还有更多涉及QR的公式。在求解数千个模型时,可节省大量计算量。它们可以在R中实现,但是需要一些工作。这是一个不错的项目。
令人讨厌的2011年

2
好吧,我知道您的商店中有一支能力强大的IT团队。我相信他们可以为您带来一些突破。
Dirk Eddelbuettel 2011年

4

有一个在MATLAB秩一个QR更新功能,在这里 ,为您节省的因素p 更新p变量线性回归系数的复杂性。

尽管在几个月前搜索了几天,但我仍然找不到R中的等效项(请注意,cran中有许多qr.update函数,但是当您深入了解它们时,它们只是伪造的,即它们称为lm.update全部都一样)。

更新:尝试输入“ leaps”包的源代码。在R源中,您会找到一个函数“ leaps.forward”,该函数调用FORTRAN例程“ forwrd”,该函数位于该软件包的/ src中,该软件包似乎实现了1级QR更新。


3

为什么不尝试线性模型对象的更新功能

update.lm( lm.obj, formula, data, weights, subset, na.action)

看看这个链接

  • 有关更新功能的一般说明:

http://stat.ethz.ch/R-manual/R-devel/library/stats/html/update.html

  • 有关update.lm的特定说明:

http://www.science.oregonstate.edu/~shenr/Rhelp/update.lm.html


3
有两点不适用于更新(注意:不赞成使用update.lm)。首先,它使用公式。这本身使执行比lm.fit()慢400%。其次,它重新估计了整个模型。这里没有效率提高。
11

感谢您的事实,我一直在为中型模型使用更新。在您的情况下,它可能没有用。
deps_stats 2011年

1

很久以来我一直在寻找等效于matlab qr更新的东西,跳跃似乎是一种不错的方法!

在R中,您可以查看strucchange包中的recresid()函数,当您添加观察值(不是变量!)时,该函数将提供递归残差。我的猜测是,这几乎不需要修改即可获得递归beta(代码中的betar?)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.