代码如下:
rm(list=ls())
cat("\014")
library(survminer)
library(survival)
data1=cancer
str(data1)
datasurv<- Surv(time=data1$time,event=data1$status==2)
data1$datasurv<-with(data1,datasurv)
colnames(data1)
Multicox1<- coxph(datasurv~age+sex+ph.ecog+ph.karno+meal.cal+wt.loss,data=data1)
summary(Multicox1)
testPH1 <- cox.zph(Multicox1)
print(testPH1)
ggcoxzph(testPH1)
ggforest(model = Multicox1, data = data1, cpositions = c(0.05, 0.15, 0.35),refLabel = 'reference', noDigits = 3,fontsize = 0.8)
残差检验结果如下:
print(testPH1)
chisq df p
age 0.21311 1 0.644
sex 1.24215 1 0.265
ph.ecog 2.40880 1 0.121
ph.karno 5.82165 1 0.016
meal.cal 6.44932 1 0.011
wt.loss 0.00982 1 0.921
GLOBAL 13.19744 6 0.040
结果显示,“ph.karno”、“meal.cal ”以及global都是P<0.05,不符合PH假定。
- 要检验PH假定,仅靠
cox.zph()
足够吗?分类变量和连续变量我都可以用这个函数吗? - 残差图没看懂,感觉所有变量的曲线都很平,为什么有的P<0.05, 有的P>0.05呢?
- 假如“ph.karno”和“meal.cal ”不是我关注的因子,我可以简单粗暴的删掉它们吗? 假如它们是我关注的因子(或者我不想删掉它们),那我应该怎么办,把它们转换成分类变量再试一次,或者把其中一个strata(我尝试过好像不能把两个都strata),或者做依时协变量?