로지스틱 회귀 모형은 반응이 베르누이 시행 (또는 일반적으로 이항 법이지만 단순성을 위해 0-1으로 유지)이라고 가정합니다. 생존 모델은 응답이 일반적으로 이벤트 시간이라고 가정합니다 (다시 말하지만 생략 할 일반화가 있습니다). 또 다른 방법 은 이벤트가 발생할 때까지 단위가 일련의 값을 통과 한다는 것입니다 . 실제로 각 지점에서 동전이 이산 적으로 뒤집 히지는 않습니다. ( 물론 일어날 수도 있지만 반복 측정을위한 모델, 아마도 GLMM이 필요할 것입니다.)
로지스틱 회귀 모델은 각 시대에 발생한 동전 뒤집기로 사망 할 때마다 꼬리가 나타납니다. 마찬가지로, 검열 된 각 데이텀은 지정된 나이에 발생한 단일 코인 플립으로 간주하고 머리를 consider습니다. 여기서 문제는 데이터가 실제로 무엇과 일치하지 않는다는 것입니다.
다음은 데이터의 플롯과 모델의 출력입니다. (물론 나는 로지스틱 회귀 모델에서 선이 조건부 밀도 플롯과 일치하도록 살아있는 예측으로 전환합니다.)
library(survival)
data(lung)
s = with(lung, Surv(time=time, event=status-1))
summary(sm <- coxph(s~age, data=lung))
# Call:
# coxph(formula = s ~ age, data = lung)
#
# n= 228, number of events= 165
#
# coef exp(coef) se(coef) z Pr(>|z|)
# age 0.018720 1.018897 0.009199 2.035 0.0419 *
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# exp(coef) exp(-coef) lower .95 upper .95
# age 1.019 0.9815 1.001 1.037
#
# Concordance= 0.55 (se = 0.026 )
# Rsquare= 0.018 (max possible= 0.999 )
# Likelihood ratio test= 4.24 on 1 df, p=0.03946
# Wald test = 4.14 on 1 df, p=0.04185
# Score (logrank) test = 4.15 on 1 df, p=0.04154
lung$died = factor(ifelse(lung$status==2, "died", "alive"), levels=c("died","alive"))
summary(lrm <- glm(status-1~age, data=lung, family="binomial"))
# Call:
# glm(formula = status - 1 ~ age, family = "binomial", data = lung)
#
# Deviance Residuals:
# Min 1Q Median 3Q Max
# -1.8543 -1.3109 0.7169 0.8272 1.1097
#
# Coefficients:
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -1.30949 1.01743 -1.287 0.1981
# age 0.03677 0.01645 2.235 0.0254 *
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# (Dispersion parameter for binomial family taken to be 1)
#
# Null deviance: 268.78 on 227 degrees of freedom
# Residual deviance: 263.71 on 226 degrees of freedom
# AIC: 267.71
#
# Number of Fisher Scoring iterations: 4
windows()
plot(survfit(s~1))
windows()
par(mfrow=c(2,1))
with(lung, spineplot(age, as.factor(status)))
with(lung, cdplot(age, as.factor(status)))
lines(40:80, 1-predict(lrm, newdata=data.frame(age=40:80), type="response"),
col="red")
데이터가 생존 분석 또는 로지스틱 회귀 분석에 적합한 상황을 고려하는 것이 도움이 될 수 있습니다. 새로운 프로토콜 또는 표준 치료법에 따라 퇴원 후 30 일 이내에 환자가 병원에 재 입원 될 확률을 결정하기위한 연구를 상상해보십시오. 그러나 모든 환자는 재 입원을 받았으며 검열이 없었습니다 (이것은별로 현실적이지 않습니다). 정확한 재 입원 시간은 생존 분석 (즉, 콕스 비례 위험 모델)으로 분석 할 수 있습니다. 이 상황을 시뮬레이션하기 위해 속도 .5와 1의 지수 분포를 사용하고 1을 30 일을 나타내는 컷오프로 사용합니다.
set.seed(0775) # this makes the example exactly reproducible
t1 = rexp(50, rate=.5)
t2 = rexp(50, rate=1)
d = data.frame(time=c(t1,t2),
group=rep(c("g1","g2"), each=50),
event=ifelse(c(t1,t2)<1, "yes", "no"))
windows()
plot(with(d, survfit(Surv(time)~group)), col=1:2, mark.time=TRUE)
legend("topright", legend=c("Group 1", "Group 2"), lty=1, col=1:2)
abline(v=1, col="gray")
with(d, table(event, group))
# group
# event g1 g2
# no 29 22
# yes 21 28
summary(glm(event~group, d, family=binomial))$coefficients
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -0.3227734 0.2865341 -1.126475 0.2599647
# groupg2 0.5639354 0.4040676 1.395646 0.1628210
summary(coxph(Surv(time)~group, d))$coefficients
# coef exp(coef) se(coef) z Pr(>|z|)
# groupg2 0.5841386 1.793445 0.2093571 2.790154 0.005268299
이 경우에, 우리는 로지스틱 회귀 모형에서의 p 값이 (볼 0.163
) 이었다 생존 분석의 P 값보다 높은 ( 0.005
). 이 아이디어를 더 탐색하기 위해 시뮬레이션을 확장하여 로지스틱 회귀 분석의 검정력 대 생존 분석을 추정하고 Cox 모델의 p- 값이 로지스틱 회귀 분석의 p- 값보다 낮을 확률을 추정 할 수 있습니다 . 1.4를 임계 값으로 사용하여 차선의 컷오프를 사용하여 로지스틱 회귀에 불리한 점이 없도록합니다.
xs = seq(.1,5,.1)
xs[which.max(pexp(xs,1)-pexp(xs,.5))] # 1.4
set.seed(7458)
plr = vector(length=10000)
psv = vector(length=10000)
for(i in 1:10000){
t1 = rexp(50, rate=.5)
t2 = rexp(50, rate=1)
d = data.frame(time=c(t1,t2), group=rep(c("g1", "g2"), each=50),
event=ifelse(c(t1,t2)<1.4, "yes", "no"))
plr[i] = summary(glm(event~group, d, family=binomial))$coefficients[2,4]
psv[i] = summary(coxph(Surv(time)~group, d))$coefficients[1,5]
}
## estimated power:
mean(plr<.05) # [1] 0.753
mean(psv<.05) # [1] 0.9253
## probability that p-value from survival analysis < logistic regression:
mean(psv<plr) # [1] 0.8977
로지스틱 회귀의 힘이 너무 인 생존 분석 (93 %에 대해) 이상 (75 %에 대한) 하부 및 생존 분석에서의 p의 값의 90 %가 회귀로부터 대응하는 P-값보다 낮았다. 지연 시간을 일부 임계 값보다 작거나 큰 값 대신 고려하면 직감 한대로 더 많은 통계적 힘을 얻을 수 있습니다.