로지스틱 회귀분석

지금까지 학습한 선형 회귀분석 단순/다중은 모두 종속변수Y가 연속형이었다.
로지스틱회귀분석종속변수가 범주형이면서 0 or 1인 경우 사용하는 회귀분석이다.

로지스틱 회귀분석을 설명하기 위해서는 먼저 로짓 변환오즈에 대해서 알아야한다.

왼쪽그림의 경우, Y가 0 or 1(사망/생존, 실패/성공, 불합격/합격)이라면 선형회귀로는 fitting하기가 힘들다. 그래서 곡선으로 fitting하기 위해 사용하는 것이 logistic함수 = 로짓변환이다.

Odds이고, Odds ratio비의 비율이다.
Odds의 해석은 확률에서 시작되어 실패에 비해 성공할 확률의 비를 의미하며 , odds = p / 1-p로 계산한다.
예를 들어, 게임에서 이길 확률이 1/5, 질 확률이 4/5이면, 게임에서 이길 odds 1/4이 되며, 계산된 값을 바탕으로 5번 중에, 4번 질 동안 1번 이긴다라고 해석한다.

Odds에 Log를 취한 것이 바로 로짓(Log p/1-p)이다.
예를 들어, 아래와 같은 교차표가 있다고 가정해보자.
Odds라는 것은 각 독립변수(drugA, drugB)에 대해 실패/성공에 대한 확률을 구한 뒤, 각각 구하는 것이며, 각 약에 대한 <생존Odds>가 구해지면 -> Odds ratio도 계산할 수 있다.
Odds ratio는 위험요인과 질병발생간의 연관성을 나타낼 때 사용 + 논문기재시 신뢰구간도 같이 제시해야한다.
예를 들어, 대조군(DrugB)와 실험군(DrugA)를 이용해서, 위험요인(DrugA)와 생존/사망의 연관성을 나타낼때, 각각의 Odds -> Odds ratio를 구한 뒤 제시한다.
오즈비 = 교차비 = 승산비 = 대응위험도 라는 표현도 쓴다.

  1. Odds(A)구하기

    • P(A, A에 대해 생존확률) = 20 / 52 = 0.38
    • 1-P(A, 사망확률) = 0.62
    • Odds(A) = 실패(사망)에 비해 생존(성공)할 확률의 비 = 0.38 / 0.62 = 0.61
    • A약 먹으면, 100명 사망할 동안, 61명 생존
  2. Odds(B)구하기

    • P(B, 생존/성공확률) = 24/66 = 0.63
    • 1-P(B, 사망/실패확률) = 0.37
    • Odds(B) = 0.63 / 0.37 = 1.7
    • B약 먹으면, 100명 사망할 동안, 170명 생존
  3. Odds ratio구한 뒤 해석하기

    • B에 대한 A의 Odds ratio = 0.61 / 1.7 = 0.36
    • 해석 : B에 비해 A일 때, 생존(성공)이 0.36배 = 64%가 생존율(성공률)이 떨어진다

로짓 변환

일반 선형회귀모형 glm : f(x) = b0 + b1X1 + b2X2 + .. bpXp

  • f(x)는 링크함수라고 한다. 이 f(x)자리에 특별한 함수들이 들어가서 구체적인 회귀분석을 만든다.
  • 다중선형 회귀분석 : Y = b0 + b1X1 + b2X2 + .. bpXp
  • 로지스틱 회귀분석 : ln( p/1-p ) = = b0 + b1X1 + b2X2 + .. bpXp

즉, 로지스틱 회귀분석은 일반회귀모형의 링크함수를 로짓으로 변형한 분석이다.

선형회귀분석은 Y값이 -무한대 < Y < +무한대의 연속형이다.
그러나 로지스틱 회귀분석의 경우

  • 먼저, p는 0 < p < 1
  • 0< 1-p < 1
  • p가 0에 가까울 경우 : p/1-p = 0/1 = 0
  • p가 1에 가까울 경우 : p/1-p = 1/0 = 무한대
  • p/1-p(오즈)의 범위 : 0 < Odds < 무한대
  • ln( p / 1-p )의 범위 : -무한대 < 로짓 < +무한대

역시.. 링크함수의 범위가 -무한대 < <+무한대 범위를 가지게 된다.

독립변수가 1개인 상황의 로지스틱 회귀분석의 식을 p(독립변수X가 성공할 확률)에 대해서 정리해보자.

그리고 이 식을 X에 대한 P의 그래프로 나타내면, P는 0과 1의 값을 가진다.

관측치x를 대입하면 P는 0 or 1로 fitting시킬 수 있게 된다.

로지스틱 회귀분석에서 통계량의 이해

