2017-01-27 2 views
2

Il semble que ne peut pas prédire les probabilités conditionnelles de l'état suivant après des contextes qui consistent en un seul état, par ex. EX-EXPrédiction de probabilités conditionnelles basées sur des contextes avec seulement 1 état

Tenir compte de ce code:

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

La ligne context <- seqdef("EX-EX") rendements:

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

qui signifie que predict() ne peut être exécutée.

Comment est-ce que je peux prédire les probabilités conditionnelles de l'état suivant basé sur des contextes qui ont seulement 1 état, qui peut être répété plusieurs fois?

Répondre

2

Il s'agit d'un numéro de seqdef qui a été corrigé depuis la version 1.8-12.

Voici ce que je reçois avec 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 

Notez que j'ai remplacé votre S1.p1 indéfini S1.

+0

Cela fonctionne pour les contextes qui répètent le même marqueur, par ex. 'EX-EX'. Cependant, les contextes qui ont 1 marqueur sont longs, par ex. 'EX' ne sont toujours pas calculés, mais ici le problème semble être dans' predict() 'pas dans' seqdef() ' – histelheim

+1

Pour' EX', qui n'est pas vraiment une séquence, sa probabilité est simplement sa probabilité d'occurrence dans les données. Vous l'obtenez par exemple comme 'seqstatf (data.seq) [" EX ", 2]/100'. – Gilbert