Rの離散時間イベント履歴(生存)モデル


10

Rに離散時間モデルを適合させようとしていますが、その方法がわかりません。

従属変数を時間監視ごとに1つずつ異なる行に編成し、glm関数をlogitまたはcloglogリンクで使用できることを読みました。この意味で、私は3つの列があります:IDEvent(各time-obsで1または0)およびTime Elapsed(観測の開始以降)、および他の共変量。

モデルに合うようにコードを書くにはどうすればよいですか?従属変数はどれですか?Event従属変数として使用できTime Elapsed、共変量に含めることができると思います。しかし、どうなりIDますか?必要ですか?

ありがとう。


「離散時間モデルを適合させようとしている」と言うと、どのモデルに適合させたいですか?(これが一部の主題に関するものである場合は、self-studyタグを追加してください。)
Glen_b -Reinstate Monica

ロジット離散時間生存モデルに適合させたい。
Fran Villamil 2013

1
IDが関連している可能性は低いようですが、IDが何を表しているか、正確に表しているか、それがモデル化したいものかどうかによって異なります。
Glen_b-2013

回答:


8

あなたは基本的にデータ編成について正しいです。このように整理されたケースがある場合:

ID M1 M2 M3 EVENT

次のようになるようにデータを再編成する必要があります。

ID TIME EVENT
1  1    0
1  2    1
1  3    1
2  1    0
2  2    0
.  .    .
.  .    .

これをワイドフォーマットからロングフォーマットへの変換と呼びます。これは、reshape()関数を使用してRで簡単に、またはreshape2パッケージでさらに簡単に実行できます。

個人的にはID、混合効果モデルの変動の原因を特定する際に、そのフィールドを潜在的に使用するために保持します。しかし、これは必要ありません(@BerndWeissで指摘されています)。以下は、そうすることを想定しています。そうでない場合は、glm(...,family=binomial)変量効果項のない同様のモデルを近似します。

lme4R のパッケージは、話題全体の係数の変動性を説明するためにランダム効果または2つを除いて、あなたが話しているものと同様の混合効果ロジスティック回帰モデルに適合します(ID)。以下は、データがと呼ばれるデータフレームに格納されている場合に、モデル例をフィッティングするためのサンプルコードですdf

require(lme4)
ans <- glmer(EVENT ~ TIME + (1+TIME|ID), data=df, family=binomial)

この特定のモデルでは、TIMEおよびintercept係数がID全体でランダムに変化することができます。言い換えれば、これは個人にネストされた測定の階層線形混合モデルです。

離散時間イベント履歴モデルの代替形式は、TIME離散ダミーに分割され、それぞれをパラメーターとして適合させます。ハザードカーブは線形(または2次、または変換時間を想像できます)に制限されていないため、これは本質的にCox PHモデルの離散ケースです。ただし、TIMEそれらが多数ある場合は、個別の期間の管理可能なセット(つまり、小さい)にグループ化することをお勧めします。

さらに別の方法には、時間を変換してハザード曲線を正しくすることが含まれます。以前の方法は基本的にこれを行う必要を軽減しますが、以前の方法はこれよりも簡潔です(そして私が提起した元の線形の場合)。

このトピックに関する優れた参考資料は、ジュディスシンガーとジョンウィレットの応用縦断的データ分析:変化のモデリングとイベントの発生です。


4
単純な離散時間モデルを推定するために「混合効果ロジスティック回帰モデル」は必要ありません(Fiona Steelは、「マルチレベルの離散時間イベント履歴分析」に関するいくつかの記事を公開しています)。リファレンスはありますか?データの準備手順についても、survSplit関数を確認することをお勧めします。
Bernd Weiss

6

歌手とウィレットはこの主題に関して多く発表されました。いくつかの論文を読むことを強くお勧めします。また、「Applied Longitudinal Data Analysis:Modeling Change and Event Occurrence」という本を入手することもできます。明らかにこの分野で最高の教科書の1つです。

ほとんどの本の章では、データをどのように構造化する必要があるか(「個人期間形式」)とその種類のデータを分析する方法を示すRサンプルコード(11ff章を参照)を利用できます。標準の離散時間モデルの場合、ID変数は必要ありません。また、@ ndooganによって提案されている混合効果モデルを推定する必要もありません。シンプルなglm(event ~ time + ..., family = "binomial")もので十分です。シンガーとウィレットは、時間変数をモデル化する方法(線形、二次など)に関する多くの問題についても議論します。

私が強くお勧めする2つの参考文献を引用します。


1

Shumway(2001)のように、時間を時間間隔に分割して複数期間ロジットモデルを実行できます。たとえば、時間間隔はです。Rでこれを実装しました。これは、生存分析で使用される一般的な停止イベントのセットアップに初期データがある場合に直接適用できます。結果のモデルのt統計には、Shumway(2001)で述べられている修正がないことに注意してください。(0,1],(1,2],dynamichazard::static_glm

この方法は、すべての期間で共通の切片を1つだけ取得するため、タイムダミーを持つ@ndooganとは異なりますdynamichazard::static_glm。ただし、dynamichazard::get_survival_case_weights_and_data引数を指定して呼び出すことにより、期間ごとにダミーを取得use_weights = FALSEし、戻り値に自分で時間ダミーインジケーターを追加して、data.frameegを呼び出すことができますglm


さらに、あなたは私のパッケージのこのビネットに興味があるかもしれませんdynamichazard
ベンジャミンクリストファーセン2017年

0

これは「カウントプロセス」データと呼ばれます。サバイバルパッケージには、非常に優れたtmerge()関数があります。時間依存または累積共変量を挿入し、それに応じてフォローアップ時間を分割すると非常に便利です。プロセスはこのビネットで非常によく説明されています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.