Package {circda}


Type: Package
Title: Circular Data Analysis
Version: 1.1
Date: 2026-09-15
Author: Michail Tsagris [aut, cre]
Maintainer: Michail Tsagris <mtsagris@uoc.gr>
Depends: R (≥ 4.0)
Imports: circular, Directional, glmnet, graphics, rangen, Rfast, stats
Suggests: Rfast2
Description: Functions to perform maximum likelihood estimation, model-based clustering, discriminant and regression analysis with a circular response variable. The standard textbook for such data is the "Directional Statistics" by Mardia, K. V. and Jupp, P. E. (2000). Other references include: Tsagris M. and Alzeley O. (2025). "Circular and spherical projected Cauchy distributions: A Novel Framework for Circular and Directional Data Modeling". Australian & New Zealand Journal of Statistics, 67(1): 77–103. <doi:10.1111/anzs.12434>. Tsagris M., Papastamoulis P. and Kato S. (2025). "Directional data analysis: spherical Cauchy or Poisson kernel-based distribution". Statistics and Computing, 35:51 <doi:10.1007/s11222-025-10583-0>. Alzeley O. and Tsagris (2026). "On the generalized circular projected Cauchy distribution". Mathematics, 14(11): 1934 <doi:10.3390/math14111934>.
License: GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]
NeedsCompilation: no
Packaged: 2026-09-14 21:06:06 UTC; mtsag
Repository: CRAN
Date/Publication: 2026-09-15 11:00:47 UTC

Circular Data Analysis

Description

Functions to perform maximum likelihood estimation, model-based clustering, discriminant and regression analysis with a circular response variable.

Details

Package: circda
Type: Package
Version: 1.1
Date: 2026-09-15

Maintainers

Michail Tsagris <mtsagris@uoc.gr>.

Author(s)

Michail Tsagris mtsagris@uoc.gr

References

Tsagris M. and Alenazi A. (2019). Comparison of discriminant analysis methods on the sphere. Communications in Statistics: Case Studies, Data Analysis and Applications, 5(4): 467–491.

Tsagris M., Papastamoulis P. and Kato S. (2025). Directional data analysis using the spherical Cauchy and the Poisson kernel-based distribution. Statistics and Computing, 35:51.


BIC and ICL for the model based clustering with circular distributions

Description

BIC and ICL for the model based clustering with circular distributions.

Usage

bic.mixcirc(u, rads = TRUE, type = "vm", G = 5, tol = 1e-4, maxiters = 500)

Arguments

u

A matrix containing directional data.

rads

If the data are expressed in angles set this to FALSE.

type

The distribution to fit, "vm" is von Mises mixtures, "cp" is circular Purkayastha mixtures, "pn" is projected normal mixtures, "gcpc" is GCPC mixtures and "cipc" is CIPC (or wrapped Cauchy) mixtures.

G

The maximum number of clusters to be tested. Default value is 5.

tol

The tolerance value to terminate the EM algorithm.

maxiters

The maximum number of iterations the EM algorithm will perform.

Details

The function computes the BIC and ICL to decide on the optimal number of clusters when using mixtures of SESPC or mixtures of ESAG distributions.

Value

A plot of the ICL values and a list including:

bic

The BIC values for all the models tested.

icl

The ICL values for all the models tested.

runtime

The run time of the algorithm. A numeric vector. The first element is the user time, the second element is the system time and the third element is the elapsed time.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris.

References

Perdikis T., Alharbi N. and Tsagris M. (2026). Model–based clustering for spherical and hyper–spherical data using elliptically symmetric distributions.

https://arxiv.org/abs/2605.27496

See Also

mixcirc.mle, circ.mle

Examples

u1 <- rnorm(100, 3, 0.1)
u2 <- rnorm(100, 4, 0.1)
u <- c(u1, u2)
bic.mixcirc(u, type = "vm", G = 5)

Prediction of a new observation using discriminant analysis based on circular distributions

Description

Prediction of a new observation using discriminant analysis based on circular distributions.

Usage

circ.da(unew, u, ina, rads = TRUE, type = c("vm", "cp", "pn", "gcpc", "cipc") )

