3

我正在寻找一种numpy基于 - 的普通最小二乘法实现,它允许通过更多观察来更新拟合。类似于应用统计算法 AS 274或 R's 的东西biglm

如果做不到这一点,使用新行更新 QR 分解的例程也会很有趣。

任何指针?

4

4 回答 4

4

scikits.statsmodels 有一个递归 OLS,可以更新沙箱中可用于此目的的逆 X'X。(仅用于计算递归 OLS 残差。)

当数据太大而无法放入内存时,Nathaniel Smith 将他的 OLS 代码发布到 scipy-user 邮件列表。主代码更新 X'X。

我认为 econpy 也有这个功能。

Pandas 有一个不断扩展的 OLS,但它可能并不容易以在线方式使用。

Nathaniels 代码可能最接近 biglm。我认为一般线性模型没有任何意义(误差协方差与身份不同)。

所有这些都需要一些工作才能用于此目的。我不知道任何可以更新 QR 的 python(-wrapped) 代码。

更新:见http://mail.scipy.org/pipermail/scipy-dev/2010-February/013853.html

在 cholmod 中有增量 qr 和 cholesky 可用,但我没有尝试过,无论是许可证还是 Windows 问题上的编译,我认为我没有尝试让 incremental_qr 工作,请参阅附件

http://mail.scipy.org/pipermail/scipy-dev/2010-February/013844.html

于 2011-05-10T20:57:41.963 回答
1

您可以在http://code.google.com/p/pythonequations/downloads/list尝试 pythonequations 项目,尽管它可能超出您的需要,它确实使用了 scipy 和 numpy。该代码是http://zunzun.com在线曲线和曲面拟合网站的中间件(我是作者)。源代码带有许多示例。或者,单独的网站可能就足够了 - 请尝试一下。

 James Phillips
 2548 Vera Cruz Drive
 Birmingham, AL  35235  USA

 zunzun@zunzun.com
于 2011-05-10T17:41:20.047 回答
1

这还不是一个详细的答案,但是:

AFAIK,这样的更新QR没有在 中实现,但无论如何我想请您指定更详细的方式,您的实际目标是什么。 numpy

特别是,当(一堆)新观测值到达时(并且使用现代硬件,确实可以很大),为什么仅用最新观测值计算x(of Ax= b) 的新估计值是不可接受的?kk

于 2011-05-10T18:53:47.753 回答
0

文件的LSQ.F90一部分很容易编译,

gfortran-4.4 -shared -fPIC -g -o lsq.so LSQ.F90

这适用于Python,

from ctypes import cdll

lsq = cdll.LoadLibrary('./lsq.so')

一旦我弄清楚函数调用,我就会将它包含在这个答案中。

于 2011-05-10T18:35:32.370 回答