如何表示多通道事件序列

how to represent multichannel event sequences

我正在尝试使用 TraMineR,但我愿意 feedback/references/links 了解有关如何表示多通道或分层事件序列以及处理它的算法的更多信息。

我有一个复杂的事件结构,我试图找出如何将其表示为一个序列。有不同类型的事件。每个事件类型可能有一组不同的字段(以及不同数量的字段)。例如,年龄可能是一种事件类型中的字段,而身高可能是另一种事件类型中的字段。我的第一直觉(我相信这是一种常见的方法)是“扁平化”一切,例如每个可能的事件值组合构成一个唯一的事件类型。但是,这可能会遗漏通用事件类型中的模式。

例如,假设我是一名养狗人,喝了很多咖啡,我想看看我的 coffee/dog 购买习惯是否有规律(是的,愚蠢的例子)。我可能会有这样的事件:

- Bought dog
- Breed: hound
- Sex: female

- Bought coffee
- Store: Starbucks
- Roast: dark

- Bought dog
- Breed: hound
- Sex: female

- Bought coffee 
- Store: Starbucks
- Roast: light

- Bought dog
- Breed: Doberman pincher
- Sex: male

为了扁平化数据,我可以说每一个独特的商店和烘焙组合都是一个独特的咖啡购买事件。此外,品种和性别的每一个独特组合都是独特的狗购买事件。这种方法会将上面的示例变成 5 种不同的事件类型(而不是 2 种带字段的事件类型)。这种表示可以检测到如下模式:如果我从星巴克喝了 2 杯深色烘焙咖啡,那么我更有可能被一只雄性杜宾犬喝。

但是,此表示可能会遗漏更多不依赖于事件中的字段值的一般模式。例如,可能是我一般喝了两杯咖啡就简单地买了一只狗。

我希望能够在 "levels" 处检测到模式,但不确定如何表示事件才能做到这一点。当然,一种方法是同时使用这两种表示,然后将两者的结果结合起来。

所以,问题是: 1. 有没有 links/citations 涉及到这个问题的论文? 2. 这是一个普遍问题吗? 3. 关于如何表示这些事件有什么建议吗? 4. 关于如何在 TraMineR 中使用它们的任何建议 5. 对处理这类事情的算法有什么建议/链接/参考吗? 6. 有什么想法吗?

谢谢!!!

这其实和这里问的问题很相似(虽然他们不知道引用"multi-channel"而且标题含糊):Multiple events in traminer

TraMineR 支持使用以下函数处理多通道序列: seqdistmc

我认为,一般方法就是完全按照我概述的 "flatten" 解决方案进行操作。在这种情况下,您将每个通道的值组合成一种事件类型。例如在我的示例中,dog.hound.female 将是一个带有一个 channel/field 的事件,以替换我示例中具有 3 个独立 fields/channels 的第一个事件。然后,您可以使用典型的函数来查找距离、子序列等。您确实可以选择设置替代成本和查找距离,因此它有一些额外的选项来执行此 multi-channel 方法。如果您的通道长度不同或有间隙,它还会处理缺失值。

这也类似于上面链接主题的答案中的建议,使用本机 R 函数 interaction