gpt4 book ai didi

c++ - 二维数据点集的加权线性最小二乘法

转载 作者:太空狗 更新时间:2023-10-29 21:04:17 26 4
gpt4 key购买 nike

我的问题是讨论的延伸How to fit the 2D scatter data with a line with C++ .现在我想进一步扩展我的问题:在估计适合 2D 散点数据的线时,如果我们可以不同地处理每个 2D 散点数据会更好。也就是说,如果散点离直线较远,我们可以给该点较低的权重,反之亦然。因此,问题就变成了:给定一个二维散点数组及其权重因子,我们如何估计通过它们的直线?可以在本文 (weighted least regression) 中找到此方法的良好实现。但是,那篇文章的算法实现过于复杂,涉及到矩阵计算。因此,我试图找到一种无需矩阵计算的方法。该算法是 simple linear regression 的扩展,为了说明算法,我写了下面的MATLAB代码:

function line = weighted_least_squre_for_line(x,y,weighting);


part1 = sum(weighting.*x.*y)*sum(weighting(:));

part2 = sum((weighting.*x))*sum((weighting.*y));

part3 = sum( x.^2.*weighting)*sum(weighting(:));

part4 = sum(weighting.*x).^2;

beta = (part1-part2)/(part3-part4);

alpha = (sum(weighting.*y)-beta*sum(weighting.*x))/sum(weighting);

a = beta;
c = alpha;
b = -1;
line = [a b c];

上述代码中,x,y,weighting分别代表x坐标、y坐标和权重因子。我用几个例子测试了算法,但仍然不确定它是否正确,因为此方法与 Polyfit 得到不同的结果。 ,这依赖于矩阵计算。我现在在这里发布实现并征求您的意见。您认为这是正确的实现方式吗?谢谢!

最佳答案

如果您认为降低远离直线的点的权重是个好主意,您可能会被 http://en.wikipedia.org/wiki/Least_absolute_deviations 吸引,因为一种计算方法是通过 http://en.wikipedia.org/wiki/Iteratively_re-weighted_least_squares ,这将减少远离直线的点的权重。

关于c++ - 二维数据点集的加权线性最小二乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11564108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com