我有一组点,(x,y),其中每个y的误差范围为y.low到y.high。假设线性回归是合适的(在某些情况下,数据可能最初遵循幂律,但已被转换为[log,log]为线性)。
计算最佳拟合线很容易,但我需要确保该线保持在每个点的误差范围内。如果回归线超出范围,我只是将其向上或向下推到两者之间,这是最适合的,还是斜率也需要改变?
我意识到在某些情况下,1点的下限和另一点的上限可能需要不同的斜率,在这种情况下,可能只是触摸那两个边界是最合适的。
答案 0 :(得分:2)
与无约束问题相比,所述的约束问题可以具有不同的截距和不同的斜率。
请考虑以下示例(实线显示OLS适合度):
现在,如果你想象前两个点附近的[y.low; y.high]
界限非常紧张,那么最后一个点的界限非常宽松。约束拟合将接近虚线。显然,这两种情况有不同的斜率和不同的截距。
您的问题基本上是具有线性不等式约束的最小二乘法。例如,Charles L. Lawson和Richard J. Hanson在"Solving least squares problems"中处理了相关的算法。
以下是相关章节的direct link(我希望链接有效)。您的问题可以简单地转换为问题LSI(通过将y.high
约束乘以-1
)。
就编码而言,我建议看看LAPACK:那里可能已经有一个函数可以解决这个问题(我还没有检查过)。
答案 1 :(得分:0)
我知道MATLAB有一个可以进行约束SQP(顺序二次规划)的优化库,还有许多其他方法可以解决不等式约束的二次最小化问题。要最小化的成本函数将是拟合与数据之间的平方误差之和。约束是你提到的那些。我确信有免费的库可以做同样的事情。