st003 - math-koubou.jp · stata 12 コマンド解説書...

25
ST003

Upload: others

Post on 24-Jan-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

ST003

Page 2: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata 12 コマンド解説書

【医療系機能編】生存時間分析 Vol-2

コマンド解説書 【医療系機能編】生存時間分析 Vol-1 (ST002) においては生存時間分析に関係する基本的な

コマンドの用法について記述を行いましたが、本解説書はそれを補完するもので次のような内容から構成され

ています。

• ノンパラメトリック系 – sts list, sts testコマンド

• セミパラメトリック系 – stcox/stcrreg用例追加、postestimation機能、比例ハザード性検定

• パラメトリック系 – streg用例追加、postestimation機能

• その他コマンド – stdescribe, stsum, stci, ltable

目  次

コマンド whitepaperタイトル ページ mwp番号

ltable 生命表 3 mwp-147

stci 生存時間の信頼区間 17 mwp-150

stcox stcox用例追加 30 mwp-153

stcox stcox用 postestimation機能 57 mwp-155

stcrreg stcrreg用例追加、postestimation機能 93 mwp-158

stdescribe 生存時間データの記述 102 mwp-148

stphplot 比例ハザード性検定 109 mwp-154

streg streg用例追加 118 mwp-156

streg streg用 postestimation機能 129 mwp-157

sts graph sts系グラフ出力 140 mwp-025

sts list sts系リスト出力 150 mwp-152

sts test sts系等値性検定 157 mwp-151

stsum 生存時間データに関する要約統計情報 177 mwp-149

本解説書は StataCorp社の許諾のもとに作成したものです。

c⃝ 2011 Math工房

一部 c⃝ 2011 StataCorp LP

Math工房 web: www.math-koubou.jp

email: [email protected]

Page 3: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

mwp-147

ltable - 生命表

ltableコマンドを使用すると生命表の作成とグラフ化を行うことができます。またグループ同士が等しいと

言えるかどうかに関する検定機能も提供されます。

1. 生命表

2. ltableの用例

Example 1

Example 2: intervals()オプション

Example 3: by()オプション

Example 4: Failure tables

Example 5: 5年生存確率

Example 6: ハザードテーブル

1. 生命表

生存関数をノンパラメトリックな形で推定する手法としては

◦ 生命表法◦ カプラン&マイヤー法

の 2つがあります。生命表 (life tables) 法の場合には時間を年や月に区切り、その区間内での生存/死亡状況

を調べて行きます。その歴史は古く、17世紀にまで遡るわけですが、計算機が発達した今日においては区間

への分割を必要としないカプラン&マイヤー法が一般的となっています。

Stataにおいてもノンパラメトリックな生存時間分析手法としてはカプラン&マイヤー法に基づく sts系のコ

マンドが通常用いられるわけですが、それとは別に生命表法に基づく推定手法も ltableコマンドとして実装

されています。ltableを使用する場合にはデータをあらかじめ stsetしておく必要はありません。

c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)

3

Page 4: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

2. ltableの用例

Example 1

マニュアルエントリ [ST] ltable の Example 1には Exampleデータセット rat.dtaを用いた用例が紹介さ

れています。

. use http://www.stata-press.com/data/r12/rat *1

このデータセットは発がん性物質 (carcinogen) が投与されたネズミが膣癌 (vaginal cancer) で死亡するまで

の日数を記録したもので、次のようなデータがベースとなっています。

グループ 1 143 164 188 188 190 192 206 209 213 216

216* 220 227 230 234 244* 246 265 304

グループ 2 142 156 163 198 204* 205 232 232 233 233

233 233 239 240 261 280 280 296 296 323

344*

ネズミには 2群があるわけですが、そのいずれの場合にも“*”の付されたデータが存在します。それは観察が

途中で打ち切られたことを意味しています。これがデータセット上でどのように記録されているかを確認する

意味で、先頭 5個のデータについてその内容をリスト出力しておきます。

. list in 1/5 *2

  5.     1   190      1

  4.     1   188      1

  3.     1   188      1

  2.     1   164      1

  1.     1   143      1

group     t   died

この場合、変数 diedによって個体が死亡したか、あるいは観察が途中で打ち切られた (censored) かが区別

されているわけです。

*1 メニュー操作:File ◃ Example Datasets ◃ Stata 12 manual datasets と操作、Survival Analysis and Epidemiological Tables

