Implements three EM algorithms to M-estimate the location vector and scatter matrix of a multivariate t-distribution.
tM(X, df = 1, alg = "alg3", mu.init = NULL, V.init = NULL,
gamma.init = NULL, eps = 1e-06, maxiter = 100,
na.action = na.fail)
A list containing:
vector with the estimated loaction.
matrix of the estimated scatter.
estimated value of gamma. Only present when alg2
is used.
number of iterations.
numeric data matrix or dataframe.
assumed degrees of freedom of the t-distribution. Default is 1
which corresponds to the Cauchy distribution.
specifies which algorithm to use. Options are alg1
, alg2
or alg3
. alg3
is the default.
initial value for the location vector if available.
initial value for the scatter matrix if available.
initial value for gamma if available. Only needed for alg2
.
convergence tolerance.
maximum number of iterations.
a function which indicates what should happen when the data contain 'NA's. Default is to fail.
Klaus Nordhausen
This function implements the EM algorithms described in Kent et al. (1994). The norm used to define convergence is as in Arslan et al. (1995).
Algorithm 1 is valid for all degrees of freedom df
> 0. Algorithm 2 is well defined only for degrees of freedom df
> 1.
Algorithm 3 is the limiting case of Algorithm 2 with degrees of freedom df
= 1.
The performance of the algorithms are compared in Arslan et al. (1995).
Note that cov.trob
in the MASS package implements also a covariance estimate for a multivariate t-distribution.
That function provides for example also the possibility to fix the location. It requires however that the degrees of freedom exceeds 2.
Kent, J.T., Tyler, D.E. and Vardi, Y. (1994), A curious likelihood identity for the multivariate t-distribution, Communications in Statistics, Simulation and Computation, 23, 441--453. <doi:10.1080/03610919408813180>.
Arslan, O., Constable, P.D.L. and Kent, J.T. (1995), Convergence behaviour of the EM algorithm for the multivariate t-distribution, Communications in Statistics, Theory and Methods, 24, 2981--3000. <doi:10.1080/03610929508831664>.
set.seed(654321)
cov.matrix <- matrix(c(3,2,1,2,4,-0.5,1,-0.5,2), ncol=3)
X <- rmvt(100, cov.matrix, 1)
tM(X)
rm(.Random.seed)
Run the code above in your browser using DataLab