dynamic-pricing / scripts /generate_posterior.py
mathiasleys's picture
Initial commit
3380ee9
raw
history blame
1.14 kB
"""Script that generates, pickles and stores posterior data"""
import pickle
import numpy as np
import config as cfg
from scripts.posterior import PosteriorGenerator
np.random.seed(42)
if __name__ == '__main__':
demo_prices = np.concatenate([np.repeat(10,10), np.repeat(7.5,25), np.repeat(11,15)])
possible_prices = np.linspace(0,20,100)
for el in [x/100 for x in range(5,100,5)]:
demo_demands = np.exp(
np.random.normal(
loc=-el*demo_prices+cfg.LATENT_SHAPE,
scale=cfg.LATENT_STDEV,
)
)
ts = PosteriorGenerator(prices=demo_prices, demands=demo_demands)
posterior = ts.calc_posterior(samples=5000)
post_demand_samples = []
for idx in range(len(posterior)):
elas = posterior.get_values("elas")[idx]
shape = posterior.get_values("shape")[idx]
post_demand_sample = np.exp(elas*possible_prices + shape)
post_demand_samples.append(post_demand_sample)
with open(f"assets/precalc_results/posterior_{el}.pkl", 'wb') as f:
pickle.dump(post_demand_samples, f)