Где в последовательности дерева вероятностных суффиксов встречается "е"?
В моих данных есть только недостающие данные (*
) на правой стороне последовательностей. Это означает, что последовательность не начинается с *
и ни одна последовательность не имеет никаких других маркеров после *
, Несмотря на это, PST (вероятностное суффиксное дерево), по-видимому, предсказывает 90% -ную вероятность начала с *
, Вот мой код:
# Load libraries
library(RCurl)
library(TraMineR)
library(PST)
# Get data
x <- getURL("https://gist.githubusercontent.com/aronlindberg/08228977353bf6dc2edb3ec121f54a29/raw/c2539d06771317c5f4c8d3a2052a73fc485a09c6/challenge_level.csv")
data <- read.csv(text = x)
# Load and transform data
data <- read.table("thread_level.csv", sep = ",", header = F, stringsAsFactors = F)
# Create sequence object
data.seq <- seqdef(data[2:nrow(data),2:ncol(data)], missing = NA, right= NA, nr = "*")
# Make a tree
S1 <- pstree(data.seq, ymin = 0.05, L = 6, lik = TRUE, with.missing = TRUE)
# Look at first state
cmine(S1, pmin = 0, state = "N3", l = 1)
Это создает:
[>] context: e
EX FA I1 I2 I3 N1 N2 N3 NR
S1 0.006821066 0.01107234 0.01218274 0.01208756 0.006821066 0.002569797 0.003299492 0.001554569 0.0161802
QU TR *
S1 0.01126269 0.006440355 0.9097081
Как может вероятность для *
быть 0.9097081
в самом начале последовательности, то есть после контекста e
?
Означает ли это, что контекст может появиться где-нибудь внутри последовательности, и что e
обозначает произвольную отправную точку где-то внутри последовательности?
1 ответ
PST является представлением модели Маркова переменной длины (VLMC). В качестве классической марковской модели предполагается, что VLMC является однородным (или стационарным), что означает, что условные вероятности результата с учетом контекста одинаковы в каждой позиции последовательности. Другими словами, контекст может появиться в любом месте последовательности. На самом деле, поиск контекстов осуществляется путем изучения дерева, которое должно применяться в любом месте последовательности.
В вашем примере для l=1
(l
равен 1 + длина контекста), вы ищите только контекст 0-длины, т. е. единственный возможный контекст - это пустая последовательность e
, Ваше состояние pmin=0, state=N3
(иметь вероятность больше 0 для N3
) эквивалентно никакому условию вообще. Таким образом, вы получаете общую вероятность наблюдать за каждым состоянием. Поскольку ваши последовательности (с отсутствующими состояниями) имеют одинаковую длину, вы получите те же результаты, используя TraMineR
с
seqmeant(data.seq, with.missing=TRUE)/max(seqlength(data.seq))
Чтобы получить распределение на первой позиции, вы можете использовать TraMineR
и посмотрите на первый столбец таблицы сечений распределений в последовательных позициях, возвращаемых
seqstatd(data.seq, with.missing=TRUE)
Надеюсь это поможет.