偏差和得分残差图
Deviance and Score Residual plots
我正在尝试在比例风险模型的数据 (kidtran) 上绘制偏差和得分残差图。
1- 我尝试使用以下代码绘制 coxph 模型的偏差残差图与协变量(种族、性别和种族相互作用的性别):
library(KMsurv)
data(kidtran)
kidtran
####Deviance Residuals####
fit<-coxph(Surv(time, delta)~race+gender+race*gender, method="breslow", data=kidtran)
resid.dev<-resid(fit,type="deviance")
par(mfrow = C(1,1))
plot(resid.dev,xlab = "Risk Score", ylab = "Deviance Residual", lwd=1 )
title("Deviance Residual")
resid.dev
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
它应该是这样的:
这是我得到的结果。
除运行后的消息错误
par(mfrow = C(1,1))
C(1, 1) 中的错误:对象不可解释为因子
2-我确实为每个协变量绘制了分数残差图:
##score for interaction
fit<-coxph(Surv(time, delta)~race+gender+race*gender, method="breslow", data=kidtran)
resid.score<-resid(fit,type="score")
par(mfrow = C(1,2))
plot(resid.score)
resid.score
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
##score for race
fit1<-coxph(Surv(time, delta)~race, method="breslow", data=kidtran)
resid.score<-resid(fit1,type="score")
par(mfrow = C(1,2))
plot(resid.score)
resid.score
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
##score for gender
fit2<-coxph(Surv(time, delta)~gender, method="breslow", data=kidtran)
resid.score<-resid(fit2,type="score")
par(mfrow = C(1,2))
plot(resid.score)
resid.score
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
结果应如下所示:
我得到了不同的结果。问题是来自我用于绘图的代码还是来自 coxph 代码?
我的猜测是风险评分应该是预测(如果我没有记错我的统计数据,风险比?),在你上面的代码中,残差只是一个向量,所以:
##note it's a small c for par
par(mfrow = c(1,1))
plot(predict(fit),resid.dev,xlab = "Risk Score",
ylab = "Deviance Residual", lwd=1 ,main="Deviance Residual")
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
对于第二个图,您需要在 x 轴上绘制观察数:
fit<-coxph(Surv(time, delta)~race+gender+race*gender, method="breslow",data=kidtran)
resid.score<-resid(fit,type="score")
par(mfrow = c(1,3))
for(i in colnames(resid.score))
plot(1:nrow(resid.score),resid.score[,i],main=i,xlab="obs no")
我正在尝试在比例风险模型的数据 (kidtran) 上绘制偏差和得分残差图。 1- 我尝试使用以下代码绘制 coxph 模型的偏差残差图与协变量(种族、性别和种族相互作用的性别):
library(KMsurv)
data(kidtran)
kidtran
####Deviance Residuals####
fit<-coxph(Surv(time, delta)~race+gender+race*gender, method="breslow", data=kidtran)
resid.dev<-resid(fit,type="deviance")
par(mfrow = C(1,1))
plot(resid.dev,xlab = "Risk Score", ylab = "Deviance Residual", lwd=1 )
title("Deviance Residual")
resid.dev
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
它应该是这样的:
这是我得到的结果。
除运行后的消息错误
par(mfrow = C(1,1))
C(1, 1) 中的错误:对象不可解释为因子
2-我确实为每个协变量绘制了分数残差图:
##score for interaction
fit<-coxph(Surv(time, delta)~race+gender+race*gender, method="breslow", data=kidtran)
resid.score<-resid(fit,type="score")
par(mfrow = C(1,2))
plot(resid.score)
resid.score
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
##score for race
fit1<-coxph(Surv(time, delta)~race, method="breslow", data=kidtran)
resid.score<-resid(fit1,type="score")
par(mfrow = C(1,2))
plot(resid.score)
resid.score
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
##score for gender
fit2<-coxph(Surv(time, delta)~gender, method="breslow", data=kidtran)
resid.score<-resid(fit2,type="score")
par(mfrow = C(1,2))
plot(resid.score)
resid.score
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
结果应如下所示:
我得到了不同的结果。问题是来自我用于绘图的代码还是来自 coxph 代码?
我的猜测是风险评分应该是预测(如果我没有记错我的统计数据,风险比?),在你上面的代码中,残差只是一个向量,所以:
##note it's a small c for par
par(mfrow = c(1,1))
plot(predict(fit),resid.dev,xlab = "Risk Score",
ylab = "Deviance Residual", lwd=1 ,main="Deviance Residual")
abline(h=2.5, col="blue")
abline(h=-2.5, col="blue")
对于第二个图,您需要在 x 轴上绘制观察数:
fit<-coxph(Surv(time, delta)~race+gender+race*gender, method="breslow",data=kidtran)
resid.score<-resid(fit,type="score")
par(mfrow = c(1,3))
for(i in colnames(resid.score))
plot(1:nrow(resid.score),resid.score[,i],main=i,xlab="obs no")