parameter_draws()

Extract posterior draws for one or more variables into a tidy Polars DataFrame.

Usage

parameter_draws(
    dt, *var_specs, group="posterior", chain_dim="chain", draw_dim="draw"
)

Parameters

dt: xr.DataTree

ArviZ DataTree object (xarray.DataTree) from PyMC sampling.

*var_specs: str

Variable specifications in the form “var_name” for scalar variables, or “var_name[dim1, dim2, …]” for array variables. Supports nested/multi-dimensional specifications. The bracketed dimension names must match coordinate names in the InferenceData dataset.

group: str = "posterior"

Which InferenceData group to extract from (e.g., “posterior”, “prior”). Default “posterior”.

chain_dim: str = "chain"

Names of the chain and draw dimensions.

draw_dim: str = "chain"
Names of the chain and draw dimensions.

Returns

pl.DataFrame
Tidy DataFrame with columns: chain, draw, [named dims…], [var_names…] One row per unique (chain, draw, [dim combo]).

Examples

Scalar parameter (no duplication)

parameter_draws(dt, “sigma”) # -> columns: chain, draw, sigma # -> 4 x 1000 = 4,000 rows

Array parameter spread over a named dim

parameter_draws(dt, “beta[groups]”, “intercept[groups]”) # -> columns: chain, draw, groups, beta, intercept # -> 4 x 1000 x 4 = 16,000 rows (NOT 320,000)

Mix of scalar and array (sigma broadcast-joined to group-level params)

parameter_draws(dt, “beta[groups]”, “sigma”) # -> columns: chain, draw, groups, beta, sigma # -> 4 x 1000 x 4 = 16,000 rows; sigma repeated per group (explicit and expected)

Different groups (prior vs posterior)

parameter_draws(dt, “beta[groups]”, group=“prior”) # -> extract prior draws for beta

Nested dimensions

parameter_draws(dt, “gamma[time, group]”) # -> columns: chain, draw, time, group, gamma