You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言stpm2包绘制风险比图:tvc参数设置疑问

关于stpm2中tvc参数的设置与时变风险比绘图

首先明确:stpm2的tvc参数用于指定哪些协变量的系数随时间变化,格式为列表,键是协变量名称,值为该协变量时变系数的样条自由度(或与全局df一致的设置)。

针对你的0/1分类用药变量typeofmed,要绘制随时间变化的风险比(HR),必须让typeofmed的系数随时间变化,因此tvc参数应按如下设置:

tvc = list(typeofmed = 4)

这里的4和你设置的全局df=4保持一致,即用4个自由度的样条拟合typeofmed的时变系数。如果想直接沿用全局df,也可以简化写为:

tvc = list(typeofmed = TRUE)

完整修正后的代码

# 拟合时变系数模型
fpmh <- stpm2(Surv(time, event) ~ typeofmed,
        data = cancer, tvc = list(typeofmed = 4),
        df = 4)
summary(fpmh)

# 准备绘图数据(确保typeofmed为因子类型)
med <- levels(factor(cancer$typeofmed))
newdata1 <- data.frame(typeofmed = med[1])

# 绘制组1的风险函数
plot(fpmh, newdata = newdata1, xlab = "Time since diagnosis (years)", 
     type = "haz")

# 绘制随时间变化的风险比(typeofmed=1 vs typeofmed=0)
plot(fpmh, newdata = newdata1, xlab = "Time since diagnosis (years)",
     type = "hr", var = "typeofmed", ci = FALSE, ylim = c(0,6))

关键说明

  • 只有在tvc中包含typeofmed时,模型才会拟合随时间变化的系数,进而得到时变风险比;如果不设置tvc,模型会输出固定系数,HR为常数,绘图会是一条水平直线。
  • 建议提前将typeofmed转换为因子类型,避免levels()无法正确识别分组。

内容的提问来源于stack exchange,提问作者user23634522

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:07:35