Analysis of the LogNormal distribution in the BBRC

The goal of this document is to clarify the parametrization of the LogNormal distribution in the BBRC.

From the RPREPO

https://rprepo.readthedocs.io/en/latest/distributions.html#sec-lognormal

  • Type : univariate, continuous

  • Support : x\in(0,\infty)

  • Parameter : \theta_1=\mu \in (-\infty,\infty), shape

  • Parameter : \theta_2=\sigma \in (0,\infty), scale

  • Mean : e^{\mu+\frac{\sigma^2}{2}}

  • Variance : \left(e^{\sigma^2} - 1\right) e^{2\mu + \sigma^2}

f(x) = \frac{1}{x} \frac{1}{\sigma \sqrt{2\pi}} \exp\left(-\frac{\left(\ln(x) - \mu\right)^2}{2 \sigma^2}\right)

From this description we see that:

  • \theta_1 is the mean of the underlying gaussian and \theta_2 is the standard deviation of the underlying gaussian

  • Mean is the Mean of the LogNormal random variable and Std is the standard deviation of the LogNormal random variable.

From OpenTURNS

One of the two following parametrizations must be chosen:

  • LogNormal with \mu_\ell=\theta_1, \sigma_\ell=\theta_2 where \theta_1 is the mean

    of the underlying gaussian and \theta_2 is the standard deviation of the underlying gaussian

  • LogNormalMuSigma with Mean, Std where Mean is the Mean of the LogNormal random variable

    and Std is the standard deviation of the LogNormal random variable.

Problem

The problem is to select the parametrization that best corresponds to the problem and the data. The goal of this document is to make this selection clearer.

import openturns as ot
ot.__version__
'1.23'

RP60

https://rprepo.readthedocs.io/en/latest/reliability_problems.html#rp60

RP60 with LogNormalMuSigma

Mean = 2200.0
Std = 220.0
parameters = ot.LogNormalMuSigma(Mean, Std)
X = ot.ParametrizedDistribution(parameters)
X.getMean()
class=Point name=Unnamed dimension=1 values=[2200]


X.getStandardDeviation()
class=Point name=Unnamed dimension=1 values=[220]


RP60 with LogNormal

theta1 = 7.691
theta2 = 0.09975
X = ot.LogNormal(7.691, 0.09975, 0.0)
X
LogNormal
  • name=LogNormal
  • dimension=1
  • weight=1
  • range=[0, (4694.52) +inf[
  • description=[X0]
  • isParallel=true
  • isCopula=false


X.getMean()
class=Point name=Unnamed dimension=1 values=[2199.48]


X.getStandardDeviation()
class=Point name=Unnamed dimension=1 values=[219.945]


RP8

https://rprepo.readthedocs.io/en/latest/reliability_problems.html#rp8

RP8 with LogNormalMuSigma

Mean = 120.0
Std = 12.0
parameters = ot.LogNormalMuSigma(Mean, Std)
parameters
class=LogNormalMuSigma name=Unnamed mu=120 sigma=12 gamma=0


X = ot.ParametrizedDistribution(parameters)
X
ParametrizedDistribution
  • name=Unnamed
  • dimension=1
  • weight=1
  • range=[0, (256.128) +inf[
  • description=[X0]
  • isParallel=true
  • isCopula=false


X.getMean()
class=Point name=Unnamed dimension=1 values=[120]


X.getStandardDeviation()
class=Point name=Unnamed dimension=1 values=[12]


RP8 with LogNormal

theta1 = 4.783
theta2 = 0.09975
X = ot.LogNormal(4.783, 0.09975, 0.0)
X
LogNormal
  • name=LogNormal
  • dimension=1
  • weight=1
  • range=[0, (256.249) +inf[
  • description=[X0]
  • isParallel=true
  • isCopula=false


X.getMean()
class=Point name=Unnamed dimension=1 values=[120.058]


X.getStandardDeviation()
class=Point name=Unnamed dimension=1 values=[12.0056]


Conclusion

We see that in the RP60 and RP8 problems, the Mean and Std parameters are exact while \theta_1 and \theta_2 are given with 4 significant digits. This leads to an approximation if the \theta_1 and \theta_2 parameters are used.

This is why we choose the Mean and Std parameters as the parametrization for the BBRC. This corresponds to the following code and comments:

Mean = 120.0
Std = 12.0
parameters = ot.LogNormalMuSigma(Mean, Std)
X = ot.ParametrizedDistribution(parameters)
  • Mean is the Mean of the LogNormal random variable

  • Std is the standard deviation of the LogNormal random variable.

Total running time of the script: (0 minutes 0.293 seconds)