獨斷論

로지스틱 회귀분석 본문

과학과 기술/R 통계

로지스틱 회귀분석

부르칸 2021. 6. 9. 03:33

100명을 무작위로 나이와 심장병이 있는지 조사하였을때 데이터가 아래와 같다고 가정하자.

데이터파일:

chdage.csv
0.00MB

위 데이터파일을 내려받고 아래 R script를 실행

chd_df = read.csv("chdage.csv", header = TRUE)
plot(CHD ~ Age, data = chd_df)

대략 20대에서 9명은 심장병이 없고 1명만 심장병을 가지고 있는 반면, 60대에서는 심장병이 없는 사람은 2명이고 심장병을 가지고 있는 사람은 8명이다. 달리말하면 20대에서 심장병을 갖고 있을 확률은 0.1이고 60대가 심장병을 가질 확률은 0.8이다. 40대 초반이 심장병을 가질 확률은 대략 0.5이다. 이러한 확률은 아래와 같은 함수로 나타낼수가 있다(https://en.wikipedia.org/wiki/Logistic_function).

 

$$ \pi (x) = \frac { e^{\beta_0 + \beta_{1}x}}{1 + e^{\beta_0 + \beta_{1}x}} $$

 

 

$\pi(x)$는 $x$가 주어졌을때 outcome variable인 CHD가 1인 확률을 나타낸다. 즉, $$\pi (x) = P(Y =1 | x)$$ $$1 - \pi (x) = P(Y = 0 | x)$$ sample size가 N일때 심장병을 가진 사람이 z명이라면 이 확률분포를 아래와 같은 binomial distribution이다. $$ \pi(x_i)^z (1 - \pi(x_i))^{N-z} $$ R을 이용하여 logistic regression을 수행하면 아래와 같이 한다.

 

glm.fit = glm(CHD ~ Age, data = chd_df, family = binomial)
summary(glm.fit)
coef(glm.fit)

 

$\beta_0$는 약 -5.309이고 $\beta_1$은 약 0.111이다.

$$ \pi (x) = \frac { e^{-5.309 + 0.111 x}}{1 + e^{-5.309 + 0.111 x}} $$

 

logistic regression한 결과를 원래 데이터이 그려보면 아래와 같다.

x=seq(20, 70, length.out = 1000)
pi_x = exp(-5.309 + 0.111*x) / (1 + exp(-5.309 + 0.11092*x))
plot(CHD ~ Age, data = chd_df)
lines(x, pi_x)

Comments