2011-05-10 60 views

回答

3

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

Nathaniel Smith在数据太大而无法放入scipy用户邮件列表的内存中时发布了他的OLS代码。主代码更新X'X。

我觉得econpy也有这个功能。

熊猫有一个扩展的OLS,但它可能不容易在线使用。

Nathaniels代码可能最接近biglm。我不认为有什么一般的线性模型(错误协方差不同于身份)。

所有需要一些工作才可以用于此。我不知道会更新QR的任何python(包装)代码。

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

有增量QR和乔莱斯基可用cholmod,但我没有尝试它,无论是牌照或编译的窗口上的问题,我不认为我试图让incremental_qr工作 看到附着物

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

+0

@ user333700:由于在这里解释有点复杂的原因,我希望得到一个基于QR分解的解,而不是正规方程(X'X)。感谢指针(+1)。我会研究它。 – NPE 2011-05-10 21:23:33

0

文件的LSQ.F90部分编译容易够着,

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

,这只要我找出函数调用我会工作在Python,

from ctypes import cdll 

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

把它包含在这个答案中。

+0

看一看fwarp或f2py。 – tillsten 2011-05-11 10:52:59

1

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

据我所知,像thisQR更新的numpy没有实现,但无论如何,我会想请你指定一个更详细的方式是什么,你实际上是瞄准对于。

特别是,为什么它是不能接受的,只是计算新的估计x(的Ax= b)与k最新的观察,当(一群)新的观测到来(与现代化的硬件,k的确可以说是相当大的一个) ?

+0

问题的规模是这样的,每当新的观测块到达时重新计算整个拟合的代价是非常昂贵的。在我推出自己的应用程序之前,我正在寻找一种类似于'biglm'的'update'的API--后者完成了我想要的工作,并且做得很好,但是它使用R而不是Python。 – NPE 2011-05-10 21:18:05

+0

建议只使用最新的'k'观察值,但很遗憾不会用于我的数据('k'必须非常大,因此不能解决我遇到的问题。) – NPE 2011-05-10 21:25:50

+0

@aix :那么,实际的规模(即问题规模的特征)是什么呢?什么样的硬件?你是否真的需要考虑自第一次观测以来的所有观测结果,还是仅仅用最后的'k'来操作才更有意义?那些?谢谢 – eat 2011-05-10 21:28:10