Arguments

unew

The new observation(s) (expressed in radians, or angles) whose group is to be predicted.

u

A numerical vector with the data (expressed in radians, or angles).

ina

A vector indicating the groups of the data y.

rads

If the data are expressed in angles set this to FALSE.

type

The distribution to fit, "vm" is von Mises distribution, "cp" is the circular Purkayastha distribution, "pn" is projected normal distribution, "gcpc" is GCPC distribution and "cipc" is CIPC (or wrapped Cauchy) distribution.

Details

Prediction of the class of a new circular vector assuming some distributions.

Value

A matrix with 5 columns, one for each distribution, where each row contains the predicted class of each observation If you chose less distributions to test, the columns of the non-chosen distributions will contain NAs.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Tsagris M. and Alenazi A. (2019). Comparison of discriminant analysis methods on the sphere. Communications in Statistics: Case Studies, Data Analysis and Applications, 5(4): 467–491.

Tsagris M., Papastamoulis P. and Kato S. (2025). Directional data analysis using the spherical Cauchy and the Poisson kernel-based distribution. Statistics and Computing, 35:51.

Morris J. E. and Laycock P. J. (1974). Discriminant analysis of directional data. Biometrika, 61(2): 335–341.

Mardia K. V. and Jupp P. E. (2000). Directional statistics. Chicester: John Wiley & Sons.

See Also

circda.cv

Examples

u1 <- rnorm(50, 3, 0.2)
u2 <- rnorm(50, 5, 0.4)
u <- c(u1, u2)
ina <- rep(1:2, each = 50)
est <- circ.da(u, u, ina)

Variable selection using the gamma-OMP algorithm

Description

Variable selection using the \gamma-OMP algorithm.

Usage

circ.gomp(y, x, rads = TRUE, type = "vm", xstand = TRUE, thresh = qchisq(0.95, 1),
tol = 1e-6, maxiters = 100)

Arguments

y

A vector with the circular data expressed in radians, or angles.

x

The independent variable(s). Can be Euclidean or categorical (factor variables).

rads

If the data are expressed in angles set this to FALSE.

type

The distribution to fit, "vm" is von Mises distribution, "cp" is the circular Purkayastha distribution, "pn" is projected normal distribution, "gcpc" is GCPC distribution and "cipc" is CIPC (or wrapped Cauchy) distribution.

xstand

Should the values of the predictor variables be standardized prior to the algorithm?

thresh

The critical value for the log-likelihood ratio test. This is by default the 95% of the chi-square distribution with 1 degree of freedom.

tol

The tolerance value to terminate the Newton-Raphson algorithm.

maxiters

The maximum number of iterations allowed in the Newton-Raphson algorithm.

Details

The function performs variable selection using the \gamma-OMP algorithm (Tsagris et al., 2022).

Value

A list including:

runtime

The run time of the algorithm. A numeric vector. The first element is the user time, the second element is the system time and the third element is the elapsed time.

result

A matrix with the selected variables and the log-likelihood of the model at each step.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Tsagris M., Papadovasilakis Z., Lakiotaki K. and Tsamardinos, I. (2022). The \gamma-OMP Algorithm for Feature Selection With Application to Gene Expression Data. IEEE/ACM Transactions on Computational Biology and Bioinformatics, 19(2): 1214–1224.

Tsagris M., Papastamoulis P. and Kato S. (2025). Directional data analysis using the spherical Cauchy and the Poisson kernel-based distribution. Statistics and Computing, 35:51.

Presnell B., Morrison S. P. and Littell Ramon C. (1998). Projected multivariate linear models for directional data. Journal of the American Statistical Association, 93(443): 1068–1077.

See Also

circ.regs

Examples

y <- rcirc(500, mu = 3, kappa = 2, rads = TRUE, type = "vm")
x <- matrix( rnorm(500 * 20), ncol = 20)
mod <- circ.gomp(y, x)

MLE of a circular distribution

Description

MLE of a circular distribution.

Usage

circ.mle(u, rads = TRUE, type ="vm", tol = 1e-6, maxiters = 100)

