I've come across an interesting problem recently, and I'm wondering if I'm missing some obvious approach here. The problem statement is thus:

Imagine I run an online business, and I'm interested in restructuring my pricing model such that the price a user sees is dependent on say, age (or some other 'well-behaved' variable that we can assume is known to me — ignore the ethical considerations for now, I'm going with age for the sake of simplicity). So, I run a test over the course of a few weeks where I randomly assign users to one of four price variants, and I collect data on how each variant converts users:

  1. Variant 1: \$2.99/month
  2. Variant 2: \$4.99/month
  3. Variant 3: \$6.99/month
  4. Variant 4: \$8.99/month

The question is, given a users age, what's the optimal variant to assign the user?

I've thought of a couple of approaches so far, but I'm curious if there's a 'go-to' method here that I'm missing. My ideas so far are:

  1. Create four linear regression models of form $\text{Revenue}_{\text{user}} \sim \text{age}_{\text{user}}$, one for each variant. I can then plug each user's age into each model, and select the variant whose model produces the highest predicted revenue. However, I am unsure if this is an appropriate way to specify the linear model, as $\text{Revenue}_{\text{user}}$ is heavily zero-inflated.
  2. Bucket the users into age quantiles, and then identify the variant in each quantile that maximises revenue. This is conceptually simple, but also prone to overfitting. There is also the question of how many quantiles do I use?, which isn't immediately obvious.

I'm wondering if either a) a Bayesian approach or b) a ML-based approach (using something like a RF) could work here?


2 Answers 2


Your tests have given you a lot of data, including the user's age (and/or other characterstics), the price variant they were offered, whether they converted, and what revenue resulted.

Feed all of this into one large model. If you are concerned about the zero inflation, you could use a zero inflated model. Or simpler, model the probability of conversion with a logistic model, and the resulting revenue conditional on conversion with a straightforward OLS model (or using gamma regression, or similar). But if all you are interested in is expected revenue, then a simple regression will already get you 95% of the way.

Now you are faced with a new user. Evaluate your model four times, once with each price variant (and of course including all the other predictors you have on the user, or anything else). This will give you the expected revenue for each price variant. Pick the largest.

Of course, if you just feed everything into a model as-is, you will always pick a single price variant, since the uplift between price variants does not depend on the age. So you will need to include interaction terms between age and price variants (and any others that occur to you, too).

For bonus points, consider a spline transform of age to model nonlinearities. You can do this with other models as well. I would try a Random Forest, which is good at modeling interactions.


I would expect that there is a linear relationship between probability of conversion and price (this would certainly be easy to check with collected data). So as price goes up, probability of conversion goes down. Modelling the probability of an event is a classification problem and can be modelled (for example) by logistic regression:

\begin{equation} P[conversion] = \frac{1}{1+e^{-(\beta*Price+\alpha)}} \end{equation}

One might then expect that the sensitivity to price $\beta$ will depend on other factors such as age. For example, older users may have more money and be less sensitive to changes in price (small $\beta$).

I would create age categories and learn a different $\beta$ for each category. This relationship can then be used to select the revenue optimising price for a given category.

  • 2
    $\begingroup$ Much better to model probabilities using a logistic regression, or you will end up with negative probabilities for high prices. Or probabilities larger than one for low prices. $\endgroup$ Commented Sep 23, 2021 at 10:09
  • $\begingroup$ Very good point, have edited the equation as appropriate. $\endgroup$
    – Adam Kells
    Commented Sep 23, 2021 at 10:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.