BG-NBD Model
Summary
The beta-geometric/NBD (BG/NBD) model (Fader, Hardie & Lee 2005, Marketing Science) changes one line of the Pareto-NBD Model story: instead of dying at an exponentially distributed time, a customer becomes inactive immediately after a purchase with probability , with across customers. The purchase process while alive (Poisson, gamma-mixed) is unchanged. The payoff is a likelihood built from gamma and beta functions only — estimable with Excel’s Solver — while fit and forecasts on CDNOW and on 81 simulated Pareto/NBD “worlds” are nearly indistinguishable from the original model (individual-level predictions correlate 0.996). The main limitation is structural: a customer with no repeat purchase cannot have dropped out, so the model struggles when penetration or purchase frequency is very low.
Overview
The authors “have no misgivings about the [Pareto/NBD] model whatsoever, besides its computational complexity” (Sec. 8). The BG/NBD is proposed as “a small, relatively inconsequential, change” that “does not require any different psychological theories, nor does it have any noteworthy managerial implications”, but makes the framework accessible to anyone with a spreadsheet. Data requirements are identical: for each customer, frequency , recency and length of observation .
Main Content
BG/NBD assumptions ^def-bgnbd-assumptions
(Sec. 3)
- While active, transactions follow a Poisson process with rate (exponential interpurchase times).
- across customers (Eq. 1).
- After any transaction the customer becomes inactive with probability , so dropout is distributed across transactions as a shifted geometric: .
- across customers (Eq. 2).
- and vary independently across customers.
As in SMC, all customers are assumed active at the start of the observation period.
Individual-level likelihood ^thm-bgnbd-individual-likelihood
Multiply the exponential density of each interpurchase time by the survival probability at each preceding purchase; after the last purchase at , either the customer died (probability ) or stayed alive and bought nothing in (probability ). Collecting terms (Eq. 3):
with if and otherwise. As with the Pareto/NBD, “information on the timing of the transactions is not required; a sufficient summary of the customer’s purchase history is .”
Likelihood for a randomly chosen customer ^thm-bgnbd-likelihood
Integrating over the gamma and beta (Eq. 6):
For the spreadsheet (Sec. 7) write with
Only
GAMMALN,LNandEXPare needed; the sample log-likelihood (Eq. 7) is maximized with Solver.
Dropout in calendar time. Conditional on , , so the lifetime is exponential with rate (Sec. 4.3). Unlike the Pareto/NBD, the dropout process is explicitly tied to the purchase rate: heavy buyers face more dropout opportunities per unit time.
Expected purchases for a new customer ^thm-bgnbd-expected
Individual level (Eq. 5): . Randomly chosen customer (Eq. 9):
This needs a single evaluation, and only after estimation — “this expectation is only used after the likelihood function has been maximized.”
Conditional expectation and probability alive ^thm-bgnbd-conditional-expectation
For a customer with history , the expected number of purchases in is (Eq. 10, derived in the Appendix via Eqs. A1–A8):
The individual-level probability of being active (Eq. A2) is the “alive” term of the likelihood over the whole likelihood, , and equals 1 when . Taking the same ratio with the mixed likelihood (Eq. 6) gives
which is exactly the reciprocal of the denominator of Eq. 10 (the paper does not display this population-level expression separately; it follows directly from Eqs. 6 and A2). The numerator of Eq. 10 is Eq. 9 with updated parameters , , .
Simulation: when does BG/NBD fail to mimic Pareto/NBD?
Section 6 simulates a -cell factorial of Pareto/NBD worlds (; ), each with 4,000 households over 104 weeks; penetration ranges from 13% to 76% and mean purchase frequency among buyers from 2.1 to 8.2. BG/NBD is fitted on weeks 1–52 and its weeks 53–104 cumulative forecast scored by MAPE.
| MAPE | Penetration | Avg. purchase frequency | |
|---|---|---|---|
| Worst 10 worlds | 5.29% | 26% | 2.6 |
| Other 71 worlds | 2.32% | 43% | 3.8 |
Average MAPE is 2.68%, worst case 6.97% (Table 1). The failures cluster where buying is sparse: “under the BG/NBD, a customer cannot become inactive before making his first purchase”, whereas Pareto/NBD death can precede any repeat purchase. The suggested remedy is a one-parameter extension for a segment of “hard core nonbuyers”.
Empirical comparison on CDNOW
Calibration: 2,357 customers, weeks 1–39; holdout weeks 40–78 (Sec. 7).
| BG/NBD | Pareto/NBD | |
|---|---|---|
| Parameters | ||
| Log-likelihood | ||
| Histogram fit | ||
| Holdout cumulative sales | under-forecast 4% | under-forecast 2% |
| Zero-class cond. expectation (actual ) | 0.23 | 0.14 |
| Corr. with actual holdout transactions | 0.626 | 0.630 |
The two models’ individual-level conditional expectations correlate 0.996 (Table 3). A three-group ANOVA of actual vs the two predictions is not significant ().
Implementation caveats (Sec. 8)
- Fit separately by cohort (acquisition quarter, channel); for a mature base, by coarse RFM segment.
- Transferring one cohort’s parameters to another requires the cohorts to be comparable.
- Forecasts assume future marketing resembles the past; the model is a baseline for evaluating changes.
- Covariates are possible, but if customers were targeted on past RFM, “we must be aware of econometric issues such as endogeneity bias (Shugan 2004) and sample selection bias.”
- A spend model (normal-normal, or the Gamma-Gamma Model of Monetary Value) is required before CLV can be computed.
Examples
Reproducing two rows of the paper’s Excel sheet (Fig. 1). With :
- Customer 0001: , , . , , , , so . ; expected purchases in the next 39 weeks (own calculation from Eq. 10).
- Customer 0003: . ; by construction; .
- Customer 0006: , : , — lower survival probability than customer 0001 despite far more purchases, because nine silent weeks are more damning for a frequent buyer.
import numpy as np
from scipy.special import gammaln, hyp2f1
def bgnbd_loglik(r, al, a, b, x, tx, T):
A1 = gammaln(r+x) - gammaln(r) + r*np.log(al)
A2 = gammaln(a+b) + gammaln(b+x) - gammaln(b) - gammaln(a+b+x)
A3 = -(r+x)*np.log(al+T)
A4 = np.where(x > 0, np.log(a) - np.log(np.maximum(b+x-1, 1e-12)) - (r+x)*np.log(al+tx), -np.inf)
return A1 + A2 + np.logaddexp(A3, A4)
def bgnbd_cond_exp(r, al, a, b, x, tx, T, t): # Eq. 10
num = (a+b+x-1)/(a-1) * (1 - ((al+T)/(al+T+t))**(r+x)
* hyp2f1(r+x, b+x, a+b+x-1, t/(al+T+t)))
den = 1 + (x > 0) * a/(b+x-1) * ((al+T)/(al+tx))**(r+x)
return num/denConnections
- Pareto-NBD Model — the parent model; same data, same purchase process, different death story.
- Customer Lifetime Value - Overview — validation yardsticks (histogram, tracking plot, conditional expectations).
- Gamma-Gamma Model of Monetary Value — spend sub-model needed to turn transactions into value.
- Single-Parameter Models — beta-binomial/geometric and gamma-Poisson conjugate pairs used for the two mixing distributions.
- Empirical Bayes - Overview — population MLEs act as the prior in each customer’s conditional expectation.
- Bayesian and Hierarchical Extensions of CLV Models — BG/NBD is the default transaction model in
lifetimesand PyMC-Marketing.
See Also
- Shifted-Beta-Geometric Model for Contractual Retention — the same beta-geometric dropout, but with observed churn at renewal dates.
- Monsters and Mixtures — continuous mixtures and the hurdle/zero-inflation idea behind a “hard core nonbuyer” extension.
- Posterior Predictive Checking — the paper’s histogram/tracking/conditional-expectation plots are predictive checks in all but name.
- Survival Analysis — geometric (discrete) vs exponential (continuous) lifetime models.