So I have a problem where you win an auction if you bid the highest price, but pay the second bidders amount. The problem is further confounded by the fact that you only observe the sum of the second bids at the end of the day, only if clicked. You do however see the number of impressions at the end of the day. The data generation process is shown below.
def get_spend_and_impressions_per_keyword(our_price):
impressions ~ Poisson(AVERAGE_IMPRESSIONS)
ctr ~ Uni[0, 1e-1] # we know that CTR is less than 10%
spend = 0
our_impressions = 0
for _ in range(impressions):
competitor_spend ~ Gamma()
if competitor_spend < our_price:
our_impressions += 1
condition = Bernoulli(ctr)
spend += condition * competitor_spend
return spend, our_impressions
Ideally what I would like to get is the posterior given our_price
. Any thoughts on how I would model this on pymc3/4?