「打ち切り例が多いほど、あなたの曲線は信頼性を失っていきます。」
カプランマイヤー曲線(Kaplan-Meier曲線)は、「イベントが発生するまでの時間」を可視化するための統計グラフです 。縦軸に生存(イベント未発生)割合、横軸に時間をとり、イベントが発生するたびに階段状に下がっていく特徴的な形をしています 。がん領域の臨床研究では必須の手法であり、医療従事者として論文を読む場面でも作成する場面でも、避けては通れない知識です 。
関連)https://best-biostatistics.com/surviv/km.html
曲線上に見られる縦線(ヒゲのような記号)は打ち切り例(censored case)を示します 。打ち切りとは、試験終了・転居・同意撤回などにより、イベント発生前に追跡が終了した症例のことです 。「打ち切り=脱落」と一括りにしてしまいがちですが、打ち切りとその後のイベント発生の間に関連があるかどうかで、解析の妥当性が大きく変わります 。
関連)https://www.amgenpro.jp/products/brand/blincyto/product/medical_statistics04
つまり、ヒゲの意味を正しく読めるかどうかが、曲線の解釈精度を左右するということです。
EZRでカプランマイヤー曲線を描くには、最低でも3種類のデータ列が必要です 。
関連)https://best-biostatistics.com/ezr/survival-curve.html
この数値形式は厳守しなければなりません 。EZRでは「イベント=1、打ち切り=0」と決まっており、逆にしてしまうと曲線が上下反転した全く別の図になってしまいます。これは初心者が犯しやすいミスの筆頭です。
関連)https://best-biostatistics.com/ezr/survival-curve.html
データはExcelで作成し、CSV形式で保存するのが標準的な流れです 。列名は英語(例:`Month`、`Survival`、`Group`)にしておくと、RやEZRへの読み込みがスムーズになります 。列名に日本語を使うと文字コードの問題でエラーが出ることがあるため、英語推奨が原則です。
なお、サンプルサイズは1群あたり50例程度が標準的な目安とされています 。これより極端に少ないと、曲線の右端が1〜2症例の動向に左右されてしまい、生存率の推定精度が著しく低下します。50例という数字は目安として覚えておけばOKです。
関連)https://mikuhatsune.hatenadiary.com/entry/20130424/1366807582
EZRは無料で使えるRベースの統計ソフトで、GUIで操作できるため、Rのコードを書いたことがない医療従事者でも利用しやすいツールです 。
関連)https://best-biostatistics.com/ezr/survival-curve.html
手順はシンプルです。まずCSVデータをEZRに読み込みます 。
関連)https://note.com/igakustudy/n/n61ef81a62a30
1. EZRを起動し、「ファイル」→「データのインポート」→「ファイルまたはクリップボード, URLからテキストデータを読み込む」を選択
2. 保存したCSVファイルを指定して読み込む
3. 「統計解析」→「生存期間の解析」→「生存曲線の推定と検定(ログランク検定)」を選択
4. 時間変数、イベント変数、群変数をそれぞれ指定する
関連)https://best-biostatistics.com/ezr/survival-curve.html
5. OKをクリックするとカプランマイヤー曲線とログランク検定のp値が出力される
これで完成です。
EZRの強みは、曲線だけでなく「At risk」の人数表(各時点での観察症例数)も標準で出力してくれる点です 。論文投稿では多くのジャーナルがAt risk表の添付を求めており、EZRなら追加作業なしで対応できます。これは使えそうです。
関連)https://best-biostatistics.com/toukei-er/entry/how-to-draw-kaplan-meier-curve/
なお、イベント変数の指定時に「イベントが1と定義され、イベントなしが0」である点を毎回確認してください 。データを他の研究から転用する際に定義が逆になっているケースがあるため、読み込んだあとに必ず確認する習慣をつけましょう。
関連)https://www.youtube.com/watch?v=KlFktytwaY0
Rでカプランマイヤー曲線を描くには、`survival`パッケージと`survminer`パッケージを使います 。コードに慣れれば、EZRよりも高い自由度でグラフをカスタマイズできます。
関連)https://tsuki-no-fune.com/kaplanmeier/
基本的な流れは以下の通りです 。
関連)https://best-biostatistics.com/toukei-er/entry/how-to-draw-kaplan-meier-curve/
```r
library(survival)
library(survminer)
# 生存時間オブジェクトの作成
surv_obj <- Surv(time = データ$時間列, event = データ$イベント列)
# カプランマイヤー推定
km_fit <- survfit(surv_obj ~ データ$群列)
# 曲線の描画
ggsurvplot(km_fit, data = データ, pval = TRUE, risk.table = TRUE)
```
`ggsurvplot()`の中で`pval = TRUE`とするとログランク検定のp値が図中に表示され、`risk.table = TRUE`でAt risk表が付きます 。論文品質の図を一発で出せるのがRの強みです。
層別化(例:性別ごとに別曲線を描く)も、`survfit`の右辺に変数を追加するだけで対応できます 。複数の交絡因子を考慮した解析への発展もしやすく、Rに慣れていくと研究の幅が大きく広がります。
関連)https://tsuki-no-fune.com/kaplanmeier/
グラフの見た目を整えたい場合は`ggtheme = theme_minimal()`などのテーマ指定が便利です 。軸ラベルも`xlab`、`ylab`で日本語に変更できます。
参考として、R/EZRによる生存時間解析の詳細はこちらが網羅的です:
(Rを用いたカプランマイヤー曲線の作成方法・生存割合と累積イベント割合の両方の描き方を解説)
R と EZR でカプランマイヤー曲線を書く方法 | best-biostatistics.com
曲線が描けるようになっても、解釈ミスをすると研究の結論が根本からずれます。医療従事者として特に注意すべき誤読パターンを3つ挙げます。
①右端の生存率が高いのは「良い治療」の証拠ではない
時間の経過とともに打ち切りや死亡によって観察症例数が減少するため、右末端の生存率の解釈には慎重さが必要です 。右端でたまたま生存率が高く見えていても、残りの症例が数例しかなければ、その後1例イベントが発生しただけで曲線は急落します。
関連)https://www.amgenpro.jp/products/brand/blincyto/product/medical_statistics04
②2本の曲線が交差している場合、ログランク検定は使えないことがある
ログランク検定は、一方の群が常に他方より優れていることを前提とする「比例ハザード仮定」に基づいています。2本の曲線が途中で交差している場合、この仮定が崩れており、単純なp値の比較では正確な差が測れません。一般化ウィルコクソン検定など別の手法を検討する必要があります 。厳しいところですね。
関連)https://best-biostatistics.com/surviv/survival.html
③打ち切りの理由が「informative censoring」だと解析が歪む
打ち切りに「治療中に増悪し、状態悪化のため試験中止」というケースが含まれている場合、打ち切りとイベント発生が独立していない状態(informative censoring)になります 。この状態での解析結果は信頼性が低く、カプランマイヤー法の前提を満たしません。データを受け取った時点で、打ち切り理由の内訳を必ず確認するのが原則です。
関連)https://www.amgenpro.jp/products/brand/blincyto/product/medical_statistics04
参考として、打ち切りの解釈ポイントをわかりやすくまとめた製薬会社の解説ページはこちら:
(打ち切り例の取り扱い・右末端の解釈・曲線を正しく読むための実践的な注意点)
医療統計:カプランマイヤー曲線 | アムジェンプロ
ツール選びで迷ったときの判断軸は「誰が・何のために使うか」です。それぞれの特徴を整理します。
| ツール | 費用 | 操作 | 強み | 向いている場面 |
|---|---|---|---|---|
| EZR | 無料 | GUI | At risk表・ログランク検定を一括出力 best-biostatistics(https://best-biostatistics.com/ezr/survival-curve.html) | 院内研究・初めての生存解析 |
| R(ggsurvplot) | 無料 | コード | カスタマイズ自由・論文品質 y2pt(https://y2pt.com/9421/) | 複数群・層別化・論文投稿 |
| GraphPad Prism | 有料 | GUI | 2群以上の比較・視覚的に整った図 mdf-soft(https://www.mdf-soft.com/support/graphpad_prism_KaplanMeier.html) | 基礎研究・英語論文の図作成 |
| Excel統計 | 有料 | GUI | Excel環境内で完結 bellcurve(https://bellcurve.jp/statistics/blog/12208.html) | 院内での簡易確認・プレゼン |
EZRとRは無料で使えます。これは助かりますね。
GraphPad Prismはライセンス費用がかかりますが、ログランク検定の結果を図中に自動表記し、見た目の美しさが際立ちます 。英語ジャーナルへの投稿を目指す研究者には有力な選択肢になります。
関連)https://www.mdf-soft.com/support/graphpad_prism_KaplanMeier.html
ExcelやExcel統計アドインでもカプランマイヤー法は計算できますが、At risk表の付加など細かい出力はカスタマイズが必要になることが多いです 。「とりあえず曲線の形を確認したい」という用途には使えますが、論文提出レベルの図を目指すなら早めにEZRかRに移行するのが得策です。
関連)https://bellcurve.jp/statistics/blog/12208.html
参考として、EZRによる生存時間解析の操作手順を動画で解説したコンテンツはこちら:
(EZRを使ったカプランマイヤー曲線の描き方・データ入力から検定結果出力まで)
EZRを用いたカプランマイヤー曲線の描き方 | YouTube