In [1]:
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
import seaborn as sns
sns.set_context('notebook')

RANDOM_SEED = 20090425
In [2]:
radon = pd.read_csv('../data/radon.csv', index_col=0)
radon.head()
Out[2]:
idnum state state2 stfips zip region typebldg floor room basement ... pcterr adjwt dupflag zipflag cntyfips county fips Uppm county_code log_radon
0 5081.0 MN MN 27.0 55735 5.0 1.0 1.0 3.0 N ... 9.7 1146.499190 1.0 0.0 1.0 AITKIN 27001.0 0.502054 0 0.832909
1 5082.0 MN MN 27.0 55748 5.0 1.0 0.0 4.0 Y ... 14.5 471.366223 0.0 0.0 1.0 AITKIN 27001.0 0.502054 0 0.832909
2 5083.0 MN MN 27.0 55748 5.0 1.0 0.0 4.0 Y ... 9.6 433.316718 0.0 0.0 1.0 AITKIN 27001.0 0.502054 0 1.098612
3 5084.0 MN MN 27.0 56469 5.0 1.0 0.0 4.0 Y ... 24.3 461.623670 0.0 0.0 1.0 AITKIN 27001.0 0.502054 0 0.095310
4 5085.0 MN MN 27.0 55011 3.0 1.0 0.0 4.0 Y ... 13.8 433.316718 0.0 0.0 3.0 ANOKA 27003.0 0.428565 1 1.163151

5 rows × 29 columns

In [3]:
hennepin_radon = radon.query('county=="HENNEPIN"').log_radon
sns.distplot(hennepin_radon)
Out[3]:
<matplotlib.axes._subplots.AxesSubplot at 0x7ff9d4d06940>
In [5]:
from pymc3 import Model, Uniform, Normal

with Model() as radon_model:
    
    μ = Normal('μ', mu=0, sd=10)
    σ = Uniform('σ', 0, 10)
In [6]:
with radon_model:
    
    y = Normal('y', mu=μ, sd=σ, observed=hennepin_radon)
In [7]:
from pymc3 import fit

with radon_model:

    samples = fit(random_seed=RANDOM_SEED).sample(1000)
Average Loss = 136.48: 100%|██████████| 10000/10000 [00:04<00:00, 2378.38it/s]
Finished [100%]: Average Loss = 136.37
In [9]:
from pymc3 import plot_posterior

plot_posterior(samples, varnames=['μ'], ref_val=np.log(4), color='LightSeaGreen');
/home/himanshu/miniconda3/envs/working/lib/python3.6/site-packages/pymc3/plots/__init__.py:40: UserWarning: Keyword argument `varnames` renamed to `var_names`, and will be removed in pymc3 3.8
  warnings.warn('Keyword argument `{old}` renamed to `{new}`, and will be removed in pymc3 3.8'.format(old=old, new=new))
In [12]:
mus = samples['μ']
sigmas = samples['σ']
radon_samples = Normal.dist(mus, sigmas).random()
(radon_samples > np.log(4)).mean()
Out[12]:
0.461
In [15]:
sns.distplot(radon_samples, label='simulated')
sns.distplot(hennepin_radon, label='observed')
plt.legend()
plt.savefig("del_pymc3.png")

There is this huge difference in the simulated and observed data

The code was taken from https://github.com/fonnesbeck/intro_stat_modeling_2017.git. Which holds the jupyter notebooks for the pycon 2017 talk. As one can check he was getting a much better fit, while the exact same code on my system is giving this wrong fit.

I am also giving my cond list output in case its required:

