2017-04-17 3 views
1

の状態のシーケンスに関連するプロットを生成しようとしています。発生日はne3(下のデータ)です。私は2004年から2015年までの11年間のデータを持っています。発症日(ne3$date_inc)もこの11年間の期間内であるが、これらの発症日は異なるIDについて等しくない。私は参照として発生日を持つことを望んでいるので、各IDのこの発生日の前後の状態の分布は、seqdplotを使用して視覚化することができます。ここで、x軸は発生日(すなわち、発生日以降)。しかし、発生日に応じて州の日付を参照することは、発生率の前に発生する州の負の値になります。もしこれが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 

注SPELLデータを変換する配列の最大長さを計算し、開始日と終了日は、データ形式で提供されているので、その、毎日の細分性が使用されます。その結果、我々は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

による配列の長さに、それはプロットを生成するために数分かかることに注意してください。毎日のデータの代わりに毎月のデータを使用することをお勧めします。

関連する問題