Helpers
Helper functions to extract sufficient statistics from observations.
These functions bridge the gap between raw data and the summary statistics required by conjugate model functions.
Example
For PyTensor compatibility
bernoulli_beta_inputs(x, *, sum_fn=None, len_fn=None)
Extract sufficient statistics for bernoulli_beta model.
For multiple Bernoulli trials, returns statistics compatible with binomial_beta model. For a single trial, use directly with bernoulli_beta (n will be 1).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Binary outcomes (0 or 1, array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x' and 'n' for use with binomial_beta() or bernoulli_beta() |
Example
# Multiple Bernoulli trials - use with binomial_beta
from conjugate.models import binomial_beta
from conjugate.helpers import bernoulli_beta_inputs
data = [1, 0, 1, 1, 0] # 5 trials, 3 successes
inputs = bernoulli_beta_inputs(data)
# inputs = {'x': 3, 'n': 5}
posterior = binomial_beta(**inputs, prior=prior)
Source code in conjugate/helpers.py
beta_inputs(x, *, prod_fn=None, len_fn=None, asarray_fn=None)
Extract sufficient statistics for beta model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
prod_fn
|
Callable | None
|
Function to take product of elements, defaults to np.prod |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
asarray_fn
|
Callable | None
|
Function to convert to array, defaults to np.asarray |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_prod', 'one_minus_x_prod', and 'n' |
Source code in conjugate/helpers.py
binomial_beta_inputs(x, n, *, sum_fn=None)
Extract sufficient statistics for binomial_beta model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Number of successes (array-like or scalar) |
required | |
n
|
Number of trials (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x' and 'n' for use with binomial_beta() |
Source code in conjugate/helpers.py
categorical_dirichlet_inputs(x)
Extract sufficient statistics for categorical_dirichlet model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observed counts for each category (array-like) |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Dict with key 'x' for use with categorical_dirichlet() |
Source code in conjugate/helpers.py
gamma_inputs(x, *, sum_fn=None, prod_fn=None, len_fn=None)
Extract sufficient statistics for gamma model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
prod_fn
|
Callable | None
|
Function to take product of elements, defaults to np.prod |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_total', 'x_prod', and 'n' |
Source code in conjugate/helpers.py
gamma_known_rate_inputs(x, *, prod_fn=None, len_fn=None)
Extract sufficient statistics for gamma_known_rate model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
prod_fn
|
Callable | None
|
Function to take product of elements, defaults to np.prod |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_prod' and 'n' |
Source code in conjugate/helpers.py
gamma_known_shape_inputs(x, *, sum_fn=None, len_fn=None)
Extract sufficient statistics for gamma_known_shape model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_total' and 'n' for use with gamma_known_shape() |
Source code in conjugate/helpers.py
geometric_beta_inputs(x, *, sum_fn=None, len_fn=None)
Extract sufficient statistics for geometric_beta model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_total' and 'n' for use with geometric_beta() |
Source code in conjugate/helpers.py
hypergeometric_beta_binomial_inputs(x, *, sum_fn=None, len_fn=None)
Extract sufficient statistics for hypergeometric_beta_binomial model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_total' and 'n' for use with hypergeometric_beta_binomial() |
Source code in conjugate/helpers.py
inverse_gamma_known_rate_inputs(x, *, sum_fn=None, len_fn=None, reciprocal_fn=None, asarray_fn=None)
Extract sufficient statistics for inverse_gamma_known_rate model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
reciprocal_fn
|
Callable | None
|
Function for reciprocal (1/x), defaults to lambda x: 1.0/x |
None
|
asarray_fn
|
Callable | None
|
Function to convert to array, defaults to np.asarray |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'reciprocal_x_total' and 'n' |
Source code in conjugate/helpers.py
linear_regression_inputs(X, y)
Identity helper for linear_regression model.
Returns X and y unchanged for API consistency.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
Design matrix |
required | |
y
|
Response vector |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'X' and 'y' |
Source code in conjugate/helpers.py
log_normal_inputs(x, *, sum_fn=None, len_fn=None, log_fn=None, power_fn=None)
Extract sufficient statistics for log_normal model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
log_fn
|
Callable | None
|
Function for natural log, defaults to np.log |
None
|
power_fn
|
Callable | None
|
Function for element-wise power, defaults to np.power |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'ln_x_total', 'ln_x2_total', and 'n' |
Source code in conjugate/helpers.py
multinomial_dirichlet_inputs(x)
Extract sufficient statistics for multinomial_dirichlet model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observed counts for each category (array-like) |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Dict with key 'x' for use with multinomial_dirichlet() |
Source code in conjugate/helpers.py
multivariate_normal_inputs(X)
Identity helper for multivariate_normal model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
Observations matrix |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Dict with key 'X' |
multivariate_normal_known_covariance_inputs(X, *, len_fn=None, mean_fn=None)
Extract sufficient statistics for multivariate_normal_known_covariance model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
Array of multivariate observations |
required | |
len_fn
|
Callable | None
|
Function to compute length, defaults to x.shape[0] |
None
|
mean_fn
|
Callable | None
|
Function to compute mean along axis 0, defaults to np.mean |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_bar' and 'n' |
Source code in conjugate/helpers.py
multivariate_normal_known_mean_inputs(X, mu)
Identity helper for multivariate_normal_known_mean model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
Observations matrix |
required | |
mu
|
Known mean |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'X' and 'mu' |
Source code in conjugate/helpers.py
multivariate_normal_known_precision_inputs(X, *, len_fn=None, mean_fn=None)
Extract sufficient statistics for multivariate_normal_known_precision model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
Observations matrix (n_samples x n_features) |
required | |
len_fn
|
Callable | None
|
Function to count samples (rows), defaults to len-like |
None
|
mean_fn
|
Callable | None
|
Function to compute mean along axis 0, defaults to np.mean |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_bar' and 'n' |
Source code in conjugate/helpers.py
negative_binomial_beta_inputs(x, r, *, sum_fn=None, len_fn=None)
Extract sufficient statistics for negative_binomial_beta model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Number of successes per experiment (array-like or scalar) |
required | |
r
|
Known number of failures per experiment (constant across all experiments) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x', 'n', and 'r' for use with negative_binomial_beta() |
Example
from conjugate.models import negative_binomial_beta
from conjugate.helpers import negative_binomial_beta_inputs
successes = [2, 3, 1] # successes in 3 experiments
failures_per_exp = 5 # known failures per experiment
inputs = negative_binomial_beta_inputs(successes, failures_per_exp)
# inputs = {'x': 6, 'n': 3, 'r': 5}
posterior = negative_binomial_beta(**inputs, prior=prior)
Source code in conjugate/helpers.py
normal_inputs(x, *, sum_fn=None, len_fn=None, power_fn=None)
Extract sufficient statistics for normal model.
Works with: normal
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
power_fn
|
Callable | None
|
Function for element-wise power, defaults to np.power |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_total', 'x2_total', and 'n' |
Source code in conjugate/helpers.py
normal_known_mean_inputs(x, *, sum_fn=None, len_fn=None, power_fn=None)
Extract sufficient statistics for normal_known_mean model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
power_fn
|
Callable | None
|
Function for element-wise power, defaults to np.power |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_total', 'x2_total', and 'n' |
Source code in conjugate/helpers.py
normal_known_precision_inputs(x, *, sum_fn=None, len_fn=None)
Extract sufficient statistics for normal_known_precision model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_total' and 'n' |
Source code in conjugate/helpers.py
normal_known_variance_inputs(x, *, sum_fn=None, len_fn=None)
Extract sufficient statistics for normal_known_variance model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_total' and 'n' |
Source code in conjugate/helpers.py
pareto_gamma_inputs(x, *, x_m=None, sum_fn=None, len_fn=None, log_fn=None)
Extract sufficient statistics for pareto_gamma model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
x_m
|
float | None
|
Known minimum value. If provided, returns ready-to-use dict. If None, returns raw ln_x_total (user must handle x_m separately). |
None
|
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
log_fn
|
Callable | None
|
Function for natural log, defaults to np.log |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'ln_x_total', 'n', and 'x_m' (if provided) |
Source code in conjugate/helpers.py
poisson_gamma_inputs(x, *, sum_fn=None, len_fn=None)
Extract sufficient statistics for poisson_gamma model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_total' and 'n' for use with poisson_gamma() |
Example
Source code in conjugate/helpers.py
uniform_pareto_inputs(x, *, max_fn=None, len_fn=None)
Extract sufficient statistics for uniform_pareto model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
max_fn
|
Callable | None
|
Function to find maximum, defaults to np.max |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_max' and 'n' |
Source code in conjugate/helpers.py
von_mises_known_concentration_inputs(x, *, sum_fn=None, len_fn=None, cos_fn=None, sin_fn=None)
Extract sufficient statistics for von_mises_known_concentration model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations - angular data (array-like or scalar) |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
cos_fn
|
Callable | None
|
Function for cosine, defaults to np.cos |
None
|
sin_fn
|
Callable | None
|
Function for sine, defaults to np.sin |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'cos_total', 'sin_total', and 'n' |
Source code in conjugate/helpers.py
von_mises_known_direction_inputs(x, mu, *, sum_fn=None, len_fn=None, cos_fn=None, asarray_fn=None)
Extract sufficient statistics for von_mises_known_direction model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations - angular data (array-like or scalar) |
required | |
mu
|
Known direction parameter |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
cos_fn
|
Callable | None
|
Function for cosine, defaults to np.cos |
None
|
asarray_fn
|
Callable | None
|
Function to convert to array, defaults to np.asarray |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'centered_cos_total' and 'n' |
Source code in conjugate/helpers.py
weibull_inverse_gamma_known_shape_inputs(x, beta, *, sum_fn=None, len_fn=None, power_fn=None)
Extract sufficient statistics for weibull_inverse_gamma_known_shape model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Observations (array-like or scalar) |
required | |
beta
|
Known shape parameter |
required | |
sum_fn
|
Callable | None
|
Function to sum elements, defaults to np.sum |
None
|
len_fn
|
Callable | None
|
Function to count elements, defaults to size via np.atleast_1d |
None
|
power_fn
|
Callable | None
|
Function for element-wise power, defaults to np.power |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Dict with keys 'x_beta_total' and 'n' |