Я хотел бы использовать пакеты fitdistrplus
и PearsonDS
для оценки параметров плотности типа Пирсона IV (https://cran.r-project.org/web/packages/PearsonDS/PearsonDS.pdf, см. Стр. 16). Вы можете найти фиктивный набор данных ниже, который воссоздает ошибку
# Generate a random vector
require(PearsonDS, fitdistrplus)
pIVpars <- list(m=5.1, nu=3, location=0.5, scale=2)
x <- rpearsonIV(50,params=pIVpars)
Затем я выполняю поиск
fit <- fitdist(res, "pearsonIV", "mle", start = pIVpars, log = FALSE)
, который, однако, дает следующую ошибку:
Error in checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, :
Some parameter names have no starting/fixed value: params.
Я считаю, что проблема в том, что, в отличие от большинства встроенных плотностей, dpearsonIV
также позволяет передавать параметры с помощью функции params
. Хотя это может быть удобно, fitdist
считает, что params
является пятым параметром плотности и ищет его. Итак, если я запускаю алгоритм подгонки с указанным params
, я получаю
fit <- fitdist(res, "pearsonIV", "mle", start = list(m=5.1, nu=3, location=0.5, scale=2, params = c(5.1, 3, 0.5, 2)))
Error in checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, :
'start' must specify names which are arguments to 'distr'.
, который появляется, потому что fitdist
считает, что paramsm
, paramsnu
, paramslocation
и paramsscale
являются новыми параметры к распределению. Подобные ошибки вы получите, если вы установите params = FALSE
или params = NULL
.
Как решить эту проблему? Я вижу, что вы можете передать функцию в start
в fitdist
, но я не уверен, как это может быть полезно. Я действительно хотел бы использовать пакет fitdistrplust
из-за его инструментов построения и тестирования.
Спасибо!