Skip to content

Diffusion

Innovation diffusion models for product adoption and technology lifecycle forecasting.


Diffusion

from durbyn import Diffusion

# Bass diffusion model
model = Diffusion(model_type="Bass").fit(y)
fc = model.forecast(h=12)

# Gompertz model
model = Diffusion(model_type="Gompertz", cumulative=True).fit(y)
fc = model.forecast(h=12)

Parameters

Parameter Type Default Description
model_type str "Bass" Model type: "Bass", "Gompertz", "GSGompertz", "Weibull"
cleanlead bool True Remove leading zeros from data
loss int 2 Loss function: 1 = MAE, 2 = MSE
cumulative bool True Fit on cumulative values

Model Types

Type Description
"Bass" Bass diffusion model — innovation + imitation
"Gompertz" Gompertz growth curve
"GSGompertz" Generalised shifted Gompertz
"Weibull" Weibull distribution-based diffusion

Example

from durbyn import Diffusion

# Simulated adoption data
y = [5, 10, 18, 35, 60, 95, 140, 180, 210, 230, 242, 248, 251, 253, 254]

model = Diffusion(model_type="Bass", cumulative=True).fit(y)
fc = model.forecast(h=10)

print(fc.mean)

Note

Diffusion models do not take a seasonal period m. The m parameter is ignored at fit time.