import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if (ot.ClaytonCopula().__class__.__name__ == 'SklarCopula'): myStudent = ot.Student(3.0, [1.0] * 2, [3.0] * 2, ot.CorrelationMatrix(2)) copula = ot.SklarCopula(myStudent) else: copula = ot.ClaytonCopula() if copula.getDimension() == 1: copula = ot.ClaytonCopula(2) copula.setDescription(['$u_1$', '$u_2$']) pdf_graph = copula.drawPDF() cdf_graph = copula.drawCDF() fig = plt.figure(figsize=(10, 4)) plt.suptitle(str(copula)) pdf_axis = fig.add_subplot(121) cdf_axis = fig.add_subplot(122) View(pdf_graph, figure=fig, axes=[pdf_axis], add_legend=False, square_axes=True) View(cdf_graph, figure=fig, axes=[cdf_axis], add_legend=False, square_axes=True)
if ot.FrankCopula().__class__.__name__ == 'EmpiricalBernsteinCopula': sample = ot.Dirichlet([1.0, 2.0, 3.0]).getSample(100) copula = ot.EmpiricalBernsteinCopula(sample, 4) elif ot.FrankCopula().__class__.__name__ == 'ExtremeValueCopula': copula = ot.ExtremeValueCopula(ot.SymbolicFunction("t", "t^3/2-t/2+1")) elif ot.FrankCopula( ).__class__.__name__ == 'MaximumEntropyOrderStatisticsCopula': marginals = [ot.Beta(1.5, 3.2, 0.0, 1.0), ot.Beta(2.0, 4.3, 0.5, 1.2)] copula = ot.MaximumEntropyOrderStatisticsCopula(marginals) elif ot.FrankCopula().__class__.__name__ == 'NormalCopula': R = ot.CorrelationMatrix(2) R[1, 0] = 0.8 copula = ot.NormalCopula(R) elif ot.FrankCopula().__class__.__name__ == 'SklarCopula': student = ot.Student(3.0, [1.0] * 2, [3.0] * 2, ot.CorrelationMatrix(2)) copula = ot.SklarCopula(student) else: copula = ot.FrankCopula() if copula.getDimension() == 1: copula = ot.FrankCopula(2) copula.setDescription(['$u_1$', '$u_2$']) pdf_graph = copula.drawPDF() cdf_graph = copula.drawCDF() fig = plt.figure(figsize=(10, 4)) pdf_axis = fig.add_subplot(121) cdf_axis = fig.add_subplot(122) View(pdf_graph, figure=fig, axes=[pdf_axis], add_legend=False, square_axes=True)
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if ot.SklarCopula().__class__.__name__ == 'EmpiricalBernsteinCopula': sample = ot.Dirichlet([1.0, 2.0, 3.0]).getSample(100) copula = ot.EmpiricalBernsteinCopula(sample, 4) elif ot.SklarCopula().__class__.__name__ == 'ExtremeValueCopula': copula = ot.ExtremeValueCopula(ot.SymbolicFunction("t", "t^3/2-t/2+1")) elif ot.SklarCopula( ).__class__.__name__ == 'MaximumEntropyOrderStatisticsCopula': marginals = [ot.Beta(1.5, 3.2, 0.0, 1.0), ot.Beta(2.0, 4.3, 0.5, 1.2)] copula = ot.MaximumEntropyOrderStatisticsCopula(marginals) elif ot.SklarCopula().__class__.__name__ == 'NormalCopula': R = ot.CorrelationMatrix(2) R[1, 0] = 0.8 copula = ot.NormalCopula(R) elif ot.SklarCopula().__class__.__name__ == 'SklarCopula': student = ot.Student(3.0, [1.0] * 2, [3.0] * 2, ot.CorrelationMatrix(2)) copula = ot.SklarCopula(student) else: copula = ot.SklarCopula() if copula.getDimension() == 1: copula = ot.SklarCopula(2) copula.setDescription(['$u_1$', '$u_2$']) pdf_graph = copula.drawPDF() cdf_graph = copula.drawCDF() fig = plt.figure(figsize=(10, 4)) pdf_axis = fig.add_subplot(121) cdf_axis = fig.add_subplot(122) View(pdf_graph, figure=fig,
import openturns as ot from matplotlib import pyplot as plt from openturns.viewer import View if (ot.SklarCopula().__class__.__name__=='SklarCopula'): myStudent = ot.Student(3.0, [1.0]*2, [3.0]*2, ot.CorrelationMatrix(2)) copula = ot.SklarCopula(myStudent) else: copula = ot.SklarCopula() if copula.getDimension() == 1: copula = ot.SklarCopula(2) copula.setDescription(['$u_1$', '$u_2$']) pdf_graph = copula.drawPDF() cdf_graph = copula.drawCDF() fig = plt.figure(figsize=(10, 4)) plt.suptitle(str(copula)) pdf_axis = fig.add_subplot(121) cdf_axis = fig.add_subplot(122) View(pdf_graph, figure=fig, axes=[pdf_axis], add_legend=False, square_axes=True) View(cdf_graph, figure=fig, axes=[cdf_axis], add_legend=False, square_axes=True)
indices = [1, 2, 3, 5, 6] print("indices=", indices) margins = distribution.getMarginal(indices) print("margins=", margins) print("margins PDF=%.5f" % margins.computePDF(point)) print("margins CDF=%.5f" % margins.computeCDF(point)) quantile = margins.computeQuantile(0.95) print("margins quantile=", quantile) print("margins CDF(quantile)=%.5f" % margins.computeCDF(quantile)) print("margins realization=", margins.getRealization()) # Tests o the isoprobabilistic transformation # General case with normal standard distribution print("isoprobabilistic transformation (general normal)=", distribution.getIsoProbabilisticTransformation()) # General case with non-normal standard distribution collection[0] = ot.SklarCopula(ot.Student( 3.0, [1.0]*2, [3.0]*2, ot.CorrelationMatrix(2))) collection.append(ot.Triangular(2.0, 3.0, 4.0)) distribution = ot.BlockIndependentDistribution(collection) print("isoprobabilistic transformation (general non-normal)=", distribution.getIsoProbabilisticTransformation()) dim = distribution.getDimension() x = 0.6 y = [0.2] * (dim - 1) print("conditional PDF=%.5f" % distribution.computeConditionalPDF(x, y)) print("conditional CDF=%.5f" % distribution.computeConditionalCDF(x, y)) print("conditional quantile=%.5f" % distribution.computeConditionalQuantile(x, y)) pt = ot.Point(dim) for i in range(dim): pt[i] = 0.1 * i + 0.05 print("sequential conditional PDF=",
#! /usr/bin/env python import openturns as ot ot.TESTPREAMBLE() # Instantiate one distribution object dim = 3 R = ot.CorrelationMatrix(dim) for i in range(dim - 1): R[i, i + 1] = 0.25 copula = ot.SklarCopula( ot.Distribution(ot.Normal([1.0, 2.0, 3.0], [2.0, 3.0, 1.0], R))) copulaRef = ot.NormalCopula(R) print("Copula ", repr(copula)) print("Copula ", copula) print("Mean =", repr(copula.getMean())) print("Mean (ref)=", repr(copulaRef.getMean())) ot.ResourceMap.SetAsUnsignedInteger("GaussKronrod-MaximumSubIntervals", 20) ot.ResourceMap.SetAsScalar("GaussKronrod-MaximumError", 1.0e-4) print("Covariance =", repr(copula.getCovariance())) ot.ResourceMap.SetAsUnsignedInteger("GaussKronrod-MaximumSubIntervals", 100) ot.ResourceMap.SetAsScalar("GaussKronrod-MaximumError", 1.0e-12) print("Covariance (ref)=", repr(copulaRef.getCovariance())) # Is this copula an elliptical distribution? print("Elliptical distribution= ", copula.isElliptical()) # Is this copula elliptical ? print("Elliptical copula= ", copula.hasEllipticalCopula())