2017-01-27 2 views
2

Похоже, что не может предсказать условные вероятности следующего состояния после контекстов, которые состоят из одного состояния, например. EX-EXПрогнозирование условных вероятностей на основе контекстов только с одним состоянием

Рассмотрим этот код:

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

# Mine the context 
context <- seqdef("EX-EX") 
p_context <- predict(S1.p1, context, decomp = F, output = "prob") 

линии context <- seqdef("EX-EX") выходы:

[>] 1 distinct states appear in the data: 
    1 = EX 
Error: 
[!] alphabet contains only one state 

, что означает, что predict() не может быть выполнена.

Как я могу предсказать условные вероятности следующего состояния на основе контекстов, которые имеют только 1 состояние, которое может повторяться несколько раз?

ответ

2

Это вопрос seqdef, который был исправлен с версии 1.8-12.

Вот что я получаю с TraMineR 1.8-13

> context <- seqdef("EX-EX") 
[>] 1 distinct states appear in the data: 
    1 = EX 
[>] state coding: 
     [alphabet] [label] [long label] 
    1 EX   EX  EX 
[>] 1 sequences in the data set 
[>] min/max sequence length: 2/2 
> p_context <- predict(S1, context, decomp = F, output = "prob") 
[>] 1 sequence(s) - min/max length: 2/2 
[>] max. context length: L=6 
[>] found 2 distinct context(s) 
[>] total time: 0.019 secs 
> p_context 
      prob 
[1] 0.000476372 

Обратите внимание, что я заменил свой неопределенную S1.p1 с S1.

+0

Это работает для контекстов, которые повторяют один и тот же маркер, например. 'EX-EX'. Однако контексты, которые имеют длину 1 маркер, например, 'EX' все еще не вычисляются, но здесь проблема, похоже, находится в' прогнозе() 'не в' seqdef() ' – histelheim

+1

Для' EX', что на самом деле не является последовательностью, его вероятность - это просто ее вероятность появления в данные. Вы получите его, например, как 'seqstatf (data.seq) [" EX ", 2]/100'. – Gilbert

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