You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用Fourier Basis平滑函数型数据的正确实现方法

你当前的操作存在参数调用错误,无法完成函数型数据的傅里叶基平滑,具体问题和调整方案如下:

存在的问题

  • fda包的smooth.basis是基平滑的核心函数,你调用时仅传入了创建好的傅里叶基对象,缺少两个必填参数:观测点的自变量取值网格、待平滑的原始离散观测数据,语法本身不成立,无法得到正确的平滑结果。
  • 你用fdata()转换后的对象如果要对接fda包的平滑函数,需要额外提取对应属性,直接用原始观测矩阵对接逻辑更清晰。

调整后的实现代码

# 加载所需包
library(fda)
library(fad.usc)

# 1. 定义观测点的自变量网格,这里假设观测在[0,1]区间均匀采样,可根据你的实际采样范围修改
arg_vals <- seq(0, 1, length.out = ncol(func.obs))

# 2. 创建傅里叶基,范围和观测网格范围保持一致,nbasis参数可根据平滑需求调整
fourier_basis <- create.fourier.basis(rangeval = range(arg_vals), nbasis = 50)

# 3. 执行基平滑:注意y参数要求每列对应一条函数观测,因此对行存储的func.obs做转置
smooth_res <- smooth.basis(argvals = arg_vals, y = t(func.obs), basisobj = fourier_basis)

# 4. 提取平滑后的函数型数据(fd对象)
smooth_fd <- smooth_res$fd

# 可选:如果需要用fad.usc包的函数计算不相似矩阵,转回fdata对象即可
smooth_fdata <- fdata(t(smooth_fd$coefs), argvals = arg_vals)

补充说明

  • 你可以运行plot(smooth_fd[1])绘制第一条平滑后的函数曲线,和原始观测对比确认平滑效果是否符合预期。
  • 如果基函数数量太多导致过拟合,可适当调低nbasis参数,也可以在smooth.basis中加入lambda参数实现正则化平滑,控制拟合的光滑程度。

内容的提问来源于stack exchange,提问作者Ishman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:57:01