这是我第一次使用BTYD程序。我在运行参数估计时遇到错误。我在下面提供了错误消息。我一直关注BTYD - Walkthrough。
有人知道如何解决这个问题吗?我研究了样本数据集并且工作正常。我以相同的格式上传了我的文件,它不会起作用。没有丢失或空行/值。非常感谢帮助!!!
end.of.cal.period <- as.Date("2013-08-18")
elog.cal <- elog[which(elog$date <= end.of.cal.period), ]
split.data <- dc.SplitUpElogForRepeatTrans(elog.cal);
clean.elog <- split.data$repeat.trans.elog;
#clean.elog
freq.cbt <- dc.CreateFreqCBT(clean.elog);
freq.cbt[1:3,1:5]
tot.cbt <- dc.CreateFreqCBT(elog.cal) #used elog.cal instead of elog
cal.cbt <- dc.MergeCustomers(tot.cbt, freq.cbt)
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") #works. no errors
head(cal.cbs, n=10)
sel <- cbind(cal.cbs)
colnames(sel) <-c('x', 't.x', 'T.cal')
head(sel, n=10)
params <- pnbd.EstimateParameters(sel)
optim中的错误(logparams,pnbd.eLL,cal.cbs = cal.cbs,max.param.value = max.param.value ,: L-BFGS-B需要有限的“fn&#39;
值
答案 0 :(得分:1)
事实证明,在估算参数时,sel $ x中的较大值将导致取幂爆炸和错误。
这家伙在这里修复了github:https://github.com/theofilos/BTYD
我基本上把他所有的代码都放在了pnbd.R中,然后将它添加到我的代码中进行Pareto / NBD分析,它似乎解决了这个问题。
答案 1 :(得分:0)
您是否尝试过调整启动参数?它们默认为1,1,1,1。类似的东西:
startingparams <- c(.1, 3, .1, .1)
params <- pnbd.EstimateParameters(sel, startingparams)
玩不同的数量级,看是否有任何棍子。或者,检查cbs矩阵中的最大“x”值。如果存在极端异常值,您可能需要删除它们并尝试再次估算参数。