Reference Manual [ST] の ltable の項よりダウンロードする。*2 メニュー操作: Data ◃ Describe data ◃ List data

4

Page 5: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

グループ 1のネズミについて生命表を作成するには次のように操作します。

• Statistics ◃ Survival analysis ◃ Summary statistics, tests, and tables ◃ Life tables for survival data と

操作

• Mainタブ: Time variable: t

Failure variable: died

Type of result: Table (デフォルト)

Function: Survival table (デフォルト)

Time intervals: 空白(デフォルト)

図 1 ltableダイアログ- Mainタブ

• if/inタブ: If: group == 1

5

Page 6: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

  304   305         1        1      0     0.0000         .          .         .

  265   266         2        1      0     0.0785    0.0724     0.0056    0.2864

  246   247         3        1      0     0.1570    0.0931     0.0312    0.3721

  244   245         4        0      1     0.2355    0.1012     0.0751    0.4459

  234   235         5        1      0     0.2355    0.1012     0.0751    0.4459

  230   231         6        1      0     0.2943    0.1080     0.1105    0.5070

  227   228         7        1      0     0.3532    0.1125     0.1502    0.5648

  220   221         8        1      0     0.4120    0.1148     0.1937    0.6194

  216   217        10        1      1     0.4709    0.1151     0.2410    0.6713

  213   214        11        1      0     0.5263    0.1145     0.2872    0.7188

  209   210        12        1      0     0.5789    0.1133     0.3321    0.7626

  206   207        13        1      0     0.6316    0.1107     0.3790    0.8044

  192   193        14        1      0     0.6842    0.1066     0.4279    0.8439

  190   191        15        1      0     0.7368    0.1010     0.4789    0.8810

  188   189        17        2      0     0.7895    0.0935     0.5319    0.9153

  164   165        18        1      0     0.8947    0.0704     0.6408    0.9726

  143   144        19        1      0     0.9474    0.0512     0.6812    0.9924

   Interval     Total   Deaths   Lost    Survival    Error     [95% Conf. Int.]

                 Beg.                                 Std.

. ltable t died if group == 1, survival

図 1の操作では Time intervalsフィールドを空白のままとしたため、区間の長さとしては 1が仮定されていま

す。一方、Survivalと表示された生存率は該当区間の終了時点における値を意味します。従って 144日が経

過した時点における生存率は 94.7%ということになるわけです。

Example 2: intervals()オプション

評価版では割愛しています。

Example 3: by()オプション

評価版では割愛しています。

Example 4: Failure tables

評価版では割愛しています。

6

Page 7: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

Example 5: 5年生存確率

マニュアルエントリ [ST] ltable の Example 5には腎臓癌患者の 5年生存率を計算した例が紹介されていま

す。元となったデータは次に示すようなものです。

Year Interval Alive Deaths Lost Withdrawn

1946 0 − 1 9 4 1

1 − 2 4 0 0

2 − 3 4 0 0

3 − 4 4 0 0

4 − 5 4 0 0

5 − 6 4 0 0 4

1947 0 − 1 18 7 0

1 − 2 11 0 0

2 − 3 11 1 0

3 − 4 10 2 2

4 − 5 6 0 0 6

1948 0 − 1 21 11 0

1 − 2 10 1 2

2 − 3 7 0 0

3 − 4 7 0 0 7

1949 0 − 1 34 12 0

1 − 2 22 3 3

2 − 3 16 1 0 15

1950 0 − 1 19 5 1

1 − 2 13 1 1 11

1951 0 − 1 25 8 2 15

1946年から 1951年にかけての調査データであるわけですが、毎年腎臓癌患者のコホートが構成され追跡調査

が行われています。1946年のコホートの場合には 6年間にわたる追跡データが存在するわけですが、1947年

の場合には 5年、1948年の場合には 4年といった具合に追跡期間は年を追うごとに短くなって行く点に注意

してください。“Alive”というのはそれぞれの区間開始時点における生存者数、“Deaths”は該当調査期間中に

おける死亡者数を表します。一方、“Lost”は追跡不能となった患者数を、“Withdrawn”は調査終了時点で依

然生存していた患者数を意味します。

評価版では割愛しています。

7

Page 8: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

Example 6: ハザードテーブル

