Description Usage Arguments Value Bass curve Gompertz curve Gamma/Shifted Gompertz Note Author(s) References See Also Examples
This function fits diffusion curves of the type "bass"
,
"gompertz"
or gsgompertz
across generations. Parameters are
estimated for each generation individually by minimising the Mean Squared
Error with the subplex algorithm from the nloptr package. Optionally p-values
of the coefficients can be determined via bootstraping. Furthermore, the
bootstrapping allows to remove insignificant parameters from the optimisation
process.
1 2 3 4 |
x |
matrix containing in each column the adoption per period for generation k |
cleanlead |
removes leading zeros for fitting purposes (default == T) |
prew |
the |
l |
the l-norm (1 is absolute errors, 2 is squared errors) |
cumulative |
If TRUE optimisation is done on cumulative adoption. |
pvalreps |
bootstrap repetitions to estimate (marginal) p-values |
eliminate |
if TRUE eliminates insignificant parameters from the
estimation. Forces |
sig |
significance level used to eliminate parameters |
verbose |
if TRUE console output is provided during estimation (default == F) |
type |
of diffusion curve to use. This can be "bass", "gompertz" and "gsgompertz" |
optim |
optimization method to use. This can be "nm" for Nelder-Meade or
"hj" for Hooke-Jeeves. #' @param maxiter number of iterations the optimser
takes (default == |
opttol |
Tolerance for convergence (default == 1.e-06) |
w |
vector of curve parameters (see note). If provided no estimation is done. |
Returns an object of class seqdiffusion
, which contains:
type
diffusion model type used
diffusion
returns model specification for each generation (see
diffusion
for details)
call
calls function fitted
w
named matrix of fitted parameters for each generation
x
matrix of actuals
mse
insample Mean Squared Error for each generation
pval
all p-values for w
at each generation
The optimisation of the Bass curve is initialisated by the linear aproximation suggested in Bass (1969).
The initialisation of the Gompertz curve uses the approach suggested by Jukic et al. (2004), but is adapted to allow for the non-exponential version of Gompertz curve. This makes the market potential parameter equivalent to the Bass curves's and the market potential from Bass curve is used for initialisation.
The curve is initialised by assuming the shift operator to be 1 and becomes equivalent to the Bass curve, as shown in Bemmaor (1994). A Bass curve is therefore used as an estimator for the remaining initial parameters.
vector w
needs to be provided for the Bass curve in the order of
"p", "q", "m"
, where "p" is the coefficient of innovation, "q" is the
coeficient of imitation and "m" is the market size coefficient.
For the Gompertz curve vector w
needs to be in the form of
("a", "b", "m")
. Where "a" is the x-axis displacement coefficient, "b"
determines the growth rate and "m" sets, similarly to Bass model, the
market potential (saturation point).
For the Shifted-Gompertz curve vector w
needs to be in the form of
("a", "b", "c", "m")
. Where "a" is the x-axis displacement
coefficient, "b" determines the growth rate, "c" is the shifting parameter
and "m" sets, similarly to Bass model, the market potential (saturation
point).
Oliver Schaer, info@oliverschaer.ch,
Nikoloas Kourentzes, nikoloas@kourentzes.com
For an introduction to diffusion curves see: Ord K., Fildes R., Kourentzes N. (2017) Principles of Business Forecasting 2e. Wessex Press Publishing Co., Chapter 12.
Bass, F.M., 1969. A new product growth for model consumer durables. Management Science 15(5), 215-227.
Bemmaor, A. 1994. Modeling the Diffusion of New Durable Goods: Word-of-Mouth Effect versus Consumer Heterogeneity. In G. Laurent, G.L. Lilien and B. Pras (Eds.). Research Traditions in Marketing. Boston: Kluwer, pp. 201-223.
Jukic, D., Kralik, G. and Scitovski, R., 2004. Least-squares fitting Gompertz curve. Journal of Computational and Applied Mathematics, 169, 359-375.
plot.seqdiffusion
and print.seqdiffusion
.
1 2 | fit <- seqdiffusion(tsIbm)
plot(fit)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.