CoCalc Public FilesLabs / Sales / Modeling Sales of a New Product.ipynbOpen with one click!
Authors: Haley Reed, Greta Scheve
Views : 51
Compute Environment: Ubuntu 20.04 (Default)

This lab is based on work by Brian Winkel available through SIMIODE at

In 1969 Frank M. Bass, an industrial administration professor at Purdue University published a seminal paper (1) in which he presented the development of what was to be called the Bass diffusion model which “consists of a simple differential equation that describes the process of how new products get adopted in a population” (4).

"The model presents a rationale of how current adopters and potential adopters of a new product interact. The basic premise of the model is that adopters can be classified as innovators or as imitators and the speed and timing of adoption depends on their degree of innovativeness and the degree of imitation among adopters. The Bass model has been widely used in forecasting, especially new products’ sales forecasting and technology forecasting. Mathematically, the basic Bass diffusion is a Riccati differential equation with constant coefficients." (4)


Suppose a new product is released. Let f(t)f(t) be the probability that an individual purchases the product at time tt and F(t)F(t) be the probability that an individaul has already\textit{has already} purchased the product by time tt. In the language of probability theory, f(t)f(t) is the probability distribution function and F(t)F(t) is the cumulative distribution function. Notice that:

F(t)=0tf(s)ds. F(t) = \int_0^t f(s)\,ds.

We assume someone may choose to buy the product for one of two reasons: either they are an innovator\textbf{innovator} and they like to try new things or the are a imitator\textbf{imitator} and they like to copy fads and trends. Let pp be a positive parameter indicating the prevalence of innovators in the population and qq be a positive parameter indicating strength and prevalence of imitators in the population. Then, the probability that someone who has not bought the product yet buys it at time tt is given by:

f(t)1F(t)=p+qF(t). \frac{f(t)}{1 - F(t)} = p + q F(t).

The left hand side is a way of writing the conditional probability of purchasing the product at time tt given that they have not purchased it yet. The right hand side is large when there are lots of innovators or when there are lots of imitators and\textbf{and} a portion of the population has bought the product allowing the imitators to copy them.

Rearranging the above equation, we can show:

f(t)=p+(qp)F(t)qF(t)2. f(t) = p + (q-p)F(t) - q F(t)^2.

We will assume no one has purchased the product at time zero, so F(0)=0F(0) = 0 and we note that f(t)=F(t)f(t) = F'(t). Therefore, we have an initial value problem:

F(t)=p+(qp)F(t)qF(t)2,    F(0)=0. F'(t) = p + (q-p)F(t) - q F(t)^2, \; \; F(0) = 0.

If the population of potential buyers has mm individuals in it, we can also represent the total sales up to time tt as mF(t)mF(t) and the sales at\textit{at} time tt as S(t)=mf(t)S(t) = mf(t).

We will analyze this modeling scenario using the three pillars of analysis we have covered so far.


  1. Find all equilibria, classify their type, and interpret their meaning in context. Be aware that pp and qq are both positive and that F(t)F(t) must be between zero and one for all time. Use the cell below this for computations and the cell below that to write up your conclusions.
In [ ]:

We found the equilibria to be F=pqF = \frac{p}{q} and F=1F = -1. The solution F=1F = -1 is a source, but this is not relevant to the model because F(t)F(t) must always be between zero and one. The solution F=pqF = \frac{p}{q} is a sink. This means that if the probability of someone already having purchased the product is bigger than the ratio of innovators to imitators, then that probability will slowly go down until it is equal to pq\frac{p}{q} as fewer people buy the product over time. If the probability is lower than pq\frac{p}{q}, the probability will increase over time as more people seek to emulate innovators.

  1. Create a slope field for F(t)F(t) with parameter values p=0.01p = 0.01 and q=0.25q = 0.25.
In [ ]:
In [2]:
t, F = var('t, F') f(t,F) = .01 + (.25-.01)*F-.25*F^2 plot_slope_field(f, (t, 0, 10), (F, 0, 1), headaxislength=3, headlength=3, axes_labels=['$t$','$F(t)$'])


  1. Find an explicit solution for F(t)F(t). Once it is found, also find explicit solutions for f(t)f(t) and S(t)S(t). Leave pp, qq and mm as unspecified parameters in your solutions. You can use Sage to help find this solution or study question 26 from Section 1.5 in our text. Do your computations in the cell below this and write up the formula in the cell below that using LaTeX\LaTeX.
