【发布时间】:2019-11-06 04:37:30
【问题描述】:
问题
我想在 r 中使用 depmixS4 包运行潜在类分析。尝试拟合只有一个类(或 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
【问题讨论】:
-
用
nstates = 1运行模型的原因是什么 -
原因是看
nstates = 1和nstates = 2之间模型的变化
标签: r glm model-fitting