sparsify {funData} | R Documentation |
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
|
minObs , maxObs |
The minimal/maximal number of observation points. Must be a scalar for
univariate functional data ( |
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 \{\mathrm{minObs}, \ldots, \mathrm{maxObs}\}
of observation points is generated. The points
are sampled uniformly from the full grid \{t_{j,1} , \ldots , t_{j,
S_j}\} \subset \mathcal{T}_j
, resulting in
observations
x_{i,r}^{(j)} = x_i^{(j)}(t_{j,r}), \quad r = 1
,\ldots,R_i^{(j)},~ j = 1, \ldots, 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
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)