Skip to content

Instantly share code, notes, and snippets.

@asnelt
Created March 17, 2017 17:58
Show Gist options
  • Save asnelt/2b2ef6d8e9cc89da8b3c08d51a46bfd1 to your computer and use it in GitHub Desktop.
Save asnelt/2b2ef6d8e9cc89da8b3c08d51a46bfd1 to your computer and use it in GitHub Desktop.
SciPy Multivariate Normal CDF Test
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Test the `maxpts` argument of SciPy `mvn.mvndst`\n",
"\n",
"The argument `maxpts` represents the maximum number of function evaluations allowed for estimating the cumulative distribution function of the multivariate normal distribution. The following cell evaluates the maximum CDF error over 100 error estimates (99% confidence level). The samples are drawn from a multivariate normal distribution with zero mean and correlation matrix drawn from an inverse Wishart distribution. The maximum error estimate is then plotted as a function of the distribution dimension `dim`."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f5ea05a6518>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from scipy.stats import mvn, multivariate_normal, invwishart\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Vary dimension of multivariate normal distribution and estimate maximum CDF error\n",
"dim_range = range(2, 11)\n",
"maxpts_factors = [1000, 10000, 100000, 1000000]\n",
"err_dim = np.empty((len(dim_range), len(maxpts_factors)))\n",
"for i_dim, dim in enumerate(dim_range):\n",
" sample_size = 100\n",
" # Lower bound for CDF integration\n",
" lower = np.full(dim, -np.inf)\n",
" err = np.empty((sample_size, len(maxpts_factors)))\n",
" for i_sample in range(sample_size):\n",
" # Draw covariance matrix from inverse Wishart\n",
" sigma = invwishart.rvs(dim, np.eye(dim))\n",
" # Convert sigma to correlation matrix\n",
" d_inv = np.linalg.inv(np.sqrt(np.diag(np.diag(sigma))))\n",
" sigma = np.dot(np.dot(d_inv, sigma), d_inv)\n",
" # Draw multivariate normal sample\n",
" x = multivariate_normal.rvs(mean=np.zeros(dim), cov=sigma)\n",
" # Select lower triangular elements from correlation matrix\n",
" correl = sigma[np.tril_indices(dim, -1)]\n",
" for i_factor, factor in enumerate(maxpts_factors):\n",
" # Estimate CDF error for sample x\n",
" err[i_sample, i_factor], _, _ = mvn.mvndst(lower, x, infin=np.zeros(dim, dtype=int),\n",
" correl=correl, maxpts=factor*dim,\n",
" abseps=1e-5, releps=1e-5)\n",
" err_dim[i_dim, :] = np.max(err, axis=0)\n",
"\n",
"# Plot error curves as a function of dimension\n",
"for i_factor, factor in enumerate(maxpts_factors):\n",
" plt.plot(dim_range, err_dim[:, i_factor], label=str(factor)+\"*dim\")\n",
"plt.xlabel('mvn dimension')\n",
"plt.ylabel('maximum CDF error estimate')\n",
"plt.yscale('log')\n",
"plt.legend(loc=4)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment