Ошибка в pnbd.LL (params, x, tx, T.cal): T.cal должен быть числовым и не может содержать отрицательных чисел в BTYD в r - PullRequest
0 голосов
/ 29 января 2019

Я строю модель pareto / nbd с использованием пакета BTYD и получаю ошибку при его использовании.Я следовал указаниям из [прохождения BTYD] [1].Все работало нормально, пока я не попал в калибровочную матрицу по количеству статистических данных клиента (cal.cbs).Я использовал следующий код для генерации cal.cbs, как указано в руководстве:

library(BTYD)
tot.cbt <- dc.CreateFreqCBT(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="month")

Но я получил предупреждающее сообщение:

In cbind(f, r, T) :
  number of rows of result is not a multiple of vector length (arg 2)

Хотя я преодолел предупреждение с помощьюследующий код:

tot.cbt <- dc.CreateFreqCBT(elog.cal)
# instead of
tot.cbt <- dc.CreateFreqCBT(elog)

Но я получаю сообщение об ошибке при оценке параметров:

params <- pnbd.EstimateParameters(cal.cbs)

Ошибка в pnbd.LL (params, x, tx, T.cal): T.cal должен быть числовым и не может содержать отрицательных чисел.

Я понятия не имею, как решить эту проблему и почему я получаю эту ошибку.Кто-нибудь может мне помочь, пожалуйста?Большое спасибо заранее!

1 Ответ

0 голосов
/ 05 февраля 2019

Убедитесь, что cal.cbs - это матрица, у меня была похожая проблема, и это решило ее.

cal.cbs <- as.matrix(cal.cbs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...