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.