로지스틱 회귀 분석에 대한 신뢰 구간 계산


15

이항 로지스틱 회귀 분석을 사용 하여 사용자가 무언가를 클릭 할 가능성에 노출 has_x되거나 has_y영향을 미치는지 식별합니다 . 내 모델은 다음과 같습니다.

fit = glm(formula = has_clicked ~ has_x + has_y, 
          data=df, 
          family = binomial())

이것은 내 모델의 출력입니다.

Call:
glm(formula = has_clicked ~ has_x + has_y, 
    family = binomial(), data = active_domains)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.9869  -0.9719  -0.9500   1.3979   1.4233  

Coefficients:
                      Estimate Std. Error z value Pr(>|z|)    
(Intercept)          -0.504737   0.008847 -57.050  < 2e-16 ***
has_xTRUE -0.056986   0.010201  -5.586 2.32e-08 ***
has_yTRUE  0.038579   0.010202   3.781 0.000156 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 217119  on 164182  degrees of freedom
Residual deviance: 217074  on 164180  degrees of freedom
AIC: 217080

Number of Fisher Scoring iterations: 4

각 계수가 유의미하기 때문에이 모델을 사용하면 다음 조합을 사용하여 이러한 조합의 값이 무엇인지 알 수 있습니다.

predict(fit, data.frame(has_x = T, has_y=T), type = "response")

Std에보고하는 방법을 이해하지 못합니다. 예측 오류.

  1. 만 사용해야 합니까? 아니면 여기에 설명 된 접근 방식을 사용 하여 를 변환해야 합니까?1.96SESE

  2. 두 변수에 대한 표준 오차를 이해하려면 어떻게 생각합니까?

질문 과 달리 오류의 상한과 하한이 백분율로 무엇인지 이해하는 데 관심이 있습니다. 예를 들어, 내 예측 중 37 %의 값을 보여True,True 이것이 경우 라고 계산할 수 있습니까? (내 요점을 설명하기 위해 0.3 % 선택)95 % C I+/0.395%CI




@kjetilbhalvorsen OP가 예측 간격을 원하는 것처럼 보이지만 문제의 근본이 될 수있는 로그 스케일이 아닌 OR 스케일로 작동하는 것 같으므로 복제본인지 확신하십니까?
mdewey

2
로지스틱 회귀가 얼마나 잘 예측하는지 평가하려면 일반적으로 예측 + SE와 다른 측정 값을 사용합니다. 하나의 대중적인 평가 척도는 각각의 AUC가있는 ROC-Curve입니다
adibender

1
이것이 도움이 될 수 있습니까? stackoverflow.com/questions/47414842/…
Xavier Bourret Sicotte

답변:


24

귀하의 질문은 처음에 혼란스러워하는 확률과 확률을 다루고 있다는 사실에서 비롯 될 수 있습니다. 로지스틱 모델은 컴퓨팅의 비선형 변환이기 때문에 신뢰 구간이 간단하지 않습니다.βTx

배경

