From e374c82958a5c16c7123c5be2fada5aa0c1f04fe Mon Sep 17 00:00:00 2001 From: Michael BAUDIN Date: Fri, 24 May 2024 00:06:12 +0200 Subject: [PATCH] =?UTF-8?q?Finalise=20une=20premi=C3=A8re=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calibration2024/calibration2024.bib | 76 ++++-------------- calibration2024/calibration2024.tex | 71 ++++++++++++++-- .../figures/MethodologieIncertitude-EN.pdf | Bin 0 -> 28907 bytes calibration2024/macros.tex | 2 + 4 files changed, 82 insertions(+), 67 deletions(-) create mode 100755 calibration2024/figures/MethodologieIncertitude-EN.pdf diff --git a/calibration2024/calibration2024.bib b/calibration2024/calibration2024.bib index 986b6b6..13cfa92 100755 --- a/calibration2024/calibration2024.bib +++ b/calibration2024/calibration2024.bib @@ -1,19 +1,12 @@ @inproceedings{Baudin2021, - title={Linear algebra of linear and nonlinear bayesian calibration}, + title={Linear algebra of linear and nonlinear {Bayesian} calibration}, author={Baudin, Michaël and Lebrun, Régis}, year={2021}, booktitle = {UNCECOMP 2021}, pages = {339--353}, organization = "4th ECCOMAS Thematic Conference on Uncertainty Quantification in Computational Sciences and Engineering M. Papadrakakis, V. Papadopoulos, G. Stefanou (eds.) Streamed from Athens, Greece, 28-30 June 2021", } -@book{BinghamFry2010, - title={Regression, Linear Models in Statistics}, - author={N. H. Bingham and John M. Fry}, - series={Springer Undergraduate Mathematics Series}, - year={2010}, - publisher={Springer} -} @Book{Bjorck1996, author = {Ake Björck}, @@ -22,14 +15,6 @@ @Book{Bjorck1996 year = {1996}, } -@book{BinghamFry, - title={Regression, Linear Models in Statistics}, - author={N. H. Bingham and John M. Fry}, - series={Springer Undergraduate Mathematics Series}, - year={2010}, - publisher={Springer} -} - @INPROCEEDINGS{Hansen00thelcurve, author = {P. C. Hansen}, title = {The {L}-Curve and its Use in the Numerical Treatment of Inverse Problems}, @@ -64,20 +49,6 @@ @book{Evensen2009 publisher = {SIAM} } -@book{Sen1990, - author = "Ashish Sen and Muni Srivastava", - title = "Regression analysis", - year = "1990", - publisher = "Springer", -} - -@book{Draper1988, - author = "Norman R. Draper and Harry Smith", - title = "Applied Regression Analysis, Third Edition", - year = "1988", - publisher = "John Wiley \& Sons, Inc.", -} - @book{Tarantola2005, author = "Albert Tarantola", title = "Inverse problem theory", @@ -92,14 +63,6 @@ @book{Asch2016 publisher={SIAM} } -@incollection{iooss2015review, - title={A review on global sensitivity analysis methods}, - author={Iooss, Bertrand and Lema{\^\i}tre, Paul}, - booktitle={Uncertainty management in simulation-optimization of complex systems}, - pages={101--122}, - year={2015}, - publisher={Springer} -} @Inbook{Baudin2016, author="Baudin, Micha{\"e}l and Dutfoy, Anne and Iooss, Bertrand and Popelin, Anne-Laure", @@ -129,13 +92,6 @@ @techreport{BaudinMethodes2022 number={6125-3119-2022-00175-FR} } -@unpublished{OpenTURNSCalibrationFlooding, -author = "{Consortium OpenTURNS}", -title = "Calibration of the flooding model", -year = "2022", -note = "\url{http://openturns.github.io/openturns/master/auto_calibration/least_squares_and_gaussian_calibration/plot_calibration_flooding.html}", -} - @techreport{garbow1980implementation, title={Implementation guide for {MINPACK}-1.}, author={Garbow, Burton S. and Hillstrom, Kenneth E. and More, Jorge J.}, @@ -151,21 +107,23 @@ @book{kern2016methodes } -@book{hastie2009elements, - title={The elements of statistical learning: data mining, inference, and prediction}, - author={Hastie, Trevor and Tibshirani, Robert and Friedman, Jerome H and Friedman, Jerome H}, - volume={2}, - year={2009}, - publisher={Springer} +@book{lawson1995solving, + title={Solving least squares problems}, + author={Lawson, Charles L. and Hanson, Richard J.}, + year={1995}, + publisher={SIAM} } -@article{Rocquigny2006LaMaitrise, - title={La maîtrise des incertitudes dans un contexte industriel. 1re partie: une approche méthodologique globale basée sur des exemples.}, - author={de Rocquigny, Etienne.}, - journal={Journal de la Société française de statistique}, - volume={147}, - number={3}, - pages={33-71}, - year={2006} +@book{idier2013bayesian, + title={Bayesian approach to inverse problems}, + author={Idier, J{\'e}r{\^o}me}, + year={2013}, + publisher={John Wiley \& Sons} } +@book{hansen2013least, + title={Least squares data fitting with applications}, + author={Hansen, Per Christian and Pereyra, Victor and Scherer, Godela}, + year={2013}, + publisher={JHU Press} +} diff --git a/calibration2024/calibration2024.tex b/calibration2024/calibration2024.tex index edcb993..4d7f945 100755 --- a/calibration2024/calibration2024.tex +++ b/calibration2024/calibration2024.tex @@ -59,28 +59,83 @@ \begin{frame} \frametitle{Introduction} -On dispose : +We have: \begin{itemize} -\item d'observations, -\item d'un modèle paramétrique. +\item a dataset, +\item a parametric model with unknown parameters. \end{itemize} -On cherche : +We search for: \begin{itemize} -\item des paramètres, -\item tels que les prédictions du modèle soient -\emph{proches} des observations. +\item parameter values, +\item such that the predictions of the model are as close as possible to the data. \end{itemize} +Since the dataset is random, we want the distribution of the parameters. + +From there, we can compute confidence intervals of the parameters. + \begin{figure} \begin{center} \includegraphics[width=0.5\textwidth]{flooding_before_calibration.pdf} \end{center} -\caption{Des observations comparées à des prédictions.} +\caption{Observations compared to the predictions of a model.} \end{figure} \end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] +\section{Overview} +\frametitle{Overview} + +In OpenTURNS, we have several calibration features: +\begin{itemize} +\item \href{https://openturns.github.io/openturns/latest/theory/data_analysis/data_analysis.html#calibration}{theory help pages} +\item \href{https://openturns.github.io/openturns/latest/user_manual/calibration.html}{API help pages} +\item \href{https://openturns.github.io/openturns/latest/auto_calibration/index.html}{examples}. +\end{itemize} + + +There are two types of features : +\begin{itemize} +\item linear and non linear least squares, Gaussian linear and non linear calibration : \pyvar{*Calibration} classes. These classes compute the \textbf{posterior distribution of the parameters}. +\item Monte Carlo Markov Chain (MCMC) algorithms : \pyvar{*MetropolisHastings}, etc. These classes \textbf{generate a sample from the posterior distribution of the parameters}. +\end{itemize} + +The simplest example is \href{https://openturns.github.io/openturns/latest/auto_calibration/least_squares_and_gaussian_calibration/plot_calibration_quickstart.html#sphx-glr-auto-calibration-least-squares-and-gaussian-calibration-plot-calibration-quickstart-py}{Calibrate a parametric model: a quick-start guide to calibration} + +Here, we are going to review the \href{https://openturns.github.io/openturns/latest/auto_calibration/least_squares_and_gaussian_calibration/plot_calibration_flooding.html#sphx-glr-auto-calibration-least-squares-and-gaussian-calibration-plot-calibration-flooding-py}{Calibration of the flooding model} +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] +\section{Conclusion} +\frametitle{Conclusion} + +Other tools : +\begin{itemize} +\item Calibration methods are also available in \href{https://persalys.fr}{Persalys} : linear and non linear least squares, Gaussian linear and non linear calibration. +\end{itemize} + +Perspectives: +\begin{itemize} +\item provide bounds to the optimization algorithms (return truncated normal distribution if necessary); +\item unify the \pyvar{ParametricFunction} in \pyvar{*Calibration} and \pyvar{*MetropolisHastings} classes (exchange the roles of $x$ and $\theta$); +\item calibrate parametric functions with field output more easily; +\item provide algorithms to automatically compute finite difference steps (not specific to calibration); +\item provide the covariance matrix of the parameters as a diagonal matrix; +\item scale the parameters to calibrate (not specific to calibration); +\item implement \pyvar{CalibrationResult.isBayesian()} (see \href{https://github.com/openturns/openturns/issues/2560}{2560}); +\item implement a `CalibrationResult` structure for M.-H. classes. +\end{itemize} +\end{frame} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{References} diff --git a/calibration2024/figures/MethodologieIncertitude-EN.pdf b/calibration2024/figures/MethodologieIncertitude-EN.pdf new file mode 100755 index 0000000000000000000000000000000000000000..473f05f5276b003b9e0489265be0dab459f86d0e GIT binary patch literal 28907 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%0DxP9C%O3PL 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μIx-r8^ZbO5WTqlhxca7wdHV%!!MOTNkN zCC<3|p+3s!nM?KI{vI^rmcTo=Rq*J#3CTUO+K7BpTevz}u5Ny*{oZunSbYq7; z>(4qke|X{DYp`FDKWhCuj_b#Ky8jIQVFCL0obGE$Kpg2!x8k zk_ZsU#R1Fj69~2qgyj$*5Dd#XV4uOTn1AIk@m>dW!(w2Gi}SAp)9&lwcnaGGtNT7d z|F`<@j}43Cf>j8ETY+GnKMfs!G!y19{p{Wkoaq@a7zpMB!WJcn2ZqFgSb<EewD3?~k7T%YOUs4t2DCYk&b8QV0gD<$t|kz$^sj$!b9Jrv~QY zx}S*mFBg}_Gs9~zhoe2*pnLxWw8 zAiuQ*3grIn7*O!<8f;zsR+f_+1_=Lh3{D;xhWv{L0rUJ82Z3 z}L2W$z7Ue~E)}*T3}(7Z~!}c)%v*Z~YA6zIW*UN1H(~+WNORDC};J zU*n)0FpT?`vM|#6R}Bp1gyGx&i~~a<_u%(Gjtl!X!}V*MVH(e`ZGp`{m?!TqWw~KX zuzJKV{Q9m S1%P2(IuL`NUQ9t8