## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", #fig.path = "figures/WALKTHROUGH-", out.width = "100%" ) # On CRAN, code may not run with more than 2 threads # Otherwise results in failed check with "Re-building vignettes had CPU time xxx times elapsed time" data.table::setDTthreads(threads = 2) ## ----install-package-CRAN, eval = FALSE--------------------------------------- # install.packages("CLVTools") ## ----install-package-GITHUB, eval = FALSE------------------------------------- # install.packages("devtools") # devtools::install_github("bachmannpatrick/CLVTools", ref = "development") ## ----load-library------------------------------------------------------------- library("CLVTools") ## ----load-data---------------------------------------------------------------- data("apparelTrans") apparelTrans ## ----load-CreateObj----------------------------------------------------------- clv.apparel <- clvdata(apparelTrans, date.format="ymd", time.unit = "week", estimation.split = 104, name.id = "Id", name.date = "Date", name.price = "Price") ## ----print-CLVObject---------------------------------------------------------- clv.apparel ## ----summary-CLVObject-------------------------------------------------------- summary(clv.apparel) ## ----estimate-model-formula--------------------------------------------------- est.pnbd <- latentAttrition(formula = , family = pnbd, data=clv.apparel) est.pnbd ## ----estimate-model-formula2, eval=FALSE-------------------------------------- # est.pnbd <- latentAttrition(formula = , family = pnbd, data=clv.apparel, # optimx.args = list(control=list(trace=5), # method="Nelder-Mead"), # start.params.model=c(r=1, alpha=10, s=2, beta=8)) ## ----estimate-model, eval=FALSE----------------------------------------------- # est.pnbd <- pnbd(clv.data = clv.apparel) # est.pnbd ## ----estimate-model2, eval=FALSE---------------------------------------------- # est.pnbd <- pnbd(clv.data = clv.apparel, # start.params.model = c(r=1, alpha = 2, s = 1, beta = 2), # optimx.args = list(control=list(trace=5), # method="Nelder-Mead" # )) ## ----param-summary------------------------------------------------------------ #Full detailed summary of the parameter estimates summary(est.pnbd) #Extract the coefficients only coef(est.pnbd) #Alternative: oefficients(est.pnbd.obj) ## ----coef-model--------------------------------------------------------------- #Extract the coefficients only coef(est.pnbd) #Alternative: oefficients(est.pnbd.obj) #Extract the confidence intervals confint(est.pnbd) ## ----ll-model----------------------------------------------------------------- # LogLikelihood at maximum logLik(est.pnbd) # Variance-Covariance Matrix at maximum vcov(est.pnbd) ## ----estimate-ggomnbd-formula, eval=FALSE------------------------------------- # est.ggomnbd <- latentAttrition(formula = , family = ggomnbd, data=clv.apparel, # optimx.args = list(method="Nelder-Mead"), # start.params.model=c(r=0.7, alpha=5, b=0.005, s=0.02, beta=0.001)) ## ----estimate-ggomnbd, eval=FALSE--------------------------------------------- # est.ggomnbd <- ggomnbd(clv.data = clv.apparel, # start.params.model = c(r=0.7, alpha=5, b=0.005, s=0.02, beta=0.001), # optimx.args = list(method="Nelder-Mead")) ## ----predict-model------------------------------------------------------------ results <- predict(est.pnbd) print(results) ## ----predict-model2, eval = FALSE--------------------------------------------- # predict(est.pnbd, prediction.end = 30) ## ----plot-model3, eval = FALSE------------------------------------------------ # predict(est.pnbd, prediction.end = "2006-05-08") ## ----plot-actual, fig.height=4.40, fig.width=9-------------------------------- plot(clv.apparel) ## ----plot-interpurchase, fig.height=4.40, fig.width=9------------------------- plot(clv.apparel, which="interpurchasetime") ## ----plot-model, fig.height=4.40, fig.width=9--------------------------------- plot(est.pnbd) ## ----plot-model2, eval = FALSE------------------------------------------------ # plot(est.pnbd, prediction.end = 30, cumulative = TRUE) ## ----predict-model3, eval = FALSE--------------------------------------------- # plot(est.pnbd, prediction.end = "2006-05-08", cumulative = TRUE) ## ----predict-model4, eval = FALSE--------------------------------------------- # plot(est.pnbd, which="pmf", trans.bins=0:5, label.remaining="6+") ## ----Cov-staticData----------------------------------------------------------- data("apparelStaticCov") apparelStaticCov ## ----Cov-dynData-------------------------------------------------------------- data("apparelDynCov") apparelDynCov ## ----Cov-setStatic------------------------------------------------------------ clv.static<- SetStaticCovariates(clv.data = clv.apparel, data.cov.life = apparelStaticCov, data.cov.trans = apparelStaticCov, names.cov.life = c("Gender", "Channel"), names.cov.trans =c("Gender", "Channel"), name.id = "Id") ## ----Cov-setDynamic, eval=FALSE, message=FALSE, warning=TRUE------------------ # clv.dyn <- SetDynamicCovariates(clv.data = clv.apparel, # data.cov.life = apparelDynCov, # data.cov.trans = apparelDynCov, # names.cov.life = c("High.Season", "Gender", "Channel"), # names.cov.trans = c("High.Season", "Gender", "Channel"), # name.id = "Id", # name.date = "Cov.Date") ## ----static-cov-estimate-formula1, message=TRUE, warning=FALSE, eval=FALSE---- # est.pnbd.static <- latentAttrition(formula = ~ .|., family = pnbd, data=clv.static) ## ----static-cov-estimate-formula2, warning=FALSE, eval=FALSE------------------ # est.pnbd.static <- latentAttrition(formula = ~ Gender|Channel+Gender, # family = pnbd, data=clv.static) # ## ----static-covariates-formula3, warning=FALSE, eval=FALSE-------------------- # est.pnbd.static <- latentAttrition(formula = ~ Channel+Gender|I(log(Channel+2)), # family = pnbd, data=clv.static) ## ----dyn-cov-formula1, eval=FALSE--------------------------------------------- # est.pnbd.dyn <- latentAttrition(formula = ~ .|., family = pnbd, data = clv.dyn, # optimx.args = list(control=list(trace=5))) ## ----static-cov-estimate, message=TRUE, warning=FALSE------------------------- est.pnbd.static <- pnbd(clv.static, start.params.model = c(r=1, alpha = 2, s = 1, beta = 2), start.params.life = c(Gender=0.6, Channel=0.4), start.params.trans = c(Gender=0.6, Channel=0.4)) ## ----dyn-cov-estimate, eval=FALSE--------------------------------------------- # est.pnbd.dyn <- pnbd(clv.dyn, # start.params.model = c(r=1, alpha = 2, s = 1, beta = 2), # start.params.life = c(High.Season=0.5, Gender=0.6, Channel=0.4), # start.params.trans = c(High.Season=0.5, Gender=0.6, Channel=0.4), # optimx.args = list(control=list(trace=5))) ## ----Cov-summary-------------------------------------------------------------- summary(est.pnbd.static) ## ----cor-formula1, eval=FALSE------------------------------------------------- # est.pnbd.cor <- latentAttrition(formula = , family = pnbd, # use.cor=TRUE, data=clv.apparel) ## ----Cov-cor, eval=FALSE------------------------------------------------------ # est.pnbd.cor <- pnbd(clv.apparel, # use.cor= TRUE) # summary(est.pnbd.cor) ## ----reg-formula, eval=FALSE-------------------------------------------------- # est.pnbd.reg <- latentAttrition(formula = ~ .|., family = pnbd, # reg.lambdas=c(life=3, trans=8), data=clv.static) # summary(est.pnbd.reg) ## ----reg-advOptions, eval=FALSE----------------------------------------------- # est.pnbd.reg <- pnbd(clv.static, # start.params.model = c(r=1, alpha = 2, s = 1, beta = 2), # reg.lambdas = c(trans=100, life=100)) # summary(est.pnbd.reg) ## ----constr-formula, eval=FALSE----------------------------------------------- # est.pnbd.constr <- latentAttrition(formula = ~.|., family = pnbd, data = clv.static, # names.cov.constr=c("Gender"), # start.params.constr = c(Gender = 0.6)) # summary(est.pnbd.constr) ## ----constr-advOptions, eval=FALSE-------------------------------------------- # est.pnbd.constr <- pnbd(clv.static, # start.params.model = c(r=1, alpha = 2, s = 1, beta = 2), # start.params.constr = c(Gender=0.6), # names.cov.constr=c("Gender")) # summary(est.pnbd.constr) ## ----spending-load-data and initialize---------------------------------------- data("apparelTrans") apparelTrans clv.apparel <- clvdata(apparelTrans, date.format="ymd", time.unit = "week", estimation.split = 40, name.id = "Id", name.date = "Date", name.price = "Price") ## ----spending-estimate-formula1----------------------------------------------- est.gg <- spending(family = gg, data=clv.apparel) est.gg ## ----spending-estimate-formula2, eval=FALSE----------------------------------- # est.gg <- spending(family = gg, data=clv.apparel, # optimx.args = list(control=list(trace=5)), # start.params.model=c(p=0.5, q=15, gamma=2)) ## ----spending-estimate-formula3, eval=FALSE----------------------------------- # est.gg <- spending(family = gg, data=clv.apparel, # remove.first.transaction=FALSE) ## ----spending-estimate-model1, eval=FALSE------------------------------------- # est.gg<- gg(clv.data = clv.apparel) # est.gg ## ----spending-estimate-model2, eval=FALSE------------------------------------- # est.gg<- gg(start.params.model=c(p=0.5, q=15, gamma=2), clv.data = clv.apparel) # est.gg ## ----spending-estimate-model3, eval=FALSE------------------------------------- # est.gg<- gg(clv.data = clv.apparel, remove.first.transaction=FALSE) # est.gg ## ----spending-predict-model--------------------------------------------------- results.spending <- predict(est.gg) print(results.spending) ## ----spending-plot-model4, fig.height=4.40, fig.width=9----------------------- plot(est.gg)