.. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` 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 ======================================= 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. .. code-block:: default 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) We create a model and a sample from this model. .. code-block:: default 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) 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. .. code-block:: default basis = ot.LinearBasisFactory(dimension).build() covarianceModel = ot.SquaredExponential([1]*dimension, [1.0]) algo = ot.GeneralLinearModelAlgorithm(x, y, covarianceModel, basis) algo.run() result = algo.getResult() We see that the trend coefficients have been estimated. .. code-block:: default result.getTrendCoefficients() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none [class=Point name=Unnamed dimension=3 values=[-0.22819,-0.0113566,-0.00958984]] The parameters of the covariance models also have been estimated. .. code-block:: default result.getCovarianceModel() .. raw:: html

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



The `getMetaModel` method returns the metamodel where the parameters have been estimated. .. code-block:: default responseSurface = result.getMetaModel() Plot the output of our model depending on `x2` with `x1=0.5`. .. code-block:: default xmin = -5. xmax = 5. 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("topright") view = viewer.View(parametricModelGraph) plt.show() .. image:: /auto_meta_modeling/general_purpose_metamodels/images/sphx_glr_plot_general_linear_model_001.png :alt: y0 as a function of x2 :class: sphx-glr-single-img 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 to condition the gaussian process. .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.116 seconds) .. _sphx_glr_download_auto_meta_modeling_general_purpose_metamodels_plot_general_linear_model.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_general_linear_model.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_general_linear_model.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_