fitmssg {mixSSG} | R Documentation |
Computing the maximum likelihood estimator for the mixtures of skewed sub-Gaussian stable distributions using the EM algorithm.
Description
Each d
-dimensional skewed sub-Gaussian stable (SSG) random vector \bf{Y}
, admits the representation given by Teimouri (2022):
{\bf{Y}} \mathop=\limits^d {\boldsymbol{\mu}}+\sqrt{P}{\boldsymbol{\lambda}}\vert{Z}_0\vert + \sqrt{P}{\Sigma}^{\frac{1}{2}}{\bf{Z}}_1,
where \boldsymbol{\mu}
(location vector in {{{R}}}^{d}
, \boldsymbol{\lambda}
(skewness vector in {{{R}}}^{d}
), \Sigma
(positive definite symmetric dispersion matrix), and 0<\alpha \leq 2
(tail thickness) are model parameters. Furthermore, P
is a positive stable random variable, {Z}_0\sim N({0},1)
, and \bf{Z}_1\sim N_{d}\bigl({\bf{0}}, \Sigma\bigr)
. We note that Z
, Z_0
, and \boldsymbol{Z}_1
are mutually independent.
Usage
fitmssg(Y, K, eps = 0.15, initial = "FALSE", method = "moment", starts = starts)
Arguments
Y |
an |
K |
number of component. |
eps |
threshold value for stopping EM algorithm. It is 0.15 by default. The algorithm can be implemented faster if |
initial |
logical statement. If |
method |
either |
starts |
a list of initial values if |
Value
a list of estimated parameters corresponding to K
clusters, predicted labels for clusters, the log-likelihood value across iterations, the Bayesian information criterion (BIC), and the Akaike information criterion (AIC).
Author(s)
Mahdi Teimouri
References
M. Teimouri, 2022. Finite mixture of skewed sub-Gaussian stable distributions, arxiv.org/abs/2205.14067.
M. Teimouri, S. Rezakhah, and A. Mohammadpour, 2018. Parameter estimation using the EM algorithm for symmetric stable random variables and sub-Gaussian random vectors, Journal of Statistical Theory and Applications, 17(3), 439-41.
J. A. Hartigan, M. A. Wong, 1979. Algorithm as 136: A k-means clustering algorithm, Journal of the Royal Statistical Society. Series c (Applied Statistics), 28, 100-108.
Examples
data(bankruptcy)
out1<-fitmssg(bankruptcy[,2:3], K=2, eps = 0.15, initial="FALSE", method="moment", starts=starts)
n1 <- 100
n2 <- 50
omega1 <- n1/(n1 + n2)
omega2 <- n2/(n1 + n2)
alpha1 <- 1.6
alpha2 <- 1.6
mu1 <- c(-1, -1)
mu2 <- c(6, 6)
sigma1 <- matrix( c(2, 0.20, 0.20, 0.5), 2, 2 )
sigma2 <- matrix( c(0.4, 0.10, 0.10, 0.2 ), 2, 2 )
lambda1 <- c(5, 5)
lambda2 <- c(-5, -5)
Sigma <- array( NA, c(2, 2, 2) )
Sigma[, , 1] <- sigma1
Sigma[, , 2] <- sigma2
starts<-list( c(omega1,omega2), c(alpha1,alpha2), rbind(mu1,mu2), Sigma, rbind(lambda1,lambda2) )
Y <- rbind( rssg(n1 , alpha1, mu1, sigma1, lambda1), rssg(n2, alpha2, mu2, sigma2, lambda2) )
out2<-fitmssg(Y, K=2, eps=0.15, initial="TRUE", method="moment", starts=starts)