Подгонка гамма-распределения к потокам с помощью R

Здравствуйте, у меня есть среднемесячный сток за последние 100 лет:

Sep <-
c(50504.61, 31903.57, 20575.81, 51250, 20282.16, 19932.05, 22302.73, 
24777.73, 27681.94, 18676.9, 28587.23, 29030.58, 24433.3, 18785.24, 
21913.74, 33662.53, 23215.58, 35792.85, 13766.63, 41484.56, 16209.67, 
74759.93, 19730.94, 61532.38, 24404.35, 14988.49, 24505.1, 19911.57, 
10058.62, 20984.86, 24913.8, 21067.56, 37107.83, 23730.15, 18556.58, 
24130.02, 14550.06, 21667.81, 11748.43, 17464.65, 15869.2, 27497.25, 
13161.09, 14842.04, 15144.44, 18796.16, 24514.99, 14315.39, 17463.56, 
12698.22, 10528.03, 35689.17, 15496.81, 11170.44, 11593.22, 30230.25, 
14554.43, 25971.54, 12939.35, 30981.11, 12630.06, 18271.7, 14998.52, 
21462.35, 39960.48, 23928.06, 20261.68, 23808.23, 12809.67, 18762.68, 
17108.04, 12861.55, 14521.27, 14215.91, 21513.8, 18797.29, 37495.3, 
27068.98, 37775.56, 26099.67, 34931.63, 23563.04, 19916.69, 15545.58, 
19366.38, 27494.53, 22375.44, 27635.01, 18280.28, 26641.43, 18894.12, 
42866.85, 25925.63, 38156.57, 18015.56)

Я пытаюсь подогнать гамма-распределение к данным с помощью функции:

fit.gamma <- fitdist(Sep, distr = "gamma", method = "mle")

и выдает ошибку:

simpleError в optim (par = vstart, fn = fnobj, fix.arg = fix.arg, obs = data, gr = gradient, ddistnam = ddistname, hessian = TRUE, method = meth, lower = lower, upper = upper, .. .): не конечное значение конечной разности [2]> Ошибка в fitdist (Sep, distr = "gamma", method = "mle"): функция mle не смогла оценить параметры,
с кодом ошибки 100

Я использую пакеты

library(fitdistrplus)
library(sm)
library(Rlab)
library(MASS)

Любая помощь приветствуется


person Mikey Johnson    schedule 24.03.2018    source источник
comment
Каков твой вопрос? Поделитесь своими данными, используя dput(). Подробнее см. Здесь: Как создать отличный воспроизводимый пример R?   -  person Tung    schedule 24.03.2018
comment
Вы сказали, что выполнили показанный код и не получили желаемого или ожидаемого результата? Если да, то какого результата вы ожидали или хотели?   -  person Don Hatch    schedule 24.03.2018
comment
Что заставляет вас думать, что гамма соответствует вашим данным?   -  person Rui Barradas    schedule 24.03.2018
comment
В вопросе был пример данных в плохом формате, измененный на dput (сентябрь). И не было никакого реального вопроса, я включил сообщение об ошибке.   -  person Rui Barradas    schedule 24.03.2018
comment
Извините, я впервые позирую этому сайту. Я пытаюсь найти наиболее подходящее гамма-распределение для своего набора данных. Я новичок в коде R и не понимаю сообщения об ошибке. Может ли кто-нибудь объяснить мне это сообщение об ошибке?   -  person Mikey Johnson    schedule 25.03.2018


Ответы (1)


Gamma distribution имеет два параметра, и оба положительные. fitdist функция использует optim функцию для поиска этих параметров. Однако без какого-либо ограничения, указанного пользователем, optim будет пробовать даже (недопустимые) отрицательные параметры во время итерации, что приведет к NaNs. Установка лимита lower = c(0, 0) исправит эту ошибку.

Благодарим за этот ответ

library(fitdistrplus)

fit.gamma <- fitdist(Sep, distr = "gamma", method = "mle", lower = c(0, 0))

# Check result
plot(fit.gamma)

# Goodness-of-fit statistics
gofstat(fit.gamma)

#> Goodness-of-fit statistics
#>                              1-mle-gamma
#> Kolmogorov-Smirnov statistic  0.09099753
#> Cramer-von Mises statistic    0.16861125
#> Anderson-Darling statistic    1.07423429
#> 
#> Goodness-of-fit criteria
#>                                1-mle-gamma
#> Akaike's Information Criterion    2004.836
#> Bayesian Information Criterion    2009.944

Создано 24 марта 2018 г. пакетом REPEX (v0.2.0).

person Tung    schedule 25.03.2018