library(survival)
n <- 200
liferate <- 0.01
life <- rexp(n, liferate) #生成指数分布的随机数200个
round(life[1:10], 1) #取前10个保留1位小数
censrate <- 0.005
cens <- rexp(n, censrate)
round(cens[1:10], 1) #同上
oldpar <- par(mfrow=c(1, 2)) #用par作两张图
hist(life, main="True lifetimes")
hist(cens, main="Censoring times")
par(oldpar) #重制作图参数
delta <- rep(0, n)
delta[life < cens] <- 1 #把1插入到cens大于life的部分
delta[1:10] #预览前十个
sum(delta)/n #失败案例的比例
plot(life, cens, main="Censoring times vs. True lifetimes", xlab="lifetimes",
ylab="censoring times")
abline(0, 1, col="red", lwd=2)
points(life[delta==1], cens[delta==1], pch=16)
times <- pmin(life, cens) #两者选择更小的数据载入
round(times[1:10], 1)
median.true <- qexp(p=0.5, rate=liferate)
median.true
median.all <- median(times) #全体数据的中位数
median.all
median.unc <- median(times[delta == 1]) #未删失的观测值的中位数
median.unc
km <- survfit(Surv(times, delta) ~ 1)
plot(km, main="Kaplan-Maier estimate of S(t)", xlab="time")
abline(h=0.5, col="red")
print(km)
median.Surv <- quantile(km, probs=0.5, conf.int=FALSE)
median.Surv