ST003 - math-koubou.jp · Stata 12 コマンド解説書...
Transcript of ST003 - math-koubou.jp · Stata 12 コマンド解説書...
ST003
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]
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Stata12 whitepapers
. stphplot, by(treatment1)
2本の折れ線は平行しており、比例ハザード性に関する仮定は妥当であると判断できます。次に stcoxkmを
実行してみます。
評価版では割愛しています。
3. estat phtestの用例
評価版では割愛しています。
¥
25