Name Version Build Channel
_libgcc_mutex 0.1 main
alabaster 0.7.12 py36_0
apptools 4.4.0 py36_1
arviz 0.4.1 py_0 conda-forge
asn1crypto 0.24.0 py36_0
astroid 2.2.5 py36_0
attrs 19.1.0 py36_1
autopep8 1.4.4 py_0
babel 2.7.0 py_0
backcall 0.1.0 py36_0
binutils_impl_linux -64 2.31.1 h6176602_1
binutils_linux -64 2.31.1 h6176602_8
blas 1.0 mkl
bleach 3.1.0 py36_0
bokeh 1.2.0 py36_0
bzip2 1.0.8 h7b6447c_0
ca -certificates 2019.6.16 hecc5488_0 conda-forge
cairo 1.14.12 h8948797_3
certifi 2019.6.16 py36_1 conda-forge
cffi 1.12.3 py36h2e261b9_0
cftime 1.0.3.4 py36hd352d35_1001 conda-forge
chardet 3.0.4 py36_1003
click 7.0 py36_0
cloudpickle 1.2.1 py_0
cmarkgfm 0.4.2 py36h7b6447c_0
conda 4.7.11 py36_0
conda -package-handling 1.3.11 py36_0
configobj 5.0.6 py36_1
cryptography 2.7 py36h1ba5d50_0
cudatoolkit 10.0.130 0
cudnn 7.6.0 cuda10.0_0
cupy 6.0.0 py36hc0ce245_0
curl 7.65.2 hbc83047_0
cycler 0.10.0 py36_0
dash 0.41.0 py_0 conda-forge
dash -core-components 0.46.0 py_0 conda-forge
dash -html-components 0.15.0 py_0 conda-forge
dash -renderer 0.22.0 py_0 conda-forge
dash -table 3.6.0 py_0 conda-forge
dbus 1.13.6 h746ee38_0
decorator 4.4.0 py36_1
defusedxml 0.6.0 py_0
docutils 0.14 py36_0
entrypoints 0.3 py36_0
envisage 4.7.2 py_0
expat 2.2.6 he6710b0_0
fastcache 1.1.0 py36h7b6447c_0
fastrlock 0.4 py36he6710b0_0
flake8 3.7.7 py36_0
flask 0.12.4 pypi_0 pypi
flask -compress 1.4.0 py_0 conda-forge
flask -socketio 2.9.6 pypi_0 pypi
fontconfig 2.13.0 h9420a91_0
freetype 2.9.1 h8a8886c_1
future 0.17.1 py36_0
gcc_impl_linux -64 7.3.0 habb00fd_1 conda-forge
gcc_linux -64 7.3.0 h553295d_8 conda-forge
gdbgui 0.13.2.0 pypi_0 pypi
gevent 1.4.0 pypi_0 pypi
glib 2.56.2 hd408876_0
gmp 6.1.2 h6c8ec71_1
gmpy2 2.0.8 py36h10f8cd9_2
gobject -introspection 1.56.1 py36hbc4ca2d_2
gravipy 0.1.0 pypi_0 pypi
gst -plugins-base 1.14.0 hbbd80ab_1
gstreamer 1.14.0 hb453b48_1
gxx_impl_linux -64 7.3.0 hdf63c60_1 conda-forge
gxx_linux -64 7.3.0 h553295d_8 conda-forge
h5py 2.9.0 nompi_py36hcafd542_1103 conda-forge
hdf4 4.2.13 h3ca952b_2
hdf5 1.10.4 hb1b8bf9_0
ibmquantumexperience 2.0.4 pypi_0 pypi
icu 58.2 h9c2bf20_1
idna 2.8 py36_0
imagesize 1.1.0 py36_0
intel -openmp 2019.4 243
ipykernel 5.1.1 py36h39e3cac_0
ipython 7.7.0 py36h39e3cac_0
ipython_genutils 0.2.0 py36_0
isort 4.3.21 py36_0
itsdangerous 1.1.0 py36_0
jedi 0.13.3 py36_0
jeepney 0.4 py36_0
jinja2 2.10.1 py36_0
joblib 0.13.2 py36_0
jpeg 9b h024ee3a_2
jsoncpp 1.8.4 hfd86e86_0
jsonschema 3.0.1 py36_0
jupyter_client 5.3.1 py_0
jupyter_core 4.5.0 py_0
jupyterlab 0.35.5 py36hf63ae98_0
jupyterlab_server 0.2.0 py36_0
keyring 18.0.0 py36_0
kiwisolver 1.1.0 py36he6710b0_0
krb5 1.16.1 h173b8e3_7
lazy -object-proxy 1.4.1 py36h7b6447c_0
libarchive 3.3.3 h5d8350f_5
libcurl 7.65.2 h20c2e04_0
libedit 3.1.20181209 hc058e9b_0
libffi 3.2.1 hd88cf55_4
libgcc -ng 9.1.0 hdf63c60_0
libgfortran -ng 7.3.0 hdf63c60_0
libgpuarray 0.7.6 h14c3975_1003 conda-forge
libnetcdf 4.6.1 h11d0813_2
libogg 1.3.2 h7b6447c_0
libpng 1.6.37 hbc83047_0
libsodium 1.0.16 h1bed415_0
libssh2 1.8.2 h1ba5d50_0
libstdcxx -ng 9.1.0 hdf63c60_0
libtheora 1.1.1 h5ab3b9f_1
libtiff 4.0.10 h2733197_1001
libuuid 1.0.3 h1bed415_2
libvorbis 1.3.6 h7b6447c_0
libxcb 1.13 h1bed415_1
libxml2 2.9.9 hea5a465_1
line_profiler 2.1.2 py36h14c3975_0
llvmlite 0.29.0 py36hd408876_0
lz4 -c 1.8.1.2 h14c3975_0
lzo 2.10 h49e0be7_2
mako 1.1.0 py_0 conda-forge
markupsafe 1.1.1 py36h7b6447c_0
matplotlib 3.1.0 py36h5429711_0
mayavi 4.6.2 py36hcf37d21_4
mccabe 0.6.1 py36_1
mistune 0.8.4 py36h7b6447c_0
mkl 2019.4 243
mkl -service 2.0.2 py36h7b6447c_0
mkl_fft 1.0.12 py36ha843d7b_0
mkl_random 1.0.2 py36hd81dba3_0
mpc 1.1.0 h10f8cd9_1
mpfr 4.0.1 hdf1c602_3
mpmath 1.1.0 py36_0
nbconvert 5.5.0 py_0
nbformat 4.4.0 py36_0
nccl 1.3.5 cuda10.0_0
ncurses 6.1 he6710b0_1
netcdf4 1.4.2 py36h808af73_0
nodejs 10.13.0 he6710b0_0
notebook 6.0.0 py36_0
ntlm -auth 1.3.0 pypi_0 pypi
numba 0.44.1 py36h962f231_0
numpy 1.16.4 py36h7e9f1db_0
numpy -base 1.16.4 py36hde5b4d6_0
numpydoc 0.9.1 py_0
olefile 0.46 py36_0
openssl 1.1.1c h516909a_0 conda-forge
packaging 19.0 py36_0
pandas 0.25.0 py36he6710b0_0
pandoc 2.2.3.2 0
pandocfilters 1.4.2 py36_1
parso 0.5.0 py_0
patsy 0.5.1 py36_0
pcre 8.43 he6710b0_0
pexpect 4.7.0 py36_0
pickleshare 0.7.5 py36_0
pillow 6.1.0 py36h34e0f95_0
pip 19.1.1 py36_0
pixman 0.38.0 h7b6447c_0
pkginfo 1.5.0.1 py36_0
plotly 3.10.0 py_0
prometheus_client 0.7.1 py_0
prompt_toolkit 2.0.9 py36_0
psutil 5.6.3 py36h7b6447c_0
ptyprocess 0.6.0 py36_0
pybind11 2.3.0 pypi_0 pypi
pycairo 1.18.1 py36h2a1e443_0
pycodestyle 2.5.0 py36_0
pycosat 0.6.3 py36h14c3975_0
pycparser 2.19 py36_0
pyevtk 1.1.1 pypi_0 pypi
pyface 6.1.2 py36_0
pyflakes 2.1.1 py36_0
pygdbmi 0.9.0.2 pypi_0 pypi
pygments 2.4.2 py_0
pygobject 3.28.3 py36h89f6ae1_1001 conda-forge
pygpu 0.7.6 py36h3010b51_1000 conda-forge
pylint 2.3.1 py36_0
pymc3 3.7 py_0 conda-forge
pyopenssl 19.0.0 py36_0
pyparsing 2.4.0 py_0
pyqt 5.9.2 py36h05f1152_2
pyrsistent 0.14.11 py36h7b6447c_0
pysocks 1.7.0 py36_0
python 3.6.8 h0371630_0
python -dateutil 2.8.0 py36_0
python -engineio 3.9.3 pypi_0 pypi
python -libarchive-c 2.8 py36_13
python -socketio 4.3.1 pypi_0 pypi
pytz 2019.1 py_0
pyyaml 5.1.1 py36h7b6447c_0
pyzmq 18.0.0 py36he6710b0_0
qt 5.9.7 h5867ecd_1
qtawesome 0.5.7 py36_1
qtconsole 4.5.2 py_0
qtpy 1.8.0 py_0
readline 7.0 h7b6447c_5
readme_renderer 24.0 py36_0
requests 2.22.0 py36_0
requests -ntlm 1.1.0 pypi_0 pypi
requests -toolbelt 0.9.1 py_0
retrying 1.3.3 py36_2
rope 0.14.0 py_0
ruamel_yaml 0.15.46 py36h14c3975_0
salib 1.3.7 pypi_0 pypi
scikit -learn 0.21.2 py36hd81dba3_0
scipy 1.2.1 py36h7c811a0_0
seaborn 0.9.0 py36_0
secretstorage 3.1.1 py36_0
send2trash 1.5.0 py36_0
setuptools 41.0.1 py36_0
sip 4.19.8 py36hf484d3e_0
six 1.12.0 py36_0
snowballstemmer 1.9.0 py_0
sphinx 2.1.2 py_0
sphinxcontrib -applehelp 1.0.1 py_0
sphinxcontrib -devhelp 1.0.1 py_0
sphinxcontrib -htmlhelp 1.0.2 py_0
sphinxcontrib -jsmath 1.0.1 py_0
sphinxcontrib -qthelp 1.0.2 py_0
sphinxcontrib -serializinghtml 1.1.3 py_0
spyder 3.3.5 py36_0
spyder -kernels 0.5.1 py36_0
spyder -line-profiler 0.1.1 py_1 spyder-ide
sqlite 3.29.0 h7b6447c_0
statsmodels 0.10.0 py36hdd07704_0
sympy 1.4 py36_0
tartube 1.0.0 pypi_0 pypi
tbb 2019.4 hfd86e86_0
terminado 0.8.2 py36_0
testpath 0.4.2 py36_0
theano 1.0.4 py36hf484d3e_1000 conda-forge
tk 8.6.8 hbc83047_0
tornado 6.0.3 py36h7b6447c_0
tqdm 4.32.1 py_0
traitlets 4.3.2 py36_0
traits 5.1.1 py36h7b6447c_0
traitsui 6.1.2 py_0
twine 1.13.0 py_1
typed -ast 1.3.4 py36h7b6447c_0
urllib3 1.24.2 py36_0
vtk 8.2.0 py36haa4764d_200
wcwidth 0.1.7 py36_0
webencodings 0.5.1 py36_1
werkzeug 0.15.4 py_0
wheel 0.33.4 py36_0
wrapt 1.11.2 py36h7b6447c_0
wurlitzer 1.0.3 py36_0
xarray 0.12.3 py_0 conda-forge
xz 5.2.4 h14c3975_4
yaml 0.1.7 had09818_2
youtube -dl 2019.7.30 pypi_0 pypi
zeromq 4.3.1 he6710b0_3
zlib 1.2.11 h7b6447c_3
zstd 1.3.7 h0b5b093_0
In [ ]: