| mle.tmvnorm {tmvtnorm} | R Documentation |
Maximum Likelihood Estimation for the Truncated Multivariate Normal Distribution
Description
Maximum Likelihood Estimation for the Truncated Multivariate Normal Distribution
Usage
mle.tmvnorm(X,
lower = rep(-Inf, length = ncol(X)),
upper = rep(+Inf, length = ncol(X)),
start = list(mu = rep(0, ncol(X)), sigma = diag(ncol(X))),
fixed = list(), method = "BFGS",
cholesky = FALSE,
lower.bounds = -Inf,
upper.bounds = +Inf,
...)
Arguments
X |
Matrix of quantiles, each row is taken to be a quantile. |
lower |
Vector of lower truncation points,
default is |
upper |
Vector of upper truncation points,
default is |
start |
Named list with elements |
fixed |
Named list. Parameter values to keep fixed during optimization. |
method |
Optimization method to use. See |
cholesky |
if TRUE, we use the Cholesky decomposition of |
lower.bounds |
lower bounds/box constraints for method "L-BFGS-B" |
upper.bounds |
upper bounds/box constraints for method "L-BFGS-B" |
... |
Further arguments to pass to |
Details
This method performs a maximum likelihood estimation of the parameters mean and sigma of a truncated multinormal distribution,
when the truncation points lower and upper are known.
mle.tmvnorm() is a wrapper for the general maximum likelihood method mle,
so one does not have to specify the negative log-likelihood function.
The log-likelihood function for a data matrix X (T x n) can be established straightforward as
\log L(X | \mu,\Sigma) = -T \log{\alpha(\mu,\Sigma)} + {-T/2} \log{\|\Sigma\|} -\frac{1}{2} \sum_{t=1}^{T}{(x_t-\mu)' \Sigma^{-1} (x_t-\mu)}
As mle, this method returns an object of class mle, for which various
diagnostic methods are available, like profile(), confint() etc. See examples.
In order to adapt the estimation problem to mle, the named parameters
for mean vector elements are "mu_i" and the elements of the covariance matrix are "sigma_ij" for the lower triangular matrix elements,
i.e. (j <= i).
Value
An object of class mle-class
Author(s)
Stefan Wilhelm wilhelm@financial.com
See Also
Examples
## Not run:
set.seed(1.2345)
# the actual parameters
lower <- c(-1,-1)
upper <- c(1, 2)
mu <- c(0, 0)
sigma <- matrix(c(1, 0.7,
0.7, 2), 2, 2)
# generate random samples
X <- rtmvnorm(n=500, mu, sigma, lower, upper)
method <- "BFGS"
# estimate mean vector and covariance matrix sigma from random samples X
# with default start values
mle.fit1 <- mle.tmvnorm(X, lower=lower, upper=upper)
# diagnostic output of the estimated parameters
summary(mle.fit1)
logLik(mle.fit1)
vcov(mle.fit1)
# profiling the log likelihood and confidence intervals
mle.profile1 <- profile(mle.fit1, X, method="BFGS", trace=TRUE)
confint(mle.profile1)
par(mfrow=c(3,2))
plot(mle.profile1)
# choosing a different start value
mle.fit2 <- mle.tmvnorm(X, lower=lower, upper=upper,
start=list(mu=c(0.1, 0.1),
sigma=matrix(c(1, 0.4, 0.4, 1.8),2,2)))
summary(mle.fit2)
## End(Not run)