2017-01-25 4 views
2

Вот мой код:Получение журнала правдоподобия из вероятностного дерева суффиксов

library(RCurl) 
library(TraMineR) 
library(PST) 

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) 

data.seq <- seqdef(data[2:nrow(data),2:ncol(data)], missing = "NA", right = "*") 

# Make a tree 
S1 <- pstree(data.seq, ymin = 0.05, L = 6, lik = TRUE, with.missing = F) 
logLik(S1) 

По какой-то причине он отказывается возвращать значение логарифмического правдоподобия? Почему это так? Как я могу получить значение логарифмического правдоподобия?

ответ

2

У вас есть плохие значения для аргументов missing и right в вашей команде seqdef, которая затем вызывает ошибку в pstree.

С

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) 
logLik(S1) 

мы получаем

'log Lik.' -31011.32 (df=47179) 

Обратите внимание, что поскольку у вас есть недостающие значения я поставил with.missing = TRUE в команде pstree.

===============

Игнорирование правильные missings, установите right='DEL' в seqdef.

seq <- seqdef(data[2:nrow(data),2:ncol(data)], missing = NA, right= "DEL") 
S2 <- pstree(seq, ymin = 0.05, L = 6, lik = TRUE, with.missing = F) 
logLik(S2) 

Я не знаю, что PST вычисляет, как logLik(S2) и почему мы здесь в NA. Вероятность генерации данных с помощью дерева S2 может быть получена с помощью функции predict, которая возвращает вероятность каждой последовательности в данных. Логарифмическое правдоподобие данных должно быть затем

sum(log(predict(S2, seq))) 

который дает

[>] 984 sequence(s) - min/max length: 1/32 
[!] sequences have unequal lengths 
[>] max. context length: L=6 
[>] found 1020 distinct context(s) 
[>] total time: 0.588 secs 
[1] -4925.79 
+0

Однако, все мои пропущенных значений находятся справа - там нет ни одного отсутствующего значения «внутри» из последовательности. Следовательно, примерно 90% всех моих событий - '*'. Разве это не исказит вероятности? – histelheim

+0

Например, когда я делаю 'cmine (S1, pmin = 0, state =" good_idea ", l = 1)' Я получаю вероятность 'e', что составляет 47% - это не должно быть возможным с этим набором данных , так как никакая последовательность не начинается с '*'. – histelheim

+0

Я отредактировал ответ, чтобы показать, как игнорировать недостающий конец последовательностей. И, вы правы, мы получаем «NA» logLik.Я предлагаю вам спросить автора пакета о том, что этот 'logLik' должен быть (он не возвращает то же значение, что и метод, который я предлагаю в ответе!). – Gilbert

2

В самом деле, существует проблема, когда вычисление вероятности моделей, установленных на последовательности разной длины. Это исправлено. Новая версия пакета PST (0.94) будет доступен в течение нескольких часов на R-Фордж, чтобы установить:

install.packages("PST", repos="http://R-Forge.R-project.org") 

и позже на CRAN.

Обратите внимание, что поскольку ваши последовательности не содержат какие-либо отсутствующих значений, но имеют разную длину, вы не должны установить ни with.missing=TRUE при использовании pstree функции, ни какого-либо параметра при использовании seqdef.

Теперь при запуске следующего кода:

library(RCurl) 
library(TraMineR) 
library(PST) 

x <- getURL("https://gist.githubusercontent.com/aronlindberg/08228977353bf6dc2edb3ec121f54a29/raw/c2539d06771317c5f4c8d3a2052a73fc485a09c6/challenge_level.csv") 
data <- read.csv(text = x) 

data.seq <- seqdef(data[2:nrow(data),2:ncol(data)]) 

# Make a tree 
S1 <- pstree(data.seq, ymin = 0.05, L = 6) 

я получаю:

> [email protected] 
[1] -4925.79 
+0

См. Комментарий в вопросе: http://stackoverflow.com/questions/41968530/fitting-a-vlmc-to-very-long-sequences - не распознавая недостающие значения, вызывает проблемы в 'tune()' и 'cmine() '- как я могу обойти это? – histelheim

Смежные вопросы