私はこれを行う簡単な方法を探すのにかなりの時間を費やしました-理想的には、3Dデータポイントのセットを取得し、いずれかの直交を使用して最適なラインに2つのポイントを返す魔法のライブラリがどこかに存在します回帰または最小二乗法であり、近似直線の誤差も返します。そのようなものは存在しますか?もしそうなら、どこにありますか?
3 に答える
これは簡単に実行できますが、自分で作成するには、固有値ソルバーまたは特異値分解が必要になります。(x-xbar、y-ybar、z-zbar)データのnx3行列Aを列として作成します。これらの列の意味を後で使用するために保存します。これをV0=[xbar、ybar、zbar]と呼びます。
ここで、A'* Aの固有値と固有ベクトルを計算します。つまり、A転置にAを掛けて形成された3x3行列を計算します。
このデータがR^3の線上にある場合、それらの固有値の1つは、他の2つの固有値よりも大幅に大きくなります。これが当てはまらない場合、直交回帰直線は適切に推定されません。
A'*Aの最大の固有値に関連付けられている固有ベクトルを取ります。次に、Vが対応する固有ベクトルである場合、直交回帰直線は次のように定義されます。
V(t)= V0 + t * V
その線上の任意の点は、パラメータtの値によって指定できます。
または、Aの特異値分解を計算し、Aの最大の特異値に対応する右の特異ベクトルを取ります。
いずれの場合も、データポイントの誤差を計算する場合、これは問題の線までの直交距離として定義されます。
「java線形最小二乗回帰ライブラリ」のグーグルとあなたはいくつかのオプションを見つける必要があります。1つはDrejです。しかし、私はこれを自分で使用したことはありません。
編集-3Dデータがサポートされているかどうかはわかりません。
トリックを知っていれば、それを行うのは簡単です:http ://www.scribd.com/doc/21983425/Least-Squares-Fit
より多くの次元はより多くの係数を意味しますが、それらは追加するのに十分簡単です。アイデアはすべて同じです。