2

这是我正在处理的脚本:

library(poLCA)

f <- cbind(bq70, bq72_1, bq72_2, bq72_3, bq72_4, bq72_5, 
           bq72_6, bq72_7, bq73a_1, bq73a_2, bq73a_3, bq73a_4) ~ 
     zq88 + zq89 + dm_zq101_2 + dm_zq101_3 + dm_zq101_4 + 
     dm_zq101_5 + dm_zq101_6 + dm_zq101_7 + dm_zq101_8 + dm_zq101_9

for(i in 2:14){
  max_II <- -1000000
  min_bic <- 100000

  for(j in 1:1024){
    res <- poLCA(f, BESDATA, nclass=i, maxiter=1000, 
                 tol=1e-5, na.rm=FALSE, probs.start=NULL, 
                 nrep=1, verbose=TRUE, calc.se=TRUE)
    if(res$bic < min_bic){
      min_bic <- res$bic
      LCA_best_model<-res
    }
  }
}

我想进行潜在类分析,也想进行回归。但是,上面的代码需要我的电脑很长时间才能完成(intel core i5 4690k,16gb ram)。

poLCA 通常会花这么长时间吗?

此外,一旦达到全局最大似然性,我是否可以使用一行代码来停止每个类的循环?

N = 2000 左右。

顺便说一句,我使用 R studio,以防万一!

4

1 回答 1

1

是的,如果您有一个大型数据集或像您在此处指定的模型一样的复杂模型,该函数可能会运行缓慢。

为了加快速度,我建议消除j循环,而是设置nrep=30(比如说)。这将自动搜索每个潜在类别数(2 到 14)的全局最大似然。我的猜测是你会发现你不需要运行每个模型规范 1000+ 次来找到全局最大值。

然后,比较每个 LC 数量的拟合模型中的 BIC,以帮助选择具有最佳类别数量的规范。但是,不要只依赖 BIC。还应查看类条件响应概率,以了解哪个模型规范对您的应用程序最有用或最有意义。

于 2015-06-12T19:42:23.347 回答