#! /usr/bin/env python from __future__ import print_function import openturns as ot ot.TESTPREAMBLE() ot.RandomGenerator.SetSeed(0) # Instanciate one distribution object distribution = ot.Frechet(6.0, 1.5, -1.0) print("Distribution ", distribution) # Is this distribution elliptical ? print("Elliptical = ", distribution.isElliptical()) # Is this distribution continuous ? print("Continuous = ", distribution.isContinuous()) # Test for realization of distribution oneRealization = distribution.getRealization() print("oneRealization=", oneRealization) # Test for sampling size = 10000 oneSample = distribution.getSample(size) print("oneSample first=", oneSample[0], " last=", oneSample[size - 1]) print("mean=", oneSample.computeMean()) print("covariance=", oneSample.computeCovariance()) size = 100 for i in range(2): print(
# %% # The :class:`~openturns.GeneralizedExtremeValue` distribution is a family of continuous probability distributions that combine the :class:`~openturns.Gumbel`, :class:`~openturns.Frechet` and :class:`~openturns.WeibullMax` distribution, all extreme value distribution. # # In this example we use the associated :class:`~openturns.GeneralizedExtremeValueFactory` to fit sample with extreme values. This factory returns the best model among the Frechet, Gumbel and Weibull estimates according to the BIC criterion. # # %% # We draw a sample from a Gumbel of parameters :math:`\beta = 1.0` and :math:`\gamma = 3.0` and another one from a Frechet with parameters :math:`\beta=1.0`, :math:`\alpha = 1.0` and :math:`\gamma = 0.0`. # We consider both samples as a single sample from an unknown extreme distribution to be fitted. # # %% # The distributions used: myGumbel = ot.Gumbel(1.0, 3.0) myFrechet = ot.Frechet(1.0, 1.0, 0.0) # %% # We build our experiment sample of size 2000. sample = ot.Sample() sampleFrechet = myFrechet.getSample(1000) sampleGumbel = myGumbel.getSample(1000) sample.add(sampleFrechet) sample.add(sampleGumbel) # %% # We fit the sample thanks to the `GeneralizedExtremeValueFactory`: myDistribution = ot.GeneralizedExtremeValueFactory( ).buildAsGeneralizedExtremeValue(sample) # %%
#! /usr/bin/env python from __future__ import print_function import openturns as ot ot.Log.Show(ot.Log.ALL) distribution = ot.Frechet(2.5, 2.0, -1.5) size = 10000 sample = distribution.getSample(size) factory = ot.FrechetFactory() print('Distribution =', repr(distribution)) result = factory.buildEstimator(sample) estimatedDistribution = result.getDistribution() print('Estimated distribution =', repr(estimatedDistribution)) parameterDistribution = result.getParameterDistribution() print('Parameter distribution =', parameterDistribution) defaultDistribution = factory.build() print('Default distribution =', defaultDistribution) fromParameterDistribution = factory.build(distribution.getParameter()) print('Distribution from parameters =', fromParameterDistribution) typedEstimatedDistribution = factory.buildAsFrechet(sample) print('Typed estimated distribution =', typedEstimatedDistribution) defaultTypedDistribution = factory.buildAsFrechet() print('Default typed distribution =', defaultTypedDistribution) typedFromParameterDistribution = factory.buildAsFrechet( distribution.getParameter()) print('Typed distribution from parameters=', typedFromParameterDistribution) # More involved test: the sample distribution does not fit the factory # The distributions used : myFrechet = ot.Frechet(1.0, 1.0, 0.0)
def Frechet(alpha=1.0, beta=1.0, gamma=0.0): """ Frechet compatibility shim. """ return ot.Frechet(beta, alpha, gamma)
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if ot.Frechet().__class__.__name__ == 'ComposedDistribution': correlation = ot.CorrelationMatrix(2) correlation[1, 0] = 0.25 aCopula = ot.NormalCopula(correlation) marginals = [ot.Normal(1.0, 2.0), ot.Normal(2.0, 3.0)] distribution = ot.ComposedDistribution(marginals, aCopula) elif ot.Frechet().__class__.__name__ == 'CumulativeDistributionNetwork': distribution = ot.CumulativeDistributionNetwork( [ot.Normal(2), ot.Dirichlet([0.5, 1.0, 1.5])], ot.BipartiteGraph([[0, 1], [0, 1]])) elif ot.Frechet().__class__.__name__ == 'Histogram': distribution = ot.Histogram([-1.0, 0.5, 1.0, 2.0], [0.45, 0.4, 0.15]) else: distribution = ot.Frechet() dimension = distribution.getDimension() if dimension == 1: distribution.setDescription(['$x$']) pdf_graph = distribution.drawPDF() cdf_graph = distribution.drawCDF() fig = plt.figure(figsize=(10, 4)) plt.suptitle(str(distribution)) pdf_axis = fig.add_subplot(121) cdf_axis = fig.add_subplot(122) View(pdf_graph, figure=fig, axes=[pdf_axis], add_legend=False) View(cdf_graph, figure=fig, axes=[cdf_axis], add_legend=False) elif dimension == 2: distribution.setDescription(['$x_1$', '$x_2$']) pdf_graph = distribution.drawPDF()
#! /usr/bin/env python from __future__ import print_function import openturns as ot ot.Log.Show(ot.Log.ALL) distribution = ot.Frechet(2.0, 2.5, -1.5) size = 10000 sample = distribution.getSample(size) factory = ot.FrechetFactory() print('Distribution =', repr(distribution)) result = factory.buildEstimator(sample) estimatedDistribution = result.getDistribution() print('Estimated distribution =', repr(estimatedDistribution)) parameterDistribution = result.getParameterDistribution() print('Parameter distribution =', parameterDistribution) defaultDistribution = factory.build() print('Default distribution =', defaultDistribution) fromParameterDistribution = factory.build(distribution.getParameter()) print('Distribution from parameters =', fromParameterDistribution) typedEstimatedDistribution = factory.buildAsFrechet(sample) print('Typed estimated distribution =', typedEstimatedDistribution) defaultTypedDistribution = factory.buildAsFrechet() print('Default typed distribution =', defaultTypedDistribution) typedFromParameterDistribution = factory.buildAsFrechet( distribution.getParameter()) print('Typed distribution from parameters=', typedFromParameterDistribution)
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if ot.Frechet().__class__.__name__ == 'Bernoulli': distribution = ot.Bernoulli(0.7) elif ot.Frechet().__class__.__name__ == 'Binomial': distribution = ot.Binomial(5, 0.2) elif ot.Frechet().__class__.__name__ == 'ComposedDistribution': copula = ot.IndependentCopula(2) marginals = [ot.Uniform(1.0, 2.0), ot.Normal(2.0, 3.0)] distribution = ot.ComposedDistribution(marginals, copula) elif ot.Frechet().__class__.__name__ == 'CumulativeDistributionNetwork': coll = [ot.Normal(2),ot.Dirichlet([0.5, 1.0, 1.5])] distribution = ot.CumulativeDistributionNetwork(coll, ot.BipartiteGraph([[0,1], [0,1]])) elif ot.Frechet().__class__.__name__ == 'Histogram': distribution = ot.Histogram([-1.0, 0.5, 1.0, 2.0], [0.45, 0.4, 0.15]) elif ot.Frechet().__class__.__name__ == 'KernelMixture': kernel = ot.Uniform() sample = ot.Normal().getSample(5) bandwith = [1.0] distribution = ot.KernelMixture(kernel, bandwith, sample) elif ot.Frechet().__class__.__name__ == 'MaximumDistribution': coll = [ot.Uniform(2.5, 3.5), ot.LogUniform(1.0, 1.2), ot.Triangular(2.0, 3.0, 4.0)] distribution = ot.MaximumDistribution(coll) elif ot.Frechet().__class__.__name__ == 'Multinomial': distribution = ot.Multinomial(5, [0.2]) elif ot.Frechet().__class__.__name__ == 'RandomMixture': coll = [ot.Triangular(0.0, 1.0, 5.0), ot.Uniform(-2.0, 2.0)] weights = [0.8, 0.2] cst = 3.0 distribution = ot.RandomMixture(coll, weights, cst)
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if (ot.Frechet().__class__.__name__ == 'ComposedDistribution'): correlation = ot.CorrelationMatrix(2) correlation[1, 0] = 0.25 aCopula = ot.NormalCopula(correlation) marginals = [ot.Normal(1.0, 2.0), ot.Normal(2.0, 3.0)] distribution = ot.ComposedDistribution(marginals, aCopula) elif (ot.Frechet().__class__.__name__ == 'CumulativeDistributionNetwork'): distribution = ot.CumulativeDistributionNetwork( [ot.Normal(2), ot.Dirichlet([0.5, 1.0, 1.5])], ot.BipartiteGraph([[0, 1], [0, 1]])) else: distribution = ot.Frechet() dimension = distribution.getDimension() if dimension <= 2: if distribution.getDimension() == 1: distribution.setDescription(['$x$']) pdf_graph = distribution.drawPDF() cdf_graph = distribution.drawCDF() fig = plt.figure(figsize=(10, 4)) plt.suptitle(str(distribution)) pdf_axis = fig.add_subplot(121) cdf_axis = fig.add_subplot(122) View(pdf_graph, figure=fig, axes=[pdf_axis], add_legend=False) View(cdf_graph, figure=fig, axes=[cdf_axis], add_legend=False) else: distribution.setDescription(['$x_1$', '$x_2$']) pdf_graph = distribution.drawPDF() fig = plt.figure(figsize=(10, 5))