1

我正在使用 R 包TraMineR。我想通过使用命令来绘制频繁的事件序列seqpcplot。我之前对alphabetas 中的状态进行了编码,以使它们按字母顺序排列,这样当我使用seqdef命令计算序列而不指定labelsandstates选项时,我会获得以下输出:

[>] state coding:
       [alphabet]  [label]  [long label] 
     1  a.sin       a.sin    a.sin
     2  b.co0       b.co0    b.co0
     3  c.co1       c.co1    c.co1
     4  d.co2+      d.co2+   d.co2+
     5  e.ma0       e.ma0    e.ma0
     6  f.ma1       f.ma1    f.ma1
     7  g.ma2+      g.ma2+   g.ma2+
     8  h.sin0      h.sin0   h.sin0
     9  i.lp1       i.lp1    i.lp1
     10  l.lp2+      l.lp2+   l.lp2+
     11  m.lp1_18    m.lp1_18 m.lp1_18
     12  n.lp2_18    n.lp2_18 n.lp2_18

然后我通过使用将状态序列对象转换为事件序列对象seqecreate。当绘制事件序列时,seqpcplot我获得了一个非常漂亮的图表,其中状态在 y 轴上按字母顺序根据alphabet.

但是,我想在图表中使用更长的标签,所以我在命令中指定labelsandstates选项为seqdef

lab<-c("single", "cohabNOchildren","cohab1child","cohab2+children","marrNOchildren","marr1child","marr2+children","singleNOchildren","loneMother1child","loneMother2+children","loneMother1child_over18","loneMother2+children_over18")

获得:

[>] state coding:
       [alphabet]  [label]                     [long label] 
     1  a.sin       single                      single
     2  b.co0       cohabNOchildren             cohabNOchildren
     3  c.co1       cohab1child                 cohab1child
     4  d.co2+      cohab2+children             cohab2+children
     5  e.ma0       marrNOchildren              marrNOchildren
     6  f.ma1       marr1child                  marr1child
     7  g.ma2+      marr2+children              marr2+children
     8  h.sin0      singleNOchildren            singleNOchildren
     9  i.lp1       loneMother1child            loneMother1child
     10  l.lp2+      loneMother2+children        loneMother2+children
     11  m.lp1_18    loneMother1child_over18     loneMother1child_over18
     12  n.lp2_18    loneMother2+children_over18 loneMother2+children_over18

和以前一样,然后我计算了事件序列并使用以下方法绘制它们seqpcplot

seqpcplot(example.seqe, 
          filter = list(type = "function",
                  value = "cumfreq",
                  level = 0.8),
   order.align = "last",
   ltype = "non-embeddable",
   cex = 1.5, lwd = .9,
   lcourse = "downwards")

这次 y 轴上的状态是按字母顺序排列的状态,但按照我所希望的labelsandstates标签给出的顺序而不是。alphabet

有没有办法保持在alphabet绘图seqpcplot时给出的字母顺序以及指定labelsstates选项时给出的字母顺序,并且可能遵循与 不同的字母顺序alphabet

谢谢。

4

2 回答 2

2

我同意上面的解决方案。作为补充,这里有一些可能的解决方案:

使用seqecreate和中的alphabet参数seqpcplot

dat <- data.frame(id = factor(1, 1, 1),
                  timestamp = c(0, 20, 22),
                  event = factor(c("A", "B", "C")))
dat.seqe <- seqecreate(dat)
seqpcplot(dat.seqe, alphabet = c("C", "A", "B"))

seqecreate仅使用

dat <- data.frame(id = factor(1, 1, 1),
                  timestamp = c(0, 20, 22),
                  event = factor(c("A", "B", "C"),levels = c("C", "A", "B")))
dat.seqe <- seqecreate(dat)
seqpcplot(dat.seqe)

使用seqdef(此处原始类别与要在 y 轴上显示的标签不同)

dat <- data.frame(id = factor(1),
                  ev.0 = factor("AA", levels = c("CC", "AA", "BB")),
                  ev.20 = factor("BB", levels = c("CC", "AA", "BB")),
                  ev.22 = factor("CC", levels = c("CC", "AA", "BB")))
dat.seq <- seqdef(dat, var = 2:4, alphabet = c("CC", "AA", "BB"),
                  states = c("C", "A", "B"))
seqpcplot(dat.seq)

最后一个解决方案可能是您正在寻找的解决方案。希望能帮助到你。

于 2015-06-17T22:25:49.250 回答
1

alphabet函数的参数seqpcplot用于控制该顺序。就像是

seqpcplot(example.seqe,
   alphabet = lab, 
   filter = list(type = "function",
                  value = "cumfreq",
                  level = 0.8),
   order.align = "last",
   ltype = "non-embeddable",
   cex = 1.5, lwd = .9,
   lcourse = "downwards")

应该给你预期的情节。

于 2015-06-17T21:07:49.067 回答