2016-06-27 10 views
0

Ich habe einen Datenrahmen mit prognostizierten Werten für eine bestimmte ID-Gruppe. Ich bin in der Lage, sie mit purchaseforecast$lower und purchaseforecast$upper zu extrahieren, aber nicht in der Lage, sie an den leeren Datenrahmen anzuhängen, den ich unten erstellt habe. Ich möchte auch die ID aus der Schleife in den leeren Datenrahmen hinzufügen. Jede Hilfe wird geschätzt.Extrahieren der unteren und oberen Grenzen der Prognose und Anhängen an eine Datenmenge in R

leeren Datenrahmen:

finaloutput <- data.frame(id =integer, 
       lowerlimit=integer(length = 0L), 
       upperlimit=integer(length = 0L)) 

Prognostizierte Datenrahmen:

purchaseforecastmn <- forecast.HoltWinters(object = daily_seasonality, level = 95, h =30) 

Werte I zu untere Grenze anhängen möchte, ist purchaseforecastmn$lower und Obergrenze purchaseforecastmn$upper zusätzlich zu einem ID-Wert aus dem Schleife.

Beispielcode:

dailyseasonality1 <- c(1:365) 

dailyseasonality2 <- HoltWinters(dailyseasonality1, gamma = FALSE,beta = FALSE) 

purchaseforecastmn <- forecast.HoltWinters(object = dailyseasonality2, level = 95, h =30) 
+0

Sie können einen kleinen Beispieldatensatz und Code hinzufügen, der ausgeführt wird. –

+0

Das Beispiel-Dataset wurde unter Beispielcode Mark hinzugefügt. Ich möchte Werte des Kaufs an die niedrigere Grenze anhängen, kaufe vorher $ obere bis zum oberen Limit und "1" an ID. Vielen Dank – Arun

Antwort

0

Ich bin nicht sicher, ob ich die Frage verstehen, aber der folgende Code gibt ein data.frame alles in purchaseforecastmn enthält, sowie eine id Variable:

# install.packages('forecast') 

library(forecast) 

n.ids <- 30 

id <- 1:n.ids 

dailyseasonality1 <- c(1:365) 
dailyseasonality2 <- HoltWinters(dailyseasonality1, gamma = FALSE,beta = FALSE) 
purchaseforecastmn <- forecast.HoltWinters(object = dailyseasonality2, level = 95, h = n.ids) 
purchaseforecastmn 

my.data <- as.data.frame(purchaseforecastmn) 
my.data <- data.frame(id, my.data) 

Hier ist die Ausgabe data.frame my.data:

id Point.Forecast Lo.95 Hi.95 
366 1  364.9999 364.9999 365 
367 2  364.9999 364.9999 365 
368 3  364.9999 364.9999 365 
369 4  364.9999 364.9999 365 
370 5  364.9999 364.9999 365 
371 6  364.9999 364.9999 365 
372 7  364.9999 364.9999 365 
373 8  364.9999 364.9999 365 
374 9  364.9999 364.9999 365 
375 10  364.9999 364.9999 365 
376 11  364.9999 364.9999 365 
377 12  364.9999 364.9999 365 
378 13  364.9999 364.9999 365 
379 14  364.9999 364.9999 365 
380 15  364.9999 364.9999 365 
381 16  364.9999 364.9999 365 
382 17  364.9999 364.9999 365 
383 18  364.9999 364.9999 365 
384 19  364.9999 364.9999 365 
385 20  364.9999 364.9999 365 
386 21  364.9999 364.9999 365 
387 22  364.9999 364.9999 365 
388 23  364.9999 364.9999 365 
389 24  364.9999 364.9999 365 
390 25  364.9999 364.9999 365 
391 26  364.9999 364.9999 365 
392 27  364.9999 364.9999 365 
393 28  364.9999 364.9999 365 
394 29  364.9999 364.9999 365 
395 30  364.9999 364.9999 365 

Wenn Sie nur die erste Zeile von my.data wollen, können Sie es mit extrahieren:

my.output <- my.data[1,] 

Bezüglich einer Schleife, ich denke, ich würde ein Beispiel mit Code benötigen, um zu sehen, die ausgeführt wird. Dies könnte funktionieren.

library(forecast) 

n.iters <- 30 

my.output <- matrix(NA, ncol = 4, nrow = n.iters) 

for(i in 1:n.iters) { 

    dailyseasonality1 <- c(1:365) 
    dailyseasonality2 <- HoltWinters(dailyseasonality1, gamma = FALSE,beta = FALSE) 
    purchaseforecastmn <- forecast.HoltWinters(object = dailyseasonality2, level = 95, h = 30) 
    my.data <- as.matrix(as.data.frame(purchaseforecastmn)) 

    my.output[i,1] <- i 
    my.output[i,2:4] <- my.data[1,1:3] 

} 

colnames(my.output) <- c('id', 'Point.Forecast', 'Lo.95', 'Hi.95') 
my.output 
Verwandte Themen