pyuncertainnumber.calibration.utils_bayesian¶
Classes¶
Abstract prior interface (minimal). |
|
Axis-aligned uniform prior over [lb, ub] in R^d (vector bounds). |
|
Base class for 2D aleatoric samplers with copulas. |
|
Aleatoric sampler: (xa1, xa2) ~ Beta marginals + Gaussian copula. |
|
Aleatoric sampler: (xa1, xa2) ~ Truncated Normal marginals |
|
Mixture of Beta marginals with Gaussian copula correlation. |
Functions¶
|
Generates initial population from prior distribution |
|
|
|
|
|
Computes beta for the next stage and updated model evidence |
|
|
|
Computes beta for the next stage and updated model evidence |
|
Computes log_prior value at all particles |
|
Generates initial population from prior distribution |
|
Prepare prior for the NASA case study with a mixture of Beta marginals + copula correlation. |
Prepare the prior for the beta model used in the NASA case study. |
|
|
proposal distribution for MCMC in perturbation stage |
|
Markov chain Monte Carlo using Metropolis-Hastings |
Module Contents¶
- class pyuncertainnumber.calibration.utils_bayesian.Prior¶
Abstract prior interface (minimal).
- abstractmethod generate_rns(n: int) numpy.ndarray¶
Return n samples ~ prior (shape: (n, d_i) or (n,)).
- abstractmethod log_pdf_eval(x: numpy.ndarray) float¶
Return log p(x) for a single vector x.
- class pyuncertainnumber.calibration.utils_bayesian.PriorUniform(lb: numpy.ndarray, ub: numpy.ndarray, name: str = 'uniform')¶
Bases:
PriorAxis-aligned uniform prior over [lb, ub] in R^d (vector bounds).
- lb¶
- ub¶
- d¶
- name = 'uniform'¶
- _logZ¶
- generate_rns(n: int) numpy.ndarray¶
Vectorized sampling over the hyper-rectangle.
- log_pdf_eval(x: numpy.ndarray) float¶
log 1/Vol if x within bounds; -inf otherwise.
- pyuncertainnumber.calibration.utils_bayesian.initial_population(n: int, priors: List[Prior]) numpy.ndarray¶
- pyuncertainnumber.calibration.utils_bayesian.log_prior(x: numpy.ndarray, priors: List[Prior]) float¶
- pyuncertainnumber.calibration.utils_bayesian.log_prior_batch(samples: numpy.ndarray, priors: List[Prior]) numpy.ndarray¶
- pyuncertainnumber.calibration.utils_bayesian.compute_beta_update_evidence(beta: float, log_lik: numpy.ndarray, log_evidence: float, prev_ESS: float, target_frac: float = 0.95, min_particles: int = 50, max_iter: int = 30) tuple¶
- pyuncertainnumber.calibration.utils_bayesian.gaussian_proposals(current: numpy.ndarray, cov: numpy.ndarray, n: int) numpy.ndarray¶
- class pyuncertainnumber.calibration.utils_bayesian.JointBivariatePDF(params)¶
Base class for 2D aleatoric samplers with copulas.
- eps = 1e-09¶
- params¶
- abstractmethod sample(ns: int = 1000)¶
- class pyuncertainnumber.calibration.utils_bayesian.BetaGaussCopulaPDF(params, s=20)¶
Bases:
JointBivariatePDFAleatoric sampler: (xa1, xa2) ~ Beta marginals + Gaussian copula. Params: [a1, a2, b1, b2, rho] with values in [0, 1]. Scaled internally via factor s (default: 20).
- rho¶
- cov¶
- sample(ns: int = 1000)¶
- class pyuncertainnumber.calibration.utils_bayesian.NormalGaussCopulaPDF(params, s_mu=2, s_sigma=2)¶
Bases:
JointBivariatePDFAleatoric sampler: (xa1, xa2) ~ Truncated Normal marginals
- rho¶
- cov¶
- sample(ns: int = 1000)¶
- class pyuncertainnumber.calibration.utils_bayesian.BetaMixtureGaussCopulaPDF(params, n_mix: int = 2, s: int = 20, weights=None)¶
Bases:
JointBivariatePDFMixture of Beta marginals with Gaussian copula correlation. Each component uses (a1, a2), (b1, b2) marginals + rho. Params: flat vector of length n_param * n_mix with values in [0, 1]; scaled internally.
- n_mix = 2¶
- s = 20¶
- eps = 1e-06¶
- components = []¶
- sample(ns: int = 1000)¶
- pyuncertainnumber.calibration.utils_bayesian.compute_beta_update_evidence(beta, log_likelihoods, log_evidence, prev_ESS)¶
Computes beta for the next stage and updated model evidence :param beta: :type beta: float stage parameter. :param log_likelihoods: :type log_likelihoods: numpy array of size N log likelihood values at all particles :param log_evidence: :type log_evidence: float log of evidence. :param prev_ESS: :type prev_ESS: int effective sample size of previous stage
- Returns:
new_beta (float stage parameter for next stage.)
log_evidence (float updated log evidence.)
Wm_n (numpy array of size N weights of particles for the next stage)
ESS (float effective sample size of new stage)
- pyuncertainnumber.calibration.utils_bayesian.get_log_prior_samples(samples, all_pars)¶
Computes log_prior value at all particles s : numpy array of size N x Np (N samples x N parameters) all_pars: list of PDFs objects, length Np
all_pars[i]: is a PDF object with a callable log_pdf_eval method.
- Returns
log_p : numpy array of size N log prior at all N particles .
- pyuncertainnumber.calibration.utils_bayesian.initial_population(N, all_pars) numpy.ndarray¶
Generates initial population from prior distribution N : float number of particles. all_pars : list of size Np is number of parameters; all_pars[i] is object of type pdfs ini_pop : numpy array of size N x Np initial population.
- pyuncertainnumber.calibration.utils_bayesian.prepare_all_pars(n_epistemic: int = 3, n_mix: int = 2)¶
Prepare prior for the NASA case study with a mixture of Beta marginals + copula correlation. Each mixture component gets its own (a1, a2, b1, b2, rho), scaled ∈ [0.001, 0.999].
- pyuncertainnumber.calibration.utils_bayesian.prepare_prior_beta_model_NASA()¶
Prepare the prior for the beta model used in the NASA case study.
- pyuncertainnumber.calibration.utils_bayesian.propose(current, covariance, n)¶
proposal distribution for MCMC in perturbation stage
- pyuncertainnumber.calibration.utils_bayesian.MCMC_MH(particle_num, Em, Nm_steps, current, likelihood_current, posterior_current, beta, numAccepts, all_pars, log_likelihood)¶
Markov chain Monte Carlo using Metropolis-Hastings “perturbs” each particle using MCMC-MH
- Parameters:
particle_num (int) – particle number
Em (numpy array of size Np x Np) – proposal covarince matrix.
Nm_steps (int) – number of perturbation steps.
current (numpy array of size Np) – current particle location
likelihood_current (float) – log likelihood value at current particle
posterior_current (float) – log posterior value at current particle
beta (float) – stage parameter.
numAccepts (int) – total number of accepts
all_pars (: list of size Np) – Np is number of parameters all_pars[i] is object of type pdfs all parameters to be inferred.
log_likelihood (function) – log likelihood function to be defined in main.py.
- Returns:
current (numpy array of size Np) – perturbed particle location
likelihood_current (float) – log likelihood value at perturbed particle
posterior_current (float) – log posterior value at perturbed particle
numAccepts (int) – total number of accepts during perturbation (MCMC - MH)