로지스틱 회귀란 결과변수가 범주형변수이고 예측변수들이 연속변수 또는 범주형변수인 다중회귀이다.
로지스틱 회귀에서는 Y의 값이 이미 알고 있는 \(X_1\)의 값(또는 X의 값들)일 확률을 예측한다.
\[P(Y) = \frac{1}{1 + e^{-(b_0+b_1X_{1i}+b_2X_{2i}+...+b_nX_{ni})}}\]
로그 가능도는 예측값들과 실체 관측값들에 관한 확률들의 합이다.
로그 가능도 통계량의 값이 크다는 것은 설명되지 않은 관측이 많이 남아 있다는 뜻으로, 그런 경우 해당 통계적 모형은 자료에 적합하지 않다.
이탈도는 카이제곱 분포를 따르기 때문에 로그 가능도를 그냥 사용하는 것보다 사용하기 편하다. -> 유의성을 계산하기가 쉽다.
모형이 자료에 얼마나 잘 들어맞는지를 측정하는데 사용하는 측도
R-statistic : 결과변수와 각 예측변수 사이의 편상관계수로, 값의 범위는 -1부터 1까지
정규분포를 따르며, 주어진 예측변수의 b 계수가 0과 유의하게 다른지의 여부를 나타낸다.
예측변수의 1단위 변화에 따른 승산의 변화 비율
예측변수들을 모두 한꺼번에 회귀모형에 포함하고 각 예측변수의 매개변수들을 추정하는 방법
(전진, 후진, 또는 둘의 조합)을 선택해야 함.
매개변수의 변화가 있을 때 마다 AIC, BIC 중 선택한 기준을 이용해서 개선되었는지 확인
> head(eelData, n = 5)
Cured Intervention Duration
1 Not Cured No Treatment 7
2 Not Cured No Treatment 7
3 Not Cured No Treatment 6
4 Cured No Treatment 8
5 Cured Intervention 7
> eelData$Cured <- as.factor(eelData$Cured)
> eelData$Intervention <- as.factor(eelData$Intervention)
> eelData$Cured<-relevel(eelData$Cured, "Not Cured")
> eelData$Intervention<-relevel(eelData$Intervention, "No Treatment")
> eelModel.1 <- glm(Cured ~ Intervention, data = eelData, family = binomial())
> summary(eelModel.1)
Call:
glm(formula = Cured ~ Intervention, family = binomial(), data = eelData)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.2877 0.2700 -1.065 0.28671
InterventionIntervention 1.2287 0.3998 3.074 0.00212 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 154.08 on 112 degrees of freedom
Residual deviance: 144.16 on 111 degrees of freedom
AIC: 148.16
Number of Fisher Scoring iterations: 4
> modelChi <- eelModel.1$null.deviance - eelModel.1$deviance # 카이제곱 구하기
> chidf <- eelModel.1$df.null - eelModel.1$df.residual # 통계량의 자유도 구하기
> chisq.prob <- 1 - pchisq(modelChi, chidf) # 카이제곱 통계량과 관련된 확률 구하기
> modelChi; chidf; chisq.prob
[1] 9.926201
[1] 1
[1] 0.001629425 # < 0.05 이므로 모형이 결과를 더 잘 예측하지 못한다는 귀무가설을 기각할 수 있다.
> exp(eelModel.1$coefficients) # 승산비 구하기
(Intercept) InterventionIntervention
0.750000 3.416667
# 결론 : 처치를 받은 환자가 치료될 승산이 처치를 받지 않은 환자가 치료될 승산의 3.42배라고 말할 수 있다.
> exp(confint(eelModel.1)) # 승산비들의 신뢰구간
2.5 % 97.5 %
(Intercept) 0.4374531 1.268674
InterventionIntervention 1.5820127 7.625545
# 결과에서 중요한 점은 하계와 상계의 값이 1보다 크다는 점
# 왜냐하면, 예측변수가 증가함에 따라 환자가 치료될 승산이 커짐을 뜻하기 때문이다.
# 만약 하계가 1보다 작다면, 모집단에서의 관계의 방향이 관측된 방향과 다를 여지가 존재하는 것 -> 실험자의 개입이 환자가 치료될 승산을 증가한다고 확신할 수 없다.
> eelModel.2 <- glm(Cured ~ Intervention + Duration, data = eelData, family = binomial())
> summary(eelModel.2)
Call:
glm(formula = Cured ~ Intervention + Duration, family = binomial(),
data = eelData)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.234660 1.220563 -0.192 0.84754
InterventionIntervention 1.233532 0.414565 2.975 0.00293 **
Duration -0.007835 0.175913 -0.045 0.96447
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 154.08 on 112 degrees of freedom
Residual deviance: 144.16 on 110 degrees of freedom
AIC: 150.16
Number of Fisher Scoring iterations: 4
> anova(eelModel.1, eelModel.2)
Analysis of Deviance Table
Model 1: Cured ~ Intervention
Model 2: Cured ~ Intervention + Duration
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 111 144.16
2 110 144.16 1 0.0019835 0.9645
eelData$predicted.probabilities<-fitted(eelModel.1)
eelData$standardized.residuals<-rstandard(eelModel.1)
eelData$studentized.residuals<-rstudent(eelModel.1)
eelData$dfbeta<-dfbeta(eelModel.1)
eelData$dffit<-dffits(eelModel.1)
eelData $leverage<-hatvalues(eelModel.1)
> head(eelData[, c("Cured", "Intervention", "Duration", "predicted.probabilities")], n=5)
Cured Intervention Duration predicted.probabilities
1 Not Cured No Treatment 7 0.4285714
2 Not Cured No Treatment 7 0.4285714
3 Not Cured No Treatment 6 0.4285714
4 Cured No Treatment 8 0.4285714
5 Cured Intervention 7 0.7192982
> head(eelData[, c("leverage", "studentized.residuals", "dfbeta")], n=5)
leverage studentized.residuals dfbeta.(Intercept) dfbeta.InterventionIntervention
1 0.01785714 -1.0643627 -0.03886912 0.03886912
2 0.01785714 -1.0643627 -0.03886912 0.03886912
3 0.01785714 -1.0643627 -0.03886912 0.03886912
4 0.01785714 1.3110447 0.04782751 -0.04782751
5 0.01754386 0.8160435 0.00000000 0.03225994
Discovering Statistics Using R - 010 [ 2024년12월25일 ]
Discovering Statistics Using R - 009 [ 2024년12월12일 ]
Discovering Statistics Using R - 008 [ 2024년12월10일 ]
Discovering Statistics Using R - 007 [ 2024년12월06일 ]
Discovering Statistics Using R - 006 [ 2024년12월05일 ]
Discovering Statistics Using R - 005 [ 2024년12월04일 ]
Discovering Statistics Using R - 004 [ 2024년12월03일 ]
Discovering Statistics Using R - 003 [ 2024년11월30일 ]