Excel

生存曲線とカプラン・マイヤー法

生存曲線とは

生存曲線とは,イベント発生までの時間と生存確率との関係を表した図になります.

イベント発生までの時間とは具体的には,死亡するまでの時間や顧客の離反,機械が故障するまでの時間を意味します.

生存曲線とは

カプラン・マイヤー法と打ち切りデータ

生存曲線を推定する方法として,カプラン・マイヤー法がよく用いられます.カプラン・マイヤー法では打ち切りデータを扱うことができます.

打ち切りデータとは解析時点でイベントが発生していないデータになります.途中からデータを得られなくなった場合のデータも打ち切りデータとして扱うことができます.

カプラン・マイヤー法と打ち切りデータ

カプラン・マイヤー法では生存確率を以下の式を用いて計算します.

カプラン・マイヤー法の生存率の定義式

Πは総乗記号で時点tiがtjより小さい範囲で変数(期別生存率)の積を求めます.niは時点ti直前の生存数,diは時点tiのイベント発生数になります.

》カプラン・マイヤー法を用いた生存時間解析アプリ

生存曲線の見方

生存曲線の見方

生存曲線の生存確率は,階段グラフの段差が下がった値で読み取ります.25日経過時点での生存確率は0.86とグラフから読み取ることができます.

生存確率が50%の経過時間をMST(中央生存時間)と言います.

打ち切りデータは生存曲線上に”ひげ”として表すことが多く,論文で生存曲線を添付する場合は図示する必要があります.研究初期の時点で打ち切りデータが多い場合は,フォローアップがなされていないもしくは研究体制に問題のあると考えることができます.

生存曲線において初期の時点で打ち切りデータが多い場合

生存曲線の比較方法

複数の生存曲線の比較

複数のグループの生存確率を比較する場合は,ログランク検定もしくは一般化ウィルコクソン検定を行います.帰無仮説を「比較する生存曲線は等しい」と仮定して有意差がある場合に,生存曲線に差があるつまり「比較したグループに差がある」と判定することができます.どちらの検定もノンパラメトリック検定になります.

ログランク検定と一般化ウィルコクソン検定の違いは補足①で解説しています.

》仮説検定とは

正確に生存時間解析を行いたい

Excelより簡単・正確に生存曲線の作成,ログランク検定・一般化ウィルコクソン検定を行うアプリ(StaatApp)を販売しています.

詳しくは以下のページで紹介しています.

》StaatAppで行う生存時間解析
》統計解析アプリStaatAppとは

統計解析アプリStaatApp

Excelを用いたカプラン・マイヤー法

Excelを用いたカプラン・マイヤー法の具体的な計算方法を紹介します.

以下のような表を作成して生存確率Sを求めます.
※ 説明のため見切れていますがサンプルサイズは30で計算しています.

Excelを用いたカプラン・マイヤー法の計算例

各セルの入力式は以下のようになります.

・G3セル:=COUNTIFS($C$3:$C$32,$F3,$D$3:$D$32,”=1″)
・H3セル:=COUNTIFS($C$3:$C$32,$F3,$D$3:$D$32,”=0″)
・I4セル:=I3-G3-H3 ※ I3セルはサンプルサイズ(n=30)を入力します.
・J3セル:=(I3-G3)/I3
・K4セル:=K3*J4

計算手順の詳細を解説します.

① 元データの作成【B-D列】

サンプル(被験者)ごとの経過日数とイベント発生有無に関するデータを作成します.観測期間内にイベントが発生した場合はD列の値を”1”に,打ち切りデータとする場合は”0”にします.

② 経過日数による並び替えと重複削除【F列】

経過日数ごとにイベント発生数と打ち切りデータ数をカウントするために,C列の値を整形します.

C列の値をF列にコピー後,「並び替え」機能(データ範囲を選択して右クリック)で昇順に並び替えます.F列の経過日数が並び替わったら「重複の削除」機能を使って重複した経過日数を削除します.

重複削除の選択

③ 経過日数ごとのイベント発生数を求める【G列】

経過日数ごとのイベント発生数をCOUNTIFS関数を用いて計算します.

COUNTIFS関数の書き方:COUNTIFS(“検索条件の範囲1″,”検索条件1″,”検索条件の範囲2″,”検索条件2”)

ここでは,C列とF列の経過日数が一致かつD列の値が”1″であるセルをカウントします.

④ 経過日数ごとの打ち切りデータ数を求める【H列】

