【问题标题】:poLCA - Latent Class Analysis - How long should analysis take?poLCA - 潜在类分析 - 分析需要多长时间?
【发布时间】:2015-07-10 04:33:37
【问题描述】:

这是我正在编写的脚本:

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,以防万一!

【问题讨论】:

  • 这些大多是更适合stackoverflow的编程问题。但是,这里有一些关于统计方面的观察。 1. 最低 BIC 通常不是“最大似然 [nclass 下数据的值]”。 2.你无法知道是否或何时找到了全局ML(或最低BIC),只能知道当前的比以前的更好。
  • 还有一些关于代码的信息: 1. 浏览包文档,您可以通过设置nrep=1024 来替换整个j 循环。最佳模型返回为res。安装好后,进行min_bic 测试,2. 你不要在任何地方使用max_II

标签: r multiple-regression


【解决方案1】:

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

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

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

【讨论】:

  • 感谢两位的帮助。我现在已经编辑了脚本,而且速度要快得多。但是,用于确定最低 BIC 并在输出中选择该类的代码现在不起作用。它只是选择最后一个测试的类(例如 14)。无论如何,再次感谢!
猜你喜欢
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 2021-10-28
相关资源
最近更新 更多