2016-11-11 29 views
1

私は現在、p(x,y) = a(1)*x^2+a(2)*y^2+a(3)*x*y+a(4)という2変数多項式でフィッティングしているデータz(0), z(1), z(2)...,z(n)を持っています。私はi=1,...,n(x(i),y(i))の座標を私がp(x(i),y(i))=z(i)とすることがあります。このようにして、私はEigen SVDを使って解決できるオーバー決定システムを持っています。私は最小正方形の頑強な回帰(hereのように)のような外れ値を扱うことができるより洗練された方法を探していますが、2つの変数のC++実装が見つかりませんでした。私はGSLを見ましたが、2つの可変機能のための何もないようです。私が考えることができる唯一の他の解決策は、ROOTのTGraph2Dを使用することです。あなたは他の解決策を知っていますか?数値レシピは?私はC++のコードを書いているので、CやC++の実装が好きです。最小二乗法ロバスト回帰C++

答えて

0

未回答ですが、まだこの問題に取り組んでいますので、ここで進捗状況を共有します。

クラスTLinearFitterあなたは堅牢なフィッティングを選択することができますフィットの方法がある - 最小トリム二乗回帰(LTS):

https://root.cern.ch/root/html532/TLinearFitter.html

もう1つの可能な解決策、より多くの時間かもしれないがかかりますが、多分詳細長期的には最小限に抑えるために私自身の関数を書くことが効率的です。それを最小限にするには です。このアプローチではより大きな「ステップ」がありますが。私はライブラリの使い方を知らず、理解していないチュートリアルもありました。

ここで:https://wis.kuleuven.be/stat/robust/software PROGRESSというLMedSアルゴリズムのFortran実装があります。したがって、このソフトウェアをC/C++に移植してライブラリを作成することも可能です。

+0

最後に私はTLinearFitter :: EvalRobustメソッドを使用します。それはうまく動作します、それはもちろん主要な欠点はパフォーマンスです。 SVDは非常に高速です。 – BiA

関連する問題