Приведение класса объекта ts к объекту hts Пакет hts Роба Дж. Хиндмана - PullRequest
1 голос
/ 30 июня 2011

Хотелось бы изучить пакет за примерами в документации, но зацикливаться на приведение класса объекта ts к объекту hts:

Error in dimnames(x) <- dn : 
  length of 'dimnames' [2] not equal to array extent

Есть мысли?

#to replicate error run below
#install.packages("hts") # if not already installed

# Note:
# Series "AA","AB","AC","AD","AE" are children to "A"
# Series "BA","BB","BC" are children to "B"


require(hts)
Month <- c("2007-02-28","2007-03-31","2007-04-30","2007-05-31","2007-06-30","2007-07-31","2007-08-31"
          ,"2007-09-30","2007-10-31","2007-11-30","2007-12-31","2008-01-31","2008-02-29","2008-03-31"
          ,"2008-04-30","2008-05-31","2008-06-30","2008-07-31","2008-08-31","2008-09-30","2008-10-31"
          ,"2008-11-30","2008-12-31","2009-01-31","2009-02-28","2009-03-31","2009-04-30","2009-05-31"
          ,"2009-06-30","2009-07-31","2009-08-31","2009-09-30","2009-10-31","2009-11-30","2009-12-31"
          ,"2010-01-31","2010-02-28","2010-03-31","2010-04-30","2010-05-31","2010-06-30","2010-07-31"
          ,"2010-08-31","2010-09-30","2010-10-31","2010-11-30","2010-12-31","2011-01-31","2011-02-28"
          ,"2011-03-31","2011-04-30","2011-05-31","2011-06-30")
Month <- as.Date(Month, "%Y-%m-%d")
mdt <- min(Month)
AA <- c(145,51,-202,-187,-266,-187,119,-75,-210,-24,26,33,355,219,-17,-141,-281,-42,-64,-3,-21,-86,-51
      ,-115,248,193,-91,-229,-193,-220,-90,-50,-100,-121,-181,-131,37,24,-65,-213,-224,-257,-151,75,-184
      ,-480,-310,-134,97,146,-140,-310,-306)
AB <- c(3395,2463,1344,1123,-1136,-906,67,-41,-1429,-578,-14938,-7378,1739,1396,1252,298,444,-42,1439,1538
       ,306,-882,-805,-961,2727,542,-1460,-1570,1518,-85,1873,-636,-1258,601,252,-598,919,1199,-790,-813,-1283
       ,-1333,-758,794,-1865,-525,-3056,-1789,1039,998,-226,-1336,-1873)
AC <- c(4429,1139,1506,-4144,-5875,-1507,12329,4780,685,2119,-5755,-9353,3032,4001,2338,-4273,-1022,-2508
       ,4504,2289,916,-940,-4451,-1463,-293,1692,832,-6576,-524,1981,6002,367,-1328,-22,1221,-1961,3146
       ,1465,945,-6478,-3333,-1674,2307,5733,-2277,-1688,-5946,-4596,-698,1716,52,-9328,-4540)
AD <- c(1894,1265,650,-404,-1143,-883,-340,849,-563,420,100,-5107,1587,937,602,68,-1231,-1389,-156,1479
       ,-25,-444,-167,-371,1650,661,108,-2267,836,-1437,-1259,-601,-1431,-751,-1585,-126,-422,406,390,-194
       ,-633,-1366,-2301,3660,-2761,-910,-1893,-3266,-1580,-323,-257,-3622,-1584)
AE <- c(2303,2088,1419,-236,-327,562,409,1694,239,459,3601,-6524,2872,2602,1280,-63,-1241,-88,1321,-512,-402
       ,-136,-388,-699,3854,1740,187,-1600,-903,-324,-1197,-1045,-997,-108,-231,-1515,579,2784,-504,-1627,-1600
       ,-1236,-1759,5529,-1144,-1358,-4006,-1481,-328,1797,83,-1133,-1342)
BA <- c(2679,609,-6,283,-540,-442,530,-7,-17413,1002,-853,-1965,-1298,1213,-1507,-559,-2113,-1442,-228,329
       ,-2130,-3266,-2584,-1842,-5106,1640,-289,5423,-1051,15337,-818,1565,-533,-762,-630,-2154,190,188,-1569
       ,-2596,-4334,-2969,-3304,-2038,-3532,-1808,-679,-2954,-1249,1304,-106,-892,-2758)
BB <- c(-1388,785,-4372,-5128,-6652,-10177,-12592,-8006,-1489,-5107,-2952,-7470,396,3562,5779,1858,-6067,-4875
       ,-4132,-3066,-4386,-2217,-11683,-1841,4100,1508,-2061,-4579,-1840,-3147,-5087,-2529,-1369,-4674,-4578
       ,-3754,269,1645,9393,-3453,-5223,-6060,-5364,-4301,-2125,-3467,-2791,-3605,-262,4006,3058,-111,648)
BC <- c(4335,3685,-1075,-114,-94,-1672,-1551,-819,15167,-2060,-3176,-3585,3119,3775,595,931,-348,-2088,-1690
       ,169,-2936,-2615,-4086,-2397,6403,3334,-1208,-2952,-3246,-20580,-5820,-1917,-3430,-243,-3362,-3443,541
       ,1669,-1356,-2669,-3551,-3826,-3882,-2831,-2372,-2181,-2769,-4518,1278,4119,1582,-181,-1447)

tsdata <- data.frame(Month,AA,AB,AC,AD,AE,BA,BB,BC)
mts <- ts(tsdata, start =c(as.numeric(format.Date(mdt, "%Y")),as.numeric(format.Date(mdt, "%m"))), frequency=12 )
# "AA","AB","AC","AD","AE" are children to "A"
# "BA","BB","BC" are children to "B"
g.mts  <-  rbind(c("AA","AB","AC", "AD","AE","BA","BB","BC"),  c("A","A","A","A","A","B","B","B"))
hts.mts  <-  hts(y  =  mts,  g  =  g.mts)

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Для правильного размещения отмеченной иерархии

Серии "AA", "AB", "AC", "AD", "AE" являются дочерними для "A" Series "BA", "BB",«BC» являются дочерними по отношению к «B»

изменение:

g.mts <- rbind (c («AA», «AB», «AC», «AD», «AE»)"," BA "," BB "," BC "), c (" A "," A "," A "," A "," A "," B "," B "," B "))</p>

до:

g.mts <- rbind (c («A», «A», «A», «A», «A», «B», «B»), "B"), c ("AA", "AB", "AC", "AD", "AE", "BA", "BB", "BC")) </p>

0 голосов
/ 30 июня 2011

Я не совсем понимаю, что вы пытаетесь сделать, но, похоже, может быть проблема с 9 столбцами в mts и 8 в g.mts. Например

hts.mts  <-  hts(y  =  mts[,-1],  g  =  g.mts)

не выдает сообщение об ошибке

...