I'm trying to fit the Bass Diffusion Model using the nls function in R but
I'm running into a strange problem. The model has either two or three
parameters, depending on how it's parameterized, p (coefficient of
innovation), q (coefficient of immitation), and sometimes m (maximum market
share). Regardless of how I parameterize the model I get an error saying
that the step factor has decreased below it's minimum. I have tried
re-setting the minimum in nls.controls but that doesn't seem to fix the
problem. Likewise, I have run through a variety of start values in the past
few days, all to no avail. Looking at the trace output it appears that R
believes I always have one more parameter than I actually have (i.e. when
the model is parameterized with p and q R seems to be seeing three
parameters, when m is also included R seems to be seeing four). My
experience with nls is limited, can someone explain to me why it's doing
this? I've included the data set I'm working with (published in Michalakelis
et al. 2008) and some example code.

## Assign relevant variables
adoption <-
c(167000,273000,531000,938000,2056452,3894103,5932090,7963742,9314687,10469060,11393302,11976340)
time <- seq(from = 1,to = 12, by = 1)
## Models
Bass.Model <- adoption ~ ((p + q)^2/p) * (exp(-(p + q) * time)/((q / p) *
exp(-(p + q) * time) + 1)^2)
## Starting Parameters
Bass.Params <- list(p = 0.1, q = 0.1)
## Model fitting
Bass.Fit <- nls(formula = Bass.Model, start = Bass.Params, algorithm =
"plinear", trace = TRUE)

Chris Hulme-Lowe
University of Minnesota
Department of Psychology
Quant. Methods and Psychometrics

	[[alternative HTML version deleted]]

