Esperance de vie a un age avancé

Discutez d'informatique ici !
Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 508
Enregistré le: 13 Mai 2009, 10:28

esperance de vie a un age avancé

par ortollj » 27 Déc 2019, 15:50

Bonjour

code on sageCell
me retrouvant oisif a la retraite, comme l’oisiveté est mere de tous les vices,
j’ai essayé de retrouver ne serait ce que approximativement par le calcul les valeurs données dans le document  page 8, sur l’esperance de vie non en partant de l’age zero, mais 65 ans,75 ans 85 ans et 95 ans (pour les femmes Francaises, j’ai utilisé la deviation standard correspondant a l’Allemagne que j’ai trouvé ici :

https://www.thinkingaheadinstitute.org/ ... -to-answer

):
Recent Trends in Life Expectancy at Older Ages: Update to 2014

(en partant de l’hypothese que toute l’information figure dans la courbe de Gauss de l’esperance de vie d’une femme partant de la naissance avec  :
mu_0=85.4 # Mean starting from birth
sigma_0=12.7 # Standard Deviation starting from birth ) 



Bon, ca colle a peu prés jusqu’à 85 ans avec les résultats de l’étude
par contre pas du tout pour la dernière valeur 95 ans .
Le calcul donne une moyenne d’années a vivre de 7,33 ans alors que l’étude donne environs 3.5 années. Je pense que c’est a cause du fait que l’on modélise par une courbe de Gauss, et que la queue de la Gaussienne ne correspond pas a la réalité, jusqu’ici on n’a pas connu un humain ayant une durée de vie supérieur a 123 ans ( Jeanne Calment ).
Peut être que quelqu’un a une explication autre du pourquoi ca dérape a 95 ans, peut etre que ma façon de calculer n’est pas correcte ?
Code: Tout sélectionner
print ("https://assets.publishing.service.gov.uk/\
government/uploads/system/uploads/attachment_data/file/499252/\
Recent_trends_in_life_expectancy_at_older_ages_2014_update.pdf")

from sage.symbolic.integration.integral import definite_integral

var('x mu sigma')
mu_0=85.4 # Mean starting from birth
sigma_0=12.7 # Standard Deviation starting from birth for Germany not too different from France
print ("https://www.thinkingaheadinstitute.org/en/News/Public/News/2018/12/\
A-basic-question-about-life-expectancy-that-even-actuaries-struggle-to-answer")

normalPDF=1/(sqrt(2*pi*(sigma^2))) * e^(-(((x-mu)/sigma )^2)/2)
normalPDF_0=normalPDF.subs(mu=mu_0,sigma=sigma_0)

normalCDF=(1/2 * ( 1+erf((x-mu)/( sigma*sqrt(2))) ) )
normalCDF_0=normalCDF.subs(mu=mu_0,sigma=sigma_0)
redim_65=(1-normalCDF_0.subs(x=65))
redim_75=(1-normalCDF_0.subs(x=75))
redim_85=(1-normalCDF_0.subs(x=85))
redim_95=(1-normalCDF_0.subs(x=95))

# redim_X verification each should be equals to 1
#show("Aged 65 redim : \t",((definite_integral(normalPDF_0,x,65,infinity))/redim_65).n())
#show("Aged 75 redim : \t",((definite_integral(normalPDF_0,x,75,infinity))/redim_75).n())
#show("Aged 85 redim : \t",((definite_integral(normalPDF_0,x,85,infinity))/redim_85).n())
#show("Aged 95 redim : \t",((definite_integral(normalPDF_0,x,95,infinity))/redim_95).n())

#show( "redim_65 :\t", redim_65.n())
#show( "redim_65 :\t", redim_75.n())
#show( "redim_65 :\t", redim_85.n())
#show( "redim_65 :\t", redim_95.n())

mu_65=((definite_integral(x*normalPDF_0,x,65,infinity))/redim_65)
sigma_65=(sqrt(integral((x-mu_0)^2*normalPDF_0,x,65,infinity,algorithm='sympy')/redim_65))
normalPDF_65=normalPDF.subs(mu=mu_65,sigma=sigma_65)

mu_85=((definite_integral(x*normalPDF_0,x,85,infinity))/redim_85)
sigma_85=(sqrt(integral((x-mu_0)^2*normalPDF_0,x,85,infinity,algorithm='sympy')/redim_85))
normalPDF_85=normalPDF.subs(mu=mu_85,sigma=sigma_85)

show("Aged 0 expectation : \t",((definite_integral(x*normalPDF_0,x,0,infinity))-0).n())
show("Aged 0 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*normalPDF_0,x,0,infinity,algorithm='sympy'))).n())
show("Aged 65 expectation : \t",((definite_integral(x*normalPDF_0,x,65,infinity))/redim_65-65).n())
show("Aged 65 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*normalPDF_0,x,65,infinity,algorithm='sympy')/redim_65)).n())
show("Aged 75 expectation : \t",((definite_integral(x*normalPDF_0,x,75,infinity))/redim_75-75).n())
show("Aged 75 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*normalPDF_0,x,75,infinity,algorithm='sympy')/redim_75)).n())
show("Aged 85 expectation : \t",((definite_integral(x*normalPDF_0,x,85,infinity))/redim_85-85).n())
show("Aged 85 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*normalPDF_0,x,85,infinity,algorithm='sympy')/redim_85)).n())
show("Aged 95 expectation : \t",((definite_integral(x*normalPDF_0,x,95,infinity))/redim_95-95).n())
show("Aged 95 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*normalPDF_0,x,infinity,125,algorithm='sympy')/redim_95)).n())



normalCDF=(1/2 * ( 1+erf((x-mu)/( sigma*sqrt(2))) ) )

pdfViewFactor=1/10
normalCDF_0forGraph=normalCDF_0*pdfViewFactor # shrinked CDF by a factor 10 to be graph

debPlot=0
finPlot=130
yminA=0;ymaxA=pdfViewFactor
P=plot(normalPDF_0, (x,debPlot,finPlot),ymin=yminA,ymax=ymaxA ,color='red')
P+=plot(normalPDF_65, (x,debPlot,finPlot),ymin=yminA,ymax=ymaxA ,color='green')
P+=plot(normalPDF_85, (x,debPlot,finPlot),ymin=yminA,ymax=ymaxA ,color='yellow')

#P+= text("normalPDF from 0 ", (mu_0, normalPDF_0(mu_0)), fontsize=16, color='red')
P+= text("normalPDF from 0 ", (50, 0.08), fontsize=16, color='red')
P+= text("normalPDF from 65 ", (50, 0.07), fontsize=16, color='green')
P+= text("normalPDF from 85 ", (50, 0.06), fontsize=16, color='yellow')
P+= text("normalCDF from 0 1/10 ", (50, 0.05), fontsize=16, color='black')


P+=plot(normalCDF_0forGraph, (x,debPlot,finPlot),ymin=yminA,ymax=ymaxA ,color='black')
show(P)
si j'avais su j'aurais pas venu.



lyceen95
Membre Rationnel
Messages: 781
Enregistré le: 15 Juin 2019, 01:42

Re: esperance de vie a un age avancé

par lyceen95 » 27 Déc 2019, 22:07

Le problème, c'est que la courbe donnant l'espérance de vie n'est pas une gaussienne.

Si on trace une courbe donnant le nombre de décès en fonction de l'âge, ça ressemble effectivement à une courbe de Gauss. Si on trace la même courbe, avec une échelle logarithmique, on voit déjà mieux que ce n'est pas une courbe de Gauss.

Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 508
Enregistré le: 13 Mai 2009, 10:28

Re: esperance de vie a un age avancé

par ortollj » 28 Déc 2019, 10:39

Bonjour Lyceen95
Tu veux dire que dans le cas de l’espérance de vie, le theoreme centrale limite ne s'applique pas ?
si j'avais su j'aurais pas venu.

Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 508
Enregistré le: 13 Mai 2009, 10:28

Re: esperance de vie a un age avancé

par ortollj » 28 Déc 2019, 20:26

j'ai refais le calcul avec la loi normal tronquée, c'est un peu mieux , mais je trouve toujours 2 fois la valeurs de l’espérance de vie en années restantes par rapport a l’étude pour 95 ans et cette fois ci l'erreur ne peut pas venir de la queue de la Gaussienne.
code loi normal tronquée sagecell
bon cette fois ci j’arrête de couper les cheveux en quatre :mrgreen: , je passe a autre chose.
Code: Tout sélectionner
print ("https://assets.publishing.service.gov.uk/\
government/uploads/system/uploads/attachment_data/file/499252/\
Recent_trends_in_life_expectancy_at_older_ages_2014_update.pdf")

from sage.symbolic.integration.integral import definite_integral

var("x mu sigma zeta a b ")
mu_0=85.4 # Mean starting from birth
sigma_0=12.7 # Standard Deviation starting from birth for Germany not too different from France
print ("https://www.thinkingaheadinstitute.org/en/News/Public/News/2018/12/\
A-basic-question-about-life-expectancy-that-even-actuaries-struggle-to-answer")

normalPDF=1/(sqrt(2*pi*(sigma^2))) * e^(-(((x-mu)/sigma )^2)/2)
normalPDF_0=normalPDF.subs(mu=mu_0,sigma=sigma_0)

normalCDF=(1/2 * ( 1+erf((x-mu)/( sigma*sqrt(2))) ) )
normalCDF_0=normalCDF.subs(mu=mu_0,sigma=sigma_0)

print("####################################################################")

print("https://en.wikipedia.org/wiki/Truncated_normal_distribution")
print("https://people.sc.fsu.edu/~%20jburkardt/presentations/truncated_normal.pdf" )
show(LatexExpr(r"f(x;\mu,\sigma,a,b) = \frac{\phi(\frac{x - \mu}{\sigma})}\
{\sigma\left(\Phi(\frac{b - \mu}{\sigma}) - \Phi(\frac{a - \mu}{\sigma})\right) }"),"with \t:\t",\
     LatexExpr(r"\phi(\xi)=\frac{1}{\sqrt{2 \pi}}\exp\left(-\frac{1}{2}\xi^2\right)")\
     ,"\t and\t"\
    ,LatexExpr(r"\Phi= \frac{1}{2} \, \operatorname{erf}\left(\frac{1}{2}\
                \, \sqrt{2} x\right) + \frac{1}{2}") )
phi(zeta)=1/(sqrt(2*pi)) * e^(-((zeta )^2)/2)
Phi(x)=1/2 * ( 1+erf(x/sqrt(2)) )

truncNormPdf(x)=phi.subs(zeta=((x-mu)/sigma))/\
(sigma*(Phi.subs(x=((b-mu)/sigma))-Phi.subs(x=((a-mu)/sigma))))
truncNormPdf_0(x)=(truncNormPdf.subs(a=0,b=123,mu=mu_0,sigma=sigma_0))
#show(integral(truncNormPdf_0,x,0,123,algorithm='sympy').n()) # check
truncNormCdf_0=(integral(truncNormPdf_0,x,algorithm='sympy'))



redim_65=(integral(truncNormPdf_0,x,65,123,algorithm='sympy'))
redim_75=(integral(truncNormPdf_0,x,75,123,algorithm='sympy'))
redim_85=(integral(truncNormPdf_0,x,85,123,algorithm='sympy'))
redim_95=(integral(truncNormPdf_0,x,95,123,algorithm='sympy'))
#show(redim_65.n())


show("Aged 0 expectation : \t",((definite_integral(x*truncNormPdf_0(x),x,0,123))-0).n())
show("Aged 0 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*truncNormPdf_0(x),x,0,123,algorithm='sympy'))).n())
show("Aged 65 expectation : \t",((definite_integral(x*truncNormPdf_0(x),x,65,123))/redim_65-65).n())
show("Aged 65 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*truncNormPdf_0(x),x,65,123,algorithm='sympy')/redim_65)).n())
show("Aged 75 expectation : \t",((definite_integral(x*truncNormPdf_0(x),x,75,123))/redim_75-75).n())
show("Aged 75 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*truncNormPdf_0(x),x,75,123,algorithm='sympy')/redim_75)).n())
show("Aged 85 expectation : \t",((definite_integral(x*truncNormPdf_0(x),x,85,123))/redim_85-85).n())
show("Aged 85 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*truncNormPdf_0(x),x,85,123,algorithm='sympy')/redim_85)).n())
show("Aged 95 expectation : \t",((definite_integral(x*truncNormPdf_0(x),x,95,123))/redim_95-95).n())
show("Aged 95 Standard Deviation : \t",(sqrt(integral((x-mu_0)^2*truncNormPdf_0(x),x,95,123,algorithm='sympy')/redim_95)).n())

si j'avais su j'aurais pas venu.

lyceen95
Membre Rationnel
Messages: 781
Enregistré le: 15 Juin 2019, 01:42

Re: esperance de vie a un age avancé

par lyceen95 » 28 Déc 2019, 21:47

Le lien que tu donnes dis ceci
In probability theory, the central limit theorem (CLT) establishes that, in some situations, when independent random variables are added, their properly normalized sum tends toward a normal distribution (informally a "bell curve") even if the original variables themselves are not normally distributed.

In some situations : ça veut dire que ce n'est pas toujours applicable.
when independent random variables are added : ça veut dire qu'on additionne des variables aléatoires indépendantes. Quelles sont les variables qu'on additionne ici ?
Il n'y a aucune raison pour vouloir se raccrocher au TCL.

Si on voulait rapprocher l'espérance de vie d'une loi classique, on pourrait dire que sur les premières années de la vie, la probabilité de mourir est une constante, et on est donc sur une loi exponentielle. Mais ça ne marche pas non plus, parce que plus on avance en âge, plus cette probabilité de mourir dans l'année à venir augmente.

Toute courbe qui ressemble de loin à une courbe en cloche n'est pas forcément une courbe de Gauss. Loin de là.

Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 508
Enregistré le: 13 Mai 2009, 10:28

Re: esperance de vie a un age avancé

par ortollj » 28 Déc 2019, 22:44

si je reporte sur un graphe les nombres de décès par age arrondi a l'année des 600000 personnes décédées en 2018, je n'obtiens pas une courbe qui colle une loi normale ?. mème pas une loi normale tronquée ?. Bon et bien c'est surprenant. J'ai cherché (rapidement) sur le site de l’INSEE mais je n'ai pas trouvé de courbe. aurais tu un lien sur une tel courbe ?.
si j'avais su j'aurais pas venu.

Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 508
Enregistré le: 13 Mai 2009, 10:28

Re: esperance de vie a un age avancé

par ortollj » 28 Déc 2019, 23:01

Oops je crois que je viens de dire une betise dans le post precedent ( en effet il aurait fallu que le nombre de naissances soit constant (creux pendants la guerre et ensuite, le baby boom) ,tous les ans et de plus que l’espérance de vie ne croisse pas !) . finalement ca n'est pas evident du tout !
ok, tu as raison Lyceen95 voila les courbes INSEE
il y a un pic de mortalité bizarre vers 70 ans !
Modifié en dernier par ortollj le 29 Déc 2019, 14:57, modifié 1 fois.
si j'avais su j'aurais pas venu.

Avatar de l’utilisateur
ortollj
Membre Rationnel
Messages: 508
Enregistré le: 13 Mai 2009, 10:28

Re: esperance de vie a un age avancé

par ortollj » 29 Déc 2019, 01:49

il y a d'ailleurs l'explication du pic (qui est en fait un creux !):
Note : la pyramide des âges au décès présente des creux à des âges élevés, du fait de déficits de naissances certaines années. Ainsi, il y a relativement peu de personnes décédées en 2017 entre 72 et 78 ans par rapport aux âges précédents ou suivants, du fait du déficit des naissances pendant la seconde guerre mondiale : ces personnes sont nées en effet entre 1939 et 1945.
Champ : France.
si j'avais su j'aurais pas venu.

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 12 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite