간단한 질적 이분 변수 로지스틱 회귀

R-Blogger · 블로그·해설 · 2009-08-17

R-Blogger블로그·해설한국어2009-08-17

간단한 질적 이분 변수 로지스틱 회귀

범주형 변수와 이항 변수로 로지스틱 회귀 모델 구현하기 이 게시물에서는 이항 종속 변수 Y와 이항 독립 변수 X를 가지는 로지스틱 회귀 모델을 구현하는 방법을 간략히 살펴보겠습니다. 특히, 범주형 변수(질적 변수)가 이중 분할표(contingency table)로 조직되어 있을 때 적용할 수 있는 절차를 소개합니다. 모델 정의 일반적으로 Y=1이 될 확률은 다음과 같이 표현됩니다. P(Y=1|X=x)=π(x)=exp(β₀+β₁x₁+⋯+βₖxₖ)/(1+exp(β₀+β₁x₁+⋯+βₖxₖ)) 우리의 목표는 베타 파라미터(회귀계수)를 추정하는 것입니다. 예시: 위식도 역류 질환과 스트레스 요인 다음 표는 위식도 역류 질환에 대한 연구 결과를 보여 줍니다. 스트레스 요인의 존재 여부가 질환 발생에 미치는 영향을 평가하고자 합니다. reflux colnames(reflux) rownames(reflux) table table reflNO reflYES stressNO 251 4 stressYES 131 33 R에서 데이터 준비하기 이중 분할표를 R에 입력하고, 로지스틱 회귀에 맞는 데이터 프레임을 생성합니다. reflux <- data.frame( Var1 = factor(c("stressNO","stressYES","stressNO","stressYES")), Var2 = factor(c("reflNO","reflNO","reflYES","reflYES")), Freq = c(251,131,4,33) ) dft <- reflux 모델 피팅 및 요약 R에서 로지스틱 회귀 모델을 적합하고 결과를 요약합니다. fit <- glm(Var2 ~ Var1, family = binomial(logit), data = dft, weights = Freq) summary(fit) 요약 결과 예시: Call: glm(formula = Var2 ~ Var1, family = binomial(logit), data = dft, weights = Freq) Deviance Residuals: 1 2 3 4 -2.817 -7.672 5.765 10.287 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -4.1392 0.5040 -8.213 4.47e-16 *** Var1stressYES 2.7605 0.5403 5.109 3.23e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 250.23 on 3 degrees of freedom Residual deviance: 205.86 on 2 degrees of freedom AIC: 209.86 Number of Fisher Scoring iterations: 6 코드 해석 family = binomial(logit) : 로지스틱 회귀 모델을 지정합니다. Var2 ~ Var1 : 종속 변수 Var2(위식도 역류 유무)를 독립 변수 Var1(스트레스 유무)의 함수로 모델링합니다. weights = Freq : 각 셀의 빈도수(Freq)를 가중치로 사용합니다. data = dft : 데이터가 포함된 프레임을 지정합니다. 회귀계수와 예측 확률 추정된 베타값: β₀ = fit$coefficient[1] # -4.1392 β₁ = fit$coefficient[2] # 2.7605 따라서, 회귀식은 다음과 같습니다. π(x)=exp(-4.139+2.760x)/(1+exp(-4.139+2.760x)) 스트레스가 없을 때( x=0 )의 확률은: π(0)=exp(β₀)/(1+exp(β₀)) ≈ 0.016 (1.6%) 스트레스가 있을 때( x=1 )의 확률은: π(1)=exp(β₀+β₁)/(1+exp(β₀+β₁)) ≈ 0.20 (20%) 오즈와 오즈비(OR) 오즈: odds(x=1) = π(1)/(1-π(1)) = exp(β₀+β₁) odds(x=0) = π(0)/(1-π(0)) = exp(β₀) 오즈비: OR = odds(x=1)/odds(x=0) = exp(β₁) ≈ 15.807 즉, 스트레스를 경험한 사람은 스트레스를 경험하지 않은 사람보다 위식도 역류 질환에 걸릴 확률이 15.8배 높습니다. 오즈비의 대체 계산법 분할표를 사용해 직접 계산해도 같은 결과를 얻습니다. OR = (a*d)/(b*c) = (251*33)/(4*131) ≈ 15.807 추가 팁 베타의 표준오차는 summary(fit)$coefficient[1,2] (β₀), summary(fit)$coefficient[2,2] (β₁) 로 확인할 수 있습니다. AIC(아카이케 정보 기준)는 모델 비교 시 사용하며, 값이 낮을수록 더 좋은 모델입니다.
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
원문에서 전체 글 읽기
작성자
R-Blogger
출처
R-Blogger
플랫폼
R-Blogger
분류
블로그·해설
언어
한국어
발행일
2009-08-17