{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# `qp` Demo\n", "**Note: This is a legacy notebook created for `qp` version < 1. Some of this notebook may no longer be accurate for `qp` version >= 1. It is kept availablle for reference.**\n", "\n", "_Alex Malz, Phil Marshall, Eric Charles_\n", "\n", "In this notebook we use the `qp` module to approximate some simple, standard, 1D PDFs using sets of quantiles, samples, and histograms, and assess their relative accuracy. \n", "We also show how such analyses can be extended to use \"composite\" PDFs made up of mixtures of standard distributions." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import os\n", "import scipy.stats as sps\n", "\n", "import matplotlib\n", "matplotlib.use('Agg')\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Requirements\n", "\n", "To run `qp`, you will need to first install the module by following the instructions [here](https://github.com/LSSTDESC/qp/blob/main/docs/install.rst)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import qp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Background: the `scipy.stats` module\n", "\n", "The `scipy.stats` module is the standard for manipulating distribtions so is a natural place to start for implementing 1D PDF parameterizations. \n", "It allows you do define a wide variety of distibutions and uses `numpy` array broadcasting for efficiency." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Gaussian (Normal) example\n", "\n", "Here are some examples of things you can do with the `scipy.stats` module, using a Gaussian or Normal distribution.\n", "`loc` and `scale` are the means and standard deviations of the underlying Gaussians.\n", "\n", "Note the distinction between passing arguments to `norm` and passing arguments to `pdf` to access multiple distributions and their PDF values at multiple points." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PDF at one point for one distribution: 0.3520653267642995\n", "PDF at three points for one distribution: [0.35206533 0.24197072 0.1295176 ]\n", "PDF at one point for three distributions: [0.35206533 0.35206533 0.1295176 ]\n", "PDF at one different point for three distributions: [0.35206533 0.39894228 0.35206533]\n", "PDF at four different points for three distributions:\n", " [[0.35206533 0.35206533 0.1295176 ]\n", " [0.24197072 0.39894228 0.24197072]\n", " [0.1295176 0.35206533 0.35206533]\n", " [0.05399097 0.24197072 0.39894228]]\n", "PDF at four different points for three distributions: broadcast reversed\n", " [[0.35206533 0.24197072 0.1295176 0.05399097]\n", " [0.35206533 0.39894228 0.35206533 0.24197072]\n", " [0.1295176 0.24197072 0.35206533 0.39894228]]\n" ] } ], "source": [ "# evaluate a single distribution's PDF at one value\n", "print(\"PDF at one point for one distribution:\", \n", " sps.norm(loc=0, scale=1).pdf(0.5))\n", "\n", "# evaluate a single distribution's PDF at multiple value\n", "print(\"PDF at three points for one distribution:\", \n", " sps.norm(loc=0, scale=1).pdf([0.5, 1., 1.5]))\n", "\n", "# evalute three distributions' PDFs at one shared value\n", "print(\"PDF at one point for three distributions:\", \n", " sps.norm(loc=[0., 1., 2.], scale=1).pdf(0.5))\n", "\n", "# evalute three distributions' PDFs each at one different value\n", "print(\"PDF at one different point for three distributions:\", \n", " sps.norm(loc=[0., 1., 2.], scale=1).pdf([0.5, 1., 1.5]))\n", "\n", "# evalute three distributions' PDFs each at four different values\n", "# (note the change in shape of the argument)\n", "print(\"PDF at four different points for three distributions:\\n\",\n", " sps.norm(loc=[0., 1., 2.], scale=1).pdf([[0.5],[1.],[1.5],[2]]))\n", "\n", "# evalute three distributions' PDFs at each of four different values\n", "# (note the change in shape of the argument)\n", "print(\"PDF at four different points for three distributions: broadcast reversed\\n\",\n", " sps.norm(loc=[[0.], [1.], [2.]], scale=1).pdf([0.5,1.,1.5,2]))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The `scipy.stats` classes\n", "\n", "In the `scipy.stats` module, all of the distributions are sub-classes of `scipy.stats.rv_continuous`. \n", "You make an object of a particular sub-type, and then 'freeze' it by passing it shape parameters." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This is the generic normal distribution class: \n", "This is an instance of the generic normal distribution class \n", "This is a frozen normal distribution, with specific paramters {'loc': 0, 'scale': 1}\n", "The frozen object know what generic distribution it comes from \n" ] } ], "source": [ "print(\"This is the generic normal distribution class: \", \n", " sps._continuous_distns.norm_gen)\n", "\n", "ng = sps._continuous_distns.norm_gen()\n", "print(\"This is an instance of the generic normal distribution class\", \n", " ng)\n", "\n", "norm_sp = ng(loc=0, scale=1)\n", "print(\"This is a frozen normal distribution, with specific paramters\", \n", " norm_sp, norm_sp.kwds)\n", "print(\"The frozen object know what generic distribution it comes from\", \n", " norm_sp.dist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Properties of distributions\n", "\n", "`scipy.stats` lets you evaluate multiple properties of distributions. These include:\n", "1. pdf: Probability Density Function\n", "2. cdf: Cumulative Distribution Function\n", "3. ppf: Percent Point Function (Inverse of CDF)\n", "4. sf: Survival Function (1-CDF)\n", "5. isf: Inverse Survival Function (Inverse of SF)\n", "6. rvs: Random Variates (i.e., sampled values)\n", "7. stats: Return mean, variance, optionally: (Fisher’s) skew, or (Fisher’s) kurtosis\n", "8. moment: non-central moments of the distribution" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PDF = 0.3520653267642995\n", "CDF = 0.6914624612740131\n", "PPF = 0.2533471031357997\n", "SF = 0.2742531177500736\n", "ISF = 0.0\n", "RVS = -0.1331918386344051\n", "stats = (0.0, 1.0)\n", "M2 = 1.0\n" ] } ], "source": [ "print(\"PDF = \", norm_sp.pdf(0.5)) \n", "print(\"CDF = \", norm_sp.cdf(0.5))\n", "print(\"PPF = \", norm_sp.ppf(0.6))\n", "print(\"SF = \", norm_sp.sf(0.6))\n", "print(\"ISF = \", norm_sp.isf(0.5))\n", "print(\"RVS = \", norm_sp.rvs())\n", "print(\"stats = \", norm_sp.stats())\n", "print(\"M2 = \", norm_sp.moment(2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## `qp` parameterizations and visualization functionality\n", "\n", "The next part of this notebook shows how we can extend the functionality of `scipy.stats` to implement distributions that are based on parameterizations of 1D PDFs, like histograms, interpolations, splines, or mixture models." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parameterizations from `scipy.stats`\n", "\n", "`qp` automatically generates classes for all of the `scipy.stats.rv_continuous` distributions, providing feed-through access to all `scipy.stats.rv_continuous` objects but adds on additional attributes and methods specific to parameterization conversions." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "odict_keys(['alpha', 'anglit', 'arcsine', 'argus', 'beta', 'betaprime', 'bradford', 'burr', 'burr12', 'cauchy', 'chi', 'chi2', 'cosine', 'crystalball', 'dgamma', 'dweibull', 'erlang', 'expon', 'exponnorm', 'exponpow', 'exponweib', 'f', 'fatiguelife', 'fisk', 'foldcauchy', 'foldnorm', 'gamma', 'gausshyper', 'genexpon', 'genextreme', 'gengamma', 'genhalflogistic', 'genhyperbolic', 'geninvgauss', 'genlogistic', 'gennorm', 'genpareto', 'gibrat', 'gompertz', 'gumbel_l', 'gumbel_r', 'halfcauchy', 'halfgennorm', 'halflogistic', 'halfnorm', 'hypsecant', 'invgamma', 'invgauss', 'invweibull', 'irwinhall', 'jf_skew_t', 'johnsonsb', 'johnsonsu', 'kappa3', 'kappa4', 'ksone', 'kstwo', 'kstwobign', 'laplace', 'laplace_asymmetric', 'levy', 'levy_l', 'levy_stable', 'loggamma', 'logistic', 'loglaplace', 'lognorm', 'loguniform', 'lomax', 'maxwell', 'mielke', 'moyal', 'nakagami', 'ncf', 'nct', 'ncx2', 'norm', 'norminvgauss', 'pareto', 'pearson3', 'powerlaw', 'powerlognorm', 'powernorm', 'rayleigh', 'rdist', 'recipinvgauss', 'reciprocal', 'rel_breitwigner', 'rice', 'semicircular', 'skewcauchy', 'skewnorm', 'studentized_range', 't', 'trapezoid', 'trapz', 'triang', 'truncexpon', 'truncnorm', 'truncpareto', 'truncweibull_min', 'tukeylambda', 'uniform', 'vonmises', 'vonmises_line', 'wald', 'weibull_max', 'weibull_min', 'wrapcauchy', 'spline', 'hist', 'interp', 'interp_irregular', 'quant', 'mixmod', 'sparse', 'packed_interp'])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qp.stats.keys()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on class lognorm in module qp.factory:\n", "\n", "class lognorm(qp.pdf_gen.Pdf_gen_wrap, scipy.stats._continuous_distns.lognorm_gen)\n", " | lognorm(*args, **kwargs)\n", " |\n", " | Method resolution order:\n", " | lognorm\n", " | qp.pdf_gen.Pdf_gen_wrap\n", " | qp.pdf_gen.Pdf_gen\n", " | scipy.stats._continuous_distns.lognorm_gen\n", " | scipy.stats._distn_infrastructure.rv_continuous\n", " | scipy.stats._distn_infrastructure.rv_generic\n", " | builtins.object\n", " |\n", " | Methods defined here:\n", " |\n", " | freeze = _my_freeze(self, *args, **kwds)\n", " |\n", " | ----------------------------------------------------------------------\n", " | Data and other attributes defined here:\n", " |\n", " | name = 'lognorm'\n", " |\n", " | version = 0\n", " |\n", " | ----------------------------------------------------------------------\n", " | Methods inherited from qp.pdf_gen.Pdf_gen_wrap:\n", " |\n", " | __init__(self, *args, **kwargs)\n", " | C'tor\n", " |\n", " | ----------------------------------------------------------------------\n", " | Class methods inherited from qp.pdf_gen.Pdf_gen_wrap:\n", " |\n", " | add_mappings()\n", " | Add this classes mappings to the conversion dictionary\n", " |\n", " | get_allocation_kwds(npdf, **kwargs)\n", " | Return kwds necessary to create 'empty' hdf5 file with npdf entries\n", " | for iterative writeout\n", " |\n", " | ----------------------------------------------------------------------\n", " | Class methods inherited from qp.pdf_gen.Pdf_gen:\n", " |\n", " | add_method_dicts()\n", " | Add empty method dicts\n", " |\n", " | create(**kwds)\n", " | Create and return a `scipy.stats.rv_frozen` object using the\n", " | keyword arguemntets provided\n", " |\n", " | create_gen(**kwds)\n", " | Create and return a `scipy.stats.rv_continuous` object using the\n", " | keyword arguemntets provided\n", " |\n", " | creation_method(method=None)\n", " | Return the method used to create a PDF of this type\n", " |\n", " | extraction_method(method=None)\n", " | Return the method used to extract data to create a PDF of this type\n", " |\n", " | plot(pdf, **kwargs)\n", " | Plot the pdf as a curve\n", " |\n", " | plot_native(pdf, **kwargs)\n", " | Plot the PDF in a way that is particular to this type of distibution\n", " |\n", " | This defaults to plotting it as a curve, but this can be overwritten\n", " |\n", " | print_method_maps(stream=)\n", " | Print the maps showing the methods\n", " |\n", " | reader_method(version=None)\n", " | Return the method used to convert data read from a file PDF of this type\n", " |\n", " | ----------------------------------------------------------------------\n", " | Readonly properties inherited from qp.pdf_gen.Pdf_gen:\n", " |\n", " | metadata\n", " | Return the metadata for this set of PDFs\n", " |\n", " | objdata\n", " | Return the object data for this set of PDFs\n", " |\n", " | ----------------------------------------------------------------------\n", " | Data descriptors inherited from qp.pdf_gen.Pdf_gen:\n", " |\n", " | __dict__\n", " | dictionary for instance variables\n", " |\n", " | __weakref__\n", " | list of weak references to the object\n", " |\n", " | ----------------------------------------------------------------------\n", " | Methods inherited from scipy.stats._continuous_distns.lognorm_gen:\n", " |\n", " | fit(self, data, *args, **kwds)\n", " | Return estimates of shape (if applicable), location, and scale\n", " | parameters from data. The default estimation method is Maximum\n", " | Likelihood Estimation (MLE), but Method of Moments (MM)\n", " | is also available.\n", " |\n", " | Starting estimates for the fit are given by input arguments;\n", " | for any arguments not provided with starting estimates,\n", " | ``self._fitstart(data)`` is called to generate such.\n", " |\n", " | One can hold some parameters fixed to specific values by passing in\n", " | keyword arguments ``f0``, ``f1``, ..., ``fn`` (for shape parameters)\n", " | and ``floc`` and ``fscale`` (for location and scale parameters,\n", " | respectively).\n", " |\n", " | Parameters\n", " | ----------\n", " | data : array_like or `CensoredData` instance\n", " | Data to use in estimating the distribution parameters.\n", " | arg1, arg2, arg3,... : floats, optional\n", " | Starting value(s) for any shape-characterizing arguments (those not\n", " | provided will be determined by a call to ``_fitstart(data)``).\n", " | No default value.\n", " | **kwds : floats, optional\n", " | - `loc`: initial guess of the distribution's location parameter.\n", " | - `scale`: initial guess of the distribution's scale parameter.\n", " |\n", " | Special keyword arguments are recognized as holding certain\n", " | parameters fixed:\n", " |\n", " | - f0...fn : hold respective shape parameters fixed.\n", " | Alternatively, shape parameters to fix can be specified by name.\n", " | For example, if ``self.shapes == \"a, b\"``, ``fa`` and ``fix_a``\n", " | are equivalent to ``f0``, and ``fb`` and ``fix_b`` are\n", " | equivalent to ``f1``.\n", " |\n", " | - floc : hold location parameter fixed to specified value.\n", " |\n", " | - fscale : hold scale parameter fixed to specified value.\n", " |\n", " | - optimizer : The optimizer to use. The optimizer must take\n", " | ``func`` and starting position as the first two arguments,\n", " | plus ``args`` (for extra arguments to pass to the\n", " | function to be optimized) and ``disp``.\n", " | The ``fit`` method calls the optimizer with ``disp=0`` to suppress output.\n", " | The optimizer must return the estimated parameters.\n", " |\n", " | - method : The method to use. The default is \"MLE\" (Maximum\n", " | Likelihood Estimate); \"MM\" (Method of Moments)\n", " | is also available.\n", " |\n", " | Raises\n", " | ------\n", " | TypeError, ValueError\n", " | If an input is invalid\n", " | `~scipy.stats.FitError`\n", " | If fitting fails or the fit produced would be invalid\n", " |\n", " | Returns\n", " | -------\n", " | parameter_tuple : tuple of floats\n", " | Estimates for any shape parameters (if applicable), followed by\n", " | those for location and scale. For most random variables, shape\n", " | statistics will be returned, but there are exceptions (e.g.\n", " | ``norm``).\n", " |\n", " | Notes\n", " | -----\n", " | With ``method=\"MLE\"`` (default), the fit is computed by minimizing\n", " | the negative log-likelihood function. A large, finite penalty\n", " | (rather than infinite negative log-likelihood) is applied for\n", " | observations beyond the support of the distribution.\n", " |\n", " | With ``method=\"MM\"``, the fit is computed by minimizing the L2 norm\n", " | of the relative errors between the first *k* raw (about zero) data\n", " | moments and the corresponding distribution moments, where *k* is the\n", " | number of non-fixed parameters.\n", " | More precisely, the objective function is::\n", " |\n", " | (((data_moments - dist_moments)\n", " | / np.maximum(np.abs(data_moments), 1e-8))**2).sum()\n", " |\n", " | where the constant ``1e-8`` avoids division by zero in case of\n", " | vanishing data moments. Typically, this error norm can be reduced to\n", " | zero.\n", " | Note that the standard method of moments can produce parameters for\n", " | which some data are outside the support of the fitted distribution;\n", " | this implementation does nothing to prevent this.\n", " |\n", " | For either method,\n", " | the returned answer is not guaranteed to be globally optimal; it\n", " | may only be locally optimal, or the optimization may fail altogether.\n", " | If the data contain any of ``np.nan``, ``np.inf``, or ``-np.inf``,\n", " | the `fit` method will raise a ``RuntimeError``.\n", " |\n", " | When passing a ``CensoredData`` instance to ``data``, the log-likelihood\n", " | function is defined as:\n", " |\n", " | .. math::\n", " |\n", " | l(\\pmb{\\theta}; k) & = \\sum\n", " | \\log(f(k_u; \\pmb{\\theta}))\n", " | + \\sum\n", " | \\log(F(k_l; \\pmb{\\theta})) \\\\\n", " | & + \\sum\n", " | \\log(1 - F(k_r; \\pmb{\\theta})) \\\\\n", " | & + \\sum\n", " | \\log(F(k_{\\text{high}, i}; \\pmb{\\theta})\n", " | - F(k_{\\text{low}, i}; \\pmb{\\theta}))\n", " |\n", " | where :math:`f` and :math:`F` are the pdf and cdf, respectively, of the\n", " | function being fitted, :math:`\\pmb{\\theta}` is the parameter vector,\n", " | :math:`u` are the indices of uncensored observations,\n", " | :math:`l` are the indices of left-censored observations,\n", " | :math:`r` are the indices of right-censored observations,\n", " | subscripts \"low\"/\"high\" denote endpoints of interval-censored observations, and\n", " | :math:`i` are the indices of interval-censored observations.\n", " |\n", " | When `method='MLE'` and\n", " | the location parameter is fixed by using the `floc` argument,\n", " | this function uses explicit formulas for the maximum likelihood\n", " | estimation of the log-normal shape and scale parameters, so the\n", " | `optimizer`, `loc` and `scale` keyword arguments are ignored.\n", " | If the location is free, a likelihood maximum is found by\n", " | setting its partial derivative wrt to location to 0, and\n", " | solving by substituting the analytical expressions of shape\n", " | and scale (or provided parameters).\n", " | See, e.g., equation 3.1 in\n", " | A. Clifford Cohen & Betty Jones Whitten (1980)\n", " | Estimation in the Three-Parameter Lognormal Distribution,\n", " | Journal of the American Statistical Association, 75:370, 399-404\n", " | https://doi.org/10.2307/2287466\n", " |\n", " |\n", " | Examples\n", " | --------\n", " |\n", " | Generate some data to fit: draw random variates from the `beta`\n", " | distribution\n", " |\n", " | >>> import numpy as np\n", " | >>> from scipy.stats import beta\n", " | >>> a, b = 1., 2.\n", " | >>> rng = np.random.default_rng(172786373191770012695001057628748821561)\n", " | >>> x = beta.rvs(a, b, size=1000, random_state=rng)\n", " |\n", " | Now we can fit all four parameters (``a``, ``b``, ``loc`` and\n", " | ``scale``):\n", " |\n", " | >>> a1, b1, loc1, scale1 = beta.fit(x)\n", " | >>> a1, b1, loc1, scale1\n", " | (1.0198945204435628, 1.9484708982737828, 4.372241314917588e-05, 0.9979078845964814)\n", " |\n", " | The fit can be done also using a custom optimizer:\n", " |\n", " | >>> from scipy.optimize import minimize\n", " | >>> def custom_optimizer(func, x0, args=(), disp=0):\n", " | ... res = minimize(func, x0, args, method=\"slsqp\", options={\"disp\": disp})\n", " | ... if res.success:\n", " | ... return res.x\n", " | ... raise RuntimeError('optimization routine failed')\n", " | >>> a1, b1, loc1, scale1 = beta.fit(x, method=\"MLE\", optimizer=custom_optimizer)\n", " | >>> a1, b1, loc1, scale1\n", " | (1.0198821087258905, 1.948484145914738, 4.3705304486881485e-05, 0.9979104663953395)\n", " |\n", " | We can also use some prior knowledge about the dataset: let's keep\n", " | ``loc`` and ``scale`` fixed:\n", " |\n", " | >>> a1, b1, loc1, scale1 = beta.fit(x, floc=0, fscale=1)\n", " | >>> loc1, scale1\n", " | (0, 1)\n", " |\n", " | We can also keep shape parameters fixed by using ``f``-keywords. To\n", " | keep the zero-th shape parameter ``a`` equal 1, use ``f0=1`` or,\n", " | equivalently, ``fa=1``:\n", " |\n", " | >>> a1, b1, loc1, scale1 = beta.fit(x, fa=1, floc=0, fscale=1)\n", " | >>> a1\n", " | 1\n", " |\n", " | Not all distributions return estimates for the shape parameters.\n", " | ``norm`` for example just returns estimates for location and scale:\n", " |\n", " | >>> from scipy.stats import norm\n", " | >>> x = norm.rvs(a, b, size=1000, random_state=123)\n", " | >>> loc1, scale1 = norm.fit(x)\n", " | >>> loc1, scale1\n", " | (0.92087172783841631, 2.0015750750324668)\n", " |\n", " | ----------------------------------------------------------------------\n", " | Methods inherited from scipy.stats._distn_infrastructure.rv_continuous:\n", " |\n", " | __getstate__(self)\n", " | Helper for pickle.\n", " |\n", " | cdf(self, x, *args, **kwds)\n", " | Cumulative distribution function of the given RV.\n", " |\n", " | Parameters\n", " | ----------\n", " | x : array_like\n", " | quantiles\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | cdf : ndarray\n", " | Cumulative distribution function evaluated at `x`\n", " |\n", " | expect(self, func=None, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, **kwds)\n", " | Calculate expected value of a function with respect to the\n", " | distribution by numerical integration.\n", " |\n", " | The expected value of a function ``f(x)`` with respect to a\n", " | distribution ``dist`` is defined as::\n", " |\n", " | ub\n", " | E[f(x)] = Integral(f(x) * dist.pdf(x)),\n", " | lb\n", " |\n", " | where ``ub`` and ``lb`` are arguments and ``x`` has the ``dist.pdf(x)``\n", " | distribution. If the bounds ``lb`` and ``ub`` correspond to the\n", " | support of the distribution, e.g. ``[-inf, inf]`` in the default\n", " | case, then the integral is the unrestricted expectation of ``f(x)``.\n", " | Also, the function ``f(x)`` may be defined such that ``f(x)`` is ``0``\n", " | outside a finite interval in which case the expectation is\n", " | calculated within the finite range ``[lb, ub]``.\n", " |\n", " | Parameters\n", " | ----------\n", " | func : callable, optional\n", " | Function for which integral is calculated. Takes only one argument.\n", " | The default is the identity mapping f(x) = x.\n", " | args : tuple, optional\n", " | Shape parameters of the distribution.\n", " | loc : float, optional\n", " | Location parameter (default=0).\n", " | scale : float, optional\n", " | Scale parameter (default=1).\n", " | lb, ub : scalar, optional\n", " | Lower and upper bound for integration. Default is set to the\n", " | support of the distribution.\n", " | conditional : bool, optional\n", " | If True, the integral is corrected by the conditional probability\n", " | of the integration interval. The return value is the expectation\n", " | of the function, conditional on being in the given interval.\n", " | Default is False.\n", " |\n", " | Additional keyword arguments are passed to the integration routine.\n", " |\n", " | Returns\n", " | -------\n", " | expect : float\n", " | The calculated expected value.\n", " |\n", " | Notes\n", " | -----\n", " | The integration behavior of this function is inherited from\n", " | `scipy.integrate.quad`. Neither this function nor\n", " | `scipy.integrate.quad` can verify whether the integral exists or is\n", " | finite. For example ``cauchy(0).mean()`` returns ``np.nan`` and\n", " | ``cauchy(0).expect()`` returns ``0.0``.\n", " |\n", " | Likewise, the accuracy of results is not verified by the function.\n", " | `scipy.integrate.quad` is typically reliable for integrals that are\n", " | numerically favorable, but it is not guaranteed to converge\n", " | to a correct value for all possible intervals and integrands. This\n", " | function is provided for convenience; for critical applications,\n", " | check results against other integration methods.\n", " |\n", " | The function is not vectorized.\n", " |\n", " | Examples\n", " | --------\n", " |\n", " | To understand the effect of the bounds of integration consider\n", " |\n", " | >>> from scipy.stats import expon\n", " | >>> expon(1).expect(lambda x: 1, lb=0.0, ub=2.0)\n", " | 0.6321205588285578\n", " |\n", " | This is close to\n", " |\n", " | >>> expon(1).cdf(2.0) - expon(1).cdf(0.0)\n", " | 0.6321205588285577\n", " |\n", " | If ``conditional=True``\n", " |\n", " | >>> expon(1).expect(lambda x: 1, lb=0.0, ub=2.0, conditional=True)\n", " | 1.0000000000000002\n", " |\n", " | The slight deviation from 1 is due to numerical integration.\n", " |\n", " | The integrand can be treated as a complex-valued function\n", " | by passing ``complex_func=True`` to `scipy.integrate.quad` .\n", " |\n", " | >>> import numpy as np\n", " | >>> from scipy.stats import vonmises\n", " | >>> res = vonmises(loc=2, kappa=1).expect(lambda x: np.exp(1j*x),\n", " | ... complex_func=True)\n", " | >>> res\n", " | (-0.18576377217422957+0.40590124735052263j)\n", " |\n", " | >>> np.angle(res) # location of the (circular) distribution\n", " | 2.0\n", " |\n", " | fit_loc_scale(self, data, *args)\n", " | Estimate loc and scale parameters from data using 1st and 2nd moments.\n", " |\n", " | Parameters\n", " | ----------\n", " | data : array_like\n", " | Data to fit.\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information).\n", " |\n", " | Returns\n", " | -------\n", " | Lhat : float\n", " | Estimated location parameter for the data.\n", " | Shat : float\n", " | Estimated scale parameter for the data.\n", " |\n", " | isf(self, q, *args, **kwds)\n", " | Inverse survival function (inverse of `sf`) at q of the given RV.\n", " |\n", " | Parameters\n", " | ----------\n", " | q : array_like\n", " | upper tail probability\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | x : ndarray or scalar\n", " | Quantile corresponding to the upper tail probability q.\n", " |\n", " | logcdf(self, x, *args, **kwds)\n", " | Log of the cumulative distribution function at x of the given RV.\n", " |\n", " | Parameters\n", " | ----------\n", " | x : array_like\n", " | quantiles\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | logcdf : array_like\n", " | Log of the cumulative distribution function evaluated at x\n", " |\n", " | logpdf(self, x, *args, **kwds)\n", " | Log of the probability density function at x of the given RV.\n", " |\n", " | This uses a more numerically accurate calculation if available.\n", " |\n", " | Parameters\n", " | ----------\n", " | x : array_like\n", " | quantiles\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | logpdf : array_like\n", " | Log of the probability density function evaluated at x\n", " |\n", " | logsf(self, x, *args, **kwds)\n", " | Log of the survival function of the given RV.\n", " |\n", " | Returns the log of the \"survival function,\" defined as (1 - `cdf`),\n", " | evaluated at `x`.\n", " |\n", " | Parameters\n", " | ----------\n", " | x : array_like\n", " | quantiles\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | logsf : ndarray\n", " | Log of the survival function evaluated at `x`.\n", " |\n", " | pdf(self, x, *args, **kwds)\n", " | Probability density function at x of the given RV.\n", " |\n", " | Parameters\n", " | ----------\n", " | x : array_like\n", " | quantiles\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | pdf : ndarray\n", " | Probability density function evaluated at x\n", " |\n", " | ppf(self, q, *args, **kwds)\n", " | Percent point function (inverse of `cdf`) at q of the given RV.\n", " |\n", " | Parameters\n", " | ----------\n", " | q : array_like\n", " | lower tail probability\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | x : array_like\n", " | quantile corresponding to the lower tail probability q.\n", " |\n", " | sf(self, x, *args, **kwds)\n", " | Survival function (1 - `cdf`) at x of the given RV.\n", " |\n", " | Parameters\n", " | ----------\n", " | x : array_like\n", " | quantiles\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | sf : array_like\n", " | Survival function evaluated at x\n", " |\n", " | ----------------------------------------------------------------------\n", " | Methods inherited from scipy.stats._distn_infrastructure.rv_generic:\n", " |\n", " | __call__(self, *args, **kwds)\n", " | Freeze the distribution for the given arguments.\n", " |\n", " | Parameters\n", " | ----------\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution. Should include all\n", " | the non-optional arguments, may include ``loc`` and ``scale``.\n", " |\n", " | Returns\n", " | -------\n", " | rv_frozen : rv_frozen instance\n", " | The frozen distribution.\n", " |\n", " | __setstate__(self, state)\n", " |\n", " | entropy(self, *args, **kwds)\n", " | Differential entropy of the RV.\n", " |\n", " | Parameters\n", " | ----------\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information).\n", " | loc : array_like, optional\n", " | Location parameter (default=0).\n", " | scale : array_like, optional (continuous distributions only).\n", " | Scale parameter (default=1).\n", " |\n", " | Notes\n", " | -----\n", " | Entropy is defined base `e`:\n", " |\n", " | >>> import numpy as np\n", " | >>> from scipy.stats._distn_infrastructure import rv_discrete\n", " | >>> drv = rv_discrete(values=((0, 1), (0.5, 0.5)))\n", " | >>> np.allclose(drv.entropy(), np.log(2.0))\n", " | True\n", " |\n", " | interval(self, confidence, *args, **kwds)\n", " | Confidence interval with equal areas around the median.\n", " |\n", " | Parameters\n", " | ----------\n", " | confidence : array_like of float\n", " | Probability that an rv will be drawn from the returned range.\n", " | Each value should be in the range [0, 1].\n", " | arg1, arg2, ... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information).\n", " | loc : array_like, optional\n", " | location parameter, Default is 0.\n", " | scale : array_like, optional\n", " | scale parameter, Default is 1.\n", " |\n", " | Returns\n", " | -------\n", " | a, b : ndarray of float\n", " | end-points of range that contain ``100 * alpha %`` of the rv's\n", " | possible values.\n", " |\n", " | Notes\n", " | -----\n", " | This is implemented as ``ppf([p_tail, 1-p_tail])``, where\n", " | ``ppf`` is the inverse cumulative distribution function and\n", " | ``p_tail = (1-confidence)/2``. Suppose ``[c, d]`` is the support of a\n", " | discrete distribution; then ``ppf([0, 1]) == (c-1, d)``. Therefore,\n", " | when ``confidence=1`` and the distribution is discrete, the left end\n", " | of the interval will be beyond the support of the distribution.\n", " | For discrete distributions, the interval will limit the probability\n", " | in each tail to be less than or equal to ``p_tail`` (usually\n", " | strictly less).\n", " |\n", " | mean(self, *args, **kwds)\n", " | Mean of the distribution.\n", " |\n", " | Parameters\n", " | ----------\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | mean : float\n", " | the mean of the distribution\n", " |\n", " | median(self, *args, **kwds)\n", " | Median of the distribution.\n", " |\n", " | Parameters\n", " | ----------\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | Location parameter, Default is 0.\n", " | scale : array_like, optional\n", " | Scale parameter, Default is 1.\n", " |\n", " | Returns\n", " | -------\n", " | median : float\n", " | The median of the distribution.\n", " |\n", " | See Also\n", " | --------\n", " | rv_discrete.ppf\n", " | Inverse of the CDF\n", " |\n", " | moment(self, order, *args, **kwds)\n", " | non-central moment of distribution of specified order.\n", " |\n", " | Parameters\n", " | ----------\n", " | order : int, order >= 1\n", " | Order of moment.\n", " | arg1, arg2, arg3,... : float\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information).\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | nnlf(self, theta, x)\n", " | Negative loglikelihood function.\n", " | Notes\n", " | -----\n", " | This is ``-sum(log pdf(x, theta), axis=0)`` where `theta` are the\n", " | parameters (including loc and scale).\n", " |\n", " | rvs(self, *args, **kwds)\n", " | Random variates of given type.\n", " |\n", " | Parameters\n", " | ----------\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information).\n", " | loc : array_like, optional\n", " | Location parameter (default=0).\n", " | scale : array_like, optional\n", " | Scale parameter (default=1).\n", " | size : int or tuple of ints, optional\n", " | Defining number of random variates (default is 1).\n", " | random_state : {None, int, `numpy.random.Generator`,\n", " | `numpy.random.RandomState`}, optional\n", " |\n", " | If `random_state` is None (or `np.random`), the\n", " | `numpy.random.RandomState` singleton is used.\n", " | If `random_state` is an int, a new ``RandomState`` instance is\n", " | used, seeded with `random_state`.\n", " | If `random_state` is already a ``Generator`` or ``RandomState``\n", " | instance, that instance is used.\n", " |\n", " | Returns\n", " | -------\n", " | rvs : ndarray or scalar\n", " | Random variates of given `size`.\n", " |\n", " | stats(self, *args, **kwds)\n", " | Some statistics of the given RV.\n", " |\n", " | Parameters\n", " | ----------\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional (continuous RVs only)\n", " | scale parameter (default=1)\n", " | moments : str, optional\n", " | composed of letters ['mvsk'] defining which moments to compute:\n", " | 'm' = mean,\n", " | 'v' = variance,\n", " | 's' = (Fisher's) skew,\n", " | 'k' = (Fisher's) kurtosis.\n", " | (default is 'mv')\n", " |\n", " | Returns\n", " | -------\n", " | stats : sequence\n", " | of requested moments.\n", " |\n", " | std(self, *args, **kwds)\n", " | Standard deviation of the distribution.\n", " |\n", " | Parameters\n", " | ----------\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | std : float\n", " | standard deviation of the distribution\n", " |\n", " | support(self, *args, **kwargs)\n", " | Support of the distribution.\n", " |\n", " | Parameters\n", " | ----------\n", " | arg1, arg2, ... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information).\n", " | loc : array_like, optional\n", " | location parameter, Default is 0.\n", " | scale : array_like, optional\n", " | scale parameter, Default is 1.\n", " |\n", " | Returns\n", " | -------\n", " | a, b : array_like\n", " | end-points of the distribution's support.\n", " |\n", " | var(self, *args, **kwds)\n", " | Variance of the distribution.\n", " |\n", " | Parameters\n", " | ----------\n", " | arg1, arg2, arg3,... : array_like\n", " | The shape parameter(s) for the distribution (see docstring of the\n", " | instance object for more information)\n", " | loc : array_like, optional\n", " | location parameter (default=0)\n", " | scale : array_like, optional\n", " | scale parameter (default=1)\n", " |\n", " | Returns\n", " | -------\n", " | var : float\n", " | the variance of the distribution\n", " |\n", " | ----------------------------------------------------------------------\n", " | Data descriptors inherited from scipy.stats._distn_infrastructure.rv_generic:\n", " |\n", " | random_state\n", " | Get or set the generator object for generating random variates.\n", " |\n", " | If `random_state` is None (or `np.random`), the\n", " | `numpy.random.RandomState` singleton is used.\n", " | If `random_state` is an int, a new ``RandomState`` instance is used,\n", " | seeded with `random_state`.\n", " | If `random_state` is already a ``Generator`` or ``RandomState``\n", " | instance, that instance is used.\n", "\n" ] } ], "source": [ "help(qp.stats.lognorm_gen)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on method create in module qp.pdf_gen:\n", "\n", "create(**kwds) class method of qp.factory.lognorm\n", " Create and return a `scipy.stats.rv_frozen` object using the\n", " keyword arguemntets provided\n", "\n" ] } ], "source": [ "help(qp.stats.lognorm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Native plotting\n", "\n", "If you have a single distribution you can plot it, the `qp.plotting.plot_native` function will find a nice way to represent the data used to construct the distribution." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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O/zyl79ERUVFp/sbGxvx0UcfIT093bJNJpNZ/rxs2TLk5uZa7isuLsbDDz8MFxeXLs/1zTff4He/+x2OHTvW5TlefvllAKYz46Q0atQoAKYVuYlocDAkEZFN8vT0xJdffonw8HBs3rwZISEhiI6ORkJCAsaNG4chQ4YgLS2tUxACgKeeegq33HIL6urqkJycjKioKEyZMgWjR49GfX09Hn/88S7P1dDQgFdeeQXjx49HQEAApk2bhsmTJyMwMBD/+te/oFar8frrrw/WS7cqLS0NAHDbbbchNjYWs2bNwqxZs1BZWSlpXUSOjGe3EZHNioyMxKFDh5CZmYlPP/0Ux48fx9mzZxEcHIyZM2filltuwT333NPpMXK5HJ999hleffVVvP/++zh79ix8fX3x8MMP489//jPWrVvX5XlSUlKwZs0aZGdn48iRIzh27BhcXFwwevRozJ07F8888wyCgoIG62Vb9fzzz8NgMGDLli04duwYdDodAKC1tVXSuogcmSDy/FQiIiKiLjjdRkRERGQFQxIRERGRFQxJRERERFYwJBERERFZwZBEREREZAVDEhEREZEVDElEREREVjAkEREREVnBkERERERkBUMSERERkRUMSURERERWMCQRERERWcGQRERERGTF/wdP7QlvEanECAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "loc1 = np.array([[0]])\n", "scale1 = np.array([[1]])\n", "norm_dist1 = qp.stats.norm(loc=loc1, scale=scale1)\n", "fig, axes = qp.plotting.plot_native(norm_dist1, xlim=(-5., 5.))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# fig, axes = qp.stats.norm.plot_native(norm_dist1, xlim=(-5., 5.))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `qp` histogram (piecewise constant) parameterization\n", "\n", "This represents a set of distributions made by interpolating a set of histograms with shared binning.\n", "To construct this you need to give the bin edges (shape=(N)) and the bin values (shape=(npdf, N-1)).\n", "\n", "Note that the native visual representation is different from the Normal distribution." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoIAAAHsCAYAAABG5syiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIrUlEQVR4nO3deVxVdeL/8fdlRxRSVLBExBWQ3HADw2VGcUm/ajVRmWbjko2WyLQ5WqGPmS8t7k64tEg2o2Jji9PgJFkmhpoSOE1RmqmYQgolqCkInN8f/rjfriwuoPfieT0fj/N4yOd+zud8PueK9+3nnPO5FsMwDAEAAMB0nOzdAQAAANgHQRAAAMCkCIIAAAAmRRAEAAAwKRd7dwAA4NjKysp04cIFe3cDwDVwc3OTk1P1834EQQBAlQzDUF5enk6dOmXvrgC4Rk5OTgoKCpKbm1uVr1tYPgYAUJXc3FydOnVKzZs3V4MGDWSxWOzdJQBXoby8XMePH5erq6tatWpV5e8wM4IAgErKysqsIdDX19fe3QFwjZo1a6bjx4+rtLRUrq6ulV7nYREAQCUV9wQ2aNDAzj0BUBsVl4TLysqqfJ0gCACoFpeDgfrtcr/DBEEAAACTIggCAK6b8xfKdN+qnbpv1U6dv1D1pSl7SEpK0i233GLvbtQbEyZM0OjRo+3djSodPnxYFotFWVlZ9u5KvUQQBADcNKoLLNu2bZPFYrEuhRMTE6P9+/dfUZs3c2isCFEVm5ubm9q1a6c///nP+vWiIkuWLFFSUlKtjhUfH29zrIotODi4lqNAbfDUMADAdDw9PeXp6WnvblRy4cKFKp/svN4++ugjderUScXFxdqxY4cmTZqkFi1aaOLEiZIkHx+fOjlOp06d9NFHH9mUubgQReyJGUEAgOlcOsu3b98+DRw4UI0aNZK3t7fCw8O1d+9ebdu2TQ8//LAKCwutM1jx8fGSpJ9//lnjx49X48aN1aBBAw0bNkwHDhywOc6rr76qgIAANWjQQGPGjNHChQttjhsfH6+uXbvqjTfeUJs2beTu7i7DMPTvf/9bd9xxh2655Rb5+vpqxIgROnjwoHW/ipm8DRs2KCoqSp6enurZs6f279+vPXv2qEePHmrYsKGGDh2qkydPXvZ8+Pr6yt/fX4GBgRo7dqwiIyP1xRdfWF+/dKZ1wIABevzxx/XUU0+pSZMm8vf3t56Xmri4uMjf399ma9q0qfX11q1b63//93/1+9//Xo0aNVKrVq20atUqmzY+//xzdevWTR4eHurRo4cyMzNtXv/55581duxYNWvWTJ6enmrfvr1Wr1592b6ZFUEQAGB6Y8eOVcuWLbVnzx5lZGTomWeekaurqyIjI7V48WJ5e3srNzdXubm5euKJJyRdDEd79+7Vpk2btHPnThmGoeHDh1uX3vnss880depUzZgxQ1lZWRo8eLD+8pe/VDr2d999pw0bNmjjxo3W+9zOnj2ruLg47dmzR1u3bpWTk5PGjBmj8vJym32ff/55zZkzR1988YVcXFx0//3366mnntKSJUuUlpamgwcP6rnnnruqc7F371598cUX6t27d4313nzzTXl5eWn37t166aWXNG/ePKWmpl7VsaqyYMECa8D7wx/+oEcffVTffPONpIvnZcSIEerYsaMyMjIUHx9vfT8qPPvss/r666+1efNmZWdna/ny5TZhE5cwAAC4xLlz54yvv/7aOHfuXO3aKSk1YlamGzEr041zJaV11LvqPfTQQ4azs7Ph5eVls3l4eBiSjJ9//tkwDMNYvXq14ePjY92vUaNGRlJSUpVtXlrXMAxj//79hiTjs88+s5bl5+cbnp6exoYNGwzDMIyYmBjjzjvvtNlv7NixNm09//zzhqurq3HixIkax3XixAlDkvHll18ahmEYhw4dMiQZr732mrXOunXrDEnG1q1brWUJCQlGx44dq223oh1PT0/Dy8vLcHV1NSQZU6ZMsan30EMPGaNGjbL+3L9/f+OOO+6wqdOzZ0/j6aefrvZYzz//vOHk5FTpvZk4caK1TmBgoPHggw9afy4vLzeaN29uLF++3DAMw1i5cqXRpEkT4+zZs9Y6y5cvNyQZmZmZhmEYxsiRI42HH3642n6YzeV+l7kwDwC4qQwcOFDLly+3Kdu9e7cefPDBaveJi4vTpEmT9NZbb2nQoEH63e9+p7Zt21ZbPzs7Wy4uLjazZr6+vurYsaOys7MlSd9++63GjBljs1+vXr30wQcf2JQFBgaqWbNmNmUHDx7Us88+q127dik/P986E5iTk6OwsDBrvc6dO1v/7OfnJ0m6/fbbbcpOnDhR7TgqJCcnKyQkRBcuXNCXX36pxx9/XI0bN9YLL7xQ7T6/PrYktWjR4rLH6tixozZt2mRT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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Convert to a histogram by computing the bin values by taking the intergral of the CDF\n", "xvals = np.linspace(-5, 5, 11)\n", "cdf = norm_dist1.cdf(xvals)\n", "bin_vals = cdf[:,1:] - cdf[:,0:-1]\n", "# Construct histogram PDF using the bin edges and the bin values\n", "hist_dist = qp.hist(bins=xvals, pdfs=bin_vals)\n", "yvals = hist_dist.pdf(xvals)\n", "# Construct a single PDF for plotting\n", "hist_dist1 = qp.hist(bins=xvals, pdfs=np.atleast_2d(bin_vals[0]))\n", "fig, axes = qp.plotting.plot_native(hist_dist1, xlim=(-5., 5.))\n", "leg = fig.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What if you want to evaluate a vector of input values, where each input value is different for each PDF? In that case you need the shape of the vector of input value to match the implicit shape of the PDFs, which in this case is (2,1)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For an input vector of shape (2, 1) the output shape is (2, 1)\n" ] } ], "source": [ "xvals_x = np.array([[-1.], [1.]])\n", "yvals_x = hist_dist.pdf(xvals_x)\n", "print (\"For an input vector of shape %s the output shape is %s\" % (xvals_x.shape, yvals_x.shape))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## `qp` quantile parameterization\n", "\n", "This represents a set of distributions made by interpolating the locations at which various distributions reach a given set of quantiles.\n", "To construct this you need to give the quantiles edges (shape=(N)) and the location values (shape=(npdf, N)).\n", "\n", "Note that the native visual representation is different." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The input and output shapes are: (11,) (1, 11)\n" ] }, { "data": { "image/png": "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ERF5KCaCRERERB6KiSARERGRh2IiSEREROShmAgSERERdaLdu3dDEARcunQJAJCRkYEuXbpIEgsTQSIiIqIOMnbsWMydO9dpW2JiIvR6PXQ6nTRBOeCE0kRERESdSK1WIyQkROowALBGkIiIiNxQVVUVZs6cCT8/P/Ts2RPLli1zqp0TBAFbt251OqZLly7IyMiw//7UU09h4MCB8PHxQd++ffHMM8/AZDLZn1+0aBGGDRuGDRs2ICIiAjqdDjNmzEBFRQUA4J577sGePXuwYsUKCIIAQRBQUFBQr2m4Idu2bUNcXBy0Wi369u2LxYsXw2w2O712WFgYNBoNevXqhUceeaRVfycmgkREROR2nnjiCXz55ZfYsmULdu3ahd27dyM3N7dFZfj7+yMjIwOHDx/GihUr8Oabb2L58uVO+xw/fhxbt27F9u3bsX37duzZswcvvvgiAGDFihVISEjAvffeC71eD71ej9DQ0CZfd+fOnbjrrrvwyCOP4PDhw1i7di0yMjLwwgsvAAA+/PBDLF++HGvXrsWxY8ewdetWXHPNNS06tzpsGiYiIqIW+ea9ChxaX9HkfsFRKtzyRnenbR89dB7njpgaOeKyETP9MfJu/1bFV1lZibfffhvr16/HhAkTAADvvfce+vTp06JyFi5caP85IiICf/3rX5GZmYknn3zSvt1qtSIjIwP+/rZY09LS8MUXX+CFF16ATqeDWq2Gj49Pi5qCX3jhBTz99NO4++67AQB9+/bF3//+dzz55JN47rnnUFhYiJCQEIwfPx4qlQphYWG47rrrWnRudZgIEhERUYsYK62oPGdpcj//EGW9bdUXm3essdLaqtgAWy2d0WhEQkKCfVu3bt0waNCgFpXz4YcfIj09Hb/++isqKythNpsREBDgtE9ERIQ9CQSAnj17oqSkpNWxA0Bubi6++eYbew0gAFgsFtTW1qK6uhq333470tPT0bdvX0yaNAlTpkzBzTffDC+vlqd1TASJiIioRdR+CvgF10/yruTTtX4PNJ+uzTtW7df63muiKDa5jyAI9fZz7P934MABzJgxA4sXL8bEiROh0+mwadMmLFu2zOkYlUpVr1yrtfVJLGCrZVy8eDFuueWWes9ptVqEhobi6NGjyMrKwueff44HHngAL7/8Mvbs2VMvnqYwESQiIqIWGXl365ttr2wq7gj9+/eH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StXI3pdpdfXrm8Y8pkNtedP3k26RzuV7aYVmx9s1wvnv1Hv45XtnZZUKz05rVjEeQdaJYFBQEJRKZb2aupKSkno1enVCQkIa3N/LywuBgYFX3aexMgFAo9FAo6mfRPUb64OAgJYPFhjwh9YNMPANUrb62O4D1eg+UN30jg24smm7uVRaRavj1fX2gq536/5FHZt6Wqrf2Kbbe80Gsdn9iIhIPlTeCnh3sSVw/cd51/siqfJ2z2tWQ7y7tP5+EthPhcB+TSeCDQkd2br7iVIltDpe/+DLK8mUlzfdzcmTyLppWK1WIy4uDllZWU7bs7KykJiY2OAxCQkJ9fbftWsXRowYAZVKddV9GiuTiIiIyB3JukYQAObNm4e0tDSMGDECCQkJWLduHQoLCzFnzhwAtibbs2fPYv369QCAOXPm4I033sC8efNw7733IicnB2+//bbTaOBHH30Uo0ePxksvvYRp06bh448/xueff479+/dLco5EREREUpB9IpiamooLFy5gyZIl0Ov1iImJwY4dOxAeHg4A0Ov1TnMKRkZGYseOHXjsscewcuVK9OrVC6+99pp96hgASExMxKZNm7Bw4UI888wz6NevHzIzMxEfH9/p50dEREQkFdknggDwwAMP4IEHHmjwuYyMjHrbxowZg2+//faqZd5222247bbb2iM8IiIiIpckiHVDaqlFysvLodPpUFZWhoAALjFGRETkCnj/dibrwSJERERE1HGYCBIRERF5KCaCRERERB6KiSARERGRh2IiSEREROShmAgSEREReSgmgkREREQeiokgERERkYdyiZVF5KhuHu7y8nKJIyEiIqLmqrtvcz0NGyaCrVRRUQEACA0NlTgSIiIiaqmKigrodDqpw5Acl5hrJavViqKiIvj7+0MQBKnDabXy8nKEhobi9OnTXGpHYnwv5IPvhXzwvZAXd3g/RFFERUUFevXqBYWCPeRYI9hKCoUCffr0kTqMdhMQEOCyH2p3w/dCPvheyAffC3lx9feDNYGXMRUmIiIi8lBMBImIiIg8FBNBD6fRaPDcc89Bo9FIHYrH43shH3wv5IPvhbzw/XA/HCxCRERE5KFYI0hERETkoZgIEhEREXkoJoJEREREHoqJIBEREZGHYiJI9RgMBgwbNgyCICA/P1/qcDxOQUEBZs2ahcjISHh7e6Nfv3547rnnYDQapQ7NY6xatQqRkZHQarWIi4vDvn37pA7J4yxduhQjR46Ev78/evTogenTp+Po0aNSh0WwvTeCIGDu3LlSh0LtgIkg1fPkk0+iV69eUofhsX7++WdYrVasXbsWP/30E5YvX441a9bgb3/7m9SheYTMzEzMnTsXCxYsQF5eHpKTkzF58mQUFhZKHZpH2bNnDx588EEcOHAAWVlZMJvNSElJQVVVldShebRvvvkG69atw9ChQ6UOhdoJp48hJ5999hnmzZuHzZs3Y8iQIcjLy8OwYcOkDsvjvfzyy1i9ejVOnDghdShuLz4+HrGxsVi9erV9W1RUFKZPn46lS5dKGJlnO3/+PHr06IE9e/Zg9OjRUofjkSorKxEbG4tVq1bh+eefx7Bhw5Ceni51WNRGrBEku3PnzuHee+/Fhg0b4OPjI3U45KCsrAzdunWTOgy3ZzQakZubi5SUFKftKSkpyM7OligqAmyfAQD8HEjowQcfxI033ojx48dLHQq1Iy+pAyB5EEUR99xzD+bMmYMRI0agoKBA6pDod8ePH8frr7+OZcuWSR2K2ystLYXFYkFwcLDT9uDgYBQXF0sUFYmiiHnz5uH6669HTEyM1OF4pE2bNuHbb7/FN998I3Uo1M5YI+jmFi1aBEEQrvo4dOgQXn/9dZSXl2P+/PlSh+y2mvteOCoqKsKkSZNw++23Y/bs2RJF7nkEQXD6XRTFetuo8zz00EP4/vvvsXHjRqlD8UinT5/Go48+in/961/QarVSh0PtjH0E3VxpaSlKS0uvuk9ERARmzJiBbdu2Od3sLBYLlEol/vznP+O9997r6FDdXnPfi7oLbVFREcaNG4f4+HhkZGRAoeD3to5mNBrh4+OD//znP/jjH/9o3/7oo48iPz8fe/bskTA6z/Twww9j69at2Lt3LyIjI6UOxyNt3boVf/zjH6FUKu3bLBYLBEGAQqGAwWBweo5cCxNBAgAUFhaivLzc/ntRUREmTpyIDz/8EPHx8ejTp4+E0Xmes2fPYty4cYiLi8O//vUvXmQ7UXx8POLi4rBq1Sr7tujoaEybNo2DRTqRKIp4+OGHsWXLFuzevRsDBgyQOiSPVVFRgVOnTjlt+7//+z8MHjwYTz31FJvrXRz7CBIAICwszOl3Pz8/AEC/fv2YBHayoqIijB07FmFhYXjllVdw/vx5+3MhISESRuYZ5s2bh7S0NIwYMQIJCQlYt24dCgsLMWfOHKlD8ygPPvgg3n//fXz88cfw9/e399HU6XTw9vaWODrP4u/vXy/Z8/X1RWBgIJNAN8BEkEhmdu3ahV9//RW//vprvSScFfgdLzU1FRcuXMCSJUug1+sRExODHTt2IDw8XOrQPErd9D1jx4512v7uu+/innvu6fyAiNwUm4aJiIiIPBR7nxMRERF5KCaCRERERB6KiSARERGRh2IiSEREROShmAgSEREReSgmgkREREQeiokgERERkYdiIkhERETkoZgIEpFHWbRoEQRBwKJFi9pUTkREBARBQEFBQYuOGzt2LARBwO7du+s9V11djccffxyRkZFQqVQQBIGraBBRh+ISc0REMnHvvffi/fffh4+PD4YNGwaNRoOBAwcCgD1xbWsCS0TkiIkgEVEnCgsLw6BBg+Dj4+O0/eLFi9i0aRN8fHzw888/IzQ01On5xYsXA2AiSETti4kgEVEnWr9+fYPbjx07BqvVipiYmHpJIBFRR2EfQSIiGaipqQEAeHt7SxwJEXkSJoJEJAlBECAIAgBg8+bNGD16NLp06VJvAMZvv/2GBQsWICYmBr6+vvD398eoUaPw5ptvwmq1Nli22WzGP//5TwwePBharRa9e/fGvffei3PnzjUajyiKWL9+vT0OtVqNkJAQxMXF4cknn8SZM2caPfbAgQOYPHkyunbtCl9fXyQnJ+N///tfg/teOVikoKAAgiBg7NixAIA9e/bY/zZ1g0Xq/k6Of7e6R0sHqxAROWLTMBFJ6qWXXsLTTz+N4OBgDBw40Cmx+emnnzBx4kScPXsWarUa/fv3h8FgwNdff42DBw9i165d+OCDD5wSJYvFgltuuQXbtm0DAAwcOBDe3t549913sWvXLkydOrXBOJ544gksW7YMgK0f38CBA1FaWooff/wR3377LRITE9GnT596x23fvh3z5s1DQEAA+vXrh19//RX79+/HxIkTkZWVZU/wGqPVapGUlISysjL8+OOPCAgIwDXXXGN/fuDAgUhKSsJXX30FAEhKSqp3PBFRq4lERBIAIAIQ1Wq1uG7dOtFqtYqiKIomk0k0mUxiZWWl2K9fPxGA+Mgjj4hlZWX2Y3/66SdxyJAhIgDxjTfecCp3xYoVIgCxa9eu4r59++zbT548KcbExIgqlUoEID733HP250pKSkSFQiHqdDpx//79TuXV1NSIGzduFL/77jun7eHh4SIAUaVSiUuXLhXNZrMoiqJoNBrFP//5zyIAMT4+vt55jxkzRgQgfvnll07bv/zySxGAOGbMmKv+vYiI2hObholIUvfffz/uvfdee62el5cXvLy88M477+D48eP44x//iBUrViAgIMB+THR0NN5//30IgoBXX33Vvl0URXut3vPPP4/rr7/e/lxERATee+89mEymejEcP34cVqsVN9xwQ4M1bjNmzMDQoUMbjH/SpEl4+umnoVQqAQAqlQrp6enQaDQ4ePAgLl682Mq/DBFRx2MiSESSmjlzZoPbP/roIwDA7NmzG3x+6NChiIiIwIkTJ+z9944cOYLCwkJotdoGJ2KOjY3FqFGj6m2vG6V78OBBFBYWtij+huILCgpCREQEAODEiRMtKo+IqDOxjyARSSoqKqrB7T/88AMA4Nlnn8U//vGPBvcpLS0FAJw9exZ9+vTBL7/8AgAIDw+vN0+f4+sdOHDAaVvv3r1x++234z//+Q/69++PcePGYezYsUhOTsaoUaPg5dX4pbJfv34Nbu/RoweOHj2KysrKRo8lIpIaE0EikpSvr2+D28vKygAAubm5TZZRN/VKXdLVvXv3RvcNDg5ucPv69esRHR2Nt956C7t27cKuXbvsZT355JOYN28eFIr6jSiNxV+3ryiKTcZPRCQVNg0TkSz5+fkBsE20LIriVR91I3Prjjl//nyj5ZaUlDS4XavVYtGiRThz5gyOHDmCtWvX4uabb8aFCxfwxBNPOPVFJCJyF0wEiUiWoqOjAQA//vhjs4+pW5e3sLAQ1dXVDe5z5MiRJssZPHgw7rvvPnzyySdYtWoVAODNN99sdhxERK6CiSARydItt9wCAHjttdea3bw6ePBghIaGoqampsGl3PLz85GTk9OiOOoGlxQVFbXouPZWt+JIXTM4EVF7YCJIRLJ0//33o2/fvvjyyy/x5z//GXq93un5yspKfPDBB5g3b559m0KhsP++YMECZGdn2587deoU7r77bqhUqnqv9cUXX+CJJ57A4cOH673Gyy+/DMA24lhKffv2BWBbeYSIqL0wESQiWfLz88Onn36KyMhIbNy4EX369EF0dDRGjRqFQYMGoUuXLkhNTXVK9gDg4YcfxpQpU/Dbb78hKSkJUVFRGD58OPr3749Lly7h/vvvr/daFRUVeOWVVzBkyBD06NEDI0eOxLBhwxAcHIx///vf0Ol0WL58eWedeoNSU1MBADfddBNiY2MxduxYjB07FsXFxZLGRUSujaOGiUi2Bg8ejO+++w6rVq3Cli1bcOTIEZw4cQI9e/bEmDFjMGXKFNx6661OxyiVSmzduhXLli3Du+++ixMnTiAwMBB33303XnjhBaxevbre6yQnJ+O1115DVlYWfvzxRxw+fBgqlQr9+/fHpEmT8NhjjyEkJKSzTrtBTz/9NCwWCzZt2oTDhw/DYDAAAGprayWNi4hcmyBybgMiIiIij8SmYSIiIiIPxUSQiIiIyEMxESQiIiLyUEwEiYiIiDwUE0EiIiIiD8VEkIiIiMhDMREkIiIi8lBMBImIiIg8FBNBIiIiIg/FRJCIiIjIQzERJCIiIvJQTASJiIiIPBQTQSIiIiIP9f8BmpW/PLPyHr4AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define the quantile values to compute the locations for\n", "quants = np.linspace(0.01, 0.99, 7)\n", "# Compute the corresponding locations\n", "locs = norm_dist1.ppf(quants)\n", "# Construct the distribution using the quantile value and locations\n", "quant_dist = qp.quant(quants=quants, locs=locs)\n", "quant_vals = quant_dist.pdf(xvals)\n", "print(\"The input and output shapes are:\", xvals.shape, quant_vals.shape)\n", "# Construct a single PDF for plotting\n", "quant_dist1 = qp.quant(quants=np.atleast_1d(quants), locs=np.atleast_2d(locs[0]))\n", "fig, axes = qp.plotting.plot_native(quant_dist1, xlim=(-5., 5.), label=\"quantiles\")\n", "leg = fig.legend()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.01 0.17333333 0.33666667 0.5 0.66333333 0.82666667\n", " 0.99 ]\n", "[0. 0.01 0.17333333 0.33666667 0.5 0.66333333\n", " 0.82666667 0.99 1. ]\n" ] } ], "source": [ "print(quants)\n", "print(quant_dist.dist.quants)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `qp` interpolated parameterization\n", "\n", "This represents a set of distributions made by interpolating a set of x and y values. \n", "To construct this you need to give the x and y values (both of shape=(npdf, N))\n", "\n", "Note that the native visual representation is pretty similar to the original one for the Gaussian." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The input and output shapes are: (11,) (1, 11)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define the x-grid locations\n", "xvals = np.linspace(-5, 5, 11)\n", "# Compute the corresponding y values\n", "yvals = norm_dist1.pdf(xvals)\n", "# Construct the PDFs using the x grid and y values\n", "interp_dist = qp.interp(xvals=xvals, yvals=yvals)\n", "interp_vals = interp_dist.pdf(xvals)\n", "print(\"The input and output shapes are:\", xvals.shape, interp_vals.shape)\n", "# Construct a single PDF for plotting\n", "interp_dist1 = qp.interp(xvals=xvals, yvals=np.atleast_2d(yvals[0]))\n", "fig, axes = qp.plotting.plot_native(interp_dist1, xlim=(-5., 5.), label=\"interpolated\")\n", "leg = fig.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `qp` spline parameterization constructed from kernel density estimate (samples) parameterization\n", "\n", "This represents a set of distributions made by producing a kernel density estimate from a set of samples.\n", "\n", "To construct this you need to give the samples edges (shape=(npdf, Nsamples)).\n", "\n", "Note again that the the native visual represenation is different." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The input and output shapes are: (11,) (2, 51)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Take 100 random samples from each of 2 PDFs\n", "samples = norm_dist1.rvs(size=(2, 1000))\n", "# Define points at which to evaluate the kernal density estimate (KDE)\n", "xvals_kde = np.linspace(-5., 5., 51)\n", "# Use a utility function to construct the KDE, sample it, and they construct a spline\n", "kde_dist = qp.spline_from_samples(xvals=xvals_kde, samples=samples)\n", "kde_vals = kde_dist.pdf(xvals_kde)\n", "print(\"The input and output shapes are:\", xvals.shape, kde_vals.shape)\n", "# Construct a single PDF for plotting\n", "kde_dist1 = qp.spline_from_samples(xvals=xvals_kde, samples=np.atleast_2d(samples[0]))\n", "fig, axes = qp.plotting.plot_native(kde_dist1, xlim=(-5., 5.), label=\"kde\")\n", "leg = fig.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `qp` spline parameterization\n", "\n", "This represents a set of distributions made building a set of splines. Though the parameterization is defined by the spline knots, you can construct this from x and y values (both of shape=(npdf, N)).\n", "\n", "Note that the native visual representation is pretty similar to the original one for the Gaussian.\n", "\n", "Note also that the spline knots are stored." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The input and output shapes are: (11,) (1, 11)\n", "Spline knots [[-5. -5. -5. -5. -3. -2. -1. 0. 1. 2. 3. 5. 5. 5. 5.]] [[ 1.48609459e-06 1.68880388e-03 -5.05824770e-03 2.11574348e-02\n", " 2.37684221e-01 4.79319775e-01 2.37684221e-01 2.11574348e-02\n", " -5.05824770e-03 1.68880388e-03 1.48609459e-06 0.00000000e+00\n", " 0.00000000e+00 0.00000000e+00 0.00000000e+00]] [[3]]\n", "(1, 15)\n" ] }, { "data": { "image/png": "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pidRLNVv3FcQhDvWT0QkFp4aJiJJcnV1BdDQaFkQhNvejDNzjY8pLi62eNyioqJmt6vVaixbtgyXL19GdnY2PvroIzzwwAMoLS3FSy+9ZHYtIhGRrWAQJCJJCgkJAQAcP368xY8xrsubk5ODqqqqZvfJzs6+43GCgoLw9NNPY9u2bUhMTAQAfPzxxy2ug4jIWjAIEpEkPfTQQwCA999/v8WnV4OCguDn54fq6upml3LLyspCenp6q+owTi7Jz89v1eM6mnHFEeNpcCKijsAgSESS9Mwzz6B///7YvXs3HnvsMRQUFJjdX1lZiS+//BLx8fGmbXK53PTnJUuWIC0tzXTfpUuX8MQTT8DR0bHJc+3atQsvvfQSTp482eQ5/v73vwNomHEspv79+wNoWHmEiKijMAgSkSS5urriP//5DwICApCUlARfX1+EhIRg3LhxGDx4MLp164bY2FizsAcAzz33HO69915cvXoVUVFRCA4OxqhRozBw4ECUlZXhmWeeafJcFRUVeOuttzBkyBB4eXlhzJgxGDlyJLy9vfH5559Do9Hg3Xff7aqX3qzY2FgAwP3334/Q0FBMnDgREydORGFhoah1EZF146xhIpKsoKAgHDt2DImJidiyZQuys7Nx/vx59OrVCxMmTMC9996Lhx9+2OwxCoUC3377Ld5++2189tlnOH/+PHr27IknnngCf/3rX7F27domzxMdHY33338fqampOH78OE6ePAlHR0cMHDgQ06ZNw4svvggfH5+uetnNevXVV6HX67Fp0yacPHkSOp0OAFBTUyNqXURk3WQCexsQERER2SWeGiYiIiKyUwyCRERERHaKQZCIiIjITjEIEhEREdkpBkEiIiIiO8UgSERERGSnGASJiIiI7BSDIBEREZGdYhAkIiIislMMgkRERER2ikGQiIiIyE4xCBIRERHZKQZBIiIiIjv1/4fCm6O6jFpPAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# To make a spline you need the spline knots, you can get those from the xval, yval values\n", "splx, sply, spln = qp.spline_gen.build_normed_splines(np.expand_dims(xvals,0), yvals)\n", "spline_dist_orig = qp.spline(splx=splx, sply=sply, spln=spln)\n", "# Or we can do these two steps together using one function\n", "spline_dist = qp.spline_from_xy(xvals=np.expand_dims(xvals,0), yvals=yvals)\n", "spline_vals = spline_dist.pdf(xvals)\n", "print(\"The input and output shapes are:\", xvals.shape, spline_vals.shape)\n", "print(\"Spline knots\", spline_dist.dist.splx, spline_dist.dist.sply, spline_dist.dist.spln)\n", "# Construct a single PDF for plotting\n", "spline_dist1 = qp.spline_from_xy(xvals=np.atleast_2d(xvals), yvals=np.atleast_2d(yvals))\n", "print(spline_dist1.dist.splx.shape)\n", "fig, axes = qp.plotting.plot_native(spline_dist1, xlim=(-5., 5.), label=\"spline\")\n", "leg = fig.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Overplotting\n", "\n", "You can visually compare the represenations by plotting them all on the same figure." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axes = qp.plotting.plot_native(norm_dist1, xlim=(-5., 5.), label=\"norm\")\n", "qp.plotting.plot_native(hist_dist1, axes=axes)\n", "qp.plotting.plot_native(quant_dist1, axes=axes)\n", "qp.plotting.plot_native(interp_dist1, axes=axes, label=\"interp\")\n", "# qp.plotting.plot_native(kde_dist1, axes=axes)\n", "# qp.plotting.plot_native(spline_dist1, axes=axes, label=\"spline\")\n", "leg = fig.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The `qp.Ensemble` Class\n", "\n", "This is the basic element of `qp` - an object representing a set of probability density functions. This class is stored in the module `ensemble.py`. \n", "\n", "To create a `qp.Ensemble` you need to specify the class used to represent the PDFs, and provide that data for the specific set of PDFs. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ensembles of distributions\n", "\n", "`qp` no longer distinguishes between distributions and ensembles thereof -- a single distribution is just a special case of an ensemble with only one member, which takes advantage of computational efficiencies in `scipy`.\n", "The shape of the array returned by a call to the pdf function of a distribution depends on the shape of the parameters and evaluate points. \n", "\n", "For distributions that take multiple input arrays, `qp` uses te convention that the rows are the individual distributions and the columns are the values of the parameters defining the distributions under a known parameterization." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This object represents 2 pdfs\n", "The input and output shapes are: (51,) (2, 51)\n" ] } ], "source": [ "# This is a trivial extension, with the number of pdfs as a member of the `scipy.stats.norm_gen` distribution.\n", "loc = np.array([[0],[1]])\n", "scale = np.array([[1],[1]])\n", "norm_dist = qp.stats.norm(loc=loc, scale=scale)\n", "xvals = np.linspace(-5, 5, 51)\n", "yvals = norm_dist.pdf(xvals)\n", "print(\"This object represents %i pdfs\" % norm_dist.npdf)\n", "print(\"The input and output shapes are:\", xvals.shape, yvals.shape)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For an input vector of shape (51,) the output shape is (2, 51)\n" ] } ], "source": [ "print (\"For an input vector of shape %s the output shape is %s\" % (xvals.shape, yvals.shape))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# In this case we return an array were the rows are the evaluation points and the columns the different PDFs\n", "#vector_pdf = qp.stats.norm(loc=[0., 1., 2], scale=1.)\n", "#vector_pdf.pdf([[0.], [0.5]])\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# This is the same, except we use `numpy.expand_dims` to shape the input array of evaluation points\n", "# vector_pdf = qp.stats.norm(loc=[0., 1., 2], scale=1.)\n", "# vector_pdf.pdf(np.expand_dims(np.array([0., 0.5]), -1))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# In this case we return an array were the rows are pdfs and the columns the evaluation points\n", "#vector_pdf = qp.stats.norm(loc=[[0.], [1.], [2]], scale=1.)\n", "#vector_pdf.pdf([0., 0.5])\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# This is the same, except we use `numpy.expand_dims` to shape the input array of pdf parameters\n", "# vector_pdf = qp.stats.norm(loc=np.expand_dims([0., 1., 2], -1), scale=1.)\n", "# vector_pdf.pdf([0., 0.5])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we will create 100 Gaussians with means distributed between -1 and 1, and widths distributed between 0.9 and 1.1." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "locs = 2* (np.random.uniform(size=(100,1))-0.5)\n", "scales = 1 + 0.2*(np.random.uniform(size=(100,1))-0.5)\n", "ens_n = qp.Ensemble(qp.stats.norm, data=dict(loc=locs, scale=scales))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using the ensemble\n", "\n", "All of the methods of the distributions (`pdf`, `cdf` etc.) work the same way for an ensemble as for underlying classes. \n", "\n", "To isolate a single distribution in the ensemble, use the square brackets operator `[]`." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The shapes are: (51,) (100, 51)\n" ] }, { "data": { "image/png": "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T0uyB0gBYmNjO/05ICAAADBy5EiGn0FWVlaG2bNnIzY2Fs888wyqq6td7xsyZIiElSlDdnY27rrrLmRkZGDq1KlYs2YNiouLsWjRIqlLU5SHHnoI7733Hj7//HMEBga6erCCgoLg6+srcXXKEhgY2CXk+Pv7IywszKvDD8AARDSoNm7ciJMnT+LkyZNdwicHYwfeggULUFtbixUrVqC8vBypqanYsGED4uLipC5NUZzbEMyePbvT9TfeeAP33nvv4BdEisQpMCIiIlIcdl4SERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABGR11i2bBkEQcCyZcv69Tzx8fEQBAGFhYV9etzs2bMhCAK+//77Lu9rbW3FY489hoSEBGi1WgiCwF2PiSTEozCIiAbB/fffj/feew9+fn6YMGECdDodkpKSAMAV2Pob3Iio9xiAiIjcJDY2FqNHj4afn1+n6/X19fjggw/g5+eHo0ePIiYmptP7ly9fDoABiGgwMQAREbnJunXrur1+4sQJ2O12pKamdgk/RCQN9gAREQ2wtrY2AICvr6/ElRCREwMQEbmdIAgQBAEA8Mknn+Dyyy9HcHBwl8biuro6LF26FKmpqfD390dgYCCmTJmCf/7zn7Db7d0+t9VqxV//+lckJydDr9dj+PDhuP/++1FZWdljPaIoYt26da46fHx8MGTIEKSnp+Pxxx/HmTNnenzszp07MX/+fISEhMDf3x8zZ87Ed9991+295zdBFxYWQhAEzJ49GwCwZcsW19+Nswna+fd07t+b862vTdhE1HucAiOiAfOXv/wFTz75JKKiopCUlNTpG/rhw4dx1VVXobS0FD4+PkhMTITJZMLu3buxa9cubNy4ER9++GGngGCz2XDTTTfhyy+/BAAkJSXB19cXb7zxBjZu3Ijrr7++2zp+85vf4NlnnwXg6NNJSkpCTU0NDh06hH379mHatGmIjo7u8rh///vfyM7OhsFgwMiRI3Hy5Els374dV111FTZt2uQKNj3R6/WYPn06GhsbcejQIRgMBlx22WWu9yclJWH69On44YcfAADTp0/v8ngiGiAiEZGbARABiD4+PuKaNWtEu90uiqIoWiwW0WKxiM3NzeLIkSNFAOIjjzwiNjY2uh57+PBhcezYsSIA8R//+Een533xxRdFAGJISIi4bds21/XTp0+LqampolarFQGITz31lOt9VVVVokqlEoOCgsTt27d3er62tjbx/fffFw8cONDpelxcnAhA1Gq14sqVK0Wr1SqKoiiazWbxzjvvFAGImZmZXT7uWbNmiQDEzZs3d7q+efNmEYA4a9asC/59EdHg4RQYEQ2YBx98EPfff79rFEej0UCj0WDt2rU4deoUbrzxRrz44oswGAyux4wZMwbvvfceBEHAc88957ouiqJrFOePf/wjZsyY4XpffHw83nrrLVgsli41nDp1Cna7HXPnzu12hOW2227DuHHjuq3/6quvxpNPPgm1Wg0A0Gq1eOGFF6DT6bBr1y7U19df4t8MEUmNAYiIBszdd9/d7fVPP/0UALBw4cJu3z9u3DjEx8ejoKDA1Z+Tn5+P4uJi6PX6bjcQTEtLw5QpU7pcd6662rVrF4qLi/tUf3f1hYeHIz4+HgBQUFDQp+cjIvlgDxARDZiUlJRurx88eBAA8Ic//AF//vOfu72npqYGAFBaWoro6GgcP34cABAXF9dln51zX2/nzp2drg0fPhy33norPvroIyQmJmLOnDmYPXs2Zs6ciSlTpkCj6fnL4MiRI7u9HhkZiWPHjqG5ubnHxxKRvDEAEdGA8ff37/Z6Y2MjACA3N/eiz+FcQu4MGxERET3eGxUV1e31devWYcyYMXjttdewceNGbNy40fVcjz/+OLKzs6FSdR0Q76l+572iKF60fiKSJ06BEdGgCwgIAODYIFAUxQu+OVdaOR9TXV3d4/NWVVV1e12v12PZsmU4c+YM8vPz8eqrr+K6665DbW0tfvOb33TqNSIiZWAAIqJBN2bMGADAoUOHev0Y57lZxcXFaG1t7fae/Pz8iz5PcnIyHnjgAXzxxRdYtWoVAOCf//xnr+sgIu/AAEREg+6mm24CALz00ku9nkZKTk5GTEwM2trauj1yIi8vDzt27OhTHc6m6bKysj49zt2cO0Q7p/uIaOAxABHRoHvwwQcxYsQIbN68GXfeeSfKy8s7vb+5uRkffvghsrOzXddUKpXrz0uXLkVOTo7rfUVFRbjnnnug1Wq7vNa3336L3/zmNzhy5EiX1/jb3/4GwLGCTEojRowA4NgpmogGBwMQEQ26gIAAfPXVV0hISMD777+P6OhojBkzBlOmTMHo0aMRHByMBQsWdAo5APDwww/jmmuuQV1dHaZPn46UlBRMnDgRiYmJaGhowIMPPtjltZqamvDMM89g7NixiIyMxKRJkzBhwgRERUXh3XffRVBQEJ5//vnB+tC7tWDBAgDAT37yE6SlpWH27NmYPXs2KioqJK2LyJtxFRgRSSI5ORkHDhzAqlWr8K9//Qv5+fkoKCjA0KFDMWvWLFxzzTW4+eabOz1GrVbjs88+w7PPPos33ngDBQUFCAsLwz333IM//elPWL16dZfXmTlzJl566SVs2rQJhw4dwpEjR6DVapGYmIirr74ajz76KIYMGTJYH3a3nnzySdhsNnzwwQc4cuQITCYTAKC9vV3Suoi8mSByHScREREpDKfAiIiISHEYgIiIiEhxGICIiIhIcRiAiIiISHEYgIiIiEhxGICIiIhIcRiAiIiISHEYgIiIiEhxGICIiIhIcRiAiIiISHEYgIiIiEhxGICIiIhIcRiAiIiISHH+P9RGs0zYBtoxAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vals_n = ens_n.pdf(xvals)\n", "print(\"The shapes are: \", xvals.shape, vals_n.shape)\n", "fig, axes = qp.plotting.plot_native(ens_n[15], xlim=(-5.,5.))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Converting the ensemble\n", "\n", "The `qp.Ensemble.convert_to` function lets you convert ensembles to other representations. To do this you have to provide the original ensemble, the class you want to convert to, and any some keyword arguments to specify details about how to convert to the new class, here are some examples." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Making hist\n", "Making interp\n", "Making spline\n", "Making quants\n", "Making mixmod\n" ] } ], "source": [ "bins = np.linspace(-5, 5, 11)\n", "quants = np.linspace(0.01, 0.99, 7)\n", "print(\"Making hist\")\n", "ens_h = ens_n.convert_to(qp.hist_gen, bins=bins)\n", "print(\"Making interp\")\n", "ens_i = ens_n.convert_to(qp.interp_gen, xvals=bins)\n", "print(\"Making spline\")\n", "ens_s = ens_n.convert_to(qp.spline_gen, xvals=bins, method=\"xy\")\n", "#print(\"Making spline from samples\")\n", "#ens_s = ens_n.convert_to(qp.spline_gen, xvals=bins, samples=1000, method=\"samples\")\n", "print(\"Making quants\")\n", "ens_q = ens_n.convert_to(qp.quant_gen, quants=quants)\n", "print(\"Making mixmod\")\n", "ens_m = ens_n.convert_to(qp.mixmod_gen, samples=1000, ncomps=3)\n", "#print(\"Making flexcode\")\n", "#ens_f = ens_n.convert_to(qp.flex_gen, grid=bins, basis_system='cosine')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `qp.convert` function also works the more or less the same way, but with slightly different syntax, where you can use the name of the class instead of the class object. " ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Making hist\n", "Making interp\n", "Making spline\n", "Making quants\n", "Making mixmod\n" ] } ], "source": [ "print(\"Making hist\")\n", "ens_h2 = qp.convert(ens_n, \"hist\", bins=bins)\n", "print(\"Making interp\")\n", "ens_i2 = qp.convert(ens_n, \"interp\", xvals=bins)\n", "print(\"Making spline\")\n", "ens_s2 = qp.convert(ens_n, \"spline\", xvals=bins, method=\"xy\")\n", "print(\"Making quants\")\n", "ens_q2 = qp.convert(ens_n, \"quant\", quants=quants)\n", "print(\"Making mixmod\")\n", "ens_m2 = qp.convert(ens_n, \"mixmod\", samples=1000, ncomps=3)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comparing Parametrizations\n", "\n", "`qp` supports quantitative comparisons between different distributions, across parametrizations." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Qualitative Comparisons: Plotting\n", "\n", "Let's visualize the PDF object in order to original and the other representaions. The solid, black line shows the true PDF evaluated between the bounds. The green rugplot shows the locations of the 1000 samples we took. The vertical, dotted, blue lines show the percentiles we asked for, and the hotizontal, dotted, red lines show the 10 equally spaced bins we asked for. Note that the quantiles refer to the probability distribution *between the bounds*, because we are not able to integrate numerically over an infinite range. Interpolations of each parametrization are given as dashed lines in their corresponding colors. Note that the interpolations of the quantile and histogram parametrizations are so close to each other that the difference is almost imperceptible!" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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b+exxx5jwYIFbNiwgaNHj/LMM8/U+/148sknmTdvHgkJCeh0Ov70pz8Bjm7uhx9+mJ49ezrfj1tvvRVVVbn22mvJzMxk2bJlJCYm0r9/f6688krOnj17yWcF+OSTT9DpdGzbto0333yTN954gw8++MB5vrb3+kJFRUVcc801rFy5kl27djFp0iSuu+460tLSAPjmm2/o1KkTzz//vPM5APbt28ekSZO46aab2Lt3L4sXL2bjxo3cd999VWJJSUlh9erVfP311yxcuJCsrKx6v8cmkwm73Y7Var1kudmzZ1NYWMiKFSvqXUdtpLtWCCFEq7J06dJqrRo2m+2S16SlpfHoo4/SvXt3AGJjY53nfHx8UBSF0NBQ57HDhw/zww8/sGnTJoYPHw7A559/Tnh4ON999x233HIL//rXv7j66qudSWHXrl3ZvHkzS5curVK32Wzm008/JSgoyHns5ptvrlLmww8/JDg4mAMHDtCrVy/n8UceeYRJkyYB8OCDD3L77bezatUqRowYAcD06dOdLW318cILLzBmzBgAHn/8ca699lrKysowmUx4eno6W6UqrV69mn379pGVlYWbmxsAr732Gt999x1ff/01f/7zny/6rADh4eG88cYbKIpCt27d2LdvH2+88QYzZ86s03t9ob59+9K3b1/n5//4xz/49ttv+eGHH7jvvvvw9/dHq9Xi5eVV5TleffVVpkyZwqxZswDH98Gbb77JmDFjePvtt0lLS+Pnn39m69atDBkyxPm1iYuLq9f7e/DgQd5++20GDx6Ml5fXJctWfk+mpKRUOd6pU6cqn6emphIQEFCvOKQlTwghRKsybtw4du/eXeV1fqtQTR566CFmzJjB+PHjeemll6p0jdYkKSkJnU7n/EMPEBAQQLdu3UhKSgIcY6YGDx5c5boLPweIjIyslvQcPXqUKVOmEBMTg7e3N9HR0QDOlqhKffr0cX4cEhICQO/evascu5xWpvPvGxYWBnDJ+yQmJlJUVERAQACenp7O1/Hjx6u8lzU9K8DQoUOrdJkOGzaMw4cPY7PZ6vReX6i4uJjHHnuMHj164Ovri6enJwcPHqz2/tX0HIsWLaryDJMmTcJut3P8+HFnLAMHDnRe07179zpNzNm3bx+enp6YTCZ69OhBeHh4nbp6K7utz39/ADZs2FDle9zPz6/We11IWvKEEEK0Kh4eHnTp0qXKsZMnT17ymrlz5zJlyhR++uknfv75Z5599lm++uorbrzxxhrLnz9e7MLjlX+Mz//4Utd5eHhUO3bdddcRHh7O+++/T4cOHbDb7fTq1Quz2Vyl3PkTFyrruvDYhV28dVHTfS91H7vdTlhYGGvXrq127vwEqKZnrU1d3usLPfrooyxfvpzXXnuNLl26YDKZ+P3vf1/t/buQ3W7nL3/5Cw888EC1cxEREc6xiRer91K6devGDz/8gFarpUOHDs4Wz9pUJrKViX6l6OjoBs/6liRPCCFEu9C1a1e6du3K7Nmzuf322/n444+58cYbMRgM1bp7e/TogdVqZdu2bc4uxJycHJKTk51dd927d2f79u1VrktISKg1jpycHJKSknj33XcZNWoUABs3bmyMR2wUNb0f/fv3JzMzE51OR1RUVL3vuXXr1mqfx8bGotVq6/ReX2jDhg3cddddziS9qKioWnfnxZ5j//791f5JqBQXF4fVaiUhIcHZKnvo0CHn0jyXYjAYLnrfS6kcEzp+/Ph6X1sb6a4VQgjRppWWlnLfffexdu1aUlNT2bRpEzt27HAmEFFRURQVFbFq1Sqys7MpKSkhNjaW66+/npkzZ7Jx40b27NnD1KlT6dixI9dffz0A999/P8uWLeP111/n8OHDvPvuu/z888+1tgL5+fkREBDAe++9x5EjR1i9ejUPPfRQk78PdRUVFcXx48fZvXs32dnZlJeXM378eIYNG8YNN9zA8uXLSUlJYfPmzTz11FN1SmxPnDjBQw89xKFDh/jyyy/517/+xYMPPghQp/f6Ql26dOGbb75h9+7d7NmzhylTplRriYyKimL9+vWcOnWK7OxsAObMmcOWLVv429/+xu7du53jAe+//37A0Rp31VVXMXPmTLZt20ZiYiIzZsxotOV48vLyyMzMJDU1lRUrVvD73/+eL774grfffrtJ1mqUJE8IIUSbptVqycnJYdq0aXTt2pU//OEPXH311Tz33HMADB8+nHvuuYdbb72VoKAgXnnlFcCxptmAAQOYPHkyw4YNQ1VVli1b5uzqHDFiBO+88w6vv/46ffv25ZdffmH27NkYjcZLxqPRaPjqq69ITEykV69ezJ49m1dffbVp34R6uPnmm7nqqqsYN24cQUFBfPnllyiKwrJlyxg9ejR/+tOf6Nq1K7fddhspKSnO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yMhA0zRSUlIAWLduXfVzUzXwoup5qv28VW1nO/BDCCFqk+5aIUSDeeqpp5g+fTpxcXH06NHDL2nZuXMnY8aM4dChQ1itVrp164bT6eTbb79l8+bNrFy5knfffdcvCfJ6vVx//fUsX74cgB49ehAaGsrrr7/OypUrufrqq+uN44EHHuDZZ58FfNfN9ejRg/z8fH766Se+//57hg4dSocOHerU++STT0hNTSUyMpKuXbuyb98+1q9fz5gxY1i1alV18nYyNpuNYcOGUVRUxE8//URkZCR9+/atPt6jRw+GDRvGhg0bABg2bFid+kII8YspIYQ4xwAFKKvVql5++WVlGIZSSim3263cbrdyOByqa9euClD33nuvKioqqq67c+dO1adPHwWoF1980e+8zz//vAJUdHS0+vrrr6v3HzhwQCUnJyuLxaIANXPmzOpjeXl5Std1FRUVpdavX+93vvLycrVkyRL1ww8/+O1PTExUgLJYLGrWrFnK4/EopZRyuVxqwoQJClCDBw+u87hHjBihALVmzRq//WvWrFGAGjFixCmfLyGEOJeku1YI0WDuvPNOJk2aVN0aZzabMZvNvPbaa+zfv5/rrruO559/nsjIyOo6vXv35u2330bTNJ577rnq/Uqp6ta4xx9/nEsuuaT6WOfOnXnzzTdxu911Yti/fz+GYTBq1Kh6W8puuukm+vXrV2/8V1xxBdOnT8dkMgFgsViYO3cuISEhbN68mYKCgl/4zAghRMOTJE8I0WBuueWWevd/8MEHAEycOLHe4/369aNz586kp6dXXy+XlpZGVlYWNput3kmEBwwYwJAhQ+rsrxrNunnzZrKyss4q/vria9OmDZ07dwYgPT39rM4nhBCNSa7JE0I0mF69etW7f8eOHQD87W9/48knn6y3TH5+PgCHDh2iQ4cO7N27F4DExMQ689DVvr9Nmzb57UtISODGG2/kP//5D926dWPkyJGkpKQwfPhwhgwZgtl88o/Brl271rs/NjaWPXv24HA4TlpXCCECTZI8IUSDCQsLq3d/UVERAFu3bj3tOaqmH6lKqNq2bXvSsnFxcfXuf+utt+jduzevvPIKK1euZOXKldXnevDBB0lNTUXX63ZsnCz+qrJKqdPGL4QQgSLdtUKIRhceHg74JglWSp1yqxrBWlXn6NGjJz1vXl5evfttNhuPPPIIBw8eJC0tjUWLFnHVVVdx7NgxHnjgAb9r/4QQIlhIkieEaHS9e/cG4KeffjrjOlXrvGZlZVFWVlZvmbS0tNOep2fPnvzxj3/k448/Zv78+QD885//POM4hBCiuZAkTwjR6K6//noA5s2bd8Zdnj179qRjx46Ul5fXu3zY9u3b+eabb84qjqqBGjk5OWdV71yrWgmjqmtaCCHOBUnyhBCN7s4776RLly6sWbOGCRMmkJub63fc4XDw7rvvkpqaWr1P1/Xqvx9++GE2btxYfSwzM5Nbb70Vi8VS575Wr17NAw88wK5du+rcxzPPPAP4RuYGUpcuXQDfihhCCHGuSJInhGh04eHhfPrppyQlJbFkyRI6dOhA7969GTJkCOeddx6tWrVi/PjxfokcwD333MO4ceM4fvw4w4YNo1evXlxwwQV069aNwsJC7rzzzjr3VVJSwuzZs+nTpw+xsbFceOGF9O/fn7i4OP79738TFRXFnDlzGuuh12v8+PEA/Pa3v2XAgAGkpKSQkpLC4cOHAxqXEKJ5k9G1QoiA6NmzJz/88APz58/nww8/JC0tjfT0dNq1a8eIESMYN24cN9xwg18dk8nEsmXLePbZZ3n99ddJT08nJiaGW2+9lSeeeIIFCxbUuZ/hw4czb948Vq1axU8//cSuXbuwWCx069aNK664gmnTphEfH99YD7te06dPx+v1snTpUnbt2oXT6QSgoqIioHEJIZo3TckcAEIIIYQQQUe6a4UQQgghgpAkeUIIIYQQQUiSPCGEEEKIICRJnhBCCCFEEJIkTwghhBAiCEmSJ4QQQggRhCTJE0IIIYQIQpLkCSGEEEIEIUnyhBBCCCGCkCR5QgghhBBBSJI8IYQQQoggJEmeEEIIIUQQkiRPCCGEECII/X+MuwOXPGtjCgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axes = qp.plotting.plot_native(ens_n[15], xlim=(-5.,5.))\n", "qp.plotting.plot_native(ens_h[15], axes=axes)\n", "qp.plotting.plot_native(ens_q[15], axes=axes, label='quantile')\n", "qp.plotting.plot_native(ens_i[15], axes=axes, label='interp')\n", "# qp.plotting.plot_native(ens_s[15], axes=axes, label='spline')\n", "qp.plotting.plot_native(ens_m[15], axes=axes, label='mixmod')\n", "#qp.qp_plot_native(ens_f[15], axes=axes, label='flex')\n", "leg = fig.legend()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also interpolate the function onto an evenly spaced grid point and cache those values with the `gridded` function." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "scrolled": true }, "outputs": [], "source": [ "grid = np.linspace(-3., 3., 100)\n", "gridded = ens_n.pdf(grid)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0 0.0\n" ] } ], "source": [ "cached_gridded = ens_n.gridded(grid)[1]\n", "check = gridded - cached_gridded\n", "print(check.min(), check.max())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Quantitative Comparisons" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "symm_lims = np.array([-1., 1.])\n", "all_lims = [symm_lims, 2.*symm_lims, 3.*symm_lims]" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Next, let's compare the different parametrizations to the truth using the Kullback-Leibler Divergence (KLD). The KLD is a measure of how close two probability distributions are to one another -- a smaller value indicates closer agreement. It is measured in units of bits of information, the information lost in going from the second distribution to the first distribution. The KLD calculator here takes in a shared grid upon which to evaluate the true distribution and the interpolated approximation of that distribution and returns the KLD of the approximation relative to the truth, which is not in general the same as the KLD of the truth relative to the approximation. Below, we'll calculate the KLD of the approximation relative to the truth over different ranges, showing that it increases as it includes areas where the true distribution and interpolated distributions diverge." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.00328146 0.00054128 0.00336019 0.00313608 0.00309157 0.00439593\n", " 0.00351473 0.00401957 0.00307561 0.00071542 0.00399572 0.00071199\n", " 0.00020325 0.00094967 0.00241168 0.00375948 0.00220818 0.0030863\n", " 0.00087861 0.00405013 0.00232632 0.00215408 0.00367854 0.00158009\n", " 0.00425325 0.00375375 0.00304016 0.00358496 0.0018729 0.00274755\n", " 0.00328138 0.00191869 0.00110029 0.00266608 0.00426591 0.0032709\n", " 0.00099753 0.00148295 0.004339 0.00128665 0.0034808 0.00202899\n", " 0.00317622 0.00062753 0.00030643 0.00220329 0.00193671 0.0026318\n", " 0.00346929 0.00288634 0.00097727 0.00379207 0.00123326 0.00201153\n", " 0.00345742 0.00339039 0.00340414 0.00334835 0.00324942 0.00234062\n", " 0.00291409 0.00192987 0.00339078 0.00449794 0.0016507 0.00100137\n", " 0.00282526 0.00433243 0.0037402 0.00143214 0.00249251 0.00273985\n", " 0.00383852 0.00032115 0.00387173 0.00048201 0.00359615 0.00135482\n", " 0.00343967 0.00069775 0.00178008 0.00276994 0.0044026 0.0042397\n", " 0.00361834 0.00195354 0.00372586 0.00249882 0.00290852 0.00372111\n", " 0.001671 0.001206 0.00316984 0.00365273 0.00424861 0.00378746\n", " 0.00405003 0.00343775 0.00375975 0.00236313]\n" ] } ], "source": [ "# for a single pair of pdfs. (the 15th in each ensemble)\n", "klds = qp.metrics.calculate_kld(ens_n, ens_s, limits=symm_lims)\n", "print(klds)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hist approximation: KLD over 1, 2, 3, sigma ranges = ['1.16e-02 +- 3.49e-03', '2.76e-02 +- 5.08e-03', '3.72e-02 +- 5.09e-03']\n", "interp approximation: KLD over 1, 2, 3, sigma ranges = ['3.16e-02 +- 1.09e-02', '2.33e-02 +- 2.57e-03', '1.01e-02 +- 1.84e-03']\n", "broken KLD: (array([-3.34073758e-04, 3.30912703e-03, -4.93786389e-04, -8.37800072e-05,\n", " -4.23816201e-05, -2.63557762e-03, -3.80957819e-04, -1.11335081e-03,\n", " 8.56201563e-04, 4.02000723e-03, -1.49144484e-03, 3.46311341e-03,\n", " 3.08394516e-03, 2.79441731e-03, 2.24046439e-03, -9.31299916e-04,\n", " 3.02823460e-03, -1.94305192e-05, 3.43139231e-03, -1.98802528e-03,\n", " 1.39418648e-03, 2.30234841e-03, -1.09911717e-03, 3.72754266e-03,\n", " -2.51893030e-03, -3.63005093e-04, 3.41980113e-05, -8.76962967e-04,\n", " 1.43427777e-03, 1.23864114e-03, -3.64128172e-04, 3.00846302e-03,\n", " 2.02608266e-03, 5.47566568e-04, -2.57346642e-03, -3.45660996e-04,\n", " 5.36599725e-03, 1.75650112e-03, -2.69549032e-03, 3.86151018e-03,\n", " 2.22526000e-05, 1.25840398e-03, -1.95085916e-04, 2.25503028e-03,\n", " 4.76528933e-03, 1.10201119e-03, 1.60199763e-03, 2.19871055e-03,\n", " -6.86871403e-04, 5.56883181e-04, 1.96662508e-03, -3.56015982e-04,\n", " 3.34035129e-03, 2.87996865e-03, -6.70192665e-04, 2.49894002e-04,\n", " -5.73335278e-04, 3.65654803e-04, -2.91298470e-04, 1.70596857e-03,\n", " 7.31942748e-04, 2.02205407e-03, -4.57115313e-04, -3.27536178e-03,\n", " 1.59061460e-03, 4.40963646e-03, 7.06550418e-04, -2.78845406e-03,\n", " -1.16320575e-03, 4.19302957e-03, 2.63697340e-03, 5.01463826e-04,\n", " -1.12696721e-03, 2.70562216e-03, -1.26008305e-03, 2.62483104e-03,\n", " -7.60031839e-04, 4.45010272e-03, -4.29970668e-04, 4.36210604e-03,\n", " 3.54380054e-03, 4.14320241e-04, -2.98455986e-03, -2.34217789e-03,\n", " -8.69640835e-04, 2.65701800e-03, -1.20133261e-03, 2.34313665e-03,\n", " 8.26396096e-04, -1.19196031e-03, 3.51193861e-03, 3.31317572e-03,\n", " -6.04159737e-05, -1.05284311e-03, -2.44199150e-03, -1.35348935e-03,\n", " -1.74683330e-03, -6.17281392e-04, -1.27508474e-03, 2.50276099e-03]), array([[0.04158177, 0.0424172 , 0.04326552, ..., 0.09409137, 0.09261009,\n", " 0.09114391],\n", " [0.22697479, 0.22927238, 0.23157117, ..., 0.00691147, 0.00672226,\n", " 0.00653761],\n", " [0.05572842, 0.05675937, 0.05780428, ..., 0.07616999, 0.07489766,\n", " 0.07364005],\n", " ...,\n", " [0.04474244, 0.04563761, 0.04654641, ..., 0.08447921, 0.08308015,\n", " 0.08169675],\n", " [0.07038916, 0.07169775, 0.07302346, ..., 0.04471112, 0.04379051,\n", " 0.04288462],\n", " [0.1660937 , 0.16854776, 0.17101843, ..., 0.00669825, 0.00649407,\n", " 0.00629539]]), array([[0.04154382, 0.04243922, 0.04334912, ..., 0.09415211, 0.09259685,\n", " 0.09106071],\n", " [0.22650018, 0.22869495, 0.23089381, ..., 0.00686016, 0.00669047,\n", " 0.00652394],\n", " [0.05568083, 0.05677995, 0.05789545, ..., 0.07625346, 0.0749063 ,\n", " 0.07357716],\n", " ...,\n", " [0.04470637, 0.04566969, 0.04664857, ..., 0.08457681, 0.08309406,\n", " 0.08163088],\n", " [0.07035097, 0.07176398, 0.07319822, ..., 0.04485835, 0.04385139,\n", " 0.04286135],\n", " [0.16575272, 0.16822305, 0.17071705, ..., 0.00661015, 0.00644473,\n", " 0.00628247]]), 0.010025062656641603)\n", "spline approximation: KLD over 1, 2, 3, sigma ranges = ['2.68e-03 +- 1.17e-03', '2.22e-16 +- 0.00e+00', '1.06e-03 +- 2.69e-04']\n", "broken KLD: (array([ 8.98303006e-03, -9.51730506e-03, 1.02657120e-02, 8.21684653e-03,\n", " 8.82376378e-03, 5.52704766e-03, 3.69761907e-03, 2.30600025e-03,\n", " 3.41303958e-06, -1.22217422e-02, 4.68953407e-03, -9.53594768e-03,\n", " -1.03834940e-02, -5.52635528e-03, -4.50462474e-03, 4.36753856e-03,\n", " -8.84482248e-03, 8.37814814e-03, -8.86003955e-03, 9.16933360e-03,\n", " 7.26076775e-04, -3.53858869e-03, 9.47791805e-03, -1.04950079e-02,\n", " 8.34050626e-03, 1.12269468e-03, 8.62456698e-03, 8.62174010e-03,\n", " 1.16448736e-03, -4.89657041e-05, 1.05526680e-02, -7.16580349e-03,\n", " -1.94642870e-03, 6.40059194e-03, 8.59098151e-03, 1.04199251e-02,\n", " -1.86149581e-02, -6.27756444e-04, 7.33944011e-03, -1.07431237e-02,\n", " 1.40951178e-03, 2.22707432e-03, 1.01779843e-02, -4.34822157e-03,\n", " -1.69841441e-02, 3.12338404e-03, 2.49338826e-04, -5.85061824e-03,\n", " 9.97693830e-03, 3.54686773e-03, -2.01669921e-03, 7.56522646e-04,\n", " -7.82094707e-03, -6.72017358e-03, 1.03380400e-02, 9.58239564e-04,\n", " 1.04071456e-02, 6.69538020e-04, 9.31046635e-03, -7.90115892e-04,\n", " 1.85082323e-03, -1.46541344e-03, 7.41023694e-03, 7.91552391e-03,\n", " 2.41475339e-04, -1.37123607e-02, 2.79547603e-03, 8.72110195e-03,\n", " 7.65545758e-03, -1.29067450e-02, -8.00376766e-03, 6.06385450e-03,\n", " 4.60158237e-03, -7.98838212e-03, 5.11902225e-03, -6.69771362e-03,\n", " 6.06818233e-03, -1.42314129e-02, 5.62386452e-03, -1.39184950e-02,\n", " -1.00694190e-02, 7.06452359e-03, 8.30182856e-03, 6.69491806e-03,\n", " 7.02665715e-03, -5.02592561e-03, 9.41870860e-03, -5.88154551e-03,\n", " 1.27468312e-03, 9.46231543e-03, -9.44962320e-03, -7.68794941e-03,\n", " 6.71995803e-03, 9.86061149e-03, 7.50096427e-03, 9.88916702e-03,\n", " 5.74703133e-03, 9.44853227e-03, 9.33492462e-03, -6.08304168e-03]), array([[0.19407733, 0.19621106, 0.19835029, ..., 0.29135321, 0.28934976,\n", " 0.28733408],\n", " [0.38768602, 0.38790636, 0.38808966, ..., 0.06825522, 0.06701765,\n", " 0.06579622],\n", " [0.22420955, 0.22635334, 0.22849729, ..., 0.26192881, 0.25983483,\n", " 0.25773464],\n", " ...,\n", " [0.20520294, 0.20740271, 0.20960669, ..., 0.28152676, 0.27941066,\n", " 0.27728483],\n", " [0.27173328, 0.27407637, 0.27641221, ..., 0.21682929, 0.21446226,\n", " 0.21210001],\n", " [0.40731394, 0.40862415, 0.40989122, ..., 0.08246851, 0.08087256,\n", " 0.07929834]]), array([[0.2053355 , 0.20719401, 0.20905251, ..., 0.29001173, 0.28815322,\n", " 0.28629471],\n", " [0.37724886, 0.37724886, 0.37724886, ..., 0.11480744, 0.11480744,\n", " 0.11480744],\n", " [0.23092716, 0.23275527, 0.23458339, ..., 0.2633345 , 0.26150639,\n", " 0.25967827],\n", " ...,\n", " [0.21537287, 0.21727029, 0.21916772, ..., 0.28128067, 0.27938324,\n", " 0.27748582],\n", " [0.27384254, 0.27588112, 0.2779197 , ..., 0.22680026, 0.22476168,\n", " 0.22272309],\n", " [0.39879348, 0.40057706, 0.40236064, ..., 0.126082 , 0.126082 ,\n", " 0.126082 ]]), 0.010050251256281407)\n", "broken KLD: (array([-0.02357027, 0.19435049, -0.0203779 , -0.02469229, -0.02230252,\n", " 0.05360906, 0.07383069, 0.14531838, 0.15401953, 0.21311165,\n", " 0.06821509, 0.19530729, 0.19312893, 0.16398985, 0.18763004,\n", " 0.06059787, 0.20747871, -0.0237511 , 0.19316534, -0.03439368,\n", " 0.07633188, 0.16680545, -0.02726511, 0.20926851, -0.04007309,\n", " 0.15582073, -0.02254734, -0.02824433, 0.01226846, 0.13823826,\n", " -0.01838484, 0.19520918, 0.10274156, -0.02517309, -0.03990016,\n", " -0.01870853, 0.23672516, 0.05785032, -0.04349694, 0.21232491,\n", " 0.13770425, -0.02148004, -0.01841089, 0.1367145 , 0.22781226,\n", " -0.02844367, 0.05932573, 0.19655473, -0.02277272, 0.01762231,\n", " 0.0972065 , 0.17011663, 0.1921205 , 0.19247703, -0.02149333,\n", " 0.14579567, -0.02051636, 0.14813254, -0.02217115, 0.13225046,\n", " 0.08832894, 0.12624929, -0.02938114, -0.04638294, 0.02990044,\n", " 0.2190113 , 0.04295165, -0.04115844, -0.03279453, 0.22111803,\n", " 0.20540574, -0.02678819, 0.06247494, 0.17536923, 0.04422412,\n", " 0.16062781, -0.02664251, 0.22567953, -0.01834663, 0.21713483,\n", " 0.21296867, -0.02452218, -0.04347256, -0.01711435, -0.03280182,\n", " 0.18537584, -0.02815838, 0.20092492, 0.10841399, -0.02797071,\n", " 0.20943696, 0.19544909, -0.02932595, -0.02582038, -0.04142031,\n", " -0.02794344, 0.02215109, -0.02395557, -0.02891548, 0.19312418]), array([[0.04158177, 0.0424172 , 0.04326552, ..., 0.09409137, 0.09261009,\n", " 0.09114391],\n", " [0.22697479, 0.22927238, 0.23157117, ..., 0.00691147, 0.00672226,\n", " 0.00653761],\n", " [0.05572842, 0.05675937, 0.05780428, ..., 0.07616999, 0.07489766,\n", " 0.07364005],\n", " ...,\n", " [0.04474244, 0.04563761, 0.04654641, ..., 0.08447921, 0.08308015,\n", " 0.08169675],\n", " [0.07038916, 0.07169775, 0.07302346, ..., 0.04471112, 0.04379051,\n", " 0.04288462],\n", " [0.1660937 , 0.16854776, 0.17101843, ..., 0.00669825, 0.00649407,\n", " 0.00629539]]), array([[0.11162411, 0.11162411, 0.11162411, ..., 0.11162411, 0.11162411,\n", " 0.11162411],\n", " [0.23475385, 0.23671494, 0.23867604, ..., 0. , 0. ,\n", " 0. ],\n", " [0.11070769, 0.11070769, 0.11070769, ..., 0.11070769, 0.11070769,\n", " 0.11070769],\n", " ...,\n", " [0.11278684, 0.11278684, 0.11278684, ..., 0.11278684, 0.11278684,\n", " 0.11278684],\n", " [0.1169069 , 0.1169069 , 0.1169069 , ..., 0.1169069 , 0.1169069 ,\n", " 0.1169069 ],\n", " [0.18348414, 0.18584932, 0.1882145 , ..., 0. , 0. ,\n", " 0. ]]), 0.010025062656641603)\n", "quant approximation: KLD over 1, 2, 3, sigma ranges = ['2.22e-16 +- 0.00e+00', '2.22e-16 +- 0.00e+00', '3.15e-01 +- 8.59e-02']\n", "broken KLD: (array([ 7.80063387e-03, 2.94335652e-03, -4.61147929e-04, 1.11253852e-02,\n", " 3.11477444e-02, 6.03501135e-03, 1.26756289e-02, 2.29322839e-02,\n", " -2.24205487e-02, 5.15568373e-03, -5.46595929e-03, -1.73646005e-03,\n", " 1.37062559e-02, -6.94627895e-03, 9.52552610e-03, 6.23852763e-03,\n", " -1.85879105e-02, -1.27292400e-02, -2.24968187e-03, 1.62342912e-02,\n", " 6.49114330e-04, -6.94648665e-03, 1.68811821e-02, 7.59902714e-03,\n", " -1.23527939e-02, -7.57307332e-03, 2.70911447e-03, -6.11975783e-03,\n", " 1.08761641e-02, -1.50760107e-02, 1.86577739e-02, -1.68893045e-02,\n", " 1.73401673e-02, 7.61505105e-03, 5.51848137e-02, 6.36643662e-03,\n", " 7.20372862e-03, 2.12848604e-02, 1.81775812e-02, 1.16965547e-02,\n", " 1.23390794e-02, 3.49405203e-02, 2.60155703e-02, -1.41870440e-02,\n", " -3.17658862e-03, 9.98062060e-03, 2.60518823e-02, -3.46898433e-04,\n", " 9.83126688e-03, -2.17161762e-02, -1.15239088e-02, -2.53479136e-02,\n", " -1.69489099e-02, -1.07280190e-02, 3.86241686e-03, -1.50393350e-02,\n", " 2.01861332e-04, 1.47854861e-02, 7.11512059e-03, 3.71516374e-03,\n", " -1.34900652e-02, 9.42189229e-03, -1.09521565e-02, 8.56822042e-03,\n", " -7.98139182e-03, 5.24890412e-03, -1.19728832e-02, 1.46401984e-02,\n", " 2.43949425e-03, 1.56621758e-03, -5.38799314e-03, -1.13412226e-02,\n", " -1.56844491e-02, 3.53863422e-02, 1.49320654e-02, 1.20238218e-03,\n", " 1.24321685e-02, 4.64911750e-03, 6.60211936e-03, -2.00605266e-03,\n", " 9.71759125e-04, -1.48541386e-02, 3.48928246e-02, 4.06531301e-02,\n", " -6.37506417e-05, -7.79669837e-03, 4.18335121e-02, 1.44635000e-02,\n", " -2.11948574e-02, 1.78358204e-02, 6.96966918e-03, 1.90352430e-03,\n", " 1.74320636e-02, 7.57413871e-03, 1.36202542e-02, 3.21833516e-03,\n", " 1.68450071e-02, 2.41603511e-02, 1.96869204e-02, 2.33321177e-03]), array([[0.19407733, 0.19621106, 0.19835029, ..., 0.29135321, 0.28934976,\n", " 0.28733408],\n", " [0.38768602, 0.38790636, 0.38808966, ..., 0.06825522, 0.06701765,\n", " 0.06579622],\n", " [0.22420955, 0.22635334, 0.22849729, ..., 0.26192881, 0.25983483,\n", " 0.25773464],\n", " ...,\n", " [0.20520294, 0.20740271, 0.20960669, ..., 0.28152676, 0.27941066,\n", " 0.27728483],\n", " [0.27173328, 0.27407637, 0.27641221, ..., 0.21682929, 0.21446226,\n", " 0.21210001],\n", " [0.40731394, 0.40862415, 0.40989122, ..., 0.08246851, 0.08087256,\n", " 0.07929834]]), array([[0.17385592, 0.17562417, 0.17741141, ..., 0.26521649, 0.26361563,\n", " 0.26203605],\n", " [0.40217844, 0.40251923, 0.40277776, ..., 0.08724369, 0.08564275,\n", " 0.08405297],\n", " [0.23104453, 0.23239689, 0.23374614, ..., 0.24212153, 0.23997808,\n", " 0.23785036],\n", " ...,\n", " [0.19274212, 0.19386868, 0.19499448, ..., 0.26842007, 0.26680753,\n", " 0.26521952],\n", " [0.24872105, 0.2504306 , 0.25215592, ..., 0.2251332 , 0.22389317,\n", " 0.22264964],\n", " [0.44789748, 0.45104328, 0.45411757, ..., 0.07590187, 0.07403968,\n", " 0.07219892]]), 0.010050251256281407)\n", "broken KLD: (array([ 3.89800923e-03, 1.38596342e-02, -8.69286877e-03, -3.00516601e-03,\n", " 1.83243916e-02, 4.04879963e-07, 8.33086880e-03, 1.66504198e-02,\n", " 8.46235117e-03, 1.05139011e-02, 1.91429545e-03, -2.09859674e-03,\n", " 1.88961432e-03, 6.68010018e-03, 7.75665394e-03, -1.75135738e-04,\n", " 1.20420045e-02, 1.00846912e-02, 1.72322487e-02, -5.81967548e-03,\n", " 1.16584878e-02, -3.26805442e-03, 2.92448568e-03, 2.64355613e-03,\n", " -5.85684242e-03, 8.83206489e-03, 4.82844972e-03, 5.21939021e-03,\n", " 1.17723418e-02, 1.38341470e-02, 1.07731057e-02, 1.39602592e-02,\n", " 1.30948122e-02, 3.17822594e-02, 1.03833609e-02, -5.93727085e-04,\n", " 2.19135591e-02, 7.17424530e-03, 1.96775658e-03, 8.60985529e-03,\n", " 4.15006735e-03, 2.20306378e-02, 1.29131731e-03, -2.08071161e-03,\n", " 1.30881947e-02, 3.50644719e-03, 1.34911648e-02, 9.52032687e-03,\n", " 7.59406291e-03, 2.22814116e-02, 5.39039650e-04, 5.70152803e-03,\n", " 1.85218014e-02, -4.37046496e-03, -1.99261538e-03, 8.22808398e-03,\n", " 4.06796577e-04, 1.12832456e-02, 1.30902640e-02, 6.38532803e-03,\n", " -1.21173698e-03, 1.02705388e-02, -4.98564975e-03, -7.50734841e-04,\n", " 4.49616767e-03, 1.69380224e-02, -4.50833118e-04, 1.22986759e-02,\n", " 8.87656331e-03, 1.79375427e-02, 1.05595480e-02, -9.78783721e-04,\n", " 8.41800444e-03, 1.31925778e-02, 6.89334523e-03, 9.39811690e-03,\n", " -6.90893029e-03, 1.54415292e-02, -1.16088108e-02, 6.26749546e-03,\n", " 1.78137596e-02, -6.20870031e-03, 1.60730122e-02, 1.26099423e-02,\n", " 1.29003617e-02, 9.33053317e-03, 1.11465595e-02, 2.05201292e-02,\n", " 9.63597539e-04, 8.82980102e-03, 8.54578277e-03, -1.22506690e-03,\n", " 2.02601975e-03, -4.42461493e-04, -4.55828689e-03, -6.95544895e-03,\n", " 1.69249181e-02, -8.42420247e-04, -4.85236762e-03, 8.44683456e-03]), array([[0.04158177, 0.0424172 , 0.04326552, ..., 0.09409137, 0.09261009,\n", " 0.09114391],\n", " [0.22697479, 0.22927238, 0.23157117, ..., 0.00691147, 0.00672226,\n", " 0.00653761],\n", " [0.05572842, 0.05675937, 0.05780428, ..., 0.07616999, 0.07489766,\n", " 0.07364005],\n", " ...,\n", " [0.04474244, 0.04563761, 0.04654641, ..., 0.08447921, 0.08308015,\n", " 0.08169675],\n", " [0.07038916, 0.07169775, 0.07302346, ..., 0.04471112, 0.04379051,\n", " 0.04288462],\n", " [0.1660937 , 0.16854776, 0.17101843, ..., 0.00669825, 0.00649407,\n", " 0.00629539]]), array([[0.04557598, 0.04648284, 0.04739998, ..., 0.11483988, 0.11304784,\n", " 0.11126016],\n", " [0.21415397, 0.2155769 , 0.21701159, ..., 0.00462714, 0.00444237,\n", " 0.00426402],\n", " [0.05822308, 0.05969578, 0.06118993, ..., 0.07704586, 0.07574702,\n", " 0.07445847],\n", " ...,\n", " [0.04783781, 0.0490491 , 0.05027867, ..., 0.10593383, 0.10400378,\n", " 0.10208384],\n", " [0.07237078, 0.07400938, 0.07566618, ..., 0.05533433, 0.05389895,\n", " 0.05248662],\n", " [0.19321142, 0.19554537, 0.19785858, ..., 0.00118733, 0.00111924,\n", " 0.00105469]]), 0.010025062656641603)\n", "broken KLD: (array([ 0.00037892, 0.00416815, 0.00124518, -0.00062712, 0.00535232,\n", " 0.00631271, 0.00397351, 0.00526432, 0.00474574, 0.00417993,\n", " 0.00256004, 0.00812561, -0.0051976 , 0.00071233, 0.00024649,\n", " 0.0073929 , 0.0083365 , 0.00949517, 0.00370527, 0.00410983,\n", " 0.00347266, -0.00168024, 0.00278787, 0.00209189, 0.00363793,\n", " 0.00448957, 0.00480085, 0.00586501, 0.00540291, 0.00543357,\n", " 0.00281299, 0.00396522, 0.0025778 , 0.01074646, 0.01315307,\n", " 0.00113892, 0.00496295, 0.00463911, 0.00539903, 0.00063421,\n", " 0.00459521, 0.00857241, 0.00210322, -0.00262056, 0.0002028 ,\n", " -0.00263139, 0.00560573, 0.00141607, 0.00196885, 0.013081 ,\n", " 0.00569797, 0.00866603, 0.00561906, -0.00222925, 0.0025128 ,\n", " 0.00316278, 0.00631116, 0.00434194, 0.00832284, 0.0004473 ,\n", " 0.00082714, -0.00022826, 0.00021287, 0.00103077, -0.00021547,\n", " 0.01046714, 0.00103249, 0.0051404 , 0.00452998, 0.00830518,\n", " 0.00232325, -0.00061037, 0.00590099, 0.01483251, 0.00619957,\n", " 0.01631126, 0.00124339, 0.00315322, 0.00531008, 0.00315004,\n", " 0.00429979, -0.00016729, 0.00681256, 0.01065329, 0.00637827,\n", " 0.003303 , 0.00496244, 0.00434683, 0.00316507, 0.00436015,\n", " 0.00106826, 0.00067624, 0.00221516, -0.00020236, 0.01089469,\n", " -0.00047484, 0.00729501, 0.0029492 , 0.00403226, 0.00793439]), array([[0.00363569, 0.00374212, 0.00385132, ..., 0.01240032, 0.01209618,\n", " 0.01179844],\n", " [0.05148891, 0.05250597, 0.05353802, ..., 0.00027118, 0.00026127,\n", " 0.0002517 ],\n", " [0.00573615, 0.005894 , 0.00605565, ..., 0.00917286, 0.00894046,\n", " 0.00871318],\n", " ...,\n", " [0.00390716, 0.00402196, 0.00413975, ..., 0.01015272, 0.00989362,\n", " 0.00964025],\n", " [0.00682197, 0.00701746, 0.00721783, ..., 0.0034495 , 0.00334542,\n", " 0.00324417],\n", " [0.02158595, 0.02215696, 0.02274046, ..., 0.0001734 , 0.0001662 ,\n", " 0.00015929]]), array([[2.70969543e-03, 2.81132450e-03, 2.91625850e-03, ...,\n", " 7.89372723e-03, 7.59609738e-03, 7.30799135e-03],\n", " [6.20659620e-02, 6.34533793e-02, 6.48565730e-02, ...,\n", " 2.61901952e-05, 2.45870268e-05, 2.30768026e-05],\n", " [1.28438413e-03, 1.35197915e-03, 1.42275373e-03, ...,\n", " 6.20458473e-03, 5.99782732e-03, 5.79695464e-03],\n", " ...,\n", " [1.13382865e-03, 1.19168327e-03, 1.25217854e-03, ...,\n", " 4.83418986e-03, 4.62657185e-03, 4.42672686e-03],\n", " [2.14097709e-03, 2.24627671e-03, 2.35614600e-03, ...,\n", " 1.05016025e-03, 9.95479080e-04, 9.43387339e-04],\n", " [1.22608563e-02, 1.28128255e-02, 1.33851187e-02, ...,\n", " 5.98669929e-07, 5.45263785e-07, 4.96450629e-07]]), 0.01001669449081803)\n", "mixmod approximation: KLD over 1, 2, 3, sigma ranges = ['2.22e-16 +- 0.00e+00', '2.22e-16 +- 0.00e+00', '2.22e-16 +- 0.00e+00']\n" ] } ], "source": [ "# Loop over all the other ensemble types\n", "ensembles = [ens_n, ens_h, ens_i, ens_s, ens_q, ens_m]\n", "for ensemble in ensembles[1:]:\n", " D = []\n", " for lims in all_lims:\n", " klds = qp.metrics.calculate_kld(ens_n, ensemble, limits=lims)\n", " D.append(\"%.2e +- %.2e\" % (klds.mean(), klds.std()))\n", " print(ensemble.gen_class.name + ' approximation: KLD over 1, 2, 3, sigma ranges = ' + str(D))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The progression of KLD values should follow that of the root mean square error (RMSE), another measure of how close two functions are to one another. The RMSE also increases as it includes areas where the true distribution and interpolated distribution diverge. Unlike the KLD, the RMSE is symmetric, meaning the distance measured is not that of one distribution from the other but of the symmetric distance between them." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hist approximation: RMSE over 1, 2, 3, sigma ranges = ['4.98e-02 +- 6.10e-03', '5.02e-02 +- 5.34e-03', '4.36e-02 +- 3.81e-03']\n", "interp approximation: RMSE over 1, 2, 3, sigma ranges = ['2.35e-02 +- 3.98e-03', '1.89e-02 +- 2.86e-03', '1.65e-02 +- 2.40e-03']\n", "spline approximation: RMSE over 1, 2, 3, sigma ranges = ['4.09e-03 +- 1.76e-03', '3.40e-03 +- 1.26e-03', '2.88e-03 +- 1.02e-03']\n", "quant approximation: RMSE over 1, 2, 3, sigma ranges = ['1.10e-02 +- 4.44e-03', '2.69e-02 +- 5.00e-03', '3.22e-02 +- 2.81e-03']\n", "mixmod approximation: RMSE over 1, 2, 3, sigma ranges = ['2.35e-02 +- 8.10e-03', '2.06e-02 +- 5.97e-03', '1.75e-02 +- 4.80e-03']\n" ] } ], "source": [ "for ensemble in ensembles[1:]:\n", " D = []\n", " for lims in all_lims:\n", " rmses = qp.metrics.calculate_rmse(ens_n, ensemble, limits=lims)\n", " D.append(\"%.2e +- %.2e\" % (rmses.mean(), rmses.std()))\n", " print(ensemble.gen_class.name + ' approximation: RMSE over 1, 2, 3, sigma ranges = ' + str(D))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Both the KLD and RMSE metrics suggest that the quantile approximation is better in the high density region, but samples work better when the tails are included. We might expect the answer to the question of which approximation to use to depend on the application, and whether the tails need to be captured or not." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Storing and retreiving ensembles\n", "\n", "You can store and retrieve ensembles from disk using the `qp.Ensemble.write_to` and `qp.read` methods.\n", "\n", "These work in two steps, first they convert the Ensemble data to `astropy.table` objects, and then they write the tables. This means you can store the data in any format support by `astropy`." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dict_keys(['meta', 'data'])\n", "\n", "Meta Data\n", "{'pdf_name': array([b'norm'], dtype='|S4'), 'pdf_version': array([0])}\n", "\n", "Object Data\n", "{'loc': array([[ 0.21890181],\n", " [-0.93534652],\n", " [ 0.07903113],\n", " [ 0.28176773],\n", " [-0.24968255],\n", " [-0.26335094],\n", " [-0.42948521],\n", " [-0.4387297 ],\n", " [-0.57217189],\n", " [-0.92455534],\n", " [ 0.34858641],\n", " [-0.91406855],\n", " [-0.98414987],\n", " [-0.86060038],\n", " [-0.69508709],\n", " [-0.38516899],\n", " [ 0.75300729],\n", " [-0.27768773],\n", " [ 0.89066815],\n", " [ 0.07691531],\n", " [-0.60425626],\n", " [ 0.70749606],\n", " [ 0.12587212],\n", " [-0.82361134],\n", " [-0.11546958],\n", " [ 0.49798422],\n", " [-0.26760305],\n", " [ 0.20776273],\n", " [ 0.6291673 ],\n", " [-0.59647901],\n", " [-0.00848918],\n", " [-0.76643467],\n", " [-0.79806762],\n", " [-0.4022234 ],\n", " [-0.08351926],\n", " [-0.0671515 ],\n", " [-0.91445451],\n", " [ 0.71709338],\n", " [-0.17404626],\n", " [ 0.85493452],\n", " [-0.50612038],\n", " [ 0.58551973],\n", " [ 0.12310108],\n", " [ 0.89065211],\n", " [ 0.98553825],\n", " [-0.54523168],\n", " [-0.64930249],\n", " [-0.6904524 ],\n", " [ 0.10365389],\n", " [ 0.48165105],\n", " [-0.81445327],\n", " [ 0.50516354],\n", " [-0.84387341],\n", " [-0.7536708 ],\n", " [-0.02983834],\n", " [ 0.52625015],\n", " [ 0.0251668 ],\n", " [-0.53713988],\n", " [-0.19856034],\n", " [ 0.64554989],\n", " [ 0.5297811 ],\n", " [-0.69668053],\n", " [-0.29724201],\n", " [-0.07584431],\n", " [ 0.67563132],\n", " [-0.89806725],\n", " [-0.5085701 ],\n", " [-0.00230427],\n", " [ 0.24542697],\n", " [-0.85116672],\n", " [ 0.7220289 ],\n", " [ 0.4094468 ],\n", " [ 0.36862184],\n", " [ 0.95756083],\n", " [-0.34470474],\n", " [-0.92832706],\n", " [-0.33563417],\n", " [ 0.8647574 ],\n", " [ 0.36856708],\n", " [-0.9321885 ],\n", " [-0.80126137],\n", " [ 0.36804869],\n", " [ 0.06692571],\n", " [ 0.2286091 ],\n", " [ 0.29082508],\n", " [ 0.7435764 ],\n", " [ 0.12353467],\n", " [-0.70184026],\n", " [-0.5470406 ],\n", " [-0.1198184 ],\n", " [-0.80795649],\n", " [-0.8460751 ],\n", " [ 0.34980147],\n", " [ 0.08250539],\n", " [-0.18080125],\n", " [-0.02415185],\n", " [ 0.29852082],\n", " [ 0.16449945],\n", " [-0.12600999],\n", " [-0.71552244]]), 'scale': array([[1.05628552],\n", " [1.02699736],\n", " [1.06502927],\n", " [1.06092663],\n", " [1.07481621],\n", " [0.90373225],\n", " [0.96129187],\n", " [0.90162672],\n", " [0.94565748],\n", " [0.98378847],\n", " [0.93155093],\n", " [1.012214 ],\n", " [1.04801547],\n", " [1.03997191],\n", " [0.94610651],\n", " [0.94807385],\n", " [0.92175172],\n", " [1.06866137],\n", " [1.00618853],\n", " [0.97491666],\n", " [1.03004701],\n", " [0.97416184],\n", " [1.01915825],\n", " [0.94269106],\n", " [0.94427332],\n", " [0.90704054],\n", " [1.0774135 ],\n", " [1.01872588],\n", " [1.08736909],\n", " [0.97311218],\n", " [1.07810052],\n", " [0.95297913],\n", " [1.08745088],\n", " [1.0863323 ],\n", " [0.94525947],\n", " [1.07747709],\n", " [0.90734377],\n", " [1.08832187],\n", " [0.92557912],\n", " [0.95820683],\n", " [0.9323448 ],\n", " [1.09059329],\n", " [1.08510689],\n", " [1.08773728],\n", " [0.96730724],\n", " [1.08696857],\n", " [1.06120851],\n", " [0.92081073],\n", " [1.04875741],\n", " [1.02002314],\n", " [1.09783552],\n", " [0.90057407],\n", " [0.99066761],\n", " [0.95133835],\n", " [1.05478905],\n", " [0.93307612],\n", " [1.06184084],\n", " [0.93248613],\n", " [1.06442614],\n", " [0.99735603],\n", " [0.9907961 ],\n", " [1.02248052],\n", " [1.0229267 ],\n", " [0.91247745],\n", " [1.0917688 ],\n", " [0.94950303],\n", " [1.01468626],\n", " [0.93893304],\n", " [0.99063856],\n", " [0.93046741],\n", " [0.91248718],\n", " [1.07302298],\n", " [0.94408806],\n", " [1.06640794],\n", " [0.94751646],\n", " [1.06756101],\n", " [0.98475575],\n", " [0.92380544],\n", " [0.99388315],\n", " [0.9683748 ],\n", " [0.93527174],\n", " [1.08436163],\n", " [0.92703754],\n", " [0.92987075],\n", " [0.99505897],\n", " [0.97200232],\n", " [1.01325771],\n", " [0.9285457 ],\n", " [0.98174109],\n", " [1.01429324],\n", " [0.94676408],\n", " [0.99403992],\n", " [1.03596655],\n", " [1.0266698 ],\n", " [0.93673041],\n", " [1.01194906],\n", " [0.93848628],\n", " [1.04539621],\n", " [1.00855411],\n", " [0.93516073]])}\n" ] } ], "source": [ "tabs = ens_n.build_tables()\n", "print(tabs.keys())\n", "print()\n", "print(\"Meta Data\")\n", "print(tabs['meta'])\n", "print()\n", "print(\"Object Data\")\n", "print(tabs['data'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is a loopback test showing that we get the same results before and after a write/read cycle." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_n fits 0.0 0.0\n", "_n hf5 0.0 0.0\n", "_h fits -1.1102230246251565e-16 5.551115123125783e-17\n", "_h hf5 -1.1102230246251565e-16 5.551115123125783e-17\n", "_i fits -1.1102230246251565e-16 5.551115123125783e-17\n", "_i hf5 -1.1102230246251565e-16 5.551115123125783e-17\n", "_s fits 0.0 0.0\n", "_s hf5 0.0 0.0\n", "_q fits 0.0 0.0\n", "_q hf5 0.0 0.0\n", "_m fits -1.1102230246251565e-16 0.0\n", "_m hf5 -1.1102230246251565e-16 0.0\n" ] } ], "source": [ "suffix_list = ['_n', '_h', '_i', '_s', '_q', '_m']\n", "filetypes = ['fits', 'hf5']\n", "for ens, suffix in zip(ensembles, suffix_list):\n", " for ft in filetypes:\n", "\n", " outfile = \"test%s.%s\" % (suffix, ft)\n", " metafile = \"test%s_meta.%s\" % (suffix, ft)\n", " \n", " pdf_1 = ens.pdf(bins) \n", " ens.write_to(outfile)\n", " ens_r = qp.read(outfile)\n", " pdf_2 = ens_r.pdf(bins)\n", "\n", " check = pdf_1 - pdf_2\n", " print(suffix, ft, check.min(), check.max())\n", "\n", " os.unlink(outfile)\n", " try:\n", " os.unlink(metafile)\n", " except Exception:\n", " pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can compare the moments of each approximation and compare those to the moments of the true distribution." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "moments: range(0, 3)\n", "norm: ['9.92e-01 +- 6.50e-03', '-1.02e-01 +- 5.32e-01', '1.23e+00 +- 2.43e-01']\n", "hist: ['9.93e-01 +- 6.63e-03', '-1.03e-01 +- 5.31e-01', '1.39e+00 +- 2.36e-01']\n", "interp: ['9.87e-01 +- 8.52e-03', '-9.91e-02 +- 5.18e-01', '1.34e+00 +- 2.16e-01']\n", "spline: ['9.91e-01 +- 6.62e-03', '-1.02e-01 +- 5.33e-01', '1.23e+00 +- 2.48e-01']\n", "quant: ['1.07e+00 +- 1.45e-02', '-1.10e-01 +- 5.72e-01', '1.56e+00 +- 2.36e-01']\n", "mixmod: ['9.93e-01 +- 6.73e-03', '-1.05e-01 +- 5.37e-01', '1.26e+00 +- 2.52e-01']\n" ] } ], "source": [ "which_moments = range(3)\n", "all_moments = []\n", "for ens in ensembles:\n", " moments = []\n", " for n in which_moments:\n", " moms = qp.metrics.calculate_moment(ens, n, limits=(-3, 3))\n", " moments.append(\"%.2e +- %.2e\" % (moms.mean(), moms.std()))\n", " all_moments.append(moments)\n", " \n", "print('moments: '+str(which_moments))\n", "for ens, mom in zip(ensembles, all_moments):\n", " print(ens.gen_class.name+': '+str(mom))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "qp", "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.12.7" } }, "nbformat": 4, "nbformat_minor": 1 }