Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 最小二乘稳健回归C++;_C++_Statistics_Regression_Eigen - Fatal编程技术网

C++ 最小二乘稳健回归C++;

C++ 最小二乘稳健回归C++;,c++,statistics,regression,eigen,C++,Statistics,Regression,Eigen,我有一组数据z(0),z(1),z(2)…,z(n),我目前正在用一个2变量多项式来拟合,这类多项式是p(x,y)=a(1)*x^2+a(2)*y^2+a(3)*x*y+a(4)。我有I=1,…,n(x(I),y(I))我施加的坐标是p(x(I),y(I))=z(I)。这样我就有了一个超定的系统,我可以用它来解决。我正在寻找一种更复杂的方法,可以处理离群值,比如最小二乘稳健回归(中值)的最小中位数,但我还没有找到2个变量的C++实现。我查看了GSL,但似乎没有2个变量函数。我能想到的唯一其他解决

我有一组数据
z(0),z(1),z(2)…,z(n)
,我目前正在用一个2变量多项式来拟合,这类多项式是
p(x,y)=a(1)*x^2+a(2)*y^2+a(3)*x*y+a(4)
。我有
I=1,…,n
(x(I),y(I))
我施加的坐标是
p(x(I),y(I))=z(I)
。这样我就有了一个超定的系统,我可以用它来解决。我正在寻找一种更复杂的方法,可以处理离群值,比如最小二乘稳健回归(中值)的最小中位数,但我还没有找到2个变量的C++实现。我查看了GSL,但似乎没有2个变量函数。我能想到的唯一其他解决方案是在中使用TGraph2D。你知道其他解决办法吗?也许是数字食谱?由于我编写C++代码,我更喜欢C或C++实现。

< P>因为没有回答,但我仍然在研究这个问题,我将分享我的进展。 TLinearFitter类有一种拟合方法,允许您选择稳健拟合-最小修剪平方回归(LTS):

另一种可能的解决方案,可能更耗时,但从长远来看可能更有效,就是编写我自己的函数以最小化,并且使用: 尽量减少它。尽管在这种方法中有一个更大的“步骤”。我不知道如何使用这个库,而且我还没有找到一个好的教程来理解它


这里:有一个名为PROGRESS的LMedS算法的Fortran实现。因此,另一个可能的解决方案是将此软件移植到C/C++并从中生成一个库。

由于尚未给出答案,但我仍在解决此问题,因此我将在此处分享我的进展

TLinearFitter类有一种拟合方法,允许您选择稳健拟合-最小修剪平方回归(LTS):

另一种可能的解决方案,可能更耗时,但从长远来看可能更有效,就是编写我自己的函数以最小化,并且使用: 尽量减少它。尽管在这种方法中有一个更大的“步骤”。我不知道如何使用这个库,而且我还没有找到一个好的教程来理解它


这里:有一个名为PROGRESS的LMedS算法的Fortran实现。因此,另一个可能的解决方案是将此软件移植到C/C++并从中生成一个库。

最后,我使用TLinearFitter::EvalRobust方法。它工作得很好,它的主要缺点当然是性能。SVD要快得多。最后我使用了TLinearFitter::EvalRobust方法。它工作得很好,它的主要缺点当然是性能。SVD的速度要快得多。