From 12119d214a88100dda180043cbe1e2afd10f79af Mon Sep 17 00:00:00 2001 From: Benjamin Auder Date: Sat, 15 Apr 2017 00:07:35 +0200 Subject: [PATCH] final changes --- reports/report.gj | 27 ++++++++++++++------------- reports/report_P7_H17.zip | 1 + 2 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 reports/report_P7_H17.zip diff --git a/reports/report.gj b/reports/report.gj index 8c8d6dc..e499ece 100644 --- a/reports/report.gj +++ b/reports/report.gj @@ -26,7 +26,8 @@ ts_data <- read.csv(system.file("extdata","pm10_mesures_H_loc.csv", exo_data <- read.csv(system.file("extdata","meteo_extra_noNAs.csv", package="talweg")) data <- getData(ts_data, exo_data, input_tz="GMT", - date_format="%d/%m/%Y %H:%M", working_tz="GMT", predict_at=7, limit=120) + date_format="%d/%m/%Y %H:%M", working_tz="GMT", + predict_at=7, limit=120) # Plus de détails à la section 1 ci-après. # Prédiction de 10 courbes (jours 102 à 111) @@ -191,14 +192,14 @@ sum_p123 = e1$abs$indices + e2$abs$indices + e3$abs$indices i_np = which.min(sum_p123) #indice de (veille de) jour "facile" i_p = which.max(sum_p123) #indice de (veille de) jour "difficile" ----- -% if i == 1: +% if i == 0: L'erreur absolue dépasse 20 sur 1 à 2 jours suivant les modèles (graphe en haut à droite). C'est au-delà de ce que l'on aimerait voir (disons +/- 5 environ). Sur cet exemple le modèle à voisins "contraint" (local=TRUE) utilisant des pondérations basées sur les similarités de forme (simtype="endo") obtient en moyenne les meilleurs résultats, avec un MAPE restant en général inférieur à 30% de 8h à 19h (7+1 à 7+12 : graphe en bas à gauche). -% elif i == 2: +% elif i == 1: Il est difficile dans ce cas de déterminer une méthode meilleure que les autres : elles donnent toutes de plutôt mauvais résultats, avec une erreur absolue moyennée sur la journée dépassant presque toujours 15 (graphe en haut à droite). @@ -225,14 +226,14 @@ plotPredReal(data, p3, i_p); title(paste("PredReal p3 day",i_p)) # Bleu : prévue ; noir : réalisée ----- -% if i == 1: +% if i == 0: Le jour "facile à prévoir", à gauche, se décompose en deux modes : un léger vers 10h (7+3), puis un beaucoup plus marqué vers 19h (7+12). Ces deux modes sont retrouvés par les trois variantes de l'algorithme à voisins, bien que l'amplitude soit mal prédite. Concernant le jour "difficile à prévoir" il y a deux pics en tout début et toute fin de journée (à 9h et 23h), qui ne sont pas du tout anticipés par le programme ; la grande amplitude de ces pics explique alors l'intensité de l'erreur observée. -% elif i == 2: +% elif i == 1: Dans le cas d'un jour "facile" à prédire $-$ à gauche $-$ la forme est plus ou moins retrouvée, mais le niveau moyen est trop bas (courbe en bleu). Concernant le jour "difficile" à droite, non seulement la forme n'est pas anticipée mais surtout le niveau @@ -255,14 +256,14 @@ f_np2 = computeFilaments(data, p2, i_np, plot=TRUE) f_p2 = computeFilaments(data, p2, i_p, plot=TRUE) title(paste("Filaments p2 day",i_p)) ----- -% if i == 1: +% if i == 0: Les voisins du jour courant (période de 24h allant de 8h à 7h le lendemain) sont affichés avec un trait d'autant plus sombre qu'ils sont proches. On constate dans le cas non contraint (en haut) une grande variabilité des lendemains, très nette sur le graphe en haut à droite. Ceci indique une faible corrélation entre la forme d'une courbe sur une période de 24h et la forme sur les 24h suivantes ; **cette observation est la source des difficultés rencontrées par l'algorithme sur ce jeu de données.** -% elif i == 2: +% elif i == 1: Les observations sont les mêmes qu'au paragraphe précédent : trop de variabilité des lendemains (et même des voisins du jour courant). % else: @@ -277,14 +278,14 @@ plotFilamentsBox(data, f_p1); title(paste("FilBox p1 day",i_p)) # En pointillés la courbe du jour courant + lendemain (à prédire) ----- -% if i == 1: +% if i == 0: Sur cette boxplot fonctionnelle (voir la fonction fboxplot() du package R "rainbow") l'on constate essentiellement deux choses : le lendemain d'un voisin "normal" peut se révéler être une courbe atypique, fort éloignée de ce que l'on souhaite prédire (courbes bleue et rouge à gauche) ; et, dans le cas d'une courbe à prédire atypique (à droite) la plupart des voisins sont trop éloignés de la forme à prédire et forcent ainsi un aplatissement de la prédiction. -% elif i == 2: +% elif i == 1: On constate la présence d'un voisin au lendemain complètement atypique avec un pic en début de journée (courbe en vert à gauche), et d'un autre phénomène semblable avec la courbe rouge sur le graphe de droite. Ajouté au fait que le lendemain à prévoir est @@ -304,7 +305,7 @@ plotRelVar(data, f_p2); title(paste("StdDev p2 day",i_p)) # Variabilité globale en rouge ; sur les voisins (+ lendemains) en noir ----- -% if i == 1: +% if i == 0: Ces graphes viennent confirmer l'impression visuelle après observation des filaments. En effet, la variabilité globale en rouge (écart-type heure par heure sur l'ensemble des couples "aujourd'hui/lendemain"du passé) devrait rester nettement au-dessus de la @@ -312,7 +313,7 @@ variabilité locale, calculée respectivement sur un voisinage d'une soixantai (pour p1) et d'une dizaine de jours (pour p2). Or on constate que ce n'est pas du tout le cas sur la période "lendemain", sauf en partie pour p2 le jour 4 $-$ mais ce n'est pas suffisant. -% elif i == 2: +% elif i == 1: Comme précédemment les variabilités locales et globales sont confondues dans les parties droites des graphes $-$ sauf pour la version "locale" sur le jour "facile"; mais cette bonne propriété n'est pas suffisante si l'on ne trouve pas les bons poids à appliquer. @@ -329,11 +330,11 @@ plotSimils(p1, i_p); title(paste("Weights p1 day",i_p)) plotSimils(p2, i_np); title(paste("Weights p2 day",i_np)) plotSimils(p2, i_p); title(paste("Weights p2 day",i_p)) ----- -% if i == 1: +% if i == 0: Les poids se concentrent près de 0 dans le cas "non local" (p1), et se répartissent assez uniformément dans [ 0, 0.2 ] dans le cas "local" (p2). C'est ce que l'on souhaite observer pour éviter d'effectuer une simple moyenne. -% elif i == 2: +% elif i == 1: En comparaison avec le pragraphe précédent on retrouve le même (bon) comportement des poids pour la version "non locale". En revanche la fenêtre optimisée est trop grande sur le jour "facile" pour la méthode "locale" (voir affichage ci-dessous) : il en résulte des diff --git a/reports/report_P7_H17.zip b/reports/report_P7_H17.zip new file mode 100644 index 0000000..65253b5 --- /dev/null +++ b/reports/report_P7_H17.zip @@ -0,0 +1 @@ +#$# git-fat 4a0e88af47c14a7cdb4d00b268517eefec453d90 2747183 -- 2.44.0