我正在使用 BTYD 包构建 CLV 模型,但遇到了一个似乎无法解决的障碍。
我一直在仔细遵循本教程第 2.1 节中的指示。一切似乎都很顺利,直到我到达校准客户-足够的统计矩阵 (cal.cbs)。按照教程中的说明,我使用以下代码生成 cal.cbs:
birth.periods <- split.data$cust.data$birth.per
last.dates <- split.data$cust.data$last.date
cal.cbs.dates <- data.frame(birth.periods, last.dates, end.of.cal.period)
cal.cbs <- dc.BuildCBSFromCBTAndDates(cal.cbt, cal.cbs.dates, per="week")
直到最后一行似乎一切正常。R给了我以下信息:
> cal.cbs <- dc.BuildCBSFromCBTAndDates(cal.cbt, cal.cbs.dates, per="week")
Started making calibration period CBS...
Finished building CBS.
Warning message:
In cbind(f, r, T) :
number of rows of result is not a multiple of vector length (arg 2)
我不知道这是否是一笔大交易,因为我不完全确定这意味着什么……我决定忽略它,直到我尝试进行参数估计。这就是发生的事情:
> params <- pnbd.EstimateParameters(cal.cbs)
Error in optim(logparams, pnbd.eLL, cal.cbs = cal.cbs, max.param.value =
max.param.value, :
L-BFGS-B needs finite values of 'fn'
In addition: Warning message:
In log(exp(loga - logb) - 1) : NaNs produced
我真的不知道从这里去哪里。我查看了 pnbd.EstimateParameters 函数的源代码,但我无法弄清楚到底出了什么问题。有人知道我该如何解决这个问题吗?任何建议都将不胜感激,因为我现在完全陷入困境。