type個人的な勉強の記録です。データ分析、可視化などをメイントピックとしています。回帰)ベイジアンモデリングTweet生存時間解析とは?生存時間解析は、イベントの時間を解析するための手法です。ソーシャルゲームやwebサービスなどに登録した人の利用継続時間(マーケティング)投薬群と対照群(プラセボ)で、どれだけ長生きするか(医用統計)新規材料が既存の材料とくらべて、どれぐらい耐久性があるか(信用工学)など、様々な応用例が考えられます。生存時間解析はノンパラメトリックな手法で行なうことが多いです。共変量の違いをCoxの比例ハザードモデルやAelanの加法モデルで解析といった辺りが挙げられるでしょうか。その原因としては、生存時間のデータへ打ち切りという特徴があることが挙げられます。結果として分布にあてはめるだけの解析では、打ち切りを説明することが難しく上手くフィッティング出来ません。並べて、最尤法を使った分布への当てはめでは、値の信頼性が出ません。これに対してノンパラメトリックなカプランマイヤー法を使えば、推定値の範囲(信頼性)も出せますので論文も書きやすいです。仮に分布を仮定しても、ベイズ的にモデリングすれば、これらの問題を解決することができます。今回はStanを使って生存時間解析を行なうことで、打ち切りを含めてモデリングをしてみました。何分不勉強なもので、ご指導ご鞭撻をいただければ幸いです。テストデータとりあえず解析に使うデータを用意します。packageに含まれる、rossiのデータを使います。データのソース論文はこちらです。このデータは逮捕された人が再逮捕されるまでの期間(週)と、その他の共変量が記されています。何はともあれ、データを見てみましょう。上から10件だけ表示します。3詳細は論文の3.2節に書いてありますが、今回注目するのはweekとarrestです。arrestが1である人は再逮捕されています。0である人は観測期間中では再逮捕はされず、weekの値が52になっています。所謂打ち切りの発生です。打ち切り、に従い、現象をモデル化してみます。今回のデータはweek単位への丸めも発生しているのですが、本題ではないので飛ばします。打ち切りの原理を踏まえて、今回の現象のモデルを次のように考えました。分布はワイブル分布を利用します。ワイブル分布は次のような特徴をもち、時間のモデル化へ向いています。イベントが発生しなかった場合、その瞬間にイベントが起こる確率)が低くなるなら、時間に依らずハザード関数値が一定なら、時間にとともにハザード関数値が高くなるワイブル分布を使って、値に対する尤度を考えます。観測値が52で無い場合はとして得られます。肝心なのは52の場合です。この時尤度はとなります。以上を踏まえて、まず共変量に依らず、全ての人が共通の現象に従っているとして、Stanを書いてみました。}}解析と可視化データに対して、構築したStanモデルを当てはめてみます。...まず集計表です。確認できましたので、収束は問題ないようです。続いて、得られたパラメータ値を用いて可視化を行います。facecolor="pink")ax1.set_xlabel("Weeks")ax1.tick_params("y")一枚目のグラフが、確率密度関数とイベント発生のカウントです。parameterの90%信用区間を用いて描かれた範囲がピンク色になっています。function)です。見方は1枚目と同様です。元論文のP7には、Coxの比例ハザードモデルで描かれた場合の結果が載っています。今回のWeibull分布を用いて描いた結果と相違ありません。打ち切り補正をしない場合は?当然ここで気になってくるのは、補正の効果です。先程の1枚目のグラフは52辺りに最頻値があります。打ち切りをしている効果はどの程度でしょうか?これを検証するために、打ち切りを考慮しないモデルと比較しました。打ち切りを考慮しない場合は、めちゃめちゃ過剰適合しているのがわかります。打ち切りのメカニズムをモデルに取り入れることで、52以上でもイベントが生起することを踏まえてモデル化できてるわけですね。ちなみに打ち切りが考慮されない場合、WAICも3411.15613467となり、モデルとしても性能が良くないことが分かります。比例ハザードモデル次に共変量の効果を調べます。単純な比例ハザードモデルで取り組んでみましょう。比例ハザードモデルは、全時間を通してハザード間数値を一定として、共変量に従ってハザード関数の値が大きくなることを仮定するモデルです。Weibull分布のハザード関数はと示されます。共変量の効果を加えています。この理由の僕個人による定性的な理解としては、形状パラメータの頑強性に帰するものと考えています。形状パラメータの値はそもそもの現象に依存します。共変量ぐらいでは、中々現象の傾向までは大きく変わりません。加えるほうが多いようです。して、ということになります。中心に変形すればです。Stanで実装するときは、この式で書けばよいかと思います。aid)の効果を調べてみたいと思います。モデルは次の通りです。}}スクリプトは殆ど同様なので飛ばします。結果として次のグラフが得られました。2枚目のグラフが分かりやすいですね。経済的支援を受けた場合は、再犯率が低くなっています。WAICも1395.3474841となって低くなり、予測力が上がっています。この区間に1(即ち効果が無い)が入っていませんので、経済的支援に効果があったことが期待されます。Weibull分布を使って、打ち切りを含めたモデル化を行い、共変量の効果の信用区間まで計算しました。...あれ、これはCoxの比例ハザードモデルで十分なのでは(死)。ベイズ的にモデル化することの利点は自由性です。思いつくものとして、次のような応用が挙げられます。回帰?)単純な2群比較のコホートデザインではない場合(利用できる共変量が他にある)ふぅー、これでやった意味が見いだせました。皆様も、Weibull分布に親しんで下さい。単行本(ソフトカバー)2節「ワイブル分布」がドンピシャでした。打ち切りデータのモデリングについて勉強させて貰いました。角度データの解析を勉強しています。今回は第6章の章末問題に取り組んでいきます。今回は第5章の章末問題に取り組んでいきます。»プロフィールid:ajhjhaf検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro最新記事StanのMAP推定の収束判定についてのコードを読むDockerでPyomo+Jupyterlabの実行環境をパッケージ化こうしてGoogleに落ちたScipyでBrunner-Munzel検定Stanで非閉型な逆関数を含む分布のモデリング月別アーカイブはてなブログをはじめよう!ajhjhafさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。