Product Diffusion Model

The Bass Diffusion model

The Bass Diffusion model elaborates on how a new product diffusion occurs in society and, therefore, can help to analyze the innovation diffusion.

This model is very interesting. It uses some assumption that relates to consumer’s behavior, then, based on those assumptions, develops a model in functional form. Then, one can fit the real data on that functional form to solve the parameters.

This model has three assumptions:

  1. There is no repetitive purchase or consumer purchase for one time i.e., consumer durable good;

  2. There is no supply shock and;

  3. The probability that an initial purchase at time \(T\) i.e., given that no purchase has yet made \(P\left( T \right)~\), is a linear function of the number of previous buyers.

\[P\left( T \right)~~~=\text{ }p\text{ }+\text{ }\left( q/m \right)Y\left( T \right)\to (1)\]

Where \(p\) and \(q/m\) are constants. \(Y\left( T \right)\) is the number of previous buyers.

For \(T=0\), \(Y\left( 0 \right)=0\), then \(p\) represents the probability of an initial purchase at \(T=0\), and its magnitude reflects the importance of innovators in the social system. The \(p\) is the fraction of all adopter who adopts products as it launches. These are the people who buy the product as the product appear in the market.

Let’s define \(m\) as the size of potential market size, then \((q/m)\) is the portion of the market that has not yet purchased the product.

\((q/m)\) times \(Y(T )\) reflects the pressures operating on imitators as the number of previous buyers increases.

Interestingly, \(Y(T)/m\) is portion of total purchase at time \(T\). Let’s denote this by a function as \(F(t)\). i.e

\[\frac{Y(T)}{m}=F(T)\]

Let’s denote the likelihood of purchase at \(T\)as\(f(t)\), then we can write \(F(t)=\int\limits_{0}^{T}{f(t)dt}\).

Now, by definition for \(p(T)\) (The probability that an initial purchase will be made at \(T\) i.e., given that no purchase has yet been made) can be written as:

\[\frac{f(T)}{1-F(T)}=P(T)=p+(q/m)Y(T)=p+qF(T)\]

Now, let’s solve for \(f(t)\) only,

\[\begin{align} & f(T)=[p+qF(T)][1-F(T)] \\ & or, f(T)=p-pF(T)+qF(T)-q{{[F(T)]}^{2}} \\ & or, f(T)=p+(q-p)F(T)-q{{[F(T)]}^{2}} \\ & or, f(T)=\frac{dF}{dt}=p+(q-p)F(T)-q{{[F(T)]}^{2}} \\ & \therefore {F}'(T)=p+(q-p)F(T)-q{{[F(T)]}^{2}} \\ \end{align}\]

This above equation is a nonlinear differential equation. Before I begin to solve this, please kindly open the visualization externally in Wolfram Mathematica Cloud.

Please change the sliders \(p\), \(q\), and \(m\) and see what happens to the curve. The \(p\), \(q\), and \(m\) are coefficient of innovation, coefficient of imitation, and potential size of the market.

Let’s do some nonlinear econometrics and estimate the values of \(m\), \(p\) and \(q\) based upon the real dataset using R.

Clean the environment.

rm(list = ls())
dev.off(dev.list()["RStudioGD"])

Install required packages.

# Load all the required packages
ipak <- function(pkg){
  new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
  if (length(new.pkg)) 
    install.packages(new.pkg, dependencies = TRUE, repos = "http://cran.us.r-project.org")
  sapply(pkg, require, character.only = TRUE)
}

ipak(c("nlstools", "fBasics", "tseries", "rstudioapi", "forecast"))
##   nlstools    fBasics    tseries rstudioapi   forecast 
##       TRUE       TRUE       TRUE       TRUE       TRUE

Setup Working Directory.

path <- dirname(rstudioapi::getActiveDocumentContext()$path)
setwd(path)

Related