绘制事件序列/事件序列聚类

Plot Event sequences / Event Sequences Clustering

也许这是一个非常无聊的问题,但我对此进行了研究但找不到答案。

我想以与使用 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) 是否可以计算距离矩阵,然后将聚类方法应用于事件序列?

谢谢!

你是对的。 seqplot 函数族仅适用于状态序列。

要将事件序列绘制为状态序列,您必须先将它们转换为状态序列。

假设您的事件序列是 TSE 格式(垂直时间戳事件形式),如 TraMineR 提供的 actcal.tse 示例文件,您可以使用 [=15] 将它们转换为状态序列=] 的配套 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. & Ritschard, G. (2014),"A decorated parallel coordinate plot for categorical longitudinal data",美国统计学家。卷。 68(2),第 98-103 页。 doi

希望这对您有所帮助。

关于事件序列的聚类,您可以使用配套 TraMineRextras 包的 seqedist 函数。

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. 和 Studer, M. (2013),"Exploratory Mining of Life Event Histories",In McArdle,J.J。 & Ritschard, G. (eds) 行为科学中探索性数据挖掘的当代问题。系列:定量方法论,第 221-253 页。纽约:劳特利奇。 Preprint