get_MPM
This function takes as input the identified maxima, and output the Most Probable Maximum.
The algorithm is as follow, according to DNV-OS-E301 Guidance Note (Dec 2024), Ch.2 Sec.2:
Fit a Weibull distribution to your dataset of maxima:
Weibull cumulative distribution function:
\[F(x; k, \lambda) = 1 - e^{-(x / \lambda)^k}\]Fit data to obtain: -
shapeparameter: ( k ) -scaleparameter: ( lambda ) -locationparameter (if using 3-parameter): ( theta ) [optional]
For maxima analysis according to extreme value theory, the logarithm of a Weibull random variable is Gumbel distributed:
If ( X sim mathrm{Weibull}(lambda, k) ), then ( G = log(X) ) is Gumbel (minimum) distributed with: - Location parameter: ( mu = log(lambda) ) - Scale parameter: ( beta = 1/k ) - So ( G sim mathrm{Gumbel}_{min}(log(lambda), 1/k) ) [web:24][web:27]
For the transformation used in engineering standards (maxima conversion):
Number of expected independent maxima:
\[n = \frac{\text{total_duration}}{\text{average_period}}\]Use 3600 seconds as the reference duration (e.g., for 1 hour maxima count):
\[n = \frac{3600}{T_\text{avg}}\]The Most Probable Maximum (MPM) for the Gumbel distribution: .. math:
\text{MPM} = \mu + \beta \cdot \ln(n)
- where:
( mu ) is the location parameter (from Weibull fit)
( beta ) is the scale parameter (from Weibull fit or conversion)
( n ) is the expected number of maxima
If Weibull fit gives shape ( k ), scale ( lambda ): .. math:
\mu = \log(\lambda) \quad \beta = 1/k \quad \text{MPM} = \log(\lambda) + \frac{1}{k} \cdot \ln(n)
References: - DNV-OS-E301 Guidance Note (Dec 2024), Ch.2 Sec.2
See also
Function get_MPM in the file scube\src\scube\postpro\postprocessing.py