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

机器算法验证 r 回归 计算统计 线性模型
2022-01-21 04:20:00

我有兴趣在 R 中找到在添加观察或预测变量时有效更新线性模型的方法。biglm 在添加观察时具有更新功能,但我的数据足够小,可以驻留在内存中(尽管我确实有大量实例要更新)。有一些方法可以徒手完成,例如更新 QR 分解(请参阅Hammarling 和 Lucas 从 2008 年开始的“更新 QR 分解和最小二乘问题”),但我希望有一个现有的实现。

4个回答

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

在 matlab 中有排名第一的 QR 更新函数,可以在更新 p 变量线性回归的系数的复杂性中为 您节省一个因子p

尽管几个月前搜索了几天,但我一直无法在 R 中找到等价物(请注意 cran 中有许多 qr.update 函数,但是当你在引擎盖下查看时,它们只是假的——即他们调用lm.update都一样)。

更新:尝试包“跳跃”的源代码。在 R 源代码中,您会发现一个函数 'leaps.forward',它调用 FORTRAN 例程 'forwrd',位于包的 /src 中,它似乎实现了 rank 1 QR 更新。

不如试试线性模型对象的更新能力

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

很长一段时间以来,我一直在寻找与 matlab qr 更新等效的东西,跳跃似乎是一个不错的方法!

在 R 中,您可以查看 strucchange 包中的 recresid() 函数,当您添加观察值(而不是变量!)时,它将给出递归残差。我的猜测是,这将需要很少的修改来获得递归 beta(代码中的 beta?)。