2016-04-25 7 views
0

Я реализовал модель LDA с rjags. И я успешно получил окончательные образцы с:Как получить время выборки в 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$theta или samples$phi, чтобы получить результат theta и phi. Но как я могу узнать, сколько времени потребовалось на выборку? Благодаря!

+1

Вы можете использовать 'system.time()' или, для более детальной оценки, 'microbenchmark()' из 'microbenchmark' пакета. – eipi10

ответ

1

Как указано в @ eipi10, вы можете использовать system.time() вокруг вызова update() во время процесса внутри 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, sample = 1000)» после «результатов <- extend.jags (runjags, adapt = 100, burnin = 2000, sample = 1000)»? – user5779223

+0

Просто, чтобы продемонстрировать, что общее время, указанное после второго вызова extend.jags, включает время, затраченное на первый вызов функции (это общее время, затраченное на обновление модели, а не только на этот вызов одной функции). Очевидно, вам не нужно это делать, если вы хотите только оригинальные 1000 образцов. –

 Смежные вопросы

  • Нет связанных вопросов^_^