2017-04-17 9 views
1

시퀸스와 관련된 플롯을 생성하려고합니다. 발생 날짜는 ne3 (아래 데이터)과 관련되어 있습니다. 나는 2004 년에서 2015 년까지 11 년 동안 데이터를 보유하고있다. 발병 날짜 (ne3$date_inc)도이 11 년 기간 내에 있지만, 이러한 발병 날짜는 다른 ID에 대해 동일하지 않습니다. 각 ID에 대한이 발생 날짜 전후의 상태 분포가 seqdplot을 사용하여 시각화 될 수 있도록 참조 날짜로 발생 날짜를 가지려고합니다. 여기서 x 축은 발생 날짜 (예 : 몇 개월 전)에 따라 상호 참조를 갖습니다. 발생 일 이후). 그러나 발병 날짜에 따라 주 날짜를 0으로 언급하면 ​​발병 이전에 발생하는 주에 대해 음의 값을 갖게됩니다. 이것이 TraMineR을 사용하여 수행 할 수 있다면 어떤 생각이십니까? 아니면 다른 제안?TraMineR을 사용하여 발병 날짜에 따라시 각화를 시각화합니다

library(TraMineR) 
ne2 <- structure(list(id = c(4885109L, 4885109L, 4885109L, 7673891L, 
    11453161L, 13785017L, 13785017L, 16400365L), status = structure(c(4L, 
    2L, 3L, 4L, 4L, 1L, 5L, 4L), .Label = c("A", "B", "C", "D", "E" 
    ), class = "factor"), date_start = structure(c(12432, 15262, 
    15385, 12432, 12432, 12432, 14318, 12432), class = "Date"), date_end = structure(c(15262, 
    15385, 16450, 16450, 16450, 14318, 16450, 16450), class = "Date")), class = "data.frame", .Names = c("id", 
    "status", "date_start", "date_end"), row.names = c(NA, -8L)) 

ne3 <- structure(list(id = c(4885109L, 7673891L, 11453161L, 13785017L, 
     16400365L), date_inc = structure(c(15170, 13406, 13528, 13559, 
     15598), class = "Date")), .Names = c("id", "date_inc"), class = "data.frame", row.names = c(NA, 
     -5L)) 

답변

1

다음은 시퀀스를 발생 날짜별로 정렬하는 방법입니다.

SPELL 데이터를 TraMineR에서 사용하는 STS 형식으로 변환하는 것으로 시작합니다. 시퀀스가 100보다 길기 때문에 시퀀스를 저장할 테이블의 최대 열 수 (limit)를 지정해야합니다. 그래서 우리는 먼저

limit <- max(ne2$date_end) - min(ne2$date_start) 

지금 우리가 STS 형태로

ne2.sts <- seqformat(ne2, id='id', begin='date_start', end='date_end', status='status', 
        from='SPELL', to='STS', limit=as.numeric(limit), process=FALSE) 

dim(ne2.sts) 
## [1] 5 4019 

참고 맞춤법 데이터를 변환 시퀀스의 최대 길이를 계산 시작과 종료 날짜는 데이터 형식으로 제공되기 때문에 그하는 매일 시간 세분화가 사용됩니다. 결과적으로 우리는 4019 일의 매우 긴 시퀀스를 얻습니다.

이제 우리는 발병 날짜를 맞추기 위해 시퀀스를 이동해야합니다. 이것은 seqstart 기능이 TraMineRextras 인 경우에 수행 할 수 있습니다.

변화는 발생 날짜와 최소치 사이의 차이입니다. 그래서 우리는

ne3$bd <- ne3$date_inc - min(ne3$date_inc) + min(ne2$date_start) 

으로 새로운 시작 날짜를 설정 우리는, 우리는 순서를 이동 seqstart

library(TraMineRextras) 

에 액세스 상태 시퀀스 객체를 생성 seqdplot와 함께 음모 TraMineRextras을로드합니다. 또한 발생 일로부터 일수로 x 레이블을 정의합니다. 때문에 시퀀스의 길이에, 그것은 플롯을 생성하는 데 몇 분 정도 소요

ne2.sts.a <- seqstart(ne2.sts, data.start=min(ne2$date_start), new.start=ne3$bd) 
inc.pos <- as.numeric(ne3$date_inc[1] - ne3$bd[1]) 
xtlab <- 1:ncol(ne2.sts.a) - inc.pos + 1 
ne2.a.seq <- seqdef(ne2.sts.a, xtstep=365, cnames=xtlab) 
seqdplot(ne2.a.seq, border=NA) 

chronogram of shifted sequences

참고. 일일 데이터 대신 월별 데이터를 사용하는 것이 좋습니다.