# add a 2-d test dimension = 2 # This distribution takes too much time for the test #size = 70 #ref = ot.Normal(dimension) #sample = ref.getSample(size) #ks = ot.KernelSmoothing().build(sample) # Use a multivariate Normal distribution instead ks = ot.Normal(2) truncatedKS = ot.TruncatedDistribution( ks, ot.Interval([-0.5] * dimension, [2.0] * dimension)) distribution.append(truncatedKS) referenceDistribution.append(ks) # N/A # Add a non-truncated example weibull = ot.Weibull(2.0, 3.0) distribution.append(ot.TruncatedDistribution(weibull)) referenceDistribution.append(weibull) ot.RandomGenerator.SetSeed(0) for testCase in range(len(distribution)): print('Distribution ', distribution[testCase]) # Is this distribution elliptical ? print('Elliptical = ', distribution[testCase].isElliptical()) # Is this distribution continuous ? print('Continuous = ', distribution[testCase].isContinuous()) # Test for realization of distribution oneRealization = distribution[testCase].getRealization()
graph = result.drawPDF() result = ot.LogUniform() * ot.LogUniform() print('logu*logu:', result) graph = result.drawPDF() result = ot.LogUniform() * ot.LogNormal() print('logu*logn:', result) graph = result.drawPDF() result = ot.LogNormal() * ot.LogUniform() print('logn*logu:', result) graph = result.drawPDF() # For ticket #917 result = ot.Weibull() + ot.Exponential() print('Weibull+Exponential:', result) print('result.CDF(1.0)=%.6f' % result.computeCDF(1.0)) result = -1.0 * ot.Weibull() + ot.Exponential() print('-Weibull+Exponential:', result) print('result.CDF(1.0)=%.6f' % result.computeCDF(1.0)) result = ot.Weibull() - ot.Exponential() print('Weibull-Exponential:', result) print('result.CDF(1.0)=%.6f' % result.computeCDF(1.0)) result = -1.0 * ot.Weibull() - ot.Exponential() print('-Weibull-Exponential:', result) print('result.CDF(-1.0)=%.6f' % result.computeCDF(-1.0)) # 2-d print(ot.Normal(2) + ot.Normal(2)) print(ot.Normal(2) + 3.0)
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if ot.Weibull().__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.Weibull().__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.Weibull().__class__.__name__ == 'Histogram': distribution = ot.Histogram([-1.0, 0.5, 1.0, 2.0], [0.45, 0.4, 0.15]) else: distribution = ot.Weibull() 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()
coefficients[i] = 0.0 return ot.UniVariatePolynomial(coefficients) iMax = 5 distributionCollection = [ ot.Laplace(1.0, 0.0), ot.Logistic(0.0, 1.0), ot.Normal(0.0, 1.0), ot.Normal(1.0, 1.0), ot.Rayleigh(1.0), ot.Student(22.0), ot.Triangular(-1.0, 0.3, 1.0), ot.Uniform(-1.0, 1.0), ot.Uniform(-1.0, 3.0), ot.Weibull(1.0, 3.0), ot.Beta(1.0, 3.0, -1.0, 1.0), ot.Beta(0.5, 1.0, -1.0, 1.0), ot.Beta(0.5, 1.0, -2.0, 3.0), ot.Gamma(1.0, 3.0), ot.Arcsine() ] for n in range(len(distributionCollection)): distribution = distributionCollection[n] name = distribution.getClassName() polynomialFactory = ot.StandardDistributionPolynomialFactory( ot.AdaptiveStieltjesAlgorithm(distribution)) print("polynomialFactory(", name, "=", polynomialFactory, ")") for i in range(iMax): print(name, " polynomial(", i, ")=", clean(polynomialFactory.build(i))) roots = polynomialFactory.getRoots(iMax - 1)
xMax = sample.getMax()[0] delta = xMax - xMin a = xMin - delta / (size + 2) b = xMax + delta / (size + 2) distribution = ot.TruncatedNormal() factory = ot.MethodOfMomentsFactory(distribution) factory.setKnownParameter([a, b], [2, 3]) solver = factory.getOptimizationAlgorithm() sampleMean = sample.computeMean()[0] sampleSigma = sample.computeStandardDeviationPerComponent()[0] startingPoint = [sampleMean, sampleSigma] solver.setStartingPoint(startingPoint) factory.setOptimizationAlgorithm(solver) lowerBound = [-1.0, 0] upperBound = [-1.0, 1.5] finiteLowerBound = [False, True] finiteUpperBound = [False, True] bounds = ot.Interval(lowerBound, upperBound, finiteLowerBound, finiteUpperBound) factory.setOptimizationBounds(bounds) inf_distribution = factory.build(sample) print('estimated distribution=', inf_distribution) # setKnownParameter+buildEstimator sample = ot.Normal(2.0, 1.0).getSample(10) factory = ot.MethodOfMomentsFactory(ot.Weibull()) factory.setBootstrapSize(5) factory.setKnownParameter([1.0], [1]) # set the sigma parameter to 1.0 result = factory.buildEstimator(sample) print('ok')
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if (ot.Weibull().__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.Weibull().__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.Weibull() 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)) plt.suptitle(str(distribution)) pdf_axis = fig.add_subplot(111)
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if ot.Weibull().__class__.__name__ == 'Bernoulli': distribution = ot.Bernoulli(0.7) elif ot.Weibull().__class__.__name__ == 'Binomial': distribution = ot.Binomial(5, 0.2) elif ot.Weibull().__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.Weibull().__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.Weibull().__class__.__name__ == 'Histogram': distribution = ot.Histogram([-1.0, 0.5, 1.0, 2.0], [0.45, 0.4, 0.15]) elif ot.Weibull().__class__.__name__ == 'KernelMixture': kernel = ot.Uniform() sample = ot.Normal().getSample(5) bandwith = [1.0] distribution = ot.KernelMixture(kernel, bandwith, sample) elif ot.Weibull().__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.Weibull().__class__.__name__ == 'Multinomial': distribution = ot.Multinomial(5, [0.2])