처리 방법: glm.fit: 수치적으로 조정된 확률 0 또는 1 발생


R에서 접할 수 있는 경고 메시지는 다음과 같습니다.

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

이 경고는 로지스틱 회귀 모델을 적합하고 데이터베이스에 있는 하나 이상의 관측치의 예측 확률을 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

경고를 처리하는 방법

이 경고 메시지를 처리하는 방법에는 세 가지가 있습니다.

(1) 무시하세요.

어떤 경우에는 이 경고 메시지가 반드시 로지스틱 회귀 모델에 문제가 있음을 나타내는 것은 아니기 때문에 무시해도 됩니다. 이는 단순히 데이터 프레임의 하나 이상의 관측값에 0 또는 1과 구별할 수 없는 예측 값이 있음을 의미합니다.

(2) 표본 크기를 늘리십시오.

다른 경우에는 신뢰할 수 있는 모델 적합성을 제공할 만큼 데이터가 충분하지 않은 작은 데이터 블록으로 작업할 때 이 경고 메시지가 나타납니다. 이 오류를 수정하려면 모델에 제공하는 관측치의 샘플 크기를 늘리면 됩니다.

(3) 이상값을 제거합니다.

다른 경우에는 원본 데이터베이스에 이상값이 있고 소수의 관측값만 0 또는 1에 가까운 확률을 가질 때 이 오류가 발생합니다. 이러한 이상값을 제거하면 경고 메시지가 사라지는 경우가 많습니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 경고 및 오류를 처리하는 방법을 설명합니다.

R 수정 방법: ExtractVars의 잘못된 템플릿 수식
R에서 수정하는 방법: 인수가 숫자도 아니고 논리도 아닙니다. return na
해결 방법: randomForest.default(m, y, …): 외부 함수 호출의 Na/NaN/Inf

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다