pystra.dependence.joint.JointDistribution#

Use it: User guide · Worked example · Theory

class JointDistribution(marginals, copula)[source]#

Bases: object

Continuous 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

cdf

Evaluate the physical joint cumulative distribution.

logpdf

Evaluate log joint density in physical coordinates.

make_transformation

Build a normal Rosenblatt or spherical generalized Nataf mapping.

pdf

Return physical joint density with the shape of logpdf().

rvs

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 to Copula.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:

CopulaTransformation