{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Dependent random variable\n", "\n", "Some times simple stochastically independent random variables are not enough,\n", "and one have to use variables with stochastic dependencies. In `chaospy` such\n", "variables can be created through parameter declarations.\n", "\n", "To demonstrate, let us start through example: a Gaussian distribution that\n", "depend on a gamma distribution through its mu and sigma parameter:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2021-05-18T10:57:07.461845Z", "iopub.status.busy": "2021-05-18T10:57:07.461492Z", "iopub.status.idle": "2021-05-18T10:57:07.470339Z", "shell.execute_reply": "2021-05-18T10:57:07.470560Z" } }, "outputs": [ { "data": { "text/plain": [ "J(Gamma(1), Normal(mu=Gamma(1), sigma=Add(Gamma(1), 1)))" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import chaospy\n", "\n", "dist1 = chaospy.Gamma(1)\n", "dist2 = chaospy.Normal(mu=dist1, sigma=dist1+1)\n", "joint = chaospy.J(dist1, dist2)\n", "\n", "joint" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resulting distribution can be used as any other distribution in\n", "`chaospy`. For example, here is the contour plot of the probability density\n", "function together with (quasi-)random samples:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2021-05-18T10:57:07.473168Z", "iopub.status.busy": "2021-05-18T10:57:07.472853Z", "iopub.status.idle": "2021-05-18T10:57:07.558469Z", "shell.execute_reply": "2021-05-18T10:57:07.558136Z" } }, "outputs": [ { "data": { "text/plain": [ "(0.0, 3.0, -3.0, 4.0)" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy\n", "from matplotlib import pyplot\n", "\n", "grid = numpy.mgrid[0:3:100j, -3:4:100j]\n", "pyplot.contourf(grid[0], grid[1], joint.pdf(grid), 30)\n", "pyplot.scatter(*joint.sample(100, rule=\"halton\"), marker=\"x\")\n", "\n", "pyplot.axis([0, 3, -3, 4])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In `chaospy` dependencies are handled by assuming all distributions have a\n", "known [chain rule\n", "decomposition](https://en.wikipedia.org/wiki/Chain_rule_(probability)):\n", "\n", "$$\n", "p_{Q_1, Q_2, \\dots}(q_1, q_2, \\dots) =\n", " p_{Q_1}(q_1)\\ p_{Q_2\\mid Q_1}(q_2)\\ p_{Q_3\\mid Q_2=q_1,Q_2}(q_2)\\cdots\n", "$$\n", "\n", "As long as this decomposition is possible, `chaospy` will figure out how to\n", "assemble the joint density function, and random sampling. For examples, is\n", "the following allowed:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2021-05-18T10:57:07.561064Z", "iopub.status.busy": "2021-05-18T10:57:07.560748Z", "iopub.status.idle": "2021-05-18T10:57:07.569586Z", "shell.execute_reply": "2021-05-18T10:57:07.569288Z" } }, "outputs": [ { "data": { "text/plain": [ "array([[0.375 , 0.875 , 0.0625 , 0.5625 , 0.3125 ],\n", " [0.56722, 1.18889, 1.46472, 0.60981, 0.59676],\n", " [1.24 , 1.44 , 1.64 , 1.84 , 1.08 ]])" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_lo = chaospy.Uniform(0, 1)\n", "dist_up = chaospy.Uniform(1, 2)\n", "dist_mid = chaospy.Uniform(dist_lo, dist_up)\n", "joint_ordered = chaospy.J(dist_lo, dist_mid, dist_up)\n", "\n", "joint_ordered.sample(5, rule=\"halton\").round(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "or visually:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2021-05-18T10:57:07.572304Z", "iopub.status.busy": "2021-05-18T10:57:07.572002Z", "iopub.status.idle": "2021-05-18T10:57:07.719898Z", "shell.execute_reply": "2021-05-18T10:57:07.719566Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "samples = joint_ordered.sample(200, rule=\"halton\")\n", "\n", "pyplot.rc(\"figure\", figsize=[12, 4])\n", "\n", "pyplot.subplot(131)\n", "pyplot.scatter(samples[0], samples[1])\n", "pyplot.subplot(132)\n", "pyplot.scatter(samples[1], samples[2])\n", "pyplot.subplot(133)\n", "pyplot.scatter(samples[0], samples[2])\n", "\n", "pyplot.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Having random samples and probability density function available, allows for\n", "use of [generalized polynomial chaos](./generalized_polynomial_chaos.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Limitations\n", "\n", "The functionality described above allows for creating the joint probability\n", "density function and joint random samples. In practice the latter is possible\n", "because `chaospy` constructs the forward and inverse *Rosenblatt\n", "transformation*. However, it is important to note that dependent random\n", "variables likes these can not be used for everything. For example, when\n", "creating quadrature nodes and weights, rules not dependent on distributions,\n", "like Fejér, works fine:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2021-05-18T10:57:07.722265Z", "iopub.status.busy": "2021-05-18T10:57:07.721940Z", "iopub.status.idle": "2021-05-18T10:57:07.732310Z", "shell.execute_reply": "2021-05-18T10:57:07.732030Z" } }, "outputs": [ { "data": { "text/plain": [ "(array([[ 4.721 , 4.721 , 4.721 , 16.1185, 16.1185, 16.1185,\n", " 27.516 , 27.516 , 27.516 ],\n", " [ 37.7152, 148.6125, 259.5099, 37.7152, 148.6125, 259.5099,\n", " 37.7152, 148.6125, 259.5099]]),\n", " array([2.00850e-02, 0.00000e+00, 0.00000e+00, 8.51019e-01, 0.00000e+00,\n", " 0.00000e+00, 8.00000e-06, 0.00000e+00, 0.00000e+00]))" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nodes, weights = chaospy.generate_quadrature(2, joint, rule=\"fejer_2\")\n", "nodes.round(4), weights.round(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, rules that directly is built on properties taken from the\n", "distributions, and in particular, those assuming stochastic independence, can\n", "not work. For example optimal Gaussian quadrature:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2021-05-18T10:57:07.734496Z", "iopub.status.busy": "2021-05-18T10:57:07.734180Z", "iopub.status.idle": "2021-05-18T10:57:07.815306Z", "shell.execute_reply": "2021-05-18T10:57:07.814940Z" } }, "outputs": [], "source": [ "import pytest\n", "\n", "with pytest.raises(chaospy.StochasticallyDependentError):\n", " chaospy.generate_quadrature(2, joint, rule=\"gaussian\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The same limitation also prevents the construction of joint *cumulative\n", "distribution function*." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Illegal distribution\n", "\n", "Note that the distribution of interest here, `joint` is the joint\n", "distribution including both the Gaussian and the Gamma distribution. The\n", "conditional Gaussian distribution `dist2` is created and part of this, but on\n", "its own can not be used for anything. In fact, trying to use conditional\n", "distributions in `chaospy` will cause an error:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2021-05-18T10:57:07.817528Z", "iopub.status.busy": "2021-05-18T10:57:07.817213Z", "iopub.status.idle": "2021-05-18T10:57:07.824582Z", "shell.execute_reply": "2021-05-18T10:57:07.824265Z" } }, "outputs": [], "source": [ "with pytest.raises(chaospy.StochasticallyDependentError):\n", " dist2.sample(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In other words, though any dependencies can be modeled in `chaospy`,\n", "declaring those distributions might sometimes be challenging. For example, a\n", "transformation like:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2021-05-18T10:57:07.827230Z", "iopub.status.busy": "2021-05-18T10:57:07.826911Z", "iopub.status.idle": "2021-05-18T10:57:07.834712Z", "shell.execute_reply": "2021-05-18T10:57:07.834370Z" } }, "outputs": [], "source": [ "dist1 = chaospy.Uniform(0, 1)\n", "dist2 = chaospy.Normal(0, 1)\n", "joint_illegal = chaospy.J(dist1+dist2, dist1-dist2)\n", "\n", "with pytest.raises(chaospy.StochasticallyDependentError):\n", " joint_illegal.sample(10)" ] } ], "metadata": { "jupytext": { "formats": "ipynb,py:percent" }, "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.9.5" } }, "nbformat": 4, "nbformat_minor": 4 }