Вычислить лифт для отношения контекст-состояние в вероятностном дереве суффиксов?

PST дает мне вероятности и условные вероятности для различных контекстов и следующих состояний. Однако было бы очень полезно иметь возможность рассчитать подъем (и его значение) взаимосвязи между контекстом и следующим состоянием. Как я могу это сделать?

# 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 = 2)

Это дает несколько контекстов, один из которых:

[>] context: N2 
       EX         FA         I1         I2   I3         N1        N2         N3        NR         QU
S1 0.07692308 0.08076923 0.05769231 0.07692308 0.05 0.06923077 0.1038462 0.06153846 0.1269231 0.07307692
       TR         *
S1 0.08076923 0.1423077

Допустим, я хотел рассчитать подъем отношений между QU а также N3, Мы знаем, что условная вероятность N3 дано N2 является 0.05, Чтобы вычислить подъемную силу, я бы тогда просто разделил условную вероятность на безусловную вероятность результирующего состояния, например, так:

0.05/unconditional probability of N3

Если мы делаем seqstatf(data.seq) мы можем видеть, что доля N3 маркеры 0.01721715, Тогда это будет означать, что лифт:

0.05/0.01721715=2.90408110518

или было бы более целесообразно принять вероятность N3 дано e как указано cmine(S1, pmin = 0, state = "N3", l = 1)т.е. 0.001554569? Это приведет к увеличению:

0.05/0.001554569=32.163255539

что существенно выше...

1 ответ

Решение

Рассуждения верны. Однако проблема с seqstatf является то, что он не принимает отсутствующее состояние (*) в учетную запись. Вот как вы можете получить общую вероятность N3

nN3 <- sum(data.seq == 'N3')
nn <- nrow(data.seq)*ncol(data.seq)
(pN3 <- nN3/nn)

который дает 0.001556148,

Так что лифт будет здесь

ctx <- cmine(S1, pmin = 0, state = "N3", l = 2)
(liftN3 <- ctx$N2[,"N3"]/pN3)

т.е. 39.5,

Альтернативой, которая могла бы иметь больше смысла, было бы рассмотрение условных вероятностей, когда мы исключаем отсутствующее состояние, то есть те, которые получены с деревом без отсутствующего состояния.

Другие вопросы по тегам