R/calc_stats.R

#------------------------------------------------------------------------------
#Calculate statistics for each parameter
#R interface to C++ function
calc_stats <- function(samples){

  out <- rcpp_calc_stats(mcmc_to_mat(samples), 
                         length(samples))

  row.names(out) <- param_names(samples)
  colnames(out) <- c('mean','sd','2.5%','25%','50%','75%','97.5%',
                     'Overlap0','f','nEff','Rhat')
  out
}
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
#Calculate pD and DIC from deviance if it exists in output samples
calc_DIC <- function(samples){
  
  ind <- which_params('deviance', param_names(samples))

  if(is.null(ind)) return(c(pD=NA, DIC=NA))

  m <- length(samples)
  n <- nrow(samples[[1]])
  dev <- select_cols(samples, ind)
  dev <- matrix(mcmc_to_mat(dev), ncol=m) 
  
  if(any(is.na(dev)) || any(is.infinite(dev))) return(c(pD=NA, DIC=NA))

  pd <- apply(dev,2,FUN=function(x) stats::var(x)/2)
  dic <- apply(dev,2,mean) + pd
  
  c(pD=mean(pd),DIC=mean(dic))
}
#------------------------------------------------------------------------------
kenkellner/jagsUI2 documentation built on July 5, 2019, 9:38 a.m.