Ошибка в if (! All (pars <1e-06)) pars [pars <1e-06] <- 0 »в модели с depmixS4 - PullRequest
0 голосов
/ 24 июня 2019

Задача

Я хочу запустить анализ скрытых классов с помощью пакета depmixS4 в r. Проблема возникает при попытке установить модель только с одним классом (или состоянием в пакете depmixS4). Когда я пытаюсь настроить модель с набором данных 6000 случаев, я получаю следующую ошибку. Однако, когда число случаев составляет 5000, проблем не возникает.

Error in if (!all(pars < 1e-06)) pars[pars < 1e-06] <- 0 : 
  missing value where TRUE/FALSE needed

Где проблема? Может ли кто-нибудь помочь мне понять, почему возникает эта ошибка?

Воспроизводимый пример

СЛУЧАЙ A (n = 6000) Тот же самый случай также происходит, когда дело доходит до случайных переменных. Чтобы получить воспроизводимый пример, сначала я генерирую набор данных (n = 6000 ) с двумя случайными переменными (a и b) с двумя возможными значениями (0 и 1).

library(depmixS4)
#> Loading required package: nnet
#> Loading required package: MASS
#> Loading required package: Rsolnp
a <- sample(0:1, size = 6000, replace = T)
b <- sample(0:1, size = 6000, replace = T)

foo_large <- data.frame(a,b)

set.seed(123)
mod1 <- mix(response = list(a~1, b~1),
            data=foo_large, # the dataset to use
            nstates=1, # the number of latent classes
            family=list(multinomial("identity"),multinomial("identity")))

fmod1 <- fit(mod1, verbose=TRUE)
#> Error in if (!all(pars < 1e-06)) pars[pars < 1e-06] <- 0: missing value where TRUE/FALSE needed

CASE B (n = 5000) Однако с набором данных (n = 5000 ) с двумя случайными переменными, имеющими те же характеристики, что и предыдущие, ошибки нет.

library(depmixS4)
#> Loading required package: nnet
#> Loading required package: MASS
#> Loading required package: Rsolnp
c <- sample(0:1, size = 5000, replace = T)
d <- sample(0:1, size = 5000, replace = T)

foo_short <- data.frame(c,d)

set.seed(123)
mod1 <- mix(response = list(c~1, d~1),
            data=foo_short, # the dataset to use
            nstates=1, # the number of latent classes
            family=list(multinomial("identity"),multinomial("identity")))

fmod1 <- depmixS4::fit(mod1, verbose=TRUE)
#> iteration 0 logLik: -6928.943 
#> converged at iteration 1 with logLik: -6928.943
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...