我正在寻找一种numpy
基于 - 的普通最小二乘法实现,它允许通过更多观察来更新拟合。类似于应用统计算法 AS 274或 R's 的东西biglm
。
如果做不到这一点,使用新行更新 QR 分解的例程也会很有趣。
任何指针?
我正在寻找一种numpy
基于 - 的普通最小二乘法实现,它允许通过更多观察来更新拟合。类似于应用统计算法 AS 274或 R's 的东西biglm
。
如果做不到这一点,使用新行更新 QR 分解的例程也会很有趣。
任何指针?
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
您可以在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
这还不是一个详细的答案,但是:
AFAIK,这样的更新QR
没有在 中实现,但无论如何我想请您指定更详细的方式,您的实际目标是什么。 numpy
特别是,当(一堆)新观测值到达时(并且使用现代硬件,确实可以很大),为什么仅用最新观测值计算x
(of Ax= b
) 的新估计值是不可接受的?k
k
文件的LSQ.F90
一部分很容易编译,
gfortran-4.4 -shared -fPIC -g -o lsq.so LSQ.F90
这适用于Python,
from ctypes import cdll
lsq = cdll.LoadLibrary('./lsq.so')
一旦我弄清楚函数调用,我就会将它包含在这个答案中。