2017-03-03 8 views
1

Zeigt das Paket immer Kontexte von rechts nach links an?Wann zeigt PST Kontexte von links nach rechts und von rechts nach links an?

In der query() Funktion verwenden wir eine Zeichenfolge, um einen Kontext darzustellen. Wenn ich gehe davon aus, dass der Kontext von rechts angegeben ist nach links (wie in den print() und cmine() Funktionen zu sein scheint), und ich bin interessiert in der Folge A->B->C, dann sollte ich Abfrage für:

query(S1.p1, "C-B-A") 

?

Weiterhin verwenden wir in der predict() Funktion seqdef(), um Sequenzen zu definieren, für die vorhergesagt werden kann. Heißt das, ich sollte sie von links nach rechts angeben, wie es bei TraMineR normalerweise der Fall ist?

x <- seqdef("A-B-C) 
predict(S1.p1, x) 

?

Antwort

1

In einem probabilistischen Suffixbaum (PST) definiert ein Zweig ein Suffix von rechts nach links, wenn wir mit dem Lesen von der Wurzel beginnen. Auf der ersten Ebene haben Sie das letzte Element des Suffix, auf Stufe 2 haben Sie das Element vor dem letzten Element usw. Der gedruckte Baum wird mit der Wurzel auf der linken Seite angezeigt und von links nach rechts erweitert. Trotzdem sollten die Suffixe, die in einem Knoten des Druckergebnisses angezeigt werden, natürlich von links nach rechts gelesen werden. ZB bedeutet ein Knoten a-b-c am Ende ein Suffix mit c. Ein solcher Knoten wird von dem Knoten b-c durch Hinzufügen von a auf der linken Seite erhalten.

Das gleiche gilt für das Ergebnis cmine. Für jeden gefundenen Kontext, z.B. a-b-c, cmine gibt die Wahrscheinlichkeit, jeden der möglichen Zustände unmittelbar nach dem Kontext zu erhalten, d. H. Nach c in dem Beispiel.

Zusammenfassend werden Sequenzen und Kontexte immer von links nach rechts angezeigt, obwohl Kontexte von rechts nach links aufgebaut sind.

Also, wenn Sie Abfrage für die Sequenz wollen, verwenden Sie einfach query(S1.p1, "A-B-C"). Um eine spezifische Sequenz mit predict vorherzusagen, definieren Sie die Sequenz natürlich von links nach rechts.

1

Die Sequenzen sollten von links nach rechts gelesen werden. Der folgende Code stellt die Validierung dieses:

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

Es zeigt auch, dass die gezeichnete Baum von unten nach oben gelesen werden sollte.

Verwandte Themen