カプランマイヤー曲線のサンプル数

MikuHatsune2013-04-24

数学いらずの医科統計学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サンプルもあれば、真の生存曲線にかなり近くなる。