Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

sparsify

Generate a sparse version of functional data objects


Description

This function generates an artificially sparsified version of a functional data object of class funData (univariate) or multiFunData (multivariate). The minimal and maximal number of observation points for all observations can be supplied by the user.

Usage

sparsify(funDataObject, minObs, maxObs)

Arguments

funDataObject

A functional data object of class funData or multiFunData.

minObs, maxObs

The minimal/maximal number of observation points. Must be a scalar for univariate functional data (funData class) or a vector of the same length as funDataObject for multivariate functional data (multiFunData class), giving the minimal/maximal number of observations for each element. See Details.

Details

The technique for artificially sparsifying the data is as described in Yao et al. (2005): For each element x_i^(j) of an observed (multivariate) functional data object x_i, a random number R_i^(j) in {\code{minObs}, …, \code{maxObs}} of observation points is generated. The points are sampled uniformly from the full grid {t_{j,1} , … , t_{j, S_j}} in T_j, resulting in observations

x_{i,r}^(j) = x_i^(j)(t_{j,r}), r = 1 ,…,R_i^(j), j = 1, …, p.

Value

An object of the same class as funDataObject, which is a sparse version of the original data.

Warning

This function is currently implemented for 1D data only.

References

Yao, F., H.-G. Mueller and J.-L. Wang (2005): Functional Data Analysis for Sparse Longitudinal Data. Journal of the American Statistical Association, 100 (470), 577–590.

See Also

Examples

oldPar <- par(no.readonly = TRUE)
par(mfrow = c(1,1))
set.seed(1)

# univariate functional data
full <- simFunData(argvals = seq(0,1, 0.01), M = 10, eFunType = "Fourier",
                   eValType = "linear", N = 3)$simData
sparse <- sparsify(full, minObs = 4, maxObs = 10)

plot(full, main = "Sparsify")
plot(sparse, type = "p", pch = 20, add = TRUE)
legend("topright", c("Full", "Sparse"), lty = c(1, NA), pch = c(NA, 20))

# Multivariate
full <- simMultiFunData(type = "split", argvals = list(seq(0,1, 0.01), seq(-.5,.5, 0.02)),
                        M = 10, eFunType = "Fourier", eValType = "linear", N = 3)$simData
sparse <- sparsify(full, minObs = c(4, 30), maxObs = c(10, 40))

par(mfrow = c(1,2))
plot(full[[1]], main = "Sparsify (multivariate)", sub = "minObs = 4, maxObs = 10")
plot(sparse[[1]], type = "p", pch = 20, add = TRUE)

plot(full[[2]], main = "Sparsify (multivariate)", sub = "minObs = 30, maxObs = 40")
plot(sparse[[2]], type = "p", pch = 20, add = TRUE)
legend("bottomright", c("Full", "Sparse"), lty = c(1, NA), pch = c(NA, 20))

par(oldPar)

funData

An S4 Class for Functional Data

v1.3-5
GPL-2
Authors
Clara Happ-Kurz [aut, cre]
Initial release
2020-04-23

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.