X-Git-Url: https://git.auder.net/img/%7B%7B%20path%28%27fos_user_registration_register%27%29%20%7D%7D?a=blobdiff_plain;f=reports%2Freport.gj;h=8c8d6dc1ae446ee9f998b6f40fa25e9111e41b6b;hb=8eafefbc8a886e60405128118908341333219507;hp=3edebcac339443df320aa53da5bc4e81e47dbd61;hpb=b6233fa6fd52583035c43e8b4ded0e175cda3ced;p=talweg.git
diff --git a/reports/report.gj b/reports/report.gj
index 3edebca..8c8d6dc 100644
--- a/reports/report.gj
+++ b/reports/report.gj
@@ -1,3 +1,4 @@
+-----
# Package R "talweg"
Le package $-$ Time-series sAmpLes forecasted With ExoGenous variables $-$ contient le
@@ -39,7 +40,7 @@ err <- computeError(data, pred, horizon=6)
# Puis voir ?plotError et les autres plot dans le paragraphe 'seealso'
-----
-## getData()
+${"##"} getData()
Les arguments de cette fonction sont, dans l'ordre :
@@ -61,7 +62,7 @@ valeurs de 8h à 7h pour le $3^{eme}$ bloc de 24h présent dans le jeu de donné
print(data)
#?Data
-----
-## computeForecast()
+${"##"} computeForecast()
Les arguments de cette fonction sont, dans l'ordre :
@@ -83,7 +84,7 @@ séquentielle)
print(pred)
#?computeForecast
-----
-## computeError()
+${"##"} computeError()
Les arguments de cette fonction sont, dans l'ordre :
@@ -97,7 +98,7 @@ summary(err)
summary(err$abs)
summary(err$MAPE)
-----
-## Graphiques
+${"##"} Graphiques
Voir ?plotError : les autres fonctions graphiques sont dans la section 'seealso' :
@@ -105,7 +106,7 @@ Voir ?plotError : les autres fonctions graphiques sont dans la section 'seealso'
âcomputeFilamentsâ, âplotFilamentsBoxâ, âplotRelVarâ
?plotXXX, etc.
-$\clearpage$
+## $\clearpage$ How to do that?
-----
# Expérimentations
@@ -159,11 +160,10 @@ data = getData(ts_data, exo_data, input_tz = "GMT", working_tz="GMT",
indices_ch = seq(as.Date("2015-01-18"),as.Date("2015-01-24"),"days")
indices_ep = seq(as.Date("2015-03-15"),as.Date("2015-03-21"),"days")
indices_np = seq(as.Date("2015-04-26"),as.Date("2015-05-02"),"days")
-
% for i in range(3):
-----
-% #
${list_titles[i]}
-## ${list_titles[i]}
+##${list_titles[i]}
+${"##"} ${list_titles[i]}
-----r
p1 = computeForecast(data, ${list_indices[i]}, "Neighbors", "Neighbors", horizon=H,
simtype="mix", local=FALSE)
@@ -191,18 +191,18 @@ 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 == 1:
L'erreur absolue deÌpasse 20 sur 1 aÌ 2 jours suivant les modeÌles (graphe en haut aÌ
droite). C'est au-delaÌ de ce que l'on aimerait voir (disons +/- 5 environ). Sur cet
exemple le modeÌle aÌ voisins "contraint" (local=TRUE) utilisant des pondeÌrations baseÌes
sur les similariteÌs de forme (simtype="endo") obtient en moyenne les meilleurs reÌsultats,
avec un MAPE restant en geÌneÌral infeÌrieur aÌ 30% de 8h aÌ 19h (7+1 aÌ 7+12 : graphe en bas aÌ
gauche).
-% else if i == 2
+% elif i == 2:
Il est difficile dans ce cas de deÌterminer une meÌthode meilleure que les autres : elles
donnent toutes de plutoÌt mauvais reÌsultats, avec une erreur absolue moyenneÌe sur la
journeÌe deÌpassant presque toujours 15 (graphe en haut aÌ droite).
-% else
+% else:
Dans ce cas plus favorable les intensiteÌ des erreurs absolues ont clairement diminueÌ :
elles restent souvent en dessous de 5. En revanche le MAPE moyen reste au-delaÌ de 20%, et
meÌme souvent plus de 30%. Comme dans le cas de l'eÌpandage on constate une croissance
@@ -225,20 +225,20 @@ plotPredReal(data, p3, i_p); title(paste("PredReal p3 day",i_p))
# Bleu : prévue ; noir : réalisée
-----
-% if i == 1
+% if i == 1:
Le jour "facile aÌ preÌvoir", aÌ gauche, se deÌcompose en deux modes : un leÌger vers 10h
(7+3), puis un beaucoup plus marqueÌ vers 19h (7+12). Ces deux modes sont retrouveÌs par
les trois variantes de l'algorithme aÌ voisins, bien que l'amplitude soit mal preÌdite.
Concernant le jour "difficile aÌ preÌvoir" il y a deux pics en tout deÌbut et toute fin de
journeÌe (aÌ 9h et 23h), qui ne sont pas du tout anticipeÌs par le programme ; la grande
amplitude de ces pics explique alors l'intensiteÌ de l'erreur observeÌe.
-% else if i == 2
+% elif i == 2:
Dans le cas d'un jour "facile" aÌ preÌdire $-$ aÌ gauche $-$ la forme est plus ou moins
retrouveÌe, mais le niveau moyen est trop bas (courbe en bleu). Concernant le jour
"difficile" aÌ droite, non seulement la forme n'est pas anticipeÌe mais surtout le niveau
preÌdit est treÌs infeÌrieur au niveau de pollution observeÌ. Comme on le voit ci-dessous
cela deÌcoule d'un manque de voisins au comportement similaire.
-% else
+% else:
La forme est raisonnablement retrouveÌe pour les meÌthodes "locales", l'autre version
lissant trop les preÌdictions. Le biais reste cependant important, surtout en fin de
journeÌe sur le jour "difficile".
@@ -255,17 +255,17 @@ 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 == 1:
Les voisins du jour courant (peÌriode de 24h allant de 8h aÌ 7h le lendemain) sont afficheÌs
avec un trait d'autant plus sombre qu'ils sont proches. On constate dans le cas non
contraint (en haut) une grande variabiliteÌ des lendemains, treÌs nette sur le graphe en
haut aÌ droite. Ceci indique une faible correÌlation entre la forme d'une courbe sur une
peÌriode de 24h et la forme sur les 24h suivantes ; **cette observation est la source des
difficulteÌs rencontreÌes par l'algorithme sur ce jeu de donneÌes.**
-% else if i == 2
+% elif i == 2:
Les observations sont les meÌmes qu'au paragraphe preÌceÌdent : trop de variabiliteÌ des
lendemains (et meÌme des voisins du jour courant).
-% else
+% else:
Les graphes de filaments ont encore la meÌme allure, avec une assez grande variabiliteÌ
observeÌe. Cette observation est cependant trompeuse, comme l'indique plus bas le graphe
de variabiliteÌ relative.
@@ -277,20 +277,20 @@ plotFilamentsBox(data, f_p1); title(paste("FilBox p1 day",i_p))
# En pointilleÌs la courbe du jour courant + lendemain (aÌ preÌdire)
-----
-% if i == 1
+% if i == 1:
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 reÌveÌler
eÌtre une courbe atypique, fort eÌloigneÌe de ce que l'on souhaite preÌdire (courbes bleue et
rouge aÌ gauche) ; et, dans le cas d'une courbe aÌ preÌdire atypique (aÌ droite) la plupart
des voisins sont trop eÌloigneÌs de la forme aÌ preÌdire et forcent ainsi un aplatissement de
la preÌdiction.
-% else if i == 2
+% elif i == 2:
On constate la preÌsence d'un voisin au lendemain compleÌtement atypique avec un pic en
deÌbut de journeÌe (courbe en vert aÌ gauche), et d'un autre pheÌnomeÌne semblable avec la
courbe rouge sur le graphe de droite. AjouteÌ au fait que le lendemain aÌ preÌvoir est
lui-meÌme un jour "hors norme", cela montre l'impossibiliteÌ de bien preÌvoir une courbe en
utilisant l'algorithme aÌ voisins.
-% else
+% else:
On peut reÌappliquer les meÌmes remarques qu'auparavant sur les boxplots fonctionnels :
lendemains de voisins atypiques, courbe aÌ preÌvoir elle-meÌme leÌgeÌrement "hors norme".
% endif
@@ -304,7 +304,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 == 1:
Ces graphes viennent confirmer l'impression visuelle apreÌs observation des filaments. En
effet, la variabiliteÌ globale en rouge (eÌcart-type heure par heure sur l'ensemble des
couples "aujourd'hui/lendemain"du passeÌ) devrait rester nettement au-dessus de la
@@ -312,11 +312,11 @@ variabiliteÌ locale, calculeÌ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 peÌriode "lendemain", sauf en partie pour p2 le jour 4 $-$ mais ce n'est pas
suffisant.
-% else if i == 2
+% elif i == 2:
Comme preÌceÌdemment les variabiliteÌs locales et globales sont confondues dans les parties
droites des graphes $-$ sauf pour la version "locale" sur le jour "facile"; mais cette
bonne proprieÌteÌ n'est pas suffisante si l'on ne trouve pas les bons poids aÌ appliquer.
-% else
+% else:
Cette fois la situation ideÌale est observeÌe : la variabiliteÌ globale est nettement
au-dessus de la variabiliteÌ locale. Bien que cela ne suffise pas aÌ obtenir de bonnes
preÌdictions de forme, on constate au moins l'ameÌlioration dans la preÌdiction du niveau.
@@ -329,17 +329,17 @@ 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 == 1:
Les poids se concentrent preÌs de 0 dans le cas "non local" (p1), et se reÌpartissent assez
uniformeÌment dans [ 0, 0.2 ] dans le cas "local" (p2). C'est ce que l'on souhaite
observer pour eÌviter d'effectuer une simple moyenne.
-% else if i == 2
+% elif i == 2:
En comparaison avec le pragraphe preÌceÌdent on retrouve le meÌme (bon) comportement des
poids pour la version "non locale". En revanche la feneÌtre optimiseÌe est trop grande sur
le jour "facile" pour la meÌthode "locale" (voir affichage ci-dessous) : il en reÌsulte des
poids tous semblables autour de 0.084, l'algorithme effectue donc une moyenne simple $-$
expliquant pourquoi les courbes mauve et bleue sont treÌs proches sur le graphe d'erreurs.
-% else
+% else:
Concernant les poids en revanche, deux cas a priori mauvais se cumulent :
* les poids dans le cas "non local" ne sont pas assez concentreÌs autour de 0, menant aÌ
@@ -358,7 +358,7 @@ p2$getParams(i_np)$window
p2$getParams(i_p)$window
% endfor
-----
-## Bilan
+${"##"} Bilan
Nos algorithmes aÌ voisins ne sont pas adapteÌs aÌ ce jeu de donneÌes ouÌ la forme varie
consideÌrablement d'un jour aÌ l'autre. Plus geÌneÌralement cette deÌcorreÌlation de forme rend