我正在寻找一种基于numpy
的普通最小二乘法实现,可以通过更多观察来更新拟合。类似于Applied Statistics algorithm AS 274或R biglm
的行。
如果不这样做,用新行更新QR分解的例程也会引起人们的兴趣。
任何指针?
答案 0 :(得分:4)
scikits.statsmodels有一个递归OLS,可以更新沙箱中可用于此的反X'X。 (仅用于计算递归OLS残差。)
当数据太大而无法容纳内存给scipy-user邮件列表时,Nathaniel Smith发布了他的OLS代码。主代码更新X'X。我认为econpy也有这个功能。
Pandas有一个不断扩大的OLS,但它可能不容易以在线方式使用。
Nathaniels代码可能是最接近biglm的代码。我认为通用线性模型没有任何意义(错误协方差与身份不同)。
所有人都需要做一些工作才能使用它们。我不知道任何更新QR的python(包装)代码。
更新: 见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
答案 1 :(得分: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
答案 2 :(得分:1)
这还不是一个详细的答案,但是:
AFAIK,QR
等numpy
更新未在x
中实施,但无论如何,我想请您详细说明您的实际目标。
特别是,为什么仅用Ax= b
k
k
计算{{1}}的最新估计值时,为什么不能接受{{1}}最新观察值,当一堆新观察结果到来时(以及现代硬件,{{1}}确实可能很大)?
答案 3 :(得分:0)
文件的LSQ.F90
部分可以轻松编译,
gfortran-4.4 -shared -fPIC -g -o lsq.so LSQ.F90
这适用于Python,
from ctypes import cdll
lsq = cdll.LoadLibrary('./lsq.so')
一旦我找到函数调用,我就会将它包含在这个答案中。