2

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

我想以与使用seqIplotseqfplot和绘制状态序列相同的方式绘制我的事件序列。一般来说。seqdplotseqmtplotseqplot

当我尝试这样做时,我收到消息:

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

谢谢 !

4

2 回答 2

3

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

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

假设您的事件序列是 TSE 格式(垂直时间戳事件形式)作为actcal.tse提供的示例文件,您可以使用配套包TraMineR将它们转换为状态序列。TSE_to_STSTraMineRextras

对于转换,您必须指定在每个事件之后您所处的状态。您可以通过使用该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),“分类纵向数据的装饰平行坐标图”,美国统计学家。卷。68(2),第 98-103 页。土井

希望这可以帮助。

于 2015-03-10T15:57:36.583 回答
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. & Studer, M. (2013),“生命事件历史的探索性挖掘”,在 McArdle, JJ 和 Ritschard, G. (eds) 行为科学中探索性数据挖掘的当代问题。系列:定量方法论,第 221-253 页。纽约:劳特里奇。预印本

于 2015-03-10T16:04:57.867 回答