Not to be confused with posterior predictive checks, this function
provides additional information about the marginal posterior
distributions of continuous parameters, such as the probability that
each posterior coefficient of the parameters (referred to generically
as \(\theta\)), is greater than zero
[\(p(\theta > 0)\)], the estimated number of modes,
the kurtosis and skewness of the posterior distributions, the burn-in
of each chain (for MCMC only), integrated autocorrelation time,
independent samples per minute, and acceptance rate. A posterior
correlation matrix is provided only for objects of class
`demonoid`

or `pmc`

.

For discrete parameters, see the `Hangartner.Diagnostic`

.

`PosteriorChecks(x, Parms)`

x

This required argument accepts an object of class
`demonoid`

, `iterquad`

, `laplace`

, `pmc`

, or
`vb`

.

Parms

This argument accepts a vector of quoted strings to be
matched for selecting parameters. This argument defaults to
`NULL`

and selects every parameter. Each quoted string is
matched to one or more parameter names with the `grep`

function. For example, if the user specifies ```
Parms=c("eta",
"tau")
```

, and if the parameter names are beta[1], beta[2], eta[1],
eta[2], and tau, then all parameters will be selected, because the
string `eta`

is within `beta`

. Since `grep`

is used,
string matching uses regular expressions, so beware of
meta-characters, though these are acceptable: ".", "[", and "]".

`PosteriorChecks`

returns an object of class
`posteriorchecks`

that is a list with the following components:

This is a correlation matrix of the parameters selected with the
`Parms`

argument. This component is returned as `NA`

for
objects of classes `"laplace"`

or `"vb"`

.

This is a matrix in which each row is a
parameter and there are eight columns: p(theta > 0), N.Modes,
Kurtosis, Skewness, Burn-In, IAT, ISM, and AR. The first column,
p(theta > 0), indicates parameter importance by reporting how much
of the distribution is greater than zero. An important parameter
distribution will have a result at least as extreme as 0.025 or
0.975, and an unimportant parameter distribution is centered at
0.5. This is not the importance of the associated variable relative
to how well the model fits the data. For variable importance, see
the `Importance`

function. The second column, N.Modes,
is the number of modes, estimated with the `Modes`

function. Kurtosis and skewness are useful posterior checks that may
suggest that a posterior distribution is non-normal or does not fit
well with a distributional assumption, assuming a distributional
assumption exists, which it may not. The burn-in is estimated for
each chain (only for objects of class `demonoid`

with the
`burnin`

function. The integrated autocorrelation
time is estimated with `IAT`

. The number of independent
samples per minute (ISM) is calculated for objects of class
`"demonoid"`

as `ESS`

divided by minutes. Lastly,
the local acceptance rate of each MCMC chain is calculated with the
`AcceptanceRate`

function, and is set to 1 for objects
of class `iterquad`

, `laplace`

, `pmc`

, or `vb`

.

`PosteriorChecks`

is a supplemental function that returns
a list with two components. Following is a summary of popular uses of
the `PosteriorChecks`

function.

First (and only for MCMC users), the user may be considering the
current MCMC algorithm versus others. In this case, the
`PosteriorChecks`

function is often used to find the two MCMC
chains with the highest `IAT`

, and these chains are
studied for non-randomness with a joint trace plot, via the
`joint.density.plot`

function. The best algorithm has the
chains with the highest independent samples per minute (ISM).

Posterior correlation may be studied between model updates as well as
after a model seems to have converged. While frequentists consider
multicollinear predictor variables, Bayesians tend to consider
posterior correlation of the parameters. Models with multicollinear
parameters take more iterations to converge. Hierarchical models often
have high posterior correlations. Posterior correlation often
contributes to a lower effective sample size (`ESS`

).
Common remedies include transforming the predictors,
re-parameterization to reduce posterior correlation, using WIPs
(Weakly-Informative Priors), or selecting a different numerical
approximation algorithm. An example of re-parameterization is to
constrain related parameters to sum to zero. Another approach is to
specify the parameters according to a multivariate distribution that
is assisted by estimating a covariance matrix. Some algorithms are
more robust to posterior correlation than others. For example,
posterior correlation should generally be less problematic for twalk
than AMWG in `LaplacesDemon`

. Posterior correlation may be
plotted with the `plotMatrix`

function, and may be useful
for blocking parameters. For more information on blockwise sampling,
see the `Blocks`

function.

After a user is convinced of the applicability of the current MCMC
algorithm, and that the chains have converged, `PosteriorChecks`

is often used to identify multimodal marginal posterior distributions
for further study or model re-specification.

Although many marginal posterior distributions appear normally distributed, there is no such assumption. Nonetheless, a marginal posterior distribution tends to be distributed the same as its prior distribution. If a parameter has a prior specified with a Laplace distribution, then the marginal posterior distribution tends also to be Laplace-distributed. In the common case of normality, kurtosis and skewness may be used to identify discrepancies between the prior and posterior, and perhaps this should be called a `prior-posterior check'.

Lastly, parameter importance may be considered, in which case it is
recommended to be considered simultaneously with variable importance
from the `Importance`

function.

`AcceptanceRate`

,
`Blocks`

,
`burnin`

,
`ESS`

,
`Hangartner.Diagnostic`

,
`joint.density.plot`

,
`IAT`

,
`Importance`

,
`IterativeQuadrature`

,
`LaplaceApproximation`

,
`LaplacesDemon`

,
`Modes`

,
`plotMatrix`

,
`PMC`

, and
`VariationalBayes`

.

```
# NOT RUN {
### See the LaplacesDemon function for an example.
# }
```

Run the code above in your browser using DataLab