लॉजिस्टिक रिग्रेशन की तुलना में कॉक्स आनुपातिक खतरे वाले मॉडल में पी-वैल्यू अक्सर अधिक क्यों होते हैं?


17

मैं कॉक्स आनुपातिक खतरे मॉडल के बारे में सीख रहा हूं। मेरे पास लॉजिस्टिक रिग्रेशन मॉडल का अनुभव करने के लिए बहुत सारे अनुभव हैं, और इसलिए अंतर्ज्ञान का निर्माण करने के लिए मैं उन मॉडल की तुलना कर रहा हूं coxphजो आर "अस्तित्व" से फिट होने वाले लॉजिस्टिक रिग्रेशन मॉडल के glmसाथ उपयोग करने के साथ फिट हैं family="binomial"

अगर मैं कोड चलाता हूं:

library(survival)
s = Surv(time=lung$time, event=lung$status - 1)
summary(coxph(s ~ age, data=lung))
summary(glm(status-1 ~ age, data=lung, family="binomial"))

मुझे क्रमशः 0.0419 और 0.0254 की आयु के लिए पी-मान मिलते हैं। इसी तरह अगर मैं एक भविष्यवक्ता के रूप में, उम्र के साथ या बिना सेक्स का उपयोग करता हूं।

मुझे यह हैरान करने वाला लगता है क्योंकि मुझे लगता है कि मॉडल को फिट करते समय समय की मात्रा को ध्यान में रखते हुए , बाइनरी परिणाम के रूप में मौत को ठीक करने की तुलना में अधिक सांख्यिकीय शक्ति देगा , जबकि पी मान कम सांख्यिकीय शक्ति वाले एक के साथ संगत प्रतीत होगा। यहाँ क्या हो रहा है?


3
डेटा को देखते हुए, डेटा वास्तव में एक लॉजिस्टिक रिग्रेशन मॉडल के लिए उपयुक्त नहीं है।
गूँग - मोनिका

जवाबों:


20

लॉजिस्टिक रिग्रेशन मॉडल ने माना कि रिस्पांस एक बर्नौली ट्रायल है (या आमतौर पर एक द्विपद, लेकिन सादगी के लिए, हम इसे 0-1 रखेंगे)। उत्तरजीविता मॉडल मानता है कि आम तौर पर प्रतिक्रिया का समय होता है (फिर से, इस बात के सामान्यीकरण हैं कि हम छोड़ देंगे)। इसे लगाने का एक और तरीका यह है कि इकाइयां तब तक मूल्यों की एक श्रृंखला से गुजर रही हैं जब तक कि कोई घटना नहीं होती है। ऐसा नहीं है कि एक सिक्का वास्तव में विवेक से प्रत्येक बिंदु पर फ़्लिप किया गया है। (यह निश्चित रूप से हो सकता है, लेकिन फिर आपको दोहराया उपायों के लिए एक मॉडल की आवश्यकता होगी - शायद एक GLMM।)

आपका लॉजिस्टिक रिग्रेशन मॉडल प्रत्येक मृत्यु को एक सिक्के के फ्लिप के रूप में लेता है जो उस उम्र में हुआ और पूंछ में आया। इसी तरह, यह प्रत्येक सेंसरयुक्त डेटम को एक एकल सिक्का फ्लिप के रूप में मानता है जो निर्दिष्ट उम्र में हुआ और सिर आया। यहाँ समस्या यह है कि डेटा वास्तव में क्या है के साथ असंगत है।

यहां डेटा के कुछ प्लॉट और मॉडल के आउटपुट दिए गए हैं। (ध्यान दें कि मैं लॉजिस्टिक रिग्रेशन मॉडल से भविष्यवाणियों को जीवित होने की भविष्यवाणी करता हूं ताकि लाइन सशर्त घनत्व साजिश से मेल खाती हो।)

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")

कपलान-मीयर प्लॉट

स्पाइनप्लॉट और सशर्त घनत्व प्लॉट w / लॉजिस्टिक रिग्रेशन से संभाव्यता की भविष्यवाणी की


यह एक ऐसी स्थिति पर विचार करने के लिए सहायक हो सकता है जिसमें डेटा या तो एक जीवित विश्लेषण या एक लॉजिस्टिक प्रतिगमन के लिए उपयुक्त था। इस संभावना को निर्धारित करने के लिए एक अध्ययन की कल्पना करें कि एक नए प्रोटोकॉल या देखभाल के मानक के तहत निर्वहन के 30 दिनों के भीतर एक मरीज को अस्पताल में भर्ती कराया जाएगा। हालांकि, सभी रोगियों को पढ़ने के लिए पीछा किया जाता है, और कोई सेंसरिंग नहीं है (यह बहुत यथार्थवादी नहीं है), इसलिए पढ़ने का सही समय उत्तरजीविता विश्लेषण (अर्थात, एक कॉक्स आनुपातिक खतरे मॉडल) के साथ विश्लेषण किया जा सकता है। इस स्थिति का अनुकरण करने के लिए, मैं .5 और 1 के साथ घातीय वितरण का उपयोग करूंगा, और 30 दिनों का प्रतिनिधित्व करने के लिए कटऑफ के रूप में मूल्य 1 का उपयोग करूंगा:

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

यहाँ छवि विवरण दर्ज करें

इस मामले में, हम देखते हैं कि लॉजिस्टिक रिग्रेशन मॉडल ( 0.163) से पी-वैल्यू एक अस्तित्व विश्लेषण ( ) से पी-मूल्य से अधिक था0.005 । इस विचार को और अधिक जानने के लिए, हम एक उत्तरजीविता प्रतिगमन विश्लेषण बनाम एक अस्तित्व विश्लेषण की शक्ति का अनुमान लगाने के लिए सिमुलेशन का विस्तार कर सकते हैं, और संभावना है कि कॉक्स मॉडल से पी-मूल्य लॉजिस्टिक प्रतिगमन से पी-मूल्य से कम होगा । मैं भी थ्रेशोल्ड के रूप में 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% के बारे में) कम, और अस्तित्व विश्लेषण से पी-मूल्यों के 90% रसद प्रतिगमन से इसी पी मूल्यों के अनुरूप नहीं हुई। अंतराल को ध्यान में रखते हुए, कुछ सीमा से कम या अधिक होने के बजाय, अधिक सांख्यिकीय शक्ति प्राप्त होती है जैसा कि आपने अंतर्ज्ञान किया था।


1
आपका स्वागत है, @ जोनासिंक। ऐसी स्थितियों को नियंत्रित करना संभव है जहां अस्तित्व विश्लेषण की तुलना में लॉजिस्टिक प्रतिगमन अधिक शक्तिशाली होगा, लेकिन आप मूल स्थिति के बारे में सही हैं: उत्तरजीविता विश्लेषण प्रत्येक अवलोकन से अधिक जानकारी का उपयोग करता है और इसलिए आमतौर पर अधिक शक्तिशाली होना चाहिए।
गंग -
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.