1

Matlab 統計ツールボックスの regstats() 関数を使用して、かなり大きなデータ セットに対して線形回帰分析 (y=xb、指定された [nx1] ベクトル y および [nxm] 行列 x で b を解く) を実行しています。一連の行列/ベクトルのペアを介して。問題は、回帰を実行できないため、すべてゼロの列がある場合、regstats が NaN を返すことです。すべての x 行列にゼロの列がありますが、常に同じ列番号に表示されるわけではありません。x-matrix の各列は実際の変数を表しているため、単純にゼロの列を削除して回帰を実行することはできません。ゼロを削除し、どの列が削除されたかを記憶し、回帰を実行してから、0 の値を b ベクトルの結果の適切な場所に組み込む必要があります。そうすれば、すべての結果が同じ順序で同じ数の変数を表し、その特定の変数が回帰に含まれていない場所にゼロが表示されます。テスト データの小さなセットを使用してこれを手動で行いましたが、約 800 の回帰ペアに対して実行する必要があるため、ゼロ列の検索と置換を自動化する方法が必要です。

4

2 に答える 2

1
IZEROS = find(all(M==0));

IZEROSすべてゼロの列のインデックスのリストになります。

于 2012-07-17T21:57:33.910 に答える
1
allzero = all(x == 0, 1);
goodcols = find(~allzero);

b = zeros(m,1);
b(goodcols) = % solution to problem, taking into account only goodcols
于 2012-07-17T21:57:58.913 に答える