【发布时间】:2012-07-26 15:08:45
【问题描述】:
Excel 用于计算二阶多项式回归(曲线拟合)的算法是什么?是否有示例代码或伪代码可用?
【问题讨论】:
标签: algorithm excel interpolation curve-fitting
Excel 用于计算二阶多项式回归(曲线拟合)的算法是什么?是否有示例代码或伪代码可用?
【问题讨论】:
标签: algorithm excel interpolation curve-fitting
我找到了一个返回与 Excel 给出的相同公式的解决方案:
将用于最小二乘抛物线的值的增强矩阵放在一起。见http://www.efunda.com/math/leastsquares/lstsqr2dcurve.cfm中的求和方程
使用高斯消元法求解矩阵。这是可以做到这一点的 C# 代码http://www.codeproject.com/Tips/388179/Linear-Equation-Solver-Gaussian-Elimination-Csharp
运行后,矩阵 (M) 中的剩余值将等于 Excel 中给出的系数。
也许我能以某种方式找到 R^2,但我不需要它。
【讨论】:
图表中的多项式趋势线使用基于 QR 分解方法的最小二乘法,例如 LINEST 工作表函数 (http://support.microsoft.com/kb/828533)。可以使用=LINEST(y,x^{1,2}) 计算给定 (x,y) 数据的二阶或二次趋势。
您可以使用 Worksheet.Evaluate 方法从 C# 调用工作表公式。
【讨论】:
这取决于,因为有很多方法可以做到这一点,具体取决于您提供的数据以及曲线通过这些点的重要性。
我猜你的点比多项式中的系数多得多(例如,二阶曲线的点超过三个)。
如果这是真的,那么你能做的最好的就是最小二乘拟合,它计算最小化所有点和结果曲线之间的均方误差的系数。
【讨论】:
由于这是二阶,我的建议是创建该死的二阶项并进行线性回归。
例如。如果做z~second_order(x,y),就相当于做z~first_order(x,y,x^2,y^2, xy)。
【讨论】: