name instead of year; ipynb generator debugged, with logging
[talweg.git] / reports / tmp.log
1 ******* text after include:
2 -----
3 <h2>Introduction</h2>
4
5 J'ai fait quelques essais dans différentes configurations pour la méthode "Neighbors"
6 (la seule dont on a parlé).<br>Il semble que le mieux soit
7
8 * simtype="exo" ou "mix" : similarités exogènes avec/sans endogènes (fenêtre optimisée par VC)
9 * same_season=FALSE : les indices pour la validation croisée ne tiennent pas compte des saisons
10 * mix_strategy="mult" : on multiplie les poids (au lieu d'en éteindre)
11
12 J'ai systématiquement comparé à une approche naïve : la moyennes des lendemains des jours
13 "similaires" dans tout le passé ; à chaque fois sans prédiction du saut (sauf pour Neighbors :
14 prédiction basée sur les poids calculés).
15
16 Ensuite j'affiche les erreurs, quelques courbes prévues/mesurées, quelques filaments puis les
17 histogrammes de quelques poids. Concernant les graphes de filaments, la moitié gauche du graphe
18 correspond aux jours similaires au jour courant, tandis que la moitié droite affiche les
19 lendemains : ce sont donc les voisinages tels qu'utilisés dans l'algorithme.
20
21 <%
22 list_titles = ['Pollution par chauffage', 'Pollution par épandage', 'Semaine non polluée']
23 list_indices = ['indices_ch', 'indices_ep', 'indices_np']
24 %>
25 -----r
26 library(talweg)
27
28 ts_data = read.csv(system.file("extdata","pm10_mesures_H_loc_report.csv",package="talweg"))
29 exo_data = read.csv(system.file("extdata","meteo_extra_noNAs.csv",package="talweg"))
30 data = getData(ts_data, exo_data, input_tz = "Europe/Paris", working_tz="Europe/Paris", predict_at=13)
31
32 indices_ch = seq(as.Date("2015-01-18"),as.Date("2015-01-24"),"days")
33 indices_ep = seq(as.Date("2015-03-15"),as.Date("2015-03-21"),"days")
34 indices_np = seq(as.Date("2015-04-26"),as.Date("2015-05-02"),"days")
35 % for i in range(3):
36 -----
37 <h2 style="color:blue;font-size:2em">${list_titles[i]}</h2>
38 -----r
39 p_nn_exo = computeForecast(data, ${list_indices[i]}, "Neighbors", "Neighbors", simtype="exo", horizon=H)
40 p_nn_mix = computeForecast(data, ${list_indices[i]}, "Neighbors", "Neighbors", simtype="mix", horizon=H)
41 p_az = computeForecast(data, ${list_indices[i]}, "Average", "Zero", horizon=H) #, memory=183)
42 p_pz = computeForecast(data, ${list_indices[i]}, "Persistence", "Zero", horizon=H, same_day=TRUE)
43 -----r
44 e_nn_exo = computeError(data, p_nn_exo)
45 e_nn_mix = computeError(data, p_nn_mix)
46 e_az = computeError(data, p_az)
47 e_pz = computeError(data, p_pz)
48 options(repr.plot.width=9, repr.plot.height=7)
49 plotError(list(e_nn_mix, e_pz, e_az, e_nn_exo), cols=c(1,2,colors()[258], 4))
50
51 # Noir: neighbors_mix, bleu: neighbors_exo, vert: moyenne, rouge: persistence
52
53 i_np = which.min(e_nn_exo$abs$indices)
54 i_p = which.max(e_nn_exo$abs$indices)
55 -----r
56 options(repr.plot.width=9, repr.plot.height=4)
57 par(mfrow=c(1,2))
58
59 plotPredReal(data, p_nn_exo, i_np); title(paste("PredReal nn exo day",i_np))
60 plotPredReal(data, p_nn_exo, i_p); title(paste("PredReal nn exo day",i_p))
61
62 plotPredReal(data, p_nn_mix, i_np); title(paste("PredReal nn mix day",i_np))
63 plotPredReal(data, p_nn_mix, i_p); title(paste("PredReal nn mix day",i_p))
64
65 plotPredReal(data, p_az, i_np); title(paste("PredReal az day",i_np))
66 plotPredReal(data, p_az, i_p); title(paste("PredReal az day",i_p))
67
68 # Bleu: prévue, noir: réalisée
69 -----r
70 par(mfrow=c(1,2))
71 f_np_exo = computeFilaments(data, p_nn_exo, i_np, plot=TRUE); title(paste("Filaments nn exo day",i_np))
72 f_p_exo = computeFilaments(data, p_nn_exo, i_p, plot=TRUE); title(paste("Filaments nn exo day",i_p))
73
74 f_np_mix = computeFilaments(data, p_nn_mix, i_np, plot=TRUE); title(paste("Filaments nn mix day",i_np))
75 f_p_mix = computeFilaments(data, p_nn_mix, i_p, plot=TRUE); title(paste("Filaments nn mix day",i_p))
76 -----r
77 par(mfrow=c(1,2))
78 plotFilamentsBox(data, f_np_exo); title(paste("FilBox nn exo day",i_np))
79 plotFilamentsBox(data, f_p_exo); title(paste("FilBox nn exo day",i_p))
80
81 plotFilamentsBox(data, f_np_mix); title(paste("FilBox nn mix day",i_np))
82 plotFilamentsBox(data, f_p_mix); title(paste("FilBox nn mix day",i_p))
83 -----r
84 par(mfrow=c(1,2))
85 plotRelVar(data, f_np_exo); title(paste("StdDev nn exo day",i_np))
86 plotRelVar(data, f_p_exo); title(paste("StdDev nn exo day",i_p))
87
88 plotRelVar(data, f_np_mix); title(paste("StdDev nn mix day",i_np))
89 plotRelVar(data, f_p_mix); title(paste("StdDev nn mix day",i_p))
90
91 # Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir
92 -----r
93 par(mfrow=c(1,2))
94 plotSimils(p_nn_exo, i_np); title(paste("Weights nn exo day",i_np))
95 plotSimils(p_nn_exo, i_p); title(paste("Weights nn exo day",i_p))
96
97 plotSimils(p_nn_mix, i_np); title(paste("Weights nn mix day",i_np))
98 plotSimils(p_nn_mix, i_p); title(paste("Weights nn mix day",i_p)
99
100 # - pollué à gauche, + pollué à droite
101 -----r
102 # Fenêtres sélectionnées dans ]0,10] / endo à gauche, exo à droite
103 p_nn_exo$getParams(i_np)$window
104 p_nn_exo$getParams(i_p)$window
105
106 p_nn_mix$getParams(i_np)$window
107 p_nn_mix$getParams(i_p)$window
108 % endfor
109 -----
110 <h2>Bilan</h2>
111
112 Problème difficile : on ne fait guère mieux qu'une naïve moyenne des lendemains des jours
113 similaires dans le passé, ce qui n'est pas loin de prédire une série constante égale à la
114 dernière valeur observée (méthode "zéro"). La persistence donne parfois de bons résultats
115 mais est trop instable (sensibilité à l'argument <code>same_day</code>).
116
117 Comment améliorer la méthode ?
118 ******* mako_kwargs: {}
119 ******* text after mako:
120 -----
121 <h2>Introduction</h2>
122
123 J'ai fait quelques essais dans différentes configurations pour la méthode "Neighbors"
124 (la seule dont on a parlé).<br>Il semble que le mieux soit
125
126 * simtype="exo" ou "mix" : similarités exogènes avec/sans endogènes (fenêtre optimisée par VC)
127 * same_season=FALSE : les indices pour la validation croisée ne tiennent pas compte des saisons
128 * mix_strategy="mult" : on multiplie les poids (au lieu d'en éteindre)
129
130 J'ai systématiquement comparé à une approche naïve : la moyennes des lendemains des jours
131 "similaires" dans tout le passé ; à chaque fois sans prédiction du saut (sauf pour Neighbors :
132 prédiction basée sur les poids calculés).
133
134 Ensuite j'affiche les erreurs, quelques courbes prévues/mesurées, quelques filaments puis les
135 histogrammes de quelques poids. Concernant les graphes de filaments, la moitié gauche du graphe
136 correspond aux jours similaires au jour courant, tandis que la moitié droite affiche les
137 lendemains : ce sont donc les voisinages tels qu'utilisés dans l'algorithme.
138
139
140 -----r
141 library(talweg)
142
143 ts_data = read.csv(system.file("extdata","pm10_mesures_H_loc_report.csv",package="talweg"))
144 exo_data = read.csv(system.file("extdata","meteo_extra_noNAs.csv",package="talweg"))
145 data = getData(ts_data, exo_data, input_tz = "Europe/Paris", working_tz="Europe/Paris", predict_at=13)
146
147 indices_ch = seq(as.Date("2015-01-18"),as.Date("2015-01-24"),"days")
148 indices_ep = seq(as.Date("2015-03-15"),as.Date("2015-03-21"),"days")
149 indices_np = seq(as.Date("2015-04-26"),as.Date("2015-05-02"),"days")
150 -----
151 <h2 style="color:blue;font-size:2em">Pollution par chauffage</h2>
152 -----r
153 p_nn_exo = computeForecast(data, indices_ch, "Neighbors", "Neighbors", simtype="exo", horizon=H)
154 p_nn_mix = computeForecast(data, indices_ch, "Neighbors", "Neighbors", simtype="mix", horizon=H)
155 p_az = computeForecast(data, indices_ch, "Average", "Zero", horizon=H) #, memory=183)
156 p_pz = computeForecast(data, indices_ch, "Persistence", "Zero", horizon=H, same_day=TRUE)
157 -----r
158 e_nn_exo = computeError(data, p_nn_exo)
159 e_nn_mix = computeError(data, p_nn_mix)
160 e_az = computeError(data, p_az)
161 e_pz = computeError(data, p_pz)
162 options(repr.plot.width=9, repr.plot.height=7)
163 plotError(list(e_nn_mix, e_pz, e_az, e_nn_exo), cols=c(1,2,colors()[258], 4))
164
165 # Noir: neighbors_mix, bleu: neighbors_exo, vert: moyenne, rouge: persistence
166
167 i_np = which.min(e_nn_exo$abs$indices)
168 i_p = which.max(e_nn_exo$abs$indices)
169 -----r
170 options(repr.plot.width=9, repr.plot.height=4)
171 par(mfrow=c(1,2))
172
173 plotPredReal(data, p_nn_exo, i_np); title(paste("PredReal nn exo day",i_np))
174 plotPredReal(data, p_nn_exo, i_p); title(paste("PredReal nn exo day",i_p))
175
176 plotPredReal(data, p_nn_mix, i_np); title(paste("PredReal nn mix day",i_np))
177 plotPredReal(data, p_nn_mix, i_p); title(paste("PredReal nn mix day",i_p))
178
179 plotPredReal(data, p_az, i_np); title(paste("PredReal az day",i_np))
180 plotPredReal(data, p_az, i_p); title(paste("PredReal az day",i_p))
181
182 # Bleu: prévue, noir: réalisée
183 -----r
184 par(mfrow=c(1,2))
185 f_np_exo = computeFilaments(data, p_nn_exo, i_np, plot=TRUE); title(paste("Filaments nn exo day",i_np))
186 f_p_exo = computeFilaments(data, p_nn_exo, i_p, plot=TRUE); title(paste("Filaments nn exo day",i_p))
187
188 f_np_mix = computeFilaments(data, p_nn_mix, i_np, plot=TRUE); title(paste("Filaments nn mix day",i_np))
189 f_p_mix = computeFilaments(data, p_nn_mix, i_p, plot=TRUE); title(paste("Filaments nn mix day",i_p))
190 -----r
191 par(mfrow=c(1,2))
192 plotFilamentsBox(data, f_np_exo); title(paste("FilBox nn exo day",i_np))
193 plotFilamentsBox(data, f_p_exo); title(paste("FilBox nn exo day",i_p))
194
195 plotFilamentsBox(data, f_np_mix); title(paste("FilBox nn mix day",i_np))
196 plotFilamentsBox(data, f_p_mix); title(paste("FilBox nn mix day",i_p))
197 -----r
198 par(mfrow=c(1,2))
199 plotRelVar(data, f_np_exo); title(paste("StdDev nn exo day",i_np))
200 plotRelVar(data, f_p_exo); title(paste("StdDev nn exo day",i_p))
201
202 plotRelVar(data, f_np_mix); title(paste("StdDev nn mix day",i_np))
203 plotRelVar(data, f_p_mix); title(paste("StdDev nn mix day",i_p))
204
205 # Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir
206 -----r
207 par(mfrow=c(1,2))
208 plotSimils(p_nn_exo, i_np); title(paste("Weights nn exo day",i_np))
209 plotSimils(p_nn_exo, i_p); title(paste("Weights nn exo day",i_p))
210
211 plotSimils(p_nn_mix, i_np); title(paste("Weights nn mix day",i_np))
212 plotSimils(p_nn_mix, i_p); title(paste("Weights nn mix day",i_p)
213
214 # - pollué à gauche, + pollué à droite
215 -----r
216 # Fenêtres sélectionnées dans ]0,10] / endo à gauche, exo à droite
217 p_nn_exo$getParams(i_np)$window
218 p_nn_exo$getParams(i_p)$window
219
220 p_nn_mix$getParams(i_np)$window
221 p_nn_mix$getParams(i_p)$window
222 -----
223 <h2 style="color:blue;font-size:2em">Pollution par épandage</h2>
224 -----r
225 p_nn_exo = computeForecast(data, indices_ep, "Neighbors", "Neighbors", simtype="exo", horizon=H)
226 p_nn_mix = computeForecast(data, indices_ep, "Neighbors", "Neighbors", simtype="mix", horizon=H)
227 p_az = computeForecast(data, indices_ep, "Average", "Zero", horizon=H) #, memory=183)
228 p_pz = computeForecast(data, indices_ep, "Persistence", "Zero", horizon=H, same_day=TRUE)
229 -----r
230 e_nn_exo = computeError(data, p_nn_exo)
231 e_nn_mix = computeError(data, p_nn_mix)
232 e_az = computeError(data, p_az)
233 e_pz = computeError(data, p_pz)
234 options(repr.plot.width=9, repr.plot.height=7)
235 plotError(list(e_nn_mix, e_pz, e_az, e_nn_exo), cols=c(1,2,colors()[258], 4))
236
237 # Noir: neighbors_mix, bleu: neighbors_exo, vert: moyenne, rouge: persistence
238
239 i_np = which.min(e_nn_exo$abs$indices)
240 i_p = which.max(e_nn_exo$abs$indices)
241 -----r
242 options(repr.plot.width=9, repr.plot.height=4)
243 par(mfrow=c(1,2))
244
245 plotPredReal(data, p_nn_exo, i_np); title(paste("PredReal nn exo day",i_np))
246 plotPredReal(data, p_nn_exo, i_p); title(paste("PredReal nn exo day",i_p))
247
248 plotPredReal(data, p_nn_mix, i_np); title(paste("PredReal nn mix day",i_np))
249 plotPredReal(data, p_nn_mix, i_p); title(paste("PredReal nn mix day",i_p))
250
251 plotPredReal(data, p_az, i_np); title(paste("PredReal az day",i_np))
252 plotPredReal(data, p_az, i_p); title(paste("PredReal az day",i_p))
253
254 # Bleu: prévue, noir: réalisée
255 -----r
256 par(mfrow=c(1,2))
257 f_np_exo = computeFilaments(data, p_nn_exo, i_np, plot=TRUE); title(paste("Filaments nn exo day",i_np))
258 f_p_exo = computeFilaments(data, p_nn_exo, i_p, plot=TRUE); title(paste("Filaments nn exo day",i_p))
259
260 f_np_mix = computeFilaments(data, p_nn_mix, i_np, plot=TRUE); title(paste("Filaments nn mix day",i_np))
261 f_p_mix = computeFilaments(data, p_nn_mix, i_p, plot=TRUE); title(paste("Filaments nn mix day",i_p))
262 -----r
263 par(mfrow=c(1,2))
264 plotFilamentsBox(data, f_np_exo); title(paste("FilBox nn exo day",i_np))
265 plotFilamentsBox(data, f_p_exo); title(paste("FilBox nn exo day",i_p))
266
267 plotFilamentsBox(data, f_np_mix); title(paste("FilBox nn mix day",i_np))
268 plotFilamentsBox(data, f_p_mix); title(paste("FilBox nn mix day",i_p))
269 -----r
270 par(mfrow=c(1,2))
271 plotRelVar(data, f_np_exo); title(paste("StdDev nn exo day",i_np))
272 plotRelVar(data, f_p_exo); title(paste("StdDev nn exo day",i_p))
273
274 plotRelVar(data, f_np_mix); title(paste("StdDev nn mix day",i_np))
275 plotRelVar(data, f_p_mix); title(paste("StdDev nn mix day",i_p))
276
277 # Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir
278 -----r
279 par(mfrow=c(1,2))
280 plotSimils(p_nn_exo, i_np); title(paste("Weights nn exo day",i_np))
281 plotSimils(p_nn_exo, i_p); title(paste("Weights nn exo day",i_p))
282
283 plotSimils(p_nn_mix, i_np); title(paste("Weights nn mix day",i_np))
284 plotSimils(p_nn_mix, i_p); title(paste("Weights nn mix day",i_p)
285
286 # - pollué à gauche, + pollué à droite
287 -----r
288 # Fenêtres sélectionnées dans ]0,10] / endo à gauche, exo à droite
289 p_nn_exo$getParams(i_np)$window
290 p_nn_exo$getParams(i_p)$window
291
292 p_nn_mix$getParams(i_np)$window
293 p_nn_mix$getParams(i_p)$window
294 -----
295 <h2 style="color:blue;font-size:2em">Semaine non polluée</h2>
296 -----r
297 p_nn_exo = computeForecast(data, indices_np, "Neighbors", "Neighbors", simtype="exo", horizon=H)
298 p_nn_mix = computeForecast(data, indices_np, "Neighbors", "Neighbors", simtype="mix", horizon=H)
299 p_az = computeForecast(data, indices_np, "Average", "Zero", horizon=H) #, memory=183)
300 p_pz = computeForecast(data, indices_np, "Persistence", "Zero", horizon=H, same_day=TRUE)
301 -----r
302 e_nn_exo = computeError(data, p_nn_exo)
303 e_nn_mix = computeError(data, p_nn_mix)
304 e_az = computeError(data, p_az)
305 e_pz = computeError(data, p_pz)
306 options(repr.plot.width=9, repr.plot.height=7)
307 plotError(list(e_nn_mix, e_pz, e_az, e_nn_exo), cols=c(1,2,colors()[258], 4))
308
309 # Noir: neighbors_mix, bleu: neighbors_exo, vert: moyenne, rouge: persistence
310
311 i_np = which.min(e_nn_exo$abs$indices)
312 i_p = which.max(e_nn_exo$abs$indices)
313 -----r
314 options(repr.plot.width=9, repr.plot.height=4)
315 par(mfrow=c(1,2))
316
317 plotPredReal(data, p_nn_exo, i_np); title(paste("PredReal nn exo day",i_np))
318 plotPredReal(data, p_nn_exo, i_p); title(paste("PredReal nn exo day",i_p))
319
320 plotPredReal(data, p_nn_mix, i_np); title(paste("PredReal nn mix day",i_np))
321 plotPredReal(data, p_nn_mix, i_p); title(paste("PredReal nn mix day",i_p))
322
323 plotPredReal(data, p_az, i_np); title(paste("PredReal az day",i_np))
324 plotPredReal(data, p_az, i_p); title(paste("PredReal az day",i_p))
325
326 # Bleu: prévue, noir: réalisée
327 -----r
328 par(mfrow=c(1,2))
329 f_np_exo = computeFilaments(data, p_nn_exo, i_np, plot=TRUE); title(paste("Filaments nn exo day",i_np))
330 f_p_exo = computeFilaments(data, p_nn_exo, i_p, plot=TRUE); title(paste("Filaments nn exo day",i_p))
331
332 f_np_mix = computeFilaments(data, p_nn_mix, i_np, plot=TRUE); title(paste("Filaments nn mix day",i_np))
333 f_p_mix = computeFilaments(data, p_nn_mix, i_p, plot=TRUE); title(paste("Filaments nn mix day",i_p))
334 -----r
335 par(mfrow=c(1,2))
336 plotFilamentsBox(data, f_np_exo); title(paste("FilBox nn exo day",i_np))
337 plotFilamentsBox(data, f_p_exo); title(paste("FilBox nn exo day",i_p))
338
339 plotFilamentsBox(data, f_np_mix); title(paste("FilBox nn mix day",i_np))
340 plotFilamentsBox(data, f_p_mix); title(paste("FilBox nn mix day",i_p))
341 -----r
342 par(mfrow=c(1,2))
343 plotRelVar(data, f_np_exo); title(paste("StdDev nn exo day",i_np))
344 plotRelVar(data, f_p_exo); title(paste("StdDev nn exo day",i_p))
345
346 plotRelVar(data, f_np_mix); title(paste("StdDev nn mix day",i_np))
347 plotRelVar(data, f_p_mix); title(paste("StdDev nn mix day",i_p))
348
349 # Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir
350 -----r
351 par(mfrow=c(1,2))
352 plotSimils(p_nn_exo, i_np); title(paste("Weights nn exo day",i_np))
353 plotSimils(p_nn_exo, i_p); title(paste("Weights nn exo day",i_p))
354
355 plotSimils(p_nn_mix, i_np); title(paste("Weights nn mix day",i_np))
356 plotSimils(p_nn_mix, i_p); title(paste("Weights nn mix day",i_p)
357
358 # - pollué à gauche, + pollué à droite
359 -----r
360 # Fenêtres sélectionnées dans ]0,10] / endo à gauche, exo à droite
361 p_nn_exo$getParams(i_np)$window
362 p_nn_exo$getParams(i_p)$window
363
364 p_nn_mix$getParams(i_np)$window
365 p_nn_mix$getParams(i_p)$window
366 -----
367 <h2>Bilan</h2>
368
369 Problème difficile : on ne fait guère mieux qu'une naïve moyenne des lendemains des jours
370 similaires dans le passé, ce qui n'est pas loin de prédire une série constante égale à la
371 dernière valeur observée (méthode "zéro"). La persistence donne parfois de bons résultats
372 mais est trop instable (sensibilité à l'argument <code>same_day</code>).
373
374 Comment améliorer la méthode ?
375 ******* cell: markdown
376 ******* found shortname r
377 ******* cell: astext=False shortname=r
378 ******* cell: markdown
379 ******* found shortname r
380 ******* cell: astext=False shortname=r
381 ******* found shortname r
382 ******* cell: astext=False shortname=r
383 ******* found shortname r
384 ******* cell: astext=False shortname=r
385 ******* found shortname r
386 ******* cell: astext=False shortname=r
387 ******* found shortname r
388 ******* cell: astext=False shortname=r
389 ******* found shortname r
390 ******* cell: astext=False shortname=r
391 ******* found shortname r
392 ******* cell: astext=False shortname=r
393 ******* found shortname r
394 ******* cell: astext=False shortname=r
395 ******* cell: markdown
396 ******* found shortname r
397 ******* cell: astext=False shortname=r
398 ******* found shortname r
399 ******* cell: astext=False shortname=r
400 ******* found shortname r
401 ******* cell: astext=False shortname=r
402 ******* found shortname r
403 ******* cell: astext=False shortname=r
404 ******* found shortname r
405 ******* cell: astext=False shortname=r
406 ******* found shortname r
407 ******* cell: astext=False shortname=r
408 ******* found shortname r
409 ******* cell: astext=False shortname=r
410 ******* found shortname r
411 ******* cell: astext=False shortname=r
412 ******* cell: markdown
413 ******* found shortname r
414 ******* cell: astext=False shortname=r
415 ******* found shortname r
416 ******* cell: astext=False shortname=r
417 ******* found shortname r
418 ******* cell: astext=False shortname=r
419 ******* found shortname r
420 ******* cell: astext=False shortname=r
421 ******* found shortname r
422 ******* cell: astext=False shortname=r
423 ******* found shortname r
424 ******* cell: astext=False shortname=r
425 ******* found shortname r
426 ******* cell: astext=False shortname=r
427 ******* found shortname r
428 ******* cell: astext=False shortname=r
429 ******* cell: markdown
430 ******* cell data structure:\b[['markdown',
431 'text',
432 '\n'
433 '\n'
434 '<h2>Introduction</h2>\n'
435 '\n'
436 "J'ai fait quelques essais dans différentes configurations pour la méthode "
437 '"Neighbors"\n'
438 '(la seule dont on a parlé).<br>Il semble que le mieux soit\n'
439 '\n'
440 ' * simtype="exo" ou "mix" : similarités exogènes avec/sans endogènes '
441 '(fenêtre optimisée par VC)\n'
442 ' * same_season=FALSE : les indices pour la validation croisée ne tiennent '
443 'pas compte des saisons\n'
444 ' * mix_strategy="mult" : on multiplie les poids (au lieu d\'en éteindre)\n'
445 '\n'
446 "J'ai systématiquement comparé à une approche naïve : la moyennes des "
447 'lendemains des jours\n'
448 '"similaires" dans tout le passé ; à chaque fois sans prédiction du saut '
449 '(sauf pour Neighbors :\n'
450 'prédiction basée sur les poids calculés).\n'
451 '\n'
452 "Ensuite j'affiche les erreurs, quelques courbes prévues/mesurées, quelques "
453 'filaments puis les\n'
454 'histogrammes de quelques poids. Concernant les graphes de filaments, la '
455 'moitié gauche du graphe\n'
456 'correspond aux jours similaires au jour courant, tandis que la moitié '
457 'droite affiche les\n'
458 "lendemains : ce sont donc les voisinages tels qu'utilisés dans "
459 "l'algorithme.\n"
460 '\n'],
461 ['codecell',
462 'R',
463 'library(talweg)\n'
464 '\n'
465 'ts_data = '
466 'read.csv(system.file("extdata","pm10_mesures_H_loc_report.csv",package="talweg"))\n'
467 'exo_data = '
468 'read.csv(system.file("extdata","meteo_extra_noNAs.csv",package="talweg"))\n'
469 'data = getData(ts_data, exo_data, input_tz = "Europe/Paris", '
470 'working_tz="Europe/Paris", predict_at=13)\n'
471 '\n'
472 'indices_ch = seq(as.Date("2015-01-18"),as.Date("2015-01-24"),"days")\n'
473 'indices_ep = seq(as.Date("2015-03-15"),as.Date("2015-03-21"),"days")\n'
474 'indices_np = seq(as.Date("2015-04-26"),as.Date("2015-05-02"),"days")'],
475 ['markdown',
476 'text',
477 '\n\n<h2 style="color:blue;font-size:2em">Pollution par chauffage</h2>'],
478 ['codecell',
479 'R',
480 'p_nn_exo = computeForecast(data, indices_ch, "Neighbors", "Neighbors", '
481 'simtype="exo", horizon=H)\n'
482 'p_nn_mix = computeForecast(data, indices_ch, "Neighbors", "Neighbors", '
483 'simtype="mix", horizon=H)\n'
484 'p_az = computeForecast(data, indices_ch, "Average", "Zero", horizon=H) #, '
485 'memory=183)\n'
486 'p_pz = computeForecast(data, indices_ch, "Persistence", "Zero", horizon=H, '
487 'same_day=TRUE)'],
488 ['codecell',
489 'R',
490 'e_nn_exo = computeError(data, p_nn_exo)\n'
491 'e_nn_mix = computeError(data, p_nn_mix)\n'
492 'e_az = computeError(data, p_az)\n'
493 'e_pz = computeError(data, p_pz)\n'
494 'options(repr.plot.width=9, repr.plot.height=7)\n'
495 'plotError(list(e_nn_mix, e_pz, e_az, e_nn_exo), cols=c(1,2,colors()[258], '
496 '4))\n'
497 '\n'
498 '# Noir: neighbors_mix, bleu: neighbors_exo, vert: moyenne, rouge: '
499 'persistence\n'
500 '\n'
501 'i_np = which.min(e_nn_exo$abs$indices)\n'
502 'i_p = which.max(e_nn_exo$abs$indices)'],
503 ['codecell',
504 'R',
505 'options(repr.plot.width=9, repr.plot.height=4)\n'
506 'par(mfrow=c(1,2))\n'
507 '\n'
508 'plotPredReal(data, p_nn_exo, i_np); title(paste("PredReal nn exo '
509 'day",i_np))\n'
510 'plotPredReal(data, p_nn_exo, i_p); title(paste("PredReal nn exo day",i_p))\n'
511 '\n'
512 'plotPredReal(data, p_nn_mix, i_np); title(paste("PredReal nn mix '
513 'day",i_np))\n'
514 'plotPredReal(data, p_nn_mix, i_p); title(paste("PredReal nn mix day",i_p))\n'
515 '\n'
516 'plotPredReal(data, p_az, i_np); title(paste("PredReal az day",i_np))\n'
517 'plotPredReal(data, p_az, i_p); title(paste("PredReal az day",i_p))\n'
518 '\n'
519 '# Bleu: prévue, noir: réalisée'],
520 ['codecell',
521 'R',
522 'par(mfrow=c(1,2))\n'
523 'f_np_exo = computeFilaments(data, p_nn_exo, i_np, plot=TRUE); '
524 'title(paste("Filaments nn exo day",i_np))\n'
525 'f_p_exo = computeFilaments(data, p_nn_exo, i_p, plot=TRUE); '
526 'title(paste("Filaments nn exo day",i_p))\n'
527 '\n'
528 'f_np_mix = computeFilaments(data, p_nn_mix, i_np, plot=TRUE); '
529 'title(paste("Filaments nn mix day",i_np))\n'
530 'f_p_mix = computeFilaments(data, p_nn_mix, i_p, plot=TRUE); '
531 'title(paste("Filaments nn mix day",i_p))'],
532 ['codecell',
533 'R',
534 'par(mfrow=c(1,2))\n'
535 'plotFilamentsBox(data, f_np_exo); title(paste("FilBox nn exo day",i_np))\n'
536 'plotFilamentsBox(data, f_p_exo); title(paste("FilBox nn exo day",i_p))\n'
537 '\n'
538 'plotFilamentsBox(data, f_np_mix); title(paste("FilBox nn mix day",i_np))\n'
539 'plotFilamentsBox(data, f_p_mix); title(paste("FilBox nn mix day",i_p))'],
540 ['codecell',
541 'R',
542 'par(mfrow=c(1,2))\n'
543 'plotRelVar(data, f_np_exo); title(paste("StdDev nn exo day",i_np))\n'
544 'plotRelVar(data, f_p_exo); title(paste("StdDev nn exo day",i_p))\n'
545 '\n'
546 'plotRelVar(data, f_np_mix); title(paste("StdDev nn mix day",i_np))\n'
547 'plotRelVar(data, f_p_mix); title(paste("StdDev nn mix day",i_p))\n'
548 '\n'
549 '# Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir'],
550 ['codecell',
551 'R',
552 'par(mfrow=c(1,2))\n'
553 'plotSimils(p_nn_exo, i_np); title(paste("Weights nn exo day",i_np))\n'
554 'plotSimils(p_nn_exo, i_p); title(paste("Weights nn exo day",i_p))\n'
555 '\n'
556 'plotSimils(p_nn_mix, i_np); title(paste("Weights nn mix day",i_np))\n'
557 'plotSimils(p_nn_mix, i_p); title(paste("Weights nn mix day",i_p)\n'
558 '\n'
559 '# - pollué à gauche, + pollué à droite'],
560 ['codecell',
561 'R',
562 '# Fenêtres sélectionnées dans ]0,10] / endo à gauche, exo à droite\n'
563 'p_nn_exo$getParams(i_np)$window\n'
564 'p_nn_exo$getParams(i_p)$window\n'
565 '\n'
566 'p_nn_mix$getParams(i_np)$window\n'
567 'p_nn_mix$getParams(i_p)$window'],
568 ['markdown',
569 'text',
570 '\n\n<h2 style="color:blue;font-size:2em">Pollution par épandage</h2>'],
571 ['codecell',
572 'R',
573 'p_nn_exo = computeForecast(data, indices_ep, "Neighbors", "Neighbors", '
574 'simtype="exo", horizon=H)\n'
575 'p_nn_mix = computeForecast(data, indices_ep, "Neighbors", "Neighbors", '
576 'simtype="mix", horizon=H)\n'
577 'p_az = computeForecast(data, indices_ep, "Average", "Zero", horizon=H) #, '
578 'memory=183)\n'
579 'p_pz = computeForecast(data, indices_ep, "Persistence", "Zero", horizon=H, '
580 'same_day=TRUE)'],
581 ['codecell',
582 'R',
583 'e_nn_exo = computeError(data, p_nn_exo)\n'
584 'e_nn_mix = computeError(data, p_nn_mix)\n'
585 'e_az = computeError(data, p_az)\n'
586 'e_pz = computeError(data, p_pz)\n'
587 'options(repr.plot.width=9, repr.plot.height=7)\n'
588 'plotError(list(e_nn_mix, e_pz, e_az, e_nn_exo), cols=c(1,2,colors()[258], '
589 '4))\n'
590 '\n'
591 '# Noir: neighbors_mix, bleu: neighbors_exo, vert: moyenne, rouge: '
592 'persistence\n'
593 '\n'
594 'i_np = which.min(e_nn_exo$abs$indices)\n'
595 'i_p = which.max(e_nn_exo$abs$indices)'],
596 ['codecell',
597 'R',
598 'options(repr.plot.width=9, repr.plot.height=4)\n'
599 'par(mfrow=c(1,2))\n'
600 '\n'
601 'plotPredReal(data, p_nn_exo, i_np); title(paste("PredReal nn exo '
602 'day",i_np))\n'
603 'plotPredReal(data, p_nn_exo, i_p); title(paste("PredReal nn exo day",i_p))\n'
604 '\n'
605 'plotPredReal(data, p_nn_mix, i_np); title(paste("PredReal nn mix '
606 'day",i_np))\n'
607 'plotPredReal(data, p_nn_mix, i_p); title(paste("PredReal nn mix day",i_p))\n'
608 '\n'
609 'plotPredReal(data, p_az, i_np); title(paste("PredReal az day",i_np))\n'
610 'plotPredReal(data, p_az, i_p); title(paste("PredReal az day",i_p))\n'
611 '\n'
612 '# Bleu: prévue, noir: réalisée'],
613 ['codecell',
614 'R',
615 'par(mfrow=c(1,2))\n'
616 'f_np_exo = computeFilaments(data, p_nn_exo, i_np, plot=TRUE); '
617 'title(paste("Filaments nn exo day",i_np))\n'
618 'f_p_exo = computeFilaments(data, p_nn_exo, i_p, plot=TRUE); '
619 'title(paste("Filaments nn exo day",i_p))\n'
620 '\n'
621 'f_np_mix = computeFilaments(data, p_nn_mix, i_np, plot=TRUE); '
622 'title(paste("Filaments nn mix day",i_np))\n'
623 'f_p_mix = computeFilaments(data, p_nn_mix, i_p, plot=TRUE); '
624 'title(paste("Filaments nn mix day",i_p))'],
625 ['codecell',
626 'R',
627 'par(mfrow=c(1,2))\n'
628 'plotFilamentsBox(data, f_np_exo); title(paste("FilBox nn exo day",i_np))\n'
629 'plotFilamentsBox(data, f_p_exo); title(paste("FilBox nn exo day",i_p))\n'
630 '\n'
631 'plotFilamentsBox(data, f_np_mix); title(paste("FilBox nn mix day",i_np))\n'
632 'plotFilamentsBox(data, f_p_mix); title(paste("FilBox nn mix day",i_p))'],
633 ['codecell',
634 'R',
635 'par(mfrow=c(1,2))\n'
636 'plotRelVar(data, f_np_exo); title(paste("StdDev nn exo day",i_np))\n'
637 'plotRelVar(data, f_p_exo); title(paste("StdDev nn exo day",i_p))\n'
638 '\n'
639 'plotRelVar(data, f_np_mix); title(paste("StdDev nn mix day",i_np))\n'
640 'plotRelVar(data, f_p_mix); title(paste("StdDev nn mix day",i_p))\n'
641 '\n'
642 '# Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir'],
643 ['codecell',
644 'R',
645 'par(mfrow=c(1,2))\n'
646 'plotSimils(p_nn_exo, i_np); title(paste("Weights nn exo day",i_np))\n'
647 'plotSimils(p_nn_exo, i_p); title(paste("Weights nn exo day",i_p))\n'
648 '\n'
649 'plotSimils(p_nn_mix, i_np); title(paste("Weights nn mix day",i_np))\n'
650 'plotSimils(p_nn_mix, i_p); title(paste("Weights nn mix day",i_p)\n'
651 '\n'
652 '# - pollué à gauche, + pollué à droite'],
653 ['codecell',
654 'R',
655 '# Fenêtres sélectionnées dans ]0,10] / endo à gauche, exo à droite\n'
656 'p_nn_exo$getParams(i_np)$window\n'
657 'p_nn_exo$getParams(i_p)$window\n'
658 '\n'
659 'p_nn_mix$getParams(i_np)$window\n'
660 'p_nn_mix$getParams(i_p)$window'],
661 ['markdown',
662 'text',
663 '\n\n<h2 style="color:blue;font-size:2em">Semaine non polluée</h2>'],
664 ['codecell',
665 'R',
666 'p_nn_exo = computeForecast(data, indices_np, "Neighbors", "Neighbors", '
667 'simtype="exo", horizon=H)\n'
668 'p_nn_mix = computeForecast(data, indices_np, "Neighbors", "Neighbors", '
669 'simtype="mix", horizon=H)\n'
670 'p_az = computeForecast(data, indices_np, "Average", "Zero", horizon=H) #, '
671 'memory=183)\n'
672 'p_pz = computeForecast(data, indices_np, "Persistence", "Zero", horizon=H, '
673 'same_day=TRUE)'],
674 ['codecell',
675 'R',
676 'e_nn_exo = computeError(data, p_nn_exo)\n'
677 'e_nn_mix = computeError(data, p_nn_mix)\n'
678 'e_az = computeError(data, p_az)\n'
679 'e_pz = computeError(data, p_pz)\n'
680 'options(repr.plot.width=9, repr.plot.height=7)\n'
681 'plotError(list(e_nn_mix, e_pz, e_az, e_nn_exo), cols=c(1,2,colors()[258], '
682 '4))\n'
683 '\n'
684 '# Noir: neighbors_mix, bleu: neighbors_exo, vert: moyenne, rouge: '
685 'persistence\n'
686 '\n'
687 'i_np = which.min(e_nn_exo$abs$indices)\n'
688 'i_p = which.max(e_nn_exo$abs$indices)'],
689 ['codecell',
690 'R',
691 'options(repr.plot.width=9, repr.plot.height=4)\n'
692 'par(mfrow=c(1,2))\n'
693 '\n'
694 'plotPredReal(data, p_nn_exo, i_np); title(paste("PredReal nn exo '
695 'day",i_np))\n'
696 'plotPredReal(data, p_nn_exo, i_p); title(paste("PredReal nn exo day",i_p))\n'
697 '\n'
698 'plotPredReal(data, p_nn_mix, i_np); title(paste("PredReal nn mix '
699 'day",i_np))\n'
700 'plotPredReal(data, p_nn_mix, i_p); title(paste("PredReal nn mix day",i_p))\n'
701 '\n'
702 'plotPredReal(data, p_az, i_np); title(paste("PredReal az day",i_np))\n'
703 'plotPredReal(data, p_az, i_p); title(paste("PredReal az day",i_p))\n'
704 '\n'
705 '# Bleu: prévue, noir: réalisée'],
706 ['codecell',
707 'R',
708 'par(mfrow=c(1,2))\n'
709 'f_np_exo = computeFilaments(data, p_nn_exo, i_np, plot=TRUE); '
710 'title(paste("Filaments nn exo day",i_np))\n'
711 'f_p_exo = computeFilaments(data, p_nn_exo, i_p, plot=TRUE); '
712 'title(paste("Filaments nn exo day",i_p))\n'
713 '\n'
714 'f_np_mix = computeFilaments(data, p_nn_mix, i_np, plot=TRUE); '
715 'title(paste("Filaments nn mix day",i_np))\n'
716 'f_p_mix = computeFilaments(data, p_nn_mix, i_p, plot=TRUE); '
717 'title(paste("Filaments nn mix day",i_p))'],
718 ['codecell',
719 'R',
720 'par(mfrow=c(1,2))\n'
721 'plotFilamentsBox(data, f_np_exo); title(paste("FilBox nn exo day",i_np))\n'
722 'plotFilamentsBox(data, f_p_exo); title(paste("FilBox nn exo day",i_p))\n'
723 '\n'
724 'plotFilamentsBox(data, f_np_mix); title(paste("FilBox nn mix day",i_np))\n'
725 'plotFilamentsBox(data, f_p_mix); title(paste("FilBox nn mix day",i_p))'],
726 ['codecell',
727 'R',
728 'par(mfrow=c(1,2))\n'
729 'plotRelVar(data, f_np_exo); title(paste("StdDev nn exo day",i_np))\n'
730 'plotRelVar(data, f_p_exo); title(paste("StdDev nn exo day",i_p))\n'
731 '\n'
732 'plotRelVar(data, f_np_mix); title(paste("StdDev nn mix day",i_np))\n'
733 'plotRelVar(data, f_p_mix); title(paste("StdDev nn mix day",i_p))\n'
734 '\n'
735 '# Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir'],
736 ['codecell',
737 'R',
738 'par(mfrow=c(1,2))\n'
739 'plotSimils(p_nn_exo, i_np); title(paste("Weights nn exo day",i_np))\n'
740 'plotSimils(p_nn_exo, i_p); title(paste("Weights nn exo day",i_p))\n'
741 '\n'
742 'plotSimils(p_nn_mix, i_np); title(paste("Weights nn mix day",i_np))\n'
743 'plotSimils(p_nn_mix, i_p); title(paste("Weights nn mix day",i_p)\n'
744 '\n'
745 '# - pollué à gauche, + pollué à droite'],
746 ['codecell',
747 'R',
748 '# Fenêtres sélectionnées dans ]0,10] / endo à gauche, exo à droite\n'
749 'p_nn_exo$getParams(i_np)$window\n'
750 'p_nn_exo$getParams(i_p)$window\n'
751 '\n'
752 'p_nn_mix$getParams(i_np)$window\n'
753 'p_nn_mix$getParams(i_p)$window'],
754 ['markdown',
755 'text',
756 '\n'
757 '\n'
758 '<h2>Bilan</h2>\n'
759 '\n'
760 "Problème difficile : on ne fait guère mieux qu'une naïve moyenne des "
761 'lendemains des jours\n'
762 "similaires dans le passé, ce qui n'est pas loin de prédire une série "
763 'constante égale à la\n'
764 'dernière valeur observée (méthode "zéro"). La persistence donne parfois de '
765 'bons résultats\n'
766 "mais est trop instable (sensibilité à l'argument <code>same_day</code>).\n"
767 '\n'
768 'Comment améliorer la méthode ?']]