import csv
import pymc3 as pm
import numpy as np
import pandas as pd
import theano.tensor as tht
PLA = pd.read_csv('./productliability_award.csv')
print(PLA.shape)
print(list(PLA.columns))
TH_MODEL = pm.Model()
with TH_MODEL:
A = pm.Normal('alpha', mu=0, sd=10)
BL = pm.Normal('betaL', mu=0, sd=10)
BN = pm.Normal('betaN', mu=0, sd=10)
BO = pm.Normal('betaO', mu=0, sd=10)
BLO = pm.Normal('betaLO', mu=0, sd=10)
BNO = pm.Normal('betaNO', mu=0, sd=10)
P = A + BL * PLA['liability'] + BN * PLA['negligence'] + BO\
* PLA['oralArg'] + BLO * PLA['liability'] * PLA['oralArg'] + BNO\
* PLA['negligence'] * PLA['oralArg']
# Convert from logit
LGP = tht.exp(P) / (1 + tht.exp(P))
AWARD = pm.Binomial('award', n=1, p=LGP, observed=PLA['award'])
MAP_PLA0 = pm.find_MAP(return_raw=True, include_transformed=True,
model=TH_MODEL)
# obtain starting values via MAP
start = pm.find_MAP()
# instantiate sampler
step = pm.Slice()
# draw 5000 posterior samples
trace = pm.sample(5000, step=step, start=start)
_ = pm.traceplot(trace)
pm.summary(trace)
print(MAP_PLA0)
print(_)
print(pm.summary(trace))
aW1wb3J0IGNzdgppbXBvcnQgcHltYzMgYXMgcG0KaW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBwYW5kYXMgYXMgcGQKaW1wb3J0IHRoZWFuby50ZW5zb3IgYXMgdGh0CgpQTEEgPSBwZC5yZWFkX2NzdignLi9wcm9kdWN0bGlhYmlsaXR5X2F3YXJkLmNzdicpCnByaW50KFBMQS5zaGFwZSkKcHJpbnQobGlzdChQTEEuY29sdW1ucykpCgpUSF9NT0RFTCA9IHBtLk1vZGVsKCkKCndpdGggVEhfTU9ERUw6CiAgICBBID0gcG0uTm9ybWFsKCdhbHBoYScsIG11PTAsIHNkPTEwKQogICAgQkwgPSBwbS5Ob3JtYWwoJ2JldGFMJywgbXU9MCwgc2Q9MTApCiAgICBCTiA9IHBtLk5vcm1hbCgnYmV0YU4nLCBtdT0wLCBzZD0xMCkKICAgIEJPID0gcG0uTm9ybWFsKCdiZXRhTycsIG11PTAsIHNkPTEwKQogICAgQkxPID0gcG0uTm9ybWFsKCdiZXRhTE8nLCBtdT0wLCBzZD0xMCkKICAgIEJOTyA9IHBtLk5vcm1hbCgnYmV0YU5PJywgbXU9MCwgc2Q9MTApCgogICAgUCA9IEEgKyBCTCAqIFBMQVsnbGlhYmlsaXR5J10gKyBCTiAqIFBMQVsnbmVnbGlnZW5jZSddICsgQk9cCiAgICAgICAgKiBQTEFbJ29yYWxBcmcnXSArIEJMTyAqIFBMQVsnbGlhYmlsaXR5J10gKiBQTEFbJ29yYWxBcmcnXSArIEJOT1wKICAgICAgICAqIFBMQVsnbmVnbGlnZW5jZSddICogUExBWydvcmFsQXJnJ10KICAgICMgQ29udmVydCBmcm9tIGxvZ2l0CiAgICBMR1AgPSB0aHQuZXhwKFApIC8gKDEgKyB0aHQuZXhwKFApKQogICAgQVdBUkQgPSBwbS5CaW5vbWlhbCgnYXdhcmQnLCBuPTEsIHA9TEdQLCBvYnNlcnZlZD1QTEFbJ2F3YXJkJ10pCgogICAgTUFQX1BMQTAgPSBwbS5maW5kX01BUChyZXR1cm5fcmF3PVRydWUsIGluY2x1ZGVfdHJhbnNmb3JtZWQ9VHJ1ZSwKICAgICAgICAgICAgbW9kZWw9VEhfTU9ERUwpCgogICAgIyBvYnRhaW4gc3RhcnRpbmcgdmFsdWVzIHZpYSBNQVAKICAgIHN0YXJ0ID0gcG0uZmluZF9NQVAoKQoKICAgICMgaW5zdGFudGlhdGUgc2FtcGxlcgogICAgc3RlcCA9IHBtLlNsaWNlKCkKCiAgICAjIGRyYXcgNTAwMCBwb3N0ZXJpb3Igc2FtcGxlcwogICAgdHJhY2UgPSBwbS5zYW1wbGUoNTAwMCwgc3RlcD1zdGVwLCBzdGFydD1zdGFydCkKICAgIF8gPSBwbS50cmFjZXBsb3QodHJhY2UpCiAgICBwbS5zdW1tYXJ5KHRyYWNlKQoKcHJpbnQoTUFQX1BMQTApCnByaW50KF8pCnByaW50KHBtLnN1bW1hcnkodHJhY2UpKQ==