2

個別にサンプリングされていないデータを線形に適合させたいと思います。一般化された最小二乗法に出くわしました:

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

方程式は Matlab 形式です。XYはデータ ポイントの座標でありV、「分散行列」です。

問題は、そのサイズ (1000 行と 1000 列) が原因で、V 行列が特異になり、逆変換できないことです。この問題を回避する方法について何か提案はありますか? GLS以外の一般化された線形回帰問題を解決する方法を使用している可能性がありますか? 私が利用できて (少し) 使い慣れているツールは、Numpy/Scipy、R、および Matlab です。

4

2 に答える 2

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で完全に相関している2つの測定値がある場合、Vマトリックスは次のようになります。

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

そして、あなたは決してデータに適合させることができないでしょう。(これは通常、基底関数を再定式化する必要があることを意味しますが、それはより長いエッセイです。)

ただし、測定値の分散を調整して、測定値間の独立性を少しでも許容できるようにすると、問題なく機能します。たとえば、95%の相関測定値は次のようになります

V = [1      0.95; ...
     0.95   1  ];
于 2012-03-08T04:45:52.757 に答える
1

特異値分解をソルバーとして使用できます。できる限りのことをしてくれます。

私は通常、最小二乗法について別の方法で考えます。ここで私の考えを読むことができます:

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

それがあなたにとってよりうまくいくかどうか見てください。

サイズが問題になる理由がわかりません。N 個(x, y)のペアがある場合でも、M 次多項式で (M+1) 係数を解くだけで済みます。

y = a0 + a1*x + a2*x^2 + ... + am*x^m
于 2012-03-08T02:55:03.357 に答える