pystra.distributions.parent.MaxParent#
Use it: User guide · Worked example · Theory
- class MaxParent(name, max_dist, N, *, start_point=None)[source]#
Bases:
DistributionParent distribution recovered from a distribution of maxima.
For example, given an annual maximum distribution of imposed load, find the parent distribution of imposed load, if the load is applied 6 times per year.
Moments are computed deterministically by Gauss-Hermite quadrature of the quantile function in standard normal space, with exact identities for Frechet and uniform parents. Successive rules are compared at relative tolerance 1e-7 and absolute tolerance 1e-9 in standardized units; a miss warns and keeps the finest estimate, which serves for start points and finite-difference steps. Nonfinite moments raise
ModelError.- Parameters:
name (
str) – Name of the random variable, matching a limit-state argument.max_dist (
Distribution) – Distribution of maxima whose CDF is raised to the power 1/N.N (
float) – Finite exponent, at least 1. Integer N represents N independent observations.start_point (
float|None) – Starting point for the design-point search. Defaults to the mean.
Methods
Evaluate the cumulative distribution function.
Derivatives of the CDF w.r.t.
Return the random-variable name.
Inverse survival function.
Diagonal Jacobian of the marginal x-to-u transformation.
Log CDF, the maximum's divided by
N.Log density.
Log survival function.
Evaluate the probability density function.
Plot the probability density function.
Evaluate the inverse cumulative distribution function.
Draw random samples from the distribution.
Update the parent distribution exponent parameter.
Updating the parent distribution location parameter.
Updating the parent distribution scale parameter.
Survival function
1 - F_max(x)**(1/N).Transform from standard normal space to physical space.
Rebuild an independent marginal, replacing constructor parameters.
Transform from physical space to standard normal space.
- property sensitivity_params: dict[str, float]#
No generic moment perturbation; replace the constructor inputs.
- cdf_gradient(x)#
Derivatives of the CDF w.r.t. each sensitivity parameter.
Returns
∂F_X(x)/∂θfor every parameter listed bysensitivity_params. The base-class implementation uses central finite differences on the CDF viawith_parameters().Before computing derivatives, a reconstruction sanity check verifies that
with_parameters()(with no overrides) reproduces the current distribution. This catches both constructor failures (e.g. composite distributions) and silent mismatches (e.g. distributions whose extra constructor arguments are not stored inparameters).Subclasses may override this with analytical expressions for better accuracy and performance (see
NormalandLognormal).- Parameters:
x (
ArrayLike) – Evaluation point in physical space.- Returns:
{param_name: ∂F/∂θ}for each parameter insensitivity_params.- Return type:
dict[str,float|ndarray]- Raises:
ValueError – If the distribution cannot be faithfully reconstructed by
with_parameters().
- get_name()#
Return the random-variable name.
- Return type:
str
- jacobian(u, x)#
Diagonal Jacobian of the marginal x-to-u transformation.
Returns a diagonal matrix
Jwhere the diagonal entry isf_X(x) / phi(u)(Lemaire, eq. 4.9). This is assembled into the full Jacobian by theTransformationclass. The ratio is formed from log densities where either density underflows.- Parameters:
u (
ArrayLike) – Value(s) in standard normal space.x (
ArrayLike) – Corresponding value(s) in physical space.
- Returns:
Diagonal Jacobian matrix of shape
(n, n)where n is the length of the input arrays.- Return type:
ndarray
- property mean: float#
Mean of the distribution.
- property parameters: Mapping[str, object]#
Read-only snapshot of keyword arguments that rebuild this marginal.
type(dist)(**dist.parameters)reproduces its law, name and start point. Built-ins use native parameters where moment fitting could lose precision. Nested marginals and SciPy objects are independent copies, so mutating a snapshot never changes the source distribution. Custom marginals may override this property with their complete constructor mapping. Sensitivity coordinates are specified separately bysensitivity_params.
- plot(ax=None, **kwargs)#
Plot the probability density function.
- Parameters:
ax (
Axes|None) – Axes to plot on. A new figure is created ifNone.**kwargs (
Any) – Additional keyword arguments forwarded toax.plot().
- Returns:
The axes containing the plot.
- Return type:
Axes
- sample(n=1000)#
Draw random samples from the distribution.
Uses inverse-transform sampling via
ppf.- Parameters:
n (
int) – Number of samples (default 1000).- Returns:
Array of shape
(n,)with sampled values.- Return type:
ndarray
- property start_point: float#
Starting point of the design-point search; the mean by default.
- property std: float#
Standard deviation of the distribution.
- u_to_x(u)#
Transform from standard normal space to physical space.
Applies the marginal Nataf mapping
x = F^{-1}(Phi(u)). Aboveu = 3it is evaluated asFbar^{-1}(Phi(-u)), so the probability passed on is never rounded towards one; far into either tail the log-probability is used (see_tail_quantiles()).- Parameters:
u (
ArrayLike) – Value(s) in standard normal (u) space.- Returns:
Corresponding value(s) in physical (x) space.
- Return type:
float|ndarray
- with_parameters(**changes)#
Rebuild an independent marginal, replacing constructor parameters.
- Parameters:
**changes (
object) – Replacements for keys ofparameters. Built-ins supporting moment sensitivities also acceptmeanandstd; supplying either switches to moment construction, holding the other moment and fixed bounds/shape constant. Native coordinates and moments cannot be supplied together. The start point remains unchanged unless explicitly replaced (Noneselects the new mean).- Returns:
Independent instance of the same type, including nested marginals. An empty replacement reproduces the distribution.
- Return type:
Self- Raises:
TypeError – A replacement is unknown, or mixes moments and native coordinates.
ModelError, ValueError – Constructor parameters do not define a valid distribution.
- x_to_u(x)#
Transform from physical space to standard normal space.
Applies the marginal Nataf mapping
u = Phi^{-1}(F(x)), asu = -Phi^{-1}(Fbar(x))aboveu = 3, with log probabilities where these underflow.- Parameters:
x (
ArrayLike) – Value(s) in physical (x) space.- Returns:
Corresponding value(s) in standard normal (u) space.
- Return type:
float|ndarray