目次(まとめ)

◾️ カプランマイヤー曲線は、生存率の時間変化を可視化した図

◾️ Rの "survival" パッケージを使ってカプランマイヤー曲線を書く

◾️ 複数のカプランマイヤー曲線を書く

 

こんにちは、みっちゃんです。

 

今回の記事では「カプランマイヤー曲線を書きたいけれど方法がわからない」という方向けに、Rを使って書く方法を解説します。

カプランマイヤー曲線は、生存率の時間変化を可視化した図

ここでは、以下のようなデータをエクセルファイルで準備して、説明に使用したいと思います。

このデータは、何かの治療を受けた11人の患者さん(A〜K)について、経過を観察した時のデータです。例えば、Aさんは、治療後9日間経過を観察できましたが、死亡してしまったことを意味しており、Cさんは、治療後13日間経過を観察した結果、何らかの理由で追跡できなくなった(打ち切り)ことを示しています。

このデータを「追跡日数」ごとにまとめて、以下のように「全体の生存率」を出すことができます。

例えば、オレンジでハイライトしている数値は、"(11-1)/11 = 0.909" となっています。

「その日の生存率」をかけていくことで「全体の生存率」が算出され、この値の変化を可視化した図が「カプランマイヤー曲線」です。

Rの "survival" パッケージを使ってカプランマイヤー曲線を書く

エクセルファイルをCSV形式(コンマ区切り)でデスクトップに保存して、ファイルの文字コードを確認しておきます。

$ nkf -g ~/Desktop/data_1.csv 
Shift_JIS

このデータを、以下のようにRで読み込みます。

$ R -q
> data <- read.csv("~/Desktop/data_1.csv", header = T, fileEncoding="Shift_JIS")

中身は以下のようになっています。

> head(data)
  患者   治療 追跡日数 死亡.1...その他.0
1    A 受けた        9                 1
2    B 受けた       13                 1
3    C 受けた       13                 0
4    D 受けた       18                 1
5    E 受けた       23                 1
6    F 受けた       28                 0

※4列目のヘッダー行の名前は「死亡:1 / その他:0」ですが、Rで取り扱えない文字が入っているので「死亡.1…その他.0」となっています。

カプランマイヤー曲線は、"survival" パッケージを使って書くことができます。

まず、以下のようにパッケージを読み込みます。

> library(survival)

カプランマイヤー曲線を書くためには、以下のように実行します。

> fit <- survfit(Surv(data$追跡日数, data$死亡.1...その他.0) ~ data$治療, data)
> plot(fit, xlab = "time", ylab = "survival rate")

これを実行すると、以下のような図が描けます。

実線で描かれている曲線が「生存率」であり、破線はその信頼区間です(plot関数の中で "conf.int = FALSE" と指定すれば、信頼区間が描かれません)。

また、以下のようにカプランマイヤー曲線のサマリーを得ることができます。

> summary(fit)
Call: survfit(formula = Surv(data$追跡日数, data$死亡.1...その他.0) ~ 
    data$治療, data = data)

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
    9     11       1    0.909  0.0867       0.7541        1.000
   13     10       1    0.818  0.1163       0.6192        1.000
   18      8       1    0.716  0.1397       0.4884        1.000
   23      7       1    0.614  0.1526       0.3769        0.999
   31      5       1    0.491  0.1642       0.2549        0.946
   34      4       1    0.368  0.1627       0.1549        0.875
   48      2       1    0.184  0.1535       0.0359        0.944

"survival" 列で書かれている数値が「生存率」に対応しています(上で計算していた数値と一致しています)。

複数のカプランマイヤー曲線を書く

上に示したデータでは、治療を受けた患者さんのデータだけを見ていましたが、実際には、治療を受けていない患者さんと比較したい場面が多くあります。

そこで、以下のようなエクセルファイルを取り扱います。

カプランマイヤー曲線の書き方は、上と同じです。

> data <- read.csv("~/Desktop/data_2.csv", header = T, fileEncoding="Shift_JIS")

# > library(survival)
> fit <- survfit(Surv(data$追跡日数, data$死亡.1...その他.0) ~ data$治療, data)
> plot(fit, xlab = "time", ylab = "survival rate", lty = 1:2, col = 1:2)

"lty" は、線のタイプを指定するためのオプション、"col" は、線の色を指定するためのオプションです。