TODO: check my plots, re-run reports with relative variability
[talweg.git] / reports / report_2017-03-01.7h_zero.ipynb
similarity index 80%
rename from reports/report_2017-03-01.ipynb
rename to reports/report_2017-03-01.7h_zero.ipynb
index acbdfd0..cf51e90 100644 (file)
@@ -35,7 +35,7 @@
     " * same_season=FALSE : les indices pour la validation croisée ne tiennent pas compte des saisons\n",
     " * mix_strategy=\"mult\" : on multiplie les poids (au lieu d'en éteindre)\n",
     "\n",
-    "J'ai systématiquement comparé à deux autres approches : la persistence et la moyennes des lendemains des jours \"similaires\" dans tout le passé ; à chaque fois sans prédiction du saut (sauf pour Neighbors : prédiction basée sur les poids calculés).\n",
+    "J'ai systématiquement comparé à deux autres approches : la persistence et la répétition de la dernière valeur observée (sur tout l'horizon, donc \"zero\") ; à chaque fois sans prédiction du saut (sauf pour Neighbors : prédiction basée sur les poids calculés).\n",
     "\n",
     "Ensuite j'affiche les erreurs, quelques courbes prévues/mesurées, quelques filaments puis les histogrammes de quelques poids. Concernant les graphes de filaments, la moitié gauche du graphe correspond aux jours similaires au jour courant, tandis que la moitié droite affiche les lendemains : ce sont donc les voisinages tels qu'utilisés dans l'algorithme.\n",
     "\n",
@@ -53,8 +53,8 @@
     "indices = seq(as.Date(\"2015-01-18\"),as.Date(\"2015-01-24\"),\"days\")\n",
     "p_ch_nn = getForecast(data,indices,\"Neighbors\",\"Neighbors\",simtype=\"mix\",same_season=FALSE,mix_strategy=\"mult\")\n",
     "p_ch_pz = getForecast(data, indices, \"Persistence\", \"Zero\", same_day=TRUE)\n",