離散的なハザード関数は故障率 — ある時間間隔内で発生した failuresの数を時間間隔の幅で割った値(ただ

し途中打切りはないとする) — を意味します。生存率や累積故障率の場合には、“個体”レベル、すなわち時

間間隔を狭めて行って、それぞれの区間内に 1つの failureしか存在しないようにしたとしても、その値は意

味を持つわけですが、離散的ハザードの場合にはそれは言えません。すべての区間内に含まれる死亡数が 1

で、区間長が皆等しいとすると、ハザード関数の値は 1/∆tで一定値となってしまうからです。従って経験的

に意味を持つハザード関数は時間集積 (aggregation) を行った場合にのみ得ることができます。

評価版では割愛しています。

なお、関数として survivor または failure を選択した場合には結果をグラフ出力させることもできます。

次に示すのは生存率の推定値を信頼区間と共にプロットさせた例です。

評価版では割愛しています。

. ltable t d [fweight = pop], graph notable survival ci intervals(0(1)9)

¥

8

Page 9: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

mwp-153

stcox - Cox比例ハザードモデル

本 whitepaperは stcoxコマンド仕様解説 mwp-023 で十分カバーできなかった仕様、用例について補完する

ものです。

1. Tied failuresの扱い

2. 時間変動型係数モデル

3. ロバスト推定

4. 複数 failureデータ

5. ベースラインハザード関数

1. Tied failuresの扱い

stcoxダイアログのModelタブ上には tied failuresの扱いに関するフィールドがあります(図 1参照)。本セ

クションではこのフィールドに関して情報を補足します。

比例ハザードモデルにおいてはハザード関数は連続であることが仮定されるため、本来であれば生存時間にお

けるタイ (ties) は存在しないはずです。しかしデータセット上に記録される時間情報の形式により、現実的に

はタイは存在します。それに伴い部分尤度関数の修正が必要となります。詳細については英文マニュアルのセ

クション“Methods and formulas”をご参照ください。

図 1に示されているようにタイの扱いに関しては breslow/efron/exactm/exactpという 4種類のオプショ

ンが用意されています。デフォルトは breslowですが、データ中にタイが存在しない場合にはどれを選択し

ても結果に影響は生じません。

c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)

9

Page 10: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

図 1 stcoxダイアログ- Modelタブ

評価版では割愛しています。

2. 時間変動型係数モデル

stcoxコマンド仕様解説 mwp-023 のセクション 2.4においては Exampleデータセット drugtr2.dtaを用

い、共変量の効果が時間的に変化するモデルをフィットさせました。具体的に言うと [ST] stcox p129 の

(1)式において

x1 = age

z1 = drug1 z2 = drug2

g(t) = exp(−0.35t)

と置いたモデルをフィットさせたわけです。この場合、x1 は時間非依存の共変量として、z1, z2 は時間依存の

共変量として扱われたことになります。

10

Page 11: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

ところで [ST] stcox p129 の (1)式において xi = zi とすると係数値が時間的に変動するモデルを設定す

ることができます。今、簡単のために 1つの共変量しか含まないモデルを考えると (1)式は

h(t) = h0(t) exp{β1x1 + g(t)γ1x1}= h0(t) exp[{β1 + γ1g(t)}x1] (2)

のようになります。すなわち共変量 x1 に対する係数値が β1 + γ1g(t)という形で時間的に変化するモデルを

構成できたわけです。

評価版では割愛しています。

3. ロバスト推定

評価版では割愛しています。

4. 複数 failureデータ

生存時間分析において failure 事象が死亡の場合には、それぞれの被験者につき事象の発生回数は高々 1 回

です。しかし扱う事象によっては failure 事象が複数回発生することもあります。マニュアルエントリ [ST]

stcox の Example 7には Exampleデータセット mfail.dtaを用い、複数の failure事象を含むデータに対

して stcoxを適用した例が紹介されています。

評価版では割愛しています。

5. ベースラインハザード関数

評価版では割愛しています。

¥

11

Page 12: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

mwp-155

stcox postestimation - 推定後機能

stcox固有の postestimation機能としては

◦ 一致確率を計算する estat concordanceコマンド

◦ 生存関数や累積ハザード関数のグラフ化を支援する stcurveコマンド

があります。このうち stcurveについては [ST] stcurve (mwp-026 )の項をご参照ください。一方、predict

や marginsといった標準的な postestimationコマンドも stcox実行後に使用できますが、それらの一覧に

