From 9dd1f7a0378ad4525f2c97bc37e7efd60badc850 Mon Sep 17 00:00:00 2001 From: Martin Kilbinger Date: Thu, 8 Sep 2022 13:31:59 +0200 Subject: [PATCH 1/5] Added importance sampling nb --- README.md | 145 +++--------- docs/docker | 1 - docs/presentation_tips | 1 - docs/tensorflow-introduction | 1 - importance_sampling.ipynb | 440 +++++++++++++++++++++++++++++++++++ maintenance_recipes.md | 17 -- requirements.txt | 5 + 7 files changed, 474 insertions(+), 136 deletions(-) delete mode 160000 docs/docker delete mode 160000 docs/presentation_tips delete mode 160000 docs/tensorflow-introduction create mode 100644 importance_sampling.ipynb delete mode 100644 maintenance_recipes.md create mode 100644 requirements.txt diff --git a/README.md b/README.md index ef77e8e..7bb1832 100644 --- a/README.md +++ b/README.md @@ -1,132 +1,45 @@ - - -[![All Contributors](https://img.shields.io/badge/all_contributors-9-orange.svg?style=flat-square)](#contributors-) - - -# CosmoStat Tutorials +## Importance sampling --- -CosmoStat is committed to the philosophy of reproducible research, endeavouring -to provide source code and data for all publications. In this spirit, we have -additionally put significant effort into providing useful educational -materials. The aim being to provide other researchers with an in-depth -understanding of the various tools we use in our work. - -We always welcome new tutorial requests, just click [here](https://github.com/CosmoStat/Tutorials/issues/new?assignees=&labels=tutorial+request&template=tutorial-request.md&title=%5BTutorial%5D+Your+idea+for+a+tutorial). - -## Contents - -1. [Career Development](#Career-Development) -1. [Cosmology](#Cosmology) -1. [Data Science](#Data-Science) -1. [Software Carpentries](#Software-Carpentries) - -### Career Development - -1. **[Presentation Tips](https://cosmostat.github.io/Tutorials/presentation_tips/presentation_tips/index.html)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/presentations) [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/playlist?list=PLquvp9RIoLGCmfAZTOKJz7qDO0NqCnMAV) - *Authors:* [@pettorin](https://github.com/pettorin) - This tutorial provides tips on how to adapt presentations for different goals. The tutorial is mainly meant for scientists, but several tips can be useful for other types of talks. - -### Cosmology - -1. **[Cosmology with Python wrappers for Einstein-Boltzmann Codes](https://github.com/CosmoStat/Tutorials/tree/boltzmann)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/boltzmann) [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=EMpCxUvF3lc) - *Authors:* [@santiagocasas](https://github.com/santiagocasas) - This tutorial is comprised of a series of Jupyter notebooks with simple demonstrations and exercises on how to use `CAMB` and `CLASS` using python wrappers. The code is designed for non-experts in the field, therefore it includes relatively simple explanations of cosmological concepts. It intends to show a general overview of the things that are possible with Einstein-Boltzmann codes and python. - -2. **[Power Spectrum](http://github.com/CosmoStat/Tutorials/tree/power-spectrum)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](http://github.com/CosmoStat/Tutorials/tree/power-spectrum) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/CosmoStat/Tutorials/blob/power-spectrum/WL_power_spectrum.ipynb) - *Authors:* [@b-remy](https://github.com/b-remy), [@dlanzieri](https://github.com/dlanzieri), [@EiffL](https://github.com/EiffL) - This tutorial presents how to compute a power spectrum from a lensing map (in the flat sky approximation) and how to compute the corresponding theory spectrum using a cosmology code. - -### Data Science - -1. **[Introduction to Python](https://github.com/CosmoStat/Tutorials/tree/python)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/python) [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=cbekcGxm70Q&list=PLquvp9RIoLGBFfsz8dqzPtLeaEngHYybM) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/CosmoStat/Tutorials/python) - *Authors:* [@sfarrens](https://github.com/sfarrens), [@santiagocasas](https://github.com/santiagocasas) - * [Tutorial 1: Beginner Topics](https://github.com/CosmoStat/Tutorials/tree/python#tutorial-1-beginner-topics) - The objective of this tutorial is to provide a first look at Python for beginners. The level is aimed at individuals with little or no experience whatsoever with Python. Experienced users are unlikely to benefit from this tutorial. - * [Tutorial 2: Intermediate and Advanced Topics](https://github.com/CosmoStat/Tutorials/tree/python#tutorial-2-intermediate-and-advanced-topics) - The objective of this tutorial is to provide a more in-depth look at object-oriented and pythonic coding. The level is aimed at individuals with some experience with Python and good knowledge of basic object types. This tutorial will likely benefit all except the most advanced users. - -2. **[Python Optimisation and Memory Management](https://github.com/CosmoStat/Tutorials/tree/profiling)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/profiling) - *Authors:* [@sfarrens](https://github.com/sfarrens) - This tutorial introduces some techniques for determinisitic and memory profiling of Python scripts, followed by some tips on how to implement some basic optimisation. - -3. **[C++](https://github.com/CosmoStat/Tutorials/tree/CPlusPlus)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/CPlusPlus) [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=47Ldg6i2B8Y&list=PLquvp9RIoLGD5yDykupoCueNp2EHEjuZB) - *Authors:* [@kansal9](https://github.com/kansal9) - This tutorial aims to help newcomers learn C++ and solve their programming problems. It is assumed that readers are already familiar with C, or at least that they do not have any difficulty reading C code. In other words, those who have experience in C and peo·ple who desire to quickly understand the features of modern C++ in a short period of time are well suited to follow this tutorial. - -4. **[Sparsity](https://github.com/CosmoStat/Tutorials/tree/ada)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/ada) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/CosmoStat/Tutorials/ada) - *Authors:* [@sfarrens](https://github.com/sfarrens) - This tutorial is comprised of a series of Jupyter notebooks that demonstrate how the tools implemented in sparsity work as well as showing the applicability of these tools to various simple problems. - -5. **[Low-Rank](https://github.com/CosmoStat/Tutorials/tree/low-rank)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/low-rank) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/CosmoStat/Tutorials/low-rank) - *Authors:* [@sfarrens](https://github.com/sfarrens) - The objective is to provide a beginner level introduction to the concept of low-rank approximation, in particular as a regularisation method for solving linear inverse problems. - -6. **[TensorFlow](https://github.com/CosmoStat/Tutorials/tree/tensorflow-tutorial)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/tensorflow-tutorial) - *Authors:* [@zaccharieramzi](https://github.com/zaccharieramzi), [@EiffL](https://github.com/EiffL) - * *First Steps with TensorFlow*: [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=kawHQpxytLo) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/CosmoStat/Tutorials/blob/tensorflow-tutorial/TensorFlowFirstSteps.ipynb) - A short introduction to the basic concepts underpinning TensorFlow, in particular automatic differentation. - * *MRI reconstruction with TensorFlow*: [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=HqNm5fowdTU) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/CosmoStat/Tutorials/blob/tensorflow-tutorial/MRIReconstructionWithTensorflow.ipynb) - An illustration of how to use TensorFlow to solve a toy MRI reconstruction problem using classical iterative reconstructions, and a deep learning approach. - -7. **[Blind Source Separation](https://github.com/RCarloniGertosio/bss_tutorial)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/RCarloniGertosio/bss_tutorial) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/RCarloniGertosio/bss_tutorial/master) - *Authors:* [@RCarloniGertosio](https://github.com/RCarloniGertosio) - The goal of this tutorial is to present Blind Source Separation (BSS) problems and the main methods to solve them. This tutorial does not provide in-depth mathematical explanations for every methods; the emphasis is rather on illustrations and intuition. +> Author: [Martin Kilbinger](http://www.cosmostat.org/people/kilbinger) +> Year: 2022 +> Email: [martin.killbinger@cea.fr](mailto:martin.killbinger@cea.fr) -7. **[Introduction to MCMC and Bayesian inference](https://colab.research.google.com/drive/1EUF7-CwamhAT6wedntStdb4x3dDbihoo?usp=sharing)** | [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=EfWEGBHeA3k) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1EUF7-CwamhAT6wedntStdb4x3dDbihoo?usp=sharing) - *Authors:* [@EiffL](https://github.com/EiffL) - This tutorial is a practical introduction to Bayesian inference using emcee and - touching on questions related to measurement errors and covariance. +[notebook](./importance_sampling.ipynb) -### Software Carpentries +This is a very brief tutorial about how importance sampling for Bayesian parameter inference. +Specifically, it describes the case where an existing sample (e.g. a Monte-Carlo Markov chain) can be importance-sampled +to obtain samples under a joint posterior distribution. -1. **[Git Tutorial](https://github.com/zaccharieramzi/git-tuto)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/zaccharieramzi/git-tuto) [![slides](https://img.shields.io/badge/slides-google-yellow)](https://docs.google.com/presentation/d/1vfsG__2-T7xJYGKFs9HfPKmaoMN1Je0V0h7gLyiY1AU/edit?usp=sharing) [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=S1A2qSA0TWo) - *Authors:* [@zaccharieramzi](https://github.com/zaccharieramzi) - This tutorial will help you practice the basics of the GitHub flow and how to work on open source projects. +For a more general tutorial of Bayesian paremeter inference see the Introduction to MCMC and Bayesian inference linked from CosmoStat Tutorial site. -2. **[Jekyll Tutorial](https://github.com/sfarrens/jekyll_tutorial)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/sfarrens/jekyll_tutorial) [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=qRxbbSaVW7M) - *Authors:* [@sfarrens](https://github.com/sfarrens) - The objective of this tutorial is to introduce Jekyll and show you how to build a website that you can host on GitHub for free. +This tutorial contains a single Jupyter notebook with description and executable code. -3. **[Make and CMake Tutorial](https://github.com/sfarrens/make-tutorial)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/sfarrens/make-tutorial) [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=K27-uncFZgM) - *Authors:* [@sfarrens](https://github.com/sfarrens) - This tutorial is designed to provide a first look at using Make and CMake to build C/C++ projects. +### Requirements -4. **[Introduction to Docker for Data Scientists](https://cosmostat.github.io/Tutorials/docker/docker-introduction)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/docker) [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=N7cYFfIWjdw) - *Authors:* [@EiffL](https://github.com/EiffL) - This tutorial demonstrates how to create a Docker container to distribute a complete Jupyter notebook environment. +In order to run the tutorial notebooks tutees will need to have the following installed: -5. **[Bash and Scripting Tutorial for Researchers](https://github.com/CosmoStat/Tutorials/tree/bash_tutorial/README.md)** | [![github](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com/CosmoStat/Tutorials/tree/bash_tutorial) [![youtube](https://img.shields.io/badge/-youtube-red?logo=youtube&labelColor=grey)](https://www.youtube.com/watch?v=NU8dYd3RM-E&t=37s) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/CosmoStat/Tutorials/bash_tutorial?filepath=intro.ipynb) +* Python (require >=3.5) +* NumPy (recommend >=1.16.2) +* SciPy (recommend >=1.2.1) +* Astropy (recommend >=3.1.2) +* Matplotlib (recommend >=3.0.3) +* Jupyter (recommend >=1.0.0) - *Authors:* [@fadinammour](https://github.com/fadinammour), [@JulienNGirard](https://github.com/JulienNGirard)(screen segment) - This tutorial gives the key concepts of bash and its scripts to help researchers manage and process their data with more ease. +All of the packages listed above can easily be installed using either `pip` or Anaconda. -## Contributors ✨ +*e.g.* -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): +```bash +$ pip install numpy scipy astropy matplotlib jupyter +``` - - - - - - - - - - - - - - - - - -

Samuel Farrens

🖋 🤔 🚧

Santiago Casas

🖋 🤔

Zaccharie Ramzi

🖋 🤔

Francois Lanusse

🤔 🚧 🖋

Vanshika Kansal

🖋

pettorin

🤔 🖋

fadinammour

🤔 🖋

Julien N Girard

🖋

RCarloniGertosio

🖋
+or - - +```bash +$ conda install numpy scipy astropy matplotlib jupyter +``` - +### Notebooks -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! +1. [Introduction to Low-Rank Approximation](https://mybinder.org/v2/gh/CosmoStat/Tutorials/master?filepath=%2Flow-rank%2Flow-rank.ipynb) diff --git a/docs/docker b/docs/docker deleted file mode 160000 index d8f223d..0000000 --- a/docs/docker +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d8f223d4381c2603b39681bdcd044050bda63cb5 diff --git a/docs/presentation_tips b/docs/presentation_tips deleted file mode 160000 index 2700adc..0000000 --- a/docs/presentation_tips +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2700adc9882714e371ede3a22ba6d6033996482c diff --git a/docs/tensorflow-introduction b/docs/tensorflow-introduction deleted file mode 160000 index 1592869..0000000 --- a/docs/tensorflow-introduction +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 15928695d2b6a1bbc4cab31529bd9399ae4f949d diff --git a/importance_sampling.ipynb b/importance_sampling.ipynb new file mode 100644 index 0000000..9b1521b --- /dev/null +++ b/importance_sampling.ipynb @@ -0,0 +1,440 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "3814beb8", + "metadata": {}, + "source": [ + "# Importance sampling" + ] + }, + { + "cell_type": "markdown", + "id": "b74e2ebc", + "metadata": {}, + "source": [ + "A Monte-Carlo chain of points $\\{x \\}_{i=1}^N$ represents, when converged, a sample under a posterior function $p(x) = \\pi(x) L(x)$, with $\\pi$ the prior and $L$ the likelihood function. We write\n", + "\n", + "$$x \\sim p.$$" + ] + }, + { + "cell_type": "markdown", + "id": "75142390", + "metadata": {}, + "source": [ + "This allows us to estimate (high-dimensional) integrals of the form\n", + "\n", + "$$\\int {\\rm d} x \\, p(x) f(x) = \\int {\\rm d} x \\, \\pi(x) L(x) f(x).$$" + ] + }, + { + "cell_type": "markdown", + "id": "84ec49e5", + "metadata": {}, + "source": [ + "The (unbiased) estimator is\n", + "\n", + "$$ \\int {\\rm d} x \\, p(x) f(x) \\approx \\frac 1 N \\sum_{i=1}^N f(x_i),$$\n", + "\n", + "which is just the normalised sum over the function $f$ evaluated at all chain points." + ] + }, + { + "cell_type": "markdown", + "id": "f4e53939-134f-483b-b7c9-47d5ff468468", + "metadata": {}, + "source": [ + "For example, for the mean of a parameter we set $f(x) = x$. The mean estimated by MCMC is simply\n", + "\n", + "$$\\bar x \\approx \\frac 1 N \\sum_{i=1}^N x_i.$$" + ] + }, + { + "cell_type": "markdown", + "id": "5ab283bf", + "metadata": {}, + "source": [ + "Importance sampling is based on the following identity\n", + "\n", + "$$\\int {\\rm d} x \\, p(x) f(x) = \\int {\\rm d} x \\, q(x)\\frac{p(x)}{q( x)} f(x),$$\n", + "\n", + "which holds if the support of the proposal distribution $q$ is contained in the support of $p$." + ] + }, + { + "cell_type": "markdown", + "id": "22736e7b", + "metadata": {}, + "source": [ + "This integral can be estimated with samples under $q$ instead of $p$,\n", + "\n", + "$$y \\sim q,$$\n", + "\n", + "if the samples are multiplied by the importance weights\n", + "\n", + "$$w_i = \\frac{p(x_i)}{q(x_i)}.$$\n", + "\n", + "Proof:\n", + "\n", + "$$ \\int {\\rm d} x \\, p(x) f(x) = \\int {\\rm d} x \\, q(x)\\frac{p(x)}{q( x)} f(x) \\approx \\frac 1 N \\sum_{i=1}^N w_i f(y_i),$$\n", + "\n", + "\n", + "Importance sampling can be useful if sampling under $p$ is very time-consuming of difficult, but evaluating $p$ at points $x_i$ is not. One then choses a simple proposal function $q$, e.g. a (multi-variate) normal.\n", + "\n", + "Importance sampling permits to separate sampling (fast; under $q$) and evaluating the original posterior (potentiall slow, but can now be done in parallel using the already sampled points $y_i$)." + ] + }, + { + "cell_type": "markdown", + "id": "01e3f214", + "metadata": {}, + "source": [ + "Our case is the following. We have already run an MCMC and obtained samples $x \\sim p$ under the posterior $p(x) = L(x) \\pi(x)$.\n", + "\n", + "However, we would like to get samples under a new, combined, posterior $p_{\\rm comb}(x) = L(x) L_2(x) \\pi(x)$. For example, $L$ is the CMB likelihood, $L_2$ is the one for weak lensing. We want to get the combined weak-lensing + CMB constraints.\n", + "\n", + "Now, instead of re-running a new chain sampling from $p_2$, we can see that the integral\n", + "\n", + "$$\\int {\\rm d} x p_{\\rm comb} f(x) = \\int {\\rm d} x L(x) \\pi(x) L_2(x) f(x)$$\n", + "\n", + "has a form similar to the modified one above, if we identify\n", + "\n", + "$$q(x) = L(x) \\quad \\mbox{and} \\quad L_2(x) = \\frac{p(x)}{q(x)}.$$" + ] + }, + { + "cell_type": "markdown", + "id": "678f6d9b", + "metadata": {}, + "source": [ + "So we can use the existing chain points $x$ and multiply each data point $x_i$ with the \"importance weight\" $L_2(x_i)$, and can thus obtain estimators of integrals with the combined posterior $p_{\\rm comb}$!" + ] + }, + { + "cell_type": "markdown", + "id": "825765c7", + "metadata": {}, + "source": [ + "Let's test this." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d23712d6", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import matplotlib.pylab as plt\n", + "#from scipy.stats import norm\n", + "import numpy as np\n", + "import emcee" + ] + }, + { + "cell_type": "markdown", + "id": "02225b65-2c7d-4fc3-a752-ff8159be3520", + "metadata": {}, + "source": [ + "First, we sample a one distribution with emcee to see whether this works." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "26860f9e", + "metadata": {}, + "outputs": [], + "source": [ + "# Define simple log of a 1D normal distribution with mean μ and width σ\n", + "def log_prob(x, μ, σ):\n", + " diff = x - μ\n", + " return -0.5 * (diff / σ)**2" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "4e7a619b", + "metadata": {}, + "outputs": [], + "source": [ + "# Input values\n", + "μ = 0\n", + "σ = 3" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "45f3f7d9", + "metadata": {}, + "outputs": [], + "source": [ + "# Set x array for plotting\n", + "n = 5\n", + "x = np.linspace(-σ*n, σ*n, 1000)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5da74549", + "metadata": {}, + "outputs": [], + "source": [ + "# Set up MCMC\n", + "ndim = 1\n", + "nwalkers = 5\n", + "\n", + "# Random starting points\n", + "p0 = np.random.rand(nwalkers, ndim)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "4dcffc21-a30c-48d5-b014-db396b6a900f", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialise emcee samples\n", + "sampler = emcee.EnsembleSampler(nwalkers, ndim, log_prob, args=[μ, σ])\n", + "n_burn = 100\n", + "n_chain = 5000" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "37e1b0a8-ae4d-4e0b-a768-e896f7f27c64", + "metadata": {}, + "outputs": [], + "source": [ + "# Run burn-in phase and remove points from chain\n", + "state = sampler.run_mcmc(p0, n_burn)\n", + "sampler.reset()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "6803b569-df99-42da-a7ec-b554ecf75453", + "metadata": {}, + "outputs": [], + "source": [ + "# Run rest of the chain\n", + "sampler.run_mcmc(state, n_chain);" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "15bbb805", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Get pdf = exponential of log distribution\n", + "# Use input values for mean and scale\n", + "pdf = np.exp(log_prob(x, μ, σ))\n", + "\n", + "# Normalise to unit area (because with MCMC it's tricky anyway to estimate the normalisation)\n", + "pdf = pdf / sum(pdf) / (x[1] - x[0])\n", + "\n", + "# Plot\n", + "plt.plot(x, pdf)\n", + "\n", + "# Get chain points\n", + "samples = sampler.get_chain(flat=True)\n", + "\n", + "# Plot estimated pdf which is proprtional to chain points density\n", + "plt.hist(samples[:, 0], 100, histtype=\"step\", density=True)\n", + "plt.xlabel('x')\n", + "_ = plt.ylabel('probability')" + ] + }, + { + "cell_type": "markdown", + "id": "24eac54e-1c09-4c09-9e56-7c8d4f8d572c", + "metadata": {}, + "source": [ + "Now we introduce a second non-normaal distribution, and compare sampling under the combined\n", + "pdf versus the importance-sampling trick." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "c8a39416", + "metadata": {}, + "outputs": [], + "source": [ + "# Add another distribution.\n", + "# Set input values\n", + "μ2 = 3\n", + "σ2 = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0f0126ec-956d-4075-834f-7829ddf362d0", + "metadata": {}, + "outputs": [], + "source": [ + "# Define second log pdf, this time not a normal distribution\n", + "def log_prob2(x, μ, σ):\n", + " diff = x - μ\n", + " return -0.5 * np.abs(diff/ σ)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "58907336-05d6-45d8-acf4-9c81db1087ef", + "metadata": {}, + "outputs": [], + "source": [ + "# Combined log pdf = sum of individual log pdf's\n", + "def log_prob_comb(x, μ, σ, μ2, σ2):\n", + " return log_prob(x, μ, σ) + log_prob2(x, μ2, σ2)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "dcc9999e", + "metadata": {}, + "outputs": [], + "source": [ + "# Set up MCMC to sample under combined pdf\n", + "sampler_comb = emcee.EnsembleSampler(nwalkers, ndim, log_prob_comb, args=[μ, σ, μ2, σ2])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "60d5ba22-66af-4c3a-bb18-4556722030fb", + "metadata": {}, + "outputs": [], + "source": [ + "# Burn-in phase\n", + "state_comb = sampler_comb.run_mcmc(p0, n_burn)\n", + "sampler_comb.reset()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7988743f-4707-4fe1-b1ed-7e7e35e01a2c", + "metadata": {}, + "outputs": [], + "source": [ + "# Run MCMC\n", + "sampler_comb.run_mcmc(state, n_chain);" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "8cd91081-3c99-4fa0-be4c-e4fbc5cb3c70", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Get combined pdf with input values\n", + "pdf_comb = np.exp(log_prob_comb(x, μ, σ, μ2, σ2))\n", + "\n", + "# Normalise to unit area\n", + "pdf_comb = pdf_comb / sum(pdf_comb) / (x[1] - x[0])\n", + "\n", + "_ = plt.plot(x, pdf_comb)\n", + "\n", + "# Get sample points under combined pdf and plot\n", + "samples_comb = sampler_comb.get_chain(flat=True)\n", + "_ = plt.hist(samples_comb[:, 0], 100, histtype=\"step\", density=True)\n", + "\n", + "# Importance sampling: Get weights = pdf2 evaluated at sample points\n", + "weights = np.exp(log_prob2(samples[:, 0], μ2, σ2))\n", + "\n", + "# Plot importance-sampled points by adding those weights to histogram\n", + "plt.hist(samples[:, 0], 100, histtype=\"step\", density=True, weights=weights)\n", + "plt.xlabel('$x$')\n", + "_ = plt.ylabel('probability')" + ] + }, + { + "cell_type": "markdown", + "id": "b0641e72-81e2-4b38-b4f0-c72d2d05d6e2", + "metadata": {}, + "source": [ + "Both chain do a good job to estimate the overall density!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e5bdcea1-ef02-4c72-8578-54ba8fce569a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ebbe4318-7548-4472-81f6-c93d4d57f13e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/maintenance_recipes.md b/maintenance_recipes.md deleted file mode 100644 index ea17dda..0000000 --- a/maintenance_recipes.md +++ /dev/null @@ -1,17 +0,0 @@ -# Recipes for maintenance tasks on this repo - -This file serves as a collection of git magic recipes that were used to build -this repo. - -## Hosting a new tutorial website on github pages - -Only the master/docs folder is served on gh-pages, so we use submodules to link -to docs that can be hosted on other branches. - -Here is an example of how we did it for the tensorflow tutorial using submodules: - -``` -$ git checkout master -$ cd docs -$ git submodule add -b tensorflow-tutorial https://github.com/CosmoStat/Tutorials.git tensorflow-introduction -``` diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..508fa51 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +jupyter +numpy +matplotlib +emcee + From c21c55d2e4933158e8a8350cef56391b36e69b59 Mon Sep 17 00:00:00 2001 From: Martin Kilbinger Date: Thu, 8 Sep 2022 13:41:31 +0200 Subject: [PATCH 2/5] Update README.md --- README.md | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 7bb1832..4b9afc4 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,6 @@ > Year: 2022 > Email: [martin.killbinger@cea.fr](mailto:martin.killbinger@cea.fr) -[notebook](./importance_sampling.ipynb) - This is a very brief tutorial about how importance sampling for Bayesian parameter inference. Specifically, it describes the case where an existing sample (e.g. a Monte-Carlo Markov chain) can be importance-sampled to obtain samples under a joint posterior distribution. @@ -21,25 +19,8 @@ In order to run the tutorial notebooks tutees will need to have the following in * Python (require >=3.5) * NumPy (recommend >=1.16.2) -* SciPy (recommend >=1.2.1) -* Astropy (recommend >=3.1.2) +* Emcee (recommend >=3.1.2) * Matplotlib (recommend >=3.0.3) * Jupyter (recommend >=1.0.0) -All of the packages listed above can easily be installed using either `pip` or Anaconda. - -*e.g.* - -```bash -$ pip install numpy scipy astropy matplotlib jupyter -``` - -or - -```bash -$ conda install numpy scipy astropy matplotlib jupyter -``` - -### Notebooks - -1. [Introduction to Low-Rank Approximation](https://mybinder.org/v2/gh/CosmoStat/Tutorials/master?filepath=%2Flow-rank%2Flow-rank.ipynb) +All of the packages listed above can easily be installed using `pip`. From f504da92130aac758aa6fcb9989cf487a1190347 Mon Sep 17 00:00:00 2001 From: Martin Kilbinger Date: Thu, 6 Oct 2022 09:15:28 +0200 Subject: [PATCH 3/5] Added MC integral explanations --- example_MC.jpeg | Bin 0 -> 55593 bytes importance_sampling.ipynb | 216 ++++++++++++++++++++++++++++++-------- 2 files changed, 173 insertions(+), 43 deletions(-) create mode 100644 example_MC.jpeg diff --git a/example_MC.jpeg b/example_MC.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..5bade993ad4c875437ee4b049278d7937fd73da8 GIT binary patch literal 55593 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 z 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 T|C}H5Uy|7WPxxN&A0z(@LM%M& literal 0 HcmV?d00001 diff --git a/importance_sampling.ipynb b/importance_sampling.ipynb index 9b1521b..a255a70 100644 --- a/importance_sampling.ipynb +++ b/importance_sampling.ipynb @@ -5,7 +5,99 @@ "id": "3814beb8", "metadata": {}, "source": [ - "# Importance sampling" + "# Importance sampling\n", + "\n", + "Illustrated with a specific example of importance-sampling an existing MCM chain." + ] + }, + { + "cell_type": "markdown", + "id": "d87e396b-8f4b-48ba-a88c-a71f0f338d51", + "metadata": {}, + "source": [ + "## Monte-Carlo integration" + ] + }, + { + "cell_type": "markdown", + "id": "c6c62e88-a680-45bc-b319-e0625c5f2a24", + "metadata": {}, + "source": [ + "An integral\n", + "\n", + "$$F = \\int_a^b {\\rm d} x \\, f(x) $$\n", + "\n", + "can be approximated by evaluating $f$ at random points, drawn from a uniform distribution\n", + "between $a$ and $b$:\n", + "\n", + "$$\\int_a^b {\\rm d} x \\, f(x) \\approx \\frac{b-a} N \\sum_{i=1}^N f(x_i),$$\n", + "\n", + "with sample points written as\n", + "\n", + "$$x_i ~ \\sim U_{[a; b]}.$$" + ] + }, + { + "cell_type": "markdown", + "id": "578fec40-49d4-419f-bef9-2b286af2c591", + "metadata": {}, + "source": [ + "This is illustrated in the following example. We pick uniformly drawn random points $x_i$\n", + "and compute the area of the rectangle between $a = -2$ and $b = 5$, which is $(b - a) f(x_i)$.\n", + "\n", + "An (unbiased) estimate of the grey area is the average of all rectangles, which is the above equation.\n", + "\n", + "\n", + "(From https://towardsdatascience.com/the-basics-of-monte-carlo-integration-5fe16b40482d)" + ] + }, + { + "cell_type": "markdown", + "id": "91158d0f-0890-4208-8011-93cb6902d192", + "metadata": {}, + "source": [ + "## Drawing from arbitrary distributions" + ] + }, + { + "cell_type": "markdown", + "id": "cce38eff-88a6-4ce1-9a83-0b6adf0466bf", + "metadata": {}, + "source": [ + "$$F = \\int_a^b {\\rm d} x f(x) = \\int {\\rm d} y \\, p(y) f(y)$$\n", + "\n", + "with variable change\n", + "\n", + "$${\\rm d} y \\, p(y) = \\frac{{\\rm d} x}{b-a}$$,\n", + "\n", + "where $p$ is a normalised probability distribution $\\int {\\rm d} y \\, p(y) = 1$.\n", + "\n", + "This is approximated by\n", + "\n", + "$$F \\approx \\frac 1 N \\sum_{i=1}^N f(y_i)$$\n", + "\n", + "with random points $y_i$ drawn from the distribution $p$, $y \\sim p$." + ] + }, + { + "cell_type": "markdown", + "id": "fc4c50ff-8b7b-4785-b885-c4969d258f27", + "metadata": {}, + "source": [ + "Proof:\n", + "\n", + "$$E \\left[ \\frac 1 N \\sum_{i=1}^N f(y_i) \\right] = \\frac 1 N \\sum_{i=1}^N E \\left[ f(y_i) \\right]\n", + "= \\frac 1 N \\sum_{i=1}^N \\int {\\rm d} y \\, p(y) f(y)\n", + "= \\frac 1 N N F = F\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "d6631af1-dbaa-4cf3-aada-0aeb0110e703", + "metadata": {}, + "source": [ + "## Monte-Carlo Markov chain" ] }, { @@ -13,7 +105,7 @@ "id": "b74e2ebc", "metadata": {}, "source": [ - "A Monte-Carlo chain of points $\\{x \\}_{i=1}^N$ represents, when converged, a sample under a posterior function $p(x) = \\pi(x) L(x)$, with $\\pi$ the prior and $L$ the likelihood function. We write\n", + "A Monte-Carlo Markov chain of points $\\{x_i \\}_{i=1}^N$ represents, when converged, a sample under a posterior distribution $p(x) \\propto \\pi(x) L(x)$, with $\\pi$ being the prior and $L$ the likelihood function. We write as above\n", "\n", "$$x \\sim p.$$" ] @@ -47,7 +139,17 @@ "source": [ "For example, for the mean of a parameter we set $f(x) = x$. The mean estimated by MCMC is simply\n", "\n", - "$$\\bar x \\approx \\frac 1 N \\sum_{i=1}^N x_i.$$" + "$$\\bar x \\approx \\frac 1 N \\sum_{i=1}^N x_i.$$\n", + "\n", + "Another example: To plot the 2D $68\\%$ credible region (contour), pixelise $p$ in 2D, sort the pixels by density (= number of sample points in each pixel), and set $f = 1$ in the first $68\\%$ of pixels, and $0$ for the remaining pixels." + ] + }, + { + "cell_type": "markdown", + "id": "06c67f01-269f-4ffb-ac4f-79195bef87fe", + "metadata": {}, + "source": [ + "## Importance sampling" ] }, { @@ -59,12 +161,12 @@ "\n", "$$\\int {\\rm d} x \\, p(x) f(x) = \\int {\\rm d} x \\, q(x)\\frac{p(x)}{q( x)} f(x),$$\n", "\n", - "which holds if the support of the proposal distribution $q$ is contained in the support of $p$." + "which holds if the support of the proposal distribution $q$ is not smaller than the support of $p$." ] }, { "cell_type": "markdown", - "id": "22736e7b", + "id": "42545e20-0175-4c5d-962c-79ae7a3af804", "metadata": {}, "source": [ "This integral can be estimated with samples under $q$ instead of $p$,\n", @@ -73,16 +175,29 @@ "\n", "if the samples are multiplied by the importance weights\n", "\n", - "$$w_i = \\frac{p(x_i)}{q(x_i)}.$$\n", - "\n", - "Proof:\n", - "\n", - "$$ \\int {\\rm d} x \\, p(x) f(x) = \\int {\\rm d} x \\, q(x)\\frac{p(x)}{q( x)} f(x) \\approx \\frac 1 N \\sum_{i=1}^N w_i f(y_i),$$\n", + "$$w_i = \\frac{p(x_i)}{q(x_i)},$$\n", "\n", + "since\n", "\n", + "$$ \\int {\\rm d} x \\, p(x) f(x) = \\int {\\rm d} x \\, q(x)\\frac{p(x)}{q( x)} f(x) \\approx \\frac 1 N \\sum_{i=1}^N w_i f(y_i).$$" + ] + }, + { + "cell_type": "markdown", + "id": "1c4385ad-ebf0-43bf-a937-09a7f149b7d9", + "metadata": {}, + "source": [ "Importance sampling can be useful if sampling under $p$ is very time-consuming of difficult, but evaluating $p$ at points $x_i$ is not. One then choses a simple proposal function $q$, e.g. a (multi-variate) normal.\n", "\n", - "Importance sampling permits to separate sampling (fast; under $q$) and evaluating the original posterior (potentiall slow, but can now be done in parallel using the already sampled points $y_i$)." + "Importance sampling permits to separate sampling (fast; under $q$) and evaluating the original posterior (potentiall slow, but can now be done in parallel using the already sampled points $x_i$)." + ] + }, + { + "cell_type": "markdown", + "id": "ded5de23-66f3-48c5-831b-6e6f1b425cd3", + "metadata": {}, + "source": [ + "### Importance-sampling an existing MCM chain" ] }, { @@ -90,17 +205,17 @@ "id": "01e3f214", "metadata": {}, "source": [ - "Our case is the following. We have already run an MCMC and obtained samples $x \\sim p$ under the posterior $p(x) = L(x) \\pi(x)$.\n", + "A recurring case is the following. We have already run an MCMC and obtained samples $x \\sim p$ under the posterior $p(x) = \\pi(x) L(x)$.\n", "\n", - "However, we would like to get samples under a new, combined, posterior $p_{\\rm comb}(x) = L(x) L_2(x) \\pi(x)$. For example, $L$ is the CMB likelihood, $L_2$ is the one for weak lensing. We want to get the combined weak-lensing + CMB constraints.\n", + "Next, we would like to get samples under a new, combined, posterior $p_{\\rm comb}(x) = \\pi(x) L(x) L_2(x)$. For example, $L$ is the CMB likelihood, $L_2$ is the one for weak lensing. We want to get the combined weak-lensing + CMB constraints.\n", "\n", - "Now, instead of re-running a new chain sampling from $p_2$, we can see that the integral\n", + "Now, instead of re-running a new chain sampling from $p_{\\rm comb}$, we can see that the integral\n", "\n", - "$$\\int {\\rm d} x p_{\\rm comb} f(x) = \\int {\\rm d} x L(x) \\pi(x) L_2(x) f(x)$$\n", + "$$\\int {\\rm d} x p_{\\rm comb} f(x) = \\int {\\rm d} x \\pi(x) L(x) L_2(x) f(x)$$\n", "\n", "has a form similar to the modified one above, if we identify\n", "\n", - "$$q(x) = L(x) \\quad \\mbox{and} \\quad L_2(x) = \\frac{p(x)}{q(x)}.$$" + "$$q(x) = \\pi(x) L(x) \\quad \\mbox{and} \\quad L_2(x) = \\frac{p(x)}{q(x)}.$$" ] }, { @@ -108,7 +223,7 @@ "id": "678f6d9b", "metadata": {}, "source": [ - "So we can use the existing chain points $x$ and multiply each data point $x_i$ with the \"importance weight\" $L_2(x_i)$, and can thus obtain estimators of integrals with the combined posterior $p_{\\rm comb}$!" + "So we can use the existing chain points $x_i$ sampled under $p=q$ and multiply each data point $x_i$ with the \"importance weight\" $L_2(x_i)$, and can thus obtain estimators of integrals with the combined posterior $p_{\\rm comb}$!" ] }, { @@ -121,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 34, "id": "d23712d6", "metadata": {}, "outputs": [], @@ -129,7 +244,6 @@ "%matplotlib inline\n", "\n", "import matplotlib.pylab as plt\n", - "#from scipy.stats import norm\n", "import numpy as np\n", "import emcee" ] @@ -139,12 +253,12 @@ "id": "02225b65-2c7d-4fc3-a752-ff8159be3520", "metadata": {}, "source": [ - "First, we sample a one distribution with emcee to see whether this works." + "First, we sample a 1-D distribution with emcee to see whether this simple case works." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 35, "id": "26860f9e", "metadata": {}, "outputs": [], @@ -157,7 +271,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 36, "id": "4e7a619b", "metadata": {}, "outputs": [], @@ -169,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 37, "id": "45f3f7d9", "metadata": {}, "outputs": [], @@ -181,7 +295,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 38, "id": "5da74549", "metadata": {}, "outputs": [], @@ -196,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 39, "id": "4dcffc21-a30c-48d5-b014-db396b6a900f", "metadata": {}, "outputs": [], @@ -209,7 +323,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 40, "id": "37e1b0a8-ae4d-4e0b-a768-e896f7f27c64", "metadata": {}, "outputs": [], @@ -221,7 +335,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 41, "id": "6803b569-df99-42da-a7ec-b554ecf75453", "metadata": {}, "outputs": [], @@ -232,13 +346,13 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 44, "id": "15bbb805", "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA0XElEQVR4nO3dd3zV9fX48dfJZiWQwQyYMGWJzDAFRS0usBUqjtb5s7ZFK7a29Fu/lvq1tUvpwra0WqmWqrVqseJCXMgMmzDDDiNkQEiA7PP7496EEG6Sm3BvPvfmnufjcR+59zPuPZ8k95773qKqGGOMMbWFOR2AMcaYwGQJwhhjjEeWIIwxxnhkCcIYY4xHliCMMcZ4FOF0AL6SmJioKSkpTodhjDFBZd26dbmqmuRpX4tJECkpKaSnpzsdhjHGBBUROVDXPqtiMsYY45ElCGOMMR5ZgjDGGONRi2mDMMa0bGVlZWRlZVFcXOx0KEEpJiaG5ORkIiMjvT7HEoQxJihkZWXRrl07UlJSEBGnwwkqqkpeXh5ZWVmkpqZ6fZ5VMRljgkJxcTEJCQmWHJpAREhISGh06csShDEmaFhyaLqm/O4sQRjjZ+UVldi0+iYYWYIwxg/OlJbzh2W7ueqZT+jz+Lv0ffxdvvqnlby96YglC+PRW2+9xbZt26ofP/HEEyxdurTRz7N//34GDRrkk5iskdoYH9uSVcCDL6/j8MmzjO+dyI2Du3C2rIKPdhznoX9u4I31Wfz1xL2EnzoEcT1g9hanQzYB4K233uLGG29kwIABADz55JMOR2QlCGN86ovMXGb8eQUA/3pwDC/fn8aj1/bjRzcMYOnsicy9aQBf7Mkj/NQhcr57HAoOOhyxaYybb76Z4cOHM3DgQBYsWABA27Zt+dGPfsSQIUMYPXo02dnZALz99tukpaUxdOhQrr76arKzs6msrKRPnz7k5OQAUFlZSe/evfn0009ZvHgxjz32GJdffjl79uzh7rvv5vXXXwdg7dq1jB07liFDhjBq1CgKCwvZv38/EyZMYNiwYQwbNowVK1b4/HqtBGGMj2QcKeCBv6dzSXwbXr4/jaR20eftDwsT7h6XSp9O7eBluPfFtbztUKzB7idvZ7DtyCmfPueArrH8+KaB9R7zwgsvEB8fz9mzZxk5ciS33HILp0+fZvTo0fz0pz/l+9//Pn/5y194/PHHGT9+PKtWrUJE+Otf/8ovf/lLnnnmGe68807+8Y9/8Mgjj7B06VKGDBnCxIkTmTp1KjfeeCPTp08/7zVLS0u59dZbefXVVxk5ciSnTp2iVatWdOzYkQ8//JCYmBh2797Nbbfd5vP56CxBGOMDp0vK+fY/1tMuJpKF9466IDnUNK53IgBbDhdATHNFaHzhd7/7HW+++SYAhw4dYvfu3URFRXHjjTcCMHz4cD788EPANW7j1ltv5ejRo5SWllaPP7j33nuZNm0ajzzyCC+88AL33HNPva+5c+dOunTpwsiRIwGIjY0F4PTp08yaNYuNGzcSHh7Orl27fH69liCM8YG5izM4mH+Gf/6/0XSO8+5T/+GresMKeG/rMaYM6uznCFuWhr7p+8Mnn3zC0qVLWblyJa1bt2bSpEkUFxcTGRlZ3YU0PDyc8vJyAB566CEeffRRpk6dyieffMLcuXMB6N69O506dWLZsmWsWbOGf/zjH02KZ968eXTq1IlNmzZRWVlJTIzvv21YG4QxF2n57lz+tS6Lb07qRVrPBK/Pe2hyHwAef2sLBWfL/BWe8ZGCggI6dOhA69at2bFjB6tWrWrw+G7dugGwcOHC8/bdf//93HnnncyYMYPw8HAA2rVrR2Fh4QXP069fP44ePcratWsBKCwspLy8nIKCArp06UJYWBgvvfQSFRUVvrjM81iCMOYilFVU8pO3M+gR35qHrurTqHMjw11vv7zTpcz/ONMf4RkfmjJlCuXl5fTv3585c+YwevToeo+fO3cuM2bMYPjw4SQmJp63b+rUqRQVFZ1XvTRz5kx+9atfMXToUPbs2VO9PSoqildffZWHHnqIIUOGcM0111BcXMy3vvUtFi5cyJAhQ9ixYwdt2rTx7QUD0lL6ZI8YMUJtwSDT3F78Yh9z397Ggq8N59qBjagmmhsHcwtgbhyPDfyMtzYeZumjE7kkwfdv8pZi+/bt9O/f3+kwfCI9PZ3Zs2fz+eefN+vrevodisg6VR3h6XgrQRjTFPMGw9w47v7wcvbH3M61/+rn2tYEj32pH5HhYTzzge8bGU3g+fnPf84tt9zC008/7XQoDbIEYUxTFBxk4bWbSClexIqv7XGVBpo4pqFjbAxfG30J/918hH25p30cqAk0c+bM4cCBA4wfP97pUBpkCcKYJvrTp3sYmdKBMY1omK7LfRNSiQwP44+fWFuECRzWzdWYJjpaUMwvbrnM8yyZ8wZfWKKoZ1qNju1iWN36EdpvPQZb6z/WmOZiCcKY+tT8oHd/aKsqAlzauR0T+iR6Pq/goKvaqaa5cfW+VPvSY6SWLOKhK3vz6IpRFx+7MRfJqpiMqU/VB32NNob0AycAuGus71c2u6pfRxatsfmZTGCwEoQxjbRwxX5GAtMu7+rz5/762BTuemGNTcHhDU/VeBcjgKr1Jk2axK9//WtGjPDY+7TZWIIwphGOnyrmva3HIApaR/n+7TOhdyKpiW2gyOdP3fJ4qsa7GA1UAYYiq2IyphHe3HCY8somDi6N6+EeIBfnuu9BWJhw+yjXvszjliUCyenTp7nhhhsYMmQIgwYN4tVXX+XJJ59k5MiRDBo0iAceeKB6MahJkyYxe/ZsRowYQf/+/Vm7di1f+cpX6NOnD48//jjgWtjn0ksv5Y477qB///5Mnz6dM2fOXPC6H3zwAWPGjGHYsGHMmDGDoiLX/8WcOXMYMGAAl112Gd/73vf8cs1+TRAiMkVEdopIpojM8bD/ChFZLyLlIjK9xvbLRWSliGSIyGYRudWfcRrjDY3rzjc+Hsb+mNvr/ICv1+wt59oz6qnKuHmoa/6ef6/Pamqoxg/ee+89unbtyqZNm9i6dStTpkxh1qxZrF27lq1bt3L27Fn++9//Vh8fFRVFeno6Dz74INOmTWP+/Pls3bqVF198kby8PMA1U+u3vvUttm/fTmxsLM8999x5r5mbm8tTTz3F0qVLWb9+PSNGjODZZ58lLy+PN998k4yMDDZv3lyddHzNbwlCRMKB+cB1wADgNhEZUOuwg8DdwKJa288AX1fVgcAU4Dci0t5fsRrjjYyvfkFK8SJenrLZ8we8FyUEb1RNFf7m+sNUNLW0Ynxu8ODBfPjhh/zgBz/g888/Jy4ujo8//pi0tDQGDx7MsmXLyMjIqD5+6tSp1ecNHDiQLl26EB0dTc+ePTl06BDgmtl13LhxANx5550sX778vNdctWoV27ZtY9y4cVx++eUsXLiQAwcOEBcXR0xMDPfddx9vvPEGrVu39ss1+7MNYhSQqap7AUTkFWAaUL3oqqrud++rrHmiqu6qcf+IiBwHkoCTfozXmHr9e30WUeFh3HhZF88HNKWBsyqpVN2v4dipYr7IzOWKvkmNf17jc3379mX9+vUsWbKExx9/nMmTJzN//nzS09Pp3r07c+fOpbi4uPr46GhXog8LC6u+X/W4akrw2r3gaj9WVa655hr++c9/XhDPmjVr+Oijj3j99df5wx/+wLJly3x2rdWx+vwZz+kGHKrxOMu9rVFEZBQQBezxsO8BEUkXkfSqJfyM8YeyikoWbzzC5P4dad86yndPXEe1k8Z1Z3/M7Qx8bZzvXstclCNHjtC6dWvuvPNOHnvsMdavXw9AYmIiRUVF1cuDNsbBgwdZuXIlAIsWLbpg+o3Ro0fzxRdfkJnpGmF/+vRpdu3aRVFREQUFBVx//fXMmzePTZs2XeTVeRbQvZhEpAvwEnCXqlbW3q+qC4AF4JrNtZnDMyHk89055J0u5ZZhyc3yejJ7Kz98YzNPb55AcVkFMZHhzfK6QaVm6ctXz1ePLVu28NhjjxEWFkZkZCR//OMfeeuttxg0aBCdO3euXvGtMfr168f8+fO59957GTBgAN/85jfP25+UlMSLL77IbbfdRklJCQBPPfUU7dq1Y9q0aRQXF6OqPPvss41+ba+oql9uwBjg/RqPfwj8sI5jXwSm19oWC6yvvb2u2/Dhw9UYn/txrKqqzn51gw7+8XtaUlbRbC/92a7jqj+O1Xe3HG221wxk27ZtczoEn9q3b58OHDiwWV/T0+8QSNc6Plf9WcW0FugjIqkiEgXMBBZ7c6L7+DeBv6tq48ttxvhQaXklS7dlc82AzkRFNF/P8KpJAJdsOdpsr2lMTX77b1fVcmAW8D6wHXhNVTNE5EkRmQogIiNFJAuYAfxZRKq6AHwVuAK4W0Q2um+X+ytWY+qzYk8up4rLua6Z142OcK8499H2bIrLfL+cpHFWSkoKW7dudTqMevm1DUJVlwBLam17osb9tcAFlbqq+jLwsj9jM6ZeVdM4xPXgva3HaBMVzvi6Jubzs9OlFXyyM4cpzZygApGq+nz+q1ChTVg91EZSG+OJexqH8oc38cG2bCb37+RYQ3GH1pFWzQTExMSQl5fXpA+6UKeq5OXlERPTuEm+AroXkzFOW7Mvn/zTpc1evVTTlwZ25r+bj1JaXtmsbSCBJjk5maysLKxLe9PExMSQnNy4XniWIIypx7tbj9EqMpxJ/To6FsPV/TvxytpDrN6Xx4Q+oTtoLjIyktTUVKfDCCmh+3XEmAaoKh9sO8bEvkm0inJuHMK43onERIaxdFu2YzGY0GQJwpg6ZBw5RfapEib3d670ANAqKpzxvRNZuv241b+bZmVVTMbU4eMdxwEcrV6qMrl/J+bunYn8JNe1IYAWtzEtlyUIY6rUWn962c7jDEmOq55d1UmTL+1IxyW5zJ+4jm9f2dsWtzHNwqqYjKlSY/3pvP+XzsZDJ7nyUudLDwAdY13dEz+0dgjTjCxBGOPBp7tyUIWrAiRBVNmUdZKcwhKnwzAhwqqYjPFg2Y7jJLaNZlBXh6tyasxYWto2GS2Gj3ce56vORmVChCUIY2opr6jks105fGlgZ8LCHJ7WoUZDdKQqST/7iM925ViCMM3CqpiMqWXdgROcKi4PuOolEWFCn0SWZ+Y6HYoJEVaCMKGtVs8lgI935hARJo5NzlefiX2TeGP9YWjclDrGNIklCBPaqnou1bA8M4dhl3SgXUykQ0HVbXzvRGwyU9NcrIrJmBryT5eSceQUE3oHXukBICEQGs5NyLAEYUwNX2TmokpAVi9VuaKvK7ZTxWUOR2JaOksQxtSwfHcu7WIiGNwtcL+lV83ouiIzz+FITEtnCcIYN1VleWYuY3slVC/3GYiG9egAwGe7bV0E41+B+y4wppntzzvD4ZNnGR/gay5ULRr02a4cm93V+JUlCGPclru/kY8P0Abq2rJOnGV/3hmnwzAtmCUIY9w+351Lt/atSElo7XQoXlu5x9ohjP9YgjAG1/QaK/fmMaFPIhIkAw06xUazYo+Nqjb+49cEISJTRGSniGSKyBwP+68QkfUiUi4i02vtu0tEdrtvd/kzTmM2Hy6gsLg8oLu31ja2VyIr9+RZO4TxG78lCBEJB+YD1wEDgNtEZECtww4CdwOLap0bD/wYSANGAT8WkQ7+itWY5btzEXF96AaFuB7M2z6RdRXTKX9mkNPRmBbKnyWIUUCmqu5V1VLgFWBazQNUdb+qbgYqa537JeBDVc1X1RPAh8AUP8ZqQtzy3bkM7BpLfJsop0PxzuwtZH3nKCnFi4gsynI6GtNC+TNBdAMO1Xic5d7ms3NF5AERSReR9Jwc6xNumuZsaQUbDp1gXLCUHtySO7TmkiBqUDfBJ6gbqVV1gaqOUNURSUmB3XfdBK71B09QVqGM7pngdCiNNrZXAodJci0qNG+w0+GYFsafCeIw0L3G42T3Nn+fa0yjrN6bR5jAiJTga+Ya0yuRccW/ZfP9B85NW26Mj/gzQawF+ohIqohEATOBxV6e+z5wrYh0cDdOX+veZoxvzBvs+tYd14NV+/IZ2DUuIKf3bsgYd6lnhY2HMH7gtwShquXALFwf7NuB11Q1Q0SeFJGpACIyUkSygBnAn0Ukw31uPvB/uJLMWuBJ9zZjfMO9DkTxrI1sPHSStNR4pyNqkqR20fTt1JYvbJU54wd+XTBIVZcAS2pte6LG/bW4qo88nfsC8II/4zNm46GTlJZXkhaE7Q9VxvZK5JW1ByHc6UhMSxPUjdTGXKzVe/MRgVEpwVmCABjTK4Histo9xY25eJYgTEhbvS+PSzvHEtc6+NofqoxOTbBlSI1fWIIwIau0vJL1B08EbftDlbjWkfTvHOt0GKYFsgRhQtbmrJMUl1UyumdwJwiANPc1lJZbVZPxHb82UhsTUOYNPjdWIK4Hq/e5OsaNSg3eBuoqaakJsM6V9EYEcXuKCSyWIEzocHdtrbLq+dX069QueOZfqscodzXZ6n35liCMz1gVkwlJZRWVrDtworpqJthVJbmqUpExvmAJwoSkrYcLOFNa4aqaaUHW7c+nvMLaIYxvWIIwIelc+0PLKEFUOV1awdYjp5wOw7QQliBMSFq9N49eSW1IahftdCg+t3qvzctkfMMShAk5FZVK+v4TQT29Rl16JrWxdgjjM5YgTMjZduQUhSXlQT9AzpO01ATW7sunotLWqTYXzxKECTmr3FUwwbhAUEPSUuMpLCln+1FrhzAXzxKECTmr9+WRktCaTrExTofic1XddldZO4TxAUsQJqRUVCpr9uW3uO6tVbrEtaJHfGvWWDuE8QFLECak7Dh2ilPF5S1mgJwnaanxrNmfT6W1Q5iLZAnChJTVe13frFtiD6YqaT0TOHmmjF3HC50OxQQ5rxKEiLwhIjeIiCUUE9RW78sjuUMrurVv5XQovhfXA+bGMf3tgSyPfrg6GRrTVN5+4D8H3A7sFpGfi0g/P8ZkjN+05PYHZm9xTUY4t4BkyWX1PmuoNhfHqwShqktV9Q5gGLAfWCoiK0TkHhEJ3qW4TMg5caasRbc/1LRmXz6q1g5hms7rKiMRSQDuBu4HNgC/xZUwPvRLZMb4yeiWWoKoJbeolD05RU6HYYKYt20QbwKfA62Bm1R1qqq+qqoPAW39GaAxvtQlLobu8S2w/aEOq6wdwlwEb0sQf1HVAar6tKoeBRCRaABVHVHXSSIyRUR2ikimiMzxsD9aRF51718tIinu7ZEislBEtojIdhH5YeMvzZhzqqpaRvdMQEQcjqZ5dGwXbfMymYvibYJ4ysO2lfWdICLhwHzgOmAAcJuIDKh12H3ACVXtDcwDfuHePgOIVtXBwHDgG1XJw5im2JNzGqBFzr9Ul7SeCazZl2ftEKbJ6k0QItJZRIYDrURkqIgMc98m4apuqs8oIFNV96pqKfAKMK3WMdOAhe77rwOTxfX1ToE2IhIBtAJKAZtcxjRZVY+eljz+oba01HiyT5VwIO+M06GYINXQmtRfwtUwnQw8W2N7IfA/DZzbDThU43EWkFbXMapaLiIFQAKuZDENOIorEc1W1QvKyiLyAPAAQI8ePRoIx4Sy1XvzuQNISWjoe03LMbpn1TrVeaQktnE4GhOM6k0QqroQWCgit6jqv5spJnCVPiqArkAH4HMRWaqqe2vFtwBYADBixAgrRxuPVLW6BBEq7Q8AvZLaktg2itV787l1pH2BMo1Xb4IQkTtV9WUgRUQerb1fVZ/1cFqVw0D3Go+T3ds8HZPlrk6KA/JwDcp7T1XLgOMi8gUwAtiLMY10IO8M2adKoOVN3lovEWFUarw1VJsma6iRuqpc2hZo5+FWn7VAHxFJFZEoYCawuNYxi4G73PenA8vU1aJ2ELgKQETaAKOBHQ1ejTEehPKI4rTUBA6fPMuhfGuHMI3XUBXTn90/f9LYJ3a3KcwC3gfCgRdUNUNEngTSVXUx8DzwkohkAvm4kgi4ej/9TUQyAAH+pqqbGxuDMeAaC5DYNgrKnY6k+aVVt0Pk0z0+dNpfjG80VMX0u/r2q+rDDexfAiypte2JGveLcXVprX1ekaftxjSWqrJ6bx6jUuNht9PRNL++HdvRvnUkq/fmMX14stPhmCDTUC+mdc0ShTF+knXiLEcKivlGakJIJoiwMGFUirVDmKbxpheTMUGraunNUJmgz5O0ngl8sC2bowVn6RIXOtOMmIvXUBXTb1T1ERF5G9fgtfOo6lS/RWaMD6zel0/71pH07dhQn4qWq2r0+Oq9+dw8tJvD0Zhg0lAV00vun7/2dyDG+MPqfXmkpcYTFhY64x9q698llnYxEazel2cJwjRKQ1VM69w/P3V3Vb0UV0lip3v6DGMClqt751nuGZvqdCjNz726HEB4XA9GpbxgK8yZRmuoBAGAiNwA/AnYg6vbaaqIfENV3/VncMY0ybzBUHCQbsD+GGCp+xYXQqOJZ285d39uHGnD4/lox3GOnyqmY2yIjRg0TeZVggCeAa5U1UwAEekFvANYgjCBp+AgzC3g+69v4v2MbDb87zUhXcUEMMq9SNLqffncNKSrw9GYYOHtdN+FVcnBbS+uCfuMCVir9+UzKsTbH6oM6hpLm6jwkB5VbhqvoV5MX3HfTReRJcBruNogZuCaSsOYgHS04CwH8s7wtdGXOB1KQIgID2N4Sry1Q5hGaagEcZP7FgNkAxOBSUAOrnUajAlIVR+Eo0No/YeGpKXGs/t4EXlFJU6HYoJEQ72Y7mmuQIzxpVV784iNiaB/l1inQwkYVetDrNmXz3WDuzgcjQkG3vZiisG1POhAakyarKr3+ikuYy5KVftDuLU/VBvcrT0xkWGstgRhvORtI/VLQGdcK8x9imttB2ukNgFrX+5pq16q4h4TEfX7IQy/pEP19CPGNMTbBNFbVf8XOO2en+kGLlw+1JiAkpZqCQJwjYmYWwAFB0lLTWBndiEnz9g4V9MwbxNEmfvnSREZhGvlt47+CcmYi9cuOoIBXa39oba01HhUYe3+E06HYoKAtwPlFohIB+B/ca0C19Z935iANNLaHzwa0r09URFhjHzrCnjtmGtjXI/zR14b4+ZVglDVv7rvfgr09F84xlyc46eK6ci5HjvmfDGR4Qzt3p72R4+5qp2ges4mY2rzqopJRBJE5Pcisl5E1onIb0TEKnhNwKlaGMfaH+qW5m68P1Vc1sCRJtR52wbxCnAcuAWYDuQCr/orKGOaqqqHzkBrf6jTaPf6EOusHcI0wNsE0UVV/09V97lvTwGd/BmYMU1RVYKICPf2Xzv0DO3RAYBVNi+TaYC3jdQfiMhMXHMxgasU8b5/QjKmaXIKS8g8XlRjKKc5j3s8RCvgeFhHm5fJNKihyfoKcU3OJ8AjwMvuXWFAEfA9fwZnTGOstAFg9avRU+nv7+9ky6d7KCwuI3QXYzUNqbccrqrtVDXW/TNMVSPctzBVbbCSV0SmiMhOEckUkTke9keLyKvu/atFJKXGvstEZKWIZIjIFvd0H8bUaeWeXNrFeFsoDm1jeydQUams2WelCFM3rytqRWSqiPzafbvRi+PDgfnAdcAA4DYRGVDrsPuAE6raG5gH/MJ9bgSu0sqDqjoQ1wyy1uXC1OuLzDybXsNLw3p0IDoijOWZuU6HYgKYt91cfw58B9jmvn1HRJ5u4LRRQKaq7nWvX/0KMK3WMdOAhe77rwOTRUSAa4HNqroJQFXzVLXCm1hNaDqUf4aD+WcY28sShDdiIsMZmRLPikyrljN187YEcT1wjaq+oKovAFNwzcdUn27AoRqPs9zbPB6jquVAAZAA9AVURN53j734vqcXEJEHRCRdRNJzcnK8vBTTEq3Y4/omPK53osORBI+xvV3zMhlTl8b0BWxf476/h15GAOOBO9w/vywik2sfpKoLVHWEqo5ISkryc0gmkH2RmUdSu2j6dGzrdChBY7wlU9MAb1v0fgZsEJGPcfVougK4oNG5lsNA9xqPk93bPB2T5W53iAPycJU2PlPVXAD3cqfDgI+8jNeEEFVlxZ48xvVOwFVDabwxsGscsdaob+rRYAlCRMKASmA08Abwb2CMqjY0knot0EdEUkUkCpiJa6K/mhYDd7nvTweWqariGmMxWERauxPHRFxtH8ZcYFd2EblFJfzswO2ueYXiejgdUlAIDxPG9ErgqCS5fm/zBjsdkgkwDX59UNVKEfm+qr7GhR/w9Z1XLiKzcH3YhwMvqGqGiDwJpKvqYuB54CURyQTycSURVPWEiDyLK8kosERV32nsxZkQMG8w/QoOsj8GyiOSz01AZ7wyrnciYzJ+y2ePXUmP39sqc+Z83pYvl4rI93DNv3S6aqOq1tuJWlWXAEtqbXuixv1iYEYd577MuYF5xnhWcJD7U5ey+3gRn373SqejCTpje7naIZZn5nK7w7GYwONtgrgV1zf5b9XablN/G8et3pvPjUO6Oh1GUOqV1IZOsdF8sccShLmQtwliAK7kMB5Xovgc+JO/gjKmMQpLyhnX28Y/NIWIMK5XIp/ssm7i5kLednNdCPQHfgf8HlfCWFjvGcY0ozE2grrJxvVOJP+0rVFtLuRtCWKQqtacJuNjEbFeRSYgXNq5HQlto50OI2jZ4EJTF29LEOtFZHTVAxFJA9L9E5Ix3jlTWg7YgK+L1Tkuhp5JbZwOwwQgbxPEcGCFiOwXkf3ASmCke5bVzX6Lzph6VK1nMLGfjaK/WFVJtqTcpjwz53hbxTTFr1EY0wSf7srhSmBkSrzToQS9iX2TYINrGdKxViIzbl4lCFU94O9AjGmsz9w9b2Iiwx2OJPhVTZP+ya4cSxCmmi3ca4LSofwz7M093fCBxittol3fFT/dad1dzTmWIExQ+tT67fvFzuxCjhacdToMEyAsQZig9OmuHLq1b+V0GC3SZ5Z8jZslCBN0SssrWbknz3ov+UGXuBgrnZlqliBM0Fl/8ARFJeVc0ccShK9N7JvE57tzKa+odDoUEwAsQZig89muHCLChLE2/5LPTeybRGFxORsOnXQ6FBMALEGYoHPXmpvIjLqN2J8n2uJAPja2dyLhYWK9mQxgCcIEmexTxXSqPM78ietciwPN3uJ0SC1KXKtIhvfoYO0QBrAEYYLJvMF0erYTWZrI5P4dnY6mxZrYL4kthwvIKSxxOhTjMEsQJni4V4+7tdVf6NepndPRtFgT+7oa/z/ZedzhSIzTLEGYoLI8M5er+3dERJwOpcUa2DWWrnExfLgt2+lQjMO8nazPmIBQXFbJ5P6dnA6jZYrrAXPjEGAFwF5grnu7tfWEJCtBmKDSJiqctJ42e6tfzN7iavifW8Bnt2eSUryIj27d5do3Nw7mDXY2PtPsLEGYoKCqAEzok0R0hM3e6m9pPeNpGx3B0u3Z5xJHwUGnwzLNzK8JQkSmiMhOEckUkTke9keLyKvu/atFJKXW/h4iUiQi3/NnnCbwZRw5BWC9l5pJdEQ4E/slsXT7cSor1elwjEP8liBEJByYD1wHDABuE5EBtQ67Dzihqr2BecAvau1/FnjXXzGa4LF0u6vB9MpLLUE0l2v6dyKnsIRNWSedDsU4xJ8liFFApqruVdVS4BVgWq1jpgEL3fdfByaLu3uKiNwM7AMy/BijCRIfZLgSRGLbaIcjCR2T+iURHibVydmEHn8miG7AoRqPs9zbPB6jquVAAZAgIm2BHwA/8WN8JkgczDvDtqOnnA4j5LRvHcWolHjr7hrCArWRei4wT1WL6jtIRB4QkXQRSc/JsakBWqp3tx51OoSQdfWATuzKLuJAnq3eF4r8mSAOA91rPE52b/N4jIhEAHFAHpAG/FJE9gOPAP8jIrNqv4CqLlDVEao6IinJpn5uMeYNdnWrdHetfHfrMQZ1i3U6qpB07QDXmJP3th5zOBLjBH8miLVAHxFJFZEoYCawuNYxi4G73PenA8vUZYKqpqhqCvAb4Geq+gc/xmoCScHB6v74FBxk46GTXDeoi9NRhaTu8a25LDmOd7ZYKS4U+S1BuNsUZgHvA9uB11Q1Q0SeFJGp7sOex9XmkAk8ClzQFdYYgOsGdXY6hJB1w+AubM4qcDoM4wC/TrWhqkuAJbW2PVHjfjEwo4HnmOuX4ExQOB7ekf0xt7s6TNvaD464fnAXnn53h9NhGAfYXEwmYOUUlpB25jc8fFUfZl/T1+lwQlb3+NYMSY6DXKcjMc0tUHsxGcP7GcdQhesGW/WS0264zNUGdDDvjMORmOZkCcIErMUbj9CnY1tb+yEAVHUSWGJdjkOKJQgTkLJOnGHN/nxuHtrN1n4IAN3jW5Md1pEHPx5mM7uGEEsQJiAt3nQEgKlDujociamyeNL7pBQvYu+33cOZaoxVMS2TJQgTkBZvPMKwHu3pHt/a6VCM27TLuxIm8OaGw+etHWHTgLdcliBMQNpxrJCbh9aeuss4qWNsDBP6JPHG+sM2BXiIsARhAlJ4mHD9YBs9HWi+Mqwbh0+eZc3+fKdDMc3AEoQJKBWVVSvHJdrU3gHo2gGdaRsdwRvrs5wOxTQDSxAmoCzPdI3Gmj482eFIjCetosK5fnBnlmw5xtnSCqfDMX5mCcIElNfWupYQucY9i6gJPF8ZlkxRSTkfbLMZXls6SxAmYOSfLq3+0ImOCHc4GlOXUSnxdGvfitfXWTVTS2cJwgSMNzccpqzCescEurAwYcaIZD7fnWtTb7RwliBMQFBVXlt7iCHd2zsdivHCzJE9CA8T/rnWxkC0ZJYgTEDYeOgkO7MLuXVE94YPNo7rHBfD5Es7VrcZmZbJEoQJCH9feYC20RHcNMTGPgSLO0ZfQt7pUqfDMH5kCcI4LqewhP9uPsL04cm0i4l0OhzjpQm9E+ke38rpMIwfWYIwjvvnmoOUVShfH3OJ06GYRggLE24b5Vrlb3d2ocPRGH+wBGEcVVpeycurDnBF3yR6JrV1OhzTSDNHuhLE88v3ORyJ8QdLEMZR72Uc43hhCXePtdJDMIpvEwXAGxsOk1NY4nA0xtdsTWrT/OYNrp4ieiowNQZ4BYjr4ZpG2gSd0vJKXlp1gEdt7fAWxUoQpvkVHIS5Bay4cw8pxYt4ecpmW1cgyF3dvyMvrzpAcZnNz9SS+DVBiMgUEdkpIpkiMsfD/mgRedW9f7WIpLi3XyMi60Rki/vnVf6M0zjjuU/2kNQu2ibmawHun9CT/NOl/NtmeW1R/JYgRCQcmA9cBwwAbhORAbUOuw84oaq9gXnAL9zbc4GbVHUwcBfwkr/iNM7YdOgkyzNzuX98KjGRNu9SsEtLjWdIchx/+nQPZRWVTodjfMSfJYhRQKaq7lXVUly1zNNqHTMNWOi+/zowWUREVTeo6hH39gyglYjY4gAtyHOfZBIbE8Edo2s0Tsf1cK1xHNfDucBMk4gI37m6D4fyz9paES2IPxupuwE1x+FnAWl1HaOq5SJSACTgKkFUuQVYr6rWRaIFeT8jm4cn96FtdI1/QWugDk7uxH5lXHeGJP+J3y/L5MtDk4mKsCbOYBfQf0ERGYir2ukbdex/QETSRSQ9JyeneYMzF6VdTAT3jktxOgzjC7O3wNwCBOE/uTew/OyXKX1moNNRGR/wZ4I4DNSceS3Zvc3jMSISAcQBee7HycCbwNdVdY+nF1DVBao6QlVHJCUl+Th84w/rDpwA4MGJvWjfOsrhaIxPzd6C/vgk05KW0PbsEUrKrUdTsPNnglgL9BGRVBGJAmYCi2sdsxhXIzTAdGCZqqqItAfeAeao6hd+jNE0I1Xll+/tAOAeKz20SCLCd91jIf6+4oDD0ZiL5bcEoarlwCzgfWA78JqqZojIkyIy1X3Y80CCiGQCjwJVXWFnAb2BJ0Rko/vW0V+xmubxyc4cVu/LB6B1lI3RbKmu6Osqzf9u2W7yiqzpMJj59V2qqkuAJbW2PVHjfjEww8N5TwFP+TM207xKyit48r/b6JnYBoqcjsY0hzOlFfz2o908OW2Q06GYJrKvcaZZ/O2L/ezLPc2L94yEfzodjfG7uB7sKbgNNkBZZjKR3804b4oVm1YlOAR0LybTMmSfKub3H+3m6v6dmNTPagpDwuwt5D+Ww2W8RmRhFqpaPcWKTasSPCxBGL9SVZ74z1bKKpU/5d5lA+FCSHybKH54fX8AXku3pUmDkSUI41fvbDnK+xnZPHpNXyIKs1zfHq1qIWRUrTH+03e2OxyJaQpLEMZv8opKeOI/GQxJjuP+8alOh2McEBYmABSXueZnUlUnwzGNZAnC+IWq8sM3tlBYXMYvpw8hItz+1UJWXA92Rc4kSxN5Za1VNQUT68Vk/OLvKw/wwbZsfnR9f/p1bud0OMZJs7dQWanMeWEN697exqjUeHo5HZPxin2tMz639XABP31nO1dd2pH7J1jVknFVNT3z1SHERIYxa9EGp8MxXrIEYXwqt6iEhL8OZ1fkTF7YfzXym8ucDskEiE6xMfxm5lB2HjsFWHtEMLAEYXympLyCB19aRxfNYdN9B1w9lsDVtdW6txpgYt8kvj/lUsC1oqAJbNYGYXyislKZ8+8tpB84ATEwpHt71w7r0mpq+cYVPeFj+NX7O+kSF8NXhtmSs4HKShDmoqkqTyzeyne33cL+mNutpGDqJeLq+jqudwKPvb6ZZTuyHY7I1MUShLkoqsrPlmzn5VUHSZZc9McnrdRgvPLnr41gYNdYvvnyej7ecdzpcIwHliBMk1VUKv/z5hb+8vk+vj7GtbZ01bdDY+oV14O2TyewOPcGPot6mAdeSufdLUedjsrUYm0QpknOlJYz+9WN/G/mrTwdkwsbsKol470apcykZwexu/I2+DcUvtOFtj/Ybl80AoQlCNNo+3NP8+DL69iZXcifo3PP9VYypgnCHt3KmdJyHn11E3/acxXf/ddmfn34DqTAPerapgZ3jFUxmUZ5Z/NRbvrDco6dKmbhPaOcDse0EK2jInjujmEA/Ht9FlJwiJ0PZtnU4A6zBGG8kltUwrf+sY5vL1pPz8Q2vD1rfPXSksb4QtXEfs/fNQKAm/6wnAWf2VgJJ1kVk6lXSXkFL608wO+XZXK2tILHvtSPb228GfldjeK/MT40uX8nwDWo7mdLdjC1VUc6z41z7bTqpmZlCcJ4VFJewX82HOEPH2dyMP8ME/ok8sSNA+jTqR18esjaHYx/xPWoHnW/4GvD+XBbNl99ZwEH888wvncifz1xDzFVo/ItUfidJQhznuxTxby+LosXV+wnp7CEAV1iWXjvKCZadZJpDjU+9AW4dmBnruibxN9X7mfBZ/u4tOhXDO3RnjePX8/Z0gpaRYU7F2sIsARhyC0q4ZOdOfxn42G+yMylUmFCn0TmffVyxvVOsC6HxlExkeE8cEUvvj4mhX+ty+L5z/cCMOqnS7nhsi58aWBnxvRKICbSkoWvWYIIQSdOl7Lx0EnWHzzBZ7ty2Hy4AFVI7tCKWVf25uah3eiZ1NZ18LzBF/YisXYH44CYyHC+NvoS7kzrQcmvu7Hl9FdhC2RtTmRo5XzG9U5gVGo8wy+JZ1C3WKIjLGFcLPHnlLsiMgX4LRAO/FVVf15rfzTwd2A4kAfcqqr73ft+CNwHVAAPq+r79b3WiBEjND093efXEKwqKpW8ohKOFBSzN6eIzONF7MkpYld2EftyTwMQJq5J9a7q15FvbLiZqKIs18k163fnxll7gwlYJeUV6LzBxJw+fN72LE3kGwkv0rdTO36ydyaxJa5R2pWx3ZHZW+ouFVd9IQqhNg4RWaeqIzzt81sJQkTCgfnANUAWsFZEFqvqthqH3QecUNXeIjIT+AVwq4gMAGYCA4GuwFIR6auqFf6Kt6lUFVXQmo/Bvc2179yx57bVPr7tc0MJO+XqGVQem8zhu9ZQVlFJSXklZRVKaXklpeWVlFVUcrasgsLiMgqLyzlVXE5hcRmnzpZzqriM44UlHD9VzPHCEioqz714eJhwSUJr+nZqy3/KHqx+w1DSAyZvgc+zziWCeYNdiQGstGACWnREODx27iMlp7CEdQfyGb14Eu/k3wj5rmRxWckiAJbrwyT/pP15z5Ef2Zk/D3uLDq2jeLDgIK/flMH0tweybEc2MZHhtIoMp1VUOBFhYUSECeFhQkS4+2dYGO3/PKz6vatx3an8zhYEqMpBwVxF67cShIiMAeaq6pfcj38IoKpP1zjmffcxK0UkAjgGJAFzah5b87i6Xq+pJYi8ohIm/PLjCz+83b+WmtuqPsw/j3qYZMklSxMZX/I7AJZHu7YB52331v6Y20kpXuTVc9Xefx3P8YF8my7kePdiNb8dheA3JhNaCs6WsS/3NEdPnuXwybMcOVnM0YKz5J8u5eSZMv5WcC9d3e+dqvdbzfdYTZ7ejzXfu57exzXPqU4anEsc5yUTxLWB6h+IuLfXOK62y5LjeOWBMY38zVQ9f90lCH8miOnAFFW93/34a0Caqs6qccxW9zFZ7sd7gDRgLrBKVV92b38eeFdVX6/1Gg8AD7gf9gN2XkTIicCF/xHBp6VcB9i1BKqWci0t5Trg4q7lElX12E0xqBupVXUBsMAXzyUi6XVl0WDSUq4D7FoCVUu5lpZyHeC/a/HnVBuHge41Hie7t3k8xl3FFIersdqbc40xxviRPxPEWqCPiKSKSBSuRufFtY5ZDNzlvj8dWKauOq/FwEwRiRaRVKAPsMaPsRpjjKnFb1VMqlouIrOA93F1c31BVTNE5EkgXVUXA88DL4lIJpCPK4ngPu41YBtQDny7GXow+aSqKgC0lOsAu5ZA1VKupaVcB/jpWvw6DsIYY0zwsum+jTHGeGQJwhhjjEchnSBEZIaIZIhIpYiMqLE9RUTOishG9+1PTsbpjbquxb3vhyKSKSI7ReRLTsXYFCIyV0QO1/hbXO90TI0hIlPcv/dMEZnjdDwXQ0T2i8gW998hqOa1EZEXROS4e+xV1bZ4EflQRHa7f3ZwMkZv1XEtfnmfhHSCALYCXwE+87Bvj6pe7r492MxxNYXHa6k1bckU4Dn3NCjBZF6Nv8USp4PxVo3pZq4DBgC3uf8ewexK998h2MYPvIjr/7+mOcBHqtoH+Mj9OBi8yIXXAn54n4R0glDV7ap6MaOvA0Y91zINeEVVS1R1H5AJ2GLSzWMUkKmqe1W1FHgF19/DNDNV/QxXT8mapgEL3fcXAjc3Z0xNVce1+EVIJ4gGpIrIBhH5VEQmOB3MRegGHKrxOMu9LZjMEpHN7qJ1UFQDuLWE331NCnwgIuvc09wEu06q6p61kmNAJyeD8QGfv09afIIQkaUistXDrb5vckeBHqo6FHgUWCQisc0Tcd2aeC0Br4Hr+iPQC7gc19/lGSdjDXHjVXUYriqzb4vIFU4H5CvuAbrB3OffL++ToJ6LyRuqenUTzikBStz317knEewLONow15RrIQimLfH2ukTkL8B//RyOLwX8774xVPWw++dxEXkTVxWap/a7YJEtIl1U9aiIdAGOOx1QU6lqdtV9X75PWnwJoilEJKmqIVdEeuKa6mOvs1E1WVBPW+J+41b5Mq7G+GDhzXQzQUFE2ohIu6r7wLUE19/Ck5pT/dwF/MfBWC6Kv94nLb4EUR8R+TLwe1xrULwjIhvd61dcATwpImVAJfCgqjZLo1BT1XUtDk1b4ku/FJHLcRX/9wPfcDSaRqhruhmHw2qqTsCb4lqQIAJYpKrvORuS90Tkn8AkIFFEsoAfAz8HXhOR+4ADwFedi9B7dVzLJH+8T2yqDWOMMR5ZFZMxxhiPLEEYY4zxyBKEMcYYjyxBGGOM8cgShDHGGI8sQRhjjPHIEoQxxhiPLEEY4yciMtI9eVqMeyRyhogMcjouY7xlA+WM8SMReQqIAVoBWar6tMMhGeM1SxDG+JF7Dqa1QDEwNsimOTEhzqqYjPGvBKAt0A5XScKYoGElCGP8SEQW41pJLhXooqqzHA7JGK+F9GyuxviTiHwdKFPVRe7p41eIyFWquszp2IzxhpUgjDHGeGRtEMYYYzyyBGGMMcYjSxDGGGM8sgRhjDHGI0sQxhhjPLIEYYwxxiNLEMYYYzz6/2lJdb8MXg4WAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -258,13 +372,14 @@ "pdf = pdf / sum(pdf) / (x[1] - x[0])\n", "\n", "# Plot\n", - "plt.plot(x, pdf)\n", + "plt.plot(x, pdf, label='anaytical')\n", "\n", "# Get chain points\n", "samples = sampler.get_chain(flat=True)\n", "\n", "# Plot estimated pdf which is proprtional to chain points density\n", - "plt.hist(samples[:, 0], 100, histtype=\"step\", density=True)\n", + "plt.hist(samples[:, 0], 100, histtype=\"step\", density=True, label='samples')\n", + "plt.legend()\n", "plt.xlabel('x')\n", "_ = plt.ylabel('probability')" ] @@ -274,13 +389,13 @@ "id": "24eac54e-1c09-4c09-9e56-7c8d4f8d572c", "metadata": {}, "source": [ - "Now we introduce a second non-normaal distribution, and compare sampling under the combined\n", + "Now we introduce a second non-normal distribution, and compare sampling under the combined\n", "pdf versus the importance-sampling trick." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 45, "id": "c8a39416", "metadata": {}, "outputs": [], @@ -293,7 +408,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 46, "id": "0f0126ec-956d-4075-834f-7829ddf362d0", "metadata": {}, "outputs": [], @@ -306,7 +421,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 47, "id": "58907336-05d6-45d8-acf4-9c81db1087ef", "metadata": {}, "outputs": [], @@ -318,7 +433,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 48, "id": "dcc9999e", "metadata": {}, "outputs": [], @@ -329,7 +444,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 49, "id": "60d5ba22-66af-4c3a-bb18-4556722030fb", "metadata": {}, "outputs": [], @@ -341,7 +456,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 50, "id": "7988743f-4707-4fe1-b1ed-7e7e35e01a2c", "metadata": {}, "outputs": [], @@ -352,13 +467,13 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 55, "id": "8cd91081-3c99-4fa0-be4c-e4fbc5cb3c70", "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -376,17 +491,32 @@ "# Normalise to unit area\n", "pdf_comb = pdf_comb / sum(pdf_comb) / (x[1] - x[0])\n", "\n", - "_ = plt.plot(x, pdf_comb)\n", + "_ = plt.plot(x, pdf_comb, label='analytical')\n", "\n", "# Get sample points under combined pdf and plot\n", "samples_comb = sampler_comb.get_chain(flat=True)\n", - "_ = plt.hist(samples_comb[:, 0], 100, histtype=\"step\", density=True)\n", + "_ = plt.hist(\n", + " samples_comb[:, 0],\n", + " 100,\n", + " histtype=\"step\",\n", + " density=True,\n", + " label='combined pdf sampled'\n", + ")\n", "\n", "# Importance sampling: Get weights = pdf2 evaluated at sample points\n", "weights = np.exp(log_prob2(samples[:, 0], μ2, σ2))\n", "\n", "# Plot importance-sampled points by adding those weights to histogram\n", - "plt.hist(samples[:, 0], 100, histtype=\"step\", density=True, weights=weights)\n", + "plt.hist(\n", + " samples[:, 0],\n", + " 100,\n", + " histtype=\"step\",\n", + " density=True,\n", + " weights=weights,\n", + " label='importance sampled'\n", + ")\n", + "plt.legend()\n", + "#plt.ylim()\n", "plt.xlabel('$x$')\n", "_ = plt.ylabel('probability')" ] From 50c2ba63ab1f7386018c9587b014443761179760 Mon Sep 17 00:00:00 2001 From: Martin Kilbinger Date: Thu, 6 Oct 2022 09:33:37 +0200 Subject: [PATCH 4/5] added proof --- importance_sampling.ipynb | 52 +++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/importance_sampling.ipynb b/importance_sampling.ipynb index a255a70..54ed599 100644 --- a/importance_sampling.ipynb +++ b/importance_sampling.ipynb @@ -37,6 +37,20 @@ "$$x_i ~ \\sim U_{[a; b]}.$$" ] }, + { + "cell_type": "markdown", + "id": "e9ac7929-7982-4437-be1d-0a7912a69795", + "metadata": {}, + "source": [ + "Proof:\n", + " \n", + "$$E \\left[ \\frac{b-a} N \\sum_{i=1}^N f(x_i) \\right]\n", + "= \\frac{b-a} N \\sum_{i=1}^N E \\left[ f(x_i) \\right]\n", + "= \\frac{b-a} N \\left( N \\frac 1 {b-a} \\int_a^b {\\rm d} x \\, f(x) \\right)\n", + "= F\n", + "$$" + ] + }, { "cell_type": "markdown", "id": "578fec40-49d4-419f-bef9-2b286af2c591", @@ -236,7 +250,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 1, "id": "d23712d6", "metadata": {}, "outputs": [], @@ -258,7 +272,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 2, "id": "26860f9e", "metadata": {}, "outputs": [], @@ -271,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 3, "id": "4e7a619b", "metadata": {}, "outputs": [], @@ -283,7 +297,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 4, "id": "45f3f7d9", "metadata": {}, "outputs": [], @@ -295,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 5, "id": "5da74549", "metadata": {}, "outputs": [], @@ -310,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 6, "id": "4dcffc21-a30c-48d5-b014-db396b6a900f", "metadata": {}, "outputs": [], @@ -323,7 +337,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 7, "id": "37e1b0a8-ae4d-4e0b-a768-e896f7f27c64", "metadata": {}, "outputs": [], @@ -335,7 +349,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 8, "id": "6803b569-df99-42da-a7ec-b554ecf75453", "metadata": {}, "outputs": [], @@ -346,13 +360,13 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 10, "id": "15bbb805", "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA0eUlEQVR4nO3deXxU5fX48c/JzpawJKxhU8IeQQiLsogLihtYhQpqq62tv7ZqW21t6bfWUmu/31qrtFa0tdZKVVy+fqulihsiCgo1AZQdEjBCWEISMIQl+/n9cScwhEkyCXNzZ5Lzfr3yysxdMucmmZw893me84iqYowxxtQW5XUAxhhjwpMlCGOMMQFZgjDGGBOQJQhjjDEBWYIwxhgTUIzXAYRKcnKy9uvXz+swjDEmoqxZs6ZQVVMC7WsxCaJfv35kZWV5HYYxxkQUEfmirn12i8kYY0xAliCMMcYEZAnCGGNMQC2mD8IY07JVVFSQl5dHaWmp16FEpISEBFJTU4mNjQ36HEsQxpiIkJeXR4cOHejXrx8i4nU4EUVVKSoqIi8vj/79+wd9nt1iMsZEhNLSUrp06WLJoQlEhC5dujS69WUJwhgTMSw5NF1TvneWIIwxxgRkCcIYY8LAa6+9xubNm088v++++1i6dGmjv05ubi7Dhw8PSUzWSW1MKM1Ph+JdkNQH7trgdTQmgrz22mtcddVVDB06FID777/f44isBWFMaBXvgnnFzmfT4lxzzTWMHj2aYcOG8eSTTwLQvn17fv7znzNixAjGjx9Pfn4+AP/+978ZN24c5557Lpdccgn5+flUV1eTlpZGQUEBANXV1QwYMIAPPviAxYsXc8899zBy5Eh27NjBLbfcwiuvvAJAZmYm559/PiNGjGDs2LGUlJSQm5vLpEmTGDVqFKNGjeLjjz8O+fVaC8IYt1mrIuR+9e9NbN57OKRfc2jPRH559bB6j3n66afp3Lkzx48fZ8yYMVx33XUcPXqU8ePH85vf/Iaf/OQn/PWvf+Xee+9l4sSJrF69GhHhqaee4ne/+x0PP/wwN910E88//zw//OEPWbp0KSNGjOCCCy5g+vTpXHXVVcycOfOU1ywvL+f666/npZdeYsyYMRw+fJg2bdrQtWtX3n33XRISEsjOzmbOnDkhr0fnagtCRKaJyDYRyRGRuQH2TxaRtSJSKSIzA+xPFJE8EXnMzTiNcZW1KlqMRx999ERLYffu3WRnZxMXF8dVV10FwOjRo8nNzQWceRuXXXYZ6enpPPTQQ2zatAmAb37zm/zjH/8AnITzjW98o97X3LZtGz169GDMmDEAJCYmEhMTQ0VFBd/+9rdJT09n1qxZp/RfhIprLQgRiQYWAFOBPCBTRBarqv9V7AJuAX5cx5f5NfChWzEaYyJTQ//pu2H58uUsXbqUVatW0bZtW6ZMmUJpaSmxsbEnhpBGR0dTWVkJwJ133sndd9/N9OnTWb58OfPmzQOgd+/edOvWjWXLlvHJJ5/w/PPPNyme+fPn061bNz777DOqq6tJSEgIyXX6c7MFMRbIUdWdqloOvAjM8D9AVXNVdT1QXftkERkNdAPecTFGY4wJSnFxMZ06daJt27Zs3bqV1atXN3h8r169AFi4cOEp+771rW9x0003MWvWLKKjowHo0KEDJSUlp32dQYMGsW/fPjIzMwEoKSmhsrKS4uJievToQVRUFM8++yxVVVWhuMxTuJkgegG7/Z7n+bY1SESigIepu2VRc9xtIpIlIlk1nT7GGOOGadOmUVlZyZAhQ5g7dy7jx4+v9/h58+Yxa9YsRo8eTXJy8in7pk+fzpEjR065vTR79mweeughzj33XHbs2HFie1xcHC+99BJ33nknI0aMYOrUqZSWlvK9732PhQsXMmLECLZu3Uq7du1Ce8Hg1Ohw4wOYCTzl9/xrwGN1HPsMMNPv+R3AT3yPb6nrPP+P0aNHqzGe+2XiqZ/r2mYabfPmzV6HEDKZmZk6ceLEZn/dQN9DIEvr+Lvq5iimPUBvv+epvm3BOA+YJCLfA9oDcSJyRFVP6+g2xphI8tvf/pYnnniiyX0PzcnNBJEJpIlIf5zEMBu4IZgTVfXGmscicguQYcnBGNMSzJ07l7lzI+PPmWt9EKpaiXOr6G1gC/Cyqm4SkftFZDqAiIwRkTxgFvAXEdnkVjzGGGMax9WJcqq6BFhSa9t9fo8zcW491fc1nsHpozDGGNOMbCa1MW5I6gPzkk4+NiYCWYIwxg1WUsO0AJYgjDkTVmfJOzXf+1AJo5/hlClT+P3vf09GRoancViCMOZM1NRZqrmd5HO4tILnV+/izY372J5fQlx0FOuB19fv5YrhPYiKqrW6lyWaxqv53odKrZ+hsXLfxoTcyuxCLnn4Ax58aytx0VHcMLYv00f2BOCOReuY89fV7P3y+KknWUG/sHf06FGuvPJKRowYwfDhw3nppZe4//77GTNmDMOHD+e2226rmejLlClTuOuuu8jIyGDIkCFkZmZy7bXXkpaWxr333gs4C/sMHjyYG2+8kSFDhjBz5kyOHTt22uu+8847nHfeeYwaNYpZs2Zx5MgRwBkuO3ToUM455xx+/ON6i040mSUIY0Ls60//h8Q2sbx2+wRe+e753Hf1UB64Jh2AB69L55G9X6PnH7pT8XDzF5wzTffWW2/Rs2dPPvvsMzZu3Mi0adO44447yMzMZOPGjRw/fpzXX3/9xPFxcXFkZWXxne98hxkzZrBgwQI2btzIM888Q1FREeBUav3e977Hli1bSExM5PHHHz/lNQsLC3nggQdYunQpa9euJSMjg0ceeYSioiJeffVVNm3axPr1608knVCzBGFMiLy1cR8A55+dzOI7JjCyd8fTjrl+TB96SQFjY/+P2JK801sSJmylp6fz7rvv8tOf/pQVK1aQlJTE+++/z7hx40hPT2fZsmUnSnqDU2+p5rxhw4bRo0cP4uPjOeuss9i92ylT17t3byZMmADATTfdxMqVK095zdWrV7N582YmTJjAyJEjWbhwIV988QVJSUkkJCRw66238s9//pO2bdu6cs3WB2FMiNz98mdMi4Knbs4gITa63mOfvXUce55IodcfujsbbChs2Bs4cCBr165lyZIl3HvvvVx88cUsWLCArKwsevfuzbx58ygtLT1xfHx8PABRUVEnHtc8rykJXlMmvEbt56rK1KlTeeGFF06L55NPPuG9997jlVde4bHHHmPZsmUhu9YTsYb8KxrTypRWOGWW28c7/281lBwABnXvwLY5H9GvdBG/zlhlHdMRYO/evbRt25abbrqJe+65h7Vr1wKQnJzMkSNHTiwP2hi7du1i1apVACxatIiJEyeesn/8+PF89NFH5OTkAE4/yPbt2zly5AjFxcVcccUVzJ8/n88+++wMry4wa0EYc4bmL93Oz4BHvjoSGlF/7aLB3bj5vL78beXnXDy4K+cPSG74JHOS/2TEUH29emzYsIF77rmHqKgoYmNjeeKJJ3jttdcYPnw43bt3P7HiW2MMGjSIBQsW8M1vfpOhQ4fy3e9+95T9KSkpPPPMM8yZM4eysjIAHnjgATp06MCMGTMoLS1FVXnkkUca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\n", "text/plain": [ "
" ] @@ -380,7 +394,7 @@ "# Plot estimated pdf which is proprtional to chain points density\n", "plt.hist(samples[:, 0], 100, histtype=\"step\", density=True, label='samples')\n", "plt.legend()\n", - "plt.xlabel('x')\n", + "plt.xlabel('$x$')\n", "_ = plt.ylabel('probability')" ] }, @@ -395,7 +409,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 11, "id": "c8a39416", "metadata": {}, "outputs": [], @@ -408,7 +422,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 12, "id": "0f0126ec-956d-4075-834f-7829ddf362d0", "metadata": {}, "outputs": [], @@ -421,7 +435,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 13, "id": "58907336-05d6-45d8-acf4-9c81db1087ef", "metadata": {}, "outputs": [], @@ -433,7 +447,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 14, "id": "dcc9999e", "metadata": {}, "outputs": [], @@ -444,7 +458,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 15, "id": "60d5ba22-66af-4c3a-bb18-4556722030fb", "metadata": {}, "outputs": [], @@ -456,7 +470,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 16, "id": "7988743f-4707-4fe1-b1ed-7e7e35e01a2c", "metadata": {}, "outputs": [], @@ -467,13 +481,13 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 17, "id": "8cd91081-3c99-4fa0-be4c-e4fbc5cb3c70", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEGCAYAAABy53LJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA9OklEQVR4nO3deXxU9dX48c/JAmFJgkBAQogECfuEHUEEUVC0IriAslnE7VGrT6tPVWxdqMvvodUWq/Wxoq2glULFqqholAoqCkpAJIjsxBCCELYQAoEs5/fHLA4hyyRkcifJeb9e88rMnXvvnDuZycn3fr/fc0VVMcYYYwIV5nQAxhhj6hZLHMYYY6rEEocxxpgqscRhjDGmSixxGGOMqZIIpwOoDa1bt9aOHTs6HYYxxtQpa9as2a+qcaWXN4jE0bFjR9LS0pwOwxhj6hQR+aGs5XaqyhhjTJVY4jDGGFMlljiMMcZUSYPo4yhLYWEhWVlZFBQUOB2KqSeioqJISEggMjLS6VCMCaoGmziysrKIjo6mY8eOiIjT4Zg6TlU5cOAAWVlZJCUlOR2OMUHVYE9VFRQU0KpVK0sapkaICK1atbIWrGkQGmziACxpmBplnyfTUDToxGGMMabqLHHUcXPnzuWuu+6qdJ3s7Gzf41tuuYWNGzdW+bWWL1/OmDFjqrydMaZ+abCd4w3J3Llz6dWrF/Hx8QC8/PLLDkdkatRsF+RmQmwi3JPudDSmAbAWh4Ouuuoq+vfvT8+ePZkzZw4AzZs357e//S29e/dm8ODB7N27F4B3332X8847j759+zJq1Cjfcq+8vDySkpIoLCwE4MiRIyQlJfHGG2+QlpbGlClT6NOnD8ePH2fEiBG+Eiwffvgh/fr1o3fv3owcORKAr7/+miFDhtC3b1/OP/98Nm/eXFtviamO3EyYmev+aUwtsBYH8Lt3v2Nj9pEa3WeP+BgevbJnhev8/e9/p2XLlhw/fpyBAwdy7bXXkp+fz+DBg3nyySe5//77eemll3jooYe44IILWLVqFSLCyy+/zB/+8Af++Mc/+vYVHR3NiBEjeP/997nqqqtYsGAB11xzDRMmTOD555/n6aefZsCAAae8fk5ODrfeeiufffYZSUlJHDx4EIBu3brx+eefExERwdKlS/nNb37Dm2++WaPvj6kl1hoxQWCJw0HPPvssb731FgC7du1i69atNGrUyNeP0L9/fz7++GPAPe/k+uuvZ8+ePZw8ebLMuQK33HILf/jDH7jqqqt45ZVXeOmllyp8/VWrVjF8+HDfvlq2bAlAbm4u06ZNY+vWrYiIrxVj6iBva2RmrNORmHrEEgdU2jIIhuXLl7N06VJWrlxJ06ZNGTFiBAUFBURGRvqGdYaHh1NUVATA3Xffzb333svYsWNZvnw5M2fOPG2fQ4cOJSMjg+XLl1NcXEyvXr2qFdvDDz/MRRddxFtvvUVGRgYjRoyo7mGaUGMtEFMDrI/DIbm5uZx11lk0bdqUTZs2sWrVqkrXb9++PQDz5s0rd72f//znTJ48menTp/uWRUdHk5eXd9q6gwcP5rPPPmPnzp0AvlNV/q81d+7cKh2XCQGzXe4WxsxYd4LwZ/0hpgYENXGIyGUisllEtonIjDKeHy4ia0WkSETG+y2/SETW+d0KROQqz3NzRWSn33N9gnkMwXLZZZdRVFRE9+7dmTFjBoMHD65w/ZkzZzJhwgT69+9P69aty11vypQpHDp0iEmTJvmW3Xjjjdx+++2+znGvuLg45syZwzXXXEPv3r25/vrrAbj//vt58MEH6du3r6/FY+oQ3+mpXGtVmOBQ1aDcgHBgO9AJaAR8C/QotU5HIAV4FRhfzn5aAgeBpp7Hc8tbt7xb//79tbSNGzeetqw+eOONN3Tq1KlOh9FgOfK5ejSm7J9VXceYUoA0LeNvajD7OAYB21R1B4CILADGAb6ZZ6qa4XmupIL9jAc+UNVjwQu1frj77rv54IMPWLJkidOhmBAwetFosvPdEz/jE+JJdTgeU38EM3G0B3b5Pc4CzqvGfiYCfyq17EkReQT4DzBDVU+U3khEbgNuA0hMTCz9dL303HPPOR2CccjoRaPJTkokftFoX4LIzs8mfZr7VJVrnsu54Ey9E9Kd4yLSDnDBKf8sPQh0AwbiPo31QFnbquocVR2gqgPi4k671rox9Up2fjbpOzN9LQxjgimYiWM30MHvcYJnWVVcB7ylqr6JBKq6x3P67QTwCu5TYsYYY2pJMBPHaiBZRJJEpBHuU06Lq7iPScA//Rd4WiGIe7LDVcCGMw/VGGNMoIKWOFS1CLgL92mm74F/qep3IvKYiIwFEJGBIpIFTABeFJHvvNuLSEfcLZZPS+36dRFJB9KB1sATwToGY+oUz5yNw43O5roXVwLw27fSWfPDISejMvVQUGeOq+oSYEmpZY/43V+N+xRWWdtm4O5gL7384pqN0sM7o7amODQzt3nz5hw9evS05Y888gjDhw9n1KhRZ/waI0aMKLP2VaD8Y7zvvvtYsmQJP/vZz3jqqafOOLbqyMjIYMyYMWzYEHjj9cYbb2TMmDGMHz++8pVrSiWzvv+n/T/g+FQG5T9DylkKwNvf7Ob1rzKJ7g4Hjp6gVe1Fa+oxKzni5Z00VVNCrDbQY4895nQIZZozZw4HDx4kPDzc6VBCXyV1p95et5umXWH1Q6OIbRKJax58/dtRvLryB/7vBxjz3ApW1nLIpn4K6VFV9d2rr75KSkoKvXv35oYbbgDc//1efPHFpKSkMHLkSDIz3a2gG2+8kTvuuIPBgwfTqVMnli9fzk033UT37t258cYbT9nvPffcQ8+ePRk5ciQ5OTm+7RctWgRAx44defTRR+nXrx8ul4tNmzYBkJ+fz0033cSgQYPo27cv77zzDgDHjx9n4sSJdO/enauvvvqU2ef+OnbsyP3334/L5WLQoEFs27YNgJ07dzJkyBBcLhcPPfSQb/2xY8dy9OhR+vfvz8KFC0/Z16effkqfPn3o06cPffv2JS8vj6NHjzJy5Ehf3N74MjIy6NatGzfeeCNdunRhypQpLF26lKFDh5KcnMzXX38NuGff33DDDQwZMoTk5OQyi0AWFxdz3333MXDgQFJSUnjxxRcB90TZu+66i65duzJq1Cj27dsXyK846A7mn/Tdnzd9EPHN4rngX/1wzXMR3yyeZo0juGPEuQCcLHJPl9p10KZEmTNU1qzA+nYLaOZ4Tc+krWR/GzZs0OTkZM3JyVFV1QMHDqiq6pgxY3Tu3Lmqqvq3v/1Nx40bp6qq06ZN0+uvv15LSkr07bff1ujoaF2/fr0WFxdrv3799JtvvlFVVUD/8Y9/qKrq7373O/3FL37h2/6NN95QVdVzzjlHn332WVVVff755/Xmm29WVdUHH3xQX3vtNVVVPXTokCYnJ+vRo0f1j3/8o06fPl1VVb/99lsNDw/X1atXn3ZM55xzjj7xxBOqqjpv3jy94oorVFX1yiuv1Hnz5qmq6l/+8hdt1qyZbxv/+/7GjBmjK1asUFXVvLw8LSws1MLCQs3NzVVV1ZycHD333HO1pKREd+7cqeHh4ae8H9OnT/e9V9738NFHH9WUlBQ9duyY5uTkaEJCgu7evVt37typPXv2VFXVF198UR9//HFVVS0oKND+/fvrjh079M0339RRo0ZpUVGR7t69W2NjY33vp7+gzhz3fqb+1Ev10Rgt+VNPnfjiStVHY7TX3F4Vbtprbi/d/OMR1UdjdPTsT23muAkI5cwctxaHQz755BMmTJjgqzvlLWm+cuVKJk+eDMANN9zAihUrfNtceeWViAgul4u2bdvicrkICwujZ8+eZGRkABAWFuarOTV16tRTtvd3zTXXAO7S7d5tP/roI2bNmkWfPn181XozMzP57LPPmDp1KgApKSmkpKSUe1zeGlmTJk1i5Ur3iZEvvvjCt9zbsqrM0KFDuffee3n22Wc5fPgwERERqCq/+c1vSElJYdSoUezevdt3QaukpKRT3o+RI0f63ivv8QGMGzeOJk2a0Lp1ay666CJfa8Tro48+4tVXX6VPnz6cd955HDhwgK1bt/LZZ58xadIkwsPDiY+P5+KLg9PVFpB70mFmLpK7i5U7DgS8WZcXEiho1p4te08veGlMVVgfRx3SuHFjwJ0cvPe9j8srRugt0V7evvxLt6sqb775Jl27dq12jP6vV979QMyYMYMrrriCJUuWMHToUFJTU1m1ahU5OTmsWbOGyMhIOnbsSEFBwSnHA6e+P6Xfm9JxlH6sqjz33HOMHj36lOWhVsYlPSsXF3B13/buMYuBmJlLFHBH6iZYCd9kHqJv4llBjNLUV9bicMjFF1/MG2+8wYED7v8YvSXNzz//fBYsWADA66+/zrBhw6q035KSEl9fxvz587ngggsC3nb06NE899xz3uKSfPPNNwAMHz6c+fPnA7BhwwbWr19f7j68fRULFy5kyJAhgLv14H9Mgdi+fTsul4sHHniAgQMHsmnTJnJzc2nTpg2RkZEsW7aMH374IeBj83rnnXcoKCjgwIEDLF++nIEDB57y/OjRo3nhhRd8F6/asmUL+fn5DB8+nIULF1JcXMyePXtYtmxZlV+7phSXKA+97R5V9btxVb+WzA2DOwKwoYavemkaDmtxeMUm1uxIqNLXQSilZ8+e/Pa3v+XCCy8kPDycvn37MnfuXJ577jmmT5/OU089RVxcHK+88kqVXrZZs2Z8/fXXPPHEE7Rp0+a0TueKPPzww/zqV78iJSWFkpISkpKSeO+997jjjjuYPn063bt3p3v37vTv37/cfRw6dIiUlBQaN27MP//pnrv55z//mcmTJ/P73/+ecePGBRTLM888w7Jly3ynni6//HLy8vK48sorcblcDBgwgG7dugV8bF4pKSlcdNFF7N+/n4cffpj4+PhTTmXdcsstZGRk0K9fP1SVuLg43n77ba6++mo++eQTevToQWJioi8pOmHh6l18m5XLsbPiiZnVutLPWmltot2tsYz9+cEIzzQA4v3vsj4bMGCApqWlnbLs+++/p3v37g5FVD917NiRtLS0Cq8X4qSZM2fSvHlzfv3rXwftNYL6uZoZy6W9zmNP/h4A4pvFkzreXcbNNc/lK2hYltOenxnLL5KX8fyUfsGJ1dQLIrJGVU+bsGWnqoypQ/bk7yHv+1m8cuGnZ1zQcF9eQQ1FZRoaO1Vlaoz/KZ9QVNZ12uui4V3iGNCx5enFeCoQ3yzeN7fD20rZl3fa1QiMCYglDmPqmHsv6VLlbfxPaXntO3ICVa3yiDdjLHEYE+J8V/JLSiRSW9GnQwvgp1aE935VHS8s5uiJIqKjImsyXNMAWOIwJsR5L9KUpa3ZOvk/vuXeVsSZ2HvkhCUOU2WWOIwJVd5quEmJjGn1HsdPFvNxcs1ezXJfXgGd2zSv0X2a+s8Sh4fvdEAN8e+ELM/555/Pl19+WWOvWZmMjAy+/PJLX0mT+qyqpd+XL1/O008/zXvvvRfkyKrAWw13nosNu4/w5NW9CAur2f6IHOsgN9VgicMjOz+7wnHwVeXfCVme2kwaRUVFZGRkMH/+/AaROOqb6MYRXNO3zEvXnJF9RyxxmKqzeRwOat7cfYpg+fLlXHjhhYwbN45OnToxY8YMXn/9dQYNGoTL5WL79u2AuzT67bffzoABA+jSpYvvv+OCggKmT5+Oy+Wib9++vnIYc+fOZezYsVx88cWMHDmSGTNm8Pnnn9OnTx9mz55NRkYGw4YNo1+/fvTr18+XyJYvX86IESMYP3483bp1Y8qUKb4yJKtXr+b888+nd+/eDBo0iLy8vHJLkfvLz8/niiuuoHfv3vTq1cs3o/2xxx5j4MCB9OrVi9tuu833OiNGjOCee+5hwIABdO/endWrV3PNNdeQnJzsK83uLac+ZcoUunfvzvjx4zl27PSS4R999BFDhgyhX79+TJgwwXcRqQ8//JBu3brRr18//v3vf9fML7WG5R53lz4Z2yeeJo1q7polGtuBjKjJTFhxeY3t0zQgZZXMrW+3QMqqV1aWuqoC2Z+3pPiyZcs0NjZWs7OztaCgQOPj4/WRRx5RVdVnnnlGf/nLX6qquzT66NGjtbi4WLds2aLt27fX48eP69NPP+0re/79999rhw4d9Pjx4/rKK69o+/btfSXbly1b5it1rqqan5+vx48fV1XVLVu2qPd9WrZsmcbExOiuXbu0uLhYBw8erJ9//rmeOHFCk5KS9Ouvv1ZV1dzcXC0sLCy3FLm/RYsW6S233OJ7fPjwYVX9qZy8qurUqVN18eLFqqp64YUX6v333+97D9q1a+d7f9q3b6/79+/XnTt3KuArvz59+nR96qmnfNuvXr1ac3JydNiwYXr06FFVVZ01a5b+7ne/0+PHj2tCQoJu2bJFS0pKdMKECae8N9VVo2XVH43RV1dmaK+5vfTbXYdqZJf+n8sLfv8fK69uKoSVVQ9tAwcOpF27djRu3Jhzzz2XSy+9FOC0suDXXXcdYWFhJCcn06lTJzZt2sSKFSt8Zc+7devGOeecw5YtWwC45JJLfCXbSyssLOTWW2/F5XIxYcIENm7c6Htu0KBBJCQkEBYWRp8+fcjIyGDz5s20a9fOVxgwJiaGiIiIckuR+3O5XHz88cc88MADfP7558TGuuuCLVu2jPPOOw+Xy8Unn3zCd9/5LjvP2LFjfdv27NnT9/506tSJXbt2AdChQweGDh0KlF1GftWqVWzcuJGhQ4fSp08f5s2bxw8//MCmTZtISkoiOTkZEfG9f6Fm4Wr3hbxc7Wv+ipJto6NqfJ+mYQhqH4eIXAb8GQgHXlbVWaWeHw48A6QAE1V1kd9zxYC30yFTVcd6licBC4BWwBrgBlU9SR1XU2XBS2vWrFm5z82ePZu2bdvy7bffUlJSQlTUT39I/OPxL71eFi2nFLm/Ll26sHbtWpYsWcJDDz3EyJEjuf/++7nzzjtJS0ujQ4cOzJw501cm3T+GisrIB1Im/ZJLLvEVXPRat25dubGGkg27jxAdU/Wy9IFoE9MY9tb4bk0DELQWh4iEA88DlwM9gEki0qPUapnAjcD8MnZxXFX7eG5j/Zb/Hpitqp2BQ8DNNR58CHvjjTcoKSlh+/bt7Nixg65duzJs2DBfufItW7aQmZlZ5jU1oqOjycv76SI+ubm5tGvXjrCwMF577TWKi4srfO2uXbuyZ88eVq9eDUBeXh5FRUXlliL3l52dTdOmTZk6dSr33Xcfa9eu9SWJ1q1bc/ToUV85+KrIzMz0XTCqrDLygwcP5osvvvBdxjY/P58tW7bQrVs3MjIyfP1HpRNLqGgUHryTAm2sxWGqKZgtjkHANlXdASAiC4BxgO98iKpmeJ4rCWSH4v6362LAOyxoHjATeOFMg/WfhVsTqjOTNxCJiYkMGjSII0eO8Ne//pWoqCjuvPNO7rjjDlwuFxEREcydO/eU/9C9UlJSCA8Pp3fv3tx4443ceeedXHvttbz66qtcdtllFbZOABo1asTChQu5++67OX78OE2aNGHp0qXlliL3l56ezn333UdYWBiRkZG88MILtGjRgltvvZVevXpx9tlnn3ZtjEB07dqV559/nptuuokePXpwxx13nPJ8XFwcc+fOZdKkSZw44R5B9MQTT9ClSxfmzJnDFVdcQdOmTRk2bNgpSdVpxSVKOHBh1zhWBamAdZynvPrxk8U12vFuGoCyOj5q4gaMx316yvv4BuAv5aw7FxhfalkRkAasAq7yLGuNOxl51+kAbKgsloCuOV4H+F833Ogp1woPFTX1ufpy237VR2N08brdNTpww39f/1qdqfpojGbsP1pj+zf1C+V0jofyPI5zVHW3iHQCPhGRdCA30I1F5DbgNnD/l25MXfLu+myGACO7t4F1Nbdf/5Z1y8ZtmYC7Su45rSpubRrjL5iJYzfuFoFXgmdZQFR1t+fnDhFZDvQF3gRaiEiEqhZVtE9VnQPMAfeFnKpzAKFm7ty5TocQUjp27MiGDRucDqNG+VcwWJMQT2qjmv2K+lcz8CaQvUfsuhymaoI5HHc1kCwiSSLSCJgILA5kQxE5S0Qae+63BoYCGz1Np2W4T4MBTAPeqW6A2gCufmhqT018nrLzs3l28H/I+34W2ZG1c0LAZo+bqgpa4vC0CO4CUoHvgX+p6nci8piIeIfWDhSRLGAC8KKIeAfxdwfSRORb3Ililqp6O9UfAO4VkW24h+T+rTrxRUVFceDAAUsepkaoKgcOHDhlSHN1vfttNjFRtXcW2S7oZKoqqJ9OVV0CLCm17BG/+6txn24qvd2XQJlDnNQ9SmvQmcaWkJBAVlYWOTk5Z7orYwD3PyMJCWdeT+rj7/ZyWa+z+fD06ilBYZeQNVUVyp3jQRUZGUlSUpLTYRhzmg+4k4Tv9vNhUu0M6rAKuaaqrOSIMaFitruRLQgFvz14ynXCg8n6OExVNdgWhzEhJzcTWibyeOeF/DUyvEau8BeIvXaqylSRtTiMCTGX9mxbq693+FghJ4oqLjdjjD9LHMaEmIu7tan117TTVaYqLHEYE2JaNG1U66+5J9dOV5nAWeIwJgTsyDnq6OvvyT3u6OubusUShzEh4OONzl4Y40drcZgqsFFVxjhttov/ys1kb1jt920ARDeOsFNVpkqsxWGM03IzOffkP3n1vHdr9WXjm8XjSkqETr/mvUO/qNXXNnWbJQ5jnDLbBTNjOdY0nuISZUTX2m1xpI5PJX1nJn2KXuYEB2r1tU3dZonDGKfkZsLMXB5NWkBMVAR9O7RwJIyzY+wSsqZqLHEY4yBV5dMtOQxLjiMiiNcXr0i7WHfiKCwO6ArOxljiMMZJG/ccYV/eCUZ0jXMmgNhE7v3SXWzaih2aQFniMKa2ePo0vMUMAZZvdpf1v9CpxHFPOssmbgVsEqAJnCUOY2qLp0+D3EzfouWb99EzPoY20c71M5ztOVVlczlMoCxxGOOgtZmHuaiWR1OV5u3jsNnjJlCWOIxxkHsYrkOnqTxim0QCsPeItThMYCxxGOOgmKgI+jg0DNdLRADr4zCBs5IjxtS22ESYGUs2cQzvEscVb11Odn42QNCv9lcR6+MwgQpqi0NELhORzSKyTURmlPH8cBFZKyJFIjLeb3kfEVkpIt+JyHoRud7vubkislNE1nlufYJ5DMbUuHvS2XT7Ls4v+DPDu8SRnZ9N+rR00qel19pV/8piLQ4TqKC1OEQkHHgeuATIAlaLyGJV3ei3WiZwI/DrUpsfA36uqltFJB5YIyKpqnrY8/x9qrooWLEbE2wrtu4H4ILOreE7h4Px2HukgJISJSxMnA7FhLhgtjgGAdtUdYeqngQWAOP8V1DVDFVdD5SUWr5FVbd67mcD+wBnexCNqUErtu2nU1wz4ls0cToUn6ISZX++TQI0lQtm4mgP7PJ7nOVZViUiMghoBGz3W/yk5xTWbBFpXM52t4lImoik5eTkVPVljQmaE0XFfLXjIMM6t3Y6lNNYP4cJREiPqhKRdsBrwHRV9bZKHgS6AQOBlsADZW2rqnNUdYCqDoiLs8aKCR3fZB7meGExQ0MwcVg/hwlEMBPHbqCD3+MEz7KAiEgM8D7wW1Vd5V2uqnvU7QTwCu5TYsbUGSu27ic8THhq489xzXM5OpKqtD2HbRKgqVwwh+OuBpJFJAl3wpgITA5kQxFpBLwFvFq6E1xE2qnqHnEPPr8K2FCjURsTZCu27ad3Qixbj+0hfVq60+H4NAoPsxaHCUjQWhyqWgTcBaQC3wP/UtXvROQxERkLICIDRSQLmAC8KCLe8SXXAcOBG8sYdvu6iKQD6UBr4IlgHYMxNS33WCHrsw5zQXLonT6NbxFFlrU4TACCOgFQVZcAS0ote8Tv/mrcp7BKb/cP4B/l7PPiGg7TmFqzcscBStQ9DPeVbKejOVX7s5qw+5AlDlO5kO4cN6a+WbEth2aNwumb2MLpUE7TvkUTdluLwwTASo4YU4tWbN3PeZ1aEenQ1f7KE19YxAf5Uylp04KCwouIigx3OiQTwgL69IrIv0XkChEJrU+7MXVMxoFj7tniISY1K5tHe31AWKPD1kFuKhVoIvg/3COitorILBHpGsSYjKnXhiWHXuIA96mqkpMtGPv+YFzzXIxeNNrpkEyICihxqOpSVZ0C9AMygKUi8qWITBeRyGAGaEx90jamMZ3bNHc6jDIlnNWE/O0zeKjH+6RPS/dV7DWmtID7OESkFTAVuAH4BngduACYBowIRnDG1BclJUoYUJLwJCmv3gM4W0K9LGfHRhEm2MgqU6mAEoeIvAV0xV3+40pV3eN5aqGIpAUrOGPqhdkuwnIzydLWFOj+kJr05y8yPIy2MTaXw1Qu0D6Ol1S1h6r+rzdpeIsLquqAoEVnTF002wUzY90/AXIz+etFa7ngxLPOxhWA9i1sLoepXKCJo6zZ2StrMhBj6o3cTJiZ6/7p8cW2/XRpG5p9G/7an2VzOUzlKjxVJSJn4y6F3kRE+gLeK7zEAE2DHJsx9cbXOw8y+bxEFh10OpKKPbZjErEn96CzO0BLu6CTKVtlfRyjcV+hLwH4k9/yPOA3QYrJmHrnRFEJQ89tHfKJI/bkHjoWzCeDydAy0elwTIiqMHGo6jxgnohcq6pv1lJMxtQ74WHCeZ1aumtGG1PHVXaqaqqn4GBHEbm39POq+qcyNjPGlJKSEEt0lE15MvVDZaeqmnl+hn6vnjEhKK+gkGhg6LmhOVvcJzYRZsZSEtsBrOKIqURlp6pe9Pz8Xe2EY0z98tWOg4wCzu/cyulQKnaPe25JGNDq8Y+h2NlwTGir7FRVhQPPVfW/azYcY+qXL7bvZxTQL/Esp0MJWIeWTSHH6ShMKKvsVNWaWonCmHrqy20HAOpUmfJESxymEoGMqjLGVENxTAdSc6/kSON2xDgdTBWc08qmaJmKVXaq6hlV/ZWIvAto6edVdWzQIjOmjnvv4lR+uWAdSd2fYf88d/mRUCtsWJYOLS1xmIpVdqrqNc/Pp6uzcxG5DPgzEA68rKqzSj0/HHgGSAEmquoiv+emAQ95Hj7hbf2ISH9gLtAE9/XMf6mqpyU1Y5z25PqpRHffT2R4fMgWNixLoiUOU4kKa1Wp6hrPz09x16Y6BBwEVnqWlUtEwoHngcuBHsAkEelRarVM3DPT55fatiXwKHAeMAh4VES8vYsvALcCyZ7bZRUeoTEOOa77GSKv8NH4VKdDqRI7VWUqE+ilY68AtgPPAn8BtonI5ZVsNgjYpqo7VPUksAAY57+Cqmao6nqgpNS2o4GPVfWgqh4CPgYuE5F2QIyqrvK0Ml4FrgrkGIypTZkHjgEwNAQvE1uZttFRTodgQlygF3L6I3CRqm4DEJFzgfeBDyrYpj2wy+9xFu4WRCDK2ra955ZVxvLTiMhtwG0AiYlWc8fUri+27wdgaKjP3yhDWJgVNzQVC7Ssep43aXjswF3oMGSp6hxVHaCqA+Li4pwOxzQwX2xzJ45z46zogql/KkwcInKNiFwDpInIEhG50dNp/S6Vl2vbDXTwe5zgWRaI8rbd7blfnX0aU2tWbnfP3xCpm/+9H2p0NgA6u5fDkZhQVFmL40rPLQrYC1yI+/riObhHNVVkNZAsIkki0giYCCwOMK5U4FIROcvTKX4pkOq5+uARERks7m/kz4F3AtynMbXmQP5Jp0M4I28Oc5+FltxdlaxpGqLKJgBOr+6OVbVIRO7CnQTCgb+r6nci8hiQpqqLRWQg8BZwFnCliPxOVXuq6kEReZyfWjWPqar3SgZ38tNw3A+ouJ/FGFMN57Rq5j4hbUwZJJApECISBdwM9MTd+gBAVW8KXmg1Z8CAAZqWluZ0GKYBGL1oNNn52YB7sl9qHRuK67X5xzyuefdnhDU6DNTtYzHVJyJrVHVA6eWBdo6/BpyNe5jsp7j7FkK6c9wYJ2TnZ5O+M5OxMfPr9B/axJZNyd8+g/SdmaRPS/clQ2Mg8MTRWVUfBvI9M7ivIPChtcY0DLPdZUWytHWdnL/hr0mjcOKiGzsdhglRgSaOQs/PwyLSC4gF2gQnJGPqqNxMAIadfJYhnere/I3SrPSIKU+gEwDneEY3PYx7ZFRzz31jTCk92sVwVrNGTodxxpJaN3OPpTSmlIASh6q+7Ln7KdApeOEYU/fV9dNUXp3i3FeOPnqiyOFITKgJtFZVKxF5TkTWisgaEXlGROp+W9yYIDj/3Prx1ejU2p04dubkOxyJCTWB9nEsAPYB1wLjgf3AwmAFZUxdNiippdMh1Iik1u5yKTv2H3U4EhNqAu3jaKeqj/s9fkJErg9GQMbUdU0bBfq1Cm3e8uo7rMVhSgm0xfGRiEwUkTDP7TrcM8KNMcDBOl5ipCze66Tv3G+Jw5yqsiKHeSJyBPeFk+YDJz23BXhKlhtjfqqGWx/ZqSpTWmW1qqJrKxBj6ipvmZHfJCXSrg5cU7yqdubkExbjdBQmlAR8MlZExgLDPQ+Xq+p7wQnJmLolOz+b6Oxn+PLENTCz7lxbPFD5J4ux/yCNv0CH484Cfgls9Nx+KSL/G8zAjKlLsnMLnA7BmFoTaIvjZ0AfVS0BEJF5wDfAg8EKzBhjTGiqyrjBFoD3mhixNR+KMXWLt2+jkbaiY6umUE8HHzWOCHTwpWkoAv1E/D/gGxGZ62ltrAGeDF5YxoS+7Pxs1kz5luM7ZjAsuZ5e1z42kc0RE52OwoSYShOHiIQBJcBg4N/Am8AQVbWZ46bBW5t5iGMnixmWXD/qU53mnnTu6PyJ01GYEFNp4vD0a9yvqntUdbHn9mMtxGZMyPt8aw7hYcKQelKfqiyd27hLjxQUFjsciQkVgZ6qWioivxaRDiLS0nsLamTG1AGfb91P3w4tiI6KdDqUoOnS1j0Yd3uOTQQ0boEmjuuBO3GXVU/zu1VIRC4Tkc0isk1EZpTxfGMRWeh5/isR6ehZPkVE1vndSkSkj+e55Z59ep+zC0oZx6TvzuXvh2+CmbEQm+h0OEHhTRxb91riMG6BjqrqgTtxXAAo8Dnw14o2EJFw4HngEiALWC0ii1V1o99qNwOHVLWziEwEfg9cr6qvA6979uMC3lbVdX7bTVHVShOXMcGmCjEn9sDMXKdDCZokT3n1LXvzHI7EhIpAWxzzgO7As8BzuBPJvEq2GQRsU9UdquqtbzWu1Drj/PazCBgpIlJqnUmebY0JORlRk9HYDk6HEVSNPMNxt1iLw3gEmjh6qeotqrrMc7sV6FXJNu2BXX6PszzLylxHVYuAXKB0L+P1wD9LLXvFc5rq4TISDQAicpuIpIlIWk5OTiWhGlM1qgrA7ed+gtyzweFoasfLO0fCbJfTYZgQEGjiWCsig70PROQ8AujjOFOe1zmmqv7fzCmq6gKGeW43lLWtqs5R1QGqOiAurp6OsTeO2ew5bXNRt4bz2Uo6MR9yM50Ow4SAQBNHf+BLEckQkQxgJTBQRNJFZH052+wG/NvwCZ5lZa4jIhG4Z6Qf8Ht+IqVaG6q62/MzD3ep90EBHoMxNWbZJncrdkTXhjM2w9PIMibgzvHLqrHv1UCyiCThThATgcml1lkMTMOdiMYDn6jnHIBn4uF1uFsVeJZFAC1Udb+IRAJjgKXViM2YavGWGQGILyyibUyUwxEZU/sCShyq+kNVd6yqRSJyF+4rBYYDf1fV70TkMSBNVRcDfwNeE5FtuOtg+dc2GA7sUtUdfssaA6mepBGOO2m8VNXYjKmu7PxsVly3ln6Pf0xqo0lOh1OrIsPL7E40DVBQL46sqkuAJaWWPeJ3vwCYUM62y3GXOfFflo/7tJkxjlmxdT/FJQ3vvE2n1s3dw1dMg2dlL42pok827SO2Sf2dKV6e5LbNnQ7BhAhLHMZU0adb9nFhl4Yzmsqrq2cG+dETRQ5HYpxmicOYKtp/9GSDGoYLEN8snjlZ1zA6IZ7v9xxxOhzjMEscxlSRCAyvr9ffKEfq+FQ+vmo12ZERbMy2xNHQWeIwpoq+avIrWj3dpt4WNSxP25jGAEz7qLfNIG/ggjqqypj65MDREwC0KdlXr4salsdb3eeKlu/x/sExDkdjnGSJw5hK+E/6KznZAmjYZTe27j0KDW9QmfFjp6qMqUR2fjbp09IZLK8Qs3+m0+E4qkVkWxp3uR9XUiKjF412OhzjEEscxgTg+MliPt+awyU92jodiqNeGfU2ed/PIn1npq8VZhoeSxzGBODzrTkUFJZwaY+znQ7FUUmtm9EkMtzpMIzDLHEYE4CPN+4lOiqC8zq1dDoUR4WHCd3bRTsdhnGYJQ5jAvDUd8NZHnE3keH2lekZH+t0CMZh9i0wJgAdC+bTqmiv02GEhJ7xMU6HYBxmw3GNKYd3GG58YRE7raXhk5LQAoAWkW1wzXNPBIxvFk/q+FQHozK1yb4NxpQjOz+b9T9fT2pWNkPObeV0OCGji6dK7sjmz5I+LZ30aek2wqqBscRhTAW81xa/tGfDHobrL8LT+vo267CzgRjHWOIwpgJL0n8EaPDzN8ryXfYRThaVOB2GcYAlDmMq8P569ymYNtF2bfHSThaVWIn1BsoShzEV2J6T/9OD2ESYGdvgquJWZN2uw06HYBwQ1MQhIpeJyGYR2SYiM8p4vrGILPQ8/5WIdPQs7ygix0Vknef2V79t+otIumebZ8VbstOYIAjz/3Tdk+6uintPumPxhJI20Y0tcTRQQUscIhIOPA9cDvQAJolIj1Kr3QwcUtXOwGzg937PbVfVPp7b7X7LXwBuBZI9t8uCdQym4VJVABtNVYE+HVpY4miggtniGARsU9UdqnoSWACMK7XOOGCe5/4iYGRFLQgRaQfEqOoqdX+zXwWuqvHITYP3/R73aKorXPEORxK6+iaexc79+ez3XKfENBzBTBztgV1+j7M8y8pcR1WLgFzA+y9ekoh8IyKfisgwv/WzKtknACJym4ikiUhaTk7OmR2JaXDeT3d3ik/+wGV9GuUYlOSu25WWcdDhSExtC9WZ43uARFU9ICL9gbdFpGdVdqCqc4A5AAMGDNAgxGjqIf+LNsUXFjXIK/0FytU+lqjIML7eecjpUEwtC2aLYzfQwe9xgmdZmeuISAQQCxxQ1ROqegBAVdcA24EunvUTKtmnMdWWnZ/Nqxd9Rt73s0jNstnQFWkUEUafDi34OuOA06GYWhbMxLEaSBaRJBFpBEwEFpdaZzEwzXN/PPCJqqqIxHk61xGRTrg7wXeo6h7giIgM9vSF/Bx4J4jHYBqgt77ZTeMIG6keiEFJrdiYbXM5GpqgfTs8fRZ3AanA98C/VPU7EXlMRMZ6Vvsb0EpEtgH3At4hu8OB9SKyDnen+e2q6j2ReifwMrANd0vkg2Adg2mYFn+bzaU9G/YFmyrlmdNy57qrKLETwQ1OUPs4VHUJsKTUskf87hcAE8rY7k3gzXL2mQb0qtlIjfnJ4WOFXNOvPWx2OpIQ5pnL0mh2LzKiJuPCBhA0JNYeN6aU1s0bM6xza6fDqBPC7tnAuLglla9o6pVQHVVlTK3xH0mlhWexNOwXRDz+ow3DDdD557Zix144eqKI5o3tT0pDYC0O0+Bl52eTPi2d+7u+x9FtD9Di5I9WWqQKhnVuTXxhEUMW9GX0otFOh2NqgSUOYzwWrcmi29nRTodR5/TveBapWdlce9YCu6BTA2GJwxjgu+xcvt11mOsHdqh8ZXOKxhHhAHy+1So0NBSWOIwB5n+VSeOIMK7pm1D5yqZMp5SgN/Wa9WQZA7yzLpsxKfHENo10OpQ6LTayDa55LgDim8WTOj7V4YhMMFiLwxjcI4Imn2enqc5EXHRjevMU6dPSSZ+Wbv0d9ZglDmOArm2j6Zd4ltNh1GkXd23DZ5tz7DrkDYAlDtOgrc86DMCkQR2wi0memVE92pJ3ooivd1qZ9frOEodp0NrPHQTAz7+60uFI6r4LOrcmKjKMpd/vdToUE2SWOEyD9WNuAa2K3H/kwo7sqmRtU6HYRJr8v5asaPxLPt6413fpXVM/WeIwDda8lRlOh1B/3JMOM3NpXbSX3YePs+nHPKcjMkFkw3FNg3TsZBHzv8rkAe8CT5lw331TbSLw4YYfnQ7DBJElDtMglfzJxdntwRWZSHyzeJhm8w1qyuCkVkz68gr+3jEKZrus5lc9ZInDNDiFxSU0L8gmOzKR9T9fb6OpatiVveM5O3sfkAi5mU6HY4LA+jhMg/P2Nz9dpt6SRs27vJddPbG+sxaHaVAuXTSaPfnZPJbkOUVlatxZzRo5HYIJMkscpkHZk59N3vezyIiaDDPt3Lsx1RHUU1UicpmIbBaRbSIyo4znG4vIQs/zX4lIR8/yS0RkjYike35e7LfNcs8+13lubYJ5DKb+KC5xzy3o2tauuWHMmQha4hCRcOB54HKgBzBJRHqUWu1m4JCqdgZmA7/3LN8PXKmqLmAa8Fqp7aaoah/PbV+wjsHUL/9emwXAf49MdjiSesw7rNlvSHPu8UIHAzLBEMwWxyBgm6ruUNWTwAJgXKl1xgHzPPcXASNFRFT1G1X1ltb8DmgiIo2DGKup5woKi/nTx1sA+JnLOm+DxjMR0H8I7jvrdlewgamLgpk42gP+dRyyPMvKXEdVi4BcoFWpda4F1qrqCb9lr3hOUz0sNizGBGDelxnsyS0AbCRVbZv/VaaVIKlnQno4roj0xH366r/8Fk/xnMIa5rndUM62t4lImoik5eTYJS0bskP5JxmzbLS7Q9zUuk0/5pH2wyGnwzA1KJiJYzfgf2WcBM+yMtcRkQggFjjgeZwAvAX8XFW3ezdQ1d2en3nAfNynxE6jqnNUdYCqDoiLi6uRAzJ101MfbaY9OWy+PcvpUBqkFk0jeemzHU6HYWpQMBPHaiBZRJJEpBEwEVhcap3FuDu/AcYDn6iqikgL4H1ghqp+4V1ZRCJEpLXnfiQwBtgQxGMwddy3uw7zzoE7cSUlMj71fOILi5wOqcGIbxaPKymR4nP+hy9O3sPO/XZN8voiaInD02dxF5AKfA/8S1W/E5HHRGSsZ7W/Aa1EZBtwL+AdsnsX0Bl4pNSw28ZAqoisB9bhbrG8FKxjMHVbcYny8DsbCIs8TPrOTNKnpZOaF3HaqB8THKnjU0nfmckn16QRFnmYv62wVkd9IQ2h02rAgAGalpbmdBimFo1eNNp3zev4wiJ3wrBie7VvZizMzGXQqxdxXPfTtkk7ll73kdNRmQCJyBpVHVB6uc0cN/VSdn42hdv+wKbwieijh921vo1jvszZR0ReFq4kpyMxNSGkR1UZUx3eGeKNwt0fbxt+6yDPhMCIsDAe6rMCgF0HjzkclDlTljhMvfPiZ+5BeOu5zvoynOY3IfDui90z9md7JmKaussSh6lXvt55kD9+5P7DpI8etn6NENI2JgqAf3+zmzU2r6NOs8Rh6o39R0+QMG8Q2xtNAuwUVahqFxvFI+9s8J1SNHWPdY6beuFkUQl3vr6W3IRIsiPtWhuhKr6wiOz4X3EUGP7PNnwx5T9Oh2SqwRKHqfN8Q2+jIL4Q0qfZ6alQlZoXAbmZ5IS35eLEfezcn09S62ZOh2WqyE5VmTov23Nxplva/5vUrOzKNzDO8XSWxxXvdT9cuI6i4hJGLxqNa54L1zwXoxeNdjhIUxlrcZg6zVsDaW30vbRc8aONoqpj1u06zNMfbSE7P9vXUnTNczkclamMJQ5TZ839YidPLvme6O7QsvBH97BPU2fEN4snu/sMXt8HLSLbOh2OqQJLHKZO8S8lAhDdHdo1iwcynQvKVEvq+FROFpUw+aVVbMjOZd2uw/Tp0MLpsEwArI/D1CnZ+dmk78zkgx3HGN30H6yd+i0fjU91OixTTY0iwnhhan/aREcx7e9fs+nHI06HZAJgicPUGT96ruDXsWA+CbKfp8anEBluH+E6bbaLuD+24ZPwu4iKDGPqy187HZEJgH3rTJ2wbNM+xjz3OQB/mdwXsAl+9UJuJszMJSIsjK9OXsu7RbcDsHL7AYcDMxWxPg4T0g4fO8lj723k32t307VtNNnAmJR4+I+7eJ6PjaaqWzzFD32/N09pmHYzY4FEbvjbVzz4s+7cNLSj/YMQgixxmJBUWFzC66t+4NlPtnHkeCH/fXFnfnFxZwa87lnBalDVbZX8/lY1/RWtl+6FpVAc04Hwe+1Cn6HEEocJKSeKinnnm2yeTJ9KSfhBSIRzC4u497sIuNSSRb0Xm0h8YREXdWgM/NSKjHl9JJ9O/JgI69MKCZY4TEjYk3ucN9dkMWfnzWjEIcKlJc+e9x8uWpDM6F6DcUVmwzwX8cVOR2qC6p50/MfI7cg5Sqfn2+NKgktmf8YvRyYzJqWdJRCHWeIwjtl3pIDlm3NY/G02X2zfjypEdz/E/53/CRd0bu07t51qw20brE5xzdHYDgAsyL+V8xY+wyNrJ6ERh2jTpB3/scvQOsISh6k1OXkn+CbzEGszD7NiWw4bdrvH7Md0+QPNux0EIL4YhiXHORmmCTFyzwbiF41mVMdsoplBpLbi4KZZlHSa5StP0jrqbFKvTaVRhLVEakNQE4eIXAb8GQgHXlbVWaWebwy8CvQHDgDXq2qG57kHgZuBYuC/VTU1kH0aZxUVl5Bz9ATZh4+zfV8+2/cfZfu+fB7PmEg7zeGPCfFkR0ZADETHuLdp1yye1A3uYZnMdtloKXOa1PGp7s+Fp6zMroPHWJLejY827mVt5iFKOs2i/+u9AWgaFsc9XeeS3Daac+OaEdsk0kZm1TBRDc7FVEQkHNgCXAJkAauBSaq60W+dO4EUVb1dRCYCV6vq9SLSA/gnMAiIB5YCXTybVbjPsgwYMEDT0tJq9Phqmvf34P11aOnlvsfe509dn3KeD2ifJXCyuISTxSUUFrl/niwqIfmfQ2h8dDcFzdrz5ZXLOHaymLyCIvIKCjly3P0zr6CI3OOF7M0rYO+RE7x18r9IkP2MTEhgX+Tp//21anw2H177IVF/6eMewx+b6KmYGmu1pkzFZrvcn5lyHG50NtNi/sb2qN8gkYcoOdmC/O0z+KLxf9Ne9pMT3pYnkxfSomkjYqIiiGkS6b5FRRIVGUbjiHAaR4bROMJzP8J9PyI8jDBxzxsKDxPCBMJEPDcIfzYFyd3102e5HhGRNao64LTlQUwcQ4CZqjra8/hBAFX9X791Uj3rrBSRCOBHIA6Y4b+udz3PZhXusyzVTRy3v7aGz7bmlPvH2vfOVfK8/3tcOgGEsoyoyXQsmO/76a9Z51mERR4ud9v4wiLmXJ3GOc/FV5wQvH8M6uGXztSyUolltLd1W03exAPQ7NxZhDU6fNpyOPV70vnkPxEBwd3CaZT0v0jkIbTwLE7ufBDKafiU1x4qr6Ek5WxR1vrv3n0B58Y1L+cVKlZe4gjmqar2wC6/x1nAeeWto6pFIpILtPIsX1Vq2/ae+5XtEwARuQ24zfPwqIhsrsYxALQG9ldz21BTpWNxfwbH+H5WxQag462eD+vvAjlNsAHuDfh0QoP9nYS4EDuWM6p75TmW8j73Py0/9XtyRQW7/PxM4qmu1p0fP6PfyTllLay3neOqOgeYc6b7EZG0sjJuXVRfjqW+HAfYsYSq+nIswTqOYA5B2A108Huc4FlW5jqeU1WxuDvJy9s2kH0aY4wJomAmjtVAsogkiUgjYCKwuNQ6i4FpnvvjgU/U3SGwGJgoIo1FJAlIBr4OcJ/GGGOCKGinqjx9FncBqbiHzv5dVb8TkceANFVdDPwNeE1EtgEHcScCPOv9C9gIFAG/UNVigLL2Gaxj8Djj010hpL4cS305DrBjCVX15ViCchxBG1VljDGmfrJplsYYY6rEEocxxpgqscRRDhGZICLfiUiJiAzwW95RRI6LyDrP7a9OxlmZ8o7D89yDIrJNRDaLyGinYqwOEZkpIrv9fg8/czqmqhKRyzzv/TYRmVH5FqFLRDJEJN3zuwjtMg1+ROTvIrJPRDb4LWspIh+LyFbPz7OcjDFQ5RxLUL4nljjKtwG4BvisjOe2q2ofz+32Wo6rqso8Dk9Zl4lAT+Ay4P88ZWLqktl+v4clTgdTFZ73+nngcqAHMMnzO6nLLvL8LurS/Ie5uD///mYA/1HVZOA/nsd1wVxOPxYIwvfEEkc5VPV7Va3ubPOQUcFxjAMWqOoJVd0JbMNdG8zUjkHANlXdoaongQW4fyemFqnqZ7hHdPobB8zz3J8HXFWbMVVXOccSFJY4qidJRL4RkU9FZJjTwVRTWSVh2pezbqi6S0TWe5rodeJ0gp/68P77U+AjEVnjKfdTl7VV1T2e+z8CbZ0MpgbU+PekQScOEVkqIhvKuFX0n98eIFFV+wL3AvNFJKZ2Ii5bNY8j5FVyXC8A5wJ9cP9O/uhkrIYLVLUf7lNvvxCR4U4HVBM8E5Lr8pyFoHxP6m2tqkCo6qhqbHMCOOG5v0ZEtuMu+e5Yh2B1joM6UL4l0OMSkZeA94IcTk0L+fe/KlR1t+fnPhF5C/epuLL6B+uCvSLSTlX3iEg7YJ/TAVWXqu713q/J70mDbnFUh4jEeTuRRaQT7nIoO5yNqlrKK+tSJ3i+0F5X4x4EUJfUm/I5ItJMRKK994FLqXu/D3/+pZCmAe84GMsZCdb3pEG3OCoiIlcDz+G+Psj7IrLOcx2Q4cBjIlIIlAC3q2qtdEhVR3nHUVFZlzriDyLSB/dphAzgvxyNporKK8njcFjV1RZ4S9wXg4gA5qvqh86GFBgR+ScwAmgtIlnAo8As4F8icjPwA3CdcxEGrpxjGRGM74mVHDHGGFMldqrKGGNMlVjiMMYYUyWWOIwxxlSJJQ5jjDFVYonDGGNMlVjiMMYYUyWWOIwxxlSJJQ5jHCAiy0TkEs/9J0TkOadjMiZQNnPcGGc8irsCQRugLzDW4XiMCZjNHDfGISLyKdAcGKGqeU7HY0yg7FSVMQ4QERfQDjhpScPUNZY4jKllnoqlr+O+0txRESnrcp/GhCxLHMbUIhFpCvwb+B9V/R54HHd/hzF1hvVxGGOMqRJrcRhjjKkSSxzGGGOqxBKHMcaYKrHEYYwxpkoscRhjjKkSSxzGGGOqxBKHMcaYKvn/25I+d4LMJ6gAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ "
" ] From b65570de7351cc46420add867ad6e3c121e5e0cf Mon Sep 17 00:00:00 2001 From: Martin Kilbinger Date: Thu, 6 Oct 2022 09:47:40 +0200 Subject: [PATCH 5/5] fixed typos --- importance_sampling.ipynb | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/importance_sampling.ipynb b/importance_sampling.ipynb index 54ed599..5f9ae56 100644 --- a/importance_sampling.ipynb +++ b/importance_sampling.ipynb @@ -56,7 +56,11 @@ "id": "578fec40-49d4-419f-bef9-2b286af2c591", "metadata": {}, "source": [ - "This is illustrated in the following example. We pick uniformly drawn random points $x_i$\n", + "This is illustrated in the following example.\n", + "\n", + "The goal is to estimate the grey area under the curve.\n", + "\n", + "We pick uniformly drawn random points $x_i$\n", "and compute the area of the rectangle between $a = -2$ and $b = 5$, which is $(b - a) f(x_i)$.\n", "\n", "An (unbiased) estimate of the grey area is the average of all rectangles, which is the above equation.\n", @@ -90,7 +94,10 @@ "\n", "$$F \\approx \\frac 1 N \\sum_{i=1}^N f(y_i)$$\n", "\n", - "with random points $y_i$ drawn from the distribution $p$, $y \\sim p$." + "with random points $y_i$ drawn from the distribution $p$, $y \\sim p$.\n", + "\n", + "Note that the distribution $p$ is not evaluated in the sum. It only serves as a kind of\n", + "weight. The density of sample points $y_i$ is proportional to this weight. " ] }, { @@ -155,7 +162,7 @@ "\n", "$$\\bar x \\approx \\frac 1 N \\sum_{i=1}^N x_i.$$\n", "\n", - "Another example: To plot the 2D $68\\%$ credible region (contour), pixelise $p$ in 2D, sort the pixels by density (= number of sample points in each pixel), and set $f = 1$ in the first $68\\%$ of pixels, and $0$ for the remaining pixels." + "Another example: To plot the 2D $68\\%$ credible region (contour), pixelise yout prior range in 2D. (Ignoring further dimensions is equivalent of marginalising over those dimensions.) Then sort the pixels by density (= number of sample points in each pixel), and set $f = 1$ in the first $68\\%$ of pixels, and $0$ for the remaining pixels, and plot $f$." ] }, { @@ -185,7 +192,7 @@ "source": [ "This integral can be estimated with samples under $q$ instead of $p$,\n", "\n", - "$$y \\sim q,$$\n", + "$$x \\sim q,$$\n", "\n", "if the samples are multiplied by the importance weights\n", "\n", @@ -193,7 +200,7 @@ "\n", "since\n", "\n", - "$$ \\int {\\rm d} x \\, p(x) f(x) = \\int {\\rm d} x \\, q(x)\\frac{p(x)}{q( x)} f(x) \\approx \\frac 1 N \\sum_{i=1}^N w_i f(y_i).$$" + "$$ \\int {\\rm d} x \\, p(x) f(x) = \\int {\\rm d} x \\, q(x)\\frac{p(x)}{q( x)} f(x) \\approx \\frac 1 N \\sum_{i=1}^N w_i f(x_i).$$" ] }, { @@ -201,7 +208,7 @@ "id": "1c4385ad-ebf0-43bf-a937-09a7f149b7d9", "metadata": {}, "source": [ - "Importance sampling can be useful if sampling under $p$ is very time-consuming of difficult, but evaluating $p$ at points $x_i$ is not. One then choses a simple proposal function $q$, e.g. a (multi-variate) normal.\n", + "Importance sampling can be useful if sampling under $p$ is very time-consuming of difficult, but evaluating $p$ at points $x_i$ is not. One then chooses a simple proposal function $q$, e.g. a (multi-variate) normal.\n", "\n", "Importance sampling permits to separate sampling (fast; under $q$) and evaluating the original posterior (potentiall slow, but can now be done in parallel using the already sampled points $x_i$)." ] @@ -227,7 +234,7 @@ "\n", "$$\\int {\\rm d} x p_{\\rm comb} f(x) = \\int {\\rm d} x \\pi(x) L(x) L_2(x) f(x)$$\n", "\n", - "has a form similar to the modified one above, if we identify\n", + "has the same form to the modified one above, if we identify\n", "\n", "$$q(x) = \\pi(x) L(x) \\quad \\mbox{and} \\quad L_2(x) = \\frac{p(x)}{q(x)}.$$" ]