R'de Kesikli Zaman Olay Geçmişi (Hayatta Kalma) Modeli


10

R'de ayrık zamanlı bir model yerleştirmeye çalışıyorum, ancak nasıl yapılacağından emin değilim.

Bağımlı değişkeni farklı satırlarda, her bir zaman gözlemi için bir tane düzenleyebileceğinizi ve glmbir logit veya cloglog bağlantısıyla işlevi kullanabileceğinizi okudum. Bu anlamda, üç sütun vardır: ID, Event(her zaman atıl 1 ya da 0) ve Time Elapsedek olarak, diğer değişkenlerin (gözlem başından itibaren).

Modele uyacak şekilde kodu nasıl yazarım? Bağımlı değişken hangisidir? Sanırım Eventbağımlı değişken olarak kullanabilir ve değişkenlere dahil edebilirim Time Elapsed. Ama ne olacak ID? İhtiyacım var mı?

Teşekkürler.


"Ayrık bir zaman modeline uymaya çalışıyorum" dediğinde ... hangi modele uymak istiyorsun? (Bu konu içinse lütfen self-studyetiketi ekleyin .)
Glen_b

Logit ayrık zamanlı hayatta kalma modeline uymak istiyorum.
Fran Villamil

1
Kimliğin alakalı olması muhtemel görünmüyor, ancak neyi, tam olarak temsil ettiğini ve bunun modellemek istediğiniz bir şey olup olmadığına bağlı.
Glen_b

Yanıtlar:


8

Temel olarak veri organizasyonu konusunda haklısınız. Bu şekilde organize edilmiş vakalarınız varsa:

ID M1 M2 M3 EVENT

Büyük olasılıkla verileri şu şekilde görünecek şekilde yeniden düzenlemek istersiniz:

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

Buna geniş formattan uzun formata dönüşüm diyorum. reshape()Fonksiyonu kullanarak R'de kolayca veya reshape2paketle daha kolay yapılır .

Şahsen, IDkarışık efektler modelindeki bir varyasyon kaynağını belirlemede potansiyel kullanımı için alanı koruyacağım . Ancak bu gerekli değildir (@BerndWeiss tarafından belirtildiği gibi). Aşağıdaki, bunu yapmak isteyeceğinizi varsayar. Değilse glm(...,family=binomial), rastgele etki terimleri olmadan benzer bir model takın.

lme4R paket denekler arasında katsayıları değişkenliği hesaba rastgele etkisi ya da iki hariç, bahsediyoruz birine (benzer bir karışık etkiler lojistik regresyon modeli uyacaktır ID). Verileriniz adlı bir veri çerçevesinde saklanıyorsa, aşağıdaki örnek bir modelin takılması için örnek kod olacaktır df.

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

Bu özel model TIMEve interceptkatsayılarının ID boyunca rastgele değişmesine izin verir . Başka bir deyişle, bu, bireylerde iç içe geçmiş hiyerarşik doğrusal karışık ölçüm modelidir.

Bir alternatif bir formu ayrık zamanlı olay geçmişi modeli sonları TIMEayrık mankenleri ve uyan bir parametre olarak her birine. Bu, temel olarak Cox PH modelinin ayrık durumudur, çünkü tehlike eğrisi doğrusal olmakla sınırlı değildir (veya kuadratiktir, ancak dönüşme zamanını hayal edebilirsiniz). Bununla birlikte, TIMEçok sayıda varsa yönetilebilir bir dizi ayrık zaman dilimi (yani küçük) olarak gruplandırmak isteyebilirsiniz .

Diğer alternatifler, tehlike eğrisinizi doğru hale getirmek için zamanın dönüştürülmesini içerir. Önceki yöntem temel olarak bunu yapmaktan kurtarır, ancak önceki yöntem bundan daha az cimri (ve ortaya koyduğum orijinal doğrusal durum) çünkü çok fazla zaman noktanız ve dolayısıyla çok fazla rahatsızlık parametreniz olabilir.

Bu konuda mükemmel bir referans Judith Singer ve John Willet'in Uygulamalı Boyuna Veri Analizi: Değişimin Modellenmesi ve Olay Oluşumu .


4
Basit bir ayrık zamanlı model tahmin etmek için "karışık etkiler lojistik regresyon modeline" ihtiyacınız yoktur (Fiona Steel " Çok düzeyli ayrık zamanlı olay geçmişi analizi " hakkında birkaç makale yayınlamıştır ). Referansınız var mı? Veri hazırlama basamağı olarak, survSplit fonksiyonuna da bakmayı öneririm .
Bernd Weiss

6

Şarkıcı ve Willett bu konuda çok yayınlanmış. Bazı makalelerini okumanızı tavsiye ederim . Ayrıca "Uygulamalı Boyuna Veri Analizi: Değişimin Modellenmesi ve Olay Oluşumu" adlı kitabını da almak isteyebilirsiniz . Açıkçası bu alandaki en iyi ders kitaplarından biri.

Çoğu kitap bölümü için, verilerinizin nasıl yapılandırılması gerektiğini ("kişi dönemi biçimi") ve bu tür verilerin nasıl analiz edileceğini gösteren R örnek kodu (bkz. Bölüm 11ff). Standart bir ayrık zamanlı model için ID değişkenine ihtiyacınız yoktur ve ayrıca @ndoogan tarafından önerilen bir karma efekt modelini tahmin etmeniz gerekmez. Basit bir glm(event ~ time + ..., family = "binomial")işe yarıyor. Singer ve Willett ayrıca zaman değişkenini (doğrusal, ikinci dereceden, ...)

Şiddetle tavsiye ettiğim iki referans daha belirtmek için:

  • Allison (1982): ( "Olay Öyküsü Yönünden Analizi için Ayrık Zamanlı Yöntemleri" PDF ) (eğer karma etki modelinin yerine standart bir glm kullanabilirsiniz neden Allison makale de anlatılır)
  • Mills (2011): "Hayatta Kalma ve Olay Tarihi Analizine Giriş"

1

Zaman süresini aralıklara bölebilir ve Shumway (2001) 'de olduğu gibi bir çoklu-çoklu logit modeli gerçekleştirebilirsiniz . Örneğin, zaman aralıkları(0,1],(1,2],. Bunu, dynamichazard::static_glmhayatta kalma analizinde kullanılan tipik bir stop-event kurulumunda ilk verileriniz varsa doğrudan uygulanabilen R'de uyguladım . Ortaya çıkan modelin t istatistiklerinin Shumway (2001) 'de belirtilen düzeltmeye sahip olmadığını unutmayın.

Bu yöntem, tüm zaman periyotlarında yalnızca bir ortak kesişme elde ettiğiniz için zaman aptalları olan bir @ndoogandan farklıdır dynamichazard::static_glm. Bununla birlikte, dynamichazard::get_survival_case_weights_and_dataargüman ile arayarak her periyot için bir kukla alabilir use_weights = FALSE, zaman kukla göstergesini kendiniz döndürülene ekleyebilir data.frameve örn glm.


Ayrıca, ilginizi çekebilir bu skeç benim pakette dynamichazard.
Benjamin Christoffersen

0

Buna "sayma işlemi" verileri denir. Hayatta kalma paketi çok güzel bir tmerge () işlevine sahiptir. Zamana bağlı veya kümülatif ortak değişkenler eklemek ve buna göre bölüm takip süresi çok yararlıdır. Süreç bu vinyette çok iyi açıklanmıştır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.