Rによる生存時間解析 【survivalパッケージでカプランマイヤー・コックス比例ハザード】
この記事のタイトルとURLをコピーする
執筆者
【生命医学をハックする】運営者 (@biomedicalhacks)。生命科学研究者、医師・医学博士。プロフィールはこちら

統計計算のフリーソフトRは、生命医学研究のさまざまなところで使われています。

この記事では、Rを使った生存時間解析を紹介します。

生存時間解析とは

生存時間解析は、あるイベント (event) が起きるかどうかと、それが起きるまでの時間の関係を調べる統計手法のことです。

例えばその「イベント」が死亡であれば生存時間ということになりますが、「イベント」は他にも、例えば製品の故障でも、経営学の会社の倒産でもいいわけです。

そういったものをまとめて「生存時間解析」と呼んでいます。

研究の終了時点で、死亡に関するデータが入手できないとか、治療の中止や転院などでデータが欠落する場合も多く、これを打ち切り (censoring) があるといいます。

打ち切りに対応した統計手法が生存時間解析なのです。

Rには生存時間解析用のパッケージがいくつもありますが、そのうちで最もよく使われているものの1つはsurvivalパッケージです。

生存時間データ

今回はRにもとから入っているkidneyデータを使ってみましょう。これは,ポータブル透析装置の利用が各種腎臓病の患者の生存時間にどう影響するかを検討するためのデータです。

いくつかデータを見てみます。

library(survival)
data(kidney)
head(kidney)

id time status age sex disease frail
1 1 8 1 28 1 Other 2.3
2 1 16 1 28 1 Other 2.3
3 2 23 1 48 2 GN 1.9
4 2 13 0 48 2 GN 1.9
5 3 22 1 32 1 Other 1.2
6 3 28 1 32 1 Other 1.2

各項目の意味はこちらに書かれています。

生存分析の手法は、時間以外の共変量 (複数の要因、説明変数) が生存時間に影響を与えるパラメーターとして考えるかどうかや、生存時間の分布にある特定の確率分布を仮定するかどうかで、

ノンパラメトリックモデル: 共変量も確率分布も仮定しない
セミノンパラメトリックモデル:共変量を導入する、分布を仮定しない
パラメトリックモデル:共変量を導入する、分布を導入する

と分類できます。このうちパラメトリックモデルはかなり強い制約となり、実際に使われることはかなり少ないので、この記事では残り2つを紹介します。

カプランマイヤー法

ノンパラメトリックモデルの代表がカプランマイヤー法です。surivivalパッケージには、ノンパラメトリック法による生存時間を当てはめる関数survfitがあります。

diseaseで群を分けて、カプランマイヤー法を当てはめてみます。

KM <- survfit (Surv (time, status) ~ disease, data = kidney)

カプランマイヤー法による生存曲線を書くにはこれをplot関数に渡すだけでできます。

plot(KM, xlab='Time', ylab='Survival Rate', col=c('red', 'green', 'blue', 'black'))
legend(300, 0.8, legend=c('Other', 'GN', 'AN', 'PKD'), lty=1, col=c('red', 'green', 'blue', 'black'))

群ごとの差を検定する打表的な手法がLog-Rank (ログランク) 検定で、これにはsurvdiff関数が使えます。

例えば、生存時間に男女差があるのかをログランク検定で調べてみます。

survdiff(Surv(time, status)~sex, data=kidney)

p値は0.004なので、生存時間に男女差がある (女性の方が長生き) と言えるでしょう。

コックス比例ハザードモデル

セミノンパラメトリックモデルの代表が、コックス比例ハザードモデルです。

病気の種類による影響をコックス比例ハザードモデルで調べてみます。

ここでは生存時間を性別と病気の種類で説明するモデルを作ってみました。

kidney.cox <- coxph (Surv(time, status)~sex + disease, data = kidney)
kidney.cox

構築したモデルによる生存時間の当てはめには、survfit関数を使うと便利です。

kidney.fit <- survfit (kidney.cox)
summary (kidney.fit)

survfitで推定された生存曲線と信頼区間をplot関数で図示することもできます。

plot (kidney.fit)

コックス比例ハザードモデルは、ハザード比が時間によらず一定であることを前提としています。survivalパッケージにはこの比例性を分析するcox.zph関数があります。

cox.zph (kidney.cox)

仮設が棄却されると、比例ハザードの仮定が満たされていない可能性があることを示唆しています。

関連図書

この記事に関連した内容を紹介している本はこちらです。

今日も【生命医学をハックする】 (@biomedicalhacks) をお読みいただきありがとうございました。

人気 月間2万アクセスの当サイトから無料ニュースレターを受け取る
この記事のタイトルとURLをコピーする
生命医学の知識や進歩を無料のニュースレターで

がんをはじめとする病気やよくある症状などの医学知識、再生医療などの生命科学研究は、研究手法が大きく前進したこととコンピューターの発達なども相まって、かつてないほどの勢いで知識の整備が進んでいます。

生命医学をハックするでは、主として医師や医学生命科学研究者ではない方や、未来を担う学生さんに向けた情報発信をしています。

2週間に1回のペースで、サイトの更新情報や、それらをまとめた解説記事をニュースレターとして発行しています。メールアドレスの登録は無料で、もちろんいつでも解除することができます。

サイト名の「ハックする」には、分かってきたことを駆使し、それを応用して、病気の治療や研究などにさらに活用していこうという意味があります。

生命医学について徐々に解き明かされてきた人類の英知を受け取ってみませんか?

この記事が気に入ったら
フォローしよう

最新情報をお届けします

Twitterでも情報発信中

こちらの記事もいかがですか?
ブログランキング参加中 (クリックしていただけると励みになります)