ln(p/1-p) = b0 + b1X1 + b2X2 + ... + bpXp의 로지스틱회귀분석에서
X1을 위험인자라 가정하고, 아래에 대한 해석을 해보자.
오즈비(Odd ratio)에 대한 해석

  1. 위험인자 있을 때의 로짓1 = 회귀식1(X1=1대입)을 만든다.
  2. 위험인자 없을 때의 로짓2 = 회귀식2(X1=0대입)을 만든다.
    • 회귀식에서 b0, b2X2, ... bpXp는 모두 같고, X1만 대입한 식이 다를 것이다.
  3. 로짓1과 로짓2를 뺀다.
    • 우항은 b1*1 - b1*0 으로 인해 b1만 남는다.
  4. ln(p/1-p) - ln(p'/1-p') = b1
  5. ln( 위험인자있을때의 오즈 / 위험인자없을때의 오즈) = b1
    • ln( 오즈비 ) = b1 ==> b1을 ln(오즈비)로 생각하자.
  6. b1 = ln(오즈비)이므로, b1에 exp취한 값이 오즈비
    • R에서 실제 구해지는 결과는 b1이므로, exp를 취한 것(exp(b1))을 오즈비로 해석하면 된다.
    • exp(b1) = Odds ratio는 기준이 1이며 효과가 없다로 해석한다. 즉, 위험요인 0에 비해 위험요인1인 경우, 사망율 1배 -> 0% 사망율이 떨어진다. = 효과없다.
    • 1보다 클 경우risky로 해석한다. 즉, 위험요인 0에 비해 위험요인 1인 경우 사망률이 1.5배 -> 사망율이 50% 증가한다. risky는 분모오즈의 상황(base line, 대조군, X1=0)에 비해 분자오즈의 상황(위험인자, 실험군, X1=1)이 더 큰 상황
    • 1보다 작을 경우protective로 해석한다. 즉, 위험요인 0에 비해 위험요인 1인 경우 사망률이 0.5배 -> 사망률이 50% 감소한다.
  7. 유의사항1 : 단, 다른효과가 일정(동일)한 상태라는 가정 이 있어야 한다.
  8. 유의사항2 : 신뢰구간(Confidence Interval)가 같이 제시해야하며, 적은 값을 기준으로 소극적(보수적)으로 해석한다.
    • 예를 들어, OR(odds ratio)의 95% CI = 5.4 ( 3.3 ~ 7.8) => 3.3기준으로 최소 3.3배는 위험하다로 소극적 해석


예를 들어보기

종속변수survived(Y)는 0과 1로 구성되어 있고, 0 = 사망, 1 = 생존 이며, 이것을 예측한다고 가정해보자.
R에서 선형회귀분석을 한다면 lm()이며,
R에서 로지스틱 회귀분석을 한다면, glm() + family = 'binomial'인자를 사용해야한다.

  • model <- glm( survived ~ . , family = 'binomial'(link = 'logit'), data= train)

model을 summary()했을 때, Estimated로 나온 것은 각 변수들의 회귀계수이다. 여기에 exp()를 취해야지 Odds ratio가 나온다.

Coefficiets(회귀계수)에는 절편(Intercept) + 각 변수들의 기울기와 표준편차 + wald's z-statistics + p-value 가 나온다.

만약 범주형 변수 sex의 회귀계수를 보면, 범주형이므로 male은 기준이 되어 male에 비해 female 한 단위 증가시 Y의 변화량이 나타날 것이다.
그 추정치는 -2.6609987이다. 이것은 bp(회귀계수, 기울기)이므로, exp()를 취해야지 Odds ratio가 나온다.
exp(-2.66) = 0.069 => *남자(ref, Xp=0)에 비해 female(Xp=1, female)의 생존율 이 0.069배 감소한다 *. 왜냐하면 회귀계수가 음수이므로 반대로 해석한다. = female의 생존율은 93.1% 증가한다.

직접적으로 바로 exp( model$coefficients)오즈비(Odds ratio)만 관찰할 수 있다.
Age의 오즈비가 0.959가 나왔다? => age가 한단위 증가할수록 생존율이 0.959배 증가한다. -> 0.041 감소 -> 생존률이 4.1% 감소한다.

직접적으로 바로 신뢰구간을 포함한 오즈비를 보는 방법은 exp( confint(model) )를 통해 확인할 수 있다. 2.5% cutoff와 97.5% cut off를 제시한다.

  1. 문진한 2019.10.07 00:37

    덕분에 완전 공부 잘 한것 같습니다. 감사합니다.

  2. 2020.04.21 21:13

    비밀댓글입니다

  3. 잘 보고 갑니다~~

  4. 양지성 2020.09.27 15:43

    로지스틱 회귀에 대한 설명 중 가장 명쾌합니다. 감사합니다.

  5. 첼린 2020.10.21 10:24 신고

    설명 너무 깔끔하고 좋아요~!
    감사합니다.
    구독할게요 :)

  6. 이동형 2021.02.01 10:26 신고

    머신러닝 공부 시작했는데
    로짓 이란 단어가 어디에서 왔는지 전혀 몰랐었는데
    덕분에 관련내용 잘 공부하고 갑니다.
    감사합니다

  7. 단순심플 2021.07.03 10:06 신고

    로지스틱 회귀분석에서 독립변수에 범주형, 연속형 변수가 섞여있을 경우 다중공선성은 어떻게 확인하나요?

  8. 2021.09.27 10:00

    비밀댓글입니다

+ Recent posts