EMsinvMmix returns fitted parameters of J-mixture of
bivariate sine von Mises distributions.
EMsinvMmix(
data,
J = 4,
parammat = EMsinvMmix.init(data, J),
THRESHOLD = 1e-10,
maxiter = 100,
type = c("circular", "axis-aligned", "general"),
kmax = 500,
verbose = TRUE
)n x 2 matrix of toroidal data on \([0, 2\pi)^2\)
number of components of mixture density
6 x J parameter data with the following components:
parammat[1, ] : the weights for each von Mises sine density
parammat[n + 1, ] : \(\kappa_n\) for each von Mises
sine density for n = 1, 2, 3
parammat[m + 4, ] : \(\mu_m\) for each von Mises
sine density for m = 1, 2
number of threshold for difference between updating and updated parameters.
the maximal number of iteration.
a string one of "circular", "axis-aligned", "general", and "Bayesian" which determines the fitting method.
the maximal number of kappa. If estimated kappa is
larger than kmax, then put kappa as kmax.
boolean index, which indicates whether display additional details as to what the algorithm is doing or how many loops are done.
returns approximated parameters for bivariate normal
distribution with list:
list$Sigmainv[j] : approximated covariance matrix for
j-th bivariate normal distribution, approximation of the j-th von Mises.
list$c[j] : approximated \(|2\pi\Sigma|^{-1}\) for
j-th bivariate normal distribution, approximation of the j-th von Mises.
This algorithm is based on ECME algorithm. That is,
constructed with E - step and M - step and M - step
maximizes the parameters with given type.
If type == "circular", then the mixture density is
just a product of two independent von Mises.
If type == "axis-aligned", then the mixture density is
the special case of type == "circular": only need to
take care of the common concentration parameter.
Iftype == "general", then the fitting the mixture
density is more complicated than before, check the detail of
the reference article.
Jung, S., Park, K., & Kim, B. (2021). Clustering on the torus by conformal prediction. The Annals of Applied Statistics, 15(4), 1583-1603.
# NOT RUN {
data <- ILE[1:200, 1:2]
EMsinvMmix(data, J = 3,
THRESHOLD = 1e-10, maxiter = 200,
type = "general", kmax = 500, verbose = FALSE)
# }
Run the code above in your browser using DataLab