algo9.setUpperBound(1.0) ks9 = algo9.build(sample) print( "with user defined boundaries correction, pdf(left)=%.6g" % ks9.computePDF(left), ", pdf(right)=%.6g" % ks9.computePDF(right)) # full degenerate case sample = ot.ComposedDistribution( [ot.Dirac(-7.0), ot.Dirac(0.0), ot.Dirac(8.0)]).getSample(50) smoothed = ot.KernelSmoothing().build(sample) print(smoothed.getSample(3)) # n-d degenerate case sample = ot.ComposedDistribution( [ot.Dirac(-7.0), ot.Arcsine(2.0, 3.0), ot.Dirac(8.0)]).getSample(50) sample.setDescription(['d7', 'a23', 'd8']) smoothed = ot.KernelSmoothing().build(sample) print(smoothed.getSample(3)) # Test with reduced Cutoff - generates non positive phiGammaH distribution = ot.Normal() kernel = ot.Normal() factory = ot.KernelSmoothing(kernel) ot.ResourceMap.SetAsScalar("KernelSmoothing-CutOffPlugin", 3.0) ot.RandomGenerator.SetSeed(8457) sample = distribution.getSample(30) h = factory.computePluginBandwidth(sample)[0] print("with reduced cutoff. h=%.6g" % (h))
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if ot.Arcsine().__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.Arcsine().__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.Arcsine().__class__.__name__ == 'Histogram': distribution = ot.Histogram([-1.0, 0.5, 1.0, 2.0], [0.45, 0.4, 0.15]) else: distribution = ot.Arcsine() 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()
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if (ot.Arcsine().__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.Arcsine().__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.Arcsine() 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))
# # %% from __future__ import print_function import openturns as ot import math as m ot.Log.Show(ot.Log.NONE) # %% # generate some multivariate data to estimate, with correlation cop1 = ot.AliMikhailHaqCopula(0.6) cop2 = ot.ClaytonCopula(2.5) copula = ot.ComposedCopula([cop1, cop2]) marginals = [ ot.Uniform(5.0, 6.0), ot.Arcsine(), ot.Normal(-40.0, 3.0), ot.Triangular(100.0, 150.0, 300.0) ] distribution = ot.ComposedDistribution(marginals, copula) sample = distribution.getSample(10000).getMarginal([0, 2, 3, 1]) # %% # estimate marginals dimension = sample.getDimension() marginalFactories = [] for factory in ot.DistributionFactory.GetContinuousUniVariateFactories(): if str(factory).startswith('Histogram'): # ~ non-parametric continue marginalFactories.append(factory)
algo9 = ot.KernelSmoothing(ot.Normal(), False) algo9.setBoundingOption(ot.KernelSmoothing.BOTH) algo9.setLowerBound(-1.0) algo9.setUpperBound(1.0) ks9 = algo9.build(sample) print("with user defined boundaries correction, pdf(left)=%.6g" % ks9.computePDF(left), ", pdf(right)=%.6g" % ks9.computePDF(right)) # full degenerate case sample = ot.ComposedDistribution( [ot.Dirac(-7.0), ot.Dirac(0.0), ot.Dirac(8.0)]).getSample(50) smoothed = ot.KernelSmoothing().build(sample) print(smoothed.getSample(3)) # n-d degenerate case sample = ot.ComposedDistribution( [ot.Dirac(-7.0), ot.Arcsine(2.0, 3.0), ot.Dirac(8.0)]).getSample(50) sample.setDescription(['d7', 'a23', 'd8']) smoothed = ot.KernelSmoothing().build(sample) print(smoothed.getSample(3)) # Test with reduced Cutoff - generates non positive phiGammaH distribution = ot.Normal() kernel = ot.Normal() factory = ot.KernelSmoothing(kernel) ot.ResourceMap_SetAsScalar("KernelSmoothing-CutOffPlugin", 3.0) ot.RandomGenerator.SetSeed(8457) sample = distribution.getSample(30) h = factory.computePluginBandwidth(sample)[0] print("with reduced cutoff. h=%.6g" % (h))
from __future__ import print_function import openturns as ot from math import pi ot.TESTPREAMBLE() ot.Log.Show(0) ot.PlatformInfo.SetNumericalPrecision(3) dim = 2 R = ot.CorrelationMatrix(2) R[0, 1] = 0.5 src = [ ot.ComposedDistribution([ot.Uniform(-pi, pi)] * dim), ot.ComposedDistribution([ot.Normal(4.0, 2.0)] * dim), ot.ComposedDistribution([ot.Gamma()] * dim), ot.ComposedDistribution([ot.Gamma(1.5, 2.5, -0.5)] * dim), ot.ComposedDistribution([ot.Arcsine(5.2, 11.6)] * dim), ot.Normal([3.0] * dim, [2.0] * dim, R) ] for sd in src: sample = sd.getSample(2000) d = ot.MetaModelAlgorithm.BuildDistribution(sample) print(d) sample = ot.Sample([[0], [142.857], [285.714], [428.571], [571.429], [714.286], [857.143], [1000.0]]) d = ot.MetaModelAlgorithm.BuildDistribution(sample) print(d)
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if ot.Arcsine().__class__.__name__ == 'Bernoulli': distribution = ot.Bernoulli(0.7) elif ot.Arcsine().__class__.__name__ == 'Binomial': distribution = ot.Binomial(5, 0.2) elif ot.Arcsine().__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.Arcsine().__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.Arcsine().__class__.__name__ == 'Histogram': distribution = ot.Histogram([-1.0, 0.5, 1.0, 2.0], [0.45, 0.4, 0.15]) elif ot.Arcsine().__class__.__name__ == 'KernelMixture': kernel = ot.Uniform() sample = ot.Normal().getSample(5) bandwith = [1.0] distribution = ot.KernelMixture(kernel, bandwith, sample) elif ot.Arcsine().__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.Arcsine().__class__.__name__ == 'Multinomial': distribution = ot.Multinomial(5, [0.2]) elif ot.Arcsine().__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)