1

Hello I have a monthly average of stream flow for the last 100 years:

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)

I am trying to fit a Gamma Distribution to the data with the function:

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

and it gives an error:

simpleError in optim(par = vstart, fn = fnobj, fix.arg = fix.arg, obs = data, gr = gradient, ddistnam = ddistname, hessian = TRUE, method = meth, lower = lower, upper = upper, ...): non-finite finite-difference value [2]> Error in fitdist(Sep, distr = "gamma", method = "mle") : the function mle failed to estimate the parameters,
with the error code 100

I am using the packages

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

Any help would be much appreciated

Rui Barradas
  • 70,273
  • 8
  • 34
  • 66
  • 2
    What's your question? Please share your data using `dput()`. See more here: [How to make a great R reproducible example?](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – Tung Mar 24 '18 at 04:07
  • 2
    Are you sayng you ran the code you're showing and didn't get the result you expected or wanted? If so, what was the result you expected or wanted? – Don Hatch Mar 24 '18 at 04:08
  • What makes you think a gamma fits your data? – Rui Barradas Mar 24 '18 at 11:51
  • 1
    The question had a data example in a poor format, changed to dput(Sep). And there was no real question, I have included the error message. – Rui Barradas Mar 24 '18 at 15:48
  • Sorry this is my first time posing to this web site. I am trying to find a best fit gamma distribution for my data set. I am new coding in R and I don't understand the error message. Could someone explain this error message to me? – Mikey Johnson Mar 25 '18 at 00:14

1 Answers1

1

Gamma distribution has two parameters and both are positive. fitdist function uses optim function to find those parameters. However, without any user specified limit, optim will try even (infeasible) negative parameters during iteration resulting in NaNs. Setting the limit lower = c(0, 0), will fix this error.

Credit to this answer

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

Created on 2018-03-24 by the reprex package (v0.2.0).

Tung
  • 26,371
  • 7
  • 91
  • 115