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

求助:使用timetk包step_fourier函数时,time_series_split拆分后出现NaN

解决timetk::step_fourier在拆分面板时间序列后生成NaN的问题

问题原因

你的数据属于面板时间序列(每个symbol对应一条独立的时间序列),但未通过分组限制step_fourier的计算范围,直接对整个训练集执行傅里叶特征提取时,函数无法正确处理多组时间序列混合的情况,进而生成NaN值;完整数据集未触发问题仅为巧合,并非正确的处理方式。

解决方案

在Recipe中加入step_group_by(symbol),让step_fourier在每个股票分组内独立计算傅里叶特征,后续可根据需求用step_ungroup()取消分组。

修改后的代码

library(recipes)
library(tidyverse)
library(tidyquant)
library(timetk)

dados <- FANG %>% select(symbol, date, volume)

splits <- dados %>% 
  time_series_split(
    assess     = "1 months", 
    cumulative = TRUE
  )

# 按分组处理傅里叶特征的Recipe
rec_obj <- recipe(volume ~ ., data = training(splits)) %>% 
  step_group_by(symbol) %>%  # 限制后续步骤在每个symbol分组内执行
  step_fourier(date, period = 365, K = 1) %>% 
  step_ungroup()  # 取消分组(可选,适配多数建模流程)

# 验证输出
rec_obj %>% prep() %>% juice() %>% glimpse()

说明

step_group_by()会将后续的特征工程步骤(此处为傅里叶特征计算)限定在每个symbol的子时间序列中,确保每个股票的时间周期特征是基于自身的时间轴计算的,彻底解决面板数据混合计算导致的NaN问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:20:23