reda包mcf函数绘制MCF图时control截断参数失效求助
解决MCF图X轴截断至1000的问题
问题原因
你当前使用的是reReg包中的mcf函数,该函数的control参数结构和原reda包的mcf函数存在差异,原control=list(to=1000)的设置方式不再适用。
两种可行解决方法
方法1:在绘图时直接指定X轴范围
reReg包的plot.mcf函数支持通过xlim参数直接限定X轴范围,无需依赖control参数。修改代码如下:
library(reReg) library(ggplot2) library(frailtypack) data(readmission, package = "frailtypack") readmission <- subset(readmission, !(id %in% c(60, 109, 280))) # 拟合MCF模型(无需在control中设置to) mcf0 <- mcf(Recur(t.start %2% t.stop, id, event, death) ~ sex, data = readmission) # 绘图时用xlim指定X轴截断到1000 p <- plot(mcf0, conf.int = TRUE) + theme_bw(base_size = 20) + xlim(c(0, 1000)) print(p)
方法2:提前截断MCF对象的时间数据
如果需要先截断MCF计算的时间范围,可以手动筛选mcf0对象中的数据后再绘图:
# 拟合模型后,筛选时间<=1000的行 mcf0_truncated <- mcf0 mcf0_truncated$time <- mcf0_truncated$time[mcf0_truncated$time <= 1000] mcf0_truncated$mcf <- mcf0_truncated$mcf[mcf0_truncated$time <= 1000] # 同步处理置信区间数据 if (!is.null(mcf0_truncated$lower)) { mcf0_truncated$lower <- mcf0_truncated$lower[mcf0_truncated$time <= 1000] mcf0_truncated$upper <- mcf0_truncated$upper[mcf0_truncated$time <= 1000] } # 绘制截断后的MCF图 p <- plot(mcf0_truncated, conf.int = TRUE) + theme_bw(base_size = 20) print(p)
补充说明
reReg包的mcf函数文档中提到的control参数,主要用于控制模型拟合的迭代过程(如收敛阈值、最大迭代次数),而非绘图的轴范围设置。原reda包的参数逻辑在reReg中未被继承,因此需要改用上述适配方法。
内容的提问来源于stack exchange,提问作者Timo Kvamme
相关产品推荐
相关产品推荐

