refunders / refund

Regression with functional data
39 stars 23 forks source link

Extend FACE method to irregularly observed data #99

Open mynanshan opened 2 years ago

mynanshan commented 2 years ago

https://github.com/refunders/refund/blob/eb6af5c54779710b75cfff36acae3eec20189a2d/R/fpca.face.R#L159

All FPCA functions in the package refund provide two arguments for data input, Y for a observation matrix observed on a common grid and ydata for irregularly observed data. However, the ydata option is not always available, for example, when using fpca.face. I guess the reason is that the method proposed by Xiao 2016 is only developed for regular data.

According to Xiao 2013 and a more recent paper, Xiao 2020, the bivariate smoothing can also be applied to irregularly observed data. Therefore, I wonder if the fpca.face method can be extended accordingly.

fabian-s commented 2 years ago

Hi @mynanshan -- they put this stuff in their own separate package, you can find a FACE implementation for sparse/irregular data here: https://cran.r-project.org/web/packages/face/index.html

fabian-s commented 2 years ago

@jeff-goldsmith @julia-wrobel: are we ever going to re-implement this or import and re-export the face-package? If not, feel free to close this issue.

(Also: I think it might be worthwhile to do a review/benchmarking paper on methods for functional covariance operator estimation sometime, there are SO MANY and there are lots of interesting complications/nuances......)

mynanshan commented 2 years ago

Hi @mynanshan -- they put this stuff in their own separate package, you can find a FACE implementation for sparse/irregular data here: https://cran.r-project.org/web/packages/face/index.html

Thanks for the reference!

jeff-goldsmith commented 2 years ago

I feel a bit strange having a somewhat-out-of-date and unsupported function in refund. I suppose we could remove fpca.face from refund (in a staggered way, with a message and pointer to the face package).

I'd be okay with importing and exporting the face package as part of refund -- already have oodles of dependencies and this seems like a function folks use -- but don't know if that's necessary.