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: - shape parameter: ( k ) - scale parameter: ( lambda ) - location parameter (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