2012-03-08 32 views
1

私は、個別にサンプリングされなかったデータを直線的に適合させたいと思います。私は一般化最小二乗法に出くわした:大規模なデータセットで一般化された最小二乗

b=(X'*V^(-1)*X)^(-1)*X'*V^(-1)*Y 

方程式はMatlabの形式です。 XおよびYはデータポイントの座標であり、Vは「分散マトリックス」です。

問題は、そのサイズ(1000行と列)のために、V行列が特異になり、逆変換できないことです。どのようにこの問題を回避するための任意の提案?多分GLS以外の一般化された線形回帰の問題を解決する方法を使用していますか?私が利用できるツールはNumpy/Scipy、R、Matlabです。

答えて

1

ソルバーとして特異値分解を使用できます。それはできる最善を尽くします。

私は通常、最小二乗について別の考え方をしています。あなたはここに私の考えを読むことができます:それはあなたのために良い作品場合

http://www.scribd.com/doc/21983425/Least-Squares-Fit

を参照してください。

サイズの問題は分かりません。あなたはNを持っている場合、あなたはまだのみ(M + 1)のために解決しなければなら(x, y)ペアM次の多項式の係数:

y = a0 + a1*x + a2*x^2 + ... + am*x^m 
2

の代わりに:

b=(X'*V^(-1)*X)^(-1)*X'*V^(-1)*Y 

使用

b= (X'/V *X)\X'/V*Y 

つまり、X*(Y^-1)のすべてのインスタンスをX/Yに置き換えます。 Matlabは、逆行列の計算をスキップして(難しく、エラーが発生しやすい)、除算を直接計算します。


編集:でも最高の行列操作で、一部の操作は、(あなたの記述のようなエラーにつながるなど)できません。

問題に関連する可能性のある例は、複数の測定値が完全に100%相関しているという制約の下で最小自乗問題を解決しようとする場合です。まれな退化症例を除いて、これは数学的にも肉体的にも達成できません。測定ノイズやモデリングエラーを考慮するには、測定値に独立性が必要です。あなたは二つの測定、1の分散とそれぞれを持っている、と完全に相関た場合、その後、あなたのV行列は次のようになります。

V = [1 1; ... 
    1 1]; 

そして、あなたはデータにフィットすることはできないだろう。

しかし、測定間の独立性を考慮して測定値の分散を調整すると、問題なく動作します(これは通常、基底関数を再定式化する必要があることを意味します)。 。例えば、95%の相関測定は、残念ながら、それはあまりにもクラッシュするこの

V = [1  0.95; ... 
    0.95 1 ]; 
+0

次のようになります。「警告:マトリックスは、加工精度に特異である 警告:マトリックスは、単数形単数形に近いか悪いスケールで 結果かもしれません。 RCOND = NaN。 警告:マトリックスは単精度でも精度でも使用できます。 – PeterC

関連する問題