ついては [ST] stcox postestimation の項をご参照ください。

1. ベースライン関数 1.1 Example 1

1.2 Example 2

1.3 Example 3

2. ベースラインの適正化

3. 残差と診断指標 3.1 Example 4

3.2 Example 5

3.3 Example 6

3.4 Example 7

3.5 Example 8

4. 複数レコードデータ 4.1 Example 9

5. tvc()オプションの扱い

6. 共用 frailtyモデル 6.1 Example 10

7. estat concordance 7.1 Example 11

7.2 Example 12

補足1

1. ベースライン関数

stcox実行後 predictコマンドを使用するとベースライン生存関数やベースライン累積ハザード関数の推定

値を得ることができます。これらはすべての共変量の値が 0の場合の生存関数や累積ハザード関数に該当しま

す。具体的なオプションとしては次の 3つが用意されています。

c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)

12

Page 13: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

◦ basesurv – ベースライン生存関数 S0(t)の値を推定する。

◦ basechazard – ベースライン累積ハザード関数 H0(t)の値を推定する。

◦ basehc –それぞれの failure時点におけるベースラインハザード寄与値 (baseline hazard contribution)

を推定する*1。

理論上は S0(t) = exp{−H0(t)}という関係があるわけですが、basesurvと basechazardによって得られる

推定値は厳密にこの関係式に従うとは限りません。これは各々の推定法が別個のスキームに基づいているため

です。詳細は英文マニュアルのセクション“Methods and formulas”をご参照ください。

Coxモデルのフィットに際して strata()オプションが指定された場合、ベースライン関数の推定値はそれぞ

れの層ごとに算出されます。

1.1 Example 1 – ベースライン生存関数

[ST] stcox postestimation の Example 1にはベースライン生存関数 S0(t)の推定例が紹介されています。

使用するのは Exampleデータセット stan3.dtaです。

. use http://www.stata-press.com/data/r12/stan3 *2

(Heart transplant data)

このデータセットの構成と関係する変数の意味については mwp-153 のセクション 3をご参照ください。ここ

では最初にまず、age, posttran, surgery, yearを共変量とした形で stcoxを実行しますが、そのまま実行

すると年齢 0才、プログラムへの参加年が西暦 1900年である患者がベースライン関数の想定対象となってし

まいます。そこで age= 40、year= 70をベースラインとすべく値をシフトさせた変数 age40, year70を生

成した上で stcoxの実行を行います。

. generate age40 = age - 40 *3

. generate year70 = year - 70

. stcox age40 posttran surgery year70, nolog *4

Cox regression ­­ Breslow method for ties

id: id

analysis time _t: t1

failure _d: died

. stcox age40 posttran surgery year70, nolog

*1 このベースラインハザード寄与値というのは basesurv によって生成される生存関数に対する積極限推定量 (product-limit

estimator) を求める際に用いられる。*2 メニュー操作:File ◃ Example Datasets ◃ Stata 12 manual datasets と操作、Survival Analysis and Epidemiological Tables

Reference Manual [ST] の stcox postestimation の項よりダウンロードする。*3 メニュー操作: Data ◃ Create or change data ◃ Create new variable*4 メニュー操作:Statistics ◃ Survival analysis ◃ Regression models ◃ Cox proportional hazards model

13

Page 14: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

      year70    .8873107    .059808    ­1.77   0.076     .7775022    1.012628

     surgery    .3738278    .163204    ­2.25   0.024     .1588759       .8796

    posttran    .9787243   .3032597    ­0.07   0.945     .5332291    1.796416

       age40    1.030224   .0143201     2.14   0.032     1.002536    1.058677

          _t  Haz. Ratio   Std. Err.      z    P>|z|     [95% Conf. Interval]

Log likelihood  = ­289.53378 Prob > chi2     =    0.0015

LR chi2(4)      =     17.56

Time at risk    =      31938.1

No. of failures =           75

No. of subjects =          103 Number of obs   =       172

posttranや year70の有意性には疑問が残りますが、ともかくモデルがフィットできたので、ベースライン

生存関数の推定値を sという変数中に算出してみます。

• Statistics ◃ Postestimation ◃ Predictions, residuals, etc. と操作

• Mainタブ: New variable name: s

Produce: Baseline survivor function

図 1 predictダイアログ - Mainタブ

. predict s, basesurv

14

Page 15: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

