用R表示cox回归预测值的二次关系

时间:2018-06-18 09:01:35

标签: r plot quadratic cox-regression

我需要在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%的置信度。此外,predict_rel_risk中有负值,在我的观点中不应该是这种情况,因为最小相对风险应为零。 因此,我无法得到理想的情节。所以我所能做的就是:

lung_new$predicted_rel_risk <- predicted_rel_risk

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

结果图不包括置信区间并显示相关风险。这是我得到的:

The resulting plot

提前多多谢谢你!

1 个答案:

答案 0 :(得分:0)

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

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个)值。

希望这会有所帮助。