পি-মানগুলি লজিস্টিক রিগ্রেশনের তুলনায় প্রায়শই কক্স আনুপাতিক ঝুঁকিপূর্ণ মডেলে বেশি হয় কেন?


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 করে রাখব)। একটি বেঁচে থাকার মডেল ধরে নিয়েছে প্রতিক্রিয়াটি সাধারণত ইভেন্টের সময় হয় (আবার, এর কিছু সাধারণীকরণ রয়েছে যা আমরা এড়িয়ে যাব)। এটি রাখার আরেকটি উপায় হ'ল ইউনিটগুলি কোনও ইভেন্ট না হওয়া পর্যন্ত মানগুলির একটি সিরিজ পেরিয়ে চলেছে । এটি এমন নয় যে প্রতিটি মুদ্রায় একটি মুদ্রা প্রকৃতপক্ষে বিচ্ছিন্নভাবে উল্টানো থাকে। ( অবশ্যই এটি হতে পারে, তবে তারপরে বারবার ব্যবস্থা নেওয়ার জন্য আপনার একটি মডেল প্রয়োজন — সম্ভবত একটি জিএলএমএম।)

আপনার লজিস্টিক রিগ্রেশন মডেল প্রতিটি মৃত্যুকে সেই মুদ্রা ফ্লিপ হিসাবে গ্রহণ করে যা সেই বয়সে ঘটেছিল এবং লেজ আসে। তেমনি, এটি প্রতিটি সেন্সর করা ডেটামকে একক কয়েন ফ্লিপ হিসাবে বিবেচনা করে যা নির্দিষ্ট বয়সে ঘটেছিল এবং মাথা উপরে উঠেছিল। এখানে সমস্যাটি হ'ল এটি যা ডেটা আসলে কী তার সাথে বেমানান।

এখানে ডেটাগুলির কিছু প্লট এবং মডেলগুলির আউটপুট। (নোট করুন যে আমি লজিস্টিক রিগ্রেশন মডেল থেকে জীবিত হওয়ার পূর্বাভাস দেওয়ার জন্য ভবিষ্যদ্বাণীগুলি ফ্লিপ করেছি যাতে লাইনটি শর্তযুক্ত ঘনত্বের প্লটের সাথে মেলে।)

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 হারের সাথে ঘনিষ্ঠ বিতরণগুলি ব্যবহার করব এবং 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% সম্পর্কে) লোয়ার, এবং বেঁচে থাকা বিশ্লেষণের P-মান 90% লজিস্টিক রিগ্রেশনের থেকে সংশ্লিষ্ট P-মান কম ছিল। কিছুটা প্রান্তিকের চেয়ে কম বা তার পরিবর্তে পিছিয়ে পড়া সময়কে বিবেচনা করার কারণে আপনি পরিসংখ্যানের কারণে আরও পরিসংখ্যানিক শক্তি অর্জন করে।


1
আপনাকে স্বাগতম, @ জোনাহসিনিক। এমন পরিস্থিতিতে পরিস্থিতি তৈরি করা সম্ভব যেখানে লজিস্টিক রিগ্রেশন বেঁচে থাকার বিশ্লেষণের চেয়ে আরও শক্তিশালী হবে তবে আপনি মূল পরিস্থিতি সম্পর্কে সঠিক: বেঁচে থাকার বিশ্লেষণ প্রতিটি পর্যবেক্ষণের আরও তথ্য ব্যবহার করে এবং তাই সাধারণত আরও শক্তিশালী হওয়া উচিত।
গুং - মনিকা পুনরায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.