このデータセットは複数レコード型の構成を取っているわけですが、その各々のレコードごとに sの値が算出

されています。その最小値と最大値を確認しておくと次のようになります。

. summarize s *5

           s        172    .6291871    .2530009    .130666   .9908968

    Variable        Obs        Mean    Std. Dev.       Min        Max

. summarize s

sの内容を一部リスト出力してみますが、最初にまずデータの並びを analysis time tと患者 ID idによって

ソートします。

. sort t id *6

. list t id d s in 1/20 *7

 20.  5   70    0   .9264087

 19.  5   38    0   .9264087

 18.  4   94    0   .9356873

 17.  4   72    0   .9356873

 16.  3   68    0   .9356873

 15.  3   60    0   .9356873

 14.  3   54    1   .9356873

 13.  3   42    1   .9356873

 12.  3   23    0   .9356873

 11.  3    6    1   .9356873

 10.  2   95    0   .9633915

  9.  2   75    1   .9633915

  8.  2   61    1   .9633915

  7.  2   46    0   .9633915

  6.  2   43    1   .9633915

  5.  2   39    0   .9633915

  4.  1   45    0   .9908968

  3.  1   20    0   .9908968

  2.  1   15    1   .9908968

  1.  1    3    0   .9908968

_t   id   _d          s

*5 メニュー操作: Statistics ◃ Summaries, tables and tests ◃ Summary and descriptive statistics ◃ Summary statistics*6 メニュー操作: Data ◃ Sort ◃ Ascending sort*7 メニュー操作: Data ◃ Describe data ◃ List data

15

Page 16: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

この出力からもわかるように sの形状はステップ関数となります。なお、t = 4において sの値が変化してい

ないのは、その時点で failure( d= 1)が発生していないためです。この sの値を tと対向させてプロットす

ればベースライン生存関数のグラフが作成できます。

• Graphics ◃ Twoway graph (scatter, line, etc.) と操作

• Plotsタブ上で Createボタンをクリック、表示される Plot 1ダイアログ上で次の設定を行う。

◦ Choose a plot category and type: Basic plots (デフォルト)

◦ Basic plots: Line

◦ Y variable: s

◦ X variable: t

◦ Line properties: Connecting method: Stairstep

. twoway (line s _t, connect(stairstep))

ここでは predictと twowayコマンドの併用という形でベースライン生存関数のプロットを行ったわけです

が、stcurveを用いた方がより簡便にグラフ作成が行えます([ST] stcurve (mwp-026 ) 参照)。また

stcurveの場合にはベースラインに限らず、任意の共変量の値についてプロットを行うことができる点もその

強みと言えます。

16

Page 17: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

1.2 Example 2 – ベースライン累積ハザード関数

評価版では割愛しています。

1.3 Example 3 – Baseline hazard contributions

評価版では割愛しています。

2. ベースラインの適正化

評価版では割愛しています。

3. 残差と診断指標

評価版では割愛しています。

3.1 Example 4 – Cox-Snell残差

[ST] stcox postestimation の Example 4には Cox-Snell残差に関する用例が紹介されています。使用す

るのは Exampleデータセット drugtr.dtaです。

. use http://www.stata-press.com/data/r12/drugtr, clear *8

(Patient Survival in Drug Trial)

このデータセットにはある薬剤の効果に関する 48件のデータが患者当り単一のレコード形式で記録されてい

ます。

. list studytime age drug died if n <= 4 | n >= 45, abbreviate(9) separator(4)

 48.        39    52      1      0

 47.        35    48      1      0

 46.        34    62      1      0

 45.        33    60      1      1

  4.         3    52      0      1

  3.         2    59      0      1

  2.         1    65      0      1

  1.         1    61      0      1

studytime   age   drug   died

*8 メニュー操作:File ◃ Example Datasets ◃ Stata 12 manual datasets と操作、Survival Analysis and Epidemiological Tables

Reference Manual [ST] の stcox postestimation の項よりダウンロードする。

17

Page 18: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

この場合、drug= 1が薬剤を投与した患者を表し、0はプラセボ (placebo) を意味します。また、studytime

は生存月数を、age は調査開始時点における患者の年齢を表す変数です。データは studytime を時間変数、

diedを failure変数とする形で既に stsetされています。

. st

 exit on or before: failure

obs. time interval: (0, studytime]

     failure event: died != 0 & died < .

­> stset studytime, failure(died)

