R语言decompose分解周度时间序列报周期不足错误求助
周度时间序列分解报错问题
对周度数据开展时间序列分解操作时,无论采用何种调用方式,均触发报错:time series has no or less than 2 periods。已查阅现有同类问题的公开解决方案,均无法解决当前问题。以下是包含显式趋势项、周期项、噪声项的可复现代码示例,用于定位操作中的错误。
测试数据构造代码
require(dplyr) degrees_to_radians = \(x) pi * x / 180 d = tibble(date = Sys.Date() - 13013:0) |> filter(as.numeric(date) %% 7 == 0) |> mutate(trend = EuStockMarkets[1:n(),1], i = as.numeric(date - lubridate::floor_date(date, 'year')), cyc = 100 * cos(degrees_to_radians(i)), noise = 50 * rnorm(n()), val = trend + cyc + noise) |> select(date, val) plot(d, type='l')
生成的原始序列可视化:
报错复现场景
- 直接将data.frame转为ts对象调用分解函数
t = ts(d) decompose(t) #> Error in decompose(t): time series has no or less than 2 periods
- 显式指定周度频率(365/7)创建ts对象
t = as.ts(d$val, start = min(d$date), end = max(d$date), frequency = 365/7) decompose(t) #> Error in decompose(t): time series has no or less than 2 periods
- 先转为xts对象再转ts调用,截取近5年数据(260周)测试仍报错
x = xts::xts(d[,-1], order.by = d$date, dateFormat = "Date", frequency = 365/7) plot(x)

decompose(as.ts(x)) #> Error in decompose(as.ts(x)): time series has no or less than 2 periods decompose(as.ts(tail(x, 260))) #> Error in decompose(as.ts(tail(x, 260))): time series has no or less than 2 periods
以上可复现示例由reprex包(v2.0.1)于2022-06-16生成
内容的提问来源于stack exchange,提问作者geotheory
相关产品推荐
相关产品推荐

