r - 在 R 中构建 Pareto/NBD 模型时出现 cbind 错误(BTYD 包)

标签 r model statistics

我正在使用 BTYD 包构建 CLV 模型,但我遇到了一个我似乎无法绕过的障碍。

我一直在认真遵循 this tutorial 中第 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 函数的源代码,但无法弄清楚到底出了什么问题。有没有人知道我该如何解决这个问题?任何建议将不胜感激,因为我现在完全被困住了。

最佳答案

改变这一行:

tot.cbt <- dc.CreateFreqCBT(elog)

为此:

tot.cbt <- dc.CreateFreqCBT(elog.cal)

关于r - 在 R 中构建 Pareto/NBD 模型时出现 cbind 错误(BTYD 包),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13313883/

相关文章:

r - 子集不平衡(异源复制)以完成或平衡 r 中的数据集

javascript - 从 Javascript 文件访问 MVC 的模型属性

c++ - Qt: c++: 在 QTableView 中选择一行时如何创建 SIGNAL/SLOT

R - Gamma 累积分布函数

statistics - 给定事件序列的测量值作为输入,我如何生成具有相同配置文件的无限输入序列?

r - 将 "set in a string list"优化为 "set as a matrix"操作

r - 为什么来自mgcv的bam对于某些数据比较慢?

git - 哪些 Git 提交统计信息很容易提取

Tibble 数据类型的行求和

node.js - 将静态值创建到 Sequelize 模型中(没有迁移经验)