我需要在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)
结果图不包括置信区间并显示相关风险。这是我得到的:
提前多多谢谢你!
答案 0 :(得分:0)
该预测包括负值,因为您没有指定要获得相对风险(如您所述)。尝试以下代码
predicted_rel_risk <- predict(cox_mod, lung_new, interval = "confidence",
type= "risk")
这将为您提供以下情节:
为了同样获得置信区间,可以使用自举。简而言之,这意味着将从您的数据中抽取一个随机样本并计算相对风险。例如,此过程将重复10,000次。这将为您的预测变量的每个值提供10,000个不同的相对风险值。您可以通过计算预测变量每个值的平均相对风险来获得绘图的主线。要获得置信区间,您需要对预测变量的每个值从最小到最大排序相对风险。第250(9,750)个相对风险值为您提供了较低的(较高)ci。同样,它是每个预测变量值的第250个(第9,750个)值。
希望这会有所帮助。