rotasym (version 1.0-5)

estimators: Estimators for the axis of rotational symmetry \(\boldsymbol\theta\)

Description

Estimation of the axis of rotational symmetry \(\boldsymbol{\theta}\) of a rotational symmetric unit-norm random vector \(\mathbf{X}\) in \(S^{p-1}:=\{\mathbf{x}\in R^p:||\mathbf{x}||=1\}\), \(p \ge 2\), from a hyperspherical sample \(\mathbf{X}_1,\ldots,\mathbf{X}_n\in S^{p-1}\).

Usage

spherical_mean(data)

spherical_loc_PCA(data)

Arguments

data

hyperspherical data, a matrix of size c(n, p) with unit norm rows. Normalized internally if any row does not have unit norm (with a warning message). NAs are ignored.

Value

A vector of length p with an estimate for \(\boldsymbol{\theta}\).

Details

The spherical_mean estimator computes the sample mean of \(\mathbf{X}_1,\ldots,\mathbf{X}_n\) and normalizes it by its norm (if the norm is different from zero). It estimates consistently \(\boldsymbol{\theta}\) for rotational symmetric models based on angular functions \(g\) that are monotone increasing.

The estimator in spherical_loc_PCA is based on the fact that, under rotational symmetry, the expectation of \(\mathbf{X}\mathbf{X}'\) is \(a\boldsymbol{\theta}\boldsymbol{\theta}' + b(\mathbf{I}_p - \boldsymbol{\theta}\boldsymbol{\theta}')\) for certain constants \(a,b \ge 0\). Therefore, \(\boldsymbol{\theta}\) is the eigenvector with unique multiplicity of the expectation of \(\mathbf{X}\mathbf{X}'\). Its use is recommended if the rotationally symmetric data is not unimodal.

References

Garc<U+00ED>a-Portugu<U+00E9>s, E., Paindaveine, D., Verdebout, T. (2019) On optimal tests for rotational symmetry against new classes of hyperspherical distributions. arXiv:1706.05030. https://arxiv.org/abs/1706.05030

Examples

Run this code
# NOT RUN {
# Sample from a vMF
n <- 200
p <- 10
theta <- c(1, rep(0, p - 1))
set.seed(123456789)
data <- r_vMF(n = n, mu = theta, kappa = 3)
theta_mean <- spherical_mean(data)
theta_PCA <- spherical_loc_PCA(data)
sqrt(sum((theta - theta_mean)^2)) # More efficient
sqrt(sum((theta - theta_PCA)^2))

# Sample from a mixture of antipodal vMF's
n <- 200
p <- 10
theta <- c(1, rep(0, p - 1))
set.seed(123456789)
data <- rbind(r_vMF(n = n, mu = theta, kappa = 3),
              r_vMF(n = n, mu = -theta, kappa = 3))
theta_mean <- spherical_mean(data)
theta_PCA <- spherical_loc_PCA(data)
sqrt(sum((theta - theta_mean)^2))
sqrt(sum((theta - theta_PCA)^2)) # Better suited in this case
# }

Run the code above in your browser using DataLab