로지스틱 회귀 모형에 대해

  • 확률 의 :p = e α + β 1 x 1 + β 2 x 2(Y=1)p=eα+β1x1+β2x21+eα+β1x1+β2x2

  • 확률 의 :( p(Y=1)(p1p)=eα+β1x1+β2x2

  • 로그 승률 :(Y=1)log(p1p)=α+β1x1+β2x2

변수 에서 1 단위 증가한 경우 , 즉 인 경우 새로운 확률은 다음과 같습니다.x1x1+1

Odds(Y=1)=eα+β1(x1+1)+β2x2=eα+β1x1+β1+β2x2
  • 교차비 (OR)을 따라서있다

Odds(x1+1)Odds(x1)=eα+β1(x1+1)+β2x2eα+β1x1+β2x2=eβ1
  • 로그 확률 비율 = β1

  • 상대 위험 또는 (확률 비율) =eα+β1x1+β1+β2x21+eα+β1x1+β1+β2x2eα+β1x1+β2x21+eα+β1x1+β2x2

계수 해석

계수 값 어떻게 해석 ? 다른 모든 것이 고정되어 있다고 가정하면 :βj

  • 의 모든 단위 증가에 대해 log-odds 비율은 증가합니다 .xjβj
  • 의 모든 단위 증가에 대해 승산 비는 만큼 증가합니다 .xjeβj
  • 에서 로 가 증가 할 때마다 승산 비는xjkk+ΔeβjΔ
  • 계수가 음수이면 가 증가 하면 승산 비가 감소합니다.xj

단일 매개 변수 대한 신뢰 구간βj

만 사용해야 합니까? 아니면 여기에 설명 된 접근 방식을 사용하여 SE를 변환해야합니까?1.96SE

매개 변수 는 Maxiumum Likelihood Estimation을 사용하여 추정 되기 때문에 MLE 이론에 따르면 무조건적으로 정상이므로 큰 표본 Wald 신뢰 구간을 사용하여 평소를 얻을 수 있습니다βj

βj±zSE(βj)

log-odds 비율에 대한 신뢰 구간을 제공합니다. MLE의 불변 속성을 사용하면

eβj±zSE(βj)

이것은 승산 비에 대한 신뢰 구간입니다. 이 간격은 단일 매개 변수에만 적용됩니다.

두 변수에 대한 표준 오차를 이해하려면 어떻게 생각합니까?

여러 모수를 포함하는 경우 Bonferroni 프로 시저를 사용할 수 있고 그렇지 않은 경우 모든 모수에 대해 확률 추정치에 대한 신뢰 구간을 사용할 수 있습니다

여러 매개 변수에 대한 Bonferroni 절차

모수를 약 의 패밀리 신뢰 계수로 추정 할 경우 , Bonferroni의 신뢰 한계는 다음과 같습니다.g1α

βg±z(1α2g)SE(βg)

확률 추정치에 대한 신뢰 구간

로지스틱 모델은 하나의 관측 가능성의 추정을 출력하고, 우리는 실제 확률 주위 빈도주의 간격을 구축하고자 되도록pPr(pLppU)=.95

엔드 포인트 변환 이라는 한 가지 접근 방식 은 다음을 수행합니다.

  • 선형 조합 에 대한 신뢰 구간의 상한 및 하한을 계산합니다 (Wald CI 사용).xTβ
  • 끝점 에 단조로운 변환을 적용 하여 확률을 구합니다.F(xTβ)

이후 의 단조 변화 인Pr(xTβ)=F(xTβ)xTβ

[Pr(xTβ)LPr(xTβ)Pr(xTβ)U]=[F(xTβ)LF(xTβ)F(xTβ)U]

구체적으로 이것은 를 계산 한 다음 로짓 변환을 결과에 적용하여 하한과 상한을 얻습니다.βTx±zSE(βTx)

[exTβzSE(xTβ)1+exTβzSE(xTβ),exTβ+zSE(xTβ)1+exTβ+zSE(xTβ),]

의 추정 근사 분산은 다음을 사용하여 회귀 계수의 공분산 행렬을 사용하여 계산할 수 있습니다.xTβ

Var(xTβ)=xTΣx

이 방법의 장점은 범위가 범위를 벗어날 수 없다는 것입니다(0,1)

델타 방법, 부트 스트랩 등을 사용하는 몇 가지 다른 접근 방식도 있습니다.이 방법에는 각각 고유 한 가정, 장점 및 한계가 있습니다.


출처와 정보

이 주제에 대해 제가 가장 좋아하는 책은 Kutner, Neter, Li의 14 장 "Applied Linear Statistical Models"입니다.

그렇지 않으면 여기에 몇 가지 온라인 소스가 있습니다.


이것의 대부분은 계수에 대한 CI에 관한 것이며 OP가 알기에 좋은 것은 아니지만 그가 필요로하는 것이 확실합니까? 나중에 섹션이 더 관련성이있는 것 같지만 너무 빨리 읽으면 차이점이 누락 될 수 있습니까?
mdewey

2
예, 아마도 옳을 것입니다. 그러나 로그 회귀에 대한 확률, 로그 확률 및 확률을 이해하는 것은 과거에 어려움을 겪었습니다.이 게시물이 미래의 누군가를 도울 수 있도록 주제를 충분히 요약하기를 바랍니다. 아마도 CI를 제공함으로써 더 명확하게 질문에 대답 할 수 있지만 공분산 행렬이 필요합니다
Xavier Bourret Sicotte

5

예측의 95 % 신뢰 구간을 얻기 위해 로짓 척도를 계산 한 다음 확률 척도 0-1로 다시 변환 할 수 있습니다. 다음은 타이타닉 데이터 셋을 사용하는 예입니다.

library(titanic)
data("titanic_train")

titanic_train$Pclass = factor(titanic_train$Pclass, levels = c(1,2,3), labels = c('First','Second','Third'))

fit = glm(Survived ~ Sex + Pclass, data=titanic_train, family = binomial())

inverse_logit = function(x){
  exp(x)/(1+exp(x))
}

predicted = predict(fit, data.frame(Sex='male', Pclass='First'), type='link', se.fit=TRUE)

se_high = inverse_logit(predicted$fit + (predicted$se.fit*1.96))
se_low = inverse_logit(predicted$fit - (predicted$se.fit*1.96))
expected = inverse_logit(predicted$fit)

평균 및 낮음 / 높음 95 % CI.

> expected
        1 
0.4146556 
> se_high
        1 
0.4960988 
> se_low
        1 
0.3376243 

그리고을 사용하여 얻은 결과 type='response'는 평균 만 제공합니다.

predict(fit, data.frame(Sex='male', Pclass='First'), type='response')
        1 
0.4146556

predict(fit, data.frame(Sex='male', Pclass='First'), type='response', se.fit=TRUE)작동합니다.
Tony416
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.