. st

stset情報の出力を抑止した上で、age, drugを共変量とする形で stcoxを実行します。

. stset, noshow

. stcox age drug, nolog

        drug    .1048772   .0477017    ­4.96   0.000     .0430057    .2557622

         age    1.120325   .0417711     3.05   0.002     1.041375     1.20526

          _t  Haz. Ratio   Std. Err.      z    P>|z|     [95% Conf. Interval]

Log likelihood  = ­83.323546 Prob > chi2     =    0.0000

LR chi2(2)      =     33.18

Time at risk    =          744

No. of failures =           31

No. of subjects =           48 Number of obs   =        48

Cox regression ­­ Breslow method for ties

. stcox age drug, nolog

この状態で predictコマンドを用い Cox-Snell残差の算出を行います。

• Statistics ◃ Postestimation ◃ Predictions, residuals, etc. と操作

• Mainタブ: New variable name: cs

Produce: Cox-Snell residuals

18

Page 19: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

図 2 predictダイアログ - Mainタブ

. predict cs, csnell

この操作によって Cox-Snell 残差が変数 cs 中に算出されたわけです。このとき Cox 回帰モデルがデータに

フィットしているなら、この残差はハザード比が 1 の標準打切り指数分布 (standard censored exponential

distribution) に従うことになります。そこで Cox-Snell残差を時間変数と見立てて累積ハザード関数の経験

的推定値 (empirical estimate) を算出することにより、モデルのフィットが検証できることになります。その

ような累積ハザード値を csと対向させてプロットした場合、モデルがデータにフィットしているなら、それ

らの点は傾き 1の直線上に乗ることが期待されます。

評価版では割愛しています。

> " 2 "Ref line"))

