2015-10-07 74 views
0

我試圖根據不同數量的潛在班級nclass選擇哪個LCA模型(R包= poLCA)最適合我的數據。For Loop for poLCA package(R)運行多個班級模型

我想使用一個for循環來運行該模型爲1:5潛類,並且產生具有G2表,AIC & BIC值爲每個模型。

## Generating a table of G2,AIC & BIC for different no of LCA classes (1:5) for 6 variables. 

library(poLCA) 
as.data.frame(mod_sum_v6) 
for(i in 1:5){ 
    lca_v6<- poLCA(cbind(A,B,C,D,E,F) ~ 1, 
    maxiter=50000,nclass=i, 
    nrep=1, data=data) 
    mod_sum_v6[i]<-c(lca_v6$Chisq,lca_v6$resid.df,lca_v6$Gsq,lca_v6$aic,lca_v6$bic) 
} 

回答

0

我在網上發現了這個代碼,它運行一個有兩到十個組的模型序列。 nrep = 10時,每個模型運行10次,並保持模型最低的BIC。

f<-with(mydata, cbind(F29_a,F29_b,F29_c,F27_a,F27_b,F27_e,F09_a, F09_b, F09_c)~1) # 

max_II <- -100000 
min_bic <- 100000 
for(i in 2:10){ 
lc <- poLCA(f, mydata, nclass=i, maxiter=3000, 
      tol=1e-5, na.rm=FALSE, 
      nrep=10, verbose=TRUE, calc.se=TRUE) 
    if(lc$bic < min_bic){ 
    min_bic <- lc$bic 
LCA_best_model<-lc 
} 
}  
LCA_best_model