In [1]:
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
import seaborn as sns
import pymc3 as pm
import pandas as pd
%matplotlib inline
sns.set(font_scale=1.5)
In [8]:
data = np.random.normal(2, 2, size=20)
data = data[data > 0]
data
Out[8]:
In [9]:
sns.distplot(data)
Out[9]:
In [11]:
with pm.Model() as model:
mean = pm.Uniform('mean', 0, 100)
sd = pm.Uniform('sd', 0, 100)
norm = pm.TruncatedNormal('norm', mu=mean, sigma=sd, lower=0)
trace = pm.sample(1000)
In [12]:
pm.traceplot(trace)
Out[12]:
In [22]:
with pm.Model() as model:
mean = pm.Uniform('mean', 0, 100)
sd = pm.Uniform('sd', 0, 100)
norm = pm.TruncatedNormal('norm', mu=mean, sigma=sd, lower=0, observed=data+10)
trace = pm.sample(5000, tune=1000, target_accept=0.9)
In [23]:
pm.traceplot(trace)
Out[23]:
In [31]:
trace.get_values('mean')
Out[31]:
In [33]:
sns.distplot(trace.get_values('mean')-10)
Out[33]:
In [34]:
pm.summary(trace)
Out[34]:
In [35]:
pm.plot_posterior(trace)
Out[35]:
In [ ]:
In [ ]: