r - 在HTS R中创建分层数据结构,节点

标签 r time-series hierarchy hierarchical-data forecasting

我正在尝试使用R中的HTS包来创建节点结构。有关节点的文档稀疏,因此尝试对节点结构进行适当的编码很困难,并且要添加一个添加的层,我正在尝试创建两个层次结构,在这些层次结构中我们拥有以下:

(等级1-地理位置:示例是美国特拉华州及其县)

=> 10000
    => 10001 
    => 10003          
    => 10005
    => 10999

(层次结构2-行业:已简化)
=> 10
     => 11
     => 12 
     => 21 
     => 22 
     => 31
     ...
     => 99

编辑2-更正的层次结构和进一步的说明

因此,每个时间序列将具有地理代码和行业代码。地理代码遵循一个层次结构,行业编码遵循另一个层次结构(如上所示)。

我试图弄清楚如何指定“nodes”参数来表示两个层次结构的关系(文档示例仅显示一个层次结构)。

当两个层次结构交互时,我们获得了附加级别。让我们简化一下,假设只有两个行业,分别是11和12。由(10001,11)和(10001,12)标识的时间序列必须相加为(10001,10);而且(10001,11)...(10999,11)必须加起来等于(10000,11),依此类推。同样,这些是简化的层次结构-在实际数据中有更多的层次。

问题是,对于两个层次结构,“nodes”参数看起来如何?希望这可以帮助。

最佳答案

您的表示法(可能不是您的选择)使这一点非常困惑。似乎相同的数字序列可以指县或行业。

但是,基本思想很明确:您有两个层次结构,并且希望将两种类型的聚合都考虑在内。这是一个使用我自己的符号使它更清楚的示例。

假设有两个州分别有四个和五个县,两个行业分别有三个和两个子行业。因此,有9x5系列在最分割的级别(子行业x县组合)。我将州称为A和B,将州称为A1,A2,A3,A4和B1,B2,B3,B4,B5。我将分别用子行业Xa,Xb,Xc和Ya,Yb来称呼行业X和Y。假设您在矩阵y中拥有最底层的系列(分类最多的级别),每个系列一列,并且按以下顺序排列各列:

 County A1, industry Xa
 County A1, industry Xb
 County A1, industry Xc
 County A1, industry Ya
 County A1, industry Yb
 County A2, industry Xa
 County A2, industry Xb
 County A2, industry Xc
 County A2, industry Ya
 County A2, industry Yb
...
 County B5, industry Xa
 County B5, industry Xb
 County B5, industry Xc
 County B5, industry Ya
 County B5, industry Yb

为了使我们有一个可重现的示例,我将随机创建y:
y <- ts(matrix(rnorm(900),ncol=45,nrow=20))

然后,我们可以为该矩阵的列构造标签,如下所示:
blnames <- paste(c(rep("A",20),rep("B",25)), # State
             rep(1:9,each=5), # County
             rep(c("X","X","X","Y","Y"),9), # Industry
             rep(c("a","b","c","a","b"),9), # Sub-industry
             sep="")
colnames(y) <- blnames

例如,矩阵中的第一个系列的名称为"A1Xa",意思是州A,县1,行业X,子行业a。

然后,我们可以使用以下命令轻松创建分组的时间序列对象
gy <- gts(y, characters=list(c(1,1),c(1,1)))
characters参数指示存在两个层次结构(列表中的两个元素),第一个层次结构由前两个字符指定,第二个层次结构由后两个字符指定。
gts软件包v4.3中的hts帮助文件中给出了一个稍微复杂但类似的示例(每个标签使用多个字符)。

可以在不使用列标签的情况下指定分组结构。然后,您必须指定groups矩阵,该矩阵定义了感兴趣的聚合。在上面的示例中,组矩阵由下式给出:
gps <- rbind(
  c(rep(1,20),rep(2,25)), # State
  rep(1:9,each=5), # County
  rep(c(1,1,1,2,2),9), # Industry
  rep(1:5, 9), # Sub-industry
  c(rep(c(1,1,1,2,2),4),rep(c(3,3,3,4,4),5)), # State x industry
  c(rep(1:5, 4),rep(6:10, 5)), # State x Sub-industry
  rep(1:18, rep(c(3,2),9)) # County x industry
)

然后
gy <- gts(y, groups=gps)

将列名方法与characters参数一起使用要容易得多,因为构造所有这些交叉乘积的行可能会造成混淆。

关于r - 在HTS R中创建分层数据结构,节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191537/

相关文章:

r - 连接没有重复的数据框 r

r - 使用 R 中的 data.table 添加观察计数到聚合

r - 在基本 R 代码(无 GGPlot)中添加趋势线,用于指数和 2 因子多项式曲线的多重绘图

javascript - 使用 d3.xml 而不是 d3.json 绘制可折叠缩进树

rvest:根据内部类文本过滤节点并计算内部 svg 元素的数量

r - data.table 与另一列不同的一组列

python - 将 pandas 时间序列重新采样到预定义的网格

python - 使用日期时间索引在 Python 中进行时间序列预测

ruby-on-rails - 我应该如何在我的 ApplicationController 中使用 Draper?

Sitecore 内容树架构