2017-07-11 3 views
0

J'ai une image similaire à 'df1'. Après avoir converti la colonne de valeur en une série chronologique quotidienne, j'utilise la méthode Holt Winters et je prédis 120 jours dans le futur. Je veux être en mesure de visualiser les réels et prédits en utilisant les dygraphes.Visualiser les données de séries chronologiques quotidiennes à l'aide de dgraphes dans R

library(dygraphs) 
> head(df1) 
    timestamp value 
1 2017-03-29 534.4571 
2 2017-03-30 536.4350 
3 2017-03-31 534.6661 
4 2017-04-01 535.9185 
5 2017-04-02 532.6998 
6 2017-04-03 534.8282 

convert_to_daily_ts <- function(x){ 
    x <- x[order(x$timestamp),] 
    x$value_ts <- ts(x$value, frequency = 7) 
    return(x) 
} 

df1 <- convert_to_daily_ts(df1) 

hw <- tryCatch(HoltWinters(df1$value_ts), error=NA) 
p <- predict(hw, n.ahead = 120, prediction.interval = TRUE, level=0.95) 

act <- df1$value_ts 
all <- cbind(act, p) 

> class(all) 
[1] "mts" "ts"  "matrix" 

> head(all) 
Time Series: 
Start = c(1, 1) 
End = c(1, 6) 
Frequency = 7 
      actual p.fit p.upr p.lwr 
1.000000 534.4571 NA NA NA 
1.142857 536.4350 NA NA NA 
1.285714 534.6661 NA NA NA 
1.428571 535.9185 NA NA NA 
1.571429 532.6998 NA NA NA 
1.714286 534.8282 NA NA NA 


> tail(all) 
Time Series: 
Start = c(115, 2) 
End = c(115, 7) 
Frequency = 7 
     actual p.fit p.upr p.lwr 
115.1429  NA 386.2924 581.7568 190.8279 
115.2857  NA 384.4614 580.0625 188.8603 
115.4286  NA 383.4728 579.2104 187.7352 
115.5714  NA 381.3159 577.1900 185.4418 
115.7143  NA 383.3130 579.3234 187.3025 
115.8571  NA 384.2098 580.3565 188.0631 

> str(all) 
mts [1:805, 1:4] 534 536 535 536 533 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:4] "actual" "p.fit" "p.upr" "p.lwr" 
- attr(*, "tsp")= num [1:3] 1 116 7 
- attr(*, "class")= chr [1:3] "mts" "ts" "matrix" 

dygraph(all, main = "Daily Predictions") %>% 
     dySeries("act", label = "Actual") %>% 
     dySeries(c("p.lwr", "p.fit", "p.upr"), label = "Predicted") %>% 
     dyOptions(drawGrid = F) %>% 
     dyRangeSelector() 

je reçois Error:Unsupported type passed to argument 'data'. Mais la classe de « tout » est comme prévu pour le dygraph. Toute aide pour visualiser les données ci-dessus (le & prédictif) vous sera utile. En outre, j'ai besoin des valeurs de l'axe des x pour afficher mois-année (Ex: juin 2017, juil. 2017) au lieu de 1,2,3 et ainsi de suite. C'est possible ?

+0

À quoi ressemble 'str (all)'? –

+0

@RyanMorton Ajouté str (tous) – user1946217

Répondre

0

Il semble que l'objet ts ait besoin de dates de début et de fin pour que dygraph puisse comprendre les choses. Pourriez-vous ajouter les dates de début et de fin appropriées lorsque vous créez l'objet ts? Vous devrez ajuster les dates de début et de fin, le cas échéant. Il y a un article à ce sujet: here.

convert_to_daily_ts <- function(x){ 
    x <- x[order(x$timestamp),] 
    x$value_ts <- ts(x$value, start = c(2017,3), end = c(2017,7), frequency = 7) 
    return(x) 
} 
+0

Merci, en ajoutant le paramètre «start» à ma fonction intial aidé. x $ value_ts <- ts (x $ valeur, start = c (2017,3), fréquence = 7) Le seul problème que j'ai maintenant est les valeurs de l'axe X. Est-il possible d'écraser et d'afficher les valeurs de l'axe X avec l'année-mois (Ex: Jun 2017) – user1946217

+0

Dans le 'dyAxis (" x ", axisLabelFormatter =)', le dygraph peut prendre une formule de script Java pour formater le texte. Voici quelques exemples: https://groups.google.com/forum/#!topic/dygraphs-users/2K9p8sQlS20 –