This function fits diffusion curves of the type "bass"
,
"gompertz"
, gsgompertz
or weibull
across generations.
Parameters are estimated for each generation individually by minimizing the
Mean Squared Error with subplex algorithms from the optimx package.
Optionally p-values of the coefficients can be determined via bootstraping.
Furthermore, the bootstrapping allows removing insignificant parameters from
the optimisation process.
seqdiffusion(
y,
w = NULL,
cleanlead = c(TRUE, FALSE),
loss = 2,
cumulative = c(TRUE, FALSE),
pvalreps = 0,
eliminate = c(FALSE, TRUE),
sig = 0.05,
verbose = c(FALSE, TRUE),
type = c("bass", "gompertz", "gsgompertz", "weibull"),
method = c("L-BFGS-B", "Nelder-Mead", "BFGS", "hjkb", "Rcgmin", "bobyqa"),
maxiter = 500,
opttol = 1e-06,
multisol = c(FALSE, TRUE),
initpar = c("linearize", "preset"),
mscal = c(TRUE, FALSE),
bootloss = c("smthempir", "empir", "se"),
...
)
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
y
matrix of actuals
mse
insample Mean Squared Error for each generation
pval
all p-values for w
at each generation
matrix containing in each column the adoption per period for generation k
matrix containing in each column the curve parameters for generation k (see note). Parameters set to NA will be
optimised. If w = NULL
(default) all parameters are optimized.
removes leading zeros for fitting purposes (default == T)
the l-norm (1 is absolute errors, 2 is squared errors)
If TRUE optimization is done on cumulative adoption.
bootstrap repetitions to estimate (marginal) p-values
if TRUE eliminates insignificant parameters from the
estimation. Forces pvalreps = 1000
if left to 0.
significance level used to eliminate parameters
if TRUE console output is provided during estimation (default == F)
of diffusion curve to use. This can be "bass", "gompertz", "gsgompertz" and "weibull"
optimization method to use. This can be "nm" for Nelder-Meade or
"hj" for Hooke-Jeeves. #' @param maxiter number of iterations the optimiser
takes (default == 10000
for "nm" and Inf
for "hj")
Tolerance for convergence (default == 1.e-06)
when "TRUE"
multiple optmisation solutions from different initialisations of the market parameter are used (default == "FALSE"
)
vector of initalisation parameters. If set to preset
a predfined set of internal initalisation parameters is used while "linearize"
uses linearised initalisation methods (default == "linearize"
.
scales market potential at initalisation with the maximum of the observed market potential for better optimization results (default == TRUE
)
The optimization of the Bass curve is initialized by the linear approximation suggested in Bass (1969).
The initialization of the Gompertz curve uses the approach suggested by Jukic et al. (2004), but is adapted to allow for the non-exponential version of the Gompertz curve. This makes the market potential parameter equivalent to the Bass curves and the market potential from Bass curve is used for initialization.
The curve is initialized 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.
The initialization is obtained through by a linear approximation median-ranked OLS described in Sharif and Islam 1980.
Oliver Schaer, info@oliverschaer.ch,
Nikolaos Kourentzes, nikolaos@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.
Sharif, N.M. and Islam, M.N. 1980. The Weibull Distribution as a General Model for Forecasting Technological Change. Technological Forecasting and Social Change, 18, 247-256.
plot.seqdiffusion
and print.seqdiffusion
.
fit <- seqdiffusion(tsIbm)
plot(fit)
Run the code above in your browser using DataLab