ggomnbd {CLVTools} | R Documentation |

Fits Gamma-Gompertz/NBD models on transactional data with static and without covariates.

## S4 method for signature 'clv.data' ggomnbd( clv.data, start.params.model = c(), optimx.args = list(), verbose = TRUE, ... ) ## S4 method for signature 'clv.data.static.covariates' ggomnbd( clv.data, start.params.model = c(), optimx.args = list(), verbose = TRUE, names.cov.life = c(), names.cov.trans = c(), start.params.life = c(), start.params.trans = c(), names.cov.constr = c(), start.params.constr = c(), reg.lambdas = c(), ... )

`clv.data` |
The data object on which the model is fitted. |

`start.params.model` |
Named start parameters containing the optimization start parameters for the model without covariates. |

`optimx.args` |
Additional arguments to control the optimization which are forwarded to |

`verbose` |
Show details about the running of the function. |

`...` |
Ignored |

`names.cov.life` |
Which of the set Lifetime covariates should be used. Missing parameter indicates all covariates shall be used. |

`names.cov.trans` |
Which of the set Transaction covariates should be used. Missing parameter indicates all covariates shall be used. |

`start.params.life` |
Named start parameters containing the optimization start parameters for all lifetime covariates. |

`start.params.trans` |
Named start parameters containing the optimization start parameters for all transaction covariates. |

`names.cov.constr` |
Which covariates should be forced to use the same parameters for the lifetime and transaction process. The covariates need to be present as both, lifetime and transaction covariates. |

`start.params.constr` |
Named start parameters containing the optimization start parameters for the constraint covariates. |

`reg.lambdas` |
Named lambda parameters used for the L2 regularization of the lifetime and the transaction covariate parameters. Lambdas have to be >= 0. |

Model parameters for the GGompertz/NBD model are `r, alpha, beta, b and s`

.

`r`

: shape parameter of the Gamma distribution of the purchase process.
The smaller `r`

, the stronger the heterogeneity of the purchase process.

`alpha`

: scale parameter of the Gamma distribution of the purchase process.

`beta`

: scale parameter for the Gamma distribution for the lifetime process.

`b`

: scale parameter of the Gompertz distribution (constant across customers).

`s`

: shape parameter of the Gamma distribution for the lifetime process.
The smaller `s`

, the stronger the heterogeneity of customer lifetimes.

If no start parameters are given, r = 1, alpha = 1, beta = 1, b = 1, s = 1 is used. All model start parameters are required to be > 0. If no start values are given for the covariate parameters, 0.1 is used.

Note that the DERT expression has not been derived (yet) and it consequently is not possible to calculated values for DERT and CLV.

There are two key differences of the gamma/Gompertz/NBD (GGompertz/NBD) model compared to the relative to the well-known Pareto/NBD model: (i) its probability density function can exhibit a mode at zero or an interior mode, and (ii) it can be skewed to the right or to the left. Therefore, the GGompertz/NBD model is more flexible than the Pareto/NBD model. According to Bemmaor and Glady (2012) can indicate substantial differences in expected residual lifetimes compared to the Pareto/NBD. The GGompertz/NBD tends to be appropriate when firms are reputed and their offerings are differentiated.

Depending on the data object on which the model was fit, `ggomnbd`

returns either an object of
class clv.ggomnbd or clv.ggomnbd.static.cov.

The function `summary`

can be used to obtain and print a summary of the results.
The generic accessor functions `coefficients`

, `vcov`

, `fitted`

,
`logLik`

, `AIC`

, `BIC`

, and `nobs`

are available.

Bemmaor AC, Glady N (2012). “Modeling Purchasing Behavior with Sudden “Death”: A Flexible Customer Lifetime Model” Management Science, 58(5), 1012-1021.

`clvdata`

to create a clv data object, `SetStaticCovariates`

to add static covariates to an existing clv data object.

gg to fit customer's average spending per transaction with the `Gamma-Gamma`

model

`predict`

to predict expected transactions, probability of being alive, and customer lifetime value for every customer

`plot`

to plot the unconditional expectation as predicted by the fitted model

`pmf`

for the probability to make exactly x transactions in the estimation period, given by the probability mass function (PMF).

The generic functions `vcov`

, `summary`

, `fitted`

.

data("apparelTrans") clv.data.apparel <- clvdata(apparelTrans, date.format = "ymd", time.unit = "w", estimation.split = 40) # Fit standard ggomnbd model ggomnbd(clv.data.apparel) # Give initial guesses for the model parameters ggomnbd(clv.data.apparel, start.params.model = c(r=0.5, alpha=15, b=5, beta=10, s=0.5)) # pass additional parameters to the optimizer (optimx) # Use Nelder-Mead as optimization method and print # detailed information about the optimization process apparel.ggomnbd <- ggomnbd(clv.data.apparel, optimx.args = list(method="Nelder-Mead", control=list(trace=6))) # estimated coefs coef(apparel.ggomnbd) # summary of the fitted model summary(apparel.ggomnbd) # predict CLV etc for holdout period predict(apparel.ggomnbd) # predict CLV etc for the next 15 periods predict(apparel.ggomnbd, prediction.end = 15) # To estimate the ggomnbd model with static covariates, # add static covariates to the data data("apparelStaticCov") clv.data.static.cov <- SetStaticCovariates(clv.data.apparel, data.cov.life = apparelStaticCov, names.cov.life = c("Gender", "Channel"), data.cov.trans = apparelStaticCov, names.cov.trans = c("Gender", "Channel")) # Fit ggomnbd with static covariates ggomnbd(clv.data.static.cov) # Give initial guesses for both covariate parameters ggomnbd(clv.data.static.cov, start.params.trans = c(Gender=0.75, Channel=0.7), start.params.life = c(Gender=0.5, Channel=0.5)) # Use regularization ggomnbd(clv.data.static.cov, reg.lambdas = c(trans = 5, life=5)) # Force the same coefficient to be used for both covariates ggomnbd(clv.data.static.cov, names.cov.constr = "Gender", start.params.constr = c(Gender=0.5)) # Fit model only with the Channel covariate for life but # keep all trans covariates as is ggomnbd(clv.data.static.cov, names.cov.life = c("Channel"))

[Package *CLVTools* version 0.9.0 Index]