Создание иерархической структуры данных, узлов в HTS R

Я пытаюсь создать структуру узлов, используя пакет HTS в R. документация, касающаяся узлов, разрежена, поэтому попытка кодировать структуру узлов соответствующим образом затруднена и добавить добавленный слой я пытаюсь создать две иерархии, в которых у нас есть следующее:

(иерархия 1-география: пример-штат Делавэр США и его округа)

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

(иерархия 2-промышленность: упрощенная)

=> 10
     => 11
     => 12 
     => 21 
     => 22 
     => 31
     ...
     => 99

Изменить 2-Исправлено иерархии и дальнейшие разъяснения

таким образом, каждый timeseries будет иметь код географии и отраслевой код. Коды географии следуют одной иерархии, а отраслевые коды-другой (показано выше).

Я пытаюсь выяснить, как указать аргумент "узлы" для представления отношений обеих иерархий (пример документации показывает только одну иерархию).

когда две иерархии взаимодействуют, мы получаем дополнительные уровни. Давайте упростим предполагая, что есть только 2 отрасли, 11 и 12. Таймсерии определены (10001,11) и (10001,12) должна составлять (10001,10); а также, (10001,11)...(10999,11) должна составлять (10000,11) и т. д. и т. п. Опять же, это упрощенные иерархии - в реальных данных больше уровней.

вопрос в том, как выглядит аргумент" узлы " для два иерархии? Надеюсь, это поможет.

1 ответов


ваша нотация (которая может не быть вашим выбором) делает это очень запутанным. Похоже, что одна и та же числовая последовательность может относиться либо к округу, либо к отрасли.

однако основная идея достаточно ясна: у вас есть две иерархии, и вы хотите, чтобы оба типа агрегации учитывались. Вот пример, использующий мою собственную нотацию, чтобы сделать ее более ясной.

предположим, что есть два штата с четырьмя и пятью округами соответственно и двумя отраслями промышленности с тремя и двумя подотраслями соответственно. Таким образом, есть серии 9х5 на наиболее детализированном уровне (подотрасли комбинаций х округа). Я буду называть Штаты 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)))

на .

можно указать структуру группировки без использования меток столбцов. Тогда ты необходимо указать матрицу групп, которая определяет, какие агрегации представляют интерес. В приведенном выше примере матрица групп задается с помощью

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 аргумент как построение всех этих строк кросс-продукта может запутаться.