我已经创建了本示例中使用的术语图的略微增强版本,您可以在此处找到它。我以前在SO上发布过文章,但我想得更多,我认为这可能与Cox比例危害模型的解释有关,而不是与实际编码有关。
问题
当我查看危害比图时,我希望有一个参考点,其置信区间自然为0,这是当我从中使用cph()rms package
而不是从中使用coxph()时的情况survival package
。coxph()的行为是否正确,如果是,参考点是什么?另外,coxph()中的哑变量具有一个间隔,并且其值不是?
例
这是我的测试代码:
# Load libs
library(survival)
library(rms)
# Regular survival
survobj <- with(lung, Surv(time,status))
# Prepare the variables
lung$sex <- factor(lung$sex, levels=1:2, labels=c("Male", "Female"))
labels(lung$sex) <- "Sex"
labels(lung$age) <- "Age"
# The rms survival
ddist <- datadist(lung)
options(datadist="ddist")
rms_surv_fit <- cph(survobj~rcs(age, 4)+sex, data=lung, x=T, y=T)
cph图
这段代码:
termplot2(rms_surv_fit, se=T, rug.type="density", rug=T, density.proportion=.05,
se.type="polygon", yscale="exponential", log="y",
xlab=c("Age", "Sex"),
ylab=rep("Hazard Ratio", times=2),
main=rep("cph() plot", times=2),
col.se=rgb(.2,.2,1,.4), col.term="black")
给出这个情节:
考克斯图
这段代码:
termplot2(surv_fit, se=T, rug.type="density", rug=T, density.proportion=.05,
se.type="polygon", yscale="exponential", log="y",
xlab=c("Age", "Sex"),
ylab=rep("Hazard Ratio", times=2),
main=rep("coxph() plot", times=2),
col.se=rgb(.2,.2,1,.4), col.term="black")
给出这个情节:
更新资料
正如@Frank Harrell所建议的那样,在对他最近的评论中的建议进行调整之后,我得到了:
p <- Predict(rms_surv_fit, age=seq(50, 70, times=20),
sex=c("Male", "Female"), fun=exp)
plot.Predict(p, ~ age | sex,
col="black",
col.fill=gray(seq(.8, .75, length=5)))
这给出了一个非常好的情节:
在评论后,我再次查看了contrast.rms,并尝试了这段给出图表的代码...尽管可能还有很多事情可以做:-)
w <- contrast.rms(rms_surv_fit,
list(sex=c("Male", "Female"),
age=seq(50, 70, times=20)))
xYplot(Cbind(Contrast, Lower, Upper) ~ age | sex,
data=w, method="bands")
给了这个情节:
更新2
Thernau教授很友善地对缺乏信心的情节发表评论:
像gam中的平滑样条一样,对coxph中的平滑样条进行了归一化,使得sum(prediction)= 0。因此,我没有方差很小的固定单点。
尽管我还不熟悉GAM,但这似乎可以回答我的问题:这似乎是一个解释问题。
3
几条评论。首先,请阅读biostat.mc.vanderbilt.edu/Rrms了解rms和Design软件包之间的差异。其次,使用plot()代替plot.Predict以节省工作。第三,您可以轻松地生成两性图,例如,使用Predict(fit,age,sex,fun = exp)#exp = anti-log; 然后绘图(结果)或绘图(结果,〜年龄|性别)。您在Predict中不使用“ x = NA”。rms使用点阵图形,因此通常的标准图形参数和mfrow不适用。请参阅我的rms课程讲义中的示例,网址为biostat.mc.vanderbilt.edu/rms。对于contrast.rms,请更多地研究文档。
—
Frank Harrell
非常感谢您的投入。我已经用更好的示例更新了代码,并添加了教授。Thernau的回应。附注:我真的很兴奋,您计划这本书的新版本,扩展切入点偏差部分将对参考非常有用
—
Max Gordon
您可以使用
—
Frank Harrell'2
plot
和contrast
代替plot.Predict
和contrast.rms
。我将使用by
或length
inside seq
而不是,times
并将给出contrast
两个列表,以便您确切指定要对比的内容。您也可以将明暗度xYplot
用于置信带。
谢谢。我喜欢使用plot.Predict,因为这样我就可以在RStudio中获得正确的帮助-就我而言,这比编写完整函数名(通过使用自动完成功能(制表符))花费的时间更为重要。花费那么多时间)。
—
Max Gordon