Generate a sparse version of functional data objects
Generate a sparse version of functional data objects
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.
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.
Returns
An object of the same class as funDataObject, which is a sparse version of the original data.
Details
The technique for artificially sparsifying the data is as described in Yao et al. (2005): For each element xi(j) of an observed (multivariate) functional data object xi, a random number c("Ri(j)\n", "incodeminObs,ldots,codemaxObs") of observation points is generated. The points are sampled uniformly from the full grid tj,1,…,tj,SjinTj, resulting in observations
This function is currently implemented for 1D data only.
Examples
oldPar <- par(no.readonly =TRUE)par(mfrow = c(1,1))set.seed(1)# univariate functional datafull <- 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))# Multivariatefull <- 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)
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.