Arguments

u

A vector with the circular data expressed in radians, or angles.

rads

If the data are expressed in angles set this to FALSE.

type

The distribution to fit, "vm" is von Mises distribution, "cp" is the circular Purkayastha distribution, "pn" is projected normal distribution, "gcpc" is GCPC distribution and "cipc" is CIPC (or wrapped Cauchy) distribution.

tol

The tolerance value to terminate the Newton-Raphson algorithm.

maxiters

The maximum number of iterations the Newton-Raphson algorithm will perform.

Details

The function performs MLE of circular distributions.

Value

A list including:

param

A matrix with the mixing probability of each group and the estimated parameters of the chosen distribution.

loglik

The value of the maximised log-likelihood of the chosen distribution.

iter

The number of iteration required by the EM algorithm.

runtime

The run time of the algorithm. A numeric vector. The first element is the user time, the second element is the system time and the third element is the elapsed time.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Mardia K. V. and Jupp P. E. (2000). Directional statistics. Chicester: John Wiley & Sons.

Sra S. (2012). A short note on parameter approximation for von Mises-Fisher distributions: and a fast implementation of I_s(x). Computational Statistics, 27(1): 177–190.

Presnell Brett, Morrison Scott P. and Littell Ramon C. (1998). Projected multivariate linear models for directional data. Journal of the American Statistical Association, 93(443): 1068–1077.

Tsagris M. and Alzeley O. (2025). Circular and spherical projected Cauchy distributions: A Novel Framework for Circular and Directional Data Modelling. Australian & New Zealand Journal of Statistics, 67(1): 77–103. https://arxiv.org/pdf/2302.02468.pdf

Alzeley O. and Tsagris M. (2026). On the generalized circular projected Cauchy distribution. Mathematics, 14(11): 1934. https://www.mdpi.com/2227-7390/14/11/1934

Purkayastha S. (1991). A Rotationally Symmetric Directional Distribution: Obtained through Max- imum Likelihood Characterization. The Indian Journal of Statistics, Series A, 53(1): 70–83.

Cabrera J. and Watson G. S. (1990). On a spherical median related distribution. Communications in Statistics-Theory and Methods, 19(6): 1973–1986

See Also

mixcirc.mle

Examples

u <- rcirc(100, mu = 3, kappa = 2, rads = TRUE, type = "vm")
circ.mle(u, rads = TRUE, type = "vm")

Regression model using a circular distribution

Description

Regression model using a circular distribution.

Usage

circ.reg(y, x, rads = TRUE, type = "vm", influence = FALSE, xnew = NULL,
tol = 1e-6, maxiters = 100)

Arguments

y

A vector with the circular data expressed in radians, or angles.

x

The independent variable(s). Can be Euclidean or categorical (factor variables).

rads

If the data are expressed in angles set this to FALSE.

type

The distribution to fit, "vm" is von Mises distribution, "cp" is the circular Purkayastha distribution, "pn" is projected normal distribution, "gcpc" is GCPC distribution and "cipc" is CIPC (or wrapped Cauchy) distribution.

influence

If TRUE, this will compute the influence value of each observation based on the formula of Koh and Liang (2017).

xnew

The new values of some independent variable(s) whose circular values you want to predict. The can be Euclidean or categorical. If you have no new x values, leave it NULL (default).

tol

The tolerance value to terminate the Newton-Raphson algorithm.

maxiters

The maximum number of iterations allowed in the Newton-Raphson algorithm.

Details

The functions performs regression using circular distributions.

Value

A list including:

param

A matrix with the mixing probability of each group and the estimated parameters of the chosen distribution.

loglik

The value of the maximised log-likelihood of the chosen distribution.

iter

The number of iteration required by the EM algorithm.

runtime

The run time of the algorithm. A numeric vector. The first element is the user time, the second element is the system time and the third element is the elapsed time.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Tsagris M., Papastamoulis P. and Kato S. (2025). Directional data analysis using the spherical Cauchy and the Poisson kernel-based distribution. Statistics and Computing, 35:51.

