1 Bassov model

Frank Bass (1926-2006) - priekopník matematických modelov v marketingu

F. Bass, A New Product Growth for Model Consumer Durables, Management Science, Vol. 15 (January 1969)

Príklad z pôvodného Bassovho článku:

2 Odvodenie Bassovho modelu

2.1 Inovátori a imitátori

Základná myšlienka modelu - na trhu sú dva typy zákazníkov:

  • inovátori (innovators) - tovar si kúpia na základe informácií o novom produkte, reklamy a pod.

  • imitátori (imitators) - rozhodujú sa podla skúseností iných používatelov a ich hodnotenia

Inovátori a imitátori - počet nových zákazníkov:

Počet nových zákazníkov spolu:

Počet nových zákazníkov a kumulatívny počet zákazníkov:

2.2 Matematická formulácia

  • Spojitý čas \(t\)

  • \(F(t)\) = podiel ľudí z celkového objemu trhu, ktorí si produkt zakúpili do času \(t\)

  • \(f(t)\) = podiel ľudí z celkového objemu trhu, ktorí si produkt zakúpili “v čase \(t\)”, platí \(f(t) = F'(t)\)

  • Základný predpoklad modelu: Pravdepodobnosť toho, že si človek kúpi produkt v čase \(t\), ak si ho doteraz nekúpil, je \(p + qF(t)\)

  • Parametre: \(p\) vyjadruje vplyv inovátorov, \(q\) vyjadruje vplyv imitátorov

  • Dostávame rovnicu: \[\frac{f(t)}{1-F(t)} = p+q F(t)\] s podmienkou \(F(0)=0\)

2.3 Riešenie

Máme teda obyčajnú diferenciálnu rovnicu pre funkciu \(F(t)\): \[\frac{F'(t)}{1-F(t)} = p+q F(t), F(0)=0\]

Dá sa vyriešiť separáciou premenných: \[\frac{dF}{(1-F)(p+qF)} = dt \Rightarrow F(t) = \frac{1-e^{-(p+q)t}}{1+\frac{q}{p} e^{-(p+q)t}}\]

Príslušná funkcia \(f(t) = F'(t)\):

\[f(t)=\frac{(p+q)^2 e^{-(p+q)t}}{p \left[ 1 + \frac{q}{p} e^{-(p+q)t} \right]^2}\]

3 Odhadovanie parametrov Bassovho modelu v R-ku

3.1 Parametre Bassovho modelu

Z článku Christophe Van den Bulte: Want to know how diffusion speed varies across countries and products? Try using a Bass model. PDMA Visions 26(4) 2002, pp. 12-15

Grafické znázornenie:

Definujme funkciu:

grafy <- function(p,q,t.max) {
  t <- seq(from=0,to=t.max,by=0.01)
  Bass.f <- ((p+q)^2/p)*exp(-(p+q)*t)/(1+(q/p)*exp(-(p+q)*t))^2
  Bass.F <- (1-exp(-(p+q)*t))/(1+(q/p)*exp(-(p+q)*t))
  par(mfrow=c(1,2))
  plot(t, Bass.f, type="l"); plot(t, Bass.F, type="l")
}

Teraz vieme kresliť napríklad:

grafy(0.016, 0.409, 20) # baseline z tabulky

3.2 Interaktívne grafy

Ukážeme si, ak robit takéto interaktívne grafy:

Načítajte (ak treba, aj nainštalujte) knižnicu manipulate:

library(manipulate)

Použitie funkcie manipulate najlepšie vidieť na príklade (dostaneme graf z predchádzajúceho obrázku):

manipulate(grafy(p,q,t.max),
  p=slider(min=0.001, max=0.1, step=0.001),
  q=slider(min=0.1, max=1, step=0.01),
  t.max=slider(min=5, max=30, step=5))

V parametroch pre slider sa dá zadať aj začiatocná hodnota - pomocou initial=... - vyskúšajte.

Podrobnejšie: ?slider

3.3 Aplikácia nelineárnej metódy najmenších štvorcov

Ak máme historické dáta, môžeme fitovať funkciu \(f\) metódou najmenších štvorcov.

Parametre modelu určíme tak, aby sa minimalizovala suma štvorcov odchýlok skutočných a namodelovaných dát - závislosť \(f\) od parametrov je nelineárna, preto ide o nelineárnu metódu nejmenších štvorcov

3.4 Príklad: odhadovanie parametrov Bassovho modelu z dát

Zdroj dát: P. S. P. Cowpertwait, A. V. Metcalfe, Introductory Time Series with R. Springer 2009. Kapitola 3.3.4, str. 52-54

Budeme modelovať predaj VCR v USA v rokoch 1980-1989:

T <- 1:10 # casova premenna, rok = 1979 + T
Sales <- c(840,1470,2110,4000,7590,10950,10530,9470,7790,5890) # trzby

Model: Sales(t) = M * f(t), kde M zodpovedá nasýteniu trhu

Úloha 1: Vykreslite priebeh tržieb.

Nelineárna MNŠ v R-ku: funkcia nls

Potrebuje štartovacie hodnoty pre odhadované parametre:

  • pre p a q ich zoberieme z horeuvedenej tabuľky z článku

  • pre M zoberieme doterajšie tržby (už klesajú a oveľa viac ich už nebude)

  • alebo pomocou interaktívnych grafov nájdeme parametre, ktoré naše dáta “nefitujú zle”.

Použitie funkcie:

Bass.nls<-nls(Sales ~ M*(((P+Q)^2/P)*exp(-(P+Q)*T))/(1+(Q/P)*exp(-(P+Q)*T))^2,
  start=c(list(M=sum(Sales),P=0.008,Q=0.6)))
summary(Bass.nls)
## 
## Formula: Sales ~ M * (((P + Q)^2/P) * exp(-(P + Q) * T))/(1 + (Q/P) * 
##     exp(-(P + Q) * T))^2
## 
## Parameters:
##    Estimate Std. Error t value Pr(>|t|)    
## M 6.798e+04  3.128e+03   21.74 1.10e-07 ***
## P 6.594e-03  1.430e-03    4.61  0.00245 ** 
## Q 6.381e-01  4.140e-02   15.41 1.17e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 727.2 on 7 degrees of freedom
## 
## Number of iterations to convergence: 6 
## Achieved convergence tolerance: 3.836e-06

Vidíme, že algoritmus skonvergoval a dostali sme odhady parametrov M, P, Q.

Úloha 2: Porovnajte skutočné tržby s fitovanými a spravte predikciu na nasledujúce roky.

Poznámka: Užitočný môže byt prístup k odhadnutým parametrom:

coef(Bass.nls)
##            M            P            Q 
## 6.798093e+04 6.593972e-03 6.380909e-01
coef(Bass.nls)["P"]
##           P 
## 0.006593972

4 Modelovanie návštevnosti filmov v kinách Bassovým modelom

4.2 Dva typy filmov

  1. Reklama, očakávaný film - veľká časť ľudí si film pozrie v prvých dňoch, napr. The Hobbit: An Unexpected Journey (2012)

Priebeh tržieb po týždňoch:

  1. Film, ktorý sa populárnym stane až neskôr, napr. The Blair Witch Project (1999)

Priebeh tržieb po týždňoch:

4.3 Príklad

Dáta sa dajú nájsť napríklad na stránke http://www.the-numbers.com

Budeme používať týždenné dáta (1.-7. deň, 8.-14. deň, atď.)

# The LOTR: Return of the King
Sales <- c(150139984,92233724,52192378,20100138,15302761,9109110,7300394,5612861,5995863,3809753,3140000,4062251,2923806,2055943)

Úloha: Odhadnite parametre Bassovho modelu a zobrazte priebeh skutočných a fitovaných tržieb.

5 Ďalšie príklady

5.1 Teoretické cvičenia k časti 2

  • Odvoďte uvedené vzťahy pre \(f(t)\) a \(F(t)\)

  • Dokážte, že ak \(q>p>0\), tak funkcia \(f\) nadobúda maximum v čase \[t^* = \frac{\textrm{ln}(p/q)}{p+q}\] Voľne povedané, je to čas, v ktorom sa predá najviac výrobkov

  • Odvoďte vzťah pre maximum funkcie \(f\) v prípade, že \(p>q>0\). Čo od tohto prípadu - keď prevláda vplyv inovátorov - očakávame?

5.2 Interaktívne grafy pri určovaní štartovacích hodnôt parametrov

Pomocou knižnice manipulate napíšte skript, ktorý nakreslí reálne dáta ako body a hodnoty z modelu ako hladkú krivku. Zmenou hodnôt parametrov takto potom môžeme nájsť vhodné štartovacie hodnoty pre nelineárnu metódu najmenších štvorcov.

5.3 Sleeper

V slovníku nájdeme aj nasledovný význam anglického slova sleeper:

Čo takáto charakteristika hovorí o parametroch Bassovho modelu, ak by sme ho chceli použiť na modelovanie tržieb takéhoto filmu alebo knihy?