Davantage de régularité dans les naissances ?

L’autre jour, l’INED avait fait beaucoup de bruit en publiant une étude expliquant que le pic des naissance classiquement observé en mai semblait avoir disparu (ici ou ). On va essayer de vérifier ce point, à partir de toutes les naissances observées en France entre 1968 et 2005. Ça sera le billet sexe de l’été…

  • Le nombre quotidien de naissances en France

La série brute ressemble à ça,

On pourrait à la rigueur extraire les cycles directement sur cette série, mais ça ne serait pas forcément convainquant (même si visuellement on retrouve ce qui était évoqué),

mais la première chose que l’on observe est que la différence entre le nombre de naissances le week end (en rouge) et en semaine (en bleu) s’est fortement creusée dans les années 80-90.

On peut regarder le ratio du nombre de naissance le week end, par rapport aux jours de la semaine précédant le week end,

et on peut alors “corriger” ou “lisser” la série, de manière à maintenir la moyenne hebdomadaire, mais en transférant quelques naissances de la semaine au week end.

Sur cette série lissée, on peut extraire une tendance de long terme.

C’est sur le “bruit” autour de cette tendance que l’on peut essayer d’étudier un éventuel cycle annuel. Notons que l’on retrouve les tendances sur la série brute

  • Série corrigée de la tendance de long terme

La série suivante permet de voir l’évolution du “cycle” (série brute à laquelle on retranche la tendance observée ci-dessus) à la fin des années 60 (en rouge), des années 70 (en orange), des années 80 (en jaune), voire des années 90 (en presque blanc),

Sur les années 68-78, on a la tendance suivante

alors que pour les années 95-2005, cela donne

Au final, les deux tendances sont les suivantes, avec en rouge les années 70 et en bleules années 2000.

Effectivement, le pic classiquement observé au mois de mai semble avoir disparu, et la série aujourd’hui semble beaucoup plus lisse. Et comme l’INED, on note qu’il y a effectivement un mini-pic au mois de septembre.

  • Des naissances au comportement sexuel

Tout comme l’INED, on peut relier ça à l’activité sexuelle des français, que l’on peut visualiser sur le graphique ci-dessous (en décalant tout simplement de 9 mois),

Bref, l’activité sexuelle semblait s’intensifier pendant les vacances scolaires, en particulier début août (mais aussi plus généralement pendant les vacances scolaires, que ce soit Pâques, les vacances d’été, ou les vacances de Noël d’ailleurs). Ou peut être pourrait-on conclure à la rigueur que l’été, on sort moins couvert…. car on observe les comportements sexuels associés à une naissance 9 mois plus tard (ce qui ne doit pas correspondre à l’unique activité sexuelle).
Les français semblent avoir intensifié leur activité sexuelle pendant une période plus fraîche (novembre-mars), au détriment de la période estivale. Un effet du réchauffement climatique (il fait trop chaud pour batifoler l’été) ? Un effet des 35 heures et des RTT (et des vacances qui sont plus réparties dans l’année qu’avant) ?

  • L’été s’ra chaud ?

En fait, au lieu de penser en terme de saison, on peut penser en terme de température (j’ai pris la température quotidienne minimale à Paris, c’est à dire la nuit… ).

c’est à dire en zoomant

On peut aussi chercher à étudier davantage ce qui se passait il y a 30 ans et maintenant (comme dans la partie précédente). Il y a 30 ans (courbe rouge) on observait un (très) fort pic estival. Ce pic a disparu aujourd’hui (courbe bleue), avec un comportement comparable, qu’il fasse 0 ou 20 degrés dehors.

  • Quid de l’impact des bourses ?

Mais la recherche de la variable qui pourrait expliquer cette saisonnalité ou ces pics est sans fin. Beaucoup de monde évoque la bonne santé économique pour expliquer les booms de natalité…. ça marche peut être à long terme, mais à court terme ?
En fait, si on croisse l’activité sexuelle avec le niveau de la bourse, on peut presque retrouver ce genre de comportement,

une bourse en très forte hausse semble provoquer un (léger) pic de natalité 9 mois plus tard, alors qu’un effondrement de la bourse se traduit plutôt par une chute (légère certes) 9 mois plus tard…


