我正在使用R包TraMineR进行一些学术研究序列分析 .
我想找到一个模式,定义为某人在目标公司,然后出去,然后回到目标公司 .
(简化)我将州A定义为目标公司; B作为外部工业公司,C作为内部工业公司 .
所以我想要做的是找到具有特定模式A-B-A或A-C-A的序列 .
在查看此问题(Strange number of subsequences?)并阅读用户指南后,特别是以下段落:
4.3.3子序列如果u的所有连续元素ui以相同的顺序出现在x中,则序列u是x的子序列,我们简单地用u x表示 . 根据这个定义,非共享>状态可以出现在序列u和x两者之间 . 例如,u = S; M是x = S的>子序列; U;米; MC .
和
7.3.2查找具有给定子序列的序列seqpm()函数计算包含给定子序列的序列数并收集其行索引号 . 该函数返回包含两个元素的列表 . 第一个元素MTab只是一个表,其中包含数据中给定子序列的出现次数 . 请注意,即使子序列在序列中出现多次,每个序列也只计算一次出现次数 . 列表的第二个元素MIndex给出包含子序列的序列的行索引号 . 这些索引号可用于访问相关序列(下面的示例) . 由于在字符串中搜索模式更容易,因此当使用带有TRUE选项的seqconc函数时,函数rst会以此格式转换序列数据 .
我得出结论,seqpm()是我完成工作所需的功能 .
所以我有如下序列:A-A-A-A-A-B-B-B-B-B-A-A-A-A-A
而且,根据我在mentiod源上发现的子序列的定义,我想通过使用我可以找到那种序列:
seqpm(sequence,"ABA")
但这不会发生 . 为了找到我需要输入的示例序列
seqpm(sequence,"ABBBBBA")
这对我需要的东西不是很有用 .
-
所以你们看到我可能错过了哪些东西?
-
如何检索从A到B和返回A的所有序列?
-
有没有办法让我找到从A到其他任何东西再回到A?
非常感谢 !
1 回答
seqpm
帮助页面的 Headers 是"Find substring patterns in sequences",这就是函数实际执行的操作 . 它搜索包含给定子字符串(而不是子序列)的序列 . 似乎用户指南中存在配方错误 .找到包含给定子序列的序列的解决方案是使用
seqecreate
将状态序列转换为事件序列,然后使用seqefsub
和seqeapplysub
函数 . 我使用TraMineR
附带的actcal
数据来说明 .希望这可以帮助 .