我正在尝试在时间序列上使用FPCA,并且我知道在使用FPCA之前应该先进行一些平滑处理。但是,我不知道哪种平滑方法是好的? 任何资源都非常感激!
谢谢!
答案 0 :(得分:0)
平滑处理将取决于您拥有的数据。考虑到FDA的参数化方法(Ramsay和Silverman,2005),您可以选择基础函数:通常,对于定期数据,通常使用“傅里叶” 基础,而“ bspline” 用于非经常性数据。 B样条具有良好的本地行为。
您可以在“使用R和MATLAB进行功能数据分析”(Ramsay等人,2009年)中找到有关实现不同基础函数的更多信息
没有特定的规则来选择基础的维度,因为它取决于几个因素。我强烈建议在所有可能的维度上研究该过程的最小平方误差,然后根据方便程度进行选择。一些软件包已经实现了计算它的功能。例如fda.usc::min.basis()
-最佳个基础函数的最小数量,以及交叉验证方法,例如fda.usc::CV.S()
。
P样条提供了最低的近似误差,其计算实现更加容易,并且对结的选择非常不敏感。您可以尝试平滑您的功能对象,例如:
library(fda)
fdobj <- create.bspline.basis(df,nbasis=k,norder=4)
smooth.fdPar(fdobj, Lfdobj=NULL, lambda=0,
estimate=TRUE, penmat=NULL)