mmedist  R Documentation 
Fit of univariate distributions by matching moments (raw or centered) for non censored data.
mmedist(data, distr, order, memp, start = NULL, fix.arg = NULL, optim.method = "default",
lower = Inf, upper = Inf, custom.optim = NULL, weights = NULL, silent = TRUE,
gradient = NULL, checkstartfix=FALSE, ...)
data 
A numeric vector for non censored data. 
distr 
A character string 
order 
A numeric vector for the moment order(s). The length of this vector must be equal to the number of parameters to estimate. 
memp 
A function implementing empirical moments, raw or centered but has to be consistent with

start 
A named list giving the initial values of parameters of the named distribution
or a function of data computing initial values and returning a named list.
This argument may be omitted (default) for some distributions for which reasonable
starting values are computed (see the 'details' section of 
fix.arg 
An optional named list giving the values of fixed parameters of the named distribution or a function of data computing (fixed) parameter values and returning a named list. Parameters with fixed value are thus NOT estimated. 
optim.method 

lower 
Left bounds on the parameters for the 
upper 
Right bounds on the parameters for the 
custom.optim 
a function carrying the optimization . 
weights 
an optional vector of weights to be used in the fitting process.
Should be 
silent 
A logical to remove or show warnings when bootstraping. 
gradient 
A function to return the gradient of the squared difference for the 
checkstartfix 
A logical to test starting and fixed values. Do not change it. 
... 
further arguments passed to the 
The argument distr
can be one of the base R distributions: "norm"
, "lnorm"
,
"exp"
and "pois"
, "gamma"
, "logis"
,
"nbinom"
, "geom"
, "beta"
and "unif"
.
In that case, no other arguments than data
and distr
are
required, because the estimate is computed by a closedform formula.
For distributions characterized by one parameter ("geom"
, "pois"
and "exp"
),
this parameter is simply estimated by matching theoretical and observed means, and for distributions
characterized by two parameters, these parameters are estimated by matching theoretical and observed
means and variances (Vose, 2000).
Note that for these closedform formula, fix.arg
cannot be used and start
is ignored.
The argument distr
can also be the distribution name
as long as a corresponding mdistr
function exists, e.g. "pareto"
if "mpareto"
exists.
In that case arguments arguments order
and memp
have to be supplied in order to carry out the matching numerically, by minimization of the
sum of squared differences between observed and theoretical moments.
Optionnally other arguments can be supplied to control optimization (see the 'details' section of
mledist
for details about arguments for the control of optimization).
In that case, fix.arg
can be used and start
is taken into account.
For non closedform estimators, memp
must be provided to compute empirical moments.
When weights=NULL
, this function must have two arguments x, order
:
x
the numeric vector of the data and order
the order of the moment.
When weights!=NULL
, this function must have three arguments x, order, weights
:
x
the numeric vector of the data, order
the order of the moment,
weights
the numeric vector of weights. See examples below.
Optionally, a vector of weights
can be used in the fitting process.
By default (when weigths=NULL
), ordinary MME is carried out, otherwise
the specified weights are used to compute (raw or centered) weighted moments.
For closedform estimators, weighted mean and variance are computed by
wtdmean
and wtdvar
from the Hmisc
package. When a numerical minimization
is used, weighted are expected to be computed by the memp
function.
It is not yet possible to take into account weighths in functions plotdist
,
plotdistcens
, plot.fitdist
, plot.fitdistcens
, cdfcomp
,
cdfcompcens
, denscomp
, ppcomp
, qqcomp
, gofstat
and descdist
(developments planned in the future).
This function is not intended to be called directly but is internally called in
fitdist
and bootdist
when used with the matching moments method.
mmedist
returns a list with following components,
estimate 
the parameter estimates. 
convergence 
an integer code for the convergence of 
value 
the minimal value reached for the criterion to minimize. 
hessian 
a symmetric matrix computed by 
optim.function 
(if appropriate) the name of the optimization function used for maximum likelihood. 
optim.method 
(if appropriate) when 
fix.arg 
the named list giving the values of parameters of the named distribution
that must kept fixed rather than estimated by maximum likelihood or 
fix.arg.fun 
the function used to set the value of 
weights 
the vector of weigths used in the estimation process or 
counts 
A twoelement integer vector giving the number of calls
to the loglikelihood function and its gradient respectively.
This excludes those calls needed to compute the Hessian, if requested,
and any calls to loglikelihood function to compute a finitedifference
approximation to the gradient. 
optim.message 
A character string giving any additional information
returned by the optimizer, or 
loglik 
the loglikelihood value. 
method 
either 
order 
the order of the moment(s) matched. 
memp 
the empirical moment function. 
MarieLaure DelignetteMuller and Christophe Dutang.
Evans M, Hastings N and Peacock B (2000), Statistical distributions. John Wiley and Sons Inc.
Vose D (2000), Risk analysis, a quantitative guide. John Wiley & Sons Ltd, Chischester, England, pp. 99143.
DelignetteMuller ML and Dutang C (2015), fitdistrplus: An R Package for Fitting Distributions. Journal of Statistical Software, 64(4), 134.
mmedist
, qmedist
, mgedist
,
fitdist
,fitdistcens
,
optim
, bootdistcens
and bootdist
.
# (1) basic fit of a normal distribution with moment matching estimation
#
set.seed(1234)
n < 100
x1 < rnorm(n=n)
mmedist(x1, "norm")
#weighted
w < c(rep(1, n/2), rep(10, n/2))
mmedist(x1, "norm", weights=w)$estimate
# (2) fit a discrete distribution (Poisson)
#
set.seed(1234)
x2 < rpois(n=30,lambda = 2)
mmedist(x2, "pois")
# (3) fit a finitesupport distribution (beta)
#
set.seed(1234)
x3 < rbeta(n=100,shape1=5, shape2=10)
mmedist(x3, "beta")
# (4) fit a Pareto distribution
#
require(actuar)
#simulate a sample
x4 < rpareto(1000, 6, 2)
#empirical raw moment
memp < function(x, order) mean(x^order)
memp2 < function(x, order, weights) sum(x^order * weights)/sum(weights)
#fit by MME
mmedist(x4, "pareto", order=c(1, 2), memp=memp,
start=list(shape=10, scale=10), lower=1, upper=Inf)
#fit by weighted MME
w < rep(1, length(x4))
w[x4 < 1] < 2
mmedist(x4, "pareto", order=c(1, 2), memp=memp2, weights=w,
start=list(shape=10, scale=10), lower=1, upper=Inf)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.