我有一个数据集,其格式类似于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?
答案 0 :(得分:0)
TSE_to_STS函数旨在将带有时间戳的事件序列转换为状态序列。这是通过定义事件发生后我们所处的状态来完成的。在“ stm = NULL”的情况下,每个事件之后的状态都被表征为当前状态和事件的组合。
您的示例不可复制,因为:
timestamp
示例命令中混合了event
和TSE_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年再次出现时,它不会更改状态,因为事件6的出现导致7
时已经发生8.7.6
。后者将于第二年(即2014年)生效。
可以通过向stm
函数提供TSE_to_STS
矩阵来定义用于确定每个事件发生后的状态的不同方案。使用seqe2stm
函数来定义stm
矩阵。 (请查看后一个功能的帮助页面以获取更多详细信息。)