Data
Inference library converters
ArviZ.from_mcmcchains
— Functionfrom_mcmcchains(posterior::MCMCChains.Chains; kwargs...) -> InferenceData
from_mcmcchains(; kwargs...) -> InferenceData
from_mcmcchains(
posterior::MCMCChains.Chains,
posterior_predictive,
predictions,
log_likelihood;
kwargs...
) -> InferenceData
Convert data in an MCMCChains.Chains
format into an InferenceData
.
Any keyword argument below without an an explicitly annotated type above is allowed, so long as it can be passed to convert_to_inference_data
.
Arguments
posterior::MCMCChains.Chains
: Draws from the posterior
Keywords
posterior_predictive::Any=nothing
: Draws from the posterior predictive distribution or name(s) of predictive variables inposterior
predictions
: Out-of-sample predictions for the posterior.prior
: Draws from the priorprior_predictive
: Draws from the prior predictive distribution or name(s) of predictive variables inprior
observed_data
: Observed data on which theposterior
is conditional. It should only contain data which is modeled as a random variable. Keys are parameter names and values.constant_data
: Model constants, data included in the model that are not modeled as random variables. Keys are parameter names.predictions_constant_data
: Constants relevant to the model predictions (i.e. newx
values in a linear regression).log_likelihood
: Pointwise log-likelihood for the data. It is recommended to use this argument as a named tuple whose keys are observed variable names and whose values are log likelihood arrays. Alternatively, provide the name of variable inposterior
containing log likelihoods.library=MCMCChains
: Name of library that generated the chainscoords
: Map from named dimension to named indicesdims
: Map from variable name to names of its dimensionseltypes
: Map from variable names to eltypes. This is primarily used to assign discrete eltypes to discrete variables that were stored inChains
as floats.
Returns
InferenceData
: The data with groups corresponding to the provided data
ArviZ.from_samplechains
— Functionfrom_samplechains(
posterior=nothing;
prior=nothing,
library=SampleChains,
kwargs...,
) -> InferenceData
Convert SampleChains samples to an InferenceData
.
Either posterior
or prior
may be a SampleChains.AbstractChain
or SampleChains.MultiChain
object.
For descriptions of remaining kwargs
, see from_namedtuple
.
IO / Conversion
InferenceObjects.from_netcdf
— Functionfrom_netcdf(path::AbstractString; kwargs...) -> InferenceData
Load an InferenceData
from an unopened NetCDF file.
Remaining kwargs
are passed to NCDatasets.NCDataset
. This method loads data eagerly. To instead load data lazily, pass an opened NCDataset
to from_netcdf
.
This method requires that NCDatasets is loaded before it can be used.
Examples
julia> using InferenceObjects, NCDatasets
julia> idata = from_netcdf("centered_eight.nc")
InferenceData with groups:
> posterior
> posterior_predictive
> sample_stats
> prior
> observed_data
from_netcdf(ds::NCDatasets.NCDataset; load_mode) -> InferenceData
Load an InferenceData
from an opened NetCDF file.
load_mode
defaults to :lazy
, which avoids reading variables into memory. Operations on these arrays will be slow. load_mode
can also be :eager
, which copies all variables into memory. It is then safe to close ds
. If load_mode
is :lazy
and ds
is closed after constructing InferenceData
, using the variable arrays will have undefined behavior.
Examples
Here is how we might load an InferenceData
from an InferenceData
lazily from a web-hosted NetCDF file.
julia> using HTTP, InferenceObjects, NCDatasets
julia> resp = HTTP.get("https://github.com/arviz-devs/arviz_example_data/blob/main/data/centered_eight.nc?raw=true");
julia> ds = NCDataset("centered_eight", "r"; memory = resp.body);
julia> idata = from_netcdf(ds)
InferenceData with groups:
> posterior
> posterior_predictive
> sample_stats
> prior
> observed_data
julia> idata_copy = copy(idata); # disconnect from the loaded dataset
julia> close(ds);
InferenceObjects.to_netcdf
— Functionto_netcdf(data, dest::AbstractString; group::Symbol=:posterior, kwargs...)
to_netcdf(data, dest::NCDatasets.NCDataset; group::Symbol=:posterior)
Write data
to a NetCDF file.
data
is any type that can be converted to an InferenceData
using convert_to_inference_data
. If not an InferenceData
, then group
specifies which group the data represents.
dest
specifies either the path to the NetCDF file or an opened NetCDF file. If dest
is a path, remaining kwargs
are passed to NCDatasets.NCDataset
.
This method requires that NCDatasets is loaded before it can be used.
Examples
julia> using InferenceObjects, NCDatasets
julia> idata = from_namedtuple((; x = randn(4, 100, 3), z = randn(4, 100)))
InferenceData with groups:
> posterior
julia> to_netcdf(idata, "data.nc")
"data.nc"