Inference with observed data
The following functions facilitate the use of a trained neural estimator with observed data.
PosteriorEstimators and RatioEstimators
NeuralEstimators.sampleposterior Function
sampleposterior(estimator::PosteriorEstimator, Z; N::Integer = 1000, kwargs...)
sampleposterior(estimator::RatioEstimator, Z; grid, N::Integer = 1000, logprior::Function = θ -> 0f0, kwargs...)Samples from the approximate posterior distribution implied by estimator.
The positional argument N controls the size of the posterior sample.
If Z represents a single data set as determined by numobs, returns a N matrix of posterior samples, where Z contains multiple data sets, a vector of matrices will be returned.
When using a RatioEstimator, the prior distribution logprior (by default, a uniform prior is used). The sampling algorithm is based on a fine-gridding of the parameter space, specified through the keyword argument grid. The approximate posterior density is evaluated over this grid, which is then used to draw samples. This is effective when making inference with a small number of parameters. For models with a large number of parameters, other sampling algorithms (e.g., MCMC) may be needed (please contact the package maintainer).
Keyword arguments are passed onto summarystatistics.
sourceNeuralEstimators.logratio Function
logratio(estimator::RatioEstimator, Z; grid)Compute the log likelihood-to-evidence ratio for each parameter configuration in grid.
Arguments
estimator: aRatioEstimatorZ: observed datagrid: matrix of parameter values, where each column is a parameter configuration
Returns
A matrix of log ratios with one row per data set and one column per grid point.
sourceNeuralEstimators.posteriormean Function
posteriormean(θ::AbstractMatrix)
posteriormean(estimator, Z; kwargs...)Computes the posterior mean based either on a θ of posterior draws, where sampleposterior().
See also posteriormedian(), posteriorquantile().
NeuralEstimators.posteriormedian Function
posteriormedian(θ::AbstractMatrix)
posteriormedian(estimator, Z; kwargs...)Computes the vector of marginal posterior medians based either on a θ of posterior draws, where sampleposterior().
See also posteriormean(), posteriorquantile().
NeuralEstimators.posteriorquantile Function
posteriorquantile(θ::AbstractMatrix, probs)
posteriorquantile(estimator, Z, probs; kwargs...)Computes the vector of marginal posterior quantiles with (a collection of) probability levels probs, based either on a θ of posterior draws, where sampleposterior().
The return value is a length(probs) matrix.
See also posteriormedian(), posteriormean()](@ref).
BayesEstimators
NeuralEstimators.estimate Function
estimate(estimator::BayesEstimator, Z; batchsize::Integer = 32, use_gpu::Bool = true, kwargs...)Applies estimator to data Z and returns the resulting estimates.
NeuralEstimators.bootstrap Function
bootstrap(estimator::PointEstimator, parameters::P, Z; use_gpu = true) where P <: Union{AbstractMatrix, AbstractParameterSet}
bootstrap(estimator::PointEstimator, parameters::P, simulator, m::Integer; B = 400, use_gpu = true) where P <: Union{AbstractMatrix, AbstractParameterSet}
bootstrap(estimator::PointEstimator, Z; B = 400, blocks = nothing, trim = true, use_gpu = true)Generates B bootstrap estimates using estimator.
Parametric bootstrapping is facilitated by passing a single parameter configuration, parameters, and corresponding simulated data, Z, whose length implicitly defines B. Alternatively, one may provide a simulator and the desired sample size, in which case the data will be simulated using simulator(parameters, m).
Non-parametric bootstrapping is facilitated by passing a single data set, Z. The argument blocks caters for block bootstrapping, and it should be a vector of integers specifying the block for each replicate. For example, with 5 replicates, the first two corresponding to block 1 and the remaining three corresponding to block 2, blocks should be [1, 1, 2, 2, 2]. The resampling algorithm generates resampled data sets by sampling blocks with replacement. If trim = true, the final block is trimmed as needed to ensure that the resampled data set matches the original size of Z.
The return type is a B matrix, where
NeuralEstimators.interval Function
interval(θ::Matrix; probs = [0.05, 0.95], parameter_names = nothing)
interval(estimator::IntervalEstimator, Z; parameter_names = nothing, use_gpu = true)Computes a confidence/credible interval based either on a θ of parameters (typically containing bootstrap estimates or posterior draws), where IntervalEstimator and data Z.
When given θ, the intervals are constructed by computing quantiles with probability levels controlled by the keyword argument probs.
The return type is a parameter_names.
NeuralEstimators.quantiles Function
quantiles(estimator::QuantileEstimator, Z; parameter_names = nothing, use_gpu = true)Computes marginal posterior quantiles from a QuantileEstimator and data Z. For full-conditional estimators (those initialised with i set), pass the input as a tuple (Z, θ₋ᵢ) where θ₋ᵢ contains the conditioning values.
The return type is a estimator.probs and whose rows correspond to the parameters. The rows of this matrix can be named by passing a vector of strings to the keyword argument parameter_names.