【发布时间】:2012-10-08 14:18:37
【问题描述】:
我想对数据集 (X,Y,Yerr) 进行最小二乘多项式拟合并获得拟合参数的协方差矩阵。此外,由于我有很多数据集,CPU 时间是一个问题,所以我正在寻找一个分析(=快速)解决方案。我发现了以下(非理想)选项:
numpy.polyfit 进行拟合,但不考虑错误 Yerr,也不返回协方差;
numpy.polynomial.polynomial.polyfit 接受 Yerr 作为输入(以权重的形式),但也不返回协方差;
scipy.optimize.curve_fit 和 scipy.optimize.leastsq 可以定制以拟合多项式并返回协方差矩阵,但是 - 作为迭代方法 - 这些比 polyfit 例程(产生解析解)慢得多;
Python 是否提供了一个分析多项式拟合例程来返回拟合参数的协方差(或者我是否必须自己编写一个:-)?
更新:
似乎在 Numpy 1.7.0 中,numpy.polyfit 现在不仅确实接受权重,而且还返回系数的协方差矩阵......所以,问题解决了! :-)
【问题讨论】:
-
查看 mpfit 或 kmpfit。 astro.rug.nl/software/kapteyn/kmpfit.html
-
根据链接,这是另一个(通用)迭代求解器。由于速度的原因,我正在寻求一种分析(=非迭代)解决方案——这对于多项式来说是完全可能的。
-
@joris 这个链接可能确实有用,会去研究它。谢谢
-
进行多项式拟合的代码非常简单......为什么不直接调整现有的 numpy 例程以返回协方差矩阵呢?
标签: python numpy scipy covariance polynomial-math