也许这是一个严峻的问题,但我对它进行了研究,但无法找到答案。
我希望以与使用seqIplot
,seqfplot
,seqdplot
和seqmtplot
绘制状态序列相同的方式绘制事件序列。 seqplot
一般来说。
当我尝试这样做时,我收到了消息:
Error: data is not a sequence object, use seqdef function to create one
让我相信这些功能只适用于状态序列。
在用户指南第10节中,他们仅举例说明了子序列的示例。但那些并不完全相同。
1)有没有办法生成事件序列的上述图?其中状态将是过渡。
当我尝试计算距离矩阵时,我得到了类似的错误:
Error: [!] data is not a state sequence object, use 'seqdef' function to create one
2)是否有可能计算距离矩阵,然后将聚类方法应用于事件序列?
谢谢!
答案 0 :(得分:3)
你是对的。 seqplot
函数系列仅用于状态序列。
要将事件序列绘制为状态序列,必须先将它们转换为状态序列。
假设您的事件序列采用TSE格式(垂直时间戳事件形式)作为actcal.tse
提供的TraMineR
示例文件,您可以使用TSE_to_STS
将它们转换为状态序列随附的TraMineRextras
包。
对于转换,您必须指定每个事件后的状态。您可以通过使用seqe2stm
函数创建转换矩阵来实现。该矩阵的每个单元格应该给出新的状态,当我们处于相应的行状态(行名称)时,会发生列事件(列名称)。
为了说明,以下是TSE_to_STS
data(actcal.tse)
events <- c("PartTime", "NoActivity", "FullTime", "LowPartTime")
## States defined by last occurred event (forgetting all previous events).
stm <- seqe2stm(events, dropList=list("PartTime"=events[-1],
NoActivity=events[-2], FullTime=events[-3],
LowPartTime=events[-4]))
mysts <- TSE_to_STS(actcal.tse[1:100,], id=1, timestamp=2, event=3,
stm=stm, tmin=1, tmax=12, firstState="None")
一旦以STS形式获得状态序列,就可以创建状态序列对象并绘制它们。
my.seq <- seqdef(mysts)
seqdplot(my.seq)
或者,您可以使用seqpcplot
函数制作事件序列的平行坐标图。该功能的帮助页面上有很多示例。有关情节的详细信息,请参阅
Bürgin,R。&amp; Ritschard,G。(2014),“分类纵向数据的装饰平行坐标图”,美国统计学家。卷。 68(2),pp.98-103。 doi
希望这有帮助。
答案 1 :(得分:2)
关于事件序列的聚类,您可以使用随附seqedist
包的TraMineRextras
函数。
data(actcal.tse)
actcal.seqe <- seqecreate(actcal.tse[1:200,])[1:6,]
## We have 8 different event in this dataset
idcost <- rep(1, 8)
dd <- seqedist(actcal.seqe, idcost=idcost, vparam=.1)
有关距离的说明,你可以查看论文
Ritschard,G.,Bürgin,R。&amp; Studer,M。(2013),“探索生命事件历史的挖掘”,在McArdle,J.J。 &安培; Ritschard,G。(编辑)行为科学中探索性数据挖掘的当代问题。系列:定量方法论,第221-253页。纽约:劳特利奇。 Preprint