2012-02-27 24 views
2

私は警告を得る:Xは機械の精度内で不足しているランクです。私が得ている係数は、入力がすべて実数であっても、複素数です。なぜこうなった?どのようにこれを抜け出すための任意のアイデア?Matlab - 回帰

+0

いくつかのコードを表示できますか? –

+0

あなたはあなたに電話している機能を教えてもらえますか? – trutheality

+0

[b、bint、r、rint、stats] =回帰(出力、入力);これで十分ですか?出力と入力は多かれ少なかれファイルからロードされます。サイズ(出力)= 877835 1サイズ(入力)= 877835 8 – Trup

答えて

5

入力ベクトルに線形依存の列が多すぎるとします。 rank(input)を実行して、出力が何を表示しているかを確認してください。 8より小さい場合は、input行列にある独立変数の一部を削除する必要があります。あなたは、低ランク行列を持っている場合は、依存列を探してみてください

input = [ fuel engine_speed fuel.*engine_speed ]; % or even 
input = [ x1 x2 x1.*x2 ]; 

:また、あなたはあなたのようなinput行列に到着した方法の詳細を含めることができます。ここで私は(私は誰かがより良いのを知っていると確信している)推薦することを、簡単な方法です:

[R,jb] = rref(input); 
full_rank_input = input(:,jb); 
rank(input) 

rank(full_rank_input) == num_columnsであなたの行列を与える必要があります。

+0

私はランク= 4を得ました。たぶんデータポイントが多すぎますか?この問題を解決する最良の方法は何ですか? – Trup

+2

データポイントがあまり多くなく、X変数が多すぎます。削除するものを選択する必要があります。 – prototoast

+0

これは実際には統計的な質問です(プログラミング上の質問ではありません)。おそらく統計情報Stack Exchangeでうまくいくでしょうか? –