view = viewer.View(graphPDF) # %% graphCDF = distribution.drawCDF() graphCDF.setTitle( r"CDF of a normal distribution with parameters $\mu = 2.2$ and $\sigma = 0.6$" ) view = viewer.View(graphCDF) # %% # A discrete distribution # ----------------------- # # We define a geometric distribution with parameter :math:`p = 0.7`. p = 0.7 distribution = ot.Geometric(p) print(distribution) # %% # We draw a sample of it : size = 10 sample = distribution.getSample(size) print(sample) # %% # We draw its PDF and its CDF : graphPDF = distribution.drawPDF() graphPDF.setTitle(r"PDF of a geometric distribution with parameter $p = 0.7$") view = viewer.View(graphPDF) # %%
distributionCollection.add(student) continuousDistributionCollection.add(student) triangular = ot.Triangular(-1.0, 2.0, 4.0) distributionCollection.add(triangular) continuousDistributionCollection.add(triangular) uniform = ot.Uniform(1.0, 2.0) distributionCollection.add(uniform) continuousDistributionCollection.add(uniform) weibull = ot.WeibullMin(1.0, 1.0, 2.0) distributionCollection.add(weibull) continuousDistributionCollection.add(weibull) geometric = ot.Geometric(0.5) distributionCollection.add(geometric) discreteDistributionCollection.add(geometric) binomial = ot.Binomial(10, 0.25) distributionCollection.add(binomial) discreteDistributionCollection.add(binomial) zipf = ot.ZipfMandelbrot(20, 5.25, 2.5) distributionCollection.add(zipf) discreteDistributionCollection.add(zipf) poisson = ot.Poisson(5.0) distributionCollection.add(poisson) discreteDistributionCollection.add(poisson)
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if ot.Geometric().__class__.__name__ == 'Bernoulli': distribution = ot.Bernoulli(0.7) elif ot.Geometric().__class__.__name__ == 'Binomial': distribution = ot.Binomial(5, 0.2) elif ot.Geometric().__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.Geometric().__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.Geometric().__class__.__name__ == 'Histogram': distribution = ot.Histogram([-1.0, 0.5, 1.0, 2.0], [0.45, 0.4, 0.15]) elif ot.Geometric().__class__.__name__ == 'KernelMixture': kernel = ot.Uniform() sample = ot.Normal().getSample(5) bandwith = [1.0] distribution = ot.KernelMixture(kernel, bandwith, sample) elif ot.Geometric().__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.Geometric().__class__.__name__ == 'Multinomial': distribution = ot.Multinomial(5, [0.2]) elif ot.Geometric().__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.Geometric().__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.Geometric().__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.Geometric() 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))
import openturns as ot ot.TESTPREAMBLE() # QQPlot tests size = 100 normal = ot.Normal(1) sample = normal.getSample(size) sample2 = ot.Gamma(3.0, 4.0, 0.0).getSample(size) twoSamplesQQPlot = ot.VisualTest.DrawQQplot(sample, sample2) print("twoSamplesQQPlot = ", twoSamplesQQPlot) sampleDistributionQQPlot = ot.VisualTest.DrawQQplot(sample, normal) print("sampleDistributionQQPlot = ", sampleDistributionQQPlot) dist = ot.Geometric() qq_plot = ot.VisualTest.DrawQQplot(dist.getSample(size), dist) print("discrete QQPlot = ", qq_plot) # HenryLine test size = 100 normal = ot.Normal(1) sample = normal.getSample(size) henryPlot = ot.VisualTest.DrawHenryLine(sample) print("HenryPlot = ", henryPlot) # LinearModel tests dimension = 2 R = ot.CorrelationMatrix(dimension) R[0, 1] = 0.8 distribution = ot.Normal(
for j in range(i): R[i, j] = (i + j + 1.0) / (2.0 * dim) mean = [2.0] * dim sigma = [3.0] * dim distribution = ot.Normal(mean, sigma, R) size = 100 sample = distribution.getSample(size) sampleY = sample.getMarginal(0) sampleZ = ot.Sample(size, 1) for i in range(size): sampleZ[i, 0] = sampleY[i, 0] * sampleY[i, 0] discreteSample1 = ot.Poisson(0.1).getSample(size) discreteSample2 = ot.Geometric(0.4).getSample(size) # ChiSquared Independance test : test if two samples (of sizes not necessarily equal) are independant ? # Care : discrete samples only # H0 = independent samples # p-value threshold : probability of the H0 reject zone : 0.10 # p-value : probability (test variable decision > test variable decision evaluated on the samples) # Test = True <=> p-value > p-value threshold print("ChiSquared=", ot.HypothesisTest.ChiSquared(discreteSample1, discreteSample2, 0.10)) print("ChiSquared2=", ot.HypothesisTest.ChiSquared(discreteSample1, discreteSample1, 0.10)) # Pearson Test : test if two gaussian samples are independent (based on the evaluation of the linear correlation coefficient) # H0 : independent samples (linear correlation coefficient = 0) # Test = True <=> independent samples (linear correlation coefficient = 0)
""" Create a geometric distribution =============================== """ # %% # In this example we are going to create a geometric distribution with parameter :math:`p = 0.7`. # %% from __future__ import print_function import openturns as ot import openturns.viewer as viewer from matplotlib import pylab as plt ot.Log.Show(ot.Log.NONE) distribution = ot.Geometric(0.7) print(distribution) # %% sample = distribution.getSample(10) print(sample) # %% graph = distribution.drawCDF() view = viewer.View(graph) plt.show()
"round": 1, }, "ratio_shipping": { "marg": ot.Normal(0.2, 0.07), # mean is 0.3 "corr": -0.05, # Negative correlation with CR "bounds": [0.05, 0.4], "round": 4, }, "shipping_time": { "marg": ot.Poisson(3.0), # mean is 3 days "corr": -0.3, # The longer, the less CR "bounds": [1, 14], "round": 4, }, "nb_rating": { "marg": ot.Geometric(0.02), # mean is 50 "corr": 0.2, # The more the nb of rating, the better trust "bounds": None, "round": 0, # Already an integer (casted as double) }, "avg_rating": { "marg": ot.Triangular(1.0, 4.0, 5.0), # mode is 4.0 "corr": 0.25, # The better rating, the better the CR "bounds": None, "round": 2, }, "nb_provider_rating": { "marg": ot.Geometric(0.001), # mean is 1000 "corr": 0.08, # Weak positive correlation "bounds": None, "round": 0, # Already an integer (casted as double)
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if ot.Geometric().__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.Geometric().__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.Geometric().__class__.__name__ == 'Histogram': distribution = ot.Histogram([-1.0, 0.5, 1.0, 2.0], [0.45, 0.4, 0.15]) else: distribution = ot.Geometric() 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() fig = plt.figure(figsize=(10, 5)) plt.suptitle(str(distribution))
ot.FittingTest.BestModelAIC(sample, distributions) # %% # Rank the continuous models wrt the AICc criteria: ot.FittingTest.BestModelAICC(sample, distributions) # %% # **Discrete distributions** # %% # Create a sample from a discrete distribution distribution = ot.Poisson(2.0) sample = distribution.getSample(1000) graph = ot.UserDefined(sample).drawCDF() view = viewer.View(graph) # %% # Create the list of distribution estimators distributions = [ot.Poisson(2.0), ot.Geometric(0.1)] # %% # Rank the discrete models wrt the ChiSquared p-values: estimated_distribution, test_result = ot.FittingTest.BestModelChiSquared( sample, distributions) test_result # %% # Rank the discrete models wrt the BIC criteria: ot.FittingTest.BestModelBIC(sample, distributions) plt.show()