2015-06-11 45 views
2

這是我工作的腳本:poLCA - 潛類分析 - 分析需要多長時間?

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 
    } 
    } 
} 

我想用一個迴歸進行潛類分析,和也。但是,上面的代碼需要我的電腦很長時間才能完成(英特爾酷睿i5 4690k,16GB內存)。

poLCA需要這麼長時間嗎?

此外,有沒有一行代碼,我可以使用,將停止爲每個類的循環一次的全球最大可能性已經達到?

N = 2000年左右

我的方式使用[R工作室,以防它的事項!

+0

這些大多是更適合於計算器的編程問題。但是,下面是關於統計方面的一些觀察。 1.最低BIC通常不是'最高​​可能性[nclass下的數據值]'。 2.您無法知道是否或何時發現全球ML(或最低BIC),只有當前的一個比以前更好。 – conjugateprior

+0

還有一些關於代碼的內容:1.瀏覽包文檔,可以通過設置'nrep = 1024'替換整個'j'循環。最好的模型以'res'的形式返回。安裝完成後,進行'min_bic'測試,2.不要在任何地方使用'max_II'。 – conjugateprior

回答

1

是,該功能可以,如果你有一個大的數據集,或像你在這裏指定的一個複雜的模型運行緩慢。

爲了加快速度,我建議取消j循環,而是設置nrep=30(說)。這將自動搜索每個潛在類別(2到14)的全局最大可能性。我的猜測是你會發現你不需要運行每個模型規格1000次以上來找到全局最大值。

然後,比較從擬合模型爲LC的每一個數字的BIC碼來幫助選擇具有類最佳數量的規範。不過,不僅要依靠BIC。還應該考慮類條件響應概率,以查看哪種模型規範對於您的應用程序最實用或有意義。

+0

感謝你們的幫助。我現在編輯了腳本,速度更快。但是,用於確定最低BIC並在輸出中選擇該類的代碼現在不起作用。它只是選擇最後一個測試類(例如14)。無論如何,再次感謝! – Steven