# 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比例ハザードモデル
- パラメトリック生存モデル
- 時間依存共変量の取り扱い
- 競合リスクモデル
これらの手法についても今後の記事で解説予定です。
---
*最終更新: 作成中*