绘制事件序列/事件序列群集

时间:2015-03-10 14:08:09

标签: r traminer

也许这是一个严峻的问题,但我对它进行了研究,但无法找到答案。

我希望以与使用seqIplotseqfplotseqdplotseqmtplot绘制状态序列相同的方式绘制事件序列。 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)是否有可能计算距离矩阵,然后将聚类方法应用于事件序列?

谢谢!

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