使用TraMineRextras将TSE数据转换为STS

问题描述 投票:1回答:1

我有一个格式化为TSE的数据集:

事件是进入模式的代码(1是导出,2到5是partenariat,6到7是Acq.Mino,8是Acq_Majo)。国家没有使用。

我想将此表转换为序列对象,我理解TSE_to_STS函数可以帮助我这样做。然而,似乎输出并不像我预期的那样。

我跑了代码:

seq.sts<-TSE_to_STS(seq.tse.data,id = 1, timestamp = 2, event = 3, stm =NULL, tmin = 1935,tmax = 2018, firstState = "None").

输出是针对公司7的:

> seq.sts[7,]

我的第一个惊喜是事件发生在第n年,并在第n + 1年编码(在上面的输出中为红色)。我的第二个惊喜是,在2013年和2015年,我失去了有关泰国第二次进入的信息(以上输出中的黄色)。第三,我不明白为什么要添加各州:为什么我们在2012年有Acq_Mino.Acq_Majo而不只是Acq_Mino?

type-conversion sequence traminer
1个回答
0
投票

TSE_to_STS函数用于将带时间戳的事件序列转换为状态序列。这是通过定义事件发生后我们所处的状态来完成的。使用“stm = NULL”,每个事件之后的状态被表征为当前状态和事件的组合。

您的示例不可重现,因为:

  1. 我们不知道您应用于从1到8编码的事件的重新标记,以及
  2. 似乎你在timestamp示例命令中混合了eventTSE_to_STS参数。

我在下面用一个可重复的例子说明(基于你的例子,除了我们不使用的country列)。

library(TraMineRextras)
seq.tse.data <- structure(list(
  ID = c(1L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 
         4L, 4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 
         6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L),
  Year = c(2008L, 2010L, 2012L, 2007L, 2009L, 2010L, 2012L,
           2013L, 1996L, 1997L, 1999L, 2003L, 2006L, 2008L, 
           2012L, 2007L, 2007L, 2008L, 2003L, 2007L, 2007L,
           2009L, 2009L, 2011L, 2014L, 2016L, 2006L, 2009L, 
           2011L, 2013L, 2013L, 2015L, 2015L, 2016L), 
  Event = c(8L, 7L, 8L, 5L, 1L, 8L, 8L, 8L, 3L, 3L, 3L,
            3L, 3L, 8L, 1L, 8L, 8L, 8L, 7L, 8L, 8L, 8L,
            8L, 8L, 8L, 8L, 8L, 8L, 7L, 7L, 6L, 7L, 6L, 
            8L)), 
  class = "data.frame", row.names = c(NA, -34L)
  )
seq.tse.data[seq.tse.data$ID==7,]

#    ID Year Event
# 27  7 2006     8
# 28  7 2009     8
# 29  7 2011     7
# 30  7 2013     7
# 31  7 2013     6
# 32  7 2015     7
# 33  7 2015     6
# 34  7 2016     8

seq.sts <- TSE_to_STS(seq.tse.data,
                 id = 1, timestamp = 2, event = 3, 
                 stm =NULL, tmin = 1990, tmax = 2018,
                 firstState = "None")

对于id 7,我们得到:

seq.sts[7,which(names(seq.sts)=="a2005"):which(names(seq.sts)=="a2018")]

#   a2005 a2006 a2007 a2008 a2009 a2010 a2011 a2012 a2013 a2014 a2015 a2016 a2017 a2018
# 7  None  None     8     8     8     8     8   8.7   8.7 8.7.6 8.7.6 8.7.6 8.7.6 8.7.6   

在这个例子中,对于id=7,第一个事件(8)发生在2006年。因此,状态是None直到2006年并且之后切换到8。 2011年,事件7发生。因此,在明年(2012年),我们切换到州'事件8和7已经发生',表示为8.7。当7在2013年再次出现时,它不会改变状态,因为7已经发生,而事件6的发生导致状态8.7.6。后者在明年即2014年生效。

可以通过向stm函数提供TSE_to_STS矩阵来定义用于确定在每个事件发生之后得到的状态的不同方案。使用seqe2stm函数定义stm矩阵。 (有关更多详细信息,请查看后一个函数的帮助页面。)

© www.soinside.com 2019 - 2024. All rights reserved.