태그 보관물: bugs

bugs

R의 이산 시간 이벤트 기록 (생존) 모델 각 시간 관찰마다 하나씩 다른 행

R에 이산 시간 모델을 맞추려고하지만 어떻게 해야할지 모르겠습니다.

종속 변수를 각 시간 관찰마다 하나씩 다른 행 glm으로 구성하고 logit 또는 cloglog 링크와 함께 함수를 사용할 수 있다는 것을 읽었습니다. 이런 의미에서, 나는 세 개의 열이 있습니다 : ID, Event(각 시간 경과시 1 또는 0) 및 Time Elapsed(관측 시작부터 ) 그리고 다른 공변량.

모델에 맞게 코드를 작성하려면 어떻게합니까? 종속 변수는 무엇입니까? Event종속 변수로 사용할 수 Time Elapsed있고 공변량에 포함 시킬 수 있습니다 . 그러나 어떻게됩니까 ID? 필요합니까?

감사.



답변

당신은 기본적으로 데이터 구성에 대한 권리입니다. 다음과 같이 구성된 사례가있는 경우 :

ID M1 M2 M3 EVENT

다음과 같이 데이터를 재구성하고 싶을 것입니다.

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

나는 이것을 와이드 포맷에서 롱 포맷으로의 변환이라고 부른다. R을 사용하면 reshape()기능을 사용하거나 reshape2패키지를 사용하여 쉽게 수행 할 수 있습니다 .

나는 개인적 ID으로 혼합 효과 모델의 변동 원인을 식별하는 데 잠재적으로 사용할 수있는 분야를 유지하려고합니다 . 그러나 이것은 필요하지 않습니다 (@BerndWeiss가 지적한 바와 같이). 다음은 귀하가 원한다고 가정합니다. 그렇지 않은 경우 glm(...,family=binomial)임의 효과 항이없는 유사한 모형을 적합합니다 .

lme4R 의 패키지는 주제에 대한 계수의 변동성을 설명하기 위해 임의의 효과 또는 2를 제외하고는 말하고있는 것과 유사한 혼합 효과 로지스틱 회귀 모델에 적합합니다 ( ID). 다음은 데이터가라는 데이터 프레임에 저장된 경우 예제 모델을 맞추기위한 예제 코드입니다 df.

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

이 특정 모델은 ID TIMEintercept계수가 ID에 따라 무작위로 변할 수 있도록합니다 . 다시 말해, 이것은 개인에 중첩 된 측정의 계층 적 선형 혼합 모델입니다.

불연속 시간 이벤트 히스토리 모델 의 대체 양식은 TIME불연속 인형으로 나뉘며 각각을 매개 변수로 적합시킵니다. 위험 곡선이 선형 (또는 2 차, 또는 변환 시간을 상상할 수 있음)으로 제한되지 않기 때문에 이것은 본질적으로 Cox PH 모델 의 개별 사례입니다 . 그러나 TIME관리 가능한 불연속 기간이 많으면 관리 가능한 세트 (즉, 작은) 로 그룹화 할 수 있습니다.

추가 대안은 위험 곡선을 올바르게 얻기 위해 시간을 변화시키는 것입니다. 이전 방법은 기본적 으로이 작업을 수행하지 않아도되지만 이전 방법은 많은 시점과 따라서 많은 성가신 매개 변수가있을 수 있기 때문에 이것보다 덜 덜 유명합니다 (원래의 선형 사례).

이 주제에 대한 훌륭한 참고 자료는 Judith Singer와 John Willet의 적용되는 종 방향 데이터 분석 : 모델링 변경 및 이벤트 발생 입니다.


답변

가수와 윌렛은이 주제에 관해 많은 출판을했습니다. 나는 당신 이 그들의 논문의 일부 를 읽는 것이 좋습니다 . 또한 “Applied Longitudinalal Data Analysis : Modeling Change and Event Occurrence” 책을 원할 수도 있습니다 . 이 분야에서 가장 좋은 교과서 중 하나입니다.

대부분의 서적 장에는 데이터를 구성하는 방법 ( “개인 기간 형식”)과 해당 종류의 데이터를 분석하는 방법을 보여주는 R 샘플 코드 (11ff 장 참조)가 있습니다. 표준 이산 시간 모델의 경우 ID 변수가 필요하지 않으며 @ndoogan이 제안한 혼합 효과 모델도 추정 할 필요가 없습니다. 간단한 것은 glm(event ~ time + ..., family = "binomial")잘 작동합니다. 가수와 윌렛은 또한 시간 변수 (선형, 2 차 등)를 모델링하는 방법에 대한 많은 문제를 논의합니다.

내가 추천하는 두 가지 참고 문헌을 더 인용하려면 다음을 수행하십시오.

  • Allison (1982) : “이벤트 기록 분석을위한 이산 시간 방법”( PDF ) (Allison 기사는 혼합 효과 모델 대신 표준 glm을 사용할 수있는 이유도 설명합니다)
  • Mills (2011) : “생존 및 사건 이력 분석 소개”

답변

Shumway (2001) 에서와 같이 시간을 간격으로 나누고 다중주기 로짓 모델을 수행 할 수 있습니다 . 예를 들어, 시간 간격은 입니다. 생존 분석에 사용되는 일반적인 중지 이벤트 설정에서 초기 데이터가있는 경우 R로 직접 구현했습니다 . 결과 모델의 t-stats에는 Shumway (2001)에 언급 된 수정 사항이 없습니다.

(0,1],(1,2],…

dynamichazard::static_glm

이 방법은의 모든 기간에서 하나의 공통 차단 만 받기 때문에 시간 더미가있는 @ndoogan과 다릅니다 dynamichazard::static_glm. 그러나 dynamichazard::get_survival_case_weights_and_dataargument 를 호출 하여 각 기간 동안 더미를 가져 오고 use_weights = FALSE시간 더미 표시기를 직접 반환 data.frame한 다음 eg를 호출 할 수 glm있습니다.


답변

이것을 “카운팅 프로세스”데이터라고합니다. 서바이벌 패키지는 매우 좋은 tmerge () 함수를 가지고 있습니다. 시간 의존적 또는 누적 공변량을 삽입하고 그에 따라 파티션 후속 시간을 삽입하는 것이 매우 유용합니다. 이 비 네트에 과정이 잘 설명 되어 있습니다.