扱い方: glm.fit: 数値的に調整された確率 0 または 1 が発生する


R で発生する可能性のある警告メッセージは次のとおりです。

 Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

この警告は、ロジスティック回帰モデルを近似しているときに、データベース内の 1 つ以上の観測値の予測確率が 0 か 1 かを区別できない場合に発生します。

これは警告メッセージであり、エラーではないことに注意してください。このエラーが発生した場合でも、ロジスティック回帰モデルは適合しますが、元のデータ フレームを分析して、この警告メッセージが表示される原因となる外れ値があるかどうかを確認すると役立つ場合があります。

このチュートリアルでは、この警告メッセージに実際に対処する方法を説明します。

警告を再現する方法

ロジスティック回帰モデルを R の次のデータ フレームに当てはめるとします。

 #create data frame
df <- data. frame (y = c(0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1),
                 x1 = c(3, 3, 4, 4, 3, 2, 5, 8, 9, 9, 9, 8, 9, 9, 9),
                 x2 = c(8, 7, 7, 6, 5, 6, 5, 2, 2, 3, 4, 3, 7, 4, 4))

#fit logistic regression model
model <- glm(y ~ x1 + x2, data=df, family=binomial)

#view model summary
summary(model)

Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

Call:
glm(formula = y ~ x1 + x2, family = binomial, data = df)

Deviance Residuals: 
       Min 1Q Median 3Q Max  
-1.729e-05 -2.110e-08 2.110e-08 2.110e-08 1.515e-05  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept) -75.205 307338.933 0 1
x1 13,309 28512,818 0 1
x2 -2.793 37342.280 0 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2.0728e+01 on 14 degrees of freedom
Residual deviance: 5.6951e-10 on 12 degrees of freedom
AIC: 6

Number of Fisher Scoring iterations: 24

ロジスティック回帰モデルはデータにうまく適合しましたが、確率を 0 または 1 に数値的に調整する警告メッセージが表示されます。

近似ロジスティック回帰モデルを使用して元のデータベースの観測値の応答値を予測すると、ほぼすべての予測確率が 0 と 1 と区別できないことがわかります。

 #use fitted model to predict response values
df$y_pred = predict(model, df, type=" response ")

#view updated data frame
df

   y x1 x2 y_pred
1 0 3 8 2.220446e-16
2 0 3 7 2.220446e-16
3 0 4 7 2.220446e-16
4 0 4 6 2.220446e-16
5 0 3 5 2.220446e-16
6 0 2 6 2.220446e-16
7 0 5 5 1.494599e-10
8 1 8 2 1.000000e+00
9 1 9 2 1.000000e+00
10 1 9 3 1.000000e+00
11 1 9 4 1.000000e+00
12 1 8 3 1.000000e+00
13 1 9 7 1.000000e+00
14 1 9 4 1.000000e+00
15 1 9 4 1.000000e+00

警告の対処方法

この警告メッセージを処理するには、次の 3 つの方法があります。

(1) 無視してください。

場合によっては、この警告メッセージは必ずしもロジスティック回帰モデルに問題があることを示しているわけではないため、単に無視して構いません。これは単に、データ フレーム内の 1 つ以上の観測値が 0 または 1 と区別できない予測値を持つことを意味します。

(2) サンプルサイズを増やす。

また、信頼性の高いモデル適合を提供するのに十分なデータが存在しない小さなデータ ブロックを操作するときに、この警告メッセージが表示される場合もあります。このエラーを修正するには、モデルに入力する観測値のサンプル サイズを増やすだけです。

(3) 外れ値を削除します。

他のケースでは、元のデータベースに外れ値があり、少数の観測値のみが 0 または 1 に近い確率を持つ場合に、このエラーが発生します。これらの外れ値を削除すると、警告メッセージが消えることがよくあります。

追加リソース

次のチュートリアルでは、R で他の警告やエラーを処理する方法について説明します。

R での修正方法: ExtractVars の無効なテンプレート式
R で修正する方法: 引数が数値でも論理でもない: na を返す
修正方法:randomForest.default(m, y, …): 外部関数呼び出しの Na/NaN/Inf

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です