这是我正在处理的脚本:
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,以防万一!
答案 0 :(得分:1)
是的,如果您有一个大型数据集,或者您在此处指定的复杂模型,该函数可能会运行缓慢。
为了加快速度,我建议取消j
循环,而是设置nrep=30
(比如说)。这将自动搜索每个潜在潜在类别(2到14)的全局最大可能性。我的猜测是你会发现你不需要运行每个模型规范1000次以找到全局最大值。
然后,比较每个LC数量的拟合模型的BIC,以帮助选择具有最佳类别数量的规范。不过,不仅要依赖BIC。还应查看类条件响应概率,以查看哪种模型规范对您的应用程序最有用或最有意义。