Commit | Line | Data |
---|---|---|
4ba96933 BA |
1 | |
2 | % Default to the notebook output style | |
3 | ||
4 | ||
5 | ||
6 | ||
7 | % Inherit from the specified cell style. | |
8 | ||
9 | ||
10 | ||
11 | ||
12 | ||
13 | \documentclass[11pt]{article} | |
14 | ||
15 | ||
16 | ||
17 | \usepackage[T1]{fontenc} | |
18 | % Nicer default font (+ math font) than Computer Modern for most use cases | |
19 | \usepackage{mathpazo} | |
20 | ||
21 | % Basic figure setup, for now with no caption control since it's done | |
22 | % automatically by Pandoc (which extracts ![](path) syntax from Markdown). | |
23 | \usepackage{graphicx} | |
24 | % We will generate all images so they have a width \maxwidth. This means | |
25 | % that they will get their normal width if they fit onto the page, but | |
26 | % are scaled down if they would overflow the margins. | |
27 | \makeatletter | |
28 | \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth | |
29 | \else\Gin@nat@width\fi} | |
30 | \makeatother | |
31 | \let\Oldincludegraphics\includegraphics | |
32 | % Set max figure width to be 80% of text width, for now hardcoded. | |
33 | \renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=.8\maxwidth]{#1}} | |
34 | % Ensure that by default, figures have no caption (until we provide a | |
35 | % proper Figure object with a Caption API and a way to capture that | |
36 | % in the conversion process - todo). | |
37 | \usepackage{caption} | |
38 | \DeclareCaptionLabelFormat{nolabel}{} | |
39 | \captionsetup{labelformat=nolabel} | |
40 | ||
41 | \usepackage{adjustbox} % Used to constrain images to a maximum size | |
42 | \usepackage{xcolor} % Allow colors to be defined | |
43 | \usepackage{enumerate} % Needed for markdown enumerations to work | |
44 | \usepackage{geometry} % Used to adjust the document margins | |
45 | \usepackage{amsmath} % Equations | |
46 | \usepackage{amssymb} % Equations | |
47 | \usepackage{textcomp} % defines textquotesingle | |
48 | % Hack from http://tex.stackexchange.com/a/47451/13684: | |
49 | \AtBeginDocument{% | |
50 | \def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code | |
51 | } | |
52 | \usepackage{upquote} % Upright quotes for verbatim code | |
53 | \usepackage{eurosym} % defines \euro | |
54 | \usepackage[mathletters]{ucs} % Extended unicode (utf-8) support | |
55 | \usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document | |
56 | \usepackage{fancyvrb} % verbatim replacement that allows latex | |
57 | \usepackage{grffile} % extends the file name processing of package graphics | |
58 | % to support a larger range | |
59 | % The hyperref package gives us a pdf with properly built | |
60 | % internal navigation ('pdf bookmarks' for the table of contents, | |
61 | % internal cross-reference links, web links for URLs, etc.) | |
62 | \usepackage{hyperref} | |
63 | \usepackage{longtable} % longtable support required by pandoc >1.10 | |
64 | \usepackage{booktabs} % table support for pandoc > 1.12.2 | |
65 | \usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment) | |
66 | \usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout) | |
67 | % normalem makes italics be italics, not underlines | |
68 | ||
69 | ||
70 | ||
71 | ||
72 | % Colors for the hyperref package | |
73 | \definecolor{urlcolor}{rgb}{0,.145,.698} | |
74 | \definecolor{linkcolor}{rgb}{.71,0.21,0.01} | |
75 | \definecolor{citecolor}{rgb}{.12,.54,.11} | |
76 | ||
77 | % ANSI colors | |
78 | \definecolor{ansi-black}{HTML}{3E424D} | |
79 | \definecolor{ansi-black-intense}{HTML}{282C36} | |
80 | \definecolor{ansi-red}{HTML}{E75C58} | |
81 | \definecolor{ansi-red-intense}{HTML}{B22B31} | |
82 | \definecolor{ansi-green}{HTML}{00A250} | |
83 | \definecolor{ansi-green-intense}{HTML}{007427} | |
84 | \definecolor{ansi-yellow}{HTML}{DDB62B} | |
85 | \definecolor{ansi-yellow-intense}{HTML}{B27D12} | |
86 | \definecolor{ansi-blue}{HTML}{208FFB} | |
87 | \definecolor{ansi-blue-intense}{HTML}{0065CA} | |
88 | \definecolor{ansi-magenta}{HTML}{D160C4} | |
89 | \definecolor{ansi-magenta-intense}{HTML}{A03196} | |
90 | \definecolor{ansi-cyan}{HTML}{60C6C8} | |
91 | \definecolor{ansi-cyan-intense}{HTML}{258F8F} | |
92 | \definecolor{ansi-white}{HTML}{C5C1B4} | |
93 | \definecolor{ansi-white-intense}{HTML}{A1A6B2} | |
94 | ||
95 | % commands and environments needed by pandoc snippets | |
96 | % extracted from the output of `pandoc -s` | |
97 | \providecommand{\tightlist}{% | |
98 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} | |
99 | \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} | |
100 | % Add ',fontsize=\small' for more characters per line | |
101 | \newenvironment{Shaded}{}{} | |
102 | \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} | |
103 | \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}} | |
104 | \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} | |
105 | \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} | |
106 | \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}} | |
107 | \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} | |
108 | \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} | |
109 | \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}} | |
110 | \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}} | |
111 | \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} | |
112 | \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}} | |
113 | \newcommand{\RegionMarkerTok}[1]{{#1}} | |
114 | \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}} | |
115 | \newcommand{\NormalTok}[1]{{#1}} | |
116 | ||
117 | % Additional commands for more recent versions of Pandoc | |
118 | \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}} | |
119 | \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} | |
120 | \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}} | |
121 | \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}} | |
122 | \newcommand{\ImportTok}[1]{{#1}} | |
123 | \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}} | |
124 | \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} | |
125 | \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} | |
126 | \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}} | |
127 | \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}} | |
128 | \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}} | |
129 | \newcommand{\BuiltInTok}[1]{{#1}} | |
130 | \newcommand{\ExtensionTok}[1]{{#1}} | |
131 | \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}} | |
132 | \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}} | |
133 | \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} | |
134 | \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}} | |
135 | ||
136 | ||
137 | % Define a nice break command that doesn't care if a line doesn't already | |
138 | % exist. | |
139 | \def\br{\hspace*{\fill} \\* } | |
140 | % Math Jax compatability definitions | |
141 | \def\gt{>} | |
142 | \def\lt{<} | |
143 | % Document parameters | |
144 | \title{report\_P7\_H17} | |
145 | ||
146 | ||
147 | ||
148 | ||
149 | % Pygments definitions | |
150 | ||
151 | \makeatletter | |
152 | \def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax% | |
153 | \let\PY@ul=\relax \let\PY@tc=\relax% | |
154 | \let\PY@bc=\relax \let\PY@ff=\relax} | |
155 | \def\PY@tok#1{\csname PY@tok@#1\endcsname} | |
156 | \def\PY@toks#1+{\ifx\relax#1\empty\else% | |
157 | \PY@tok{#1}\expandafter\PY@toks\fi} | |
158 | \def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{% | |
159 | \PY@it{\PY@bf{\PY@ff{#1}}}}}}} | |
160 | \def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}} | |
161 | ||
162 | \expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} | |
163 | \expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} | |
164 | \expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}} | |
165 | \expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
166 | \expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
167 | \expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}} | |
168 | \expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} | |
169 | \expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} | |
170 | \expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
171 | \expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} | |
172 | \expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} | |
173 | \expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} | |
174 | \expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}} | |
175 | \expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} | |
176 | \expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}} | |
177 | \expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}} | |
178 | \expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}} | |
179 | \expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}} | |
180 | \expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
181 | \expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} | |
182 | \expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} | |
183 | \expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} | |
184 | \expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} | |
185 | \expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}} | |
186 | \expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} | |
187 | \expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} | |
188 | \expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
189 | \expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} | |
190 | \expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} | |
191 | \expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} | |
192 | \expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} | |
193 | \expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} | |
194 | \expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} | |
195 | \expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit} | |
196 | \expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf} | |
197 | \expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} | |
198 | \expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}} | |
199 | \expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} | |
200 | \expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} | |
201 | \expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
202 | \expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
203 | \expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
204 | \expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
205 | \expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} | |
206 | \expandafter\def\csname PY@tok@fm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} | |
207 | \expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} | |
208 | \expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} | |
209 | \expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} | |
210 | \expandafter\def\csname PY@tok@vm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} | |
211 | \expandafter\def\csname PY@tok@sa\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} | |
212 | \expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} | |
213 | \expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} | |
214 | \expandafter\def\csname PY@tok@dl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} | |
215 | \expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} | |
216 | \expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} | |
217 | \expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} | |
218 | \expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} | |
219 | \expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} | |
220 | \expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} | |
221 | \expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} | |
222 | \expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} | |
223 | \expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} | |
224 | \expandafter\def\csname PY@tok@ch\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} | |
225 | \expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} | |
226 | \expandafter\def\csname PY@tok@cpf\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} | |
227 | \expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} | |
228 | \expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} | |
229 | ||
230 | \def\PYZbs{\char`\\} | |
231 | \def\PYZus{\char`\_} | |
232 | \def\PYZob{\char`\{} | |
233 | \def\PYZcb{\char`\}} | |
234 | \def\PYZca{\char`\^} | |
235 | \def\PYZam{\char`\&} | |
236 | \def\PYZlt{\char`\<} | |
237 | \def\PYZgt{\char`\>} | |
238 | \def\PYZsh{\char`\#} | |
239 | \def\PYZpc{\char`\%} | |
240 | \def\PYZdl{\char`\$} | |
241 | \def\PYZhy{\char`\-} | |
242 | \def\PYZsq{\char`\'} | |
243 | \def\PYZdq{\char`\"} | |
244 | \def\PYZti{\char`\~} | |
245 | % for compatibility with earlier versions | |
246 | \def\PYZat{@} | |
247 | \def\PYZlb{[} | |
248 | \def\PYZrb{]} | |
249 | \makeatother | |
250 | ||
251 | ||
252 | % Exact colors from NB | |
253 | \definecolor{incolor}{rgb}{0.0, 0.0, 0.5} | |
254 | \definecolor{outcolor}{rgb}{0.545, 0.0, 0.0} | |
255 | ||
256 | ||
257 | ||
258 | ||
259 | % Prevent overflowing lines due to hard-to-break entities | |
260 | \sloppy | |
261 | % Setup hyperref package | |
262 | \hypersetup{ | |
263 | breaklinks=true, % so long urls are correctly broken across lines | |
264 | colorlinks=true, | |
265 | urlcolor=urlcolor, | |
266 | linkcolor=linkcolor, | |
267 | citecolor=citecolor, | |
268 | } | |
269 | % Slightly bigger margins than the latex defaults | |
270 | ||
271 | \geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in} | |
272 | ||
273 | ||
689aa1d3 | 274 | \graphicspath{{./figs/}} |
4ba96933 BA |
275 | |
276 | \begin{document} | |
277 | ||
278 | ||
279 | \maketitle | |
280 | ||
281 | ||
282 | ||
283 | ||
284 | \subsection*{Introduction} | |
285 | ||
286 | Cette partie montre les résultats obtenus via des variantes de | |
287 | l'algorithme décrit à la section 2, en utilisant le package présenté à | |
288 | la section 3. Cet algorithme est systématiquement comparé à deux | |
289 | approches naïves : * la moyenne des lendemains des jours "similaires" | |
290 | dans tout le passé, c'est-à-dire prédiction = moyenne de tous les mardis | |
291 | passé si le jour courant est un lndi par exemple. * la persistence, | |
292 | reproduisant le jour courant ou allant chercher le lendemain de la | |
293 | dernière journée "similaire" (même principe que ci-dessus ; argument | |
294 | "same\_day"). | |
295 | ||
296 | Concernant l'algorithme principal à voisins, trois variantes sont | |
297 | étudiées dans cette partie : * avec simtype="mix" et raccordement | |
298 | "Neighbors" dans le cas "non local", i.e. on va chercher des voisins | |
299 | n'importe où du moment qu'ils correspondent au premier élément d'un | |
300 | couple de deux jours consécutifs sans valeurs manquantes. * avec | |
301 | simtype="endo" + raccordement "Neighbors" puis simtype="none" + | |
302 | raccordement "Zero" (sans ajustement) dans le cas "local" : voisins de | |
303 | même niveau de pollution et même saison. | |
304 | ||
305 | Pour chaque période retenue -\/- chauffage, épandage, semaine non | |
306 | polluée -\/- les erreurs de prédiction sont d'abord affichées, puis | |
307 | quelques graphes de courbes réalisées/prévues (sur le jour "en moyenne | |
308 | le plus facile" à gauche, et "en moyenne le plus difficile" à droite). | |
309 | Ensuite plusieurs types de graphes apportant des précisions sur la | |
310 | nature et la difficulté du problème viennent compléter ces premières | |
311 | courbes. Concernant les graphes de filaments, la moitié gauche du graphe | |
312 | correspond aux jours similaires au jour courant, tandis que la moitié | |
313 | droite affiche les lendemains : ce sont donc les voisinages tels | |
314 | qu'utilisés dans l'algorithme. | |
315 | ||
316 | \begin{Verbatim}[commandchars=\\\{\}] | |
317 | {\color{incolor}In [{\color{incolor}1}]:} \PY{n}{library}\PY{p}{(}\PY{n}{talweg}\PY{p}{)} | |
318 | ||
319 | \PY{n}{P} \PY{o}{=} \PY{l+m+mi}{7} \PY{c+c1}{\PYZsh{}instant de prévision} | |
320 | \PY{n}{H} \PY{o}{=} \PY{l+m+mi}{17} \PY{c+c1}{\PYZsh{}horizon (en heures)} | |
321 | ||
322 | \PY{n}{ts\PYZus{}data} \PY{o}{=} \PY{n}{read}\PY{o}{.}\PY{n}{csv}\PY{p}{(}\PY{n}{system}\PY{o}{.}\PY{n}{file}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{extdata}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{pm10\PYZus{}mesures\PYZus{}H\PYZus{}loc\PYZus{}report.csv}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} | |
323 | \PY{n}{package}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{talweg}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)}\PY{p}{)} | |
324 | \PY{n}{exo\PYZus{}data} \PY{o}{=} \PY{n}{read}\PY{o}{.}\PY{n}{csv}\PY{p}{(}\PY{n}{system}\PY{o}{.}\PY{n}{file}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{extdata}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{meteo\PYZus{}extra\PYZus{}noNAs.csv}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{package}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{talweg}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)}\PY{p}{)} | |
325 | \PY{c+c1}{\PYZsh{} NOTE: \PYZsq{}GMT\PYZsq{} because DST gaps are filled and multiple values merged in above dataset.} | |
326 | \PY{c+c1}{\PYZsh{} Prediction from P+1 to P+H included.} | |
327 | \PY{n}{data} \PY{o}{=} \PY{n}{getData}\PY{p}{(}\PY{n}{ts\PYZus{}data}\PY{p}{,} \PY{n}{exo\PYZus{}data}\PY{p}{,} \PY{n}{input\PYZus{}tz} \PY{o}{=} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{GMT}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{working\PYZus{}tz}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{GMT}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{predict\PYZus{}at}\PY{o}{=}\PY{n}{P}\PY{p}{)} | |
328 | ||
329 | \PY{n}{indices\PYZus{}ch} \PY{o}{=} \PY{n}{seq}\PY{p}{(}\PY{k}{as}\PY{o}{.}\PY{n}{Date}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{2015\PYZhy{}01\PYZhy{}18}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)}\PY{p}{,}\PY{k}{as}\PY{o}{.}\PY{n}{Date}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{2015\PYZhy{}01\PYZhy{}24}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)}\PY{p}{,}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{days}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)} | |
330 | \PY{n}{indices\PYZus{}ep} \PY{o}{=} \PY{n}{seq}\PY{p}{(}\PY{k}{as}\PY{o}{.}\PY{n}{Date}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{2015\PYZhy{}03\PYZhy{}15}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)}\PY{p}{,}\PY{k}{as}\PY{o}{.}\PY{n}{Date}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{2015\PYZhy{}03\PYZhy{}21}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)}\PY{p}{,}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{days}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)} | |
331 | \PY{n}{indices\PYZus{}np} \PY{o}{=} \PY{n}{seq}\PY{p}{(}\PY{k}{as}\PY{o}{.}\PY{n}{Date}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{2015\PYZhy{}04\PYZhy{}26}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)}\PY{p}{,}\PY{k}{as}\PY{o}{.}\PY{n}{Date}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{2015\PYZhy{}05\PYZhy{}02}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)}\PY{p}{,}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{days}\PY{l+s+s2}{\PYZdq{}}\PY{p}{)} | |
332 | \end{Verbatim} | |
333 | ||
334 | \subsection*{Pollution par chauffage} | |
335 | ||
336 | \begin{Verbatim}[commandchars=\\\{\}] | |
337 | {\color{incolor}In [{\color{incolor}2}]:} \PY{n}{p1} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ch}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
338 | \PY{n}{simtype}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{mix}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{local}\PY{o}{=}\PY{n}{FALSE}\PY{p}{)} | |
339 | \PY{n}{p2} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ch}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
340 | \PY{n}{simtype}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{endo}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{local}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
341 | \PY{n}{p3} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ch}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Zero}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
342 | \PY{n}{simtype}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{none}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{local}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
343 | \PY{n}{p4} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ch}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Average}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Zero}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{)} | |
344 | \PY{n}{p5} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ch}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Persistence}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Zero}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
345 | \PY{n}{same\PYZus{}day}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
346 | \end{Verbatim} | |
347 | ||
348 | \begin{Verbatim}[commandchars=\\\{\}] | |
349 | {\color{incolor}In [{\color{incolor}3}]:} \PY{n}{e1} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
350 | \PY{n}{e2} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
351 | \PY{n}{e3} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p3}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
352 | \PY{n}{e4} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p4}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
353 | \PY{n}{e5} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p5}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
354 | \PY{n}{options}\PY{p}{(}\PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{width}\PY{o}{=}\PY{l+m+mi}{9}\PY{p}{,} \PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{height}\PY{o}{=}\PY{l+m+mi}{7}\PY{p}{)} | |
355 | \PY{n}{plotError}\PY{p}{(}\PY{n+nb}{list}\PY{p}{(}\PY{n}{e1}\PY{p}{,} \PY{n}{e5}\PY{p}{,} \PY{n}{e4}\PY{p}{,} \PY{n}{e2}\PY{p}{,} \PY{n}{e3}\PY{p}{)}\PY{p}{,} \PY{n}{cols}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{n}{colors}\PY{p}{(}\PY{p}{)}\PY{p}{[}\PY{l+m+mi}{258}\PY{p}{]}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{6}\PY{p}{)}\PY{p}{)} | |
356 | ||
357 | \PY{c+c1}{\PYZsh{} noir: Neighbors non\PYZhy{}local (p1), bleu: Neighbors local endo (p2),} | |
358 | \PY{c+c1}{\PYZsh{} mauve: Neighbors local none (p3), vert: moyenne (p4),} | |
359 | \PY{c+c1}{\PYZsh{} rouge: persistence (p5)} | |
360 | ||
361 | \PY{n}{sum\PYZus{}p123} \PY{o}{=} \PY{n}{e1}\PY{err}{\PYZdl{}}\PY{n+nb}{abs}\PY{err}{\PYZdl{}}\PY{n}{indices} \PY{o}{+} \PY{n}{e2}\PY{err}{\PYZdl{}}\PY{n+nb}{abs}\PY{err}{\PYZdl{}}\PY{n}{indices} \PY{o}{+} \PY{n}{e3}\PY{err}{\PYZdl{}}\PY{n+nb}{abs}\PY{err}{\PYZdl{}}\PY{n}{indices} | |
362 | \PY{n}{i\PYZus{}np} \PY{o}{=} \PY{n}{which}\PY{o}{.}\PY{n}{min}\PY{p}{(}\PY{n}{sum\PYZus{}p123}\PY{p}{)} \PY{c+c1}{\PYZsh{}indice de (veille de) jour \PYZdq{}facile\PYZdq{}} | |
363 | \PY{n}{i\PYZus{}p} \PY{o}{=} \PY{n}{which}\PY{o}{.}\PY{n}{max}\PY{p}{(}\PY{n}{sum\PYZus{}p123}\PY{p}{)} \PY{c+c1}{\PYZsh{}indice de (veille de) jour \PYZdq{}difficile\PYZdq{}} | |
364 | \end{Verbatim} | |
365 | ||
366 | \begin{center} | |
367 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_4_0.png} | |
368 | \end{center} | |
369 | { \hspace*{\fill} \\} | |
370 | ||
371 | L'erreur absolue dépasse 20 sur 1 à 2 jours suivant les modèles (graphe | |
372 | en haut à droite). C'est au-delà de ce que l'on aimerait voir (disons | |
373 | +/- 5 environ). Sur cet exemple le modèle à voisins "contraint" | |
374 | (local=TRUE) utilisant des pondérations basées sur les similarités de | |
375 | forme (simtype="endo") obtient en moyenne les meilleurs résultats, avec | |
376 | un MAPE restant en général inférieur à 30\% de 8h à 19h (7+1 à 7+12 : | |
377 | graphe en bas à gauche). | |
378 | ||
379 | \begin{Verbatim}[commandchars=\\\{\}] | |
380 | {\color{incolor}In [{\color{incolor}4}]:} \PY{n}{options}\PY{p}{(}\PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{width}\PY{o}{=}\PY{l+m+mi}{9}\PY{p}{,} \PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{height}\PY{o}{=}\PY{l+m+mi}{4}\PY{p}{)} | |
381 | \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
382 | ||
383 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
384 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
385 | ||
386 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
387 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
388 | ||
389 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p3}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p3 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
390 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p3}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p3 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
391 | ||
392 | \PY{c+c1}{\PYZsh{} Bleu: prévue, noir: réalisée} | |
393 | \end{Verbatim} | |
394 | ||
395 | \begin{center} | |
396 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_6_0.png} | |
397 | \end{center} | |
398 | { \hspace*{\fill} \\} | |
399 | ||
400 | \begin{center} | |
401 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_6_1.png} | |
402 | \end{center} | |
403 | { \hspace*{\fill} \\} | |
404 | ||
405 | \begin{center} | |
406 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_6_2.png} | |
407 | \end{center} | |
408 | { \hspace*{\fill} \\} | |
409 | ||
410 | Le jour "facile à prévoir", à gauche, se décompose en deux modes : un | |
411 | léger vers 10h (7+3), puis un beaucoup plus marqué vers 19h (7+12). Ces | |
412 | deux modes sont retrouvés par les trois variantes de l'algorithme à | |
413 | voisins, bien que l'amplitude soit mal prédite. Concernant le jour | |
414 | "difficile à prévoir" il y a deux pics en tout début et toute fin de | |
415 | journée (à 9h et 23h), qui ne sont pas du tout anticipés par le | |
416 | programme ; la grande amplitude de ces pics explique alors l'intensité | |
417 | de l'erreur observée. | |
418 | ||
419 | \begin{Verbatim}[commandchars=\\\{\}] | |
420 | {\color{incolor}In [{\color{incolor}5}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
421 | \PY{n}{f\PYZus{}np1} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
422 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
423 | \PY{n}{f\PYZus{}p1} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
424 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
425 | ||
426 | \PY{n}{f\PYZus{}np2} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
427 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
428 | \PY{n}{f\PYZus{}p2} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
429 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
430 | \end{Verbatim} | |
431 | ||
432 | \begin{center} | |
433 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_8_0.png} | |
434 | \end{center} | |
435 | { \hspace*{\fill} \\} | |
436 | ||
437 | \begin{center} | |
438 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_8_1.png} | |
439 | \end{center} | |
440 | { \hspace*{\fill} \\} | |
441 | ||
442 | Les voisins du jour courant (période de 24h allant de 8h à 7h le | |
443 | lendemain) sont affichés avec un trait d'autant plus sombre qu'ils sont | |
444 | proches. On constate dans le cas non contraint (en haut) une grande | |
445 | variabilité des lendemains, très nette sur le graphe en haut à droite. | |
446 | Ceci indique une faible corrélation entre la forme d'une courbe sur une | |
447 | période de 24h et la forme sur les 24h suivantes ; \textbf{cette | |
448 | observation est la source des difficultés rencontrées par l'algorithme | |
449 | sur ce jeu de données.} | |
450 | ||
451 | \begin{Verbatim}[commandchars=\\\{\}] | |
452 | {\color{incolor}In [{\color{incolor}6}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
453 | \PY{n}{plotFilamentsBox}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}np1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{FilBox p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
454 | \PY{n}{plotFilamentsBox}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}p1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{FilBox p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
455 | ||
456 | \PY{c+c1}{\PYZsh{} En pointillés la courbe du jour courant + lendemain (à prédire)} | |
457 | \end{Verbatim} | |
458 | ||
459 | \begin{center} | |
460 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_10_0.png} | |
461 | \end{center} | |
462 | { \hspace*{\fill} \\} | |
463 | ||
464 | Sur cette boxplot fonctionnelle (voir la fonction fboxplot() du package | |
465 | R "rainbow") l'on constate essentiellement deux choses : le lendemain | |
466 | d'un voisin "normal" peut se révéler être une courbe atypique, fort | |
467 | éloignée de ce que l'on souhaite prédire (courbes bleue et rouge à | |
468 | gauche) ; et, dans le cas d'une courbe à prédire atypique (à droite) la | |
469 | plupart des voisins sont trop éloignés de la forme à prédire et forcent | |
470 | ainsi un aplatissement de la prédiction. | |
471 | ||
472 | \begin{Verbatim}[commandchars=\\\{\}] | |
473 | {\color{incolor}In [{\color{incolor}7}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
474 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}np1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
475 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}p1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
476 | ||
477 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}np2}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
478 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}p2}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
479 | ||
480 | \PY{c+c1}{\PYZsh{} Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir} | |
481 | \end{Verbatim} | |
482 | ||
483 | \begin{center} | |
484 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_12_0.png} | |
485 | \end{center} | |
486 | { \hspace*{\fill} \\} | |
487 | ||
488 | \begin{center} | |
489 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_12_1.png} | |
490 | \end{center} | |
491 | { \hspace*{\fill} \\} | |
492 | ||
493 | Ces graphes viennent confirmer l'impression visuelle après observation | |
494 | des filaments. En effet, la variabilité globale en rouge (écart-type | |
495 | heure par heure sur l'ensemble des couples "aujourd'hui/lendemain" du | |
496 | passé) devrait rester nettement au-dessus de la variabilité locale, | |
497 | calculée respectivement sur un voisinage d'une soixantaine de jours | |
498 | (pour p1) et d'une dizaine de jours (pour p2). Or on constate que ce | |
499 | n'est pas du tout le cas sur la période "lendemain", sauf en partie pour | |
500 | p2 le jour 4 \(-\) mais ce n'est pas suffisant. | |
501 | ||
502 | \begin{Verbatim}[commandchars=\\\{\}] | |
503 | {\color{incolor}In [{\color{incolor}8}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
504 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
505 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
506 | ||
507 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
508 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
509 | ||
510 | \PY{c+c1}{\PYZsh{} \PYZhy{} pollué à gauche, + pollué à droite} | |
511 | \end{Verbatim} | |
512 | ||
513 | \begin{center} | |
514 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_14_0.png} | |
515 | \end{center} | |
516 | { \hspace*{\fill} \\} | |
517 | ||
518 | \begin{center} | |
519 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_14_1.png} | |
520 | \end{center} | |
521 | { \hspace*{\fill} \\} | |
522 | ||
523 | Les poids se concentrent près de 0 dans le cas "non local" (p1), et se | |
524 | répartissent assez uniformément dans \([0,0.2]\) dans le cas "local" | |
525 | (p2). C'est ce que l'on souhaite observer pour éviter d'effectuer une | |
526 | simple moyenne. | |
527 | ||
528 | \begin{Verbatim}[commandchars=\\\{\}] | |
529 | {\color{incolor}In [{\color{incolor}9}]:} \PY{c+c1}{\PYZsh{} Fenêtres sélectionnées dans ]0,7] / non\PYZhy{}loc 2 premières lignes, loc ensuite} | |
530 | \PY{n}{p1}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
531 | \PY{n}{p1}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
532 | ||
533 | \PY{n}{p2}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
534 | \PY{n}{p2}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
535 | \end{Verbatim} | |
536 | ||
537 | \begin{enumerate*} | |
538 | \item 0.168824188864717 | |
539 | \item 0.336969608767438 | |
540 | \end{enumerate*} | |
541 | ||
542 | ||
543 | \begin{enumerate*} | |
544 | \item 0.18004595760919 | |
545 | \item 0.353963007643311 | |
546 | \end{enumerate*} | |
547 | ||
548 | ||
549 | 1.16620655388085 | |
550 | ||
551 | ||
552 | 1.18148881881259 | |
553 | ||
554 | ||
555 | \subsection*{Pollution par épandage} | |
556 | ||
557 | \begin{Verbatim}[commandchars=\\\{\}] | |
558 | {\color{incolor}In [{\color{incolor}10}]:} \PY{n}{p1} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ep}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
559 | \PY{n}{simtype}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{mix}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{local}\PY{o}{=}\PY{n}{FALSE}\PY{p}{)} | |
560 | \PY{n}{p2} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ep}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
561 | \PY{n}{simtype}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{endo}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{local}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
562 | \PY{n}{p3} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ep}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Zero}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
563 | \PY{n}{simtype}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{none}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{local}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
564 | \PY{n}{p4} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ep}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Average}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Zero}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{)} | |
565 | \PY{n}{p5} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}ep}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Persistence}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Zero}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
566 | \PY{n}{same\PYZus{}day}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
567 | \end{Verbatim} | |
568 | ||
569 | \begin{Verbatim}[commandchars=\\\{\}] | |
570 | {\color{incolor}In [{\color{incolor}11}]:} \PY{n}{e1} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
571 | \PY{n}{e2} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
572 | \PY{n}{e3} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p3}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
573 | \PY{n}{e4} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p4}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
574 | \PY{n}{e5} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p5}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
575 | \PY{n}{options}\PY{p}{(}\PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{width}\PY{o}{=}\PY{l+m+mi}{9}\PY{p}{,} \PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{height}\PY{o}{=}\PY{l+m+mi}{7}\PY{p}{)} | |
576 | \PY{n}{plotError}\PY{p}{(}\PY{n+nb}{list}\PY{p}{(}\PY{n}{e1}\PY{p}{,} \PY{n}{e5}\PY{p}{,} \PY{n}{e4}\PY{p}{,} \PY{n}{e2}\PY{p}{,} \PY{n}{e3}\PY{p}{)}\PY{p}{,} \PY{n}{cols}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{n}{colors}\PY{p}{(}\PY{p}{)}\PY{p}{[}\PY{l+m+mi}{258}\PY{p}{]}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{6}\PY{p}{)}\PY{p}{)} | |
577 | ||
578 | \PY{c+c1}{\PYZsh{} noir: Neighbors non\PYZhy{}local (p1), bleu: Neighbors local endo (p2),} | |
579 | \PY{c+c1}{\PYZsh{} mauve: Neighbors local none (p3), vert: moyenne (p4),} | |
580 | \PY{c+c1}{\PYZsh{} rouge: persistence (p5)} | |
581 | ||
582 | \PY{n}{sum\PYZus{}p123} \PY{o}{=} \PY{n}{e1}\PY{err}{\PYZdl{}}\PY{n+nb}{abs}\PY{err}{\PYZdl{}}\PY{n}{indices} \PY{o}{+} \PY{n}{e2}\PY{err}{\PYZdl{}}\PY{n+nb}{abs}\PY{err}{\PYZdl{}}\PY{n}{indices} \PY{o}{+} \PY{n}{e3}\PY{err}{\PYZdl{}}\PY{n+nb}{abs}\PY{err}{\PYZdl{}}\PY{n}{indices} | |
583 | \PY{n}{i\PYZus{}np} \PY{o}{=} \PY{n}{which}\PY{o}{.}\PY{n}{min}\PY{p}{(}\PY{n}{sum\PYZus{}p123}\PY{p}{)} \PY{c+c1}{\PYZsh{}indice de (veille de) jour \PYZdq{}facile\PYZdq{}} | |
584 | \PY{n}{i\PYZus{}p} \PY{o}{=} \PY{n}{which}\PY{o}{.}\PY{n}{max}\PY{p}{(}\PY{n}{sum\PYZus{}p123}\PY{p}{)} \PY{c+c1}{\PYZsh{}indice de (veille de) jour \PYZdq{}difficile\PYZdq{}} | |
585 | \end{Verbatim} | |
586 | ||
587 | \begin{center} | |
588 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_19_0.png} | |
589 | \end{center} | |
590 | { \hspace*{\fill} \\} | |
591 | ||
592 | Il est difficile dans ce cas de déterminer une méthode meilleure que les | |
593 | autres : elles donnent toutes de plutôt mauvais résultats, avec une | |
594 | erreur absolue moyennée sur la journée dépassant presque toujours 15 | |
595 | (graphe en haut à droite). | |
596 | ||
597 | \begin{Verbatim}[commandchars=\\\{\}] | |
598 | {\color{incolor}In [{\color{incolor}12}]:} \PY{n}{options}\PY{p}{(}\PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{width}\PY{o}{=}\PY{l+m+mi}{9}\PY{p}{,} \PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{height}\PY{o}{=}\PY{l+m+mi}{4}\PY{p}{)} | |
599 | \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
600 | ||
601 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
602 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
603 | ||
604 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
605 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
606 | ||
607 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p3}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p3 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
608 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p3}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p3 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
609 | ||
610 | \PY{c+c1}{\PYZsh{} Bleu: prévue, noir: réalisée} | |
611 | \end{Verbatim} | |
612 | ||
613 | \begin{center} | |
614 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_21_0.png} | |
615 | \end{center} | |
616 | { \hspace*{\fill} \\} | |
617 | ||
618 | \begin{center} | |
619 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_21_1.png} | |
620 | \end{center} | |
621 | { \hspace*{\fill} \\} | |
622 | ||
623 | \begin{center} | |
624 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_21_2.png} | |
625 | \end{center} | |
626 | { \hspace*{\fill} \\} | |
627 | ||
628 | Dans le cas d'un jour "facile" à prédire \(-\) à gauche \(-\) la forme | |
629 | est plus ou moins retrouvée, mais le niveau moyen est trop bas (courbe | |
630 | en bleu). Concernant le jour "difficile" à droite, non seulement la | |
631 | forme n'est pas anticipée mais surtout le niveau prédit est très | |
632 | inférieur au niveau de pollution observé. Comme on le voit ci-dessous | |
633 | cela découle d'un manque de voisins au comportement similaire. | |
634 | ||
635 | \begin{Verbatim}[commandchars=\\\{\}] | |
636 | {\color{incolor}In [{\color{incolor}13}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
637 | \PY{n}{f\PYZus{}np1} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
638 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
639 | \PY{n}{f\PYZus{}p1} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
640 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
641 | ||
642 | \PY{n}{f\PYZus{}np2} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
643 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
644 | \PY{n}{f\PYZus{}p2} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
645 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
646 | \end{Verbatim} | |
647 | ||
648 | \begin{center} | |
649 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_23_0.png} | |
650 | \end{center} | |
651 | { \hspace*{\fill} \\} | |
652 | ||
653 | \begin{center} | |
654 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_23_1.png} | |
655 | \end{center} | |
656 | { \hspace*{\fill} \\} | |
657 | ||
658 | Les observations sont les mêmes qu'au paragraphe précédent : trop de | |
659 | variabilité des lendemains (et même des voisins du jour courant). | |
660 | ||
661 | \begin{Verbatim}[commandchars=\\\{\}] | |
662 | {\color{incolor}In [{\color{incolor}14}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
663 | \PY{n}{plotFilamentsBox}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}np1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{FilBox p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
664 | \PY{n}{plotFilamentsBox}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}p1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{FilBox p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
665 | ||
666 | \PY{c+c1}{\PYZsh{} En pointillés la courbe du jour courant + lendemain (à prédire)} | |
667 | \end{Verbatim} | |
668 | ||
669 | \begin{center} | |
670 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_25_0.png} | |
671 | \end{center} | |
672 | { \hspace*{\fill} \\} | |
673 | ||
674 | On constate la présence d'un voisin au lendemain complètement atypique | |
675 | avec un pic en début de journée (courbe en vert à gauche), et d'un autre | |
676 | phénomène semblable avec la courbe rouge sur le graphe de droite. Ajouté | |
677 | au fait que le lendemain à prévoir est lui-même un jour "hors norme", | |
678 | cela montre l'impossibilité de bien prévoir une courbe en utilisant | |
679 | l'algorithme à voisins. | |
680 | ||
681 | \begin{Verbatim}[commandchars=\\\{\}] | |
682 | {\color{incolor}In [{\color{incolor}15}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
683 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}np1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
684 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}p1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
685 | ||
686 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}np2}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
687 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}p2}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
688 | ||
689 | \PY{c+c1}{\PYZsh{} Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir} | |
690 | \end{Verbatim} | |
691 | ||
692 | \begin{center} | |
693 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_27_0.png} | |
694 | \end{center} | |
695 | { \hspace*{\fill} \\} | |
696 | ||
697 | \begin{center} | |
698 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_27_1.png} | |
699 | \end{center} | |
700 | { \hspace*{\fill} \\} | |
701 | ||
702 | Comme précédemment les variabilités locales et globales sont confondues | |
703 | dans les parties droites des graphes \(-\) sauf pour la version "locale" | |
704 | sur le jour "facile" ; mais cette bonne propriété n'est pas suffisante | |
705 | si l'on ne trouve pas les bons poids à appliquer. | |
706 | ||
707 | \begin{Verbatim}[commandchars=\\\{\}] | |
708 | {\color{incolor}In [{\color{incolor}16}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
709 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
710 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
711 | ||
712 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
713 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
714 | ||
715 | \PY{c+c1}{\PYZsh{} \PYZhy{} pollué à gauche, + pollué à droite} | |
716 | \end{Verbatim} | |
717 | ||
718 | \begin{center} | |
719 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_29_0.png} | |
720 | \end{center} | |
721 | { \hspace*{\fill} \\} | |
722 | ||
723 | \begin{center} | |
724 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_29_1.png} | |
725 | \end{center} | |
726 | { \hspace*{\fill} \\} | |
727 | ||
728 | En comparaison avec le pragraphe précédent on retrouve le même (bon) | |
729 | comportement des poids pour la version "non locale". En revanche la | |
730 | fenêtre optimisée est trop grande sur le jour "facile" pour la méthode | |
731 | "locale" (voir affichage ci-dessous) : il en résulte des poids tous | |
732 | semblables autour de 0.084, l'algorithme effectue donc une moyenne | |
733 | simple \(-\) expliquant pourquoi les courbes mauve et bleue sont très | |
734 | proches sur le graphe d'erreurs. | |
735 | ||
736 | \begin{Verbatim}[commandchars=\\\{\}] | |
737 | {\color{incolor}In [{\color{incolor}17}]:} \PY{c+c1}{\PYZsh{} Fenêtres sélectionnées dans ]0,7] / non\PYZhy{}loc 2 premières lignes, loc ensuite} | |
738 | \PY{n}{p1}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
739 | \PY{n}{p1}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
740 | ||
741 | \PY{n}{p2}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
742 | \PY{n}{p2}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
743 | \end{Verbatim} | |
744 | ||
745 | \begin{enumerate*} | |
746 | \item 0.206604806619633 | |
747 | \item 0.661854053860987 | |
748 | \end{enumerate*} | |
749 | ||
750 | ||
751 | \begin{enumerate*} | |
752 | \item 0.367945958636072 | |
753 | \item 0.244429852740092 | |
754 | \end{enumerate*} | |
755 | ||
756 | ||
757 | 6.99993248587025 | |
758 | ||
759 | ||
760 | 1.24825506305085 | |
761 | ||
762 | ||
763 | \subsection*{Semaine non polluée} | |
764 | ||
765 | \begin{Verbatim}[commandchars=\\\{\}] | |
766 | {\color{incolor}In [{\color{incolor}18}]:} \PY{n}{p1} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}np}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
767 | \PY{n}{simtype}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{mix}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{local}\PY{o}{=}\PY{n}{FALSE}\PY{p}{)} | |
768 | \PY{n}{p2} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}np}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
769 | \PY{n}{simtype}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{endo}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{local}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
770 | \PY{n}{p3} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}np}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Neighbors}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Zero}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
771 | \PY{n}{simtype}\PY{o}{=}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{none}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{local}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
772 | \PY{n}{p4} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}np}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Average}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Zero}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{)} | |
773 | \PY{n}{p5} \PY{o}{=} \PY{n}{computeForecast}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{indices\PYZus{}np}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Persistence}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Zero}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{n}{horizon}\PY{o}{=}\PY{n}{H}\PY{p}{,} | |
774 | \PY{n}{same\PYZus{}day}\PY{o}{=}\PY{n}{FALSE}\PY{p}{)} | |
775 | \end{Verbatim} | |
776 | ||
777 | \begin{Verbatim}[commandchars=\\\{\}] | |
778 | {\color{incolor}In [{\color{incolor}19}]:} \PY{n}{e1} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
779 | \PY{n}{e2} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
780 | \PY{n}{e3} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p3}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
781 | \PY{n}{e4} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p4}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
782 | \PY{n}{e5} \PY{o}{=} \PY{n}{computeError}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p5}\PY{p}{,} \PY{n}{H}\PY{p}{)} | |
783 | \PY{n}{options}\PY{p}{(}\PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{width}\PY{o}{=}\PY{l+m+mi}{9}\PY{p}{,} \PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{height}\PY{o}{=}\PY{l+m+mi}{7}\PY{p}{)} | |
784 | \PY{n}{plotError}\PY{p}{(}\PY{n+nb}{list}\PY{p}{(}\PY{n}{e1}\PY{p}{,} \PY{n}{e5}\PY{p}{,} \PY{n}{e4}\PY{p}{,} \PY{n}{e2}\PY{p}{,} \PY{n}{e3}\PY{p}{)}\PY{p}{,} \PY{n}{cols}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{,}\PY{n}{colors}\PY{p}{(}\PY{p}{)}\PY{p}{[}\PY{l+m+mi}{258}\PY{p}{]}\PY{p}{,}\PY{l+m+mi}{4}\PY{p}{,}\PY{l+m+mi}{6}\PY{p}{)}\PY{p}{)} | |
785 | ||
786 | \PY{c+c1}{\PYZsh{} noir: Neighbors non\PYZhy{}local (p1), bleu: Neighbors local endo (p2),} | |
787 | \PY{c+c1}{\PYZsh{} mauve: Neighbors local none (p3), vert: moyenne (p4),} | |
788 | \PY{c+c1}{\PYZsh{} rouge: persistence (p5)} | |
789 | ||
790 | \PY{n}{sum\PYZus{}p123} \PY{o}{=} \PY{n}{e1}\PY{err}{\PYZdl{}}\PY{n+nb}{abs}\PY{err}{\PYZdl{}}\PY{n}{indices} \PY{o}{+} \PY{n}{e2}\PY{err}{\PYZdl{}}\PY{n+nb}{abs}\PY{err}{\PYZdl{}}\PY{n}{indices} \PY{o}{+} \PY{n}{e3}\PY{err}{\PYZdl{}}\PY{n+nb}{abs}\PY{err}{\PYZdl{}}\PY{n}{indices} | |
791 | \PY{n}{i\PYZus{}np} \PY{o}{=} \PY{n}{which}\PY{o}{.}\PY{n}{min}\PY{p}{(}\PY{n}{sum\PYZus{}p123}\PY{p}{)} \PY{c+c1}{\PYZsh{}indice de (veille de) jour \PYZdq{}facile\PYZdq{}} | |
792 | \PY{n}{i\PYZus{}p} \PY{o}{=} \PY{n}{which}\PY{o}{.}\PY{n}{max}\PY{p}{(}\PY{n}{sum\PYZus{}p123}\PY{p}{)} \PY{c+c1}{\PYZsh{}indice de (veille de) jour \PYZdq{}difficile\PYZdq{}} | |
793 | \end{Verbatim} | |
794 | ||
795 | \begin{center} | |
796 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_34_0.png} | |
797 | \end{center} | |
798 | { \hspace*{\fill} \\} | |
799 | ||
800 | Dans ce cas plus favorable les intensité des erreurs absolues ont | |
801 | clairement diminué : elles restent souvent en dessous de 5. En revanche | |
802 | le MAPE moyen reste au-delà de 20\%, et même souvent plus de 30\%. Comme | |
803 | dans le cas de l'épandage on constate une croissance globale de la | |
804 | courbe journalière d'erreur absolue moyenne (en haut à gauche) ; ceci | |
805 | peut être dû au fait que l'on ajuste le niveau du jour à prédire en le | |
806 | recollant sur la dernière valeur observée. | |
807 | ||
808 | \begin{Verbatim}[commandchars=\\\{\}] | |
809 | {\color{incolor}In [{\color{incolor}20}]:} \PY{n}{options}\PY{p}{(}\PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{width}\PY{o}{=}\PY{l+m+mi}{9}\PY{p}{,} \PY{n+nb}{repr}\PY{o}{.}\PY{n}{plot}\PY{o}{.}\PY{n}{height}\PY{o}{=}\PY{l+m+mi}{4}\PY{p}{)} | |
810 | \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
811 | ||
812 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
813 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
814 | ||
815 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
816 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
817 | ||
818 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p3}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p3 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
819 | \PY{n}{plotPredReal}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p3}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{PredReal p3 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
820 | ||
821 | \PY{c+c1}{\PYZsh{} Bleu: prévue, noir: réalisée} | |
822 | \end{Verbatim} | |
823 | ||
824 | \begin{center} | |
825 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_36_0.png} | |
826 | \end{center} | |
827 | { \hspace*{\fill} \\} | |
828 | ||
829 | \begin{center} | |
830 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_36_1.png} | |
831 | \end{center} | |
832 | { \hspace*{\fill} \\} | |
833 | ||
834 | \begin{center} | |
835 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_36_2.png} | |
836 | \end{center} | |
837 | { \hspace*{\fill} \\} | |
838 | ||
839 | La forme est raisonnablement retrouvée pour les méthodes "locales", | |
840 | l'autre version lissant trop les prédictions. Le biais reste cependant | |
841 | important, surtout en fin de journée sur le jour "difficile". | |
842 | ||
843 | \begin{Verbatim}[commandchars=\\\{\}] | |
844 | {\color{incolor}In [{\color{incolor}21}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
845 | \PY{n}{f\PYZus{}np1} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
846 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
847 | \PY{n}{f\PYZus{}p1} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
848 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
849 | ||
850 | \PY{n}{f\PYZus{}np2} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
851 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
852 | \PY{n}{f\PYZus{}p2} \PY{o}{=} \PY{n}{computeFilaments}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{,} \PY{n}{plot}\PY{o}{=}\PY{n}{TRUE}\PY{p}{)} | |
853 | \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Filaments p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
854 | \end{Verbatim} | |
855 | ||
856 | \begin{center} | |
857 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_38_0.png} | |
858 | \end{center} | |
859 | { \hspace*{\fill} \\} | |
860 | ||
861 | \begin{center} | |
862 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_38_1.png} | |
863 | \end{center} | |
864 | { \hspace*{\fill} \\} | |
865 | ||
866 | Les graphes de filaments ont encore la même allure, avec une assez | |
867 | grande variabilité observée. Cette observation est cependant trompeuse, | |
868 | comme l'indique plus bas le graphe de variabilité relative. | |
869 | ||
870 | \begin{Verbatim}[commandchars=\\\{\}] | |
871 | {\color{incolor}In [{\color{incolor}22}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
872 | \PY{n}{plotFilamentsBox}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}np1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{FilBox p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
873 | \PY{n}{plotFilamentsBox}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}p1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{FilBox p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
874 | ||
875 | \PY{c+c1}{\PYZsh{} En pointillés la courbe du jour courant + lendemain (à prédire)} | |
876 | \end{Verbatim} | |
877 | ||
878 | \begin{center} | |
879 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_40_0.png} | |
880 | \end{center} | |
881 | { \hspace*{\fill} \\} | |
882 | ||
883 | On peut réappliquer les mêmes remarques qu'auparavant sur les boxplots | |
884 | fonctionnels : lendemains de voisins atypiques, courbe à prévoir | |
885 | elle-même légèrement "hors norme". | |
886 | ||
887 | \begin{Verbatim}[commandchars=\\\{\}] | |
888 | {\color{incolor}In [{\color{incolor}23}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
889 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}np1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
890 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}p1}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
891 | ||
892 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}np2}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
893 | \PY{n}{plotRelVar}\PY{p}{(}\PY{n}{data}\PY{p}{,} \PY{n}{f\PYZus{}p2}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{StdDev p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
894 | ||
895 | \PY{c+c1}{\PYZsh{} Variabilité globale en rouge ; sur les 60 voisins (+ lendemains) en noir} | |
896 | \end{Verbatim} | |
897 | ||
898 | \begin{center} | |
899 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_42_0.png} | |
900 | \end{center} | |
901 | { \hspace*{\fill} \\} | |
902 | ||
903 | \begin{center} | |
904 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_42_1.png} | |
905 | \end{center} | |
906 | { \hspace*{\fill} \\} | |
907 | ||
908 | Cette fois la situation idéale est observée : la variabilité globale est | |
909 | nettement au-dessus de la variabilité locale. Bien que cela ne suffise | |
910 | pas à obtenir de bonnes prédictions de forme, on constate au moins | |
911 | l'amélioration dans la prédiction du niveau. | |
912 | ||
913 | \begin{Verbatim}[commandchars=\\\{\}] | |
914 | {\color{incolor}In [{\color{incolor}24}]:} \PY{n}{par}\PY{p}{(}\PY{n}{mfrow}\PY{o}{=}\PY{n}{c}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{,}\PY{l+m+mi}{2}\PY{p}{)}\PY{p}{)} | |
915 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
916 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p1}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p1 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
917 | ||
918 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{p}{)} | |
919 | \PY{n}{plotSimils}\PY{p}{(}\PY{n}{p2}\PY{p}{,} \PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{;} \PY{n}{title}\PY{p}{(}\PY{n}{paste}\PY{p}{(}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Weights p2 day}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{p}{)} | |
920 | ||
921 | \PY{c+c1}{\PYZsh{} \PYZhy{} pollué à gauche, + pollué à droite} | |
922 | \end{Verbatim} | |
923 | ||
924 | \begin{center} | |
925 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_44_0.png} | |
926 | \end{center} | |
927 | { \hspace*{\fill} \\} | |
928 | ||
929 | \begin{center} | |
930 | \adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_44_1.png} | |
931 | \end{center} | |
932 | { \hspace*{\fill} \\} | |
933 | ||
934 | Concernant les poids en revanche, deux cas a priori mauvais se cumulent | |
935 | : * les poids dans le cas "non local" ne sont pas assez concentrés | |
936 | autour de 0, menant à un lissage trop fort \(-\) comme observé sur les | |
937 | graphes des courbes réalisées/prévues ; * les poids dans le cas "local" | |
938 | sont trop semblables (à cause de la trop grande fenêtre optimisée par | |
939 | validation croisée, cf. ci-dessous), résultant encore en une moyenne | |
940 | simple \(-\) mais sur moins de jours, plus proches du jour courant. | |
941 | ||
942 | \begin{Verbatim}[commandchars=\\\{\}] | |
943 | {\color{incolor}In [{\color{incolor}25}]:} \PY{c+c1}{\PYZsh{} Fenêtres sélectionnées dans ]0,7] / non\PYZhy{}loc 2 premières lignes, loc ensuite} | |
944 | \PY{n}{p1}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
945 | \PY{n}{p1}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
946 | ||
947 | \PY{n}{p2}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}np}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
948 | \PY{n}{p2}\PY{err}{\PYZdl{}}\PY{n}{getParams}\PY{p}{(}\PY{n}{i\PYZus{}p}\PY{p}{)}\PY{err}{\PYZdl{}}\PY{n}{window} | |
949 | \end{Verbatim} | |
950 | ||
951 | \begin{enumerate*} | |
952 | \item 0.205055690975915 | |
953 | \item 0.703482647754766 | |
954 | \end{enumerate*} | |
955 | ||
956 | ||
957 | \begin{enumerate*} | |
958 | \item 1.1038650998802 | |
959 | \item 0.885155748316133 | |
960 | \end{enumerate*} | |
961 | ||
962 | ||
963 | 3.64336124381868 | |
964 | ||
965 | ||
966 | 6.99994501761361 | |
967 | ||
968 | ||
969 | \subsection*{Bilan} | |
970 | ||
971 | Nos algorithmes à voisins ne sont pas adaptés à ce jeu de données où la | |
972 | forme varie considérablement d'un jour à l'autre. Plus généralement | |
973 | cette décorrélation de forme rend ardue la tâche de prévision pour toute | |
974 | autre méthode \(-\) du moins, nous ne savons pas comment procéder pour | |
975 | parvenir à une bonne précision. | |
976 | ||
977 | Toutefois, un espoir reste permis par exemple en aggréger les courbes | |
978 | spatialement (sur plusieurs stations situées dans la même agglomération | |
979 | ou dans une même zone). | |
980 | ||
981 | ||
982 | % Add a bibliography block to the postdoc | |
983 | ||
984 | ||
985 | ||
986 | \end{document} |