rozierguillaume / covidtracker-tools

MIT License
103 stars 78 forks source link

[VacicnTracker] Erreur de calcul sur la date projetée d'atteinte de l'objectif de 100% de la pop° adulte #293

Open jege31 opened 3 years ago

jege31 commented 3 years ago

Bonjour et bravo pour tout ce travail.

Sur la page VaccinTracker, section Évolution, la date calculée actuellement est le 2 novembre et elle m’a semblé bizarre au regard des graphiques.

L'erreur se trouve dans le fichier vaccintrackerJs.php, fonction calculerDateProjeteeObjectif().

Je propose de remplacer

    const nDose2quandD1Complete = Math.floor(joursDose1Complete * vdose2)

par const nDose2pendantD1Complete = Math.floor(joursDose1Complete * vdose2) const nDose2quandD1Complete = cumsum[cumsum.length - 1] + nDose2pendantD1Complete

Par ailleurs, il pourrait être intéressant de préciser sur la page VaccinTracker que l'objectif est la vaccination à 2 doses et de faire apparaitre aussi la date à laquelle 100% de la population adulte aura reçu la première dose. Pour cela, je propose dans le fichier evolution.php de remplacer :

    Au rythme actuel <small>(moyenne des 15 derniers jours)</small>, l'objectif de vacciner l'ensemble de la population adulte serait atteint le <b><span id="date_projetee_objectif"></span></b>.

par

    Au rythme actuel <small>(moyenne des 15 derniers jours)</small>, l'objectif de vacciner l'ensemble de la population adulte serait atteint le <b><span id="date_projetee_objectif_dose1"></span></b> pour la première dose et le <b><span id="date_projetee_objectif_dose2"></span></b> pour la deuxième dose.

Et également remplacer dans le fichier vaccintrackerJs.php, fonction calculerDateProjeteeObjectif()

  const date = new Date(nb_vaccines[nb_vaccines.length - 1].date)
  date.setDate(date.getDate() + joursDose2Complete + joursDose1Complete)
  return date

par

    const dateProjeteeObjectifDose1 = new Date(nb_vaccines[nb_vaccines.length - 1].date + joursDose1Complete)
    const dateProjeteeObjectifDose2 = new Date(nb_vaccines[nb_vaccines.length - 1].date + joursDose1Complete + joursDose2Complete)
    return {dateProjeteeObjectifDose1, dateProjeteeObjectifDose2}

Et la tuyauterie entre calculerDateProjeteeObjectif() et evolution.php...

bien cordialement Jérôme

Gaddy commented 3 years ago

Oui cette erreur est dommageable. L'autre chiffre du paragraphe (le nombre de doses quotidiennes nécessaires pour atteindre la vaccination d'ici fin août) est également fausse.

Il se situe dans calculerObjectif() Il est calculé en prenant le nombre de personnes avec 0 doses, en le multipliant par 2 et en divisant par le nombre de jours restants (avec 2 jours de retard mais passons). Ca calcule comme si toutes les 1ères doses avaient déjà eu leur 2nde dose. Il suffirait d'un calcul de ce genre pour corriger : _"doses_restantes = 2 * objectif - nombre de 1ères doses - nombre de 2nde doses objectif = dosesrestantes / jours restants"

Pour l'erreur sur la date prévue, bien vu @jege31 ! Le calcul était trop alambiqué pour que je repère l'erreur. Il aurait suffit simplement de faire quelque chose comme : "nombre de jours = nombre de doses restantes (comme calculé précédemment) / vitesse de vaccination cumulée (vdose1 + vdose2)".

Quelqu'un pourrait-il au minima supprimer ce paragraphe, faux ? (désolé je ne suis pas assez compétent dans ce langage pour proposer la modif)