nlmixedプロシジャを用いた生存時間解析 · 2018-07-05 · 要旨:...
TRANSCRIPT
NLMIXEDプロシジャを用いた生存時間解析NLMIXEDプロシジャを用いた生存時間解析
伊藤要二アストラゼネカ株式会社
臨床統計 プログラミング グル プ臨床統計・プログラミング・グループ
S i l l i iSurvival analysis using PROC NLMIXEDPROC NLMIXED
Yohji ItohClinical Statistics & Programming Group,
AstraZeneca KK
要旨:
NLMIXEDプロシジャの 尤推定の機能を用いて、指数分布 Weibull加速モデル Cox比例ハザード指数分布、Weibull加速モデル、Cox比例ハザード
モデルの場合を例として、生存時間解析を試みた。そして、LIFEREGプロシジャやPHREGプロシジャ
と同等な解析結果を得ることが可能であることを示した。このことを通して、生存時間解析の習得及び応用においてNLMIXEDプロシジャが強力な道具と応用においてNLMIXEDプロシジャが強力な道具となり得ることを示した。
キ ワ ド 尤法 指数分布 W ib ll加速モデルキーワード: 尤法、指数分布、Weibull加速モデル、Cox比例ハザードモデル
2
目的
• 生存時間解析のような複雑な統計解析でもSASが全部やってくれる
• SASの計算内容の詳細を必ずしも理解する必要がないSASの計算内容の詳細を必ずしも理解する必要がない
• その理論や計算アルゴリズムがなかなか身に付かない
• 自分でIMLなどを用いてプログラムを書くことが望ましい• 自分でIMLなどを用いてプログラムを書くことが望ましい
• でも、 尤法のアルゴリズムを自分で書くのはかなり面倒
NLMIXEDプロシジャが 般的な 尤推定の計算ル チンを提供• NLMIXEDプロシジャが一般的な 尤推定の計算ルーチンを提供
発表の目的:
• 幾つかのモデルを例として、生存時間解析のプログラムをNLMIXEDプロ
シジャを用いて書くことができることを示す
• NLMIXEDプロシジャが生存時間解析を含む統計計算において非常に強
力な道具であることを理解してもらうこと
3
発表内容
• 生存時間解析における 尤推定
• 指数分布
• Weibull分布、及びその別の形分布、 そ 別
• Weibull加速モデル
• Cox比例ハザードモデル、タイのない場合 (タイのある場合は論文参照)
• まとめまとめ
4
生存関数及び確率密度関数
生存時間Tが連続の場合のみを考える。
• 確率密度関数 Probability density function:• 確率密度関数 Probability density function:f (t; θ ), t 0
• 生存関数 Survival function:
= > = ( ; ) ( ; ) 1 ( ; )t
S t P T t f s dsθ θ θ
ここでθは分布のパラメタ
= > = − 0( ; ) ( ; ) 1 ( ; )S t P T t f s dsθ θ θ
ここでθは分布のパラメタ
5
データ及び尤度デ タ• データ
• 生存時間 : t1, t2, t3, …, tn (打切り例の場合は 終生存確認時間)
イベ ト情報 δ δ δ δ• イベント情報: δ1, δ2, δ3, …, δn ,
イベントありなら、 δi = 1
打切りなら δ 0打切りなら、 δi = 0
• i 番目の症例の尤度への寄与 Li
• イベント発現例: 確率密度: Li = f (ti ; θ )
• 打ち切り例: ti まで生存したという情報を利用: Li = S (ti ; θ )
• 尤度: これらを全症例分かけ合わせて
i i
n n
i i iL f t S t 1( ) [ ( ; ) ( ; ) ]−=∏ ∏θ θ θδ δ
• 対数尤度: これを対数変換して
i i1 1= =
n n
l L f t S t( ) l ( ) [ l ( ) (1 )l ( )] θ θ θ θδ δ6
i i i i ii i
l L f t S t1 1
( ) log ( ) [ log ( ; ) (1 )log ( )]= =
= = + − θ θ θ θδ δ
尤推定
• 生存時間の
• 生存関数数
• 確率密度関数
の2つさえ定義されれば、対数尤度が定義され、あとは 尤法を適用するだけ
• NLMIXEDプロシジャを利用できる
• 本来は非線形混合効果モデルのためのプロシジャ。
か 尤推定 ため 般的な機能が利 能しかし、 尤推定のための一般的な機能が利用可能
• NLMIXEDプロシジャのMODELステートメントに
MODEL dependent-variable ~ general(LL)を指定。ここで、LLは ユーザー定義の対数尤度関数
7
指数分布 Exponential distribution
• ハザード(定数): h t( ) = λ• ハザード(定数):
生存関数
h t( ) = λ
• 生存関数: tS t e( ) −= λ
• 確率密度関数: tf t e( ) −= λλ
(以下、関数の括弧の中のパラメタは省略)
8
PROC NLMIXEDによる指数分布の当てはめ
data ex1;input t event;cards;3 16 06 012 124 1
「df=1e8」は、t分布ではなく、正規分布に基づく推測をするために付加
48 1;proc nlmixed data=ex1 df=1e8;proc nlmixed data=ex1 df=1e8;parms lambda=1.;if event=1 then lh=lambda*exp(-lambda*t); ← tf t e( ) −= λλ
else lh= exp(-lambda*t);ll=log(lh);model t~general(ll);
←
← 対数尤度
( ) −= λtS t e
9
model t~general(ll);run;
指数分布: PROC NLMIXEDからの出力
Parameter EstimatesParameter Estimates
StandardParameter Estimate Error DF t Value Pr > |t|Parameter Estimate Error DF t Value Pr > |t|
lambda 0.04301 0.02151 1E8 2.00 0.0455lambda 0.04301 0.02151 1E8 2.00 0.0455
10
Weibull分布
• ハザード関数:λ: scale parameter,
1 ( )h t t γλγ −=
p ,γ : shape parameter
• 生存関数: S t t( ) exp( )= − γλ
• 確率密度関数: 1 ( ) exp( )f t t tγ γλγ λ−= −
γ = 1の場合は、h (t) = λ となり、これは指数分布となる。γ 場合 、 ( ) り、 指数分布 。
11
Weibull分布の当てはめPROC NLMIXEDproc nlmixed data=ex1 df=1e8;parms lambda=1 gamma=1;
PROC NLMIXED
parms lambda=1 gamma=1;if event=1 then lh=lambda*gamma*t**(gamma-1)
*exp(-lambda*t**gamma);else lh=exp(-lambda*t**gamma); S t t( ) ( )γλ
← 1f t t t( ) exp( )−= −γ γλγ λ
else lh=exp(-lambda*t**gamma);ll=log(lh);model t~general(ll);
S t t( ) exp( )= − γλ←
run;
Parameter EstimatesOutput
Parameter Estimates
StandardParameter Estimate Error DF t Value Pr > |t|Parameter Estimate Error DF t Value Pr > |t|
lambda 0.01612 0.02856 1E8 0.56 0.5724gamma 1.2916 0.4950 1E8 2.61 0.0091
12
gamma 1.2916 0.4950 1E8 2.61 0.0091
Weibull分布の別の形
• 教科書によく載っているWeibull分布の生存関数:
(1)S t t( ) exp( )= − γλ ( )
• この形では拡張性に乏しいので、変数およびパラメタの変換を行う:
S t t( ) exp( )λ
すなわち、
t ( ) 1/ ( / )λ
w tlog( ), 1/ , (log ) /= = = −σ γ μ λ σ
• これらを (1) に代入し、対数生存時間 w を用いた生存関数は
t wexp( ), 1/ , exp( / )= = = −γ σ λ μ σ
• これよりw の確率密度関数は
WwS w w 1/( ) exp{ exp( / )[exp( )] } exp[ exp( )]−= − − = −σ μμ σ
σ• これよりw の確率密度関数は
Ww wf w 1( ) exp( )exp[ exp( )]− −= −μ μ
σ σ σ13
σ σ σ
Weibull分布の別の形の当てはめ
proc nlmixed data=ex1 df=1e8;parms mu=1 sigma=1; 1 w wf ( ) ( ) [ ( )]− −μ μ
PROC NLMIXED
parms mu=1 sigma=1;w=log(t);if event=1 then lh=1/sigma*exp((w-mu)/sigma)
*exp(-exp((w-mu)/sigma));
1W
w wf w( ) exp( )exp[ exp( )]= −μ μσ σ σ
*exp(-exp((w-mu)/sigma));else lh=exp(-exp((w-mu)/sigma));
ll=log(lh);ll=log(lh);model t~general(ll);
run; WwS w( ) exp[ exp( )]−= − μ
σ
proc lifereg data=ex1;PROC LIFEREGproc lifereg data=ex1;model t*event(0)= /d=weibull;
run;
14
run;
Weibull分布の別の形: 結果の比較
Parameter Estimates
PROC NLMIXEDからのOutput
StandardParameter Estimate Error DF t Value Pr > |t|
mu 3.1956 0.3976 1E8 8.04 <.0001sigma 0.7742 0.2967 1E8 2.61 0.0091
Analysis of Parameter Estimates
PROC LIFEREGからのOutput
Standard 95% Confidence Chi-Parameter DF Estimate Error Limits Square Pr > ChiSq
Intercept 1 3.1956 0.3976 2.4163 3.9749 64.60 <.0001Intercept 1 3.1956 0.3976 2.4163 3.9749 64.60 <.0001Scale 1 0.7742 0.2967 0.3653 1.6407Weibull Scale 1 24.4243 9.7111 11.2043 53.2425
15
Weibull Shape 1 1.2916 0.4949 0.6095 2.7372
加速モデル Accelerated failure time (AFT) model; 一般論
• 2つの治療群があり、それぞれの生存関数をS0(t) およびS1(t) と表わすとする。この2つの生存関数の間に
という関係が成り立つと仮定する。a は加速パラメタ。
= ⋅ >1 0( ) ( ), 0S t S t a a
• 通常は、 a = exp(−β ) とおき、先ほどの式は
( ) ( exp( ))S t S t β β¥< <¥
となり、β が推定すべきパラメタとされる。
治 変
1 0( ) ( exp( )), S t S t β β= ⋅ - -¥< <¥
• 治療群を表わす変数をz とし、z = 0は標準治療群z =1は新規治療群z =1は新規治療群
を表わすものとすると、zが与えられた場合の生存関数は
0 0( ; ) ( exp( )) ( logexp( )), 0, 1tS t z S t z S zzβ β= ⋅ - = =-
16
0 0 ( ; ) ( exp( )) ( logexp( )), 0, 1tS t z S t z S zzβ β
Weibull加速(AFT)モデル
• Weibull分布を仮定した場合
先ほどは、
w = log t
によって変数変換したw についての生存関数、確率密度関数を考えたが、
その代わりに、それに群の効果を線形の形で付加したその代わりに、それに群の効果を線形の形で付加した
w = log t −β z, z = 0,1
を用いると、先述のものと全く同じ生存関数、確率密度関数を用いることが
できるできる。
17
Weibull AFT modelの数値例
data ex2;input group t event;cards;cards;0 2 10 5 00 5 00 11 10 15 10 21 10 21 11 3 11 6 11 6 11 12 01 24 11 48 11 48 1;
18
Weibull AFT modelの数値例
proc nlmixed data=ex2 df=1e8;
PROC NLMIXED
先述のプログラムにproc nlmixed data=ex2 df=1e8;parms mu=1 sigma=1 beta=0;w=log(t) - beta * group;if event=1 then lh=1/sigma*exp((w-mu)/sigma)
先述のプログラムに「- beta * group」及びbetaの初期値が追加されているだけif event=1 then lh=1/sigma*exp((w-mu)/sigma)
*exp(-exp((w-mu)/sigma));else lh=exp(-exp((w-mu)/sigma));
追加されているだけで、他は全く同じ
else lh=exp(-exp((w-mu)/sigma));ll=log(lh);model t~general(ll);
run;run;
PROC LIFEREG先述のプログラムのproc lifereg data=ex2;
model t*event(0)=group /d=weibull;run;
先述のプログラムのモデルにgroupが追加されただけ
19
run;
Weibull AFT modelの結果の比較
StandardPROC NLMIXEDからのOutput
Parameter Estimate Error DF t Value Pr > |t|
mu 2.6155 0.3665 1E8 7.14 <.0001sigma 0.7315 0.2065 1E8 3.54 0.0004beta 0.5940 0.5196 1E8 1.14 0.2530
Standard 95% Confidence Chi-Parameter DF Estimate Error Limits Square Pr > ChiSq
PROC LIFEREGからのOutput
Parameter DF Estimate Error Limits Square Pr > ChiSq
Intercept 1 2.6155 0.3665 1.8973 3.3338 50.94 <.0001group 1 0.5940 0.5196 -0.4244 1.6123 1.31 0.2530group 1 0.5940 0.5196 -0.4244 1.6123 1.31 0.2530Scale 1 0.7315 0.2065 0.4206 1.2722Weibull Shape 1 1.3670 0.3860 0.7860 2.3775
20
Cox比例ハザード(PH)モデル
データ
r 人の死亡例における生存時間を小さい順に並べるr 人の死亡例における生存時間を小さい順に並べる
生存時間 t(1) t(2) t(3) t( )生存時間 t(1) t(2) t(3) t(r)治療群を表わす変数 z(1) z(2) z(2) z(r)
ここで、z(i) = 0は標準治療群、 z(i) = 1は新規治療群を表わす。ここで、z(i) 0は標準治療群、 z(i) 1は新規治療群を表わす。
生存時間に同順位(タイ)は存在しないものと仮定する。
21
部分尤度 partial likelihood (式の誘導等の詳細な説明は省略しますが)
( )exp( )riz
PLβ
= ∏
ここで r は全イベント数
1( )( )
exp( )i
i jj R t
PLzβ= ∈
= ∏ここで、r は全イベント数
t(i)は(i)番目のイベント発現時点
z(i)は(i)番目の時点にイベント発現した症例の群の情報
β は群の効果を表わすパラメタ、β
R(t(i))は時点t(i)におけるリスクセット
(時点t においてリスクに曝されている症例の集合)(時点t(i)においてリスクに曝されている症例の集合)
22
Cox PHモデルの数値例
前出の数値例zi ti δi (i) z(i) t(i) δ(i)
リスクセットのサイズi i i
0 2 10 5 0
(i) z(i) t(i) δ(i)
1 0 2 1 102 1 3 1 9
のサイズ
0 11 10 15 1
2 1 3 1 93 0 5 0 84 1 6 1 7
0 21 11 3 1
4 1 6 1 75 0 11 1 66 1 12 0 5
ti の順に並べ替え
1 6 11 12 0
57 0 15 1 48 0 21 1 3
1 24 11 48 1
9 1 24 1 210 1 48 1 1
23
部分尤度の計算
• t(1) = 2の死亡例の部分尤度への寄与
(i) t(i) δ(i) z(i)0ePL
β⋅
• t(2) = 3の死亡例の部分尤度への寄与
(i) t(i) δ(i) z(i)
1 2 1 02 3 1 1
(1) 0 1 0 1 0 1 0 0 1 1PLe e e e e e e e e eβ β β β β β β β β β
⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅=
+ + + + + + + + +
t(2) = 3の死亡例の部分尤度への寄与2 3 1 13 5 0 04 6 1 1
1
(2) 1 0 1 0 1 0 0 1 1ePL
e e e e e e e e e
β
β β β β β β β β β
⋅
⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅=+ + + + + + + +
• t(3) = 5ではイベント発現がないので無視
4 6 1 15 11 1 06 12 0 1
• t(4) = 6の死亡例の部分尤度への寄与
6 12 0 17 15 1 08 21 1 0
1eβ⋅
8 21 1 09 24 1 1
1
(4) 1 0 1 0 0 1 1ePL
e e e e e e e
β
β β β β β β β
⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅=+ + + + + +
24
10 48 1 1
事前のデータ加工data ex2;input group t event;
proc iml;sort ex2 out=s by t;use s;event;
cards;0 2 10 5 0
use s;read all;nrec=nrow(t);vname="i"||"time"||(repeat("z",nrec)`0 5 0
0 11 10 15 1
vname="i"||"time"||(repeat("z",nrec)`+left(char(1:nrec,2,0)));
vec=j(1,nrec+2,0);create phdata from vec [colname=vname];
0 15 10 21 11 3 11 6 1
create phdata from vec [colname=vname];do i=1 to nrec;if event[i]=1 then do;1 6 1
1 12 01 24 11 48 1
if event[i]=1 then do;vec=i||t[i]||group`;append from vec;
end;1 48 1;run;
end;group[i]=.; end;close phdata;
25
run; close phdata;quit;
加工後のデータセット
• 各行は各イベント発現時点に対応
• z1~z10は各時点におけるリスクセットに含まれる各症例の群の情報情
i time z1 z2 z3 z4 z5 z6 z7 z8 z9 z10
1 2 0 1 0 1 0 1 0 0 1 1
2 3 . 1 0 1 0 1 0 0 1 12 3 . 1 0 1 0 1 0 0 1 1
4 6 . . . 1 0 1 0 0 1 1
5 11 . . . . 0 1 0 0 1 15 11 . . . . 0 1 0 0 1 1
7 15 . . . . . . 0 0 1 1
8 21 . . . . . . . 0 1 1
9 24 . . . . . . . . 1 1
10 48 . . . . . . . . . 1
26
Cox PHモデルのPROC NLMIXEDによるあてはめ
proc nlmixed data=phdata df=1e8;parms beta 0;
( )exp( )( )
riz
PLβ
β= ∏parms beta 0;
array z[10] z1-z10;denominator=0;
( )1 ( )
exp( )i
i jj R tzβ= ∈
∏denominator=0;do j=i to 10;denominator=denominator+exp(beta*z[j]);
← リスクセットに含まれる例数分だけ回す
←部分尤度の分母部分denominator=denominator+exp(beta*z[j]);end;logpl=log(exp(beta*z[i])/denominator);
部分尤度の分母部分
logpl=log(exp(beta*z[i])/denominator);model time~general(logpl);
run;run;
27
Cox PHモデルの結果の比較
Parameter EstimatesPROC NLMIXEDからのOutput
StandardParameter Estimate Error DF t Value Pr > |t|
beta -0.9031 0.8724 1E8 -1.04 0.3006
Analysis of Maximum Likelihood Estimates
PROC PHREGからのOutputAnalysis of Maximum Likelihood Estimates
Parameter Standard HazardVariable DF Estimate Error Chi-Square Pr > ChiSq RatioVariable DF Estimate Error Chi-Square Pr > ChiSq Ratio
group 1 -0.90307 0.87240 1.0715 0.3006 0.405
28
同順位(タイ)のある場合
• Cox比例ハザードモデルにおいて同順位が存在する場合には幾つかの計算法がある。
• Breslowの近似を用いる場合には、多少プログラムが複雑になるものの、NLMIXEDプロシジャを用いて計算可能である(論文参照)。
29
まとめ
• パラメトリックな生存時間解析においては、確率密度関数及び生存関数さえ定義すれば、NLMIXEDプロシジャを用いて 尤推定が可能
• SASのプロシジャを用いての生存時間解析もその計算内容を理解・確認することができ、ブラック・ボックスでなくすることができる。
• LIFEREGプロシジャがサポートしていないような生存時間分布でも、その確率密度関数及び生存関数さえ定義できれば、推定可能
• 更に、混合分布モデルやPiecewise exponential modelなどのより複雑なモデルにも応用可能
• Cox比例ハザードモデル解析で示されたように、事前のデータ加工等の
工夫を加えることによって、より複雑な計算アルゴリズムの 尤推定であっても 問題によっては計算できる可能性が示唆されたあっても、問題によっては計算できる可能性が示唆された。
• このようにPROC NLMIXEDが生存時間解析において非常に強力な道具であり 更なる応用の可能性が示唆された
30
であり、更なる応用の可能性が示唆された。