2011-12-21 408 views
30

これは非常に単純な質問ですが、わかりにくいようです。glmで「アルゴリズムが収束しない」と「数値的に0または1が当てはまる」という警告が表示されるのはなぜですか?

私は、glm関数を使ってロジットを実行していますが、独立変数に関する警告メッセージを受け取り続けます。彼らは要素として保存されていて、数値に変更しましたが運がありませんでした。私も0/1にそれらをコード化しましたが、どちらもうまくいきませんでした。

助けてください!

> mod2 <- glm(winorlose1 ~ bid1, family="binomial") 
Warning messages: 
1: glm.fit: algorithm did not converge 
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 

は、私はまた、カメレオンマンでそれを試してみましたが、同様のエラー:

> mod2 = zelig(factor(winorlose1) ~ bid1, data=dat, model="logit") 
How to cite this model in Zelig: 
Kosuke Imai, Gary King, and Oliva Lau. 2008. "logit: Logistic Regression for Dichotomous Dependent Variables" in Kosuke Imai, Gary King, and Olivia Lau, "Zelig: Everyone's Statistical Software," http://gking.harvard.edu/zelig 
Warning messages: 
1: glm.fit: algorithm did not converge 
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 

EDIT:あなたは?glmを見れば

> str(dat) 
'data.frame': 3493 obs. of 3 variables: 
$ winorlose1: int 2 2 2 2 2 2 2 2 2 2 ... 
$ bid1  : int 700 300 700 300 500 300 300 700 300 300 ... 
$ home  : int 1 0 1 0 0 0 0 1 0 0 ... 
- attr(*, "na.action")=Class 'omit' Named int [1:63021] 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 ... 
    .. ..- attr(*, "names")= chr [1:63021] "3494" "3495" "3496" "3497" ... 
+2

これは、あなたのデータに関する詳細な情報なしでは答えられません。 'str(dat)'などです。また、これらは警告であり、エラーではありません。大きな違いがあります。 – joran

+1

私は 'glm'が収束しないと主張する' glm2'パッケージがあることに気付きました。これがこの問題と関係しているかどうかはわかりません。 http://journal.r-project.org/archive/2011-2/RJournal_2011-2_Marschner.pdf –

+0

カテゴリデータを扱っているように見えるので、私は整数変数を要素として使うことを考えています。 dat $ home < - as.factor(dat $ home) – eamo

答えて

34

(あるいはあなたの2番目の警告のためにGoogle検索を行いますメッセージ)あなたはドキュメントからこれを偶然見つけ出すかもしれません:

For the background to warning messages about ‘fitted probabilities numerically 0 or 1 occurred’ for binomial GLMs, see Venables & Ripley (2002, pp. 197–8).

今、誰もがその本を持っているわけではありません。もう少し詳しくhereにコメントし、この本の著者の

There is one fairly common circumstance in which both convergence problems and the Hauck-Donner phenomenon can occur. This is when the fitted probabilities are extremely close to zero or one. Consider a medical diagnosis problem with thousands of cases and around 50 binary explanatory variable (which may arise from coding fewer categorical variables); one of these indicators is rarely true but always indicates that the disease is present. Then the fitted probabilities of cases with that indicator should be one, which can only be achieved by taking βi = ∞. The result from glm will be warnings and an estimated coefficient of around +/- 10. There has been fairly extensive discussion of this in the statistical literature, usually claiming non-existence of maximum likelihood estimates; see Sautner and Duffy (1989, p. 234).

ワン:しかし、私はこれを行うにするために、それはユダヤだと仮定すると、ここでは関係の通路です。だからここでの教訓は、あなたのプレディクタのレベルの1つを慎重に見ることです。 (また、Googleに警告メッセージ!)

+7

+1良い答え。追加するだけで、モデル、モデル診断、時には別のモデルを見るのは良いことです。たとえば、分類ツリーを試してみてください。これは、(a)優れた予測子(良いこと)、(b)サンプリングの問題(悪いこと)のいずれかを示す可能性があります。 – Iterator

+1

この回答は、OPの質問から2番目の警告のみに対処していますか?私はhttp://discuss.analyticsvidhya.com/t/warning-message-glm-fit-algorithm-did-not-converge/5299で、パラメータ 'maxit'を調整する提案を見つけました(これは、 'glm'は' control'パラメータの一部として 'glm.fit'に続いて' glm.control'に渡されます)、これは第1警告 '1:glm.fit:アルゴリズムは解決していないようです私のために収束する。 –

+0

私はあなたの答えは非常に有用なジョランを見つけましたが、私はまだあなたの答えに基づいて問題を解決する方法を理解していません。あなたの答えの引用に基づいて私の理解は:私の予測変数の1つのレベルのうちの1つは、ほとんど真実ではありませんが、常に変数が0または1であることを示します。これに対処できますか?次に、予測変数を見つけるにはどのようにすればよいのですか?それを見つけたら、私は何をしますか? – par

関連する問題