簡體   English   中英

在 R 中使用 coxph(生存包)對分層變量進行模型診斷時出錯

[英]Error when model diagnostics on stratified variable with coxph (survival package) in R

我有一個數據集,其中 3 組已收到不同媒體的曝光。 一組暴露於 3 種媒體中的一種。 因此,我的 coxph 模型是分層的:

# My treatment variable is loaded as a factor.
fullModel <- coxph(Surv(time, status) ~ strata(treatment), data = d) 

當我嘗試進行模型診斷時,我收到此錯誤:

test.assump <- cox.zph(fullModel)
Error in cox.zph(fullModel) : 
there are no score residuals for a Null model

但是,如果我刪除了 strata() 參數,我可以在模型上運行診斷:

          chisq df    p
treatment  1.29  2 0.52
GLOBAL     1.29  2 0.52

我做了這個例子來重現我的錯誤:

data <- list(time=c(4,3,1,1,2,2,3,2,4,1,3,4), 
             status=c(1,1,1,0,1,1,0,1,1,0,0,1),  
             treatment=c(0,0,0,0,1,1,1,1,2,2,2,2))

cox.test <- coxph(Surv(time, status) ~ strata(treatment), data = data)

test.coxas <- cox.zph(cox.test)
ggcoxzph(test.coxas)

ggcoxdiagnostics(test.coxas, type = "schoenfeld",
                 linear.predictions = F)

我應該在沒有分層參數的情況下進行診斷嗎? 然后使用strata參數,這樣我就可以在ggsurvplot中繪制不同的曝光? 我在哪里錯了?

預先感謝您幫助我解決此問題。

考慮到我對您的應用程序的了解,並關注您提出的實際問題,我將使用strata()是否是最佳建模選擇括起來。

Schoenfeld 殘差用於診斷 Cox 模型協變量的比例風險違規。 您的模型規范沒有協變量。 因此,您沒有需要診斷和可能糾正的 PH 違規,這就是cox.zph拋出“空模型”錯誤的原因,如“此模型僅估計(Cox 模型的)截距項”。

換句話說:Schoenfeld 殘差是特定於協變量的量,因此如果 Cox 模型中沒有協變量,則無需計算 Schoenfeld。 cox.zph的計算涉及 Schoenfeld 殘差,因此存在誤差。

相反,您有一個strata()術語。 分層允許不同的組有不同的基線危險率(= Cox 版本的截距項,啟發式地講)。 您可能會分層的原因有很多,但其中一個是糾正可能的 PH 違規 - 正是這個問題導致您首先運行cox.zph 如果您繼續對treatment進行分層,則沒有可供您運行的與 PH 相關的模型診斷。

(順便說一句:對於 MWE 中的ggcoxdiagnostics ,您需要傳入coxph對象,而不是cox.zph對象。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM