Как найти подходящие значения из пакета `fitdistrplus` в R? - PullRequest
0 голосов
/ 23 декабря 2018

Я сейчас использую пакет fitdistrplus для построения гамма-распределения, и мой вопрос заключается в том, как извлечь извлеченные значения для вычисления среднеквадратичной ошибки?Спасибо за любую помощь.

library(fitdistrplus)
Sev = c(1.42,5.15,2.5,2.29,12.36,2.82,1.4,3.53,1.17,1.0,4.03,5.26,1.65,1.41,3.75,1.09,
    3.44,1.36,1.19,4.76,5.58,1.23,2.29,7.71,1.12,1.26,2.78,1.13,3.87,15.43,1.19,
    4.95,7.69,1.17,3.27,1.44,1.05,3.94,1.58,2.29,2.73,3.75,6.80,1.16,1.01,1.00,
    1.02,2.32,2.86,22.90,1.42,1.10,2.78,1.23,1.61,1.33,3.53,10.44)
fg <- fitdist(data = Sev, distr = "gamma", method = "mle") 

1 Ответ

0 голосов
/ 23 декабря 2018

Это не контекст регрессии, здесь нет четких подогнанных значений .То, что вы можете иметь в виду, это оценочные значения плотности f (Sev; theta), где theta - это оценки, заданные как fg.Это будет

fit <- dgamma(Sev, fg$estimate[1], fg$estimate[2])

, и это значимый и четко определенный объект.Однако при вычислении RMSE возникают проблемы: с чем вы будете сравнивать fit?Какова ваша плотность образца в 1,42?Так как вы имеете дело с непрерывным распределением, вам придется использовать какой-то оценщик ядра, у которого снова есть параметр - пропускная способность!Очень грубая вещь была бы

den <- density(Sev)
sqrt(mean((den$y - dgamma(den$x, fg$estimate[1], fg$estimate[2]))^2))
# [1] 0.0146867

Это RMSE между оценкой MLE, данной fg, и оценкой плотности ядра den.Используя пакет np, вы могли бы оценить плотность лучше, чем с помощью density.

Вы можете сделать что-то более разумное: сравнить эмпирический CDF ваших данных и CDF, заданный fg.Первый из них задается empCDF <- ecdf(Sev), а второй - pgamma с соответствующими значениями параметров.Тогда, например, статистика Колмогорова-Смирнова будет приблизительно

x <- seq(min(Sev), max(Sev), length = 10000)
max(abs(empCDF(x) - pgamma(x, fg$estimate[1], fg$estimate[2])))
# [1] 0.1725476

, а тип RMSE будет

sqrt(mean((empCDF(x) - pgamma(x, fg$estimate[1], fg$estimate[2]))^2))
# [1] 0.04585509

(можно сделать обе статистикиточнее с optim и integrate соответственно).

Подводя итог, поскольку это не контекст регрессии, все по-другому, и в зависимости от того, насколько строгим вы хотите быть, есть много альтернатив для изучения.

...