Presnell B., Morrison S. P. and Littell Ramon C. (1998). Projected multivariate linear models for directional data. Journal of the American Statistical Association, 93(443): 1068–1077.

Koh, Pang Wei and Liang, Percy (2017). Understanding Black-Box Predictions via Influence Functions. International Conference on Machine Learning, 1885–1894.

See Also

circ.regs

Examples

y <- rcirc(100, mu = 3, kappa = 2, rads = TRUE, type = "vm")
x <- rnorm(100)
circ.reg(y, x, rads = TRUE, type = "vm")

Many simple circular regressions

Description

Many simple circular regressions.

Usage

circ.regs(y, x, rads = TRUE, type = "vm", tol = 1e-6, logged = FALSE,
maxiters = 100, ncores = 1)

Arguments

y

A vector with the circular data expressed in radians, or angles.

x

A numerical matrix with many variables. A circular regression will be fit to each of these variables.

rads

If the data are expressed in angles set this to FALSE.

type

The distribution to fit, "vm" is von Mises distribution, "cp" is the circular Purkayastha distribution, "pn" is projected normal distribution, and "cipc" is CIPC (or wrapped Cauchy) distribution.

tol

The tolerance value to terminate the Newton-Raphson algorithm.

logged

Do you want the logarithm of the p-value to be returned?

maxiters

The maximum number of iterations the Newton-Raphson algorithm will perform.

ncores

A number specifying the number of cores to use. If more than 1, then parallel processing is performed.

Details

The function performs many regressions with one circular dependent variable and one Euclidean independent variable. For each colum of x a circular regression model is fitted and the hypothesis testing of no association between y and this variable is performed.

Value

A matrix with two columns, the test statistics and their associated (log) p-values.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Mardia K. V. and Jupp P. E. (2000). Directional statistics. Chicester: John Wiley & Sons.

Presnell Brett, Morrison Scott P. and Littell Ramon C. (1998). Projected multivariate linear models for directional data. Journal of the American Statistical Association, 93(443): 1068–1077.

Tsagris M. and Alzeley O. (2025). Circular and spherical projected Cauchy distributions: A Novel Framework for Circular and Directional Data Modelling. Australian & New Zealand Journal of Statistics, 67(1): 77–103. https://arxiv.org/pdf/2302.02468.pdf

Purkayastha S. (1991). A Rotationally Symmetric Directional Distribution: Obtained through Max- imum Likelihood Characterization. The Indian Journal of Statistics, Series A, 53(1): 70–83.

See Also

circ.reg

Examples

y <- rcirc(100, mu = 3, kappa = 2, rads = TRUE, type = "vm")
x <-  matrix(rnorm(100 * 10), ncol = 10)
circ.regs(y, x, rads = TRUE, type = "vm")

Ridge circular regression

Description

Ridge circular regression.

Usage

circ.ridge(y, x, rads = TRUE, type = "vm", lambda = NULL, nlambda = 100,
xnew = NULL, tol = 1e-6, maxiters = 100)

Arguments

y

A vector with the circular data expressed in radians, or angles.

x

The independent variable(s). Can be Euclidean or categorical (factor variables).

rads

If the data are expressed in angles set this to FALSE.

type

The distribution to fit, "vm" is von Mises distribution, "pn" is projected normal distribution, "cipc" is CIPC (or wrapped Cauchy) distribution.

lambda

A vector with a sequence of the ridge \lambda values. If you do not know it leave it NULL and the function will compute it internally.

nlambda

The number of \lambda values to compute.

xnew

The new values of some independent variable(s) whose circular values you want to predict. The can be Euclidean or categorical. If you have no new x values, leave it NULL (default).

tol

The tolerance value to terminate the Newton-Raphson algorithm.

maxiters

The maximum number of iterations the Newton-Raphson algorithm will perform.

Details

Ridge regression using the von Mises, the projected normal or the CIPC (or wrapped Cauchy) distribution.

Value

A list including:

runtime

The runtime of the ridge regression model.

info

A matrix with two columns containing the lambda, and the penalized log-likelihood.

be

A list with the ridge beta coefficients.

est

