diff --git a/bayesian/normalizing_flows/change_of_variables.ipynb b/bayesian/normalizing_flows/change_of_variables.ipynb new file mode 100644 index 0000000..e0dff56 --- /dev/null +++ b/bayesian/normalizing_flows/change_of_variables.ipynb @@ -0,0 +1,348 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import torch.distributions as dist\n", + "import numpy as np\n", + "from scipy import stats\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Transforming probability distributions\n", + "Normalizing flows uses transformation to obtain complex posteriors. \n", + "This notebook explores transformations of distributions.\n", + "\n", + "We start with a basis Gaussian $\\mathcal{N}(\\mu=1, \\sigma=0.1)$. These parameters are chose so we can look at transformations in the positive domain and don't have trouble with square rooting negative numbers.\n", + "\n", + "Below we plot the **pdf** and integrate to validate $\\int P(x)dx=1$." + ] + }, + { + "cell_type": "code", + "execution_count": 221, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 221, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de3Bc53nf8e+D+424L0mQAAhSohyRtm6GZF3sWHZtVZYvmsaeWprUStS0jBy7dS5NJ00z9rhtOu1MmjiyUrOK4iaqHTue2rEVl4qtxJItR9EFokRKFCURIgkCIgWAAIg7QFye/rG71BoCiANgd8/Z3d9nZoe7ey77aHXww4v3vOc95u6IiEjuKwq7ABERSQ8FuohInlCgi4jkCQW6iEieUKCLiOSJkrA+uLm52Ts6OsL6eBGRnPTss8+edffYcstCC/SOjg66urrC+ngRkZxkZj0rLVOXi4hInlCgi4jkCQW6iEieUKCLiOSJwIFuZsVm9pyZfX+ZZWZm95pZt5kdNrNr0lumiIisZi0t9M8BR1dY9iFgd+KxD/jKBusSEZE1ChToZtYKfBh4YIVVbgce9LgngXoza0lTjSIiEkDQFvqXgH8PLK6wfDvQm/K6L/HezzCzfWbWZWZdg4ODaypUJNMO953jb198A00pLblq1UA3s48AA+7+7MVWW+a9t/xUuPv97t7p7p2x2LIXOomEYmZugV/9P89yz9ee5a6vPk3v8FTYJYmsWZAW+k3Ax8zsJPBN4P1m9rUl6/QBbSmvW4HTaalQJAu+/tQpzozO8Es37OBgzwi3/NFP+NYzvatvKBIhqwa6u/8Hd2919w7gDuBH7v4vlqz2EHBXYrTL9cCou59Jf7ki6Tc5O8//fLSbmy5t4ou3v50f/uZ7ecf2On7vey8yOTsfdnkiga17HLqZ3WNm9yReHgCOA93AnwK/lobaRLLif//DCYYmz/PvbnkbANvrK/nNWy7j/Pwij72icz2SO9Y0OZe7PwY8lni+P+V9Bz6TzsJEsmF0ao7/9ZPjfODyLVzd3nDh/Ws7GmmqLuNvj7zBh6/QgC3JDbpSVAranz5+nInZeX7rlst+5v3iIuODe7bw6MsDzM4vhFSdyNoo0KWgfe/Q67zvbZu5vKX2Lcv+6du3MjE7zxPdQyFUJrJ2CnQpWG+MztA7PM2NlzQtu/zGS5qoKS/hb198I8uViayPAl0KVlfPMADX7Wxcdnl5STHv/7nNPHK0n/mFla6pE4kOBboUrK6TI1SVFbNnme6WpFvfvpXhyfN09YxksTKR9VGgS8F65uQwV7fXU1K88o/Bey+LUV5SpG4XyQkKdClI4zNzHD0zRueO5btbkqrLS/j5y2L88IjmeJHoU6BLQXru1DkWPT7efDU3XtLE6dEZBsdns1CZyPop0KUgdZ0cprjIuKq9ftV1k33sR06PZboskQ1RoEtBeubkCHtaaqkpX/1i6T3bkoE+mumyRDZEgS4FZ25hked6R+jsaFh9ZWBTRSk7mqp46Yxa6BJtCnQpOEdOjzEztxio/zxp77ZadblI5CnQpeB0nYxfUNS5I1gLHeL96D1DU4zNzGWqLJENU6BLwXnm5DA7mqrYXFsReJu92+oAOKpWukSYAl0KzuG+Ua5pD946h3iXC6B+dIk0BboUlPGZOc6MznDZlk1r2i62qZzmmjL1o0ukBblJdIWZPW1mh8zsiJl9cZl1bjazUTN7PvH4fGbKFdmY7oEJAC7dXLOm7cyMPdvqFOgSaUHuWDQLvN/dJ8ysFPipmT3s7k8uWe9xd/9I+ksUSZ9jiUDfvcZAh3i3ywOPH+f8/CJlJfrjVqInyE2i3d0nEi9LEw9NaiE5qXtggrKSItoaq9a87Z6WWuYWnFf7xzNQmcjGBWpmmFmxmT0PDACPuPtTy6x2Q6Jb5mEz27vCfvaZWZeZdQ0O6ua7kn3dAxNcEquhuMjWvO2FE6PqdpGIChTo7r7g7lcBrcB1Zvb2JascBHa4+5XAl4HvrrCf+9290907Y7HYRuoWWZdjA+Pr6m4B6GiqpqqsWFMASGStqSPQ3c8BjwG3Lnl/LNkt4+4HgFIza05XkSLpMHV+nr6R6XUHelGRcXlLrYYuSmQFGeUSM7P6xPNK4APAy0vW2Wpmlnh+XWK/urOuRMrxwUnc1z7CJdXebbW8dHqMxUWdRpLoCTLKpQX4CzMrJh7U33L375vZPQDuvh/4BPBpM5sHpoE7XHcDkIg5NhA/mbl7y/oD/W1bNzF5foEzYzNsr69MV2kiabFqoLv7YeDqZd7fn/L8PuC+9JYmkl7H+icoKTJ2NFWvex87m+Pbnjw7qUCXyNFgWikYxwYm2NlcTelF7iG6mmSgHz87ma6yRNJGgS4Fo3tgYkPdLQBbNlVQWVrMiUEFukSPAl0KwszcAj1Dk1y6eW1zuCxVVGR0NFdzckiBLtGjQJeCcOLsJIsbHOGStLO5ihPqcpEIUqBLQejewBwuS+1srqZ3eIq5hcUN70sknRToUhCODUxQZG+e1NyInc01zC86fSPTaahMJH0U6FIQugfG2dFUTUVp8Yb3tbM5PrHXibMTq6wpkl0KdCkIx/on0tJ/DvEWOsCJs1Np2Z9IuijQJe8tLDonhybZFdt4dwtAQ1UptRUlaqFL5CjQJe+dGZ1mbsHZ0ZieQDczdsZqNNJFIkeBLnnv1FC8a2RH09pvarGSXc3VnFSXi0SMAl3yXs9wPHjb13GXopV0NFXz+rlpZuYW0rZPkY1SoEve6xmaorTY2JbGybR2Jvrje4bUSpfoUKBL3js1PElrQ9W6bju3kl2J8ew6MSpRokCXvNczNJXW7haADs26KBGkQJe85u6cGppK6wlRgJryEmKbyjmpQJcICXILugoze9rMDpnZETP74jLrmJnda2bdZnbYzK7JTLkia3Nuao7x2fm0t9AhPo2Ahi5KlARpoc8C73f3K4GrgFvN7Pol63wI2J147AO+ktYqRdYpOcJlI3cpWsnOpmpdLSqRsmqge1zyzE9p4rH0fqG3Aw8m1n0SqDezlvSWKrJ2PYl5y9Pd5QLxkS5nJ2YZm5lL+75F1iNQH7qZFZvZ88AA8Ii7P7Vkle1Ab8rrvsR7S/ezz8y6zKxrcHBwvTWLBJa8qCgTXS47Evs8paGLEhGBAt3dF9z9KqAVuM7M3r5kleXGgy1txePu97t7p7t3xmKxtVcrskY9w1NsqS1PyyyLS7UlAr1vRIEu0bCmUS7ufg54DLh1yaI+oC3ldStwekOViaTBqaGptM3hslQy0E8NK9AlGoKMcomZWX3ieSXwAeDlJas9BNyVGO1yPTDq7mfSXq3IGvUMT9Kegf5zgLrKUuoqS+kd1o0uJBpKAqzTAvyFmRUT/wXwLXf/vpndA+Du+4EDwG1ANzAF3J2hekUCm5lboH9s9kJfdya0NVaqhS6RsWqgu/th4Opl3t+f8tyBz6S3NJGNSQZtplroED/Z+vIb4xnbv8ha6EpRyVs9Q5kbg57U1lBF3/A0i4tvGQMgknUKdMlbF8agZ7TLpYrzC4v0j89k7DNEglKgS946NTzFpooS6qtKM/YZyZEuOjEqUaBAl7zVk5iUyyx90+Yu1a6hixIhCnTJW6eGMzcGPWlbfQVm0KtAlwhQoEteWlh0+kamMjrCBaC8pJiW2goFukSCAl3y0htjM8wteEbmcFmqtbGKXl3+LxGgQJe8lGwxtzak7z6iK2lvrFIfukSCAl3yUt9IfNRJW0PmW+htDVX0j80yM7eQ8c8SuRgFuuSl3uEpzGBbfRZa6E3xz0j+EhEJiwJd8lLvyBQttRWUlWT+EE/+FaB+dAmbAl3yUt/wNK1ZOCEKb45F10gXCZsCXfJS78hUVk6IAsQ2lVNeUqRAl9Ap0CXvzM4v8MbYTFZOiAKYGW0a6SIRoECXvHP63Azub86zkg1tDZWaz0VCp0CXvJO8x2dblrpcIN6P3js8RfzWACLhCHILujYze9TMjprZETP73DLr3Gxmo2b2fOLx+cyUK7K6ZEs5qy30xirGZ+cZnZ7L2meKLBXkFnTzwG+5+0Ez2wQ8a2aPuPtLS9Z73N0/kv4SRdamd2SK0mJjS21F1j4z9YbR9VVlWftckVSrttDd/Yy7H0w8HweOAtszXZjIevUOT7GtvpLiosxNm7vUhbHo6keXEK2pD93MOojfX/SpZRbfYGaHzOxhM9u7wvb7zKzLzLoGBwfXXKxIEL0j01kb4ZLU2pi8WlQjXSQ8gQPdzGqAbwO/7u5jSxYfBHa4+5XAl4HvLrcPd7/f3TvdvTMWi623ZpGL6hueoq0xeydEAWorSqmrLNXVohKqQIFuZqXEw/zr7v6dpcvdfczdJxLPDwClZtac1kpFApg6P8/Q5Hlas9xCB2hr1NBFCVeQUS4G/Blw1N3/cIV1tibWw8yuS+x3KJ2FigSRnCArW1eJpmpr0LzoEq4go1xuAj4FvGBmzyfe+12gHcDd9wOfAD5tZvPANHCHa0CuhCB5+X02hywmtTVW8fcvD7C46BRl8YSsSNKqge7uPwUuenS6+33AfekqSmS9LgR6CF0urQ2VnJ9fZHBiNqtDJkWSdKWo5JXekWkqSotorsn+WPDkLxGNdJGwKNAlr/QOT9HaUEXilE5WJUfW6MSohEWBLnmlb2Q6q3O4pGpt0LzoEi4FuuSV3pGpUE6IAlSUFhPbVK6RLhIaBbrkjdGpOcZn5kM5IZrUqml0JUQKdMkbyZZxtq8STdXWUEXfObXQJRwKdMkbp0Icg57U1ljJ6XMzzC8shlaDFC4FuuSNMC8qSmprqGJh0TkzOhNaDVK4FOiSN+JzkZdSW1EaWg3JXyY6MSphUKBL3ghj2tylLlxcpBOjEgIFuuSN3uEp2kPsbgFoqa+gyNRCl3Ao0CUvLC46r49MX7jRRFhKi4toqau8MOujSDYp0CUv9I/PcH5hMfQWOiTHoquFLtmnQJe8cGoovFkWl2pr1LzoEg4FuuSF3kQXRxRa6G0NVfSPzTIztxB2KVJgFOiSF04NT2EG2+rD7UOHN++W9Po59aNLdgW5BV2bmT1qZkfN7IiZfW6ZdczM7jWzbjM7bGbXZKZckeX1DU+xra6SspLw2yjtTZp1UcIR5BZ088BvuftBM9sEPGtmj7j7SynrfAjYnXi8C/hK4l+RrDg1PBXKfUSXk+z2UaBLtq3anHH3M+5+MPF8HDgKbF+y2u3Agx73JFBvZi1pr1ZkBWFOm7vU5k3llJcU0TOkQJfsWtPfp2bWAVwNPLVk0XagN+V1H28Nfcxsn5l1mVnX4ODg2ioVWcHM3AL9Y7OROCEKYGa0N1bRoxa6ZFngQDezGuDbwK+7+9jSxcts4m95w/1+d+90985YLLa2SkVWkLyIJ8xpc5fa0VR1YSilSLYECnQzKyUe5l939+8ss0of0JbyuhU4vfHyRFaXHPMdlRY6QHtjNaeGp3B/S7tGJGOCjHIx4M+Ao+7+hyus9hBwV2K0y/XAqLufSWOdIiu6MG1uBC4qStrRVMX03AKDE7NhlyIFJMgol5uATwEvmNnzifd+F2gHcPf9wAHgNqAbmALuTn+pIsvrHZ6ivKSI2KbysEu5IPnXwqmhKTZvqgi5GikUqwa6u/+U5fvIU9dx4DPpKkpkLU4Nx0e4xP+YjIbkWPSeoSk6OxpDrkYKRfhXYYhsUO/wdKT6zyF+tajZm7fFE8kGBbrkNHend3iKtohcVJRUXlLMtrpKBbpklQJdctro9Bzjs/ORuagoVVtjJT1Dk2GXIQVEgS45LXk1ZtS6XAB2NFZzSreikyxSoEtOO5loAe9srg65krdqb6ri7MQsk7PzYZciBUKBLjntxNlJzIhkl8uFoYvqR5csUaBLTusZik+bW1FaHHYpb7EjZeiiSDYo0CWnnTg7SUdz9FrnEO9DB02jK9mjQJecdnJokh1N0es/B6irKqWuspSeYY10kexQoEvOOjd1nnNTc+yMaKBDvB9dXS6SLQp0yVknE0HZEcERLkntTVXqcpGsUaBLzjp5Nt6V0dEUzT50gB2NVfSNTDO/sBh2KVIAFOiSs6I8ZDFpR1MV84vOmdGZsEuRAqBAl5zVMzQZ2SGLSclfNupHl2xQoEvOOjE0Fdkhi0nJK1hPaE4XyYIgdyz6qpkNmNmLKyy/2cxGzez5xOPz6S9T5K1Onp2kI8IjXAC21lZQVVbM8cGJsEuRAhDkjkV/DtwHPHiRdR5394+kpSKRAEYmzzM6PRfJOVxSmRk7m6s5PqgWumTeqi10d/8JMJyFWkQCS07KFdWLilJdEqvhNbXQJQvS1Yd+g5kdMrOHzWzvSiuZ2T4z6zKzrsHBwTR9tBSiN2dZjHYfOsCuWDWvn5tmZm4h7FIkz6Uj0A8CO9z9SuDLwHdXWtHd73f3TnfvjMViafhoKVQnzk5Ffshi0q5YDe5v/hISyZQNB7q7j7n7ROL5AaDUzJo3XJnIRSSHLJaXRHfIYtIlsXi30GsDCnTJrA0HuplttcTt1s3susQ+hza6X5GLOXl2MvInRJOSdWqki2TaqqNczOwbwM1As5n1AV8ASgHcfT/wCeDTZjYPTAN3uLtnrGIpeO7OibOTfOyqbWGXEkhVWQnb6io4flYtdMmsVQPd3e9cZfl9xIc1imTFuak5xmbmIz8GPdUlmzXSRTJPV4pKzjl+YVKu3An0XYmx6PrjVTJJgS4551j/OAC7t9SEXElwu2I1TMzOMzg+G3YpkscU6JJzjg1MUFFaRFtD9IcsJu1KjHTpVreLZJACXXLOq/3jXLq5hqIiC7uUwC6Jxf+a0BQAkkkKdMk5x/on2L15U9hlrMnW2goqS4sV6JJRCnTJKaPTc7wxNpNT/ecARUXxSbo00kUySYEuOaV7IH5C9LIca6FDfOji8bMKdMkcBbrklGP98UC8bEvuBfqu5mr6RjRJl2SOAl1yyqv98REurQ2VYZeyZrti1ZqkSzJKgS455dhA7o1wSUqOdNEkXZIpCnTJKa/2j+dk/znEA90s/t8gkgkKdMkZo9Nz9I/NsjsH+88BKsuK2dlUzdEzY2GXInlKgS4548IIlxwbspjq8m21HH1DgS6ZoUCXnPFqYoRLrl1UlGpPSy29w9OMzcyFXYrkIQW65IxX+8epLC3OyREuSZe3xH8ZvXxG/eiSfgp0yRnH+idydoRL0uUttQDqR5eMWDXQzeyrZjZgZi+usNzM7F4z6zazw2Z2TfrLFIkPWcy1S/6X2lpbQX1VqQJdMiJIC/3PgVsvsvxDwO7EYx/wlY2XJfKzLoxwyeH+cwAz4/KttQp0yYhVA93dfwIMX2SV24EHPe5JoN7MWtJVoAi8eVOLXB7hkrRnWy2v9I+zsKi7F0l6paMPfTvQm/K6L/HeW5jZPjPrMrOuwcHBNHy0FIoXXx8F3uyDzmWXt9QyM7fICd00WtIsHYG+3BmqZZse7n6/u3e6e2csFkvDR0uhONw3SnNNOS11FWGXsmHJkS7qdpF0S0eg9wFtKa9bgdNp2K/IBYf6znFlax1muTvCJenSzTWUFBkvKdAlzdIR6A8BdyVGu1wPjLr7mTTsVwSA8Zk5jp+d5IrW+rBLSYvykmIu3VyjFrqkXclqK5jZN4CbgWYz6wO+AJQCuPt+4ABwG9ANTAF3Z6pYKUwvvj6GO1zRVhd2KWlzeUstT7x2NuwyJM+sGujufucqyx34TNoqElnicN85AK7MkxY6xKcA+OvnXmd48jyN1WVhlyN5QleKSuQd7hultaEyr4JPV4xKJijQJfIO9Z3jitb86W6BN0e6HDk9GnIlkk8U6BJpQxOz9I1M580J0aSmmnLaGis52HMu7FIkjyjQJdJeSFxQlG8tdIBrdzTS1TNC/DSUyMYp0CXSDveNYgbv2J5/gd7Z0cjZiVl6hqbCLkXyhAJdIu1w3zl2NVezqaI07FLS7tqOBgCeOXmxqZJEglOgS2S5O4f6RvNquGKqS2I11FeV0nVyJOxSJE8o0CWy3hibYXB8lnfkYf85QFGR8c72Bp7pUQtd0kOBLpF1qDc+AiTfRrik6uxo5PjgJEMTs2GXInlAgS6R9Y+vDVFZWszbt+f+lLkrSfajd/Wo20U2ToEukfV491netauR8pLisEvJmHe01lFWUkSXToxKGijQJZJOn5vm+OAk7760OexSMqq8pJgrW+t4RidGJQ0U6BJJPz0Wn4nw3bvzO9Ah3o/+4uujTJ9fCLsUyXEKdImkx7vPEttUztu25PZNoYO4tqOB+UXnUJ+mAZCNUaBL5CwuOk90n+XdlzbnxR2KVvPO9kYAnj6hfnTZGAW6RM7RN8YYmjyf9/3nSXVVpVzRWsejrwyEXYrkuECBbma3mtkrZtZtZr+zzPKbzWzUzJ5PPD6f/lKlUBRS/3nSLXu28NypcwyMzYRdiuSwVQPdzIqBPwE+BOwB7jSzPcus+ri7X5V4/Kc01ykF5KfdZ7lsSw1baivCLiVrbtm7FYBHjvaHXInksiAt9OuAbnc/7u7ngW8Ct2e2LClUM3MLPH1imJsKpLslaffmGjqaqvjhEQW6rF+QQN8O9Ka87ku8t9QNZnbIzB42s73L7cjM9plZl5l1DQ4OrqNcyXfP9owwO7/IewqouwXAzLhl71aeeO0s4zNzYZcjOSpIoC83zGDpjPwHgR3ufiXwZeC7y+3I3e93905374zFYmurVArCD468QXlJEe/a2RR2KVl3y54tzC04j72ixo6sT5BA7wPaUl63AqdTV3D3MXefSDw/AJSaWWE1sWTDZucXeOjQaW7Zu5Xq8pKwy8m6q9sbaK4p44cvqdtF1idIoD8D7DaznWZWBtwBPJS6gplttcSAYTO7LrHfoXQXK/nt0ZcHOTc1x8evWa5HL/8VFxkfuHwLj748wOy8rhqVtVs10N19Hvgs8APgKPAtdz9iZveY2T2J1T4BvGhmh4B7gTtcN0qUNfr2wT5im8oLZvz5cm7Zu4WJ2XmePK6LjGTtAv1dm+hGObDkvf0pz+8D7ktvaVJIhifP8+jLA9x9UwclxYV7vduNlzRTVVbMgcNneO9lOs8ka1O4PzkSKX9z6DTzi87H39kadimhqigt5mNXbuN7h15nZPJ82OVIjlGgSyR8+2Afe1pq+bmt+Xszi6DuvmknM3OL/OXTp8IuRXKMAl1Cd6x/nMN9o/xCgZ4MXeptWzfxnt3NPPiPJ5lbWAy7HMkhCnQJ3dee7KG4yLj9KgV60r+8aSf9Y7MceOFM2KVIDlGgS6h6h6f4y6dP8c87W4ltKg+7nMh472UxdsWq+epPT6ABYxKUAl1C9Ud/9ypFZvzbf7I77FIipajIuPumnRzqG+XgKd2eToJRoEtoXnljnL9+7nV+6cYOWuoqwy4ncj5+zXbqKku570fdaqVLIAp0Cc0f/PAVaspK+PR7Lwm7lEiqKivhs++7lEdfGeT/qS9dAlCgSyie7RnhkZf6+dX37qKhuizsciLr7ps6uKK1ji9874jGpcuqFOiSdeMzc/z2/z1EbFM5d9+0M+xyIq2kuIj//vErGJ2e4z9//6Wwy5GIU6BLVi0uOr/xV4foGZriy3deXZCzKq7V5S21fPrmS/jOc6/zmO47KhehQJesuvdHx/i7o/383ocv5/pdhTfn+Xp99v2XcunmGn7jr57n6JmxsMuRiFKgS9YceOEMX/q7Y/zCNdv55Rs7wi4np5SXFPPAXZ2UlxTziw88pVCXZSnQJeMWF50v//0xPvOXB7mqrZ7/+s/eQWL6fFmDjuZqvrnvesqKixTqsiwFumTU2Mwcv/q1Z/kfj7zKx67cxjf+9fVUlBaHXVbOSg31j3/lCf70J8eZ13wvkqBAl4wYn5lj/49f4/1/8GN+9PIAX/joHr70yauoLFOYb1RHczXf+bUbuWFXE79/4Cgfve8feOr4kC4+EizIQWBmtwJ/DBQDD7j7f1uy3BLLbwOmgF9294MX22dnZ6d3dXWtt26JoJm5BbpOjvDYKwN8q6uXsZl53rO7md/84GVc3d4Qdnl5x935wZF+vvg3RzgzOsOuWDUfv6aVj1zRQntjlbq18pSZPevuncsuWy3QzawYeBX4IPEbRj8D3OnuL6Wscxvwb4gH+ruAP3b3d11svwr03OLuzC040+cXGJk6z/DUeYYnztMzPMXxwQleG5zguVPnmJ1fpKy4iPf9XIxfu/lSrmyrD7v0vDc5O8/3D5/m2wdf5+kT8VvXNdeU8Y7tdezdVsf2hkpa6irYUltBbWUpmypKqCkroahIgZ+LLhboQQYBXwd0u/vxxM6+CdwOpF7lcDvwYOI+ok+aWb2Ztbh72q9X/vGrg/wXXWCxoiB/dLv7m+t5fJvke4vuLC7G/51bcOYXF5lfcKbnFlhYXH7vdZWl7IpVc+d17fz8Zc1cv6uJqjKNL8+W6vISPnltO5+8tp3e4Skee2WAQ32jvNA3yo9fHWSF/22UFRdRVhJ/lBQZxYlHkRlmxP9NrmyQGv8rtf71KyKYT17bxr96z6607zfIT912oDfldR/xVvhq62wHfibQzWwfsA+gvb19rbUCUFNewu4tNevatlBYkB+rlB9QS/zgmkGxGWZGkcWvUiwtNkqKiqgsK6KytJiK0mLqq8poqi6jsbqM1oZKGqvL9Od9RLQ1VvGpGzr4VOL13MIiA+OznDk3Tf/YLOMzc4zPzDM+O8/5+UVm5xc4P7/IojvzC87CYsov9sQvgp9pAMCKrQYP1JwQgOaazEwVHSTQl/tJXfp/Lsg6uPv9wP0Q73IJ8Nlv8c4dDbxzxzvXs6lIwSktLmJ7fSXb6zWbZSEIMsqlD2hLed0KnF7HOiIikkFBAv0ZYLeZ7TSzMuAO4KEl6zwE3GVx1wOjmeg/FxGRla3a5eLu82b2WeAHxIctftXdj5jZPYnl+4EDxEe4dBMftnh35koWEZHlBBqK4O4HiId26nv7U5478Jn0liYiImuhK0VFRPKEAl1EJE8o0EVE8oQCXUQkTwSanCsjH2w2CPSsY9Nm4Gyay0kH1bV2Ua1Nda1NVOuC6Na2kbp2uHtsuQWhBfp6mVnXShPThEl1rV1Ua1NdaxPVuiC6tWWqLnW5iHCjT5QAAAPWSURBVIjkCQW6iEieyMVAvz/sAlagutYuqrWprrWJal0Q3doyUlfO9aGLiMjycrGFLiIiy1Cgi4jkicgEupndamavmFm3mf3OMsvNzO5NLD9sZtcE3TYLtf1ioqbDZvaEmV2Zsuykmb1gZs+bWVpvohqgrpvNbDTx2c+b2eeDbpvhun47paYXzWzBzBoTyzL5fX3VzAbM7MUVlodyjAWoK6zja7W6wjq+VqsrrOOrzcweNbOjZnbEzD63zDqZPcbcPfQH8Wl5XwN2AWXAIWDPknVuAx4mfnek64Gngm6bhdpuBBoSzz+UrC3x+iTQHNJ3djPw/fVsm8m6lqz/UeBHmf6+Evv+eeAa4MUVlod1jK1WV9aPr4B1Zf34ClJXiMdXC3BN4vkm4NVs51hUWugXbkTt7ueB5I2oU124EbW7PwnUm1lLwG0zWpu7P+HuI4mXTxK/Y1OmbeS/O5Pf2Vr3fSfwjTR99kW5+0+A4YusEsoxtlpdIR1fQb6vlYT6fS2RzePrjLsfTDwfB44Sv7dyqoweY1EJ9JVuMh1knSDbZrq2VL9C/DdwkgM/NLNnLX6T7GzXdYOZHTKzh81s7xq3zWRdmFkVcCvw7ZS3M/V9BRHWMbYW2Tq+gsr28RVYmMeXmXUAVwNPLVmU0WMs0A0usmAjN6IOdIPqDQi8fzN7H/EfuHenvH2Tu582s83AI2b2cqKFkY26DhKf92HCzG4DvgvsDrhtJutK+ijwD+6e2trK1PcVRFjHWCBZPr6CCOP4WotQji8zqyH+S+TX3X1s6eJlNknbMRaVFvpGbkSd6RtUB9q/mV0BPADc7u5Dyffd/XTi3wHgr4n/aZWVutx9zN0nEs8PAKVm1hxk20zWleIOlvw5nMHvK4iwjrFVhXB8rSqk42stsn58mVkp8TD/urt/Z5lVMnuMZeLkwDpOJpQAx4GdvHlCYO+SdT7Mz55MeDrotlmorZ34/VRvXPJ+NbAp5fkTwK1ZrGsrb148dh1wKvH9Zew7C7pvoI54P2h1Nr6vlM/oYOWTfKEcYwHqyvrxFbCurB9fQeoK6/hK/Lc/CHzpIutk9BhL2xechi/jNuJnhV8D/mPivXuAe1K+rD9JLH8B6LzYtlmu7QFgBHg+8ehKvL8r8T/mEHAk3bUFqOuzic89RPxk2o0X2zZbdSVe/zLwzSXbZfr7+gZwBpgj3iL6lSgcYwHqCuv4Wq2usI6vi9YV4vH1buLdJIdT/l/dls1jTJf+i4jkiaj0oYuIyAYp0EVE8oQCXUQkTyjQRUTyhAJdRCRPKNBFRPKEAl1EJE/8fxCUzwKhHzoMAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0.01, 2, num=100)\n", + "\n", + "base = stats.norm(1, 0.1)\n", + "\n", + "plt.plot(x, base.pdf(x))\n", + "\n", + "np.trapz(base.pdf(x), x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Transformation\n", + "\n", + "As we apply $f(x) = y = x^2$ we see that the result of the transformation doesn't suffice the requirements of a probability distribution, as $\\int P(y)dy \\neq 1$" + ] + }, + { + "cell_type": "code", + "execution_count": 222, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5.641895835477563" + ] + }, + "execution_count": 222, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def f(x):\n", + " return x**2\n", + "\n", + "transformed = f(base.pdf(x))\n", + "plt.plot(f(x), transformed)\n", + "\n", + "np.trapz(transformed, f(x))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Change of variables\n", + "\n", + "We want to transform $P(x)$ to $P(y)$ with $f: \\mathbb{R}^n \\mapsto \\mathbb{R}^n $ and $f(x) = y$\n", + "The transformation blows up or shrinks the area/ volume (in N-D) of the distribution, so we need to determine a transformation so that:\n", + "\n", + "\n", + "$$ \n", + "\\begin{eqnarray}\n", + "\\int P(x)dx &=&\\int P(y)dy = 1 \\\\\n", + "P(x)dx &=&P(y)dy \\\\\n", + "P(y) &=&P(x)\\frac{dx}{dy}\n", + "\\end{eqnarray} $$\n", + "\n", + "So to keep an integral of 1 for $P(y)$ (the definition of a probability distribution), we need to multiply $P(x)$ with its derivative w.r.t. $y$.\n", + "Therefore we need to express $x$ in $y$. This can be done if we only have invertible transformations.\n", + "\n", + "$$\\begin{eqnarray}\n", + "f(x) &=& y \\\\\n", + "f^{-1}(y) &=& x\n", + "\\end{eqnarray} $$\n", + "\n", + "$$\\begin{eqnarray}\n", + " P(y) &=& P(x)\\frac{\\text{d}f^{-1}(y)}{\\text{d}y} \\\\\n", + " &=& P(x)f'^{-1}(y) \\\\\n", + " &=& P(f^{-1}(y))f'^{-1}(y)\n", + "\\end{eqnarray} $$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 223, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9987379589284238" + ] + }, + "execution_count": 223, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD4CAYAAAAEhuazAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3xc9ZXw/8+ZUS+WbEmWi2zJvYArxsYQiiEQTIkhIU9MEpJNsnFgCSRP2gaSJU/Kbspv8zyEkOA4CbBsKMkGAoYYQi8BbGMbV1xwkWzZMlazqlXn/P64M7Ysq4ykO/28X69BM3PbQb46853vPff7FVXFGGNMYvFEOgBjjDHhZ8nfGGMSkCV/Y4xJQJb8jTEmAVnyN8aYBJQUqQPn5+drSUlJpA5vjDExaePGjVWqWjDU/UQs+ZeUlLBhw4ZIHd4YY2KSiJS5sR/r9jHGmARkyd8YYxKQJX9jjElAlvyNMSYBBZ38RcQrIu+KyDM9LBMRuUdE9orIVhGZ726Yxhhj3DSQlv9XgZ29LFsKTPE/VgD3DTEuY4wxIRRU8heRIuBq4Pe9rLIMeEgda4FcERntUozGGGNcFmzL/27g24Cvl+VjgUNdXpf73zuNiKwQkQ0isqGysnJAgRoTDqu3HGH74bpIh2FMyPWb/EXkGuCYqm7sa7Ue3jtjogBVXaWqC1R1QUHBkG9QM8ZVb+6t4vZH3+Xae//BHU9spbqxNdIhGRMywbT8LwA+KiKlwGPApSLyx27rlAPjurwuAo64EqExYdDpU370zHuMzU3nCxdM4H82lLPkP1/liU3lkQ7NmJDoN/mr6h2qWqSqJcBy4GVV/Uy31VYDn/VX/ZwH1KlqhfvhGhMaf3rnELuONnDnVTP4t2tm8tzXLmTSyCzueGIbja0dkQ7PGNcNus5fRG4WkZv9L9cA+4G9wO+Af3EhNmPCor6lnV88v5tzS4Zz1axRAEwemc13r5pBa4ePF947GuEIjXHfgAZ2U9VXgVf9z1d2eV+BW90MzJhw+fUre6lpbuPBaxYicury1fzxwxmbm85Tm49w/byiCEZojPvsDl+T0A7VNPPAP0r5+PwiZhXlnLbM4xGunTOGN96vsou/Ju5Y8jcJbfWWI7R1+vjGFVN7XL5s7hg6fcqa7db1Y+KLJX+T0N7eV830UdmMzknvcfn0UdlMGZnF05uteM3EF0v+JmG1dnTyTmkN50/K73UdEWHZ3DGsL63hyPETYYzOmNCy5G8S1rsHj9Pa4eP8SXl9rnftnDEAPL3FWv8mfljyNwnrrX3VeAQWThzR53rFeZnMHZfLakv+Jo5Y8jcJa+2+amaNzWFYWnK/6350zhh2HKlnf2VjGCIzJvQs+ZuE1NzWwbuHalncR39/V5dMc8aieqe0JpRhGRM2lvxNQtpQWkt7p/bb3x9QkpdJdloSW8ptxE8THyz5m4T01r5qkr3CgpLhQa3v8QhzinLZWn48xJEZEx6W/E1Cent/NXPH5ZKREvwIJ7OLcthV0UBLe2cIIzMmPCz5m4RT39LOtvLjQff3B8wuyqXDp7xXUR+iyIwJH0v+JuGs31+DTwm6vz9g7rhcALYesq4fE/ss+ZuE89a+alKTPMwbnzug7UblpDEyO5WtdtHXxAFL/ibhbDpYy9xxuaQmeQe87eyiXDbbRV8TByz5m4Ti8ym7jzYwc8ywQW0/d1wO+yubqG9pdzkyY8IrmAnc00RkvYhsEZEdIvKDHta5RETqRGSz/3FXaMI1ZmgO1jRzor2TGaMGl/xnFzldRdut68fEuGDq3FqBS1W1UUSSgX+IyLOqurbbem+o6jXuh2iMe3YddSp1po/OHtT2s/0Tvmwpr+P8yQOrFjImmvSb/P1TNAYGNEn2PzSUQRkTKjsrGvAITBk5uOSfm5FCSV4GW6zix8S4oPr8RcQrIpuBY8ALqrquh9UW+7uGnhWRs3rZzwoR2SAiGyorK4cQtjGDs+toPSX5maSnDPxib8Bsu9PXxIGgkr+qdqrqXKAIWCgiZ3dbZRNQrKpzgF8BT/ayn1WqukBVFxQUFAwlbmMGZffRBqaPGlyrP2B2UQ5H6lo41tDiUlTGhN+Aqn1U9TjwKnBlt/frVbXR/3wNkCwi1iFqokpTawdlNc1MH+TF3oA5J2/2sou+JnYFU+1TICK5/ufpwIeBXd3WGSUi4n++0L/favfDNWbw9nzQgCpDbvmfNWYYXo9Y14+JacFU+4wG/ktEvDhJ/c+q+oyI3AygqiuBG4BbRKQDOAEs918oNiZq7DraAMCM0UNr+WekJDExP5Od/v0ZE4uCqfbZCszr4f2VXZ7fC9zrbmjGuGtXRT1ZqUmMzU0f8r4mj8xityV/E8PsDl+TMHYebWDaqGw8HhnyviaPzKKsppm2Dp8LkRkTfpb8TUJQVXZV1A+5vz9g8sgsOn1KaXWTK/szJtws+ZuEUFHXQn1Lh2vJf1JBFgDvf2ATupvYZMnfJIRA//z0IV7sDZhUkIUI7D1myd/EJkv+JiHs9I/pM82lln96ipei4ensrbTkb2KTJX+TEHZVNDA2N51hacmu7XNyQZa1/E3MsuRvEsKuo/XMGORInr2ZPDKLfZWNdPrslhYTeyz5m7jX2tHJvsqmIQ/r0N3kkVm0dfgor212db/GhIMlfxP3Squa6fQpUwqzXN3vZP+w0Nb1Y2KRJX8T9w5UOcl5Yr7byd/ZnyV/E4ss+Zu4t7/KuRGrJD/D1f3mpCdTkJ3K+5b8TQyy5G/i3oHKJkZmp5LtYqVPgFX8mFhlyd/Evf1VTUzIzwzJviePzGLfsUZsEFsTayz5m7h3oKqJiQWhSf5TCrNoaO3gWENrSPZvTKhY8jdx7XhzGzVNba5f7A2YbGP8mBhlyd/EtcDF3lB2+wDsPWZj+5vYEsw0jmkisl5EtojIDhH5QQ/riIjcIyJ7RWSriMwPTbjGDMyBSn/yD1G3T0F2KtlpSTbGj4k5wUzj2ApcqqqNIpIM/ENEnlXVtV3WWQpM8T8WAff5fxoTUQeqmvB6hHHD3S3zDBARJo+0ih8Te/pt+asjcGYn+x/dSxuWAQ/5110L5IrIaHdDNWbg9lc1Mn5EBilJoevhnGLJ38SgoP4iRMQrIpuBY8ALqrqu2ypjgUNdXpf73+u+nxUiskFENlRWVg42ZmOCtr8ydGWeARMLsqhqbKO+pT2kxzHGTUElf1XtVNW5QBGwUETO7rZKT5OinlH4rKqrVHWBqi4oKCgYeLTGDIDPP81iqJN/SZ7TpVRWZQO8mdgxoO/CqnoceBW4stuicmBcl9dFwJEhRWbMEFXUt9DS7gtZjX9Aif/D5YDN52tiSDDVPgUikut/ng58GNjVbbXVwGf9VT/nAXWqWuF6tMYMwMlKnxC3/ItHOPsvq7Lkb2JHMNU+o4H/EhEvzofFn1X1GRG5GUBVVwJrgKuAvUAz8PkQxWtM0EI1mmd36SleRg1Ls5a/iSn9Jn9V3QrM6+H9lV2eK3Cru6EZMzT7KpvISPFSOCw15Mcqyc+g1Fr+JobYHb4mbh3wD+gm0lM9grsm5GdSVm0XfE3ssORv4taBEI7m2V1xXibVTVbuaWKHJX8Tl1o7OimvbWZimJJ/SV7goq+1/k1ssORv4tLB6mZ8GroxfboLzBJmF31NrLDkb+JSYDTPUFf6BATKPe2ir4kVlvxNXDpwct7e8LT801O8jM5Jo9Ra/iZGWPI3camsuokRmSnkpLs/b29vivOs3NPEDkv+Ji6VVjVTnBeaYZx7MyE/k1Ir9zQxwpK/iUtl1U0nK3DCpSQvk5qmNupOWLmniX6W/E3caWnv5EhdS9hb/sWBck/r9zcxwJK/iTuHapyul3C3/AM3lFnXj4kFlvxN3AkMsxD+lr9zPLvoa2KBJX8TdwLlluFu+acl+8s9LfmbGGDJ38SdsupmhqUlkZsRvjLPgJK8TKv1NzHBkr+JO6XVTZSEaTTP7kqs3NPECEv+Ju6UVTefrLwJt5K8DCv3NDEhmGkcx4nIKyKyU0R2iMhXe1jnEhGpE5HN/sddoQnXmL61dfgor20+Oal6uAWGk7ByTxPtgpnGsQP4hqpuEpFsYKOIvKCq73Vb7w1Vvcb9EI0J3uHjJ/ApjB8RoeTv/8ZxoKqJ2UW5EYnBmGD02/JX1QpV3eR/3gDsBMaGOjBjBuNkpU+YBnTrLlDuedD6/U2UG1Cfv4iU4Mznu66HxYtFZIuIPCsiZ/Wy/QoR2SAiGyorKwccrDH9ORihGv+Ak+WelvxNlAs6+YtIFvA48DVVre+2eBNQrKpzgF8BT/a0D1VdpaoLVHVBQUHBYGM2plel1c6k7QVZoZ+0vTfFeRnW52+iXlDJX0SScRL/w6r6RPflqlqvqo3+52uAZBHJdzVSY4IQqPSJRJlngFPrby1/E92CqfYR4A/ATlX9v72sM8q/HiKy0L/fajcDNSYYpdVNEav0CRifl0FVYyuNrR0RjcOYvgRT7XMBcBOwTUQ2+9+7ExgPoKorgRuAW0SkAzgBLFdVDUG8xvSq06ccqmnmipmjIhpHSZfRPc8akxPRWIzpTb/JX1X/AfT5HVpV7wXudSsoYwbjyPETtHdqxFv+gYvNZdXNlvxN1LI7fE3cODWaZ2TKPAMCx7cxfkw0s+Rv4sapGv/ItvyzUpPIz0qlrMou+proZcnfxI2DNc2kJnkozE6LdCiU5GVYy99ENUv+Jm6UVjVRnJeBxxO5Ms+A4rzMk91QxkQjS/4mbpRWNzF+RGT7+wNK8jI4Wt/CibbOSIdiTI8s+Zu44PMpZdXNTIhwf39AsX9soYM11vo30cmSv4kLR+tbaO3wRbzSJyBQbmr9/iZaWfI3cSGQZCdEaDTP7or93U82uqeJVpb8TVwo9ZdVRmoo5+5yMpIZnpFsLX8TtSz5m7hQWt1ESpKH0cMiX+YZYBU/JppZ8jdxobSqieIR0VHmGWC1/iaaWfI3caG0uilqLvYGFOdlcuT4CVo7rNzTRB9L/ibmRVuZZ0BJfgY+hfLaE5EOxZgzWPI3MS9Q5hktF3sDirsM7WxMtLHkb2JeaZV/QLdo6/YZ4a/1twHeTBSy5G9iXmDKxGhr+Y/ITCE7Ncla/iYqBTON4zgReUVEdorIDhH5ag/riIjcIyJ7RWSriMwPTbjGnCkayzwBRITi/AwOWLmniULBtPw7gG+o6gzgPOBWEZnZbZ2lwBT/YwVwn6tRGtOHA1FY5hkwIT/rZLeUMdEkmGkcK4AK//MGEdkJjAXe67LaMuAh/7y9a0UkV0RG+7c1JqTKqpsG3+XT2QHl62HPc/D+i5CcDlOugKlXwKg54Blaz+iE/Ez+tvUIrR2dpCZ5h7QvY9wUzATuJ4lICTAPWNdt0VjgUJfX5f73Tkv+IrIC55sB48ePH1ikxvQgUOZ58dSC4Dc6UQt7X4I9f4e9LzivPclQfD60NcGrP4FX/wOyCmHy5TDlcpi0BNIGPh/vxPxMfAqHapqZPDJ7wNsbEypBJ38RyQIeB76mqvXdF/ewiZ7xhuoqYBXAggULzlhuzEBVDKTMUxVe+xm8/v+BrwMy8mDqUpj6EZh0KaQNc9ZrqoK9L8L7z8Oup2HzH8GTBBd9Gy761oC+DQQGmttX2WTJ30SVoJK/iCTjJP6HVfWJHlYpB8Z1eV0EHBl6eMb0rczfnz6hvzLPjjZ4+nbY8ijM+gQsXAFjzwFPD10xmfkwZ7nz6OyA8nfgnd873waO7YDr7oOU4LqZAh9KB6zf30SZfpO/iAjwB2Cnqv7fXlZbDXxFRB4DFgF11t9vwuGAv4yyuK+Wf0sd/OkmOPAaLPkeXPRNkCAvDnuToHgxjD8PxsyDF/4NavbD8kchd1y/m+ekJ5OflcKBSkv+JroE0/K/ALgJ2CYim/3v3QmMB1DVlcAa4CpgL9AMfN79UI05U2lVP2WedeXw8Cegag9ctxLm3ji4A4nA+V+Bgmnwly/A75bAJ//ofCj0Y0J+prX8TdQJptrnH/Tcp991HQVudSsoY4JVWt3ce5nn0W1O4m9rgs88DhMvGfoBp1wO//wSPLocHrwGrr0b5n2mz00m5Gfy8q7KoR/bGBfZHb4mppVW9VLmufcluH8piAe+8Jw7iT+gYCp86SUouQCeuhWeuxN8vY/cOSE/i6rGVupb2t2LwZghsuRvYpbPp5TVNJ85deMHO+DRG2F4Mfzzi1B4lvsHTx8On34cFt0Ma38Nz3+v11UD8dnNXiaaDKjO35hoUlHfQluHj+K8LkM5tzU7ffLpuXDTk5A1gPr/gfImwdKfOc/X/gZGz3EqhLqZWHCq4md2UW7o4jFmAKzlb2JWoILmtJb/3++Eyt3wsVWhTfxdXfFjKLkQVt8OhzedsXj8iAxEYL9V/JgoYsnfxKy9xxoAmDwyy3njvadg4wPwoa+528ffH28yfOJByBoJf/oMNB47bXFaspexuelW8WOiiiV/E7P2VTaRnZZEQVYqHD8Iq29zbtxa8t3wB5OZD8sfhuYa+PPnoPP0i7tW7mmijSV/E7P2VTYyqSAL8XXC418Cnw8+/genJR4Jo+fAR38FB9+C575z2qKJ/uTvVEUbE3mW/E3MCiR/Xv85HFrr1NyPmBDZoGZ/As6/zRkOYuN/nXx7Qn4mja0dVDa2RjA4Y06x5G9iUkNLOx/Ut3Jhyi5noLa5n4ZZN0Q6LMdl/wcmLoE134RD6wGYUOBcl7BhHky0sORvYtL+yiZyaOQju++C4RNg6c8jHdIp3iS44X4YNsYZU6jhKBNtgDcTZSz5m5i091gj30j6H9JaKuGGP0BqVqRDOl3GCFj+iDOo3NNfY0xOGilejyV/EzUs+ZuYVFe2hU97X8S34AvOaJvRqPAsuPR7sOdZvDv+QnFeBvst+ZsoYcnfxB5Vznv/P2mSTLxL7ox0NH077xYoWgjPfps5ua3W8jdRw5K/iT27n2XmiU2syfuc070SzTxeWPZraGvmnxt+TVl1Ix2dvkhHZYwlfxNjOtrQ57/LXh3LoUmfinQ0wSmYCkvuYHrtq1yhazlUeyLSERnTf/IXkftF5JiIbO9l+SUiUicim/2Pu9wP0xi/9b9Favbzo/bPMKEwhgZJW3wbTflz+GHyAxw4WBbpaIwJquX/IHBlP+u8oapz/Y8fDj0sY3rQWAmv/ZzK0Rfzmm8OkwqCm0c3KniTkOt+TTbNFL1t7SMTef0mf1V9HagJQyzG9O2VH0N7My+O+yoAk0ZGWXlnPzKKZvFg8ieZWvkC7Hw60uGYBOdWn/9iEdkiIs+KSK8zZ4jIChHZICIbKittWjszAEe3waaHYOEKNjblMzI7lWFpERrDZwjWj7mJvd6J8MzXnUHgjIkQN5L/JqBYVecAvwKe7G1FVV2lqgtUdUFBQZjGWjexTxWeuwPScuHib58a0ycGTRo1nK+3fBk9UXPG4G/GhNOQk7+q1qtqo//5GiBZRPKHHJkxAbv+BqVvwJI70bRc9h1rZNLIGOrv72JKYTZbO8dRO/822Pon2P1spEMyCWrIyV9ERomI+J8v9O+zeqj7NQZwJkZ/6YeQPw3O+TxVjW3Ut3TEbMt/aqET9zvjPw8FM2DNt6DNbvwy4RdMqeejwNvANBEpF5EvisjNInKzf5UbgO0isgW4B1iuNmi5ccv2x6FqNyy5A7xJ7KtsBIjZ5B+YdWx3ZRtc8/+g7hC89rMIR2USUb8TuKvqjf0svxe417WIjAno7IBXfwqFZ8OMZQCnkn+MVfoEZKQkMW5EOns+aIDLFsPcz8Dbv4bZy6FwZqTDMwnE7vA10WvrY1Czz5mW0eOcqu9/0Eh6spfRw9IiHNzgTR2ZzfsfOB9iXP5DSM2Gv33dmYnMmDCx5G+iU0eb0x0yZj5MW3ry7Z0V9UwblY3HIxEMbmimFGazv6qR9k4fZOY5HwAH34Ytj0Q6NJNALPmb6PTufzuTsi/5Ljj1BKgqu442MGP0sAgHNzRTC7No71TKqv0Xeud+BsYtguf/zWr/TdhY8jfRp70FXv9PJyFOvuzk2xV1LdSdaGfm6OwIBjd0Uwud+PcEun48Hufib0sdvGBDP5jwsORvos/GB6HhyGmtfnC6fICYb/lPKshCBOeib0DhWbD4X5xvPAfXRi44kzAs+Zvo0tYMb/wCSi6EiReftiiQ/KeNiu2Wf3qKl/EjMk5d9A24+DswrMgZ+qGzPTLBmYRhyd9El3d+D03HnFZ/NzsrGhg3Ip3sGBzTp7spI7NPb/mDMw/x0p/CsR2w9r7IBGYShiV/Ez1aG+DNu2HSpVC8+IzFO4/WM2NUbHf5BEwtzOJAVRNtHd3KO6dfA1OvdO5vqCuPTHAmIVjyN9Fj3W+huRqWfO+MRSfaOimtaor5/v6AqYXZdPiU0upuQzuIwNKfg/rg2X+NTHAmIVjyN9GhpR7e+pXT6i0654zFuz9owKexf7E3YIp/jJ8zun4AhhfDxd+GXc84g9oZEwKW/E10WP9baDkOl/Q8zHHgYu/MOEn+k0dmkeQR3jtS3/MK598GI2c6A7+19vABYcwQWfI3kddSD2/dC1OXwph5Pa6ys6KerNQkioanhzm40EhN8jJtVDbbDtf1vII3Ga65G+oPwys/CW9wJiFY8jeRd7LV33sfdzwM69Dd7KIcth2uo9dBcMcvgnM+D+vugyObwxuciXuW/E1kBdHqV1V2VTQwI8bv7O3u7LE5HG9up7z2RO8rffj7kJEPT3/VmdvAGJdY8jeRta7/Vn957QkaWjvi5mJvwOyxuQC9d/0ApA93av8rNsP634UpMpMILPmbyGmpg7f7bvVD/Azr0N3UUVmkeD1sLe8j+QOc9TGY/GF4+UdQdzg8wZm4F8xMXveLyDER2d7LchGRe0Rkr4hsFZH57odp4tK6VX1W+ATsrGhABKbH+LAO3Z266Hu87xVF4OpfON0+z347PMGZuBdMy/9B4Mo+li8FpvgfKwC7L930L9Dqn3YVjJnb56o7K+opycskI6XfiedizqyiHLaV93HRN2B4idM1ZrX/xiX9Jn9VfR3oa5DxZcBD6lgL5IrIaLcCNHEq0Oq/uP+7WHcerY+7Vn/ArLE51Ld0cLCmuf+VF3/Fav+Na9zo8x8LHOryutz/3hlEZIWIbBCRDZWVlS4c2sSkAbT6a5raKKtuZlZRTpiCC69ZY53/r377/cGp/b/2l/7a//8IcWQm3rmR/HsqvO7xO6yqrlLVBaq6oKCgwIVDm5gUqPAJotX/7sFaAM4ZPzzUUUXE1MJsUpI8bO+r4qercQthwRdg3Uo4vDG0wZm45kbyLwfGdXldBBxxYb8mHjXXOGP4TL+m31Y/wMayWpI8wuyi3DAEF34pSR5mjMoOruUfcNn3IXs0/PVmaO/jHgFj+uBG8l8NfNZf9XMeUKeqFS7s18Sjf/w/p7/60jNH7uzJxrJazhozjPQUb4gDi5xZRTlsP1yHz9fPRd+A9FxYdi9U7YGXfhja4EzcCqbU81HgbWCaiJSLyBdF5GYRudm/yhpgP7AX+B3wLyGL1sS2+iOwfhXMWQ4jZ/S7enunjy3lx5lfHJ9dPgGzx+bS0NpBWTAXfQMmXQrnfgnW/gYOvB664Ezc6rd2TlVv7Ge5Are6FpGJX6/93KlV76euP2BnRT0t7T7OifPkf/bJi77HmZCfGfyGl/8A9r0ET94Kt7wJafF1E5wJLbvD14RH9T5ncvJz/smpWQ/CpjL/xd44T/5TCrNITfKwbSD9/gApmXD9b6G+HP5+R2iCM3HLkr8Jj1f+A7wpcNG3gt5k48HjjMlJY3ROfAzj3Jtkr4eZY4YN7KJvwLiFcMHX4N0/wu5n3Q/OxC1L/ib0jm6D7X+BRTdDdmHQm20qq2VenLf6AxYUD2fzoeO0tA9i5M5L7oDCWbD6dmiqdj84E5cs+ZvQe/nHkJYDF9we9CYVdSc4fPxE3Nb3d3f+pHzaOn0nu7oGJCkFrl8JJ2rhma9Bf0NFGIMlfxNqB9fCnuecron04BP5pjJnsLN47+8POHfCCLwe4a19g2y5jzobltwJO1fDtv9xNzgTlyz5m9BRderQswph0ZcHtOnGslrSkp2+8ESQlZrE7KIc3t4/hG6bC74K4xbBmm/a0M+mX5b8TejsfRHK3nQu8qYMoIQR2HiwltlFuSR7E+cUXTwxjy2HjtPU2jG4HXi8cN190NkOT95iM3+ZPiXOX5YJr442eO47MGISzP/cgDZtae9kx+G6hOnyCTh/Uj4dPuWd0r4G0e1H3iRY+jM48Jrd/Wv6ZMnfhMa6+6B6r5OIklIGtOmWQ8fp8CnzE+Rib8A5xcNJ9gpvD7bfP2D+Z52J39+8G7Y/4U5wJu5Y8jfuq69w7uaduhSmXD7gzV/bU4nXIyycMCIEwUWv9BQv88YPH1q/f8DSn0HRQnjqVvhgx9D3Z+KOJX/jvhfucvqdrxzcmPMv7zrGguLh5KQnuxxY9Fs8MY/th+uoO9E+tB0lpcIn/xtSh8Fjn3JGUzWmC0v+xl1lb8O2P8P5t8GIiQPe/PDxE+w62sBlM0aGILjod/6kPHwK6w+4kKyzRzkfAHWH4fEv2gVgcxpL/sY9vk549lswrAgu/PqgdvHKrmMAXDo9MZP/3PG5pCZ5eGtflTs7HLcQrv5P2PeyXQA2p4m/GbFN5Gx8wBnK4YYHBlzaGfDKrmOMG5HOpIIsl4OLDalJXs4tGTH0i75dnfNPcORd5wLw6Dlw9sfc27eJWdbyN+5ornGGcSi5EM66flC7aGnv5M19VVw2vRCRnmYHTQyLJ+Wx62gDVY2t7u106c/tArA5jSV/446XfwQt9U6SGWTifntfNS3tPpYkaJdPwCXTnPmtn9/xgXs7tQvAppugkr+IXCkiu0Vkr4icMROHiFwiInUistn/uMv9UE3UKnsbNjwAC78EhTMHvZuXdx0jPdnLogQr8exu5uhhTCzI5OktLk+F3fUC8KPLnek0TcIKZhpHL/BrYCkwE7hRRHr6C39DVef6H3ZlKVG01MNfV8Dw4qDn5e2JqvLyrmN8aEo+acnxO19vMESEa2aPYe2Bao7Vt7i783EL4YY/QPkGePgT0Nro7v5NzAim5b8Q2Kuq+1W1DXgMWHEmtyQAABDMSURBVBbasEzMeO47UFcO16+C1OxB72bPB40cPn4iYat8urt29mhUYc22Cvd3PnMZfPz3cGg9PPK/oK3J/WOYqBdM8h8LHOryutz/XneLRWSLiDwrImf1tCMRWSEiG0RkQ2Vl5SDCNVHlvadg88Nw4Tdg/KIh7eplf4nnkmmW/AGmFGYzfVQ2T28NQfIHp+LnY6vg4NvwyCehbQCTx5u4EEzy7+nqXffZIjYBxao6B/gV8GRPO1LVVaq6QFUXFBQUDCxSE13qK+Dpr8KYeXDxvw5pV6rKU5sPM7soh1E5aS4FGPuunTOGjWW1HD5+IjQHmHWD842t7E141D4AEk0wyb8cGNfldRFw2pUoVa1X1Ub/8zVAsojkuxaliS6qTslgewt87HfgHdowDO8eOs6uow188txx/a+cQK6ZPRqAv211+cJvV7M/AdethANvwGM3QnuIPmhM1Akm+b8DTBGRCSKSAiwHVnddQURGib8wW0QW+vdrk4nGq/W/g30vwUd+DPlThry7R9YdJDPFy7K5PfUmJq7ivExmF+Xw9JYQdf0EzPkkXPcb2P8aPGofAImi3+Svqh3AV4C/AzuBP6vqDhG5WURu9q92A7BdRLYA9wDLVW0i0bhUuRte+DeYcgUs+OKQd1fX3M4zW4/w0bljyUq1G867u3b2GLYdrqO0KsQXZed+CpbdC/tfhcc+7XyrM3EtqDp/VV2jqlNVdZKq/rv/vZWqutL//F5VPUtV56jqear6ViiDNhHSXOMkhpRM+Oi9g76Zq6sn3i2npd3HpxeNdyHA+HO1v+vniXfDMC3jvM/AR+9xvtU9cCXUloX+mCZi7A5fE5z2FufO0ONl8Mk/QnbhkHepqjyy7iBzinI4e2yOC0HGnzG56Vw2fSQPvV06+OkdB2L+Z2H5I1C9D1ZdDO+/GPpjmoiw5G/65/PBkzc7ZYHXr4Ti813Z7YayWt4/1sinrNXfp1svnczx5nYeWXcwPAecfjWseBWGjYWHb4BXfuKcAyauWPI3/XvxLtjxV7j8R3D2x13b7SPrDpKdmsS1c8a4ts94NH/8cM6flMeqN/bT0h6mMfnzJsEXX4A5y+G1n8Ijn7DxgOKMJX/Tt3Wr4K1fwblfciZocUl5bTN/21bBdfPGkpFiF3r785Ulk6lsaOUvG8vDd9CUDLjuPrjmbjjwOvz2Iji8MXzHNyFlyd/0btff4Ll/hWlXOXPCujjM8k/W7MIjcMslk1zbZzxbPCmPeeNzWfnaPto7w9gFIwILPg9f+DsgcP+VsOF+514PE9Ms+ZuevfcU/OULzh28H/8DeNwbbO3tfdX8bVsFt1w8mTG56a7tN56JCLdeMpny2hOs3hzCm756M3Y+fPk1mHARPPO/4b+vt3kBYpwlf3M6VXjrXvjz52DUbPjU/zhf/13S6VN+8PQOxuam8+WLBz7HbyK7bMZIpo/K5p6X3+dEWwTm480Y4ZwPV/7MmRls5YecIT4aj4U/FjNklvzNKZ0dsOab8Px3YeZH4XOrITPP1UM8uv4gu4428N2rZyT80M0DJSLcdc1Myqqb+fHf3otMEB4PnHcz3P4uLPwyvPtHuGcevPELuzEsxljyN47WRqeO/53fw/m3ww0PQrK7XTJ1ze384vndLJowgqVnj3J134ni/Mn5fOnCCTy87iAvvufiTF8DlTEClv4U/mUdTLjYmRz+3nNh21/sekCMsORvoGY/PHgV7H0Brv4FXPEjp4XnovZOH7c99i71LR18/9qzEnqO3qH65kemMWP0MP718a1UNrg4z+9g5E+GGx+Bzz0N6Tnw+BfhD5fDnr873yRN1LLkn8g62pyv679ZDNX74cY/wbn/7PphVJXv/XU7r++p5N+vO5uZY4a5foxEkprk5Z7lc2ls7eBbf9lCVAyjNeEiWPEaLPuNM7nPI/8L7p4FL/8YaksjHZ3pgSX/RHVwnXP7/ks/dAZp+8p6mHpFSA5178t7+dOGQ9x26WSWL7S7ed0wpTCb7149g1d3V3LHE9voCGf5Z288Xpj3afjaNmcIkFFnO42LX86Bh5Y5XUJ2XSBq2N01iaaxEl75d9j4AAwrghsfg2lLQ3a4R9cf5Bcv7OFj88by9cunhuw4ieim84qpbGjlVy/vpba5jV8unxcdF9G9yTDjWudRVw6bH4FN/+10CaUPh9nLYdYnYMxcV0uIzcBIpL4yLliwQDds2BCRYyekiq2wbqXT+vK1w6JbYMmdkJoVksM1tXbw/dU7+MvGci6cks8fPncuKUn2RTMUHnjzAD94+j3OmziCVZ9dwLC0oU2uExI+Hxx4FTY9BDufcc7B1BwoucDpMppwERTMcP1aUzwSkY2qumDI+7HkH8c622HPc7D2PmeqvuQMmHMjLLoZCkLXCt9WXsftj71LWXUTX1kymdsvm0KS1/6oQ+mpzYf5xp+3kJ+Vyrc+Mo3r543F44nSi+rNNbDvZWfIiAOvQ+0B5/2MfJhwoVM9VPIhGDHRvhn0wJK/6VndYadq5/0XnJmZ2hogZzws/BLMv8n52h0Cqso7pbXc/48DPP/eUQqHpXH3J+eyaKK79wmY3m06WMsPVu9gS3kds8bm8J2l01k8MS96PwQCjh90ppE88DoceA0a/DOXJaVB3hQomNblMd35UBji1KGxLKzJX0SuBH4JeIHfq+pPuy0X//KrgGbgn1R1U1/7tOTvgqZq+GC7c5v9BzvgyCY45r/5Z1gRTLkcpl4Jkz8MXvcv73R0+th+pN4/XMMRth+uJzcjmRsXjufLF00kNyPF9WOavvl8yuotR/jZc7uoqGth1LA0rpo1mqtmjWJ2UW70d72pOnMJHHwbKnc5M8dV7XY+IAI8STBiEgwvhqxCyB7lPLICPwudR1J8nn9hS/4i4gX2AJfjTOb+DnCjqr7XZZ2rgNtwkv8i4Jequqiv/Vry70IVOtucuVM7WpyfrfXQUnfq0VQJ9Uf8j8POhbSmylP7yCyAUbNg4hIn6RdMH9JAbJ0+5UR7J82tHdQ2t1Pb3EZNUxuHapoprW6mtKqJbYfraPRPMDJj9DBuOq+Y6+eNJT3FvqpH2om2Tp5/7yjPbK3gtd2VtHX6SPYKU0ZmM3PMMCYWZFKYnUbhsDQKslPJSksiK9V5eKPxm0JbE1Ttgco9pz4U6g5B4wfO34H2UO2UPhzSciFtGKQGHtldXmc7j6Q0SEr1/+z6PPAzxfnA8ST7f3r9P5OcbyDicXXQw/6EM/kvBv6Pqn7E//oOAFX9SZd1fgu8qqqP+l/vBi5R1V5nnl4wPlOfXDGJjiiaJCLYfz6h++9MT9teUER9SOA5igcfHnwIipdOvNpJEp146SSJDjxn7PNMDWRS5cmjSvKo9ORz0FPEfm8J+z0lHPec2Z0T+LdV/3+023s+VXw+52d7p9Lh89HZqbR2+Gjro3RwRGYKxXkZzBw9jMWT8lg0IY+C7NR+4zeR0dDSzut7qth2uI73Kup570gdVY1tva6f5BFSkjwke52H1wNeETwewSOCCM7PwAZy2g/neR/J0O006dFOcrWOEVrLCF8NeVpDntYy3FdLpjaTSRMZ2kymNp/8mUkzXtzLPZ146MTj/0vv9hcvgg+PPxMEsgJdXp963jWTnFrm5/+dFn1/tyvJP5i+gLHAoS6vy3Fa9/2tMxY4LfmLyApgBcDZY7M4njmhzyQTCTqAj4Cetgv8Q6l4OPWP7MEnnpMnhIqHTvGnfvHSKUm0SyrtkkK7pNLmSaXFk0mzJ4sT3iyaPVk0eXNo9aR3Ofqp4xf6H32FKTh/kM5P5z2vCCKCRyDJ6yHZK3g9QmqSl/RkL2nJHjJSkxiekczwjBSGZ6RQNCI9OqtJTK+y05K5evbok/MBg1ONdayhlQ/qW6hqbKWptYOGlg4aWzto6/DR1uGjvdNHW6fi8ymd6vw82Wjwn+inNTAC+mjHaBCNnMHJAcZTC9QCe/tbXZUUbSHNd4IkbSPZ/0jynXqerG0nl3nUabB56HSe+xtwHv97Xu1E/GlfNJD2fYgqJ1O/+rqk/S4fARpI+afSf/cG5cnXqsBuV35jwST/nrJh93/BYNZBVVcBq8Dp9jn7fz8VxOGNMW7LTE1iQmoSE/IzIx2KGahvufPdKZirP+XAuC6vi4DuA4oHs44xxpgoEUzyfweYIiITRCQFWA6s7rbOauCz4jgPqOurv98YY0xk9dvto6odIvIV4O84pZ73q+oOEbnZv3wlsAan0mcvTqnn50MXsjHGmKEKqvhbVdfgJPiu763s8lyBW90NzRhjTKhE+R0fxhhjQsGSvzHGJCBL/sYYk4As+RtjTAKK2KieItKAW7eqhVY+UBXpIIJgcborFuKMhRjB4nTbNFXNHupOIjmT1243xqcINRHZYHG6x+J0TyzECBan20TElRExrdvHGGMSkCV/Y4xJQJFM/qsieOyBsDjdZXG6JxZiBIvTba7EGbELvsYYYyLHun2MMSYBWfI3xpgEFJLkLyJXishuEdkrIt/pYbmIyD3+5VtFZH6w24Yxxk/7Y9sqIm+JyJwuy0pFZJuIbHar7GoIcV4iInX+WDaLyF3BbhvmOL/VJcbtItIpIiP8y8L5+7xfRI6JyPZelkfDudlfjNFybvYXZ7Scm/3FGS3n5jgReUVEdorIDhH5ag/ruHd+qqqrD5xhn/cBE4EUYAsws9s6VwHP4swAdh6wLthtwxjj+cBw//OlgRj9r0uBfLfjGmSclwDPDGbbcMbZbf1rgZfD/fv0H+siYD6wvZflET03g4wx4udmkHFG/NwMJs4oOjdHA/P9z7OBPaHMnaFo+S8E9qrqflVtAx4DlnVbZxnwkDrWArkiMjrIbcMSo6q+paq1/pdrcWYnC7eh/D7C9bsczLFuBB4NUSx9UtXXgZo+Von0udlvjFFybgbzu+xNOM/NgcYZyXOzQlU3+Z83ADtx5kLvyrXzMxTJv7fJ3INZJ5htwxVjV1/E+bQNUOB5EdkozqT0oRJsnItFZIuIPCsiZw1wWzcEfSwRyQCuBB7v8na4fp/BiPS5OVCROjeDFelzM2jRdG6KSAkwD1jXbZFr52cohncYyoTvQU0E74KgjyMiS3D+wD7U5e0LVPWIiIwEXhCRXf7WRSTi3AQUq2qjiFwFPAlMCXJbtwzkWNcCb6pq15ZYuH6fwYj0uRm0CJ+bwYiGc3MgouLcFJEsnA+gr6lqfffFPWwyqPMzFC3/oUz4Hq6J4IM6jojMBn4PLFPV6sD7qnrE//MY8Fecr1yh0G+cqlqvqo3+52uAZBHJD2bbcMbZxXK6fa0O4+8zGJE+N4MSBedmv6Lk3ByIiJ+bIpKMk/gfVtUneljFvfMzBBctkoD9wAROXXg4q9s6V3P6RYv1wW4bxhjH48xJfH639zOB7C7P3wKudDvGAcQ5ilM36y0EDvp/r2H5XQ7k3w3Iwel7zYzE77PLMUvo/SJlRM/NIGOM+LkZZJwRPzeDiTNazk3/7+Yh4O4+1nHt/HS920eHMOF7b9tGKMa7gDzgNyIC0KHOiH+FwF/97yUBj6jqc27HOIA4bwBuEZEO4ASwXJ2zISy/ywHECXA98LyqNnXZPGy/TwAReRSnCiVfRMqB7wPJXeKM6LkZZIwRPzeDjDPi52aQcUIUnJvABcBNwDYR2ex/706cD3vXz08b3sEYYxKQ3eFrjDEJyJK/McYkIEv+xhiTgCz5G2NMArLkb4wxCciSvzHGJCBL/sYYk4D+f9SPnAhhcxecAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def f_i(y):\n", + " return y**0.5\n", + "\n", + "def f_i_prime(y):\n", + " return 0.5*y**-0.5\n", + "\n", + "assert np.allclose(f_i(f(x)), x)\n", + "\n", + "y = f(x)\n", + "px = base.pdf(x)\n", + "\n", + "transformed = px * f_i_prime(f_i(y))\n", + "\n", + "plt.plot(x, px)\n", + "plt.plot(y, transformed)\n", + "plt.xlim(0, 2)\n", + "\n", + "np.trapz(transformed, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 224, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9987894616589735" + ] + }, + "execution_count": 224, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Same principle, other transformation\n", + "\n", + "def f(x):\n", + " return x**0.5\n", + "\n", + "def f_i(y):\n", + " return y**2\n", + "\n", + "def f_i_prime(y):\n", + " return 2*x\n", + "\n", + "assert np.allclose(f_i(f(x)), x)\n", + "\n", + "y = f(x)\n", + "px = base.pdf(x)\n", + "\n", + "transformed = px * f_i_prime(f_i(y))\n", + "\n", + "plt.plot(x, px)\n", + "plt.plot(y, transformed)\n", + "plt.xlim(0, 2)\n", + "\n", + "np.trapz(transformed, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conditions\n", + "The transformations we've used were strictly increasing. \n", + "\n", + "In the example we've used above $\\frac{dx}{dy}$ was positive, as the transformation was strictly increasing, in the strictly decreasing case, $\\frac{dx}{dy}$ is negative and $P(y)=-P(x)\\frac{dx}{dy}$. If we take the absolute value of the derivative we have one equation for both cases.\n", + "\n", + "$$ \n", + "\\begin{eqnarray}\n", + "P(y)&=&P(x) \\cdot \\left| \\frac{dx}{dy} \\right| \\\\\n", + " &=& P(f^{-1}(y)) \\cdot \\left| f'^{-1}(y)\\right|\n", + "\\end{eqnarray}\n", + "$$\n", + "\n", + "The intuition of taking the modulus is that if the (local) rate of change of $x + dx = y + dy > 0$, than we can ensure ourselves that the rate of amount of probability is increasing, and the total amount of probability is preserved. This is ensured by conditioning $\\frac{dx}{dy} \\geq 0$.\n", + "\n", + "![](img/absolute.png)\n", + "\n", + "## Multiple dimensions\n", + "In N-D $\\frac{dx}{dy}$ is expressed in the Jacobian matrix, i.e. the matrix with first order partial derivatives $\\frac{\\partial(x)}{\\partial{y}}=\\mathbf{J}$. This absolute value, is now a determinant, such that;\n", + "\n", + "$$ \n", + "\\begin{eqnarray}\n", + "P(y)&=&P(f^{-1}(y)) \\cdot \\left| \\det \\frac{\\partial{ f(y)^{-1} }}{\\partial{y}} \\right| \\\\\n", + "P(y)&=&P(f^{-1}(y)) \\cdot \\left| \\det \\mathbf{J}_{f^{-1}}(y) \\right| \\\\\n", + "\\end{eqnarray}\n", + "$$\n", + "\n", + "The geometric meaning of the determinant is a scaling factor. $\\det A$ tells us how much an n-dimensional volume is scaled by applying the transformation of $A$." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "m = dist.Normal(torch.zeros(2), scale=torch.ones(2))\n", + "s = m.sample((1000,))\n", + "\n", + "plt.scatter(s[:, 0], s[:, 1], alpha=0.2)\n", + "plt.axis('scaled');" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "def f(x):\n", + " torch.exp(x) + 2\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/bayesian/normalizing_flows/img/absolute.png b/bayesian/normalizing_flows/img/absolute.png new file mode 100644 index 0000000..d21cd69 Binary files /dev/null and b/bayesian/normalizing_flows/img/absolute.png differ diff --git a/bayesian/normalizing_flows/img/absolute.svg b/bayesian/normalizing_flows/img/absolute.svg new file mode 100644 index 0000000..0dd2b86 --- /dev/null +++ b/bayesian/normalizing_flows/img/absolute.svg @@ -0,0 +1,3 @@ + + +
x
x
x+dx
x+dx
y
y
y+dy
[Not supported by viewer]
x
x
x+dx
x+dx
y+dy
y+dy
y
<div>
y
</div>
dxdy0
[Not supported by viewer]
dxdy0
[Not supported by viewer]
\ No newline at end of file