Excel 用于计算二阶多项式回归(曲线拟合)的算法是什么?是否有示例代码或伪代码可用?
4 回答
我找到了一个解决方案,它返回 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 )。可以使用 计算给定 (x,y) 数据的二阶或二次趋势=LINEST(y,x^{1,2})
。
Worksheet.Evaluate
您可以使用该方法从 C# 调用工作表公式。
这取决于,因为有很多方法可以做到这一点,具体取决于您提供的数据以及曲线通过这些点的重要性。
我猜你的点比多项式中的系数多得多(例如,二阶曲线超过三个点)。
如果这是真的,那么你能做的最好的就是最小二乘拟合,它计算最小化所有点和结果曲线之间的均方误差的系数。
由于这是二阶,我的建议是创建该死的二阶项并进行线性回归。
前任。如果做z~second_order(x,y),就相当于做z~first_order(x,y,x^2,y^2,xy)。