glmを実行しているときのエラー「システムは計算上特異」


29

glm推定を実行するために、robustbaseパッケージを使用してます。しかし、それを行うと、次のエラーが表示されます。

Error in solve.default(crossprod(X, DiagB * X)/nobs, EEq) : 
  system is computationally singular: reciprocal condition number = 1.66807e-16

これはどういう意味ですか?そして、どうすればデバッグできますか?

PS。答えるために何か(式/仕様またはデータ)が必要な場合は、喜んで提供します。

回答:


26

これは、設計マトリックスが可逆的ではないため、回帰モデルの開発に使用できないことを意味します。これは、線形に依存する列、つまり強相関変数から生じます。変数のペアワイズ共分散(または相関)を調べて、削除できる可能性のある変数があるかどうかを調べます。共分散(または相関)>> 0を探しています。あるいは、フォワードステップワイズ回帰を使用して、この変数選択を自動化することもできます。

これは、観測よりも多くの変数を持つことからも発生する可能性があります。その場合、設計行列はおそらくフルランクではありません。これを修正するのは少し難しいですが、方法があります。投げ縄回帰は、データが「長い」よりも「広い」場合にうまく機能すると考えられています。

留意してください:投げ縄または段階的な選択を試みる場合、多重共直線性を処理するだけでなく、(変数選択に関して)はるかに多くのことを行います。


2つの質問に感謝します。1. rの手順を知っていますか。これはデバッグに役立ちますか?2. glmrob()の代わりにglm()を使用してまったく同じデータでまったく同じモデルを実行すると、エラーが発生しないことがわかります。 () 関数?
NK1

2

このエラーに長い時間を費やしましたが、私のためにそれを解決したこのページをチェックアウトしてください

https://www.kaggle.com/c/house-prices-advanced-regression-techniques/discussion/24586

基本的に、マウスが使用する方法を変更するだけです。私はppnを使用していたのでカートに変更しました


2
回答のテキスト内に答えが含まれるようにしてください。そうすれば、人々はそれを読む可能性が高くなり、トピックではなく短すぎるとして削除する可能性が低くなります。
カール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.