数学いらずの医科統計学PART2 CHAPTER2生存曲線の信頼区間を昔やったのだが、サンプル数は50程度が普通のカプランマイヤー法ではいいらしい。
けれども、第III相試験では数百〜数千の規模でデータを取っている論文がほとんどなので、50標本じゃないと対応できないわけないだろうと思ってシミュレーションしてみる。
昔やったシミュレーションからパクるわけだが、今回は生存データを確率分布関数の中からカイ二乗分布を利用して、生存 or 死亡も適当にsampleを使って作成する。
library(survival) # method の引数がいくつかあるのでついでにやる。 methods <- c("kaplan-meier", "fleming-harrington", "fh2") # 真の生存データはχ自乗分布から s5y <- 5# 5年生存率 people <- c(5, 20, 50, 100, 1000) # 1群の人数 prob0 <- c(0.4, 0.6) # 生存と死亡の確率 par(mfrow=c(3, 5)) for(m0 in seq(methods)){ # 理想状態 data1 <- rchisq(30000*2, s5y) data1 <- cbind(data1, sample(0:1, size=length(data1), prob=prob0, replace=TRUE)) res1 <- survfit(Surv(data1[, 1],data1[, 2]) ~ rep(1, nrow(data1)), type=methods[m0]) for(i in seq(people)){ # データの作成 data0 <- rchisq(people[i]*2, s5y) data0 <- cbind(data0, sample(0:1, size=length(data0), prob=prob0, replace=TRUE)) # 生存曲線の作成 res0 <- survfit(Surv(data0[, 1], data0[, 2]) ~ rep(1, nrow(data0)), type=methods[m0]) plot(res0, frame=FALSE, xlab="time", ylab=methods[m0], xlim=c(0, 25)) points(res1$time, res1$surv, type="l", col=2) title(paste(people[i], "samples in one group")) } }
各手法で生存曲線の形も、信頼区間の幅も変わるようだ。
50サンプルもあれば、真の生存曲線にかなり近くなる。