【问题标题】:Plot a quadratic relation for a predictor of a cox regression with R用 R 绘制 cox 回归的预测变量的二次关系
【发布时间】:2018-06-18 09:01:35
【问题描述】:

我需要绘制 cox 回归中二次效应的相对风险。我的模型如下所示:

cox_mod <- coxph(Surv(time, status) ~
               ph.karno + pat.karno + meal.cal + meal.cal_q,
             data = lung)

其中meal.cal_q定义为:

lung$meal.cal_q <- lung$meal.cal^2

该图应考虑meal.cal 和meal.cal_q 的系数,并在y 轴上显示相对风险,在x 轴上显示meal.cal 值。相对风险应定义为给定膳食卡路里值与所有预测变量均值相比的风险。此外,该图应包括 95% 置信区间。情节应该是这样的: Expected plot

如果可能,绘图应该是一个 ggplot 对象,以便我可以自定义它。

我已经在网上阅读了几个小时,但不知道如何制作所描述的情节,希望有人能帮助我。例如,我使用 predict() 函数进行了尝试:

meal.cal_new <- seq(min(lung$meal.cal, na.rm= TRUE), max(lung$meal.cal, na.rm= TRUE), by= 1)

meal.cal_q_new <- meal.cal_new^2

n <- length(meal.cal_new)

lung_new <- data.frame(ph.karno= rep(mean(lung$ph.karno, na.rm= TRUE), n), pat.karno= rep(mean(lung$pat.karno, na.rm= TRUE), n), meal.cal= meal.cal_new, meal.cal_q = meal.cal_q_new)

predicted_rel_risk <- predict(cox_mod, lung_new,  interval = "confidence")

print(predicted_rel_risk)

首先,预测值不包括 95% 置信度。此外,predicted_rel_risk 中有负值,在我看来不应该是这样,因为最小相对风险应该为零。 因此我无法得到想要的情节。所以我能做的就是:

lung_new$predicted_rel_risk <- predicted_rel_risk

ggplot(lung_new, aes(meal.cal, predicted_rel_risk)) +
geom_smooth(se= TRUE)

生成的图不包括置信区间并显示负的相对风险。这是我得到的:

非常感谢您!

【问题讨论】:

  • 投反对票或计划发表评论的人也请发表评论解释原因。

标签: r plot quadratic cox-regression


【解决方案1】:

预测包括负值,因为您没有指定要获得相对风险(如您所述)。试试下面的代码

predicted_rel_risk <- predict(cox_mod, lung_new,  interval = "confidence",
type= "risk")

这为您提供了以下情节:

Plot without negative values

为了也获得置信区间,您可以使用自举。简而言之,这意味着将从您的数据中抽取随机样本并计算相对风险。例如,此过程将重复 10,000 次。这为您的预测变量的每个值提供了 10,000 个不同的相对风险值。通过计算预测变量的每个值的平均相对风险,您可以获得绘图的主线。要获得置信区间,您需要将预测变量的每个值的相对风险从小到大排序。第 250 个(第 9,750 个)相对风险值为您提供较低(较高)的 ci。同样,它是每个预测变量值的第 250 (9,750) 个值。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2018-09-04
    • 2021-01-21
    • 2012-10-17
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多