- こちらでサバイバルカーブを描いてみる話を聞いた
- 1人、死亡が確認されるたびに、1段、下がるという階段線だと言う
- ただし、1段の段差は、そのときに「取り扱っている人数 分 の1」
- 適当に時刻データを作り、センサー情報も適当に作ると次のようになる
n <- 100
censor <- sample(0:1,n,replace=TRUE)
times <- cumsum(rexp(n))
x <- ((n-1):0)/(n:1)
v <- rep(1,length(x))
v[which(censor == 1)] <- x[which(censor ==1)]
par(mfcol = c(1,2))
plot(times,cumprod(v),type="s",ylim = c(0,1))
Data <- data.frame(Censor = censor, Time = times)
library(survival)
KMcurve <- survfit(Surv(Time, Censor)~1, data=Data)
plot(KMcurve, conf.int=FALSE, mark.time=TRUE)
par(mfcol = c(1,1))
n <- 10000
prob <- c(0,1)
censor <- sample(0:1,n,replace=TRUE,prob=prob)
times <- cumsum(rexp(n))
x <- ((n-1):0)/(n:1)
v <- rep(1,length(x))
v[which(censor == 1)] <- x[which(censor ==1)]
par(mfcol = c(1,2))
plot(times,cumprod(v),type="s",ylim = c(0,1))
Data <- data.frame(Censor = censor, Time = times)
library(survival)
KMcurve <- survfit(Surv(Time, Censor)~1, data=Data)
plot(KMcurve, conf.int=FALSE, mark.time=TRUE)
par(mfcol = c(1,1))
n <- 10000
perfect.pursuit <- rep(1,n)
lambda.death <- 1
times.death <- cumsum(rexp(n,lambda.death))
lambda.drop <- 1.5
drop.times <- sample(cumsum(rexp(n,lambda.drop)))
times <- apply(cbind(times.death,drop.times),1,min)
censor <- apply(cbind(times.death,drop.times),1,order)[2,]-1
ord <- order(times)
times <- times[ord]
censor <- censor[ord]
x <- ((n-1):0)/(n:1)
v <- rep(1,length(x))
v[which(censor == 1)] <- x[which(censor ==1)]
par(mfcol = c(1,2))
plot(times,cumprod(v),type="s",ylim = c(0,1))
Data <- data.frame(Censor = censor, Time = times)
library(survival)
KMcurve <- survfit(Surv(Time, Censor)~1, data=Data)
plot(KMcurve, conf.int=FALSE, mark.time=TRUE)
par(mfcol = c(1,1))