Data Analysis & ML/회귀분석

[회귀분석] 로지스틱 회귀분석(1) - 오즈와 로짓

YSY^ 2023. 1. 24. 21:14

로지스틱이 필요한 이유

- 종속변수가 특이할 경우
- 종속변수가 이항변수인 경우(변수가 가지는 값이 딱 2가지인 경우)

OLS 회귀분석을 쓰면 안되는 이유

예제 : 타이타닉, 독립변수 : survived, 종속변수 : pclass

import seaborn as sns
import statsmodels.api as sm
import pandas as pd
import numpy as np
titanic = sns.load_dataset("titanic")

model1 = sm.OLS.from_formula("survived ~ C(pclass)", data=titanic)
result1 = model1.fit()
print(result1.summary())


1st class의 생존 예측 결과 : 0.6296
2nd class의 생존 예측 결과 : 0.6296 - 0.1568 = 0.4728
3rd class의 생존 예측 결과 : 0.6296 - 0.3873 = 0.2423

종속변수는 0과 1밖에 아닌데 예측 결과는 0도 아니고 1도아님. 그러면 0.5보다 높으면 생존이고 아니면 사망이라고 판단해도 되는걸까? 하지만 이는 굉장히 주관적이다.

이항변수가 종속변수인 경우 OLS를 사용하면 기존의 회귀계수를 해석하는 방법에 문제가 있으며 예측값도 0도 1도 아니다. 경우에 따라 0보다 작은 예측값, 1보다 큰 예측값이 나올 수 있음

즉, 회귀분석은 범위에 대한 제한이 없기에 따라서 X의 범위와, y의 범위의 차이가 발생한다.

우리가 기대하는 것은 독립변수 x가 1증가할 때, 종속변수가 1이 될 확률이기 때문에 OLS를 사용하지 못하고 로지스틱 회귀분석을 사용해야 한다.

회귀식을 활용하는 이유는 회귀식의 형태를 유지하면서 얻을 수 있는 장점이 있기 때문이다.

  1. 각각의 설명변수가 얼마나 통계적으로 유의미한지 알 수 있음
  2. 해당 설명변수가 증가하는지 감소하는지에 따라 특정 범주에 속할 확률이 증가하는지 감소하는지를 알 수 있음 (회귀계수)

⇒ 따라서 좌변에 해당하는 값의 범위를 변환함

 

로지스틱 회귀의 목적

  • 설명변수들의 최종적인 outcome의 0,1(binary)이 되는 함수를 찾는 것
  • 따라서 Y를 로짓함수를 outcome로 활용
  • 로짓은 설명변수들에 대한 선형 모형으로 추정 가능
  • 로짓은 각각의 row에 대해 확률을 산출
    • 곡선으로 fitting하기 위해 사용하는것이 로짓변환

 

오즈(Odds)

  • 원래 경마장에서 도박 지불률을 정할 때 사용
    • 만약 경마장에서 A라는 말이 승률이 높다면 사람들은 거기에 다 돈을 걸게 될 것이며, 경마장은 손해를 볼 것이다. 따라서 승률이 높은 경우에는 낮은 돈을 주고, 승률이 낮은 경우에는 높은 돈을 주게(보통 역배라고 한다) 설계를 하는데 이때 사용하는 개념이 오즈이다.
  • 오즈 = 확률 / (1-확률) = p / (1-p)
  • p : success 할 확률
  • 성공할 확률 / 성공하지 못할 확률
  • 0부터 무한대 사이의 연속형 수치를 가짐

확률에 따른 오즈의 그래프

오즈비(Odds ratio)

예시 : 희귀질병의 발병율

  발병 발병되지 않음 합계
도심 1 1999 2000
비도심 1 7999 8000
합계 1 9998 10000
  • 도심지역과 비도심지역의 발병률 계산
    • 도심지역 주민의 발병 오즈(odds) = (1/2000) / (1- 1/2000) = 1/1999
    • 비도심 지역 주민의 발병 오즈(odds) = (1/8000) / (1-(1/8000)) = 1/7999
    • 비도심지역 대비 도심지역 발병 오즈비(odds ratio) = (1/1999) / (1/7999) = 4.0015
    • 도심지역 발병확률(1/2000), 비도심지역 발병확률(1/8000) => 거의 차이가 없다.
  • 오즈와 단순확률(p)는 거의 같음
    • 오즈를 오즈로 나누면 비교가 가능하다.
    • 위의 예시에서 오즈비가 4.0015인데 이는 비도심지역에 1명 환자가 발생할 경우 도심지역에서는 4명 발생한다는 의미이다.

다만 오즈의 문제는 아직도 범위가 0 < 오즈비(odds ratio) < 무한대이며 비대칭이다. 따라서 이를 해결하기위해 로그를 취한다.

로짓(logit)

로짓 = log(오즈비)

  • 오즈에 로그(log)를 붙이면 더 활용범위가 높아진다.
    - 0 < p(단순확률) < 1 & 0 < 1-p < 1
    - p가 0에 가까울수록, 오즈비는 0을 향해 접근
    - p가 1에 가까올수록 오즈비는 무한대를 향해 접근한다.
  • - 0 < 오즈비(odds ratio) < 무한대
  • - 무한대 <log(오즈비) = 로짓 < + 무한대

1. 종속변수가 0과 1일 경우 오즈비를 구하면 최소값은 0이다(모든 값이 0)

  • 로그 밑수를 네이피어수(e=2,718)일 경우 loge0은 마이너스 무한대가 됨
    • 왜냐하면, 2.718을 계속곱해도 2.718보다 작아질 수 있음
  • 하지만 여러번 나누면 1보다 점점 작은 값이 되어 0을 향해 움직임
    • 나눈다는 것은 마이너스 제곱의 의미이므로 마이너스 무한제곱이 되면 거의 0
  • 따라서 log0은 -무한대이다.

2. 종속변수가 0과 1일 경우 오즈비를 구하면 최대값은 1이다(모든 값이 1)

  • 오즈비는 1/(1-1)이라 계산이 불가능하지만 분모을 0에 가까운 0이아닌 가장 작은 수라고 가정하므로, 1을 0에 가장 가까운 작은수로 나눈것으로 무한대가 된다
  • 따라서 log무한대 는 무한대이다.
  • 즉, 로그를 붙이게 되면 종속변수가 0과 1로 이루어진 문제에서 음의 무한대에서 양의 무한대까지 일반 연속변수로 바뀜
  • 따라서 종속변수를 로짓으로 바꿔서 사용하면 우리가 아는 OLS로 회귀분석을 할 수 있다.(하지만 결과 해석방법이 기존의 OLS와 다르다,)

확률에 따른 로짓의 그래프

728x90
반응형