PST何时从左到右和从右到左显示上下文?
问题描述:
包是否总是显示从右到左的上下文?PST何时从左到右和从右到左显示上下文?
在query()
函数中,我们使用字符串来表示上下文。如果我假设的背景下从右到左(因为它似乎是在print()
和cmine()
功能)指定的,我很感兴趣的序列A->B->C
中,那么我应该查询:
query(S1.p1, "C-B-A")
?
此外,在predict()
函数中,我们使用seqdef()
来定义要预测的序列。这是否意味着我应该从左到右指定它们,正如TraMineR通常那样?
x <- seqdef("A-B-C)
predict(S1.p1, x)
?
答
在概率性后缀树(PST)中,当我们从根开始读取分支时,分支定义从右到左的后缀。在第一级,你有后缀的最后一个元素,在第二级你有元素在最后一个元素之前,等等。打印的树显示在左边的根,并且从左到右展开。尽管如此,在打印结果的节点中显示的后缀应该从左到右自然地阅读。例如,节点a-b-c
表示末尾带有c
的后缀。通过在左侧添加a
从节点b-c
获得这样的节点。
对于cmine
的结果也是如此。对于每个发现的情况,例如a-b-c
,cmine
给出了在上下文之后立即获得每个可能状态的概率,即在示例中的c
之后。
总之,序列和上下文总是从左到右显示,即使上下文是从右到左构建的。
所以,如果你想查询序列A->B->C
,只需使用query(S1.p1, "A-B-C")
。同样,要预测具有predict
的特定序列,请自然地从左到右定义序列。
答
序列应该从左到右读取。下面的代码提供了此验证:
library(PST)
data.seq <- seqdef("A-B-C-D-E-F")
S1.test <- pstree(data.seq, ymin = 0.001, lik = FALSE, with.missing = FALSE)
print(S1.test)
--(e)-[ p=(0.2,0.2,0.2,0.2,0.2,0.2) - n=6 ]
`--(A)-[ p=(0.001,0.995,0.001,0.001,0.001,0.001) - n=1 ]--|
`--(B)-[ p=(0.001,0.001,0.995,0.001,0.001,0.001) - n=1 ]
`--(A-B)-[ p=(0.001,0.001,0.995,0.001,0.001,0.001) - n=1 ]--|
`--(C)-[ p=(0.001,0.001,0.001,0.995,0.001,0.001) - n=1 ]
`--(B-C)-[ p=(0.001,0.001,0.001,0.995,0.001,0.001) - n=1 ]
`--(A-B-C)-[ p=(0.001,0.001,0.001,0.995,0.001,0.001) - n=1 ]--|
`--(D)-[ p=(0.001,0.001,0.001,0.001,0.995,0.001) - n=1 ]
`--(C-D)-[ p=(0.001,0.001,0.001,0.001,0.995,0.001) - n=1 ]
`--(B-C-D)-[ p=(0.001,0.001,0.001,0.001,0.995,0.001) - n=1 ]
`--(A-B-C-D)-[ p=(0.001,0.001,0.001,0.001,0.995,0.001) - n=1 ]--|
`--(E)-[ p=(0.001,0.001,0.001,0.001,0.001,0.995) - n=1 ]
`--(D-E)-[ p=(0.001,0.001,0.001,0.001,0.001,0.995) - n=1 ]
`--(C-D-E)-[ p=(0.001,0.001,0.001,0.001,0.001,0.995) - n=1 ]
`--(B-C-D-E)-[ p=(0.001,0.001,0.001,0.001,0.001,0.995) - n=1 ]
`--(A-B-C-D-E)-[ p=(0.001,0.001,0.001,0.001,0.001,0.995) - n=1 ]--|
plot(S1.test)
这也表明,所绘制的树应该从底部读到顶部。