経過日数ごとの打ち切りデータ数をCOUNTIFS関数を用いて計算します.計算方法は③と同様でD列の値が”0”のセルをカウントします.

⑤ 生存数を求める【I列】

生存数は前の経過日数時点での生存数から,前の経過日数時点でのイベント発生数と打ち切りデータ数を引いた値になります.

列の最初のセル(I3)にはサンプルサイズを入力します.次のセルから以下の式に従って数式を入力します.

生存数 = 前の経過日数時点(1行上のセル)での生存数 - 前の経過日数時点でのイベント発生数 - 前の経過日数時点での打ち切りデータ数

⑥ 生存確率の変数(期別生存率)を求める【J列】

生存確率を求める際に必要な変数(期別生存率)を計算します.ここまでの計算で求めたイベント発生数dと生存数nを用いて計算します.

⑦ 生存確率を求める【K列】

⑥で求めた値を総乗することで生存確率を計算します.

列の最初のセル(I3)は左隣りのセル(J3)の値をコピーします.次のセルからはK4セルの入力式例に従って計算式を入力します.

以上がExcelを用いた生存確率の計算方法です.

Excelを用いた生存曲線の作成方法

Excelの散布図を用いた生存曲線の作成方法を解説します.以下のように,経過日数ごとの生存確率が求められているとします.(説明の簡略化のため,カプラン・マイヤー法で使用したデータとは異なります.)

生存曲線の例題データ
① 生存曲線の作成方法

Excelでは階段グラフを直接作成することができないため,同じ経過日数で段差の上下の値を用意する必要があります.

以下のように経過日数の値を下の行にコピペします.生存確率は値が1つずれるようにコピペします.ずれた分の空白のセルには”1”を入力します.

生存曲線の作り方

次に生存確率の列を選択して,「並び替え」機能を用いて降順で並び替えを行います.

並び替えた後,先頭行にセルを挿入して経過日数には”0”,生存確率には”1”を入力します.

入力した値を選択して,グラフ作成ツールから「散布図(直線)」を選択します.以下のような階段グラフが出力されます.

Excelを用いた生存曲線の作成例
② 打ち切りデータの描画

生存曲線では打ち切りデータも図示することが多いです.Excelでは打ち切りデータを図示するために,以下のようなデータを作成します.

Excelを用いた打ち切りデータの作成例

入力式は以下になります.

・O3セル:=NA()
・O4セル:=IF(AND(M4=M5,N4=N1),N4,NA())

O4セル以下は,O4セルの数式をコピペします.

IF関数を用いて打ち切りデータの判定を行い,打ち切りデータがある場合は生存曲線上にプロットするために該当する生存確率を入力します.打ち切りデータがない場合は,プロットを表示させないためにNA関数を用いて”#N/A”を入力します.

打ち切りデータを作成したら,①で作成したグラフを右クリックして「データの選択」を選択します.以下のウインドウの「追加」を選択して打ち切りデータを追加します.

以下のように経過日数のデータ範囲を「系列Xの値」に,打ち切りデータの範囲を「系列Yの値」に入力します.

入力して「OK」を選択すると打ち切りデータが生存曲線上にプロットされます.

「グラフエリアの書式設定」→「系列”打ち切り w”」→「マーカー」→「マーカーのオプション」から任意のマーカーに変更することが可能です.作成したグラフは以下のようになります.

Excelを用いた生存曲線と打ち切りデータの作成例

参考までに,カプラン・マイヤー法で扱ったデータの生存曲線は以下のようになります.

補足① ログランク検定と一般化ウィルコクソン検定

ログランク検定と一般化ウィルコクソン検定はどちらも全ての時間に対して,カイ二乗検定を行いその総和を用いる検定方法になります.違いは一般化ウィルコクソン検定が,経過時間が小さい場合に重みをつけて検定を行っている点です.

ログランク検定と一般化ウィルコクソンの違い

ログランク検定と一般化ウィルコクソン検定には以下のような特徴があります.

(a)の場合は,ログランク検定の方が一般化ウィルコクソン検定より検出力が高い.
(b)の場合は,一般化ウィルコクソン検定の方がログランク検定より検出力が高い.
(c)の場合は,どちらの方法でも検出力は低い.

補足② 要因が複数ある場合

ログランク検定や一般化ウィルコクソン検定は,生存時間データに影響を与える要因(変量)が1つの場合の解析方法になります.

複数要因ある場合は生存時間データのための多変量解析を行う必要があります.生存時間データのための多変量解析であるCox比例ハザード回帰は以下のページで解説しています.

》Cox比例ハザード回帰とは