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

标签 r traminer

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

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

谢谢!

最佳答案

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

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

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

对于转换,您必须指定每个事件之后您所处的状态。您可以通过使用 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 页。 doi

希望这有帮助。

关于r - 绘制事件序列/事件序列聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28965909/

相关文章:

r - 如何在 R 中读取具有不同列数的 CSV 文件

xml - 从 R 中的原始 html 中提取数据

r - 在图表上绘制多条线 : geom_path: Each group consists of only one observation. 是否需要调整群体审美?

markov-chains - "e"出现在概率后缀树序列中的哪个位置?

traminer - 序列回归树中的缩写

r - 给出平均时间图 (seqmtplot) 的准确值

r - TraMineR - 平均图的标准差和 CI

R 以任意顺序比较两个数据集中每一行的重复值+

r - 确定基于序列(距离)的聚类的理想聚类数

r - 是否可以在 data.table 包中直接 fread 跳过错误的行