In [20]:
t,F,f,p,q = var('t,F,f,p,q') F = function('F')(t) de = diff(F) == p + ((q-p)*F)-(q*F^2) Fsol = desolve(de, F,ivar = t, ics = (0,0)) Fsol.simplify_full().show() #f = p + ((q-p)*Fsol)-(q*Fsol^2)
log(qF(t)+p)log(F(t)1)p+q=iπ+(p+q)t+log(p)p+q\frac{\log\left(q F\left(t\right) + p\right) - \log\left(F\left(t\right) - 1\right)}{p + q} = \frac{-i \, \pi + {\left(p + q\right)} t + \log\left(p\right)}{p + q}

We tried to solve the equation for F(t)F'(t) using Sage, but we were only able to get the above expression, which has imaginary numbers, logarithms, and pi, which we don't think is right. We weren't sure how to simplify that expression, so we weren't able to find formulas for f(t)f(t) or S(t)S(t) either.


  1. Recreate the slope field (with p=0.01p = 0.01 and q=0.25q = 0.25) from question 2 and superimpose the solution to the initial value problem. You may find that solution numerically with desolve_rk4() or from the analytical solution.
In [11]:
t, F = var('t, F') f(t,F) = .01 + (.25-.01)*F-.25*F^2 p=plot_slope_field(f, (t, 0, 10), (F, 0, 1), headaxislength=3, headlength=3, axes_labels=['$t$','$F(t)$']) p += desolve_rk4(f, F, ics=[0,0], ivar=t, output='plot', end_points=[0,10], thickness=2) = 0, xmax = 10, ymin = 0, ymax = 1) #set the size of the plot window
  1. Consider data on the sales of power lawnmowers from 1949 (t=0t = 0) to 1961 in the table below:
0 1 2 3 4 5 6 7 8 9 10 11 12
540 1090 1250 1190 1350 1380 2700 3200 3340 3490 4250 3780 3560

These ought to correspond to S(t)S(t). The interactive cell below will plot these data as a scatterplot as well as the graph of S(t)S(t) for your chosen parameter values. Manipulate pp, qq, and mm to best match the data. In the cell below, indicate the best choices for each parameter value and interpret them in the context of the data.

In [25]:
@interact def _(p = slider(0.005,.2,step_size = 0.005), q = slider(0.01,.5,step_size = 0.01), m = slider(10000, 50000, step_size = 100)): lawnmowers = [[0,540],[1,1090],[2,1250],[3,1190],[4,1350],[5,1380],[6,2700],[7,3200],[8,3340],[9,3490],[10,4250],[11,3780],[12,3560]] myPlot = list_plot(lawnmowers, color = "black", pointsize = 30,legend_label = 'Observed Sales') t = var('t') S = (m*exp((p+q)*t)*p*(p+q)^2)/(p*exp((p+q)*t)+q)^2 myPlot += plot(S,t,0,12,legend_label = 'Predicted Sales') show(myPlot)

We thought that .01.01 was the best value for pp. This means that there are very few innovators in this market for this product. We picked .46.46 for qq, which suggests that there are a lot more imitators for this product market. This makes sense, because lawn mowers are a very functional product, so after a few good endorsements by innovators there would likely be many willing imitators in the market. We chose 39,00039,000 for mm. This is the total number of potential buyers in the market. Our number for mm is actually relatively close to the total amount of people that bought lawn mowers from 1949 to 1961. It makes sense that almost all potential buyers of the product ended up purchasing the product in the long run, and this seems like a sign that the product was very successful.


(1) Bass, F. M. 1969. A new product grown for model consumer durables. Management Science. 15(5): 215-227.

(2) Bass, F. M. 2004. A new product grown for model consumer durables. Management Science. Published online. 1 December 2004. 10.1287/mnsc.1040.0264. pp. 1825-1832. Accessed 13 November 2014.

(3) Rogers, E. M. 1962. Diffusion of Innovation. New York: The Free Press.

(4) Wikipedia contributors. 2014. Bass diffusion model. Wikipedia, The Free Encyclopedia. diffusion model&oldid=621887389. Accessed 13 November 2014.

In [ ]: