2017-01-31 6 views
2

Я пытаюсь установить VLMC в набор данных, где самая длинная последовательность - 296 состояний. Я делаю это, как показано ниже:Установка VLMC на очень длинные последовательности

# Load libraries 
library(PST) 
library(RCurl) 
library(TraMineR) 

# Load and transform data 
x <- getURL("https://gist.githubusercontent.com/aronlindberg/08228977353bf6dc2edb3ec121f54a29/raw/241ef39125ecb55a85b43d7f4cd3d58f617b2ecf/challenge_level.csv") 
data <- read.csv(text = x) 

data.seq <- seqdef(data[,2:ncol(data)], missing = NA, right = NA, nr = "*") 
S1 <- pstree(data.seq, ymin = 0.01, lik = TRUE, with.missing = TRUE, nmin = 2) 

Это, однако, дает следующее сообщение об ошибке:

Error in res[i, , drop = FALSE] : subscript out of bounds 

Как я могу подобрать модель для данных с последовательностями это долго? Есть ли хорошие обоснования для ограничения длины в модели?

ответ

3

Проблема возникает из-за ваших данных. Не устанавливая L в функции pstree, вы имеете в виду, что хотите подобрать модель максимального порядка. Фитинг процесс выдает ошибку при L = 8, так как вы Nmin = 2, но в этом порядке только один контекст Nmin = 2

> cprob(data.seq, L=8, nmin=2) 
[>] 21 sequences, min/max length: 19/296 
[>] computing prob., L=8, 2043 distinct context(s) 
[>] removing 1894 context(s) where n<2 
[>] total time: 0.156 secs 
         EX FA I1 I2 I3 N1 N2 N3 NR QU TR [n] 
I2-I3-FA-I3-EX-I3-EX-I2 0 0.5 0 0.5 0 0 0 0 0 0 0 2 

Подгонка модели с использованием L = 8 работает отлично

S1 <- pstree(data.seq, ymin = 0.01, lik = TRUE, nmin = 2, L=8) 

[>] 21 sequence(s) - min/max length: 19/296 
[>] max. depth L=8, nmin=2, ymin=0.01 
    [L] [nodes] 
     0  1 
     1  11 
     2  99 
     3  368 
     4  340 
     5  126 
     6  34 
     7  4 
     8  1 
[>] computing sequence(s) likelihood ... (0.804 secs) 
[>] total time: 2.968 secs 

Опять же, вам не нужно использовать какие-либо 'отсутствует', 'правый' или 'NR' вариант в seqdef(), ни 'with.missing' в pstree()

Бест, Алексис

+0

You правильно, что мне не нужны «недостающие» для r функция 'pstree()', однако, если я не использую параметр 'missing', тогда проблемы возникают позже, когда я пытаюсь использовать' tune() 'и' cmine() '. Например. функция 'tune()' дает: '[>] модель 1: AICc = NA (C = 4.74) Ошибка в if (pst.IC == min (IC, na.rm = TRUE)) {: отсутствует значение где требуется TRUE/FALSE Кроме того: Предупреждающее сообщение: In min (IC, na.rm = TRUE): не пропущенных аргументов до мин; return Inf' Есть ли аргументы для отключения отсутствующих значений в этих функциях? – histelheim

+0

Также, как вы определили, что произошла ошибка в 'L = 8'? – histelheim

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