統計ER

R, EZR, SPSS, KH Coder を使ったデータ分析方法を紹介するブログ。ニッチな内容が多め

カプランマイヤー曲線の書き方 R と EZR の方法

カプランマイヤー曲線の書き方 R と EZR の方法。

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

カプランマイヤー曲線の書き方説明のためのサンプルデータ

カプランマイヤー曲線を描きたい場合、イベント発生のデータとイベント発生までもしくは観察終了までの時間のデータが必要。

イベント発生データは、イベントが起きた人は1、起きなかった人は0というデータ。

イベント発生までの時間もしくは観察終了までの時間は日でも週でも月でも年でもOK。

例えば、観察期間を days, イベント発生データを event とする。

データセット名は dat とする。

days <- c(53, 93, 109, 112, 164, 201, 273, 338, 
rep(168, 107), rep(364, 385))
event <- c(rep(1, 8), rep(0, 107), rep(0, 385))
dat <- data.frame(days, event)

カプランマイヤー曲線を書く基礎知識

まず、survivalパッケージを呼び出す。

Surv()で、イベントと時間から生存時間データと認識させる。

survfit()で、type="kaplan-meier"と指定して、カプランマイヤー曲線データを作成する。

One-armの試験で一本のカーブを描く場合は、survfit()中のformulaで、~のあとに1を書く。

グループ別のカーブの場合は~の後にグループ変数を書く。

fun='event'はイベント発生割合を書くときに指定が必要なオプション。

fun='event'を指定しなければ、生存割合が描かれる。これが標準。

fun='event'を指定すると、累積のイベント発生割合のグラフが描かれる。

スクリプトは以下の通り。

library(survival)

KM1 <- Surv(time=dat$days, event=dat$event)

sfit1 <- survfit(KM1~1, type="kaplan-meier")

plot(sfit1, las=1, ylim=c(0.95,1), xlab="Days", 
ylab="Event-free Rate")

plot(sfit1, fun='event', las=1, ylim=c(0,0.03), 
xlab="Days", ylab="Cumulative incidence")

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

カプランマイヤー曲線の書き方:生存割合の場合

fun='event'を指定しなければ、生存割合が描かれる。

実線がカプランマイヤー推定値で、点線が95%信頼区間を示す。

plot(sfit1, las=1, ylim=c(0.95,1), xlab="Days", 
ylab="Event-free Rate")

カプランマイヤー生存曲線

打ち切り例のマークを追加するには、mark.time=Tを使う。

TはTRUEの省略形

plot(sfit1, las=1, ylim=c(0.95,1), xlab="Days", 
ylab="Event-free Rate", mark.time=T)

カプランマイヤー生存曲線 打ち切り例のマークあり

カプランマイヤー曲線の書き方:生存割合の場合( EZR 編)

EZRで生存曲線を描いてみると以下のようになる。

以下を R スクリプト窓にコピペして、全行を実行。

days <- c(53, 93, 109, 112, 164, 201, 273, 338, 
rep(168, 107), rep(364, 385))
event <- c(rep(1, 8), rep(0, 107), rep(0, 385))
dat <- data.frame(days, event)

「統計解析」メニューから「生存期間の解析」→「生存曲線の記述と群間の比較(Logrank検定)」を選択。

観察期間の変数は days をクリックして選択。

イベントは、eventをクリックして選択。

「95%信頼区間を表示する」にチェック。

Y軸の範囲に0.95, 1.0を入れる。

OKをクリック。

するとカプランマイヤー曲線が描かれる。

At riskの人数表示まで標準で行ってくれるのでとてもきれいなグラフになっている。

EZRで描いたカプランマイヤー曲線

カプランマイヤー曲線の書き方:累積イベント割合の場合

fun='event'を指定すると、累積イベント割合が描かれる。

plot(sfit1, fun='event', las=1, ylim=c(0,0.03), 
xlab="Days", ylab="Cumulative incidence")

累積イベントグラフ

累積イベントのグラフにも、mark.time=Tで、打ち切り例のマークを加えることができる。

plot(sfit1, fun='event', las=1, ylim=c(0,0.03), xlab="Days", 
ylab="Cumulative incidence", mark.time=T)

打ち切り例のマークありの累積イベントグラフ

カプランマイヤー曲線の書き方:累積イベント割合の場合( EZR 編)

EZRで累積イベントグラフを描くために、「統計解析」から「生存期間の解析」→「累積発生率(競合イベントを含む)の記述と群間の比較(Gray検定)」を選択。

いったんデフォルト(Y軸の範囲は0, 0.03に設定)で描いた後、スクリプト枠内で、conf.int=FALSEをTRUEへ変更とlegendの場所をtoprightからtopに変更して再度実行すると、以下のようになる。

EZRで描いた累積イベントグラフ

このときのスクリプト変更部分を抜粋すると以下の通り。

# confint=FALSE を TRUE へ変更
plot(ci, fun="event", bty="l", conf.int=TRUE, col=1, 
lty=1, lwd=1, ylim=c(0,0.03), xlab="days", 
ylab="Cumulative incidence", mark.time=TRUE)

# legend("topright", ...) から legend("top", ...) に変更
legend("top", compevents, col=1, lty=1, lwd=1, box.lty=0, 
title="Competing events")

カプランマイヤー曲線の書き方:EZR 編 【動画】

EZRでカプランマイヤー曲線を簡単に描く方法を紹介。

よかったらどうぞ。

youtu.be

EZRとは?という方は、こちらが公式ページ。

http://www.jichi.ac.jp/saitama-sct/SaitamaHP.files/statmed.html

まとめ

カプランマイヤー曲線を R で描くには、survivalパッケージの Surv() と survfit() を使う。

生存割合の曲線のほか、累積イベント割合の曲線も描ける。

EZRでカプランマイヤー曲線や累積イベントグラフを描くこともできる。

おすすめ書籍

EZR公式マニュアル