R - サバイバル分析:入門者のガイド
こんにちは、データサイエンス志望者诸位!今日は、Rを使ったサバイバル分析の興味深い世界に踏み出します。コードを書いたことがない方も心配しないでください - あなたの親切なガイドとして、私はステップバイステップでサポートします。さあ、飛び込みましょう!
サバイバル分析とは?
コードを書く前に、サバイバル分析とは何かを理解しましょう。例えば、ある治療後の患者の生存期間を研究する医師、または、顧客が订阅をキャンセルするまでどのくらいの期間がかかるかを調べるビジネスアナリストがいます。これがサバイバル分析の役立ちます!
サバイバル分析は以下のような質問に答える手助けになります:
- 事件が発生するまでどのくらいの時間がかかるのか?
- 事件までの時間に影響を与える要因は何か?
- 違うグループ間の生存時間の比較はどうなるのか?
さあ、Rコードを書いてみましょう!
必要なパッケージのインストールとロード
まず第一に、必要なパッケージをインストールし、ロードします。Rでは、パッケージは特定のタスクに便利な関数を含むツールボックスのようです。
# 'survival'パッケージをインストール
install.packages("survival")
# パッケージをロード
library(survival)
これらのコマンドを実行したときにメッセージが表示されても心配しないでください。赤いエラーメッセージがなければ大丈夫です!
データのロードと探索
このチュートリアルでは、survivalパッケージの内蔵データセット「lung」を使用します。このデータセットには、進行した肺がんの患者に関する情報が含まれています。
# lungデータセットをロード
data(lung)
# 最初の数行を確認
head(lung)
# データの摘要を取得
summary(lung)
これらのコマンドを実行すると、データの一部が表示されます。変数に親しんでみてください。以下の変数で作業を行います:
- 'time':生存時間(日数)
- 'status':カensoringステータス(1=カensored、2=死亡)
- 'age':患者の年齢
- 'sex':患者の性別(1=男性、2=女性)
サバイバルオブジェクトの作成
さあ、サバイバルオブジェクトを作成しましょう。これは生存時間とイベントステータスを組み合わせた特別なRオブジェクトです。
# サバイバルオブジェクトを作成
surv_object <- Surv(time = lung$time, event = lung$status == 2)
# 最初の数行を表示
head(surv_object)
「+」マークがついた一連の数字が表示されます。この「+」はカensoredな観測(研究終了時点でまだ生存している患者)を示します。
カプラン=メイヤー生存曲線
サバイバル分析で最も一般的な視覚化の一つがカプラン=メイヤー曲線です。時間ごとの生存確率を示します。
# カプラン=メイヤー曲線をフィット
km_fit <- survfit(surv_object ~ 1, data = lung)
# 曲線をプロット
plot(km_fit, main = "カプラン=メイヤー生存曲線",
xlab = "時間(日)", ylab = "生存確率")
これで、初めての生存曲線を作成しました。y軸は生存確率を示し、x軸は日数を示します。イベント(死亡)が発生するたびに曲線が下がります。
グループの比較:男性対女性
さあ、男性と女性の生存曲線を比較してみましょう。
# 性別ごとにカプラン=メイヤー曲線をフィット
km_sex <- survfit(surv_object ~ sex, data = lung)
# 曲線をプロット
plot(km_sex, col = c("blue", "red"), main = "性別ごとの生存曲線",
xlab = "時間(日)", ylab = "生存確率")
legend("topright", c("男性", "女性"), col = c("blue", "red"), lty = 1)
今では青い曲線が男性、赤い曲線が女性のものです。違いを見つけられましたか?
コックス比例ハazardモデル
最後に、コックス比例ハazardモデルをフィットしてみましょう。このモデルは、異なる要因が生存にどのように影響するかを理解するのに役立ちます。
# コックス比例ハazardモデルをフィット
cox_model <- coxph(surv_object ~ age + sex, data = lung)
# 摘要を表示
summary(cox_model)
出力に圧倒されてしまわないでください。以下の点に注目してください:
- 'coef'列は各変数の影響を示します。
- 'exp(coef)'列はより読みやすい:1を超える値はリスクの増加を、1未満の値はリスクの減少を示します。
- 'Pr(>|z|)'列はp値を示します。小さい値(0.05未満)は統計的有意性を示します。
結論
おめでとうございます!あなたはRを使った最初のサバイバル分析を完了しました。私たちは多くの内容をカバーしましたが、練習は完璧を生みます。コードを自由に弄り、変数を変更して、何が起きるかを確認してみてください。
以下は、私たちが使用した主要な関数のまとめです:
関数 | 目的 |
---|---|
Surv() | サバイバルオブジェクトを作成 |
survfit() | 生存曲線をフィット |
plot() | 生存曲線を視覚化 |
coxph() | コックス比例ハazardモデルをフィット |
探索を続け、学びを続け、そして最も重要なのは、Rとサバイバル分析を楽しむことです!
Credits: Image by storyset