我正在寻找一个基于numpy
的普通最小二乘实现,这将允许用更多的观察来更新拟合。沿着Applied Statistics algorithm AS 274或R的biglm
行。numpy:使用更多观察更新最小二乘的代码
如果做不到这一点,那么用新行更新QR分解的例程也会引起人们的兴趣。
任何指针?
我正在寻找一个基于numpy
的普通最小二乘实现,这将允许用更多的观察来更新拟合。沿着Applied Statistics algorithm AS 274或R的biglm
行。numpy:使用更多观察更新最小二乘的代码
如果做不到这一点,那么用新行更新QR分解的例程也会引起人们的兴趣。
任何指针?
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
你可以试试pythonequations项目http://code.google.com/p/pythonequations/downloads/list,虽然它可能比你需要它更多的使用scipy和numpy。该代码是http://zunzun.com在线曲线和曲面拟合网站的中间件(我是作者)。源代码带有很多例子。另外,单独的网站可能就足够了 - 请尝试一下。
James Phillips
2548 Vera Cruz Drive
Birmingham, AL 35235 USA
[email protected]
文件的LSQ.F90
部分编译容易够着,
gfortran-4.4 -shared -fPIC -g -o lsq.so LSQ.F90
,这只要我找出函数调用我会工作在Python,
from ctypes import cdll
lsq = cdll.LoadLibrary('./lsq.so')
把它包含在这个答案中。
看一看fwarp或f2py。 – tillsten 2011-05-11 10:52:59
这不是一个详细的答案,但:
据我所知,像this的QR
更新的numpy
没有实现,但无论如何,我会想请你指定一个更详细的方式是什么,你实际上是瞄准对于。
特别是,为什么它是不能接受的,只是计算新的估计x
(的Ax= b
)与k
最新的观察,当(一群)新的观测到来(与现代化的硬件,k
的确可以说是相当大的一个) ?
问题的规模是这样的,每当新的观测块到达时重新计算整个拟合的代价是非常昂贵的。在我推出自己的应用程序之前,我正在寻找一种类似于'biglm'的'update'的API--后者完成了我想要的工作,并且做得很好,但是它使用R而不是Python。 – NPE 2011-05-10 21:18:05
建议只使用最新的'k'观察值,但很遗憾不会用于我的数据('k'必须非常大,因此不能解决我遇到的问题。) – NPE 2011-05-10 21:25:50
@aix :那么,实际的规模(即问题规模的特征)是什么呢?什么样的硬件?你是否真的需要考虑自第一次观测以来的所有观测结果,还是仅仅用最后的'k'来操作才更有意义?那些?谢谢 – eat 2011-05-10 21:28:10
@ user333700:由于在这里解释有点复杂的原因,我希望得到一个基于QR分解的解,而不是正规方程(X'X)。感谢指针(+1)。我会研究它。 – NPE 2011-05-10 21:23:33