运行单变量生存分析时出错
Posted
技术标签:
【中文标题】运行单变量生存分析时出错【英文标题】:Error when I run Univariate Survival Analysis 【发布时间】:2021-11-17 11:25:51 【问题描述】:我正在尝试进行单变量分析。这是我的数据:
library(survivalAnalysis)
AgeMRE <- c(60, 67, 71, 66, 71, 73, 50, 67, 67, 61)
OutcomeMRE <- c(0, 1, 0, 1, 1, 1, 1, 1, 0, 1)
EventMRE <- c(NA, 3, NA, 2, 3, 12, 2, 6, NA, 11)
datasetMRE <- data.frame(cbind(AgeMRE, EventMRE, OutcomeMRE))
在哪里: 年龄是患者的年龄 结果是患者是否经历了主要结果(1 - 是,0 - 否) 事件是经历结果的时间(以月为单位的数字,如果没有经历结果,则事件 == NA) 然后我运行以下代码:
dataset = data.frame(datasetMRE)
dataset %>%
analyse_survival(vars(EventMRE, AgeMRE), by = OutcomeMRE) ->
resultuni
我得到这个错误:
Error in survfit.formula(Surv(EventMRE, AgeMRE) ~ 1, data = data) :
data set has no non-missing observations
In addition: Warning messages:
1: In analyse_survival(., vars(EventMRE, AgeMRE), by = OutcomeMRE) :
Survival analysis with factor OutcomeMRE: Only one factor value (1), no diffs possible.
2: In Surv(EventMRE, AgeMRE) : Invalid status value, converted to NA
此外: 我想检查年龄作为一个连续变量,但也作为一个组,如:
dataset = data.frame(datasetMRE)
dataset %>%
analyse_survival(vars(EventMRE, ifelse(Age >=70, 1,0)), by = OutcomeMRE) ->
resultuni
我该怎么做?
【问题讨论】:
你错过了生存分析的时间部分! 时间是EventMRE,以月为单位。 据我所知,时间不可能是NA
,因为您正在执行事件分析时间,因此应该有一个从 1 到 12 或其他时间的时间组件,并且以最简单的形式显示一个事件列事件发生与否 (0/1)。
@Arduan,正如 Tarjae 所说,所有数据都需要一个时间组件。并非所有受试者都会在研究期间经历该事件,这会导致右删失观察。例如,对于生存数据,在研究期结束时仍然活着的受试者应该至少有最后一次采样/观察日期,状态为“活着”。你可以在那里找到更多信息:[sthda.com/english/wiki/survival-analysis]
感谢您的回复。如果没有观察到结果,我将 EventMRE 编码为“13”。仍然收到错误:``` survfit.formula 中的错误(Surv(EventMRE, AgeMRE) ~ OutcomeMRE, data = data) :数据集没有非缺失观察结果另外:警告消息:在 Surv(EventMRE, AgeMRE) 中:无效的状态值,转换为 NA ```
【参考方案1】:
感谢您的帮助。我使用了不同的包并设法这样做:
library("survival")
#Encoding Outcome 0 as EventMRE2 = 13
datasetMRE$EventMRE2 = ifelse(is.na(datasetMRE$EventMRE), 13, datasetMRE$EventMRE)
res.cox <- coxph(Surv(EventMRE, Outcome) ~ AgeMRE, data = datasetMRE)
summary(res.cox)
【讨论】:
我猜survivalAnalysis
包只是一个 tidyverse 包装器包:生存函数。似乎是一个相当脆弱的包装。错误代码报告 survfit.formula
(它是 survival 包中的一个函数)没有得到正确类型的参数,以上是关于运行单变量生存分析时出错的主要内容,如果未能解决你的问题,请参考以下文章