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

R语言HTS分层时间序列建模如何正确指定层级与节点数

R语言hts包分层时间序列层级配置方案

场景需求

  • 已生成月度时间序列对象,转换代码如下:
    myts <- ts(df,start = c(2014,1),end = c(2022,5),frequency = 12)
  • 目标层级结构:顶层为exi、new两列的聚合总量,第一层为exi、new两个独立序列
  • 原有错误写法:
# 该写法不符合characters参数规则,无法生成正确层级
y <- hts(myts, characters = c(3,0) )

正确实现方式

方法1:通过nodes参数配置(推荐,无需修改原始数据)

nodes参数直接按从顶层到下层的顺序,指定每一层的节点数量即可。你的结构仅包含1层下层节点,节点数为2,直接运行以下代码:

library(hts)
# list(2)代表顶层下共挂载2个一级节点,自动匹配myts的两列顺序
y <- hts(myts, nodes = list(2))

运行后可通过aggts(y)查看各层级聚合值,第一列为总量,后两列依次为原exi、new序列,符合聚合要求。

方法2:通过characters参数配置(需调整列名)

characters参数仅适用于列名自带层级编码的场景,规则是按顺序传入每一层编码占用的字符长度。你当前的列名exi、new无层级前缀,无法直接使用该参数,如需使用需先改造列名:

# 给两个列名加相同的1位顶层编码(例如"T"),列名变为"Texi"、"Tnew"
colnames(myts) <- c("Texi", "Tnew")
# c(1,3)代表第1层(顶层)编码占1个字符,第2层(原exi/new层)编码占3个字符
y <- hts(myts, characters = c(1,3))

参数规则说明

  • 之前写的c(3,0)不符合规则:参数值不能为0,0代表不存在对应层级,无法识别出顶层聚合结构
  • 简单两层结构优先用nodes参数,逻辑更直观,不需要调整原始列名
  • 3层及以上、且列名自带固定长度层级编码的场景,再考虑用characters参数简化配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:09:16