fitdistr {MASS} | R Documentation |
Maximum-likelihood fitting of univariate distributions, allowing parameters to be held fixed if desired.
fitdistr(x, densfun, start, ...)
x |
A numeric vector. |
densfun |
Either a character string or a function returning a density evaluated
at its first argument.
Distributions "beta" , "cauchy" , "chi-squared" ,
"exponential" , "f" , "gamma" , "log-normal" ,
"lognormal" , "logistic" , "negative binomial" ,
"normal" , "t" , "uniform" and "weibull" are
recognised, case being ignored.
|
start |
A named list giving the parameters to be optimized with initial values. This can be omitted for some of the named distributions (see Details). |
... |
Additional parameters, either for densfun or for optim .
In particular, it can be used to specify bounds via lower or
upper or both. If arguments of densfun (or the density
function corresponding to a character-string specification) are included
they will be held fixed.
|
For densfun = "normal"
the closed-form MLEs (and standard
errors) are used, and start
should not be supplied.
For all other distributions, direct optimization of the log-likelihood is performed, with numerical derivatives. The estimated standard errors are taken from the observed information matrix, calculated by a numerical approximation.
For the following named distributions, reasonable starting values will
be computed if start
is omitted or only partially specified:
cauchy
, gamma
, logistic
, negative binomial
(parametrized by mu
and size
), t
, uniform
,
weibull
.
An object of class "fitdistr"
, a list with two components,
estimate |
the parameter estimates, and |
sd |
the estimated standard errors. |
Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Fourth edition. Springer.
set.seed(123) x <- rgamma(100, shape = 5, rate = 0.1) fitdistr(x, "gamma") ## now do this directly with more control. fitdistr(x, dgamma, list(shape = 1, rate = 0.1), lower = 0.01) set.seed(123) x2 <- rt(250, df = 9) fitdistr(x2, "t", df = 9) ## allow df to vary: not a very good idea! fitdistr(x2, "t") ## now do this directly with more control. mydt <- function(x, m, s, df) dt((x-m)/s, df)/s fitdistr(x2, mydt, list(m = 0, s = 1), df = 9, lower = c(-Inf, 0)) set.seed(123) x3 <- rweibull(100, shape = 4, scale = 100) fitdistr(x3, "weibull") set.seed(123) x4 <- rnegbin(500, mu = 5, theta = 4) fitdistr(x4, "Negative Binomial") # R only