Я пытаюсь построить плоскость риска на трехмерном графике в языке R, чтобы графически изобразить изменение влияния непрерывного предсказателя на связь между некоторым другим непрерывным предсказателем и результатом. Оценки риска (HR, отношение рисков) должны быть на оси z, а две непрерывные переменные-предикторы - на осях x и y, как на графике ниже:
Чтобы проиллюстрировать то, что я уже пробовал, я воспользуюсь набором данных lung
из пакета survival
.
#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)
В 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))
я стремился вручную рассчитать коэффициент опасности в соответствии с
со средним возрастом и оценкой Карновского (ph.karno), установленными в качестве соответствующих эталонов. Однако, когда я запускаю этот код, я сталкиваюсь со следующими двумя ошибками: Error in dim(robj) <- c(dX, dY) : attempt to set an attribute on NULL
после выполнения функции в пределах outer()
и Error in persp3d.default(x = lung$age, y = lung$ph.karno, z = z) : Increasing 'x' and 'y' values expected
.
Кто-нибудь знает, как получить такой сюжет?