A list with the ridge estimated compositions.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Tsagris M., Papastamoulis P. and Kato S. (2025). Directional data analysis using the spherical Cauchy and the Poisson kernel-based distribution. Statistics and Computing, 35:51.

Presnell B., Morrison S. P. and Littell Ramon C. (1998). Projected multivariate linear models for directional data. Journal of the American Statistical Association, 93(443): 1068–1077.

See Also

circridge.cv, circ.reg

Examples

y <- rcirc(100, mu = 3, kappa = 2, rads = TRUE, type = "vm")
x <- matrix( rnorm(100 * 10), ncol = 10)
circ.ridge(y, x, type = "vm")

Circular histogram

Description

Histogram of circular data.

Usage

circplot(u, mu = NULL, rads = TRUE, col = 3, lwd = 2)

Arguments

u

A vector with the circular data expressed in radians, or angles.

mu

The estimated circular mean or a circular location estimate. If this is not available the circular mean is caclulated internally.

rads

If the data are expressed in angles set this to FALSE.

col

The color of the arrow pointing the mean direction.

lwd

The thickness of the above arrow of the circular mean.

Value

A circular histogram.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

See Also

circ.mle

Examples

u <- rnorm(100, rnorm(3, 0.2) )
circplot(u, 3)

Cross-validation for the ridge circular regression

Description

Cross-validation for the ridge circular regression.

Usage

circridge.cv(y, x, rads = TRUE, type = "vm", lambda = NULL, nlambda = 100, tol = 1e-06,
maxiters = 100, folds = NULL, nfolds = 10, seed = NULL)

Arguments

y

A vector with the circular data expressed in radians, or angles.

x

The independent variable(s). Can be Euclidean or categorical (factor variables).

rads

If the data are expressed in angles set this to FALSE.

type

The distribution to fit, "vm" is von Mises distribution, "pn" is projected normal distribution, "cipc" is CIPC (or wrapped Cauchy) distribution.

lambda

A vector with a sequence of the ridge \lambda values. If you do not know it leave it NULL and the function will compute it internally.

nlambda

The number of \lambda values to compute.

tol

The tolerance value to terminate the Fisher scoring algorithm.

maxiters

The maximum number of iterations the Fisher scoring algorithm will perform.

folds

If you have the list with the folds supply it here. You can also leave it NULL and it will create folds.

nfolds

The number of folds to produce.

seed

You can specify your own seed number here or leave it NULL.

Details

K-fold cross-validation for the ridge circular regression models.

Value

A list including:

runtime

The runtime of the ridge regression model.

info

A matrix with two columns containing the lambda and the fit, the \sum_i y_i^T\hat{y}_i/n_k.

lambda_opt

The optimal value of the ridge parameter, \lambda.

be

The coefficients of the ridge circular regression model corresponding to the optimal \lambda value.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Tsagris M., Papastamoulis P. and Kato S. (2025). Directional data analysis using the spherical Cauchy and the Poisson kernel-based distribution. Statistics and Computing, 35:51.

Presnell B., Morrison S. P. and Littell Ramon C. (1998). Projected multivariate linear models for directional data. Journal of the American Statistical Association, 93(443): 1068–1077.

See Also

circ.ridge

Examples

y <- rcirc(100, mu = 3, kappa = 2, rads = TRUE, type = "vm")
x <- matrix( rnorm(100 * 10), ncol = 10)
circ.ridge(y, x, type = "vm")

Column-wise MLE of some circular distributions

Description

Column-wise MLE of some circular distributions.

Usage

colcirc.mle(u, rads = TRUE, type = "vm", tol = 1e-07, maxiters = 100, parallel = FALSE)

Arguments

u

A numerical matrix with the circular data.

rads

If the data are expressed in angles set this to FALSE.

type

The distribution to fit, "vm" is von Mises distribution, "cp" is the circular Purkayastha distribution, "pn" is projected normal distribution, "gcpc" is GCPC distribution and "cipc" is CIPC (or wrapped Cauchy) distribution.

tol

The tolerance level to stop the iterative process of finding the MLEs.

maxiters

The maximum number of iterations to implement. This is for the "spml" only.

