Skip to content

Instantly share code, notes, and snippets.

@aseyboldt
Created February 21, 2017 18:32
Show Gist options
  • Save aseyboldt/2af324a9df7006f3e89b158a86b6116f to your computer and use it in GitHub Desktop.
Save aseyboldt/2af324a9df7006f3e89b158a86b6116f to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"# Compare integrators"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"v3.0-283-g209d35f4\r\n"
]
}
],
"source": [
"!git describe"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"from scipy import stats\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sb\n",
"import pymc3 as pm\n",
"import theano.tensor as tt\n",
"import theano\n",
"import pystan\n",
"import pandas as pd\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We use a simple hierarchical model to compare the integrators\n",
"`\"leapfrog\"` and `\"three-stage\"`:\n",
"\\begin{align*}\n",
"y_i &\\sim \\text{StudentT}(5, \\mu + \\beta_{k[i]}, \\sigma)\\\\\n",
"\\beta_k &\\sim N(0, \\sigma_\\beta)\n",
"\\end{align*}"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"# Generate data\n",
"n_per_group = 2\n",
"n_groups = 10000\n",
"N = n_per_group * n_groups\n",
"mu = 1\n",
"sigma = 1\n",
"sigma_group = 0.5\n",
"\n",
"i_group = np.repeat(np.arange(n_groups), n_per_group)\n",
"beta = mu + sigma_group * np.random.randn(n_groups)[i_group]\n",
"observed = stats.t(5, loc=beta, scale=sigma).rvs(N)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"model = pm.Model()\n",
"with model:\n",
" intercept = pm.Flat('intercept')\n",
" sigma = pm.HalfCauchy('sigma', 2.5)\n",
" sigma_group = pm.HalfCauchy('sigma_group', 2.5)\n",
" group = pm.Normal('group', 0, 1, shape=n_groups)\n",
" # Using a 2d array would be faster than indexing, but less\n",
" # realistic. All groups would need to have the same the size.\n",
" mu = intercept + sigma_group * group[i_group]\n",
" pm.StudentT('obs', nu=5, mu=mu, sd=sigma, observed=observed)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"We use advi to initialize the chains and guess a mass matrix:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true,
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Average ELBO = -34,287: 100%|██████████| 20000/20000 [00:59<00:00, 335.39it/s]\n",
"Finished [100%]: Average ELBO = -34,281\n",
"INFO:pymc3:Finished [100%]: Average ELBO = -34,281\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1min 1s, sys: 227 ms, total: 1min 1s\n",
"Wall time: 1min 1s\n"
]
}
],
"source": [
"%%time\n",
"with model:\n",
" advi = pm.variational.advi(n=20000)\n",
" stds = model.dict_to_array(advi.stds)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fd3c9d51390>]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3d1656710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(advi.elbo_vals[5000:])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Time to make one step\n",
"\n",
"Each step is implemented as a theano function. `leapfrog3` does three\n",
"leapfrog steps in a row."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1000 loops, best of 3: 2.03 ms per loop\n",
"100 loops, best of 3: 2.69 ms per loop\n",
"100 loops, best of 3: 3.4 ms per loop\n",
"100 loops, best of 3: 3.64 ms per loop\n"
]
}
],
"source": [
"for integrator in ['leapfrog', 'two-stage', 'three-stage', 'leapfrog3']:\n",
" step = pm.step_methods.hmc.base_hmc.BaseHMC(\n",
" vars=model.vars, model=model, integrator=integrator,\n",
" use_single_leapfrog=True, profile=False)\n",
"\n",
" q = model.dict_to_array(advi.means)\n",
" p = np.ones(model.ndim) * .05\n",
" dlogp = step.dlogp(q)\n",
" \n",
" %%timeit step.leapfrog(q, p, dlogp, np.array(0.1))"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Run four chains per integration method"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"nuts_args = {\n",
" 'scaling': stds ** 2,\n",
" 'is_cov': True,\n",
" 'max_treedepth': 10,\n",
" 'target_accept': 0.95,\n",
"}\n",
"sample_args = {\n",
" 'draws': 2000,\n",
" 'tune': 1000,\n",
" 'start': advi.means\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"def sample(integrator):\n",
" with model:\n",
" step = pm.NUTS(integrator=integrator, **nuts_args)\n",
" chains = []\n",
" # Run 4 chains in total, two at a time\n",
" for i in range(2):\n",
" trace = pm.sample(step=step, njobs=2, chain=2 * i, **sample_args)\n",
" chains.append(trace)\n",
" trace = pm.backends.base.merge_traces(chains)\n",
" return trace"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 2000/2000 [06:56<00:00, 6.68it/s]\n",
"100%|██████████| 2000/2000 [06:21<00:00, 7.27it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 7.16 s, sys: 1.3 s, total: 8.46 s\n",
"Wall time: 13min 24s\n"
]
}
],
"source": [
"%%time\n",
"trace1 = sample('leapfrog')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 2000/2000 [03:25<00:00, 9.73it/s] \n",
"100%|██████████| 2000/2000 [02:59<00:00, 11.14it/s] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 9.42 s, sys: 1.11 s, total: 10.5 s\n",
"Wall time: 6min 35s\n"
]
}
],
"source": [
"%%time\n",
"trace2 = sample('three-stage')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 2000/2000 [06:40<00:00, 4.99it/s] \n",
"100%|██████████| 2000/2000 [07:00<00:00, 16.58it/s] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 9.44 s, sys: 1.08 s, total: 10.5 s\n",
"Wall time: 13min 50s\n"
]
}
],
"source": [
"%%time\n",
"trace3 = sample('leapfrog3')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"{'group': array([ 4000., 4000., 4000., ..., 4000., 4000., 4000.]),\n",
" 'intercept': 4000.0,\n",
" 'sigma': 1430.0,\n",
" 'sigma_group': 897.0,\n",
" 'sigma_group_log_': 898.0,\n",
" 'sigma_log_': 1430.0}"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pm.effective_n(trace1[1000:])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"{'group': array([ 4000., 4000., 4000., ..., 4000., 4000., 4000.]),\n",
" 'intercept': 4000.0,\n",
" 'sigma': 1600.0,\n",
" 'sigma_group': 958.0,\n",
" 'sigma_group_log_': 958.0,\n",
" 'sigma_log_': 1600.0}"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pm.effective_n(trace2[1000:])"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"{'group': array([ 4000., 4000., 4000., ..., 4000., 4000., 4000.]),\n",
" 'intercept': 4000.0,\n",
" 'sigma': 1250.0,\n",
" 'sigma_group': 665.0,\n",
" 'sigma_group_log_': 666.0,\n",
" 'sigma_log_': 1251.0}"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pm.effective_n(trace3[1000:])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fd3b8d5ea58>]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nxGStG25VAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3b9563080>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(trace1['step_size_bar'])\n",
"plt.plot(trace2['step_size_bar'] / 3)\n",
"plt.plot(trace3['step_size_bar'] / 3)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"# TODO use pd.concat instead of stupid loops...\n",
"def collect_stats(traces):\n",
" names = set()\n",
" for trace in traces.values():\n",
" names.update(trace.stat_names)\n",
" statnames = list(names)\n",
" \n",
" data = []\n",
" for name, trace in traces.items():\n",
" for sample in range(len(trace)):\n",
" for chain in range(trace.nchains):\n",
" row = {\n",
" 'integrator': name,\n",
" 'sample': sample,\n",
" 'chain': chain,\n",
" }\n",
" for stat_name in trace.stat_names:\n",
" stats = trace.get_sampler_stats(\n",
" stat_name, combine=False, chains=chain)\n",
" row[stat_name] = stats[sample]\n",
" data.append(row)\n",
"\n",
" return pd.DataFrame(data)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"trace_stats = collect_stats({\n",
" 'leapfrog': trace1[1000:],\n",
" 'three_stage': trace2[1000:],\n",
" 'leapfrog3': trace3[1000:],\n",
"})"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"trace_stats['trajectory_length'] = trace_stats.eval('step_size * tree_size')\n",
"trace_stats['log_trajectory_length'] = np.log(trace_stats['trajectory_length'])\n",
"trace_stats['grads_per_step'] = ((trace_stats['integrator'] != 'leapfrog') * 2) + 1\n",
"trace_stats['step_size_eff'] = trace_stats['step_size'] / trace_stats['grads_per_step']"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fd3bacc6710>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n7NcUp1E2iwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3ba24bba8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sb.violinplot(y='trajectory_length', x='integrator', hue='chain', data=trace_stats)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Effective step size (step size per grad eval)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x7fd3ba22e4e0>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nvTMsAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3ba72c9e8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sb.factorplot('integrator', 'step_size_eff', data=trace_stats, hue='chain', kind='bar')"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"n_grad_evals1 = trace1['tree_size']\n",
"n_grad_evals2 = 3 * trace2['tree_size']\n",
"n_grad_evals3 = 3 * trace3['tree_size']"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"(65.804571428571435, 51.034285714285716, 117.03428571428572)"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"n_grad_evals1[1000:].mean(), n_grad_evals2[1000:].mean(), n_grad_evals3[1000:].mean()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"(False, False, False)"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trace1['diverging'].any(), trace2['diverging'].any(), trace3['diverging'].any()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"(0.94856764173948027, 0.95123333225621964, 0.94937178350932838)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trace1['mean_tree_accept'].mean(), trace2['mean_tree_accept'].mean(), trace3['mean_tree_accept'].mean()"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"## Integration error (difference of hamiltonians)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fd3bf4ade80>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nHAS3AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3bf70c518>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sb.distplot(trace1['energy_error', 1000:])\n",
"sb.distplot(trace2['energy_error', 1000:])\n",
"sb.distplot(trace3['energy_error', 1000:])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The maximum error along the whole tree is larger for leapfrog integration. But this might just be because of the different tree sizes."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fd3bf7e1b00>"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3bba21518>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sb.distplot(trace1['max_energy_error', 1000:], kde=False)\n",
"sb.distplot(trace2['max_energy_error', 1000:], kde=False)\n",
"sb.distplot(trace3['max_energy_error', 1000:], kde=False)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"def energy_plot(trace):\n",
" energy = trace.get_sampler_stats('energy', combine=False)\n",
" nchains = len(energy)\n",
" fig, axes = plt.subplots(2, nchains // 2)\n",
" for energy, ax in zip(energy, axes.flat):\n",
" sb.distplot(energy - energy.mean(), label='energy', ax=ax)\n",
" sb.distplot(np.diff(energy), label='energy diffs', ax=ax)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3b8e768d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"energy_plot(trace1[1000:])"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The correlation does not look geat, but this seems to be unrelated to\n",
"the integration method"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3b83c6f98>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3b82c3e10>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3b815e748>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"_ = pm.autocorrplot(trace1[1000:], ['sigma_group_log_'], max_lag=100)\n",
"_ = pm.autocorrplot(trace2[1000:], ['sigma_group_log_'], max_lag=100)\n",
"_ = pm.autocorrplot(trace3[1000:], ['sigma_group_log_'], max_lag=100)"
]
},
{
"cell_type": "markdown",
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"# Stan"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting binomial.stan\n"
]
}
],
"source": [
"%%file binomial.stan\n",
"data {\n",
" int N;\n",
" int n_groups;\n",
" int i_group[N];\n",
" vector[N] y;\n",
"}\n",
"parameters {\n",
" real intercept;\n",
" real<lower=0> sigma;\n",
" real<lower=0> sigma_group;\n",
" vector[n_groups] group;\n",
"}\n",
"transformed parameters {\n",
" vector[N] mu;\n",
" \n",
" mu = intercept + sigma_group * group[i_group];\n",
"}\n",
"model {\n",
" sigma ~ cauchy(0, 2.5);\n",
" sigma_group ~ cauchy(0, 2.5);\n",
" group ~ normal(0, 1);\n",
" y ~ student_t(5, mu, sigma);\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:pystan:COMPILING THE C++ CODE FOR MODEL anon_model_008f2dd06ee2127d7943ff0898e0e5de NOW.\n"
]
}
],
"source": [
"stan_model = pystan.StanModel('binomial.stan')"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"data = {\n",
" 'N': N,\n",
" 'i_group': i_group + 1,\n",
" 'n_groups': n_groups,\n",
" 'y': observed,\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 4.01 s, sys: 2.47 s, total: 6.48 s\n",
"Wall time: 45min 31s\n"
]
}
],
"source": [
"%%time\n",
"stan_trace = stan_model.sampling(data, control={'adapt_delta': 0.95}, chains=4)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"def get_trajectory_len(trace, chain):\n",
" n_leapfrog = trace.get_sampler_params()[chain]['n_leapfrog__']\n",
" step_size = trace.get_sampler_params()[chain]['stepsize__']\n",
" return n_leapfrog * step_size"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 10)"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW8AAAD8CAYAAAC4uSVNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXmYHEeZp9+qvlt9qtVtqaXW0ZIVug9LsnXYsiVs2ZZv\nWwZsmeNZ7tkdlhnvgpkBj4F9YDgM7MLOLizHAgsDCw+zHgaDucYX+MYYw0D4wjKysGnJkvo+q/aP\nuquyqrKyMqsysr73r6rIyIjvi+OXkZERmaFoNIogCIJgFuFqGyAIgiCUjoi3IAiCgYh4C4IgGIiI\ntyAIgoGIeAuCIBiIiLcgCIKB1NuJpJTaANwBfEpr/VmlVB/wVaALOAoc1lpPeWemIAiCkE7RkbdS\nah7wGeCnacEfB76std4JPA8c9sQ6QRAEwRI70yZTwEHgWFrYBcA/x3/fAVzsrlmCIAhCIYpOm2it\nZ4FZpVR6cLvWeiL++8/AwkJpzM7ORevr6xwbaZEeH37PnSWdc9bOpey9aDWf/tBPALjxLeewak0f\nH7z5ewAcuHId42PT3P/TZ4qmtWHrYq696azk/3974hjf+epjACwdnM8Lz72SPLZsZQ9Hnj0BwK23\nX5HML5srX7OFLWcP8F//y084fXKCzduXcNUNWzPiZJ976+1XFLV1ZmaOj9ySKqsLLlHsvWh1Rnrv\n/8TlhEKhovkkwq+76SzWb12cE//qG7bwszt/z/DpyRw70m1NxL/pbTsZXN2bDD965CRf+m/3J+Pf\nc5fmnh89ldff0ZEpPnnbjwA4Z+8gD937nGUZNLc00N3TyvE/j/LejxxkdmaOD9+S2352nj/Ig/fE\n0ugf6OTN79qbcTxhd8KOmelZPvLeH1jaZkW+uk9w6+1XZLQlgM07Bnj+mePJNvG7J//E9NRc8ngo\nHOL9H788I52f3vk7fv7TZwiHQ7wv61ghm/7q7y6ivaM5J84n/u4uxken2bZrGVvPWcoXPn1fjt35\n0i10LN/xBMdfHuEfPnY3ADffdoB57U05aRx6/TbWbe7PCLv5tgPcHm8XAE3N9UxNzubY/L1vPcHj\nD7+Q15ZEepu3L+GJR49mxEkcC4dDRCJRGpvquOXDBzOONTXX09BQR1NzPf/+lv15/SxCKN8BW3Pe\nFkxnJV5wj/3Jk+MOs4nR29vO0NBI8v/cbKTkNCYnZzhxYjT5//TpiYw0R8emmByfsZXW1PRMxrnD\nwxPJ3zMzcxlxZ6ZTjSb9nGxGRicZGhphbi7uWyhUMH6x9BLMZtkzPjaVc97x46MUIjv+8MikZd7D\nI5PMRaybglX87DrIjj82Pp0Tls74WOr4xERm3HSi0SgzM3NEo1GGhkaYnZ2zjDeRlt/sbKSgbZBZ\n13bqohhDQyMZbQlganIm2SYmp2bJfptFyCLv8TQ/SrHrlROjTE7l9oFIvE4nJ2c4dSq3LxfKI/tY\nb2+77XNPnhxL/j7xyijjk7l1PDyc24ZOvJLZnq1eATI0NMLEZOH2lWBycqZonGg091g0Gk2WndP2\nkV1e6ThdbTKilGqN/15I5pSKueS9xhlMtk+hIDppj5DbvstrgTymdtuqHZyK9w+Bq+K/rwW+7445\nNpE69Sc1J2YVcFjaupCHotMmSqltwO3AcmBGKXWI2OqSryul/hrQwLe8NLJShLzoKVUe6XriUxUo\nWoxBvXBkT5MEozpt4bWvrt+JVRg7DywfI7a6JBurMMEpAXg1r6898MC4AFSZUAG8aieywzLoZA0u\nDB9slIWRvptocy1RrH48rD8Rb8E9fDwUjXow9Paxu0IG3l8BqzEwEPFOEMVfo5yaUAb7PvpzfrIa\ndeTHcvAGX1a5j3C6zruqeFWptpMt0GcjedY5u26D3fRqpQMU8HNqcjZnk0a+eH6nZuoTcKs35Csz\n2/VdoNCrWR2BH3mfd+BM+gc62b5neeGIZdTCslU9LFnezaWHNjA2Uvj9XFcf3uI8IxewM4Jds2kh\nzS0NJaddzZuFrTuX0j/QSVtHE/sOKg5cvZ6lg/Pp6mktfnIc/ZuXSsqzsameVWv7OP+S1aWa6ym1\noO8HD21kyfJulq3qKRivs7uFHecutzz2nB4qeO4l121gYEU35164Ktm//YSRI2+7zfMdt1wAwIaz\nYlu5R4dzt21nJuus2dfX13HFazcDcN+Pni4Yd9FAFwcPbeTO7zzpKK/SKd2nfQfX8NgvjvDwvX9w\nxQJXxM3CjfTqap3XyFWHM18nsHJNL9/64iPl553PpFCIi65a5/j88y48k/t+Uri91DKFuuOyVT1F\nhRvgqhu38PKxYUf5rzhzASvOXACQ7N85hHI3mG/cvpgnH30xdthRzvYI/MhbqG1qYRQq1CYi3mm4\n0dH99pwxKHOkAXGjbKpZnz5r2jWPkeLtb0HyeRP3sOzyLsfzdX2l8NuF1y8YUn1VQR5Y+gG3lgo6\nFAARjiL4+4pdQaQcTMPqrYZuULPibaUFnmh3lVU5e3WJp13fQ1dFsuLUUEH4c21/icgOS4NwScBq\nYSAudxvFCYSABZkqVo+IdzoudJTsed+S9cnzzmqoGBhqtttIMQgJjBRvT0YjJSRZSJBreTRZy777\nEa/mWgUrKn9ZNVK8fY3P+4vchRuOnfoLSB270lYDUhZWiHi7TrTg32BTU84KQlUR8U5DRqX+xWqq\nzOn0mclfFzLZ9iBSvA16V18i3i5Ty9OMvvRdtE4IKCLeCTwSHj/qmWAwtXQxMvVWuEKdXsQ7Dbu3\n4YVi+XL06YBCRVGNPmVqP3abWioGk3y1bp/eeiDi7TrZ6u0zNTepRwjO8FmTq3XkA8Ru4Jfhm0/M\nEIKN8bszDTcfvJWc2hLvCuD3aZNqrFaQFRJCUKnm9VHE2wGFd1j6XL1dIK+LwXe9+pSyE9jwtmj+\nJd/b8hfxTmB+S7FHNd7nbSKVaA828nA0snNqu+nTLH6hQsUo4p2g2u/zDpLweUJtCkvu4LmGyiEw\nFxN5n7fnePM+bxcSdRFj3+cdlH5cJlIOQgIRb7cxfJ5R8Bci1n6nehUk4p2B+xXhOyn3dM5bENxD\nLlyFEfF2GdcETJTQFWSZohBURLzTcOVK73PR9VTMZM7bc6QY/IWs8w4QOWtr7Qqaz0VfEIT8FBJx\n2R4vuIOx67yt3uftYXZ+pYacNn57P97eKYl4JyillAtoVE0vNqll32uBmm7c/kPEO4Fbm3RykpUG\n7wrmD8IqhuvPNQwue4NNL0q9k5OUUm3A14BuoBn4gNb6B24aVg1kZYJ/kZqJEYCZBNuY4KuJDyzf\nCGit9QXAIeDTbhkUOHw28DahQwiCUByn4n0c6Iv/7gaG3DGnyoiwlYWnU6Ju1o1J9SxXW7PxsP4c\nTZsA3wLepJTSwHzgykKRu7tbqa+vc5hVjN7e9rLPaWpMudvZ2ZpxvK2tiVDYXkE3NdXbtqe+IeV3\n4pxTx8dz4rW1NdPb205dXex6GiVaNA8nZdLe3pxznlU68+Y15T3e0dFieU5bWxN1FmVoladVOkeP\nnMzIc15rY/J/OBzOSWNyYqagDwD19Znjk97eduZmI5Zx02mor8ubppNyt0NvbztDx0YywlqaG5Jt\nojntdyF7WtPKrRRbe3raaGtvygkPh2N5trQ00tXVWjR/u8eKHU+v3wU9bbS25dpmRU9PW8bvidGZ\nnDhW+Tqp10TZpLfP1pZY+YdCIerqQkSj3rQZp+L9OuCI1voipdRm4IvA9nyRT57MFatS6O1tZ2ho\npHjELLLPGR2ZSv4+fXo84/jo6BRhm+I9NTVr257Zmbkce06fnsiJNzo6ydDQCJFIJCd+PpyUycjI\nVM55VumMjU3lPT48PGF5zujoJHOR3OH3yMikZfzTp63TSeQ5Nj6d/B+NRHPiTk3OZMS3YjZLqIeG\nRpibKy7es7ORgrZ5wdDQCMPDmW1jYnImae/k5AwRi/LNtmc8rdxKsfXEiVEmJqdzwhNtcmJimlOn\ncvtyoTyyj2WLWKFzpyZnk7+PnxilZSLXNitOnBjN+G3V36zydVKvifqIpLXP8bid0WiUubko4XDI\ncZspJPpOp012AT8A0Fo/ASxWSjm9EAgVpObuwmvNX6FmcCrezxIfaSulFgMjWuvZwqcYQBU7ehCW\n0HrqgohwzWHEQMOGjV590cjpaPl/Al9RSt0DNAJvd8+kymDVMLxYKhgEUfYD1jVjQu92mRp0WbDG\nkXhrrUeB61y2RTAduVD5Chk4VIkKlbvssEzHk1FN8HpQVW5nZcQJ1FYxmDBtEsr5YXnUE0S8BcHH\nGKBfQpUQ8a41vHyroDG7dAzGhOGoaxjgq4Hb4wWbyLyjINQ48j7v8jHgOu45fn75Vk0NKiuA8eWZ\nZr+p7/b20uyaEm+hOhja7wShKNUcDIl4pyEi41+kbmLUUjGY5Gs1bBXxzsCk5iLUBNlNspaaaC35\n6gARb6+x/bCiMk82vRzBysNZoeawsz3eo6xFvNOwL2y1rVLVEGmrqpGplMKYfjH188N1e3hbASLe\nXmN6+6tVKlBv1uIkDcZVPL7CV2FjZRIRb68xfPRTEl4O9WSYDZi7ZM4RNeSqE0S8/YpXOuirzl9L\nVzZn+Km2hAJUoaJEvNOR93mXRQBc8B1Spj7HjmbIDku3yS11T97n7bPuZ+pIzlc3DFWkloohCHXu\n5TRXDYu34Dr+uk4FggDol+ARIt5e4zdBEzUwm5qqPxOcle3xQgDw23UqGFRfwMxfbx1MRLzTCMIc\nWzFMdbGmlshlkHlJrCUhNanKq1EvIt4OKGVlSE2NRn24ZMYkARDMw0778mrRgoh3reGhmlVaumtD\nmEMF/9o5RQgmIt4+xYeDWNepBR8FwStEvNPxwVDO6Lld+YSl4CJG94UKIOKdhjQV/yJ1E0P0TEgg\n4u0xtr+oLlMIgmAcoZwf5PZl2R5fAWyOamph9FPoljX7UEXKwzIT7zL2SxXnuu0Xy4TihDytLhHv\nGsPTL+nI7YMgVAwR7zRkTONfpG5i1MJdn1FUsUJEvAX3kIG3IFQMEe90bF5FvVyfXN8Qq5JwnTlD\nrFA4ZaubA5FQ3j9BJrdxpT9/yH4WkV72yTCXLTJttO+3/QPyAeICXHV4C0uWd7N6/RkF47XMa2Tp\n4Hz6+tvp6ZsHwBWv3Uz/0i7WbFrEitULWLysK5lOS2sDAK+6Yq1tW/ZefGZmgEXNpXeGK167if6l\nXazeEMvznL2DLOhrY/vu5TnnHbx+I90LWm3bkuCs3UvT8na/J151wxb6BzrZtGMJl1y7gUUDnZzR\n35E3/iXXrmdgRTdLlndnhC/oa2fhkg627VkGwIZti2nvbAbgoivX5aRT3xBm1bq+3DLPIOXvOeev\nyBtr575BLrl2fYF0YNOOJUnb3GbXvpUARCK5Debia9azaKCTs89bzr6DikUDnZx70Sq6elrZce7y\nnPgbty+hf6CTqw9vKZrv5rMHisa59NBGFg10sm3Pcnr62li2socLr1zL2s2L2LVvsLhzWQysiNX7\n+ZesLhpXbVzIslU9NDXXF417/qWrWbmml5bWBtZsWsiylfNpbmmgb1E7fYvaWbNpYUb8YvVdiM07\nlrBtd6ot5OtVZ67tY8PWxY7zKUTxEvE5m7YvoX+gi/7XdgEwNjrFi0dOWcYNh0Nc9upNGWFLlmeK\nyJU3xBp8umCPj07Ztmf91sV0drfwvW/+OiN85ZretH+pql6yfD5Lls9P/l+2qodlq3ro7W1naGgk\nI41lK3tYcEYbX/3sA7btgdgF4Ze/eKGkc0ph4ZJOrjq8FYCW1kauPryV0ZEpvvbfre1csbqXFat7\nc8Kbmuu55qazkv+bWxq46R078+YbCoUsRT0zTup3PqHq6mll6zlLmZqcKZjWnletKni8HLack19E\nexe2c3W8fIHk743blljGb25pSNZHMXbvX8kTD/+xYJzs/A9evxGAM9cVHizl4/LXbLYdd/9la2zH\nXbe5n3Wb+wHYdzB1XltHM9e9YRvHXx7h979+KRnev7TLdtrZ7I63had++3IsII967zhvhWVfdoNA\njLz9R+HRrWm3oU7InPLwh8PFzfCHnUKlKL++U21K3ioYOHw2/VZ7GKbHfpuvFexRjfGJ42kTpdSN\nwM3Eusf7tdbfd82qgFPNgahPBsEVI/M9y3JHJKQwvb4djbyVUm3EhHsPcDlwtZtGlYPvRi6WBhne\nauzgFxf9YoddfNeABTtUo5mFbL97Iw2l1HXAZq31rXbiDw2NOG6R//dnz/DLp4eYm8tMYnB4GoDT\njWFOpD2JXjQ2Q0s87nMdjU6zzaAuEmXZaOph1mh9mD+35r9paZ6N0D8+C8B0GBojmeekH89nY11d\nKMfnbFtK8S9RXi+31DMWX46YCLNKp3Nqjp6puYzjVmnkI93OPzfXMdpYV9TGfD6XQ//YDM2J9tDe\nEBtuRaMMjqTqczoMR9saCUWjrIiHT9aFODavwVVbEuWX4FRzHV2TmWXcNj1HXzwMctu3FyTser6t\ngYjF0sNy0sxuW17UsV0a5yIsGUv1u/T6ToSVysDINA1RmAnBH9tj5/dMztI5HWEOONLRyN6zlnDF\nzqWFE8pDb2973gpx2ioGgHlKqe8CvcDfaa1/li9yd3cr9fXFO68VLa2xAqnLs+45FAplHEu/Fcp3\nTqlkt+dQqHDadZE0ewgB0YxzwmnHC6ZjcayuTP/C4dzzrNIJh/Mft0qjkJ3hcMi2rW7VWd60Q6Gc\nBxEhYvaFohbxK0SybWQ1tuz27bUNVuvGy03TTlglCEcz+50r9R3r3pDWv5PLcdPCenvbHVhcJGuH\nI+/3AOcA1wODwE+B5VrriFX8ckbegOVSm//x93cDsaWCey5MLeG64xu/4tgLsaWC77jlgnKyTTI+\nOsVX0pbnrVzTy4Gr868RPfr8Sb73zScA6JzfwulXJli1tpeLroqdc+yFU9zxjV8VtDHf8qKx0ank\nUsFS/EuU14Gr1yeXLSbCrNJ5/MEXePDu5zKOp9JYx8o1fQXzSy+zfZetYc3GhQXjQ36fy+H//Z/H\n+dPR0wC8/T3nEwqFiEQifO5j9ybjdPW0csNbzmZmepYvfPJ+ABYu7uCa151lmaZTEuWXYO9Fq7n3\nx08BqTL+/ZMv8a/f/30yzsZtizn3okLr2N2z6w1/uZvWee7creZrW14tm7PD8ZdH+PaXHwNidqXX\ndyKsVL7xuYc4fXKCjq5mDr89tqz1/h8/zZOPvUhjUz1v+qtzy/K50Mjb6WqTl4AHtNZzWuungWFg\ngcO0hFLwwZSoUdOyaU2/+AYlH0yQZxeuD0wKLu4VrnXb8rajOBXvnwD7lVIhpVQf0A4cd8+sEsgu\nM58pi2XzqIXVJj55lO/4k48Vec2tjTgVbM4+qTLzqVA5OhJvrfWLwD8B/wr8APjLfFMmtUh6J6jR\ntSb+oRRF8kHF+GzsEWzcrG+T1nlrrT8PfN5FWwJOxv179cwQzEKaihFUo5pkh6XXWL2YqvJW1CyG\nDbzlgxYVxJX6TiRShQFZ4MTbt03f/kY/T5FBv8+xWMYo+B8ZeQuCy5T0Clwf6qSMxD3E8Dnv4Im3\nAW3di3dql5B7ZXJJn+KvSI7BQB5YmkU123bwxNunZMyaiJpVjNIG3n6omEz19odNwcTNsq3GgEzE\nu9aoNS0wbNpERt4VxMX6NubFVKVSzvb47z7zL/z6+G+Yy/o8VP+9uwAYXXyM4ZVHkuE9v1pP03Ds\nE1zH9pb2xZl8hKcbWPjg9uT/iQXHObnu6bzxG091sODXsa3ws82T1E82M947xKm1zwDQMDKP3sc3\nFbSxLhzK8RkgPNXAwoe2FzzXikR5nVj/e6Z6TmaEWaXT9sd+Ov6wLON4Iv4ra59isvdEwfzCM/Us\nfGAHACfV00ycUXwPVz6fy2H+k2toPhn7UlLSzyj037crGWemZZyhHU9AJET//bEtzlMdw5zY8ltX\nbUmUX4LRZUdpO7Ikw7bWY2fQ9Uzq02LZ7dsLEna9tPMRIo2zrqaZ3ba8qGO71I+20vfL2Fd8ju19\nIKO+k2El0vvIZhomWpmZN8bQttjXszqeWU7bsUVE6mZ5ac8j7Fm2jUsWH3Bksxfb44VS8cGozj0M\nGh6aVu5R0wwW8uJxVfr+G5bXrrqct+26IffFVPfeDcDu/rPZs/vGZPg/Pfc4Lw3HXkT0od3vdcWG\n8bFpvvLgL5L/NyxYy4Hdh/LGP/bCKe74dezFU/ObuxienGRz73ou3H09AEMvjfCdxx8raGPBF1M9\n9EDBc61IlNfhNYdYceaCjDCrdB5/8AUe/MNzGccT8V+rrin6YqrJiRm+/MDPAbhu1RWoKr2Y6s4X\nf82RV14BUn5EIhE+d1/qxVS9rQt45+73MjcX4fP3x8KXdSzhXbuvdNWWRPklOKj2c++RpzJse/LR\no9z/7DPJOLsXZbZvL0jYdcvZ/zH5Fk+30sxuW9V9MdUo3/7lo0DMrvT6ToSVyjd/+zAnJ8ZZ1HYG\n74yff//Y0zx57EWa65r50O73yjcsTSf94UhVv6RTvayrhH2P/fAgOeeexgc2BRU/1Hc5BFC8Tbil\nN7zVmIRpRW1C8xVyqMaFIIDi7S+sngfXwDJv31Cau9UvHNmUU0lcqO9Qzo+KIeItBBvHfapKQi7a\nbSQy8nYDAxp/NXdY1tqmj1LK2vQ5UKE0XK1vEe8aoQZEQoTQGZXYdyG4TzUGRYETb982fb+866PG\nRNX6IuLfQshuv/61VMhARt5mUNLgyPKJpWumCEUpZdrE24qxlbxvRx/Bw836lu3xVud++5uMP/4Y\nc3OZX1m7q/sKAJZNPsuaiX9Lhj/UvodT9fMBuPjk95xmm8FUqJG7uy5O/j9j+hhbxh7LG/9k/Xwe\nbt8DQPPcOJN1rfRP/ZGN47GNO2Phedzfub+gjXV14RyfY7Y0cXfXgYLnWpEor7NGHqJ39s8ZYVbp\n/KFpJU+1rss4noi/efRRFs78qWB+M6F6ftZ1KQAbxx6nf/poURvz+VwOv5q3jZcb+4GUH1HgR3Ff\nAObNjXDu8N1AyseumROcM/oL3OSursszFHzV1FM807Q6w7bnmlbydLzcIbd9e0HC532n7qIxOu1q\nmtlty4s6tstwXQcPdJwP5Lbp9LBS+HnH+YzWddA1+wrnjMQ2pf2uZT0vNA9SH5nmVafvou+8PbRd\nfq0jm2V7vFCzhHw0lLVni9yWGUkVnlX4fnt87/Wvpfcv3pK7vfTv7wag87zzGXzVm5LBv/rqL+HY\nMACDH73dFRvGx6bhM6lR2LyNmxm8Jv+W5WN/PAVfj42y67u7YXiK9m3bGbz8dQCcemUcPv9wQRsL\nbY/nsw8UPNeSeHktetObWTrYkxFmlc7pB1+Au5/LPB6Pf8ZNr2ewyPb4qclZ+PT9MV9ecwODG6qz\nPf7ZO34LvxsCUn5EIlH42D3JOA19ZzD4t5k+Nq8YZPCm61y1hY/enTEt0n/F5Tzzo6cybDv1wBG4\n5w/JOF1Z7dsT4j4vu/UDrm2Pz9e2qr09ni/Htsdnt+mMsBJ45IuPwNAYLWnt5diPn4bHXiTc0srg\n39wu2+ONJ+12WVZiVBL/FLadOVZZbGIo8sAyGBSrx1r4ko5fkAulUAnkYwwuINuL/YFvRLNEO6pt\ndzXXecuov3SqWV+BE2+/4hsts2lIUDaLGLejVBZ6G4lsj3cDn2mO9YuppEcK1vis+Qo+Jnji7VcM\n0+uADLwdTJt4WFG2NukEpeBrhHh1yZy3MRTpYFYVGS182K2sK4FJ+mLYNVMIFN52FOPFWzpnadi+\ncJSp0L6ZGbJhiFUML8zPTtMqD4OuiwKp+spoZhVq+8aLtzFkVK5flC0/QRER/5d0FtX8DppJt1R+\nQVab1BbVFRS7y028taJilFrYXlaOo4t2UCoi4MicdzDIrMbczmfAwNsFyQhZ/Ko8pq3sqeY+BblM\nlI7ltEmFCJx4G3HnZ4KgGFGQ7pDuqacDbxtxcou9ktMmlcsqMCRWm1iEeU3gxLsylNCh3K7ICvXl\nQmabcO1JULKtVV8q6F32tY637bZSj71TBFC8/dn6Q6a9mKrcYjTBR1+SWfCVbCv+7Dn+JrkTWaZN\nBMFlSlS/al9zsqdNamj2ymiq0W7KEm+lVItS6jml1BtdsicYpNWkVd+r6tfjbS82iZYU368Ybn5l\nkSuFcwwceb8POOGGIWZRA428TBd9I5oWhhS8IHk55e3gfd6mXzyDTmrWxKClgkqpNcBa4PvumVM+\nJgweTOiQqSVQBhhbAPOsN6ABC7lUoaGV8xm0TwD/AXhjsYjd3a3U19eVkVXs80lWtLQ2ZhxraEjl\nk++cUhlrnsr439TUUDDtybGZ5O9wXPxaWlLnTE6kjhdKx+pYc1ODrXPz0dXVmnOeVTqtLfHPYYVy\nj3d0tBTNe3ZmLvm73Ub8QraUQ0tL6rNeibSjkUyBrK8LJ48lLlYNjXWu21LoQpjIK93exH+37cjH\n/PltdHa3uJqmle2V8iebyEyq3t2yq64uVqdNTfWpOox/Si4cDiXDvPDZkXgrpV4P3Ku1fl4pVTT+\nyZPjTrJJUugbcBPj0xnHZtJEw63vxo2PZX5Re2pqpmDap06l/I3EhWJyMnXO9NRsURsLfsOyyLmF\nOH16Iuc8q3TGx2P5hCyODw/nppHN7GyqHkZsxAdvvm84OZm6UCbSzn5X+excJOfYzPSc67YUekd6\nIq/x8cy2NjExXbFvPp44Mcr07GzxiCWQbXs1v2F58uRY8reVDU7smpuNADCd1l4m4nUYiUQZGhop\ny+dCou905H0ZsEIpdS2wBJhSSh3VWv/EYXqBxdQv+0RT8yZVtaNsfPRKWDtJB+UjGLVCNbuJI/HW\nWr8m8VspdRvwvAi3fUzQw3KXr/rlCzZ+scM2ot2CTYK3ztuIxm+CoFRv84GrOL/61Bwy6i+d5CDH\nlJF3Olrr21ywI7hYLvSuuBWl5x2Qfuyn3fF2EP00FYOWCgr5sZw3Td8eX0FbnFL2UkG/vL/chMLO\nQNTbLGR7fG1hgpYFRkP8pN42NulUwArBRao4uxg48a7E6o5Sbm2tZ038JCjWBGZ7vGn2i3qbiYy8\ng0so759AhFWIAAAJZElEQVQKY//lJjVKlZcKepa74AXJ6UWZ8w4gFr3RpNGg8dvjTbO/ik8s5WGp\nA1LqXXGCJ95+bYA+GXrb/3h8UL4eX2J0n602qaw9fu08/iU5vViFvIMn3gZQbYGwQ5A3WFZrhGl6\nWQoWVLGjBE68/Td28JlFJa/zNlxxDDO/mhtlZNrEOTLyDjCZy579ryjla7c/fCz1QVLlv3MomEw1\nxzgi3h5ggDYXJ1q9ubyaRka/ZlHF+hLx9hjjb0VNV++S7a/u1+NNby61SjXupkW8K4Y/VNBuIyv3\n805+ufvwiRn2ybnaV84D4wcaVaF6hWaseOcTh0o09XDYfi5+m9+2+0AsFE59UcZk7JR/fX1aN/Cw\nusJ22kJV24uod6kk2ldGtYXIDfMAY8V7x3kr6OppZWBwfkb4q65YC8DAim7X8mppbWDZyvnMa29k\nQV8bG7cvKRi/a34rC5d0sG33Mg5ev5FFA52ctXtpRpw1Gxeye//Kkm1pndfIoOrlgkuLf8EonQuv\nXMvSlfPpW5T6Msfu/StRGxdaxl+7aSEL+trYtS9l46WHNrB4WRfLVvYUzS8UCnHm+j4WnNHGGf3V\n+ewVwOLl3XQvaGXrzlT5h8Mx285c18eCvjbO3rsieezMdX10dDUzqHpdt+XSQxuSv7ecM8CK1b0x\n23albDv7vOUZ52w+u3Bbc4P9l61h+Zk9dM1vdS3NtZsXsfOCQdfSc4OO7hYWDXSydedAMmzj9sUA\nnHvhKkdpbt21lK75LSxN6xNn7VzKooFOLnv1pvIMLkKoEkuThoZGysqkmp9Oqhbic/CpNX9BfHZw\nbt7xu7Ejb0EQhFpGxFsQBMFARLwFQRAMRMRbEATBQES8BUEQDETEWxAEwUBEvAVBEAxExFsQBMFA\nRLwFQRAMRMRbEATBQES8BUEQDETEWxAEwUBEvAVBEAxExFsQBMFARLwFQRAMRMRbEATBQES8BUEQ\nDETEWxAEwUBEvAVBEAyk3umJSqkPA/uABuCjWutvu2aVIAiCUBBHI2+l1F5gi9Z6F3AA+JSrVgmC\nIAgFcTpt8gvg1fHfp4BGpZRMwQiCIFSIUDQaLSsBpdRbgd1a6zfmizM7Oxetr68rKx9BEIQaJJTv\ngOM5bwCl1FXAW4CLCsU7eXK8nGzo7W1naGikrDRMQ3wOPrXmL4jPTs7NRzkPLC8GbgUOaK1POU1H\nEARBKB1H4q2U6gQ+CezXWp9w1yRBEAShGE5H3q8BuoFvKaUSYa/XWr/gilWCIAhCQRyJt9b688Dn\nXbZFEARBsIks7xMEQTAQEW9BEAQDEfEWBEEwEBFvQRAEAxHxFgRBMBARb0EQBAMR8RYEQTAQEW9B\nEAQDEfEWBEEwEBFvQRAEAxHxFgRBMBARb0EQBAMR8RYEQTAQEW9BEAQDEfEWBEEwEBFvQRAEAxHx\nFgRBMBARb0EQBAMR8RYEQTAQEW9BEAQDEfEWBEEwEBFvQRAEAxHxFgRBMBARb0EQBAMR8RYEQTAQ\nEW9BEAQDEfEWBEEwEBFvQRAEAxHxFgRBMBARb0EQBAMR8RYEQTAQEW9BEAQDEfEWBEEwEBFvQRAE\nAxHxFgRBMJB6pycqpT4IvApoBt6mtX7UNasEQRCEgjgaeSul9gE7tNZ7gDcAn3TVKkEQBKEgTqdN\n9gF3AGitfwP0K6VaXbNKEARBKIjTaZNFwBNp/4eAM4A/WEXu7W0POcwnPY1ykzAO8Tn41Jq/ID67\nhdOR93TW/xAQLdMWQRAEwSZOxftPQF/a/17g5fLNEQRBEOzgVLx/AFwFoJQ6C3hOaz3hmlWCIAhC\nQULRqLPZDqXUR4GLgFngTVrrJ900TBAEQciPY/EWBEEQqofssBQEQTAQEW9BEAQDcbw9vhIEfQu+\nUurDxDY8NQAfBe4Bvgp0AUeBw1rrKaXUNcC7iZXDZ7TWX6qSyWWjlGoBfgt8ELiTgPsLoJS6EbiZ\n2JLa9wOPEFC/lVJtwNeAbmJ+fAB4FvhfQCvwKPAXWuuoUuodwOvi4X+jtb6zOlY7Rym1gdiGxU9p\nrT+rlOrDZt0qpeqAfwA2EGsbh7XWlntlrPDtyDvoW/CVUnuBLVrrXcAB4FPAx4Eva613As8Dh5VS\n7cAngEuAPcC74x3EVN4HnIj/Dry/cdtvJubL5cDVBNvvNwJaa30BcAj4NDHhfrfWegexZcX7lFIr\ngbcB5wMXA59QSpW9ma+SKKXmAZ8BfpoWXErdvh6IxDXuw8QudLbxrXgT/C34vwBeHf99CmgE9gP/\nHA+7g1ij3gE8orU+rbUeB34OnFdhW11BKbUGWAt8Px50AQH2N87FwPe11pNa62Na67cQbL+Pk9oD\n0k3sQr1Ka/1QPCzh7/nAD7XWM1rrl4ntHVlTaWPLZAo4CBxLC7sA+3Wb1Djgh/FzbeNn8V5EbNt9\ngsQW/ECgtZ7VWo/G/76Z2BTCvLT18n8GFpJbDolwE/kE8Ndp/9sD7i/AADBPKfVdpdR9Sqn9BNvv\nbwEDSikN/Az4z8AraccD42+8D2fvbymlbpPhWutZoC4+lWILP4t3TWzBV0pdBbwFeBeZPif8DUQ5\nKKVeD9yrtX4+LTiw/qbRBKwArgf+HfC/ie2NSBA0v18HHNFaK+BCYvO/6QTN32xKadPZ4VBCGfhZ\nvAO/BV8pdTFwK3CJ1voUMJI2NbSQ2O1Ydjkkwk3jMuCQUupBYnca7wcmAuxvgpeAB7TWc1rrp4Fh\nYCzAfu8itgMbrfUTxB5GLkg7HjR/symlDyfDlVKNwIzWOmI3Iz+Ld6C34CulOok9hD2otU48wPsh\ncZ+Ba4nNDT8MbFJKdcYfcpwD3Fdpe8tFa/0arfXZ8Qc5XwA+BPwLAfU3jZ8A+5VSofhKhHaC7fez\nwHYApdRiYAR4VCm1K378GmL+/hi4WCnVoJTqB+ZrrZ+qhsEuU0of/gGxB9gQe5j941Iy8vUOyyBv\nwVdKvRW4DUhvsG8AvgLMAzTwRq31rFLqemKrNCLAx7TW/1hhc11FKXUbsSfxdwH/SPD9fStwIzHh\n/gCxpYKB9DsuTl8hNtpuBP6W2N3Hl4ktTb5ba31zPO47iU0lRYD/pLX+WVWMdohSahtwO7AcmAFe\nBA4DX8dG3cbnt78ErAfGgRu11kft5u9r8RYEQRCs8fO0iSAIgpAHEW9BEAQDEfEWBEEwEBFvQRAE\nAxHxFgRBMBARb0EQBAMR8RYEQTCQ/w+pD0Gt3/OEwgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd3bf228f28>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for chain in range(4):\n",
" plt.plot(get_trajectory_len(stan_trace, chain)[1000:])\n",
"plt.ylim(0, 10)"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.928298339344\n",
"0.944478724007\n",
"0.956853308722\n",
"0.919931618767\n"
]
}
],
"source": [
"for i in range(4):\n",
" print(stan_trace.get_sampler_params()[i]['accept_stat__'][1000:].mean())"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0952579241263\n",
"0.0862117192884\n",
"0.0781050493422\n",
"0.100605904905\n"
]
}
],
"source": [
"for i in range(4):\n",
" print(stan_trace.get_sampler_params()[i]['stepsize__'][-1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One chain is going crazy (treedepth reaches 10). The others finished after ~20min. They seem to favor a slightly larger trajectory length, but on the other hand the acceptance rates are a bit lower...\n",
"\n",
"The mass matrix is different, for comparison we try a mass matrix based on the variance of a previous trace in pymc:"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 2000/2000 [06:12<00:00, 5.85it/s]\n",
"100%|██████████| 2000/2000 [06:28<00:00, 6.99it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 7.08 s, sys: 1.58 s, total: 8.66 s\n",
"Wall time: 12min 55s\n"
]
}
],
"source": [
"%%time\n",
"samples = [model.dict_to_array(p) for p in trace1[1000:]]\n",
"nuts_args['scaling'] = np.array(samples).var(0)\n",
"trace4 = sample('leapfrog')"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fd3a92a97b8>]"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd39b168c18>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(trace4[1000:]['step_size'] * trace4[1000:]['tree_size'])"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.07949173, 0.08037735, 0.08220298, 0.08069547])"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trace4[-1:]['step_size']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I guess that is close enough?"
]
}
],
"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