pystra.dependence.joint.JointDistribution#
Use it: User guide · Worked example · Theory
- class JointDistribution(marginals, copula)[source]#
Bases:
objectContinuous joint law specified by named PySTRA marginals and a copula.
Samples have rows of observations and columns in marginal order. The copula is a distribution specification, independent of the transformation later chosen for reliability analysis. Constants belong in StochasticModel.
- Parameters:
marginals (
Sequence[Distribution]) – Continuous marginals with unique names; their order defines the columns.copula (
Copula) – Dependence specification with dimension equal to the marginal count.
Methods
Evaluate the physical joint cumulative distribution.
Evaluate log joint density in physical coordinates.
Build a normal Rosenblatt or spherical generalized Nataf mapping.
Return physical joint density with the shape of
logpdf().Draw physical observations with this joint law.
- cdf(points, **kwargs)[source]#
Evaluate the physical joint cumulative distribution.
- Parameters:
points (
ArrayLike) – Physical coordinates in marginal order, without NaN values.**kwargs (
Any) – Integration controls forwarded to the copula’s CDF.
- Returns:
Cumulative probability at one point or at each row of points.
- Return type:
float|ndarray
- logpdf(points)[source]#
Evaluate log joint density in physical coordinates.
- Parameters:
points (
ArrayLike) – Physical coordinates in marginal order, without NaN values.- Returns:
Log density at each point. A zero marginal density gives negative infinity.
- Return type:
float|ndarray- Raises:
ValueError – If nonzero marginal densities are nonfinite or negative, or the copula cannot evaluate the transformed probabilities.
- pdf(points)[source]#
Return physical joint density with the shape of
logpdf().- Return type:
float|ndarray
- rvs(size=1, seed=None)[source]#
Draw physical observations with this joint law.
- Parameters:
size (
int) – Nonnegative number of observations.seed (
int|integer|Sequence[int] |ndarray|SeedSequence|BitGenerator|Generator|None) – NumPy random-generator input, passed toCopula.rvs().
- Returns:
Physical samples, with columns in marginal order.
- Return type:
ndarray
- make_transformation(method='rosenblatt', order=None, factorization='cholesky')[source]#
Build a normal Rosenblatt or spherical generalized Nataf mapping.
- Parameters:
method (
str) – Nataf requires an elliptical copula and retains its latent family.order (
Sequence[int] |ndarray|None) – Rosenblatt conditioning permutation, in original variable indices.factorization (
str) – Matrix factor for Nataf. Rosenblatt requires"cholesky".
- Returns:
A mapping for this joint law and the selected reference coordinates.
- Return type: