2016-04-17 5 views
1

Ich verwende das HTS-Paket in R, um zu bewerten, welches die beste Stufe in der Hierarchie ist, um die Umsatzprognose auszuführen.Fehler bei der Verwendung der Methode "prognose.hts" tdfp

Das Problem, das ich habe, ist bei der Ausführung der Prognose mit tdfp (also nach oben mit unteren Prognose zu disaggregieren). Der Rest der Modelle funktioniert ok.

Vielen Dank im Voraus für Ihre Hilfe

Schritte zur Wiederaufbau: Der Fehler meessage ich habe, ist:

"Error en rowsum.default(flist[[j + 1L]], repcount) : incorrect length for 'group'" 

Dateien der Fehler zu reproduzieren kann es funktioniert in (hoffentlich finden, ich bin kein Experte): https://github.com/memdux/hts_error.git

Um den Fehler zu reproduzieren Sie den Code unten verwenden:

require("forecast") 
require("hts") 

dates_input= read.csv("test_data_dates.csv",sep =";", dec = ".") 
soh= read.csv("test_data_values.csv",sep =";", dec = ".") 

soh_matrix = as.matrix(soh) 

ts_soh = ts(soh_matrix, 
      start=c(2012, 01), 
      end=c(2015, 01), 
      frequency=12) 

y <- hts(ts_soh, characters = c(2, 3, 4, 3, 5)) 

train = window(y, start = c(2012,1), end = c(2014, 9)) 
test = window(y, start = c(2014,10), end = c(2015, 1)) 

fcst_hts_3 = forecast.gts(train, h = 4, method = "tdfp", fmethod = "arima") 
# Same error if using forecast (no gts) and/or ets as forecast method 

Antwort

1

Ich habe dieses Problem auch in hts v5.1.4 getroffen. Es scheint, dass die TdFp-Funktion eine allgemeine Top-Level-Bezeichnung im Zeichenparameter nicht mag. In meinem Fall starteten alle Labels mit "R03" und der Zeichenparameter begann mit c (3,2, ...). Wenn ich diesen Teilstring aus den Beschriftungen entfernte und den Zeichenparameter in c (2, ...) änderte, funktionierte alles einwandfrei.

Im ersten Fall ist die HTS- die Objektvariable hatte:

$ nodes:List of 5 
..$ Level 1: int 1 
..$ Level 2: 'table' int[1(1d)] 10 
... 
$ labels: List of 6 
..$ Level 0: chr "Total" 
..$ Level 1: chr "R03" 

, während im zweiten Fall war:

$ nodes :List of 4 
    ..$ Level 1: int 10 
    ..$ Level 2: 'table' int [1:10(1d)] 5 4 4 4 ... 
... 
$ labels :List of 5 
    ..$ Level 0: chr "Total" 
    ..$ Level 1: chr [1:10] "AC" "AK" "AL" "BA" ... 
Verwandte Themen