. twoway (line H cs, sort) (line cs cs, sort lpattern(dash)), legend(order(1 "H

19

Page 20: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

結果からするとフィットはなかなか良好であることがわかります。

3.2 Example 5 – Martingale残差

評価版では割愛しています。

3.3 Example 6 – Deviance残差

評価版では割愛しています。

3.4 Example 7 – DFBETA

評価版では割愛しています。

3.5 Example 8 – 尤度変位値、LMAX値

評価版では割愛しています。

4. 複数レコードデータ

評価版では割愛しています。

4.1 Example 9 – 複数レコードデータ

評価版では割愛しています。

20

Page 21: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

5. tvc()オプションの扱い

評価版では割愛しています。

6. 共用 frailtyモデル

評価版では割愛しています。

6.1 Example 10 – effectsオプション

評価版では割愛しています。

7. estat concordance

評価版では割愛しています。

7.1 Example 11 – Harrellの C

評価版では割愛しています。

7.2 Example 12 – Gonen/HellerのK

評価版では割愛しています。

補足1 – グラフ作成コマンド操作

評価版では割愛しています。

¥

21

Page 22: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

mwp-154

stphplot/stcoxkm - 比例ハザード性の検定

Stataには Cox比例ハザードモデルの前提となる比例ハザード性をチェックするためのコマンドが 3種類用

意されています。

◦ stphplot – 生存関数の log-logプロット

◦ stcoxkm – Kaplan-Meier生存関数のプロット

◦ estat phtest – Schoenfeld残差による検定

という 3つのコマンドがそれですが、本 whitepaperではこれらの用法を紹介します。

1. 比例ハザード性の検定

2. stphplot/stcoxkmの用例

3. estat phtestの用例

1. 比例ハザード性の検定

Cox比例ハザードモデルではハザード比 (hazard ratio) が時間的に一定であることが仮定されます。今、癌

患者のグループに対して 10年間にわたる追跡調査が行われたとします。注目する試験療法が施されなかった

グループの場合、その治療が施されたグループに比べ死に至るハザードが 2倍 (HR= 2.0)であるとするなら、

その比率は 10年間のどの時点においても変らないとするのが比例ハザードモデルの前提となります。従って

比例ハザード性が成り立つことを検証しておくことは stcoxコマンドによる分析を進めて行く上で大切なポ

イントであると言えます。仮にこの前提が主張できない場合には別のモデル(例えば層化 Coxモデルや時間

変動型共変量など)の検討が必要となります。

stphplotと stcoxkmの場合、その検証はグラフィカルな形で行われます。従って判定は多分に主観に依存

したものとなりますが、十分有用なツールであると言えます。

c⃝ Copyright Math工房; 一部 c⃝ Copyright StataCorp LP (used with permission)

22

Page 23: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

stphplotの場合には共変量のカテゴリごとに、− ln{− ln(survival)}の値が ln(analysis time)と対向した形

でプロットされます。このためグラフはしばしば“log-log”プロットと呼ばれます。プロットされた折れ線が

平行な関係にあれば比例ハザード性を主張できるため、当該変数を共変量とする形で生存関数をモデル化する

ことは妥当であると判断されるわけです。

stcoxkmの場合には、観測値に基づく Kaplan-Meier生存曲線が Coxの予測曲線と対比した形でプロットさ

れます。両者が近いものであるときには比例ハザード性が妥当であると判断されることになります。

比例ハザード性に関する著名な検定の多くは、Schoenfeld残差を時間に対して一般化線形回帰したときの傾

きが 0と言えるか否かに着目するものです。estat phtestの場合もその傾きが 0であるという帰無仮説に

対して検定が行われるわけですが、それはハザード比の対数値が時間によらず一定であることを検定すること

に他なりません。この帰無仮説が棄却し得るということは比例ハザード性からの離反を意味することになり

ます。

2. stphplot/stcoxkmの用例

マニュアルエントリ [ST] stcox PH-assumption tests の Example 1には stphplot/stcoxkmの用例が

掲載されています。使用する Exampleデータセットは leukemia.dtaです。

. use http://www.stata-press.com/data/r12/leukemia *1

(Leukemia Remission Study)

このデータセット中には白血病 (leukemia) の寛解 (remission) 状態がどれだけ持続したかについて、42人の

患者に関するデータが記録されています。次に示すのはその一部をリスト出力したものです。

. list weeks relapse treatment1 if n <= 3 | n >= 40,

> abbreviate(10) sepby(relapse) nolabel *2

 42.    35         0            1

 41.    34         0            1

 40.    32         0            1

  3.     2         1            0

  2.     1         1            0

  1.     1         1            0

weeks   relapse   treatment1

変数 weeksは寛解の持続期間を表し、relapseは白血病が再発 (relapse) したか否かを示す指標変数(ダミー

変数)です。42人の患者のうち半数には新たな試薬 Aが投与され (treatment1= 1)、残りの半数について

は標準的な薬剤が投与されています。

*1 メニュー操作:File ◃ Example Datasets ◃ Stata 12 manual datasets と操作、Survival Analysis and Epidemiological Tables

Reference Manual [ST] の stcox PH-assumption tests の項よりダウンロードする。*2 メニュー操作: Data ◃ Describe data ◃ List data

23

Page 24: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

このデータセットは生存時間データとして初期設定されていないので、最初に stsetを実行します。

. stset weeks, failure(relapse) noshow *3

last observed exit t =        35

earliest observed entry t =         0

      541  total analysis time at risk, at risk from t =         0

       30  failures in single record/single failure data

       42  obs. remaining, representing

        0  exclusions

       42  total obs.

 exit on or before: failure

obs. time interval: (0, weeks]

failure event: relapse != 0 & relapse < .

. stset weeks, failure(relapse) noshow

このデータセットに対する Cox比例ハザードモデルにおいて、共変量としては treatment1、すなわち薬剤

A(treatment1= 1)か標準的薬剤 (treatment1= 0)かの違いに着目するわけですが、その場合、比例ハザー

ド性が仮定できるかどうかをまず stphplotによってチェックしてみます。

• Statistics ◃ Survival analysis ◃ Regression models ◃ Graphically assess proportional-hazards assumption

と操作

• Mainタブ: Fit separate Cox models: • (デフォルト)Independent variable: treatment1

図 1 stphplotダイアログ - Mainタブ

*3 メニュー操作:Statistics ◃ Survival analysis ◃ Setup and utilities ◃ Declare data to be survival-time data

24

Page 25: ST003 - math-koubou.jp · Stata 12 コマンド解説書 【医療系機能編】生存時間分析Vol-2 コマンド解説書【医療系機能編】生存時間分析Vol-1 (ST002)

Stata12 whitepapers

. stphplot, by(treatment1)

2本の折れ線は平行しており、比例ハザード性に関する仮定は妥当であると判断できます。次に stcoxkmを

実行してみます。

評価版では割愛しています。

3. estat phtestの用例

評価版では割愛しています。

¥

25