| mle {bbmle} | R Documentation |
Estimate parameters by the method of maximum likelihood.
mle2(minuslogl, start, method, optimizer,
fixed = NULL, data=NULL,
default.start=TRUE, eval.only = FALSE, vecpar=FALSE,
parameters,...)
calc_mle2_function(formula,parameters,start,data=NULL)
minuslogl |
Function to calculate negative log-likelihood. |
start |
Named list. Initial values for optimizer. |
method |
Optimization method to use. See optim. |
optimizer |
Optimization function to use. (Stub.) |
fixed |
Named list. Parameter values to keep fixed during optimization. |
data |
list of data to pass to minuslogl |
default.start |
Logical: allow default values of minuslogl
as starting values? |
eval.only |
Logical: return value of minuslogl(start)
rather than optimizing |
vecpar |
Logical: is first argument a vector of all parameters?
(For compatibility with optim.) |
parameters |
List of linear models for parameters |
... |
Further arguments to pass to optimizer |
formula |
a formula for the likelihood (see Details) |
The optim optimizer is used to find the minimum of the
negative log-likelihood. An approximate covariance matrix for the
parameters is obtained by inverting the Hessian matrix at the optimum.
The minuslogl argument can also specify a formula,
rather than an objective function, of the
form x~ddistn(param1,...,paramn). In this case
ddistn is taken to be a probability or density
function, which must have (literally) x as its
first argument (although this argument may be interpreted as
a matrix of multivariate responses) and which must have
a log argument that can be used to specify the
log-probability or log-probability-density is required.
If a formula is specified, then parameters can contain
a list of linear models for the parameters.
If a formula is given and non-trivial linear models are given
in parameters for some of the variables, then
model matrices will be generated using model.matrix:
start can either be an exhaustive list of starting values (in
the order given by model.matrix) or values can be given just
for the higher-level parameters: in this case, all of the additional
parameters generated by model.matrix will be given starting
values of zero.
In the event of a convergence failure, see optim
for the meanings of the error codes.
An object of class "mle2".
Note that the minuslogl function should
return -log L (not -2 log L). It
is the user's responsibility
to ensure that the likelihood is correct, and that
asymptotic likelihood inference is valid.
x <- 0:10
y <- c(26, 17, 13, 12, 20, 5, 9, 8, 5, 4, 8)
ll <- function(ymax=15, xhalf=6)
-sum(stats::dpois(y, lambda=ymax/(1+x/xhalf), log=TRUE))
(fit <- mle2(ll))
mle2(ll, fixed=list(xhalf=6))
summary(fit)
logLik(fit)
vcov(fit)
p1 <- profile(fit)
plot(p1, absVal=FALSE)
confint(fit)
## use bounded optimization
## the lower bounds are really > 0, but we use >=0 to stress-test profiling
(fit1 <- mle2(ll, method="L-BFGS-B", lower=c(0, 0)))
p1 <- profile(fit1)
plot(p1, absVal=FALSE)
## a better parametrization:
ll2 <- function(lymax=log(15), lxhalf=log(6))
-sum(stats::dpois(y, lambda=exp(lymax)/(1+x/exp(lxhalf)), log=TRUE))
(fit2 <- mle2(ll2))
plot(profile(fit2), absVal=FALSE)
exp(confint(fit2))
vcov(fit2)
cov2cor(vcov(fit2))
mle2(y~dpois(lambda=exp(lymax)/(1+x/exp(lhalf))),
start=list(lymax=0,lhalf=0),
parameters=list(lymax~1,lhalf~1))