mrct.sparse {mrct} | R Documentation |
Sparse minimum regularized covariance trace estimator
Description
Robust outlier detection for sparse functional data as a generalization of the minimum
regularized
covariance
trace
(MRCT) estimator (Oguamalam et al. 2023). At first the observations are smoothed
by a B-spline basis and afterwards the MRCT algorithm is performed with the matrix of basis coefficients.
Usage
mrct.sparse(
data,
nbasis = dim(data)[2],
new.p = dim(data)[2],
h = 0.75,
alpha = 0.01,
initializations = 5,
seed = 123,
scaling.iterations = 10,
scaling.tolerance = 10^(-4),
criterion = "sum",
sum.percentage = 0.75
)
Arguments
data |
Numeric matrix of a functional data set for which the esimator has to be calculated. Each row contains an observation. They are assumed to be observed on the same (probably sparse) regular grid. The number of grid points must be at least |
nbasis |
Integer. Number of B-spline basis functions for smoothing. The basis will be of order |
new.p |
Integer. Length of the grid of the smoothed curves. The resulting grid will be an equidistant partition of |
h |
Numeric value between |
alpha |
Numeric (default is |
initializations |
Integer (default is |
seed |
Integer (default is |
scaling.iterations |
Integer (default is |
scaling.tolerance |
Numeric (default is |
criterion |
Character. Criterion based on which the optimal subset is chosen among the final subsets. Possible options are: " |
sum.percentage |
Numeric value between |
Value
A list with two entries
mrct.output |
List. The same output as the function |
data.smooth |
Numeric matrix. Collection of the smoothed curves of |
References
Oguamalam J, Radojičić U, Filzmoser P (2023). “Minimum regularized covariance trace estimator and outlier detection for functional data.” https://doi.org/10.48550/arXiv.2307.13509..
Examples
# Fix seed for reproducibility
set.seed(123)
# Sample outlying indices
cont.ind <- sample(1:50,size=10)
# Generate 50 sparse curves on the interval [0,1] at 10 timepoints with 20% outliers
y <- mrct.rgauss(x.grid=seq(0,1,length.out=10), N=50, model=1,
outliers=cont.ind, method="linear")
# Visualize curves (regular curves grey, outliers black)
colormap <- rep("grey",50); colormap[cont.ind] <- "black"
matplot(x = seq(0,1,length.out=10), y = t(y), type="l", lty="solid",
col=colormap, xlab="t",ylab="")
# Run sparse MRCT
sparse.mrct.y <- mrct.sparse(data = y, nbasis = 10, h = 0.75, new.p = 50,
alpha = 0.1, initializations = 10, criterion = "sum" )
# Visualize smoothed functions
matplot(x=seq(0,1,length.out=50), y=t(sparse.mrct.y$data.smooth),
type="l", lty="solid", col=colormap, xlab="t", ylab="")
# Visualize alpha-Mahalanobis distance with cutoff (horizontal black line)
# Colors correspond to simulated outliers, shapes to estimated (sparse MRCT) ones
# (circle regular and triangle irregular curves)
shapemap <- rep(1,50); shapemap[sparse.mrct.y$mrct.output$theoretical.w] <- 2
plot(x = 1:50, y = sparse.mrct.y$mrct.output$aMHD.w, col=colormap, pch = shapemap,
xlab = "Index", ylab = expression(alpha*"-MHD"))
abline(h = sparse.mrct.y$mrct.output$quant.w)
# If you dont have any information on possible outliers,
# alternatively you could use the S3 method plot.mrctsparse()
mrct.sparse.plot(mrct.sparse.object = sparse.mrct.y)