dynamic-pricing / scripts /posterior.py
mathiasleys's picture
Initial commit
3380ee9
raw
history blame
726 Bytes
"""File for updating prior into posterior"""
import pymc3 as pm
class PosteriorGenerator:
def __init__(self, prices, demands):
self.price_observations = prices
self.demand_observations = demands
def calc_posterior(self, samples=1000):
with pm.Model():
elas = pm.Normal("elas",mu=-0.5, sd=0.5)
shape = pm.Normal("shape",mu=0, sd=2)
stdev = pm.Exponential("stdev",lam=1)
y_hat = pm.math.dot(elas, self.price_observations) + shape
log_observations = pm.math.log(self.demand_observations)
_ = pm.Normal("demand", mu=y_hat, observed=log_observations, sigma=stdev)
trace = pm.sample(samples)
return trace