OpenEdition suggests that you cite this post as follows:
Arthur Charpentier (July 20, 2010). Davantage de régularité dans les naissances ? Freakonometrics. Retrieved September 8, 2024 from https://doi.org/10.58079/ouei


7 thoughts on “Davantage de régularité dans les naissances ?”

  1. Merci pour votre blog,
    je me demandias s’il etait possible de faire des tests de bruits blancs avec R ? Comme du Box-Ljung-Pierce ?

  2. Très intéressant comme d’habitude ! J’ai deux pistes d’explications pour l’impact de la Bourse, à supposer que la corrélation ne soit pas un pur hasard, qui partent toutes deux du fait que lorsqu’il fait beau, le marché est un peu plus optimiste en moyenne (apparemment c’est un biais documenté), du coup on peut supposer soit :

    -Que lorsque il fait plus chaud l’activité sexuelle augmente et donc également les naissances 9 mois après (du coup est-ce que la différence entre les années 1970 et les années 2000 ne peut pas s’expliquer presque entièrement par la baisse des grossesses non désirées ?). Par ailleurs la chaleur fait également monter la Bourse, sans qu’il y ait causalité de la Bourse sur l’activité sexuelle. Variante : c’est parce qu’il fait plus chaud que l’activité sexuelle des traders augmente, et par contrecoup la Bourse aussi.

    -Que lorsqu’il fait plus chaud la Bourse augmente (pour une raison inconnue). L’agent représentatif, pendant naïvement que les marchés sont efficients, en déduit que sa richesse permanente a augmenté, ce qui lui donne l’opportunité de faire plus d’enfants que prévu. D’où une augmentation rationnelle des conceptions après les hausses boursières, notamment lorsqu’elles sont dues à la chaleur estivale.

    REPONSE: merci Jean-Edouard,
    en fait j’ai essayé de prendre des pincettes, car ce que j’observe ce sont des naissances…. limiter l’activité sexuelle à celle qui aboutissent à une naissance quelques mois plus tard est – me semble-t-il – réducteur…. Mais bon, c’est l’été, on a le droit de chercher la distraction avant la rigueur !

  3. Pour  des raisons de confidentialité, ou pour éviter de retrouver mes graphs dans un papier de recherche sans mon nom dessus, j’ai bruité la série. La série n’est donc pas la vraie série des naissances en France, mais comme on cherche des tendances, les graphs sont proches des vrais,
    > naissance=read.table(“http://perso.univ-rennes1.fr/arthur.charpentier/base-naissance.txt”)
    > naissance$date=as.Date(naissance$date)
    > plot(base$date,base$nbre)
    On peut rajouter les tendances pour les jours de semaine, et les week-end,.
    > t2=as.POSIXlt(naissance$date)
    > jour=t2$wday
    > X=naissance$date
    > Y=naissance$nbre
    > J=jour
    > df=data.frame(X,Y,J)
    > library(splines)
    > regs=lm(Y~bs(X,df=20),data=df[jour%in%c(0,6),])
    > Yp=predict(regs,newdata=df)
    Message d’avis :
    In bs(X, degree = 3L, knots = c(44.2222222222222, 814.444444444444,  :
      some ‘x’ values beyond boundary knots may cause ill-conditioned bases
    > lines(X,Yp,col=”red”,lwd=3)
    > regs=lm(Y~bs(X,df=20),data=df[jour%in%1:5,])
    > Yp=predict(regs,newdata=df)
    Message d’avis :
    In bs(X, degree = 3L, knots = c(39.7777777777777, 810.555555555555,  :
      some ‘x’ values beyond boundary knots may cause ill-conditioned bases
    > lines(X,Yp,col=”blue”,lwd=3)
    Pour corriger de l’effet week-end, on peut faire un truc de la forme suivante,
    > t2=as.POSIXlt(t)   ## ‘wday’ 0-6 day of the week, starting on Sunday.
    > jour=t2$wday
    > jour=jour[1:(1982*7)]
    > nbre2=jour
    > for(i in 1:1982){
    + taux=sum(nbre[6:7+7*(i-1)])/sum(nbre[1:5+7*(i-1)])/2*5
    + nbre2[1:5+7*(i-1)]=nbre[1:5+7*(i-1)]*taux
    + nbre2[6:7+7*(i-1)]=nbre[6:7+7*(i-1)]
    + nbre2[1:7+7*(i-1)]=
    + mean(nbre[1:7+7*(i-1)])/mean(nbre2[1:7+7*(i-1)])*nbre2[1:7+7*(i-1)]
    + }
    > plot(t[1:length(nbre2)],nbre2)
    > X=t[1:length(nbre2)]
    > Y=nbre2
    > library(splines)
    > reg=lm(Y~bs(X,df=20))
    > Yp=predict(reg)
    > lines(X,Yp,col=”red”,lwd=3)
    Et pour visualiser uniquement le ratio semaine/week-end, on a
    > nbretaux=jour
    > for(i in 1:1982){
    + taux=sum(nbre[6:7+7*(i-1)])/sum(nbre[1:5+7*(i-1)])/2*5
    + nbretaux[1:7+7*(i-1)]=taux
    + }
    > plot(t[1:length(nbre2)],nbretaux)
    > X=t[1:length(nbre2)]
    > Y=nbretaux
    > library(splines)
    > reg=lm(Y~bs(X,df=20))
    > Yp=predict(reg)
    > lines(X,Yp,col=”red”,lwd=3)
    Pour visualiser la tendance globale dans l’année, sur les années les plus anciennes,
    > X=t[1:length(nbre2)]
    > Y=nbre2
    > reg=lm(Y~bs(X,df=20))
    > Yp=predict(reg)
    > jouran=t2$yday+1
    > plot(jouran[1:length(nbre2)],Y-Yp,col=”grey”,xlab=””,ylab=””)
    > abline(v=cumsum(c(0,31,28,31,30,31,30,31,31,30,31,30,31)),lty=2)
    > points(jouran[1:(365*10)],(Y-Yp)[1:(365*10)],col=”black”)
    > Z=(Y-Yp)[1:(365*10)]
    > XZ=jouran[1:(365*10)]
    > df=data.frame(Z,XZ)
    > reg=lm(Z~bs(XZ,df=20))
    > dfm=data.frame(XZ=1:365)
    > Zp=predict(reg,newdata=dfm)
    > lines(1:365,Zp,col=”red”,lwd=2)
    > a=c(0,31,28,31,30,31,30,31,31,30,31,30,31)
    > a=cumsum(a[-13])+a[-1]/2
    > text(a,400,c(“JANV”,”FEVR”,”MARS”,”AVR”,”MAI”,”JUIN”,
    + “JUIL”,”AOUT”,”SEPT”,”OCT”,”NOV”,”DEC”),cex=.8)

    On si on veut se restreindre aux années les plus récentes,
    > plot(jouran[1:length(nbre2)],Y-Yp,col=”grey”,xlab=””,ylab=””)
    > abline(v=cumsum(c(0,31,28,31,30,31,30,31,31,30,31,30,31)),lty=2)
    > points(jouran[10230+1:(365*10)],(Y-Yp)[10230+1:(365*10)],col=”black”)
    > Z=(Y-Yp)[10230+1:(365*10)]
    > XZ=jouran[10230+1:(365*10)]
    > df=data.frame(Z,XZ)
    > reg=lm(Z~bs(XZ,df=20))
    > dfm=data.frame(XZ=1:365)
    > Zp2=predict(reg,newdata=dfm)
    > lines(1:365,Zp2,col=”blue”,lwd=2)
    > a=c(0,31,28,31,30,31,30,31,31,30,31,30,31)
    > a=cumsum(a[-13])+a[-1]/2
    > text(a,400,c(“JANV”,”FEVR”,”MARS”,”AVR”,”MAI”,”JUIN”,
    + “JUIL”,”AOUT”,”SEPT”,”OCT”,”NOV”,”DEC”),cex=.8)
    On peut alors visualiser les deux courbes ensemble,
    > plot(jouran[1:length(nbre2)],Y-Yp,col=”grey”,xlab=””,ylab=””)
    > abline(v=cumsum(c(0,31,28,31,30,31,30,31,31,30,31,30,31)),lty=2)
    > lines(1:365,Zp2,col=”blue”,lwd=2)
    > lines(1:365,Zp,col=”red”,lwd=2)
    > a=c(0,31,28,31,30,31,30,31,31,30,31,30,31)
    > a=cumsum(a[-13])+a[-1]/2
    > text(a,400,c(“JANV”,”FEVR”,”MARS”,”AVR”,”MAI”,”JUIN”,
    + “JUIL”,”AOUT”,”SEPT”,”OCT”,”NOV”,”DEC”),cex=.8)

    Pour les amateurs de couleurs, c’est tout simplement
    > plot(jouran[1:length(nbre2)],Y-Yp,col=”grey”,xlab=””,ylab=””)
    > annee=t2$year[1:length(nbre2)]
    > diff=max(annee)-min(annee)
    > annee2=annee-min(annee)+1
    > couleur=heat.colors(diff+1)
    > plot(jouran[1:length(nbre2)],Y-Yp,col=couleur[annee2],xlab=””,ylab=””)
    > abline(v=cumsum(c(0,31,28,31,30,31,30,31,31,30,31,30,31)),lty=2)
    > a=c(0,31,28,31,30,31,30,31,31,30,31,30,31)
    > a=cumsum(a[-13])+a[-1]/2
    > text(a,400,c(“JANV”,”FEVR”,”MARS”,”AVR”,”MAI”,”JUIN”,
    + “JUIL”,”AOUT”,”SEPT”,”OCT”,”NOV”,”DEC”),cex=.8)
    Pour croiser avec la température, on a la base suivante
    > D=read.table(“http://perso.univ-rennes1.fr/arthur.charpentier/temperature-min-paris.txt”)
    > X=D$V1/10
    > temps=(1:length(X))/365.25+1900
    mais on peut aussi récupérer l’indice CAC 40
    +        header=FALSE,sep=”;”,na.strings = “NA”,dec=”,”)
    Bref, revenons à nos températures, comme on a des belles dates, en format de date, on peut fusionner les données sur la base de la date,
    > date=as.Date(“04/01/1967″,”%m/%d/%Y”)
    > t=date+0:(length(Y)-1)
    > baseN=data.frame(date=t,nbre=Y-Yp)
    > date=as.Date(“01/01/1900″,”%m/%d/%Y”)
    > t=date+0:(length(X)-1)
    > baseT=data.frame(date=t,temp=X)
    > base
    =merge(baseN,baseT)
    > Diff=Y-Yp
    > t3=as.POSIXlt(t)
    > plot(base$temp,base$nbre,col=”grey”)
    et après, c’est toujours pareil, on fait une régression nonlinéaire (et nonparamétrique)
    > reg=lm(nbre~bs(temp,df=20),data=base)
    > dfm=data.frame(temp=seq(-15,30,by=.1))
    > Z=predict(reg,newdata=dfm)
    Message d’avis :
    In bs(temp, degree = 3L, knots = c(-0.6, 1.3, 2.7, 3.9, 4.9, 5.9,  :
      some ‘x’ values beyond boundary knots may cause ill-conditioned bases
    > lines(dfm$temp,Z,col=”purple”,lwd=3)

    Voilà un peu le code tapé rapidement a l’aéroport, en attendant mon avion…. Ca manque de rigueur pour être publié dans une revue académique, mais les tendances doivent être assez robustes (sauf au bord).

  4. Bonjour,

    Qu’en est il de la rumeur, chez les infirmieres et les sage-femmes, d’un nombre plus élevé de naissance les jours de pleine lune ?
    REPONSE: ah, pour ça j’ai la réponse, ici (ou pour la nouvelle version du blog)

  5. Bonjour et merci pour ce billet très intéressant.
    Pensez-vous qu’en soustrayant les naissances rendues possibles par les récentes techniques de procréation médicalement assistées vous retrouveriez le pic “historique” de naissance du mois de mai?

    REPONSE: je ne sais pas…. et je n’ai pas accès à des données plus fines (pour l’instant)

  6. Les corrélations avec la température et la bourse me semblent quand même très faible. Elles ne sont vraisemblablement pas différentes de 0.

    Où peut on récupérer ces données ?

    REPONSE: oui, c’était juste pour rigoler, sinon je mets en ligne le code dans les heures qui viennent

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.