parallel

Should the computations take place in parallel? This is for the "spml" only.

Details

The function performs MLE of circular distributions for each column of a matrix.

Value

A matrix with two, columns. The first one contains the parameters of the distribution and the second columns contains the log-likelihood values.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Mardia K. V. and Jupp P. E. (2000). Directional statistics. Chicester: John Wiley & Sons.

Sra S. (2012). A short note on parameter approximation for von Mises-Fisher distributions: and a fast implementation of I_s(x). Computational Statistics, 27(1): 177–190.

Presnell Brett, Morrison Scott P. and Littell Ramon C. (1998). Projected multivariate linear models for directional data. Journal of the American Statistical Association, 93(443): 1068–1077.

Tsagris M. and Alzeley O. (2025). Circular and spherical projected Cauchy distributions: A Novel Framework for Circular and Directional Data Modelling. Australian & New Zealand Journal of Statistics, 67(1): 77–103. https://arxiv.org/pdf/2302.02468.pdf

Alzeley O. and Tsagris M. (2026). On the generalized circular projected Cauchy distribution. Mathematics, 14(11): 1934. https://www.mdpi.com/2227-7390/14/11/1934

Purkayastha S. (1991). A Rotationally Symmetric Directional Distribution: Obtained through Max- imum Likelihood Characterization. The Indian Journal of Statistics, Series A, 53(1): 70–83.

Cabrera J. and Watson G. S. (1990). On a spherical median related distribution. Communications in Statistics-Theory and Methods, 19(6): 1973–1986

See Also

circ.mle

Examples

u <- matrix( circda::rcirc(200 * 10, mu = 3, kappa = 5), ncol = 10 )
res <- colcirc.mle(u)

Density values for circular distributions

Description

Density values for circular distributions.

Usage

dcirc(u, rads = TRUE, mu, kappa, rho, type = "vm", logden = FALSE)

Arguments

u

A vector with the values at which the density is to be computed.

rads

The data are expressed in rads (TRUE) or angles (FALSE)?

mu

A vector with the circular mean (in radians).

kappa

A vector with the concentration parameter.

rho

A vector with the \rho parameter of the GCPC distribution.

type

The distribution to fit, "vm" is von Mises distribution, "cp" is the circular Purkayastha distribution, "pn" is projected normal distribution, "gcpc" is GCPC distribution and "cipc" is CIPC (or wrapped Cauchy) distribution.

logden

If you want the log of the density set this equal to TRUE.

Details

The function computes the density of a given circular distribution at the given points.

Value

A vector with the density values of the circular distribution computed at the given points.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Perdikis T., Alharbi N. and Tsagris M. (2026). Model–based clustering for spherical and hyper–spherical data using elliptically symmetric distributions.

https://arxiv.org/abs/2605.27496

See Also

rcirc

Examples

u <- rcirc(100, mu = 3, kappa = 2, rads = TRUE, type = "vm")
mod <- circ.mle(u, rads = TRUE, type = "vm")
f <- dcirc(u, rads = TRUE, mu = mod$param[1], kappa = mod$param[2], logden = TRUE)
sum(f)

Cross validation for estimating the classification rate

Description

Cross validation for estimating the classification rate.

Usage

circda.cv(u, ina, rads = TRUE, folds = NULL, nfolds = 10, stratified = FALSE,
          type = c("vm", "cp", "pn", "gcpc", "cipc"), seed = NULL)

Arguments

u

A numerical vector with the data (expressed in radians, or angles).

ina

A variable indicating the groupings.

rads

If the data are expressed in angles set this to FALSE.

folds

Do you already have a list with the folds? If not, leave this NULL.

nfolds

How many folds to create?

stratified

Should the folds be created in a stratified way? i.e. keeping the distribution of the groups similar through all folds?

seed

If seed is TRUE, the results will always be the same.

type

The distribution to fit, "vm" is von Mises distribution, "cp" is the circular Purkayastha distribution, "pn" is projected normal distribution, "gcpc" is GCPC distribution and "cipc" is CIPC (or wrapped Cauchy) distribution.

Details

