diff options
author | Ken Kellner <ken@kenkellner.com> | 2023-12-03 14:37:22 -0500 |
---|---|---|
committer | Ken Kellner <ken@kenkellner.com> | 2023-12-03 14:39:52 -0500 |
commit | 9de01d5aec47d1784aa53d6ebb4b1b3db62ad720 (patch) | |
tree | 5c6c30e3cba83ba5db6d0fcfd3351f25e0ed00fe | |
parent | b4e88fe58794e3f106032b956334332b2479fdf6 (diff) |
Use order_samples instead of order.params
-rw-r--r-- | R/autojags.R | 8 | ||||
-rw-r--r-- | R/jags.R | 10 | ||||
-rw-r--r-- | R/jagsbasic.R | 2 | ||||
-rw-r--r-- | R/mcmc_tools.R | 3 | ||||
-rw-r--r-- | R/orderparams.R | 19 | ||||
-rw-r--r-- | R/update.R | 6 | ||||
-rw-r--r-- | R/updatebasic.R | 2 | ||||
-rw-r--r-- | inst/tinytest/test_mcmc_tools.R | 8 |
8 files changed, 13 insertions, 45 deletions
diff --git a/R/autojags.R b/R/autojags.R index b446bfb..27dd870 100644 --- a/R/autojags.R +++ b/R/autojags.R @@ -128,14 +128,12 @@ autojags <- function(data,inits=NULL,parameters.to.save,model.file,n.chains,n.ad date <- start.time #Reorganize JAGS output to match input parameter order - samples <- order.params(samples,parameters.to.save,DIC,verbose=verbose) + samples <- order_samples(samples, parameters.to.save) #Convert rjags output to jagsUI form - #output <- process.output(samples,DIC=DIC,codaOnly,verbose=verbose) output <- process_output(samples, coda_only = codaOnly, quiet = !verbose) if(is.null(output)){ output <- list() - samples <- order.params(samples,parameters.to.save,DIC,verbose=verbose) output$samples <- samples output$model <- mod output$n.cores <- n.cores @@ -144,10 +142,6 @@ autojags <- function(data,inits=NULL,parameters.to.save,model.file,n.chains,n.ad } #Add additional information to output list - - #Summary - #output$summary <- summary.matrix(output,samples,n.chains,codaOnly) - output$samples <- samples output$modfile <- model.file #If user wants to save input data/inits @@ -61,16 +61,12 @@ jagsUI <- jags <- function(data,inits=NULL,parameters.to.save,model.file,n.chain if(parallel){mcmc.info$n.cores <- n.cores} #Reorganize JAGS output to match input parameter order - if(dim(samples[[1]])[2]>1){ - samples <- order.params(samples,parameters.to.save,DIC,verbose=verbose) - } + samples <- order_samples(samples, parameters.to.save) #Convert rjags output to jagsUI form - #output <- process.output(samples,DIC=DIC,codaOnly,verbose=verbose) output <- process_output(samples, coda_only = codaOnly, quiet = !verbose) if(is.null(output)){ output <- list() - samples <- order.params(samples,parameters.to.save,DIC,verbose=verbose) output$samples <- samples output$model <- m output$n.cores <- n.cores @@ -79,10 +75,6 @@ jagsUI <- jags <- function(data,inits=NULL,parameters.to.save,model.file,n.chain } #Add additional information to output list - - #Summary - #output$summary <- summary.matrix(output,samples,n.chains,codaOnly) - output$samples <- samples output$modfile <- model.file #If user wants to save input data/inits diff --git a/R/jagsbasic.R b/R/jagsbasic.R index a086019..17d465a 100644 --- a/R/jagsbasic.R +++ b/R/jagsbasic.R @@ -54,7 +54,7 @@ jags.basic <- function(data,inits=NULL,parameters.to.save,model.file,n.chains,n. if(save.model){ output <- list() - samples <- order.params(samples,parameters.to.save,DIC,verbose=verbose) + samples <- order_samples(samples, parameters.to.save) output$samples <- samples output$model <- m output$n.cores <- n.cores diff --git a/R/mcmc_tools.R b/R/mcmc_tools.R index 01813fd..612fda5 100644 --- a/R/mcmc_tools.R +++ b/R/mcmc_tools.R @@ -32,6 +32,9 @@ match_params <- function(params, params_raw){ order_samples <- function(samples, params){ tryCatch({ matched <- match_params(params, param_names(samples)) + if("deviance" %in% param_names(samples) & ! "deviance" %in% matched){ + matched <- c(matched, "deviance") + } samples[,matched,drop=FALSE] }, error = function(e){ message(paste0("Caught error re-ordering samples:\n",e,"\n")) diff --git a/R/orderparams.R b/R/orderparams.R deleted file mode 100644 index f50c5c6..0000000 --- a/R/orderparams.R +++ /dev/null @@ -1,19 +0,0 @@ - -order.params <- function(samples,parameters.to.save,DIC,verbose=TRUE){ - - params <- colnames(samples[[1]]) - params <- params[order(match(sapply(strsplit(params, "\\["), "[", 1), - sapply(strsplit(parameters.to.save, "\\["), "[", 1)))] - - if(DIC&&('deviance'%in%params)){ - params <- c(params[params!='deviance'],'deviance') - } else if (DIC&&!('deviance'%in%params)){ - if(verbose){warning('JAGS did not monitor deviance.')} - DIC <- FALSE - } - - samples <- samples[,params, drop=FALSE] - - return(samples) - -} @@ -49,10 +49,9 @@ update.jagsUI <- function(object, parameters.to.save=NULL, n.adapt=NULL, n.iter, date <- start.time #Reorganize JAGS output to match input parameter order - samples <- order.params(samples,parameters,DIC,verbose=verbose) + samples <- order_samples(samples, parameters) #Run process output - #output <- process.output(samples,DIC=DIC,codaOnly,verbose=verbose) output <- process_output(samples, coda_only = codaOnly, quiet = !verbose) if(is.null(output)){ output <- list() @@ -63,9 +62,6 @@ update.jagsUI <- function(object, parameters.to.save=NULL, n.adapt=NULL, n.iter, return(output) } - #Summary - #output$summary <- summary.matrix(output,samples,object$mcmc.info$n.chains,codaOnly) - #Save other information to output object output$samples <- samples diff --git a/R/updatebasic.R b/R/updatebasic.R index 5b5528d..0a15d17 100644 --- a/R/updatebasic.R +++ b/R/updatebasic.R @@ -46,7 +46,7 @@ update.jagsUIbasic <- function(object, parameters.to.save=NULL, n.adapt=NULL, n. m <- rjags.output$m } - samples <- order.params(samples,parameters,DIC) + samples <- order_samples(samples, parameters) end.time <- Sys.time() time <- round(as.numeric(end.time-start.time,units="mins"),digits=3) diff --git a/inst/tinytest/test_mcmc_tools.R b/inst/tinytest/test_mcmc_tools.R index 18f956e..8e5f9cb 100644 --- a/inst/tinytest/test_mcmc_tools.R +++ b/inst/tinytest/test_mcmc_tools.R @@ -40,8 +40,8 @@ out <- order_samples(samples, new_order) expect_equal(class(out), 'mcmc.list') expect_equal(length(out),length(samples)) expect_equal(lapply(out,class),lapply(samples,class)) -expect_equal(param_names(out),c('beta',paste0('mu[',1:16,']'),'alpha')) -expect_equal(dim(out[[1]]), c(30,18)) +expect_equal(param_names(out),c('beta',paste0('mu[',1:16,']'),'alpha', "deviance")) +expect_equal(dim(out[[1]]), c(30,19)) expect_equal(as.numeric(out[[1]][1,1:2]), c(0.03690717, 59.78175), tol=1e-4) expect_equal(order_samples(samples, 'beta'), @@ -52,7 +52,9 @@ expect_equal(test, 'fake') one_param <- samples[, 'alpha',drop=FALSE] expect_equal(order_samples(one_param,'alpha'),one_param) expect_equal(dim(order_samples(one_param, 'beta')[[1]]),c(30,0)) - +new_order <- c('deviance', 'beta','mu','alpha') +out <- order_samples(samples, new_order) +expect_equal(param_names(out),c('deviance', 'beta',paste0('mu[',1:16,']'),'alpha')) # test that which_params gets param col indices-------------------------------- which_params <- jagsUI:::which_params |