nu_POP_estimator {fitHeavyTail} | R Documentation |
Estimate the degrees of freedom of a heavy-tailed t distribution based on the POP estimator
Description
This function estimates the degrees of freedom of a heavy-tailed t
distribution based on
the POP estimator from paper [Pascal-Ollila-Palomar, EUSIPCO2021, Alg. 1].
Traditional nonparametric methods or likelihood methods provide erratic estimations of
the degrees of freedom unless the number of observations is very large.
The POP estimator provides a stable estimator based on random matrix theory.
A number of different versions are provided, but the default POP method will most likely
be the desired choice.
Usage
nu_POP_estimator(
Xc = NULL,
N = NULL,
T = NULL,
Sigma = NULL,
nu = NULL,
r2 = NULL,
method = c("POP", "POP-approx-1", "POP-approx-2", "POP-approx-3", "POP-approx-4",
"POP-exact", "POP-sigma-corrected", "POP-sigma-corrected-true"),
alpha = 1
)
Arguments
Xc |
Centered data matrix (with zero mean) containing the multivariate time series (each column is one time series). |
N |
Number of variables (columns of data matrix) in the multivariate time series. |
T |
Number of observations (rows of data matrix) in the multivariate time series. |
Sigma |
Current estimate of the scatter matrix. |
nu |
Current estimate of the degrees of freedom of the |
r2 |
Vector containing the values of |
method |
String indicating the version of the POP estimator (default is just |
alpha |
Value for the acceleration technique (cf. |
Value
Estimated value of the degrees of freedom nu
of a heavy-tailed t
distribution.
Author(s)
Frédéric Pascal, Esa Ollila, and Daniel P. Palomar
References
Frédéric Pascal, Esa Ollila, and Daniel P. Palomar, "Improved estimation of the degree of freedom parameter of multivariate t-distribution," in Proc. European Signal Processing Conference (EUSIPCO), Dublin, Ireland, Aug. 23-27, 2021. <https://doi.org/10.23919/EUSIPCO54536.2021.9616162>
Examples
library(mvtnorm) # to generate heavy-tailed data
library(fitHeavyTail)
# parameters
N <- 5
T <- 100
nu_true <- 4 # degrees of freedom
mu_true <- rep(0, N) # mean vector
Sigma_true <- diag(N) # scatter matrix
# generate data
X <- rmvt(n = T, sigma = Sigma_true, delta = mu_true, df = nu_true) # generate Student's t data
mu <- colMeans(X)
Xc <- X - matrix(mu, T, N, byrow = TRUE) # center data
# usage #1
nu_POP_estimator(Xc = Xc, nu = 10, Sigma = Sigma_true)
# usage #2
r2 <- rowSums(Xc * (Xc %*% solve(Sigma_true)))
nu_POP_estimator(r2 = r2, nu = 10, N = N)
# usage #3
nu_POP_estimator(r2 = r2, nu = 10, N = N, method = "POP-approx-1")