如何在R中绘制三维风险平面?

如何在R中绘制三维风险平面?,r,matrix,plot,3d,survival-analysis,R,Matrix,Plot,3d,Survival Analysis,我试图在R的三维图中绘制一个风险平面,以图形方式描述连续预测因子对其他连续预测因子和结果之间关联的影响修改。风险估计(HR、危险比)应位于z轴上,两个连续预测变量应位于x轴和y轴上,如下图所示: 为了说明我已经尝试了什么,我将使用survival包中的lung数据集 #install.packages("survival") #install.packages("rgl") library(survival); library(rgl) #Remove missing values wit

我试图在R的三维图中绘制一个风险平面,以图形方式描述连续预测因子对其他连续预测因子和结果之间关联的影响修改。风险估计(HR、危险比)应位于z轴上,两个连续预测变量应位于x轴和y轴上,如下图所示:

为了说明我已经尝试了什么,我将使用
survival
包中的
lung
数据集

#install.packages("survival")
#install.packages("rgl")

library(survival); library(rgl)

#Remove missing values with listwise deletion
I1 <- is.na(lung$age) | is.na(lung$ph.karno)
lung <- lung[!I1,]

m1 <- coxph(Surv(time, status==2) ~ age*ph.karno, data = lung)
m1

z <- outer(lung$age, lung$ph.karno, FUN=function(x=lung$age, y=lung$ph.karno, model=m1){
  ref.x <- median(x)
  ref.y <- median(y)
  for(i in 1:length(x)){
    exp(summary(model)$coef[1,1]*(x[i]-ref.x)+summary(model)$coef[2,1]*(y[i]-ref.y)+
               summary(model)$coef[3,1]*(x[i]-ref.x)*(y[i]-ref.y))
  }
})

persp3d(x=lung$age, y=lung$ph.karno, z=z)
#安装程序包(“生存”)
#安装程序包(“rgl”)
图书馆(生存);图书馆(rgl)
#通过列表删除删除缺少的值

I1也许你可以用这些方法。首先,我们根据您自己的代码找到模型:

library("survival"); library("rgl")

#Remove missing values with listwise deletion
I1 <- is.na(lung$age) | is.na(lung$ph.karno)
lung <- lung[!I1,]

m1 <- coxph(Surv(time, status==2) ~ age*ph.karno, data = lung)
m1

谢谢你的回答!我仍然想知道,当为其他变量调整交互作用时,构造会是什么样子,例如:
m2只要你只考虑两个预测因子之间的交互作用,那么其他变量基本上是不相关的(用于说明交互作用)。他们只会放大或缩小总体风险。对于两个以上的预测值,您必须将数据拆分或绘制为4D:o)
age.range <- seq(min(lung$age), max(lung$age), 5)
ph.range <- seq(min(lung$ph.karno), max(lung$ph.karno), 5)

z <- outer(age.range, ph.range, FUN=function(x, y) {
  predict(m1, newdata = data.frame(age=x, ph.karno=y), type="risk")
  })

rgl::persp3d(age.range, ph.range, z, col="lightblue")