[R] find parameters for a gamma distribution

Thomas Petzoldt thpe at hhbio.wasser.tu-dresden.de
Wed Jan 5 23:56:58 CET 2005


Andrew Collier wrote:
> hello,
> 
> i have just started exploring R as an alternative to matlab for data analysis. so
> +far everything is _very_ promising. i have a question though regarding parameter
> +estimation. i have some data which, from a histogram plot, appears to arise from
> +a gamma distribution. i gather that you can fit the data to the distribution
> +using glm(). i am just not quite sure how this is done in practice... so here is
> +a simple example with artificial data:
> 
> d <- rgamma(100000, 20, scale = 2)
> h <- hist(d, breaks = c(seq(10, 80, 2), 100))
> 

[...]

The help page of ?dgamma says:

"The mean and variance are E(X) = a*s and Var(X) = a*s^2."

So, to estimate the parameters in your example, try the following:

 > d <- rgamma(100000, 20, scale = 2)
 > var(d)/mean(d)
[1] 1.992091
 > mean(d)^2/var(d)
[1] 20.09559

... and you may use these as start values, see ?fitdistr, e.g

 > fitdistr(d, dgamma, list(shape = 20.1, scale = 1.99))

or simply

 > fitdistr(d, "gamma")

Hint: scale=1/rate

You mentioned "glm", but this is something completely different. It is 
used to fit generalized linear models, see the extra chapter no. 31 of 
Crawley's book on:

http://www.bio.ic.ac.uk/research/mjcraw/statcomp/chapters.htm

Thomas P.




More information about the R-help mailing list