创建层次数据结构,htsr中的节点



我正在尝试使用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"参数看起来是怎样的?

您的符号(可能不是您选择的)使这非常令人困惑。似乎同一个数字序列既可以指一个国家,也可以指一个行业。

然而,基本思想是足够清楚的:您有两个层次结构,并且您希望考虑到这两种类型的聚合。下面是一个用我自己的符号来使它更清晰的例子。

假设有两个州分别有4个和5个县,两个产业分别有3个和2个子产业。因此,在最细分的水平上有9x5个系列(子行业x县组合)。我称这些州为A和B,称这些县为A1,A2,A3,A4和B1,B2,B3,B4,B5。我将行业X和Y分别称为子行业Xa,Xb,Xc和Ya,Yb。假设您在矩阵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参数表示有两个层次结构(列表中的两个元素),第一个层次结构由前两个字符指定,第二个层次结构由后两个字符指定。

hts包的v4.3版本中,gts的帮助文件中给出了一个稍微复杂但类似的示例(每个标签占用多个字符)。

可以不使用列标签指定分组结构。然后必须指定组矩阵,它定义了感兴趣的聚合。在上面的例子中,群矩阵由

给出
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参数,使用列名方法要容易得多,因为构造所有这些交叉积行可能会令人困惑。

最新更新