ロジスティック回帰モデルが収束しない


40

航空会社のフライトに関するデータがあります(というデータフレーム内flights)。フライト時間が到着の大幅な遅延(10分以上を意味する)の確率に影響するかどうかを確認したいと思います。予測としてフライト時間を使用し、応答として各フライトが大幅に遅延した(ベルヌーイの束)かどうかのロジスティック回帰を使用すると考えました。私は次のコードを使用しました...

flights$BigDelay <- flights$ArrDelay >= 10
delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
summary(delay.model)

...しかし、次の出力が得られました。

> flights$BigDelay <- flights$ArrDelay >= 10
> delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
Warning messages:
1: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart,  :
  algorithm did not converge
2: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart,  :
  fitted probabilities numerically 0 or 1 occurred
> summary(delay.model)

Call:
glm(formula = BigDelay ~ ArrDelay, family = binomial(link = "logit"),
    data = flights)

Deviance Residuals:
       Min          1Q      Median          3Q         Max
-3.843e-04  -2.107e-08  -2.107e-08   2.107e-08   3.814e-04

Coefficients:
            Estimate Std. Error z value Pr(>|z|)
(Intercept)  -312.14     170.26  -1.833   0.0668 .
ArrDelay       32.86      17.92   1.833   0.0668 .
---
Signif. codes:  0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2.8375e+06  on 2291292  degrees of freedom
Residual deviance: 9.1675e-03  on 2291291  degrees of freedom
AIC: 4.0092

Number of Fisher Scoring iterations: 25

アルゴリズムが収束しなかったことはどういう意味ですか?私はので、それが思ったBigDelay値であったTRUEFALSEの代わりに01、私はすべてを変換した後、私は同じエラーを得ました。何か案は?


最初に考えたのは、完全な分離です。つまり、予測子が「非常に良い」ことを意味し、ロジットは+/-無限大になり、すべてが倒れます。考え直した:コードはあなたが思っていることをしますか?変数名が説明と完全に一致していないようです。あなたはそれ自体で何かを予測しようとしているように見えるので、データがより正確であるものを詳しく述べるかもしれません
共役

1
「同意する」に値するかどうかわかりません。@Conjugate Priorの答えは、モデルの何が問題だったかを説明しました。アルゴリズムの観点からあなたが言及した警告を説明する価値があると思いました。
モニカの復職-G.シンプソン

3
実際の遅延時間がある場合、それらをバイナリ変数に短縮するのではなく、それらをモデル化することにより、より良い情報を取得する可能性があります。
whuber

関連する質問
user603

glm1()関数を試すことができます。収束の問題を克服する

回答:


33

glm()反復再重み付け最小二乗アルゴリズムを使用します。アルゴリズムは、収束を通知する前に、許可された反復の最大数に達しました。文書化されて?glm.controlいるデフォルトは25です。glm呼び出しのリストとして制御パラメーターを渡します。

delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial,
                   control = list(maxit = 50))

@Conjugate Priorが言うように、あなたはそれを生成するために使用されるデータで応答を予測しているようです。誰もArrDelay < 10が予測しFALSE、誰もArrDelay >= 10が予測するように、あなたは完全な分離を持っていTRUEます。もう1つの警告メッセージは、一部の観測値の近似確率が事実上0または1であったことを示しています。これは、モデルに問題があることを示す良い指標です。

2つの缶の警告は手をつないで行きます。あなたの例のように、が大きくなると、尤度関数は非常に平坦になります。より多くの反復を許可する場合、分離の問題がある場合、モデル係数はさらに発散します。β^i


ここでモデルの収束とはどういう意味ですか?
バッハ

1
収束とは、モデル内で推定されているパラメーターが反復間で変化しないことを意味します(または、わずかな許容誤差未満しか変化しません)。ここでは、反復の制限のためにパラメーターがますます大きくなり、フィッティングが停止しますが、パラメーターの推定値は最後から2番目の反復と最後の反復の間で大きく変化し、収束していません。
モニカの復職-G.シンプソン

6

Firthのバイアス削減がデータセットで機能するかどうかを確認できます。これは、標準glmパッケージを使用して分岐を生成するデータセットに役立つ可能性のあるペナルティ付き尤度アプローチです。完全/ほぼ完全な分離を生成する変数を削除する代わりに使用できる場合があります。

バイアス削減の定式化(最尤推定量のバイアスの漸近展開における項は、動機付けの例として古典的なキュムラント展開を使用して削除されます)http:// biometを確認してください 。 oxfordjournals.org/content/80/1/27.abstractO(n1)

Firthのバイアス削減はRパッケージに実装されていますlogistfhttp : //cran.r-project.org/web/packages/logistf/logistf.pdf

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.