2017-03-03 124 views
1

包是否總是顯示從右到左的上下文?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) 

回答

1

在概率性後綴樹(PST)中,當我們從根開始讀取分支時,分支定義從右到左的後綴。在第一級,你有後綴的最後一個元素,在第二級你有元素在最後一個元素之前,等等。打印的樹顯示在左邊的根,並且從左到右展開。儘管如此,在打印結果的節點中顯示的後綴應該從左到右自然地閱讀。例如,節點a-b-c表示末尾帶有c的後綴。通過在左側添加a從節點b-c獲得這樣的節點。

對於cmine的結果也是如此。對於每個發現的情況,例如a-b-c,cmine給出了在上下文之後立即獲得每個可能狀態的概率,即在示例中的c之後。

總之,序列和上下文總是從左到右顯示,即使上下文是從右到左構建的。

所以,如果你想查詢序列A->B->C,只需使用query(S1.p1, "A-B-C")。同樣,要預測具有predict的特定序列,請自然地從左到右定義序列。

1

序列應該從左到右讀取。下面的代碼提供了此驗證:

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) 

Validation of bottom-to-top reading of plotted tree

這也表明,所繪製的樹應該從底部讀到頂部。