2016-04-25 20 views
0

我已經用rjags實現了LDA模型。我順利地拿到了最後的樣本:如何獲取rjags中的採樣時間?

jags <- jags.model('../lda_jags.bug', 
       data = data, 
       n.chains = 1, 
       n.adapt = 100) 

update(jags, 2000) 

samples <- jags.samples(jags, 
     c('theta', 'phi', 'z'), 
     1000) 

現在我可以用samples$thetasamples$phi得到的thetaphi結果。但是我怎麼知道需要多長時間進行抽樣呢?謝謝!

+1

您可以使用'system.time()'或者更詳細的評估函數'microbenchmark'包中的'microbenchmark()'。 – eipi10

回答

1

As @ eipi10聲明你可以在update()調用周圍使用system.time()來爲R中的進程計時。或者,你可以使用runjags包來打印更新模型所用的(總)時間,包括之前所有的調用extend.jags:

library('runjags') 
results <- run.jags('../lda_jags.bug', monitor = c('theta', 'phi', 'z'), 
      data = data, n.chains = 1, adapt = 100, burnin = 2000, sample = 1000) 
results 

# or: 

jags <- jags.model('../lda_jags.bug', 
       data = data, 
       n.chains = 1, 
       n.adapt = 0) 
runjags <- as.runjags(jags, monitor = c('theta', 'phi', 'z')) 
results <- extend.jags(runjags, adapt = 100, burnin = 2000, sample = 1000) 
results 
results <- extend.jags(runjags, sample = 1000) 
results 
+0

感謝您的回答。但是爲什麼在'results < - extend.jags(runjags,adapt = 100,burnin = 2000,sample = 1000)'之後放置另一行'results < - extend.jags(runjags,sample = 1000)'? – user5779223

+0

只是爲了證明在第二次調用extend.jags之後報告的總時間包括第一次函數調用所花費的時間(這是更新模型所花費的總時間,而不僅僅是單個函數調用)。顯然,如果您只想要最初的1000個樣本,則不需要那樣做。 –

相關問題