로지스틱 회귀 모델이 수렴되지 않습니다


39

항공사 항공편에 대한 데이터가 있는데 (데이터 프레임 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대신 0하고 1,하지만 난 모든 것을 변환 후 저도 같은 오류가 발생했습니다. 어떤 아이디어?


첫 번째 생각 : 완벽한 분리- 예측 변수가 '너무 좋아', 로짓이 +/- 무한대로 이동하고 모든 것이 넘어짐을 의미합니다. 두번째 생각 : 코드가 생각하는대로 작동합니까? 변수 이름이 설명과 일치하지 않는 것 같습니다. 데이터 자체를 사용하여 무언가를 예측하려는 것처럼 보이기 때문에 데이터가 더 정확하게 무엇인지 자세히 설명 할 있습니다.
공역 사전

1
확실하지 않습니다 "수락". @Conjugate Prior의 답변은 모델의 문제점을 설명했습니다. 알고리즘 측면에서 언급 한 경고를 설명 할 가치가 있다고 생각했습니다.
복원 Monica Monica-G. Simpson

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 >= 10TRUE있습니다. 다른 경고 메시지는 일부 관측치에 대한 적합 확률이 실제로 0 또는 1이며 모델에 문제가 있음을 나타내는 좋은 지표입니다.

이 두 경고는 서로 밀접한 관련이 있습니다. 예와 같이 일부 가 커지면 우도 함수는 매우 평평 할 수 있습니다 . 반복을 더 많이 허용하면 분리 문제가있는 경우 모델 계수가 더 다양해집니다.β^i


모델 수렴에 의해 정확히 무엇을 의미하는지 설명해 주시겠습니까?
Bach

1
수렴이란 모델에서 추정되는 매개 변수가 반복간에 변경되지 않거나 약간의 작은 공차 미만으로 변경됨을 의미합니다. 여기서 반복에 대한 한계로 인해 매개 변수가 점점 커지고 피팅이 중지되지만 매개 변수 추정값은 두 번째 반복과 마지막 반복간에 크게 변경되었으며 수렴되지 않았습니다.
복원 Monica Monica-G. Simpson

6

Firth의 바이어스 감소가 데이터 세트에서 작동하는지 확인할 수 있습니다. 표준 glm패키지를 사용하여 분기를 생성하는 데이터 세트에 유용 할 수있는 처벌 된 가능성 접근법입니다 . 때로는 완전 / 거의 완전한 분리를 생성하는 변수를 제거하는 대신 사용할 수 있습니다.

편향 감소의 공식화 최대 동기 추정기의 편향의 점근 ​​확장에서 은 동기 예제로 고전적인 누적 확장을 사용하여 제거됩니다) http : // biomet을 확인 하십시오. oxfordjournals.org/content/80/1/27.abstractO(n1)

Firth의 바이어스 감소는 R-package에서 구현됩니다 logistf: http://cran.r-project.org/web/packages/logistf/logistf.pdf

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.