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))