生存分析

x=c(2, -2.5, 3.5, 4, 4, -5, 6, -6, 7, -7, 8, -9, 10.5, 12.5, 19, 2.5, 5, 7, -8.5, 9, -10, 11, -11, 12, 13, -14, 15, -16, 17, -18, 19, -20, 21, 24, 32)
A=data.frame() #创立A的数据框
 for (i in 1:length(x))
{
  A[i,1]=x[i]
  if(A[i,1]<0) 
    A[i,2]=0
  else
    A[i,2]=1 #循环定义A[,2]根据是否截尾分为0(是)和1(否)
}
A[,3]=c(rep("high",15),rep("low",20))#建立分组
A[,1]=abs(x) #取绝对值
names(A)=c("survt","censor","wbs") #names()定义数据框每列的名称
library(survival)
Surv(A$survt,A$censor==1)
y=Surv(A$survt,A$censor==1)
kmfit1=survfit(y~1)
summary(kmfit1)
plot(kmfit1)
kmfit2=survfit(y~A$wbs)
plot(kmfit2,lty=c('solid','dashed'),col=c('black','blue'),xlab = 'survival time in days',ylab = 'survival probabilities')
legend('topright',c('wbc high','wbc low'),lty = c('solid','dashed'),col = c('black','blue'))

  1. 某医生对15例接受易瑞沙治疗的肺癌骨转移患者进行随访,生存时间(月)如下:
    3,4,7+,9,10,11+ ,13,15,17+,18,18+,19,20,20+,22
    (3,4,-7,9,10,-11,13,15,-17,18,-18,19,20,-20,22)
    试估计各时点的生存率及其标准误,中位生存时间,并绘制生存曲线。
#不进行两组间比较,仅单组生存分析的kaplan-meier法
x=c(3,4,-7,9,10,-11,13,15,-17,18,-18,19,20,-20,22)
A=data.frame()
for (i in 1:length(x))
{
  A[i,1]=x[i]
  if(A[i,1]<0) 
    A[i,2]=0
  else
    A[i,2]=1
}
A[,1]=abs(x)
names(A)=c("survt","censor")
library(survival)
Surv(A$survt,A$censor)
y=Surv(A$survt,A$censor)
kmfit1=survfit(y~1)
summary(kmfit1)
plot(kmfit1)
  1. 某医生将20例乙型肝炎后肝硬化患者随机分为两组,分别采用甲、乙两种疗法进行治疗,随访10年得资料如下:
    甲疗法组 12,25,50+,68,70,79+,83+,91+,104+,114
    乙疗法组 9,19, 27,31,35,47+,48,58,82+,93
    试比较两疗法的疗效有无差别。
x=c(12,25,-50,68,70,-79,-83,-91,-104,114,9,19,27,31,35,-47,48,58,-82,93)
A=data.frame() #创立A的数据框
for (i in 1:length(x))
{
  A[i,1]=x[i]
  if(A[i,1]<0) 
    A[i,2]=0
  else
    A[i,2]=1 #循环定义A[,2]根据是否截尾分为0(是)和1(否)
}
A[,3]=c(rep("甲",10),rep("乙",10))#建立分组
A[,1]=abs(x) #取绝对值
names(A)=c("survt","censor","group") #names()定义数据框每列的名称
library(survival)
Surv(A$survt,A$censor==1)
y=Surv(A$survt,A$censor==1)
kmfit1=survfit(y~1)
summary(kmfit1)
plot(kmfit1)
kmfit2=survfit(y~A$group)
plot(kmfit2,lty=c('solid','dashed'),col=c('black','blue'),xlab = '生存时间(月)',ylab = '生存率')
legend('topright',c('甲组','乙组'),lty = c('solid','dashed'),col = c('black','blue'))
survdiff(Surv(survt,censor)~group, data=A,rho = 0)  #检验显著性,rho=0为log-rank法或Mantel Haenszel法,rho=1为Wilcoxon法
生存分析_第1张图片
image.png
d=c() #必须重置d
a=c(3,9,15,21,27,33,39,45,51,57,63,69) #代表时间
b=c(37,2,33,33,33,38,31,11,8,6,5,2) #代表a相应时间内的期内死亡人数
c=c(31,29,13,4,4,0,3,1,0,0,0,0) #代表a相应时间内的期内截尾人数
for (i in 1:length(a))
{  d=c(d,rep(a[i],each=b[i]),rep(-a[i],each=c[i])) } #将简化的向量a,b,c转换为完整的数据,之后可以用kaplan-meier法进行分析,也可以使用寿命表法(?不会)
x=d

你可能感兴趣的:(生存分析)