brunoscherrer / retraites

simulateur du COR amélioré
GNU General Public License v3.0
25 stars 8 forks source link

Le calcul de l'âge de mort pourrait être plus clair. #17

Closed mbaudin47 closed 4 years ago

mbaudin47 commented 4 years ago

Les deux lignes suivantes :

https://github.com/brunoscherrer/retraites/blob/5a0696dd54d5aab71db8b79244a9e2d3426d9e48/retraites/SimulateurRetraites.py#L855

pourraient être améliorées.

Le code pourrait utiliser les noms suivants:

    annee_naissance_brute = a - simulateur.A[s][a]
    annee_naissance = int(annee_naissance_brute + 0.5)
    age_mort = 60.0 + simulateur.EV[s][annee_naissance]

De plus, int(round()) serait plus approprié que ajouter 0.5.

josephmure commented 4 years ago

De plus, int(round()) serait plus approprié que ajouter 0.5.

Je ne crois pas car le 0.5 ne sert pas à faciliter l'arrondi mais à réduire les effets de bord.

En effet, le but est de calculer l'année de naissance des gens arrivant au retraite au milieu d'une année donnée et non au début de cette année. Évidemment, les gens peuvent arriver à la retraite à n'importe quelle période de l'année, mais l'erreur commise de cette façon est moindre que celle qui serait commise si on supposait que tout le monde arrive à la retraite en début d'année, ce qui serait le cas sans le terme +0.5

Voici ce qu'en dit le COR :

L’espérance de vie à 60 ans prise en compte est celle de la génération qui atteint l’âge effectif moyen de départ à la retraite renseigné en milieu de l’année considérée (le terme ½ dans l’équation correspondant au calcul en milieu d’année).

A mon avis, il faudrait cependant remplacer int() par round().

mbaudin47 commented 4 years ago

Ok je comprends. En fait, dans l'équation arrondi(aaaa + 1/2 – A), ce n'est pas l'arrondi de aaaa – A. L'équation considère l'année aaaa + 1/2 c'est à dire le milieu de l'année.

Du coups je comprends mieux l'exemple :

"Par exemple, si l’on renseigne dans le simulateur un âge effectif moyen de départ à la retraite égal à 63,5 ans en 2030, on utilisera, pour calculer la durée de vie passée à la retraite à cette date, l’espérance de vie à 60 ans de la génération née en : 2030+1/2-63,5 = 1967."

Est-ce qu'on est d'accord pour dire que, si l'éspérance de vie était une fonction régulière (par exemple un interpolateur) au lieu d'une table, ce problème serait résolu ?

josephmure commented 4 years ago

Est-ce qu'on est d'accord pour dire que, si l'espérance de vie était une fonction régulière (par exemple un interpolateur) au lieu d'une table, ce problème serait résolu ?

Je ne suis pas sûr qu'il serait résolu car on ne connaîtrait quand même pas le moment précis du départ à la retraite, dont devrait être déduit le moment précis de la naissance qui serait l'entrée de la fonction régulière "espérance de vie à 60 ans".