Создание иерархической структуры данных, узлов в HTS R
Я пытаюсь создать структуру узлов, используя пакет HTS в R. документация, касающаяся узлов, разрежена, поэтому попытка кодировать структуру узлов соответствующим образом затруднена, и для добавления дополнительного слоя я пытаюсь создать две иерархии, в которых мы имеем следующее:
(иерархия 1-география: пример-американский штат Делавэр и его округа)
=> 10000
=> 10001
=> 10003
=> 10005
=> 10999
(иерархия 2 - промышленность: упрощенная)
=> 10
=> 11
=> 12
=> 21
=> 22
=> 31
...
=> 99
Редактировать 2-исправленные иерархии и далее разъяснение
Таким образом, каждая временная серия будет иметь географический код и отраслевой код. Географические коды следуют одной иерархии, а отраслевые коды-другой (показано выше).Я пытаюсь выяснить, как указать аргумент "узлы" для представления отношений обеих иерархий (в Примере документации показана только одна иерархия).
Когда две иерархии взаимодействуют, мы получаем дополнительные уровни. Давайте упростим, предположив, что есть только 2 отрасли, 11 и 12. Временные ряды, определенные (10001,11) и (10001,12), должны суммироваться до (10001,10); а также (10001,11)...(10999,11) должно складываться до (10000,11)и т. д. Опять же, это упрощенные иерархии - в реальных данных больше уровней. Вопрос в том, как выглядит аргумент "узлы" для двух иерархий? Надеюсь, это поможет.1 ответ:
Ваша нотация (которая может быть не вашим выбором) делает это очень запутанным. Похоже, что одна и та же числовая последовательность может относиться как к округу, так и к отрасли.
Однако основная идея достаточно ясна: у вас есть две иерархии, и вы хотите, чтобы учитывались оба типа агрегации. Вот пример использования моей собственной нотации, чтобы сделать его более ясным. Предположим, что существуют два штата с четырьмя и пятью округами соответственно, а также две отрасли промышленности с тремя и две подотрасли соответственно. Таким образом, существуют серии 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"
, означающее штат а, округ 1, отрасль х, подотрасль А.Затем мы можем легко создать сгруппированный объект временного ряда, используя
gy <- gts(y, characters=list(c(1,1),c(1,1)))
Аргумент
characters
указывает, что существует две иерархии (два элемента в списке), и первая иерархия определяется первые два символа, причем вторая иерархия определяется вторыми двумя символами.Немного более сложный, но аналогичный пример (с метками, принимающими более одного символа каждая) приведен в файле справки для
gts
в v4.3 пакетаhts
.Можно задать структуру группировки без использования меток столбцов. Затем вы должны указать матрицу групп, которая определяет, какие агрегации представляют интерес. В приведенном выше примере матрица групп дается по
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
, поскольку построение всех этих строк кросс-продукта может привести к путанице.