# R - カプランマイヤー法をマスターしよう **⚠️ 作成途中** この記事は現在作成中です。内容は順次追加・更新される予定です。 --- ## はじめに カプランマイヤー法(Kaplan-Meier法)は、生存時間解析において最も基本的で重要な手法の一つです。医学研究、信頼性工学、経済学など様々な分野で、「ある事象が起こるまでの時間」を分析するために使用されます。 この記事では、Rを使ってカプランマイヤー法を実践的に学んでいきます。 ## カプランマイヤー法とは カプランマイヤー法は、打ち切り(censoring)があるデータに対して生存関数を推定するノンパラメトリック手法です。生存関数S(t)は、時刻tまでに事象が発生しない確率を表します。 ## 必要なパッケージ Rでカプランマイヤー法を実行するには、以下のパッケージが必要です: ```r # パッケージのインストール(初回のみ) install.packages(c("survival", "survminer", "ggplot2")) # パッケージの読み込み library(survival) library(survminer) library(ggplot2) ``` ## サンプルデータを使った実例 ### データの準備 まずは、survivalパッケージに含まれているlung癌データセットを使って解析してみましょう。 ```r # lungデータセットの読み込み data(lung) # データの概要を確認 head(lung) summary(lung) ``` lungデータセットには以下の変数が含まれています: - time: 生存時間(日数) - status: 状態(1=打ち切り, 2=死亡) - sex: 性別(1=男性, 2=女性) - age: 年齢 - ph.ecog: ECOG performance score ### 基本的なカプランマイヤー解析 ```r # 生存オブジェクトの作成 surv_object <- Surv(time = lung$time, event = lung$status) # カプランマイヤー推定 km_fit <- survfit(surv_object ~ 1, data = lung) # 結果の表示 print(km_fit) summary(km_fit) ``` ### カプランマイヤー曲線の可視化 ```r # 基本的な生存曲線のプロット plot(km_fit, xlab = "時間(日)", ylab = "生存確率", main = "カプランマイヤー生存曲線") # より美しいプロット(survminerパッケージ使用) ggsurvplot(km_fit, data = lung, conf.int = TRUE, pval = FALSE, xlab = "時間(日)", ylab = "生存確率", title = "肺癌患者の生存曲線", ggtheme = theme_minimal()) ``` ### グループ別の比較 性別によるグループ比較を行ってみましょう: ```r # 性別による生存曲線の比較 km_fit_sex <- survfit(Surv(time, status) ~ sex, data = lung) # 結果の表示 print(km_fit_sex) # グループ別生存曲線のプロット ggsurvplot(km_fit_sex, data = lung, conf.int = TRUE, pval = TRUE, legend.labs = c("男性", "女性"), xlab = "時間(日)", ylab = "生存確率", title = "性別による生存曲線の比較") ``` ### ログランク検定 グループ間の生存曲線の差を統計的に検定します: ```r # ログランク検定 survdiff(Surv(time, status) ~ sex, data = lung) ``` ## 別のサンプルデータでの実例:ovarianデータセット ```r # ovarianデータセットの使用 data(ovarian) head(ovarian) # 生存オブジェクトの作成 surv_ovarian <- Surv(ovarian$futime, ovarian$fustat) # 治療群別の生存曲線 km_ovarian <- survfit(surv_ovarian ~ rx, data = ovarian) # 可視化 ggsurvplot(km_ovarian, data = ovarian, conf.int = TRUE, pval = TRUE, legend.labs = c("治療群1", "治療群2"), xlab = "時間", ylab = "生存確率", title = "卵巣癌治療群別生存曲線") ``` ## 生存時間の要約統計 ```r # 中央生存時間の計算 print(km_fit) # 特定の時点での生存確率 summary(km_fit, times = c(100, 200, 300, 500)) # 95%信頼区間付きの詳細な要約 summary(km_fit, times = seq(0, 1000, 100)) ``` ## リスクテーブルの表示 ```r # リスクテーブル付きの生存曲線 ggsurvplot(km_fit_sex, data = lung, conf.int = TRUE, pval = TRUE, risk.table = TRUE, risk.table.col = "strata", legend.labs = c("男性", "女性"), xlab = "時間(日)", ylab = "生存確率") ``` ## 実践的なTips ### データの前処理 ```r # 欠損値の確認と処理 lung_clean <- lung[complete.cases(lung[c("time", "status", "sex")]), ] # 時間の単位変換(日から月へ) lung_clean$time_months <- lung_clean$time / 30.44 ``` ### カスタマイズされた可視化 ```r # カスタマイズされたプロット ggsurvplot(km_fit_sex, data = lung, size = 1, linetype = "strata", palette = c("#E7B800", "#2E9FDF"), conf.int = TRUE, pval = TRUE, risk.table = TRUE, risk.table.col = "strata", legend.labs = c("男性", "女性"), risk.table.height = 0.25, ggtheme = theme_bw()) ``` ## 次のステップ この記事では基本的なカプランマイヤー法について学びました。さらに高度な生存時間解析を学ぶには: - Cox比例ハザードモデル - パラメトリック生存モデル - 時間依存共変量の取り扱い - 競合リスクモデル これらの手法についても今後の記事で解説予定です。 --- *最終更新: 作成中*