Оценка MLE распределения Pearson Type 4 с пакетами `fitdistrplus` и` PearsonDS` - PullRequest
0 голосов
/ 24 апреля 2020

Я хотел бы использовать пакеты 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 из-за его инструментов построения и тестирования.

Спасибо!

...