.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_meta_modeling/general_purpose_metamodels/plot_general_linear_model.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_meta_modeling_general_purpose_metamodels_plot_general_linear_model.py: Create a general linear model metamodel ======================================= .. GENERATED FROM PYTHON SOURCE LINES 6-8 In this example we are going to create a global approximation of a model response using a general linear model. We show how to use the `GeneralLinearModelAlgorithm` class, which estimates the parameters of the model. .. GENERATED FROM PYTHON SOURCE LINES 10-16 .. code-block:: Python import openturns as ot import openturns.viewer as viewer from matplotlib import pylab as plt ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 17-18 We create a model and a sample from this model. .. GENERATED FROM PYTHON SOURCE LINES 20-29 .. code-block:: Python ot.RandomGenerator.SetSeed(0) dimension = 2 input_names = ["x1", "x2"] formulas = ["cos(x1 + x2)"] model = ot.SymbolicFunction(input_names, formulas) distribution = ot.Normal(dimension) x = distribution.getSample(100) y = model(x) .. GENERATED FROM PYTHON SOURCE LINES 30-31 We create a `GeneralLinearModelAlgorithm` based on a linear basis. The `run` method estimats the coefficients of the trend and the hyperparameters of the covariance model. .. GENERATED FROM PYTHON SOURCE LINES 33-39 .. code-block:: Python basis = ot.LinearBasisFactory(dimension).build() covarianceModel = ot.SquaredExponential([1] * dimension, [1.0]) algo = ot.GeneralLinearModelAlgorithm(x, y, covarianceModel, basis) algo.run() result = algo.getResult() .. GENERATED FROM PYTHON SOURCE LINES 40-41 We see that the trend coefficients have been estimated. .. GENERATED FROM PYTHON SOURCE LINES 43-45 .. code-block:: Python result.getTrendCoefficients() .. raw:: html
class=Point name=Unnamed dimension=3 values=[-0.22819,-0.0113566,-0.00958984]


.. GENERATED FROM PYTHON SOURCE LINES 46-47 The parameters of the covariance models also have been estimated. .. GENERATED FROM PYTHON SOURCE LINES 49-51 .. code-block:: Python result.getCovarianceModel() .. raw:: html

SquaredExponential(scale=[1,1], amplitude=[0.323718])



.. GENERATED FROM PYTHON SOURCE LINES 52-53 The `getMetaModel` method returns the metamodel where the parameters have been estimated. .. GENERATED FROM PYTHON SOURCE LINES 55-57 .. code-block:: Python responseSurface = result.getMetaModel() .. GENERATED FROM PYTHON SOURCE LINES 58-59 Plot the output of our model depending on `x2` with `x1=0.5`. .. GENERATED FROM PYTHON SOURCE LINES 61-74 .. code-block:: Python xmin = -5.0 xmax = 5.0 x1value = 0.5 parametricModelGraph = ot.ParametricFunction(model, [0], [x1value]).draw(xmin, xmax) parametricModelGraph.setColors(["red"]) graphMetamodel = ot.ParametricFunction(responseSurface, [0], [x1value]).draw(xmin, xmax) graphMetamodel.setColors(["blue"]) parametricModelGraph.add(graphMetamodel) parametricModelGraph.setLegends(["Model", "Meta-Model"]) parametricModelGraph.setLegendPosition("upper right") view = viewer.View(parametricModelGraph) plt.show() .. image-sg:: /auto_meta_modeling/general_purpose_metamodels/images/sphx_glr_plot_general_linear_model_001.png :alt: y0 as a function of x2 :srcset: /auto_meta_modeling/general_purpose_metamodels/images/sphx_glr_plot_general_linear_model_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 75-79 We see that the metamodel is equal to the trend because it takes into account the fact that the mean of the gaussian process is zero. This `GeneralLinearModelAlgorithm` class is the main building block of the `KrigingAlgorithm`. This is why most basic use cases are based on the `KrigingAlgorithm` instead of the `GeneralLinearModelAlgorithm`, because this allows one to condition the gaussian process. .. _sphx_glr_download_auto_meta_modeling_general_purpose_metamodels_plot_general_linear_model.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_general_linear_model.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_general_linear_model.py `