Cross-validation for the estimation of the performance of a classifier.

Value

A vector with 5 numbers, one for each distribution, containing the percentage of correct classification. If you chose less distributions to test, the elements of the non-chosen distributions will contain NAs.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Tsagris M., Papastamoulis P. and Kato S. (2025). Directional data analysis using the spherical Cauchy and the Poisson kernel-based distribution. Statistics and Computing, 35:51.

Tsagris M. and Alenazi A. (2019). Comparison of discriminant analysis methods on the sphere. Communications in Statistics: Case Studies, Data Analysis and Applications, 5(4), 467–491.

Mardia K. V. and Jupp, P. E. (2000). Directional statistics. Chicester: John Wiley & Sons.

Morris J. E. and Laycock P. J. (1974). Discriminant analysis of directional data. Biometrika, 61(2): 335–341.

See Also

circ.da

Examples

u1 <- rnorm(50, 3, 0.5)
u2 <- rnorm(50, 3, 0.5)
u <- c(u1, u2)
ina <- rep(1:2, each = 50)
circda.cv(u, ina)

Density values for mixtures of circular distributions

Description

Density values for mixtures of circular distributions.

Usage

dmixcirc(u, rads = TRUE, probs, mu, kappa, rho, type = "vm", logden = FALSE)

Arguments

u

A vector with the values at which the density is to be computed.

rads

The data that to be generated will be expressed in rads (TRUE) or angles (FALSE)?

probs

A vector with the mixing probability of each group.

mu

A vector with the circular mean (in radians) of each group.

kappa

A vector with the concentration parameter of each group.

rho

A vector with the \rho parameter of the GCPC distribution.

type

The distribution to fit, "vm" is von Mises mixtures, "cp" is circular Purkayastha mixtures, "pn" is projected normal mixtures, "gcpc" is GCPC mixtures and "cipc" is CIPC (or wrapped Cauchy) mixtures.

logden

If you want the log of the density set this equal to TRUE.

Details

The function computes the density of a mixture of circular distributions at the given points.

Value

A vector with the density values of a mixture of circular distributions computed at the given points.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Perdikis T., Alharbi N. and Tsagris M. (2026). Model–based clustering for spherical and hyper–spherical data using elliptically symmetric distributions.

https://arxiv.org/abs/2605.27496

See Also

mixcirc.mle

Examples

u1 <- rnorm(100)
u2 <- rnorm(100, 1, 0.2)
u <- c(u1, u2)
mod <- mixcirc.mle(u, type = "vm")
f <- dmixcirc(u, rads = TRUE, probs = mod$param[, 1], mu = mod$param[, 2], kappa = mod$param[, 3])
hist(f)

Circular histogram

Description

Histogram of circular data.

Usage

mix.circplot(u, ina, mu, rads = TRUE, lwd = 2)

Arguments

u

A vector with the circular data expressed in radians, or angles.

ina

A numeric vector indicating the groups of the data.

mu

The estimated circular mean or a circular location estimate. If this is not available the circular mean is caclulated internally.

rads

If the data are expressed in angles set this to FALSE.

lwd

The thickness of the above arrow of the circular means.

Value

A circular histogram ith different colours for each group and each circular mean.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

See Also

circplot

Examples

u <- c( rnorm(50, 1, 0.3 ), rnorm(50, 2, 0.5 ) )
ina <- rep(1:2, each = 50)
mix.circplot(u, ina = ina, mu = c(1, 3) )

Fitting mixtures of circular distributions

Description

Fitting mixtures of circular distributions.

Usage

mixcirc.mle(u, type ="vm", rads = TRUE, g = 2, tol = 1e-4, maxiters = 500)

Arguments

u

A vector with the circular data expressed in radians, or angles.

type

The distribution to fit, "vm" is von Mises mixtures, "cp" is circular Purkayastha mixtures, "pn" is projected normal mixtures, "gcpc" is GCPC mixtures and "cipc" is CIPC (or wrapped Caucy) mixtures.

rads

If the data are expressed in angles set this to FALSE.

g

The number of groups to fit. It must be greater than or equal to 2.

tol

The tolerance value to terminate the EM algorithm.

maxiters

The maximum number of iterations the EM algorithm will perform.

Details

The functions performs model-based clustering using mixtures of circular distributions. The initial step of the algorithm is based on the k-means algorithm.

Value

A list including:

param

A matrix with the mixing probability of each group and the estimated parameters of the chosen distribution.

loglik

The value of the maximised log-likelihood of the chosen distribution.

probs

The estimated probabilities of each observation to belong to each cluster.

pred

The predicted group of each observation.

iter

The number of iteration required by the EM algorithm.

runtime

The run time of the algorithm. A numeric vector. The first element is the user time, the second element is the system time and the third element is the elapsed time.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Tsagris M., Papastamoulis P. and Kato S. (2025). Directional data analysis using the spherical Cauchy and the Poisson kernel-based distribution. Statistics and Computing, 35:51.

Perdikis T., Alharbi N. and Tsagris M. (2026). Model–based clustering for spherical and hyper–spherical data using elliptically symmetric distributions.

https://arxiv.org/abs/2605.27496

See Also

bic.mixcirc

Examples

u1 <- rnorm(100)
u2 <- rnorm(100, 1, 0.5)
u <- c(u1, u2)
mixcirc.mle(u, type = "vm")

Random value generation from circular distributions

Description

Random value generation from circular distributions.

Usage

rcirc(n, rads = TRUE, mu, kappa, rho, type = "vm")

Arguments

n

The sample size.

rads

The data that to be generated will be expressed in rads (TRUE) or angles (FALSE)?

mu

A vector with the circular mean or location parameter (in radians).

kappa

A vector with the concentration parameter.

rho

A vector with the \rho parameter of the GCPC distribution.

type

The distribution to fit, "vm" is von Mises distribution, "cp" is the circular Purkayastha distribution, "pn" is projected normal distribution, "gcpc" is GCPC distribution and "cipc" is CIPC (or wrapped Cauchy) distribution.

Details

The function simulates random values simulation from a given circular distribution.

Value

A vector with the simulated data.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Perdikis T., Alharbi N. and Tsagris M. (2026). Model–based clustering for spherical and hyper–spherical data using elliptically symmetric distributions.

https://arxiv.org/abs/2605.27496

See Also

circ.mle, rmixcirc

Examples

u <- rcirc(100, mu = 3, kappa = 2, rads = TRUE, type = "vm")
circ.mle(u, rads = TRUE, type = "vm")

Random value generation from mixtures of circular distributions

Description

Random value generation from mixtures of circular distributions.

Usage

rmixcirc(n, rads = TRUE, probs, mu, kappa, rho, type = "vm")

Arguments

n

The sample size.

rads

The data that to be generated will be expressed in rads (TRUE) or angles (FALSE)?

probs

A vector with the mixing probability of each group.

mu

A vector with the circular mean or location parameter (in radians) of each group.

kappa

A vector with the concentration parameter of each group.

rho

A vector with the \rho parameter of the GCPC distribution.

type

The distribution to fit, "vm" is von Mises mixtures, "cp" is circular Purkayastha mixtures, "pn" is projected normal mixtures, "gcpc" is GCPC mixtures and "cipc" is CIPC (or wrapped Cauchy) mixtures.

Details

The function simulates random values simulation from a given mixture of circular distributions.

Value

A list including:

id

An indicator of the group of each simulated vector.

u

A vector with the simulated data.

Author(s)

Michail Tsagris.

R implementation and documentation: Michail Tsagris mtsagris@uoc.gr.

References

Perdikis T., Alharbi N. and Tsagris M. (2026). Model–based clustering for spherical and hyper–spherical data using elliptically symmetric distributions.

https://arxiv.org/abs/2605.27496

See Also

mixcirc.mle

Examples

u1 <- rnorm(100)
u2 <- rnorm(100, 1, 0.5)
u <- c(u1, u2)
mod <- mixcirc.mle(u, type = "vm")
y <- rmixcirc(500, rads = TRUE, probs = mod$param[, 1], mu = mod$param[, 2], kappa = mod$param[, 3])
hist(y$u)