sparsify: Generate a sparse version of functional data objects

Description Usage Arguments Details Value Warning References See Also Examples

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

1
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

funData, multiFunData, simFunData, simMultiFunData, addError.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 documentation built on Oct. 17, 2021, 5:06 p.m.