本日の研究会にて、標題のタイトルで発表をさせていただきました。
データの加工方法についてStataのシンタックスを紹介しているほか、テキストなどであまりまとまって論じられないトピック(依存性、個人の異質性、impact functionなど)にも触れています。
資料は以下になります。Notesの方にもアップロードしております。
イベントヒストリー分析のためのデータ加工とモデル選択 (2016/2/9 修正版)
イベントヒストリー分析をしてみたいという方の助けになれば幸いです。
追記(2018/9/3)
よくアクセスされているようで恐縮ですが、資料にいろいろと間違いがあることがわかっているので、参考程度にしてすべて信じないようにしてください。。時間に余裕ができ次第、大幅に改稿したいと思います。
コメント
p8:『3 生存関数・(累積)ハザード関数のプロット』の箇所で,
生命表
と
カプランマイヤー法によるグラフ図示
が具体的に載っていると良いと思いました.
離散時間ロジット初学者的には,
1. パーソンピリオドデータを作る
2. 生命表を作る
3. 分析したい2群位を生存関数で描いて比較して当たりをつける
上記をどうするのかが知りたい所でしたので.
stataのコードは載っていますが,具体的な表やプロットとしてどうなるのかが知りたいです.
(とは言え,具体的なデータがなければ描けない問題かとも思いますが)
たしかに、どこかからサンプルデータを持ってこれるとよいですね。また、今のところ生命表や生存関数の描き方についてはさらっと書くのに留まっているので、このあたりもう少し充実させたいと思います。検討してみます、ありがとうございます。
最近ハザードモデル を独学で勉強しているもので、大変勉強になりました。
上記の資料の中で、パーソンピリオドデータのお話がありましたが、ハザードモデル を用いる時にパーソンピリオドデータをそのまま使うことはできないのでしょうか?
やはり、時点を決めその時点での個々人のデータを使うより他にないのでしょうか?
せっかくパーソンピリオドデータを作成したので、そのままハザードモデル 分析はできないものかと考えております。
参考にしていただきありがとうございます。もちろんパーソンピリオドデータに対してハザードモデルをそのまま使用することはできます。たとえばStataをお使いであるとすれば、時点を示す変数をtとして、イベントの発生を示す1または0の値を取る”event”という変数、他の独立変数(時間可変の変数でも時間不変の変数でも構いません)をx1, x2, x3とすれば、
****************************************
*** 時間とイベントの指定
stset t, f(event == 1)
*** Cox比例ハザードモデルの場合
stcox x1 x2 x3
*** Weibullモデルの場合
streg x1 x2 x3, dist(weibull)
****************************************
のようにすれば推定することができます。より詳しい解説は、Stataのstcoxやstregのhelpファイルを参照ください。
ありがとうございます。
是非参考にさせていただきます。
また質問で申し訳ないのですが、パーソンピリオドデータをそのままハザードモデル に用いる場合は、その変数(例えば、賃金や利益率など)は合計の値ではなく、その時点tごとの値を使うことはできるのでしょうか?
また、上記の資料だとパーソンピリオドデータについても気になる点があります。
例えば、対象期間を5年間とし離婚をイベントだとすると、A氏は3年目で離婚したため、4年目からはデータから排除し、B氏は5年間の間には離婚しなかったため5年間のデータが全て揃っているというデータもパーソンピリオドデータと呼んで良いのでしょうか?
(離婚した場合は翌年からデータ内より排除、離婚していなければ5年間のデータが全て揃うというものです。)
パーソンピリオドデータでのハザードモデルの分析に関する著者はないため、大変参考になっております。
>パーソンピリオドデータをそのままハザードモデルに用いる場合は、その変数(例えば、賃金や利益率など)は合計の値ではなく、その時点tごとの値を使うことはできるのでしょうか?
できます。パーソンピリオドデータを使ってハザードモデルを推定するという場合には、条件つき確率(時点tまでにイベントが発生しなかったという条件のもとでの、時点tにおいてイベントが生起する確率)をモデリングしているといえるので、時点1, 2, …, tにおける各時点の変数の値を使用することは可能、というより、そのほうが多くの場合適切です。
>例えば、対象期間を5年間とし離婚をイベントだとすると、A氏は3年目で離婚したため、4年目からはデータから排除し、B氏は5年間の間には離婚しなかったため5年間のデータが全て揃っているというデータもパーソンピリオドデータと呼んで良いのでしょうか?
パーソンピリオドデータはその名前のとおり人×時間という構造を持つデータのことですから、イベントの発生あるいは打ち切りとは無関係に、同一個人が複数時点(この場合は年)の記録を有する場合にはそのデータ全体のことを指してパーソンピリオドデータと呼んで問題ないと思います。
丁寧に答えてくださってありがとうございます。
統計・計量経済学のほぼ初心者ですが、最近興味を持って勉強するようになったのでわからないことが多く、こちらサイトで色々と学んでおります。
細かい点まで教えてくださって本当にありがとうございます。
お久しぶりです。
前回教えていただいた通りに、まずstataでのセットの時に、累積期間ではなくその時点のtを認識させて分析するようにしてみました。
すると、累積期間で認識させパーソンピリオドデータで分析した場合と、時点tで認識させてパーソンピリオドデータで分析した場合では結果が反対になってしまいました。
この場合、パーソンピリオドデータで分析するには、時点tで認識させる方が正解なので、結果もこの場合の結果を信用するべきでしょうか?
ちょっと今の情報だけだと、どちらの方法が適切あるいは不適切とは言えません。具体的にどのような構造のデータを使ってどのような分析をしており、かつ、ここでの「累積期間」と「時点t」というのがそれぞれどのような変数であるのか分からないので、そのあたりをもう少し詳しく教えていただければより具体的なアドバイスはできると思います。もしここのコメント欄に書きづらいようでしたら、メール(mugiyamaあっとまーくg.ecc.u-tokyo.ac.jp)にてお問い合わせいただいても構いません。
遅くなってしまって申し訳ありません。
ご丁寧に本当にありがとうございます。
データ自体に問題があったようで、訂正をしたところ累積期間で分析した場合と時点で分析した場合どちらも結果は大きく変わらないとわかりました。
また質問で申し訳ないのですが、通常の回帰分析は年次ダミーをいれるようですが、ハザードモデルは時間に関わらずアウトカムの発生率が一定であると仮定しているためハザードモデルには年次ダミーはいれないのでしょうか?
いくつかハザードモデルで分析している例を確認してみましたが、年次ダミーは入っていないようでした。
お久しぶりです。
ご丁寧に説明してくださって本当にありがとうございます。
その後、データセット自体に問題があることを発見し、作り直してみたところ累積期間でも時点でもおおきく変わらない結果が得られました。
何度も何度も質問してしまって恐縮ですが、また教えて頂きたいことがあります。
パネルデータを用いた通常の回帰分析では年次ダミーを入れるようですが、ハザードモデル では時間的考慮がなされたモデルのため年次ダミーは必要ないのでしょうか?
いくつかパーソンピリオドデータで分析している例を確認してみましたが、入れているものが極少数で、ほとんどが入れていないようでしたので。
ご質問への回答ですが、生存分析で年次ダミーを入れるかどうかは目的によります。
ハザードモデルにおける「時間的考慮」というのは要するに基底ハザードのことと思います。これはイベント発生のリスクがリスク暴露期間によっていかに変動するのかということを問題としています。例えば離職をイベントとする分析の場合、勤続年数(その会社に勤め始めてから1年、2年……)によって離職の発生リスクは変化すると考えられるため、何らかの関数系によってこのリスクの形状を表現する必要があります。
対してさらに年次ダミーを投入するという場合、勤続期間を一定としてもなお、特定の時点に離職が発生するリスクが影響される(たとえば労働市場の需要が高まっている年には離職が起こりやすい、というような)という効果をコントロールするということになります。もしこのような影響が存在し、かつ年次が関心のある独立変数と相関しうると想定するのであれば、年次ダミーを入れることは適切な判断になります(ただしサンプルサイズが小さく各年でイベントが十分に発生していない場合は時点の効果がうまく推定できないことがあるのでそこは注意が必要になります)。もちろんこれは年次ダミーでなく、有効求人倍率とか完全失業率のようなマクロな指標を外挿してもかまいません。
ありがとうございます。
年次ダミーを入れた分析と入れていない分析ではそれぞれ目的が違うということなんですね。
通常の回帰分析では年次ダミーを含むことが一般的であるのに対して、ハザードモデルではいれる場合と入れない場合があるのはそういう理由でしたか。
例えば年次ダミーを入れる代わりに分析期間を2つに分けて、それぞれどう結果が違うかを見るという方法も間違ってはいないでしょうか?
間違っていないというより、少し意味が異なってきます。
ざっくりというと、年次ダミーでサンプルを分割した場合、推定される(年次ダミー以外の)独立変数の係数は年次ダミーで分割したサンプル内での効果、ということになります。それに対してサンプルは分割せずに年次ダミーを統制した場合、推定される独立変数の係数は変数ごとの年次の分布を揃えたうえでの効果ということになります。このあたりは生存分析に固有の問題というよりは、一般的な回帰分析と同じ話になります。
教えていただいたように、年ごとの影響を加味して年次ダミーを入れてStataでハザードモデル の分析をしてみましたが、なぜか分析結果が表示されず「flat region resulting in a missing likelihood」とのことでした。
年次ダミーを含まない場合はこんなことにはならなかったので、年次ダミーの必要性が低いデータセットだということでしょうか?
必要かどうかというのは分析そのものからはわかりません。
推定結果が得られない理由はわかるかもしれません。”flat region resulting in a missing likelihood”で検索してみると、どうやらCox比例ハザードモデルを推定したときに現れるエラーのようです。どのようなデータを分析しているのかわかりませんので推測ですが、1度もイベントが発生していない年次があるのではないでしょうか(ロジスティック回帰分析でいうと、独立変数でグループ化したときに従属変数がすべて0または1となるようなグループがある場合には当該のグループについての係数の推定結果が得られないということと同じです)。ひとまず、そのような年次が現れないように適当に5年区切りのダミー変数にしてみるなどの対処をしたうえで再度推定してみてはいかがでしょうか。
ありがとうございます。
確認したところ、イベントは必ず毎年発生しており、イベント発生無しの年はないようでした
分析期間が12年なので、4年ごとに区分した場合、6年ごとに区分した場合の2つを試してみました。4年ごとの区分では、同じように結果が表示されず、6年ごとに区分した場合では全体の結果は表示されるものの、年次ダミーに関しては係数以外のstandard error やp値などほかの結果が表示されませんでした。
ということは、何かデータの作成の仕方に誤りがあるか、stsetの指定の仕方に誤りがあるか、もしくは年次ダミーと強い共線性のある変数が入っている(例えば継続時間を示すダミー変数)といった原因が考えられます。このあたり確認してみてはいかがでしょうか。
相関も確認してみましたが、相関の高い変数は存在していませんでした。
また、データセット自体の間違いも私が確認したところないようです。イメージではありますが一応データセットの写真を載せさせていただきます。
対象期間は12年間であり、イベントが発生した場合は翌年からデータから削除されます。イベント発生がない人物に関しては必ず12年間のデータが存在し、イベントが発生した人物に関しては発生した年ごとにデータの数が異なります。
https://box.yahoo.co.jp/guest/viewer?sid=box-l-pxko7gr4iujvdtfedlha65znjy-1001&uniqid=0a33b7b4-68cd-4899-b59b-f1252038bd45&viewtype=detail
https://box.yahoo.co.jp/guest/viewer?sid=box-l-pxko7gr4iujvdtfedlha65znjy-1001&uniqid=c1f65970-2e0b-492e-b37c-94ed2fe9da62&viewtype=detail
「年次ダミー」という言葉でおっしゃっていることが理解できました。要するにおっしゃっている年次ダミーというのはリスク暴露の期間のことを指していたのですね。
そうなると、この変数は時間の経過とともにすべての個人について同一に増加していくので、Cox比例ハザードモデルを使う限りはこの変数を分析に含めることはできません。基底ハザードの形状に関心がある場合は、基底ハザードの形状を特定しないセミパラメトリックな推定であるCox比例ハザードモデルではなく、指数モデル(streg, dist(exp) https://www.stata.com/manuals13/ststreg.pdf )を使うと、推定ができると思います。もしくは、このデータをそのままロジットモデルで推定(いわゆる「離散時間ロジットモデル」)しても構いません。
すみません、私の説明が下手なばかりに誤解を招いてしまいました。
私の示していた年次ダミーとは時点tが1の場合には1,そうでなければ0をつけるダミーのことで、最終的に12年間分12個の年次ダミーが作成できるのではないかと考えておりました。(分析に追加するときにはベースを決め、どれか1つを抜く必要があるとはお思いますが)
考えてみると、確かに同一に増加が見込まれる変数のためハザードモデルには含むことができませんよね。
統計が初心者で回帰分析には年次ダミーを含むものだと思い込んでいたため、どうしてハザードモデルでは年次ダミー自体をいれないのかが分からずに困惑しておりましたが、まずStataにデータセットで時点tを認識させているため、年ごとの影響をコントロールするために年次ダミーを含むのはおかしいですよね。
教えて頂いた通りにロジットモデルを用いてもみますが、このままハザードモデルでの推計を行っても支障はありませんよね?
毎回見ず知らずの私に対して丁寧に説明して下さって本当にありがとうございます。
1人で独学で勉強しているために分からない点が多く、本当に感謝しております。
そうですね。実質的な結果(係数の正負など)は年次ダミーを統制したロジットモデルと、Cox比例ハザードモデルとでほぼ同じになると思いますので、どちらを使ってもよいと思います。
話がまた戻ってしまうのですが、上記のデータセットの作り方で、分析期間を分けて推計を行うことは妥当でしょうか?
例えば、tが1~6の企業だけでハザード分析し、tが7~12の企業だけでハザード分析するということです。(もちろん、Stataに認識させるときはtが7~12の企業はtを1~6に置き換えます)
しかし、ハザードモデルだとイベント発生確率が年によって変化しないというベースハザードの前提を置いているので、期間を分けて分析するということが正しいのかどうかがわかりません。
もし結果がt1~12で分析した場合と異なったときには、どのような解釈をすればよいのでしょうか?
経過時間tでサンプルを分割して分析することは可能です(「妥当」かどうかは問題関心に依存します)。この場合の分析結果は先に述べたとおり、推定される独立変数の係数は年次ダミーで分割したサンプル内での効果という解釈になります。もしサンプルを分割した結果ある独立変数の係数が大きく異なる場合、当該の独立変数は(他の独立変数を統制したうえで)経過時間の初期よりも後期のほうがより強い効果を持っているなどといった解釈ができます。
Cox比例ハザードモデルはイベント発生確率(ハザード)が時間によって変化しないという前提を置いたモデルではなく、ハザード関数を推定することなく独立変数の係数を得るというモデルです。Cox比例ハザードモデルの仮定は比例ハザード性の仮定であり、これは独立変数の効果(ハザードを高める/低める効果)が時間の経過によらず一定であるということを意味します。先のような結果が得られる場合、この比例ハザード性の仮定に逸脱していることが疑われる、ということを意味します。比例ハザード性の仮定についてはこちら(https://www.slideshare.net/takehikoihayashi/tricky )のページなどが参考になるかと思います。
ありがとうございます。
先のことととは、分析結果が前半期間と後半期間および全期間で変わるという場合のことですよね?
例えば、前半期間で有意にならなかった係数が後半期間に優位になった場合、これは仮定が成り立たず逸脱しているということですね。
もし比例ハザード性の仮定から逸脱している場合、それはハザードモデルを用いるべきではないということなのでしょうか?
しかし、期間を2つに分けてしまうとサンプル企業自体も2つを期間によって変わることになってしまいますよね。(もちろん12年間イベントが発生しなかった企業は2つの期間どちらも含まれてしまいますが。)
そうすると、前半期間で有意でなかったけれども後半期間で有意になるのは妥当ではある気がします。
全期間で分析した場合、後半期間の有意性が強く反映され、全期間でも有意になるということもあり得る気がします。
Stataを使用している場合、サンプルを分割するという方法でなく(よりフォーマルに)比例ハザード性の検定ができます。強い比例ハザード性からの逸脱が見られる変数がある場合、当該の独立変数については時間によって効果が変動するというふうに部分的にその仮定を緩めたモデルを推定することによって対処することができます(以上の方法についてはたとえば https://stats.idre.ucla.edu/stata/seminars/stata-survival/ などを参照ください)。
比例ハザード性からの逸脱が見られるからといってそれは即座に比例ハザードモデルは使用できないということを意味しません(現実の分析でOLSの仮定が完全に満たされる場合はほとんどないということと似ています)。しかし、比例ハザード性からの逸脱が議論したい内容の妨げになるようであれば、以上のような対処が必要となるでしょう。
期間を分けた場合の有意性に関してですが、有意かどうかというのはサンプルサイズやイベントの発生数、独立変数の分散に依存するので、当然そのようなこともあると思います。係数が有意かどうかということだけでなく、係数の大きさと標準誤差をみて総合的に判断すべきと思います。
分析期間を分ける理由としては、年ごとにイベント発生の要因が変わる可能性があり、それを観察したいからです。例えば、離婚をイベントにした場合、前半期間では夫の収入が有意になるけれども、後半期間では有意にならないとします。離婚のモティベーションが前半期間では夫の収入によるものなのに、後半期間では異なる要因がモティベーションであるということを示したいのです。
前半期間では収入を重視していたけれども、後半期間では金銭的な要因ではなく性格つまり互いの相性が要因であるということを、分析期間を2つに分けることで言えれば良いのではないかと考えております。
上記のことを示したい場合は、分析期間を前半と後半および全ての期間に分けてそれぞれ推計することはおかしくはないでしょうか?
なるほど。もしそうであれば第1の選択肢はCox比例ハザードモデルでなく、ハザード関数の形状を特定したモデル(連続時間のモデルならばPiecewise-constant hazard model、離散時間のモデルなら離散時間ロジットモデルなど)を使うことです。ここでの方法は以下の2つあります。
(1) 基底ハザード関数と関心のある(たとえばここでは収入)独立変数との交互作用項を取り、交互作用項の係数がどのように変化するのかをみる。
(2) ハザード期間の「前半」(または「後半」)を示すダミー変数を作成して収入との交互作用項を投入し、その係数(が有意であるか)をみる。
もちろん分析期間を前半と後半に分けた推定も行ってよいと思いますが、サンプルを分割して片方では有意、もう片方では有意でなかったとしても、両者で得られた係数の値の「差」が有意であるか否かを検定していないため、やや主張の説得力は落ちると思います。
お久しぶりです。
教えて頂いた二つの方法を試してみました。
分析の理解がより深まりました。ありがとうございます。
そこで今度はハザードモデル自体に関して確認したいことがあります。
ハザードモデルを用いる理由としては、打ち切りというサバイバルバイアスに対応しているという点が挙げられると思います。
例えば、離婚をイベントとした場合、離婚した後は再婚しないと仮定すると、離婚した後のデータのその後は観察できませんよね。その場合、離婚が発生した後は打ち切りデータとして扱うと考えております。
すると、離婚と非離婚の割合は毎年変化すると考えられます。そうすると、最終的に対象期間の一番最後には非離婚の割合が一番最初の期間よりも少なくなります。ここでサバイバルバイアスが発生しますが、ハザードモデルではこの発生を考慮しているため、このような分析にベストだと考えておりますが、合っているでしょうか?
すみません、おっしゃる内容をうまく理解できていません。一般的な話をすると、たとえばある時点で何らかの状態における生存期間を従属変数とする分析を行うと、すでに別の状態に移ってしまったケースを分析から除外しているために、生存期間に対する独立変数の影響を正しく捉えることができないという問題があります。なのでハザード(単位時間あたりのイベント生起率)を従属変数に使用しようというのがいわゆる生存分析です。
といっても(私の考えでは)打ち切りによる「バイアス」というのは生存分析を使用する本質的なモチベーションではなくて、先述の分析と生存分析ではそもそも知りたいものが違いますから、生存分析に適しているかどうかは問題に依存します。