5-6. 로지스틱 회귀분석(Logistic Regression)
로지스틱 회귀분석
지금까지 학습한 선형 회귀분석
단순/다중은 모두 종속변수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를 구한 뒤 제시한다.
오즈비 = 교차비 = 승산비 = 대응위험도 라는 표현도 쓴다.
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명 생존
Odds(B)구하기
- P(B, 생존/성공확률) = 24/66 = 0.63
- 1-P(B, 사망/실패확률) = 0.37
- Odds(B) = 0.63 / 0.37 =
1.7
- B약 먹으면, 100명 사망할 동안, 170명 생존
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(X1=1대입)을 만든다.
- 위험인자 없을 때의 로짓2 = 회귀식2(X1=0대입)을 만든다.
- 회귀식에서 b0, b2X2, ... bpXp는 모두 같고, X1만 대입한 식이 다를 것이다.
- 로짓1과 로짓2를 뺀다.
- 우항은 b1*1 - b1*0 으로 인해
b1
만 남는다.
- 우항은 b1*1 - b1*0 으로 인해
- ln(p/1-p) - ln(p'/1-p') = b1
- ln( 위험인자있을때의 오즈 / 위험인자없을때의 오즈) = b1
ln( 오즈비 ) = b1
==> b1을 ln(오즈비)로 생각하자.
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% 감소한다.
- R에서 실제 구해지는 결과는
유의사항1
: 단, 다른효과가 일정(동일)한 상태라는 가정 이 있어야 한다.유의사항2
: 신뢰구간(Confidence Interval)가 같이 제시해야하며, 적은 값을 기준으로 소극적(보수적)으로 해석한다.- 예를 들어, OR(odds ratio)의
95% CI
= 5.4 ( 3.3 ~ 7.8) =>3.3
기준으로최소 3.3배는 위험하다
로 소극적 해석
- 예를 들어, OR(odds ratio)의
예를 들어보기
종속변수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를 제시한다.
'한의대 생활 > └ 통계에 대한 나의 정리' 카테고리의 다른 글
5-5. 회귀분석(이상치, 가정사항 확인하기) (0) | 2019.02.28 |
---|---|
5-4. 회귀분석(변수 선택 및 모형 비교 for 다중공선성) (1) | 2019.02.28 |
5-3. 회귀분석(회귀모형의 결과해석) (1) | 2019.02.27 |
5-2. 회귀분석(모델링) (0) | 2019.02.25 |
5-1. Tidyverse + Dplyr + Tidyr + Rmarkdown (0) | 2019.02.25 |