numpy:用更多观察结果更新最小二乘的代码

时间:2011-05-10 15:49:12

标签: python statistics numpy linear-regression least-squares

我正在寻找一种基于numpy的普通最小二乘法实现,可以通过更多观察来更新拟合。类似于Applied Statistics algorithm AS 274或R biglm的行。

如果不这样做,用新行更新QR分解的例程也会引起人们的兴趣。

任何指针?

4 个答案:

答案 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,QRnumpy更新未在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')

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