-    "p_ch_az = getForecast(data, indices, \"Average\", \"Zero\") #, memory=183)\n",
-    "#p_ch_zz = getForecast(data, indices, \"Zero\", \"Zero\")\n",
+    "#p_ch_az = getForecast(data, indices, \"Average\", \"Zero\")\n",
+    "p_ch_zz = getForecast(data, indices, \"Zero\", \"Zero\")\n",
     "#p_ch_l = getForecast(data, indices, \"Level\", same_day=FALSE)"
    ]
   },
    "source": [
     "e_ch_nn = getError(data, p_ch_nn)\n",
     "e_ch_pz = getError(data, p_ch_pz)\n",
-    "e_ch_az = getError(data, p_ch_az)\n",
-    "#e_ch_zz = getError(data, p_ch_zz)\n",
+    "#e_ch_az = getError(data, p_ch_az)\n",
+    "e_ch_zz = getError(data, p_ch_zz)\n",
     "#e_ch_l = getError(data, p_ch_l)\n",
     "options(repr.plot.width=9, repr.plot.height=6)\n",
-    "plotError(list(e_ch_nn, e_ch_pz, e_ch_az), cols=c(1,2,colors()[258]))\n",
+    "plotError(list(e_ch_nn, e_ch_pz, e_ch_zz), cols=c(1,2,colors()[258]))\n",
     "\n",
-    "#Noir: neighbors, rouge: persistence, vert: moyenne"
+    "#Noir: neighbors, rouge: persistence, vert: zero"
    ]
   },
   {
     "Prédictions d'autant plus lisses que le jour à prévoir est atypique (pollué)."
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "par(mfrow=c(1,2))\n",
+    "plotPredReal(data, p_ch_zz, 3)\n",
+    "plotPredReal(data, p_ch_zz, 6)\n",
+    "\n",
+    "#Méthode \"zero\" :"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": null,
     "indices = seq(as.Date(\"2015-03-15\"),as.Date(\"2015-03-21\"),\"days\")\n",
     "p_ep_nn = getForecast(data,indices,\"Neighbors\",\"Neighbors\",simtype=\"mix\",same_season=FALSE,mix_strategy=\"mult\")\n",
     "p_ep_pz = getForecast(data, indices, \"Persistence\", \"Zero\", same_day=TRUE)\n",
-    "p_ep_az = getForecast(data, indices, \"Average\", \"Zero\") #, memory=183)\n",
-    "#p_ep_zz = getForecast(data, indices, \"Zero\", \"Zero\")\n",
+    "#p_ep_az = getForecast(data, indices, \"Average\", \"Zero\")\n",
+    "p_ep_zz = getForecast(data, indices, \"Zero\", \"Zero\")\n",
     "#p_ep_l = getForecast(data, indices, \"Level\", same_day=TRUE)"
    ]
   },
    "source": [
     "e_ep_nn = getError(data, p_ep_nn)\n",
     "e_ep_pz = getError(data, p_ep_pz)\n",
-    "e_ep_az = getError(data, p_ep_az)\n",
-    "#e_ep_zz = getError(data, p_ep_zz)\n",
+    "#e_ep_az = getError(data, p_ep_az)\n",
+    "e_ep_zz = getError(data, p_ep_zz)\n",
     "#e_ep_l = getError(data, p_ep_l)\n",
     "options(repr.plot.width=9, repr.plot.height=6)\n",
-    "plotError(list(e_ep_nn, e_ep_pz, e_ep_az), cols=c(1,2,colors()[258]))\n",
+    "plotError(list(e_ep_nn, e_ep_pz, e_ep_zz), cols=c(1,2,colors()[258]))\n",
     "\n",
-    "#Noir: neighbors, rouge: persistence, vert: moyenne"
+    "#Noir: neighbors, rouge: persistence, vert: zero"
    ]
   },
   {
     "À gauche un jour \"bien\" prévu, à droite le pic d'erreur (jour 6)."
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "par(mfrow=c(1,2))\n",
+    "plotPredReal(data, p_ep_zz, 4)\n",
+    "plotPredReal(data, p_ep_zz, 6)\n",
+    "\n",
+    "#Méthode \"zero\" :"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": null,
     "indices = seq(as.Date(\"2015-04-26\"),as.Date(\"2015-05-02\"),\"days\")\n",
     "p_np_nn = getForecast(data,indices,\"Neighbors\",\"Neighbors\",simtype=\"mix\",same_season=FALSE,mix_strategy=\"mult\")\n",
     "p_np_pz = getForecast(data, indices, \"Persistence\", \"Zero\", same_day=FALSE)\n",
-    "p_np_az = getForecast(data, indices, \"Average\", \"Zero\") #, memory=183)\n",
-    "#p_np_zz = getForecast(data, indices, \"Zero\", \"Zero\")\n",
+    "#p_np_az = getForecast(data, indices, \"Average\", \"Zero\")\n",
+    "p_np_zz = getForecast(data, indices, \"Zero\", \"Zero\")\n",
     "#p_np_l = getForecast(data, indices, \"Level\", same_day=FALSE)"
    ]
   },
    "source": [
     "e_np_nn = getError(data, p_np_nn)\n",
     "e_np_pz = getError(data, p_np_pz)\n",
-    "e_np_az = getError(data, p_np_az)\n",
-    "#e_np_zz = getError(data, p_np_zz)\n",
+    "#e_np_az = getError(data, p_np_az)\n",
+    "e_np_zz = getError(data, p_np_zz)\n",
     "#e_np_l = getError(data, p_np_l)\n",
     "options(repr.plot.width=9, repr.plot.height=6)\n",
-    "plotError(list(e_np_nn, e_np_pz, e_np_az), cols=c(1,2,colors()[258]))\n",
+    "plotError(list(e_np_nn, e_np_pz, e_np_zz), cols=c(1,2,colors()[258]))\n",
     "\n",
-    "#Noir: neighbors, rouge: persistence, vert: moyenne"
+    "#Noir: neighbors, rouge: persistence, vert: zero"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Performances des méthodes \"Average\" et \"Neighbors\" comparables ; mauvais résultats pour la persistence."
+    "Performances des méthodes \"Zero\" et \"Neighbors\" comparables ; mauvais résultats pour la persistence."
    ]
   },
   {
    "outputs": [],
    "source": [
     "par(mfrow=c(1,2))\n",
-    "plotPredReal(data, p_np_az, 3)\n",
-    "plotPredReal(data, p_np_az, 6)"
+    "plotPredReal(data, p_np_zz, 4)\n",
+    "plotPredReal(data, p_np_zz, 6)\n",
+    "\n",
+    "#Méthode \"zero\" :"
    ]
   },
   {
    "source": [
     "## Bilan\n",
     "\n",
-    "Problème difficile : on ne fait guère mieux qu'une naïve moyenne des lendemains des jours similaires dans le passé, ce qui n'est pas loin de prédire une série constante égale à la dernière valeur observée (méthode \"zéro\"). La persistence donne parfois de bons résultats mais est trop instable (sensibilité à l'argument <code>same_day</code>).\n",
+    "Problème difficile : en terme d'erreur moyenne, on ne fait guère mieux que de prédire une série constante égale à la dernière valeur observée (méthode \"zéro\"). La persistence donne parfois de bons résultats mais est trop instable (sensibilité à l'argument <code>same_day</code>).\n",
     "\n",
     "Comment améliorer la méthode ?"
    ]