본문 바로가기
Machine Learning

통계 분석 #6 : 범주형 자료 분류 방법, 로지스틱 회귀분석 with R

by 무적물리 2020. 3. 22.

로지스틱 회귀분석이란?

분석하고자 하는 대상들이 두집단 or 그 이상의 집단으로 나누어진 경우, 개별 관측치들이 어느 집단으로 분류될 수 있는지를 판단하는 분석 방법입니다. 독립변수는 연속형, 범주형 자료로 분석이 가능하며, 종속변수는 오직 범주형 자료만 분석 가능합니다. 보통은 연속형 자료와 범주형 자료를 묶어서 로지스틱 회귀분석이라고 칭하며, 범주형과 범주형의 조합은 카이검정으로 표현합니다.



- 독립변수 : 연속형 자료, 범주형 자료

- 종속변수 : 범주형 자료


- 이항형 로지스틱 회귀 : 종속변수 2개

다항형 로지스틱 회귀 : 종속변수 3개 이상



위 그림과 같이 X축이 독립변수이고 Y축이 확률이라고 가정한다면, 선 아래쪽은 0일 확률, 선 위쪽은 1일 확률로 연속형 자료에 대해 범주형으로 분류 예측이 가능합니다. 로지스틱 회귀모델의 도입 배경은 Linear Regression으로 데이터 분류가 되지 않았어서 도입한 분류 기법입니다. 현재는 더 발전된 형태의 분류 알고리즘이 존재하지만 통계적으로 간단하며 설명하기 좋아서 간단한 분류에는 자주 사용하고 있습니다.



로지스틱 회귀분석 단계

로지스틱 회귀분석이란, 위에서 설명한 바와 같이 독립변수와 종속변수의 관계를 찾음으로써 새로운 독립변수의 집합이 주어졌을 때, 종속변수의 값을 예측하는 방법입니다. 분석을 위한 단계는 4단계로 나누어집니다. 가설 설정을 먼저하고 변수범주화라고 하는 종속변수는 0 or 1 로 만들어준 다음에 모형적합도 확인 및 변수의 유의성 검증을 차례로하면 됩니다.


가설 설정 → 변수 범주화 → 모형 적합도 확인 (χ²) → 로지스틱 가설검정


가설 설정은 독립변수가 종속변수에 영향이 없다고 설정합니다. 모형 적합도 확인은 카이제곱 분석의 결과인 p-value 확인으로 판단할 수 있는데, 0.05 이하이면 모델의 유의미하다고 판단합니다. 변수의 유의성 검증 역시 p-value를 확인함으로써 0.05 이하이면 유의미한 변수로 판단할 수 있습니다.


가설 설정

H0 : 독립변수가 종속변수에 영향을 미치지 않는다.

H1 : 독립변수가 종속변수에 영향을 미친다.


모형적합도 확인

유의확률 p-value 확인하여 귀무가설 or 대립가설 채택


로지스틱 회귀 모형

로지스틱 회귀 모형이란, 독립변수가 종속변수 or 결과값에 상관 없이 항상 범위 [0, 1] 사이에 있도록 하는 모형입니다. 먼저 오즈비를 만들어주고 여기에 로짓변환을 시켜줌으로써 로지스틱 회귀 모형을 생성할 수 있습니다. 결론적으로는 아래와 같은 로지스틱 함수가 도출됩니다.


Logistic Function = exp(1+β·Xi) / (1+exp(1+β·Xi))



위와 같은 식을 도출하기 위해서 먼저 우도를 계산해주고, 우도에 로그를 씌우는 방법인 로짓 변환을 해줍니다. 로짓 변환된 식을 이항하고 더하고 나누고 하다보면 위와 같은 'Logistic Function'을 도출할 수 있습니다. 참고로 오즈가 크다는 것은 데이터가 해당 집단에 속할 확률이 높다는 것을 의미합니다.


우도(Odds) 계산

Odds = p/(1-p) : 일어날 확률 / 일어나지 않을 확률 


로짓 변환 

logit(pi) = ln(pi/(1-pi)) = β·Xi : Odds에 로그를 취한 형태



우도비 검정 (Likelihood Ratio Test)

우도비 검정이란, 최대 우도법을 사용한 검정 방법으로, 회귀 분석의 최소제곱법과 같이 회귀 계수의 유의성인 모형 적합도를 검정하는데 사용되는 방법입니다. 우도는 확률의 반대되는 개념으로 주어진 형상에서 이 형상이 추출될 가능성을 가장 높게 하는 모수추정법 입니다.



예를 들면, 확률은 발생한 사건의 정도라면 우도는 현상에 대해 추출될 가능성이 가장 높은 모수를 뜻합니다. 따라서, 최대우도법이란, 주어진 독립변수들로부터 종속변수를 가장 잘 예측하는, 즉 우도가 가장 높은 회귀식을 추정하는 방법입니다. 


R을 이용한 로지스틱 회귀분석

예제는 복약 종류와 횟수에 따른 반응 여부에 대한 문제입니다. 종속변수로 0은 반응 없음을 나타내며, 1은 반응 있음을 나타냅니다. 독립변수는 dose 복약 약의 종류, response 반응 여부, count 복약 횟수 입니다.


# DataSet 만들기

dose=c(1,1,2,2,3,3)

response=c(0,1,0,1,0,1)

count=c(7,3,5,5,2,8)

toxic=data.frame(dose, response, count)

roxic


로지스틱 회귀분석을 하기 위해서 dose는 독립변수, response는 종속변수로 두고, 가중치로써 count를 설정했습니다. 로지스틱 회귀분석의 함수는 glm 입니다. 분석시 dose의 p-value를 확인함으로써 반응에 대한 유의성을 확인해야합니다.


# 로지스틱 회귀분석 실행

out=glm(response~dose, weight=count, family=binomial, data=toxic)

summary


# 시각화

plot(response~dose, data=toxic, type="n", main="Prediction")

curve(predict(out, data.frame(dose=x), type="resp"), add=TRUE)


마무리

로지스틱 회귀분석은 통계적으로 자주사용되는 분류 모델입니다. 최근 머신러닝 알고리즘의 발전으로 Neural Net 모델이나 Deep Learning 모델을 사용해서 분류를 많이하지만, 간단하면서도 통계적으로 독립변수의 설명력을 확인할 수 있는 로지스틱 모델도 많이 활용되며 유용하게 사용되고 있습니다. R 뿐만아니라 JMP, SAS, 미니탭과 같은 통계 소프트웨어에서 간단하게 사용할 수 있으니 유용하게 사용하셨으면 좋겠습니다.

댓글