参考:《复杂数据统计方法——基于R的应用》 吴喜之
在生存分析中,研究的主要对象是寿命超过某一时间的概率。还可以描述其他一些事情发生的概率,例如产品的失效、出狱犯人第一次犯罪、失业人员第一次找到工作、青少年第一次吸毒等等。
生存函数S(t):
S(t)=P(T>t)=1-P(T<=t),t>0
T:表示寿命的随机变量
t:特定时间
综合生存函数图:用到包survival
案例:口腔癌数据
实验分成两组:
TX=1:仅放疗
TX=2:放疗+化疗
#读取数据
u=read.csv("pharynx1.csv")
#因子化定性变量
x=:
(x=x[-c(,)]) #去掉第五个和第11个(定性变量的下标)
for(i in x) u[,i]=factor(u[,i]) #把定性变量从数值型转换成因子型
#回归分析
a=lm(TIME~.,data=u)
summary(a)
R2和调整R2不高,结果不理想。同时正态性条件不满足,所以检验得到的p-值也没有多大意义。
对TIME做指数变换,
Box-Cox变换是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。
MASS包中的boxcox()函数可以寻找λ。
#BOX-COX变换
library(MASS)
b=boxcox(TIME~.,data=u)
I=which(b$y==max(b$y)) #which用于找到值在数组中的位置 使对数似然最大的λ位置
b$x[I]
尝试用TIME的0.4次方作为因变量来拟合数据
a=lm(TIME^0.4~INST+SEX+TX+AGE+COND+T.STAGE+N.STAGE+STATYS,data=u)
b=step(a)
summary(b)
anova(b)
shapiro.test(b$res)
拟合并不好。