All posts by Arthur Charpentier

Arthur Charpentier, professor in Montréal, in Actuarial Science. Former professor-assistant at ENSAE Paristech, associate professor at Ecole Polytechnique and assistant professor in Economics at Université de Rennes 1.  Graduated from ENSAE, Master in Mathematical Economics (Paris Dauphine), PhD in Mathematics (KU Leuven), and Fellow of the French Institute of Actuaries.

Somewhere else, part 163

A lot of interesting posts, here and there

Continue reading

Selection_524

Permuter, sans créer de variable temporaire

Je n’aime pas me faire coller par un (ancien) étudiant !… mais j’ai trouvé la solution très jolie, alors je vais en garder la trace dans mon “cahier de recherche” qu’est mon blog. La question était simple :

Comment permuter les valeurs de deux variables, sans créer de variable temporaire ?

On a ainsi deux variables, http://latex.codecogs.com/gif.latex?A et http://latex.codecogs.com/gif.latex?B, on veut les permuter : http://latex.codecogs.com/gif.latex?A doit prendre la valeur de http://latex.codecogs.com/gif.latex?B, et inversement….

> a=1
> b=2
> a
[1] 1
> b
[1] 2

Continue reading

Quiz de probabilité

Ce matin, en fin de cours, j’ai fait passé un petit quiz. Compte tenu de la configuration de la salle, j’avais distribué deux questionnaires, avec chacun 10 questions. Les questions étaient identiques, à l’application numérique près (pour quelques exercices). La première série d’exercice est en ligne, ainsi que des éléments de correction; la seconde série est aussi en ligne, avec là encore des éléments de correction. J’ai rajouté après la correction les statistiques de réponses pour chaque formulaire, mais aussi au niveau agrégé (en incluant l’autre questionnaire). Il va de soi qu’il est possible de continuer à s’entraîner à faire des exercices pendant les semaines à venir, ça ne fera de mal à personne !

Somewhere else, part 162

Some writings worth reading, discovered here and there

and “An ‘A’ is not what it used to be” http://www.economist.com/news/united-states/21615616-not-what-it-used-be-grade-expectations …

Continue reading

Rappels de statistique

Jeudi et vendredi, on finira les rappels de cours, avec quelques rappels de statistique. Les slides sont en ligne,

Sinon, histoire d’illustrer un peu les différents aspects, j’avais dit que j’aimais bien utiliser des simulations. En particulier, il sera intéressant de générer plusieurs (beaucoup) échantillons de taille donnée. Le code R est le suivant (une ligne correspond à un échantillon, de 20 observations)

> n=20
> m=1000
> M=matrix(rnorm(n*m),m,n)

On utilise ensuite la statistique que l’on souhaite étudier, qui peut être la moyenne empirique,

> Xbarn=apply(M,1,mean)

ou la variance

> Sn=apply(M,1,var)

On peut ensuite visualiser la distribution de la statistique, sur tous les échantillons. Par exemple, le fait que l’estimateur de la moyenne est gaussien, on peut faire un histogramme

> hist(Xbarn,probability=TRUE,
+ breaks=seq(-1,1,by=.1),col="light blue")

et rajouter la densité de la loi normale (car la théorie nous dit que la moyenne suit une loi normale),

> u=seq(-2,2,by=.01)
> lines(u,dnorm(u,sd=1/sqrt(n)),col="red",lwd=2)

Cela dit, comme Ewen Gallic fera essentiellement du ggplot2 dans son cours de R, je vais aussi mettre les codes en ggplot2 (et essayer de m’y convertir… ce n’est pas l’envie qui manque !)

> ggplot(data=data.frame(Xbarn = Xbarn), aes(x = Xbarn)) +
+   geom_histogram(aes(y = ..density..),
+   binwidth = .1, fill = "light blue", col = "black") +
+   stat_function(fun=function(x) dnorm(x,sd=1/sqrt(n)),
+ col = "red", size = 1) + ylab("Densite") +
+   ggtitle("Histogramme de Xbarn")

Cela dit,  au lieu de représenter la loi normale, on peut aussi visualiser un estimateur non paramétrique de la densité (on en reparlera dans quelques semaines), comme l’estimateur à noyau

> ggplot(data=data.frame(Xbarn = Xbarn), aes(x = Xbarn)) +
+   geom_histogram(aes(y = ..density..),
+   binwidth = .1, fill = "light blue", col = "black") +
+   geom_line(stat="density", col = "red", size = 1) +
+   ylab("Densite") +
+   ggtitle("Histogramme de Xbarn")

On peut aussi voir que la variance empirique suit une loi du chi-deux,

> hist((n-1)*Sn,probability=TRUE,
+ breaks=seq(0,56,by=2),
+ col="light blue")
> u=seq(0,56,by=.1)
> lines(u,dchisq(u,df=n-1),col="red",lwd=2)

avec là encore une version en ggplot2

> ggplot(data = data.frame(x = (n-1)*Sn), aes(x = x)) +
+   geom_histogram(aes(y = ..density..),
+   binwidth = 2, fill = "light blue", col = "black") +
+   geom_line(stat="density", col = "red", size = 1) +
+   xlab(expression((n-1) %*% Sn)) +
+   ylab("Densite") +
+   ggtitle(expression(paste("Histogramme de ", (n-1) %*% Sn)))

On peut aussi utiliser ces simulations pour comprendre l’idée d’intervalle de confiance à 90%,

> x1=Xbarn-1.64*1/sqrt(n)
> x2=Xbarn+1.64*1/sqrt(n)
> ind=x1*x2>0
> plot(1:m,Xbarn,ylim=c(-1,1),col="white",
+ ylab="intervalle de confiance",xlab="")
> segments(1:m,x1,1:m,x2,col=c("light blue","red")[ind+1],lwd=1.5)
> abline(h=0,lty=2)

ou pour la version ggplot2 (mais on reparlera de tout ça en cours, pas forcément cette semaine cela dit)

> ggplot(data = df) +
+   # Les segments. La couleur doit etre fonction d'un logique
+   geom_segment(aes(x = x, xend = x, y = x1, yend = x2, col = x1*x2>0)) +
+   # La ligne horizontale en y = 0
+   geom_hline(yintercept = 0, linetype = "dashed") +
+   # Changer les couleurs des segments
+   scale_colour_manual(values = c("light blue" ,"red")) +
+   # Modifier le titre de l'axe des y
+   ylab("Intervalle de confiance") +
+   # Modifier le titre de l'axe des x
+   xlab("") +
+   # Cacher la legende
+   theme(legend.position="none")

On note que dans 90% des scénarios (notion d’intervalle de confiance à 90%), la vraie valeur (connue ici car on simule nos échantillons) est effectivement dans l’intervalle de confiance.

Somewhere else, part 161

Some writings worth reading, discovered here and there

Continue reading

Selection_226

Crowded Cities, Paris, Hong Kong and Montréal

Over the past years, I’ve been living in different cities, all of them being completely different, compared with the others. I have been living in Paris, which is a big city in Europe, with a large suburban neighborhood, too (la banlieue).

Then, I’ve been living in Hong Kong, which is a larger city, in Asia.

It was crowded. I mean, it was the feeling I had, while I was living there. And more recently, I’ve been living in Montréal, in North America. Montreal is a large city. Or to be more specific, an island,

The three cities are quite different. Paris, 2.211 million unhabitants, and 105,4 km² (density 21,057 unhabitants per km²). Montréal, 1.621 million unhabitants, and three times wider 365.1 km² (density 4,441 unhabitants per km²). Hong Kong, 7.234 million unhabitants, and again three times wider 1,104 km² (density 6,553 unhabitants per km²). In Hong Kong, there are several hill where it is not possible to build anything: on a large part of the island, the density is null.

Continue reading

Somewhere else, part 160

(via @thereaIbanksy ). Some writings worth reading, found here and there,

Somewhere else, part 159

Holidays are over

(Source: miguelmarquezoutside.com). Some writings worth reading, here and there

Somewhere else, part 158

Some writings worth reading, discovered here and there

Continue reading

Somewhere else, part 157

Some writings worth reading, here and there

Continue reading

Selection_207

La formation française, élitiste ?

En discutant avec @tomroud la semaine passée, j’ai découvert l’article Notre élite est toujours excellente, c’est le reste de la classe qui ne suit pas sur le site du Monde. C’est effectivement une idée reçue : si la formation est globalement aussi faible en France, c’est parce que la France serait un pays élitiste, et la formation de ses élites, en revanche, est une réussite. C’est – en gros – ce que raconte cet article. On pourra relire à ce sujet l’échange

Comment expliquer les résultats faibles en mathématiques, malgré la tradition d’excellence de la France dans ce domaine ?

Notre élite est toujours excellente, mais c’est le reste de la classe qui ne suit pas. Nos mauvaises notes à PISA ne nous empêcheront pas d’avoir des médailles Fields, mais elles nous empêchent d’avoir 100 % de citoyens efficaces dans leur travail et capables de se débrouiller dans un monde très mathématiques.

(dans la discussion, avec également, @Lazarrean@rdoume avait signalé un autre article dans Le Monde, la France championne des inégalités scolaires). Pourtant, ce n’est pas tout à fait ce que raconte le graphique, mentionné dans Surprising Test Results For Some Of The World’s Richest Students

où le “Ninth decile” (quantile à 90%) n’est pas si élevé que ça, comparé aux autres pays. Maintenant, pour raconter l’histoire complète, la discussion avec @tomroud est née de la lecture de La crise ne rend pas les riches plus riches et les pauvres plus pauvres, sauf en France,

En effet, @tomroud me disait qu’il avait vu le même genre de conclusion dans la comparaison des études PISA : en France, les bons sont meilleurs avec le temps, même si la moyenne, tout comme les niveaux des déciles les plus faibles, baisse. Dans une vision élitiste de l’éducation, ça ne serait pas gênant.

N’ayant rien trouvé me permettant de mieux comprendre , j’ai voulu aller regarder un peu plus en détails ce que disent vraiment les enquêtes PISA. Car elles sont disponibles en ligne (20122009200620032000). Bon, pour les lire plus rapidement, je vais les récupérer sur d’autres sites, pour avoir d’autres formats, plus simples à lire, en R,

> load(url("https://github.com/pbiecek/PISA2000lite/blob/master/data/math2000.rda"))
> load(url("http://beta.icm.edu.pl/PISAcontest/data/student2012.rda"))

Commençons par regarder un peu la distribution des notes, en mathématiques (je vais me restreindre aux tests de maths, qui sont souvent utilises pour dire que la France est effectivement un pays libelliste : les maths ont longtemps servi de critère, me semble-t-il).

> py="France"
> xf=sb[(sb$CNT==py)&(sb$ST04Q01=="Female")==TRUE,"PV1MATH"]
> xm=sb[(sb$CNT==py)&(sb$ST04Q01=="Male")==TRUE,"PV1MATH"]

Sur le graphique ci-dessous, on a la distribution des notes des filles (en haut à gauche) et des garçons (en bas à gauche). A droite, on a la fonction de survie : à une note donnée, on a en ordonnées la proportions d’élèves qui dépassent cette note. Par exemple 18,72% des garçons dépassent 600, et 12,42% des filles

> mean(xf>600)
[1] 0.1242105
> mean(xm>600)
[1] 0.1872207

Enfin, en bas à gauche, j’ai rajouté la fonction de moyenne en excédant (ou pour être plus précis, la Tail-Value-at-Risk), qui est la note moyenne que l’on peut espérer avoir si dans un certain décile. Par exemple, si on s’intéresse aux élèves dans le décile supérieur (dépassant le quantile à 90%), la note moyenne des garçons est 672 et celle des filles 649,

> mean(xm[xm>quantile(xm,.9)])
[1] 672.7608
> mean(xf[xf>quantile(xf,.9)])
[1] 649.281

Cette mesure est assez classique en tant que downside risk measure et permet de focaliser justement sur les queues de distribution (ce qui nous intéresse ici car on veut étudier les élites).

Si on zoom dans la partie à droite (les meilleures notes), on obtient

Mais il est difficile de faire des comparaisons avec d’autres pays sur ces graphiques. Par exemple, pour l’Australie, on obtient

 

Pour comparer les pays entre eux, on peut regarder la différence entre la note moyenne, et le niveau du quantile à 99% (on va chercher la vraie élite, les 1% des meilleurs… car c’est manifestement ce qui été évoque dans l’article, et qui intéresse du monde sur les inégalités de richesse)

L’élite en France est pas incroyablement meilleure que le cœur de la distribution, on en conviendra !

Si on compare un pays avec la France, on peut regarder la différence entre le quantile de niveau u (e.g. 50%, ou 90% ou 99%) entre ce pays et la France. En niveau absolu, ou en pourcentage.

> qpays("France",c(.5,.99))
      Female     Male
50% 496.8141 507.5635
99% 691.0734 717.2885

Sur les graphique ci-dessous, on a le différence absolue à gauche et relative à droite, avec l’Allemagne en haut, et l’Australie en bas,

On peut aussi regarder la Thaïlande et le Mexique (on est toujours en 2012)

Regardons un peu la Thaïlande par exemple. Les élèves (scolarises) médians sont 50 points en dessous des élèves Français. Mais pour le top 1%, les notes sont comparables… Donc manifestement, la formation des élites semble fonctionner dans d’autres pays que la France. En Australie, les inégalités scolaires semble encore plus fortes : les élèves médians sont globalement moins bon en Australie qu’en France (disons 15 points en dessous), mais l’élite est au dessus (de presque 50 points quand on regarde le top 1%).

Cela dit, comme j’avais dit qu’il pouvait aussi être intéressant de regarder les fonctions de moyennes en excédant (plus que les quantiles), on peut comparer ces fonctions,

Ici, les graphiques sont présentés en variation relative : au Mexique, la note moyenne d’une fille dans le top 20% (au dessus du quantile à 80%) est 17.5% plus faible qu’en France. On retrouve ici qu’en Australie par exemple, l’élite a – en moyenne – de meilleures notes qu’en France. Et en Thaïlande, plus on regarde les meilleurs élèves, plus les résultats sont comparables avec ceux des élèves français.

Qu’en est-il maintenant de l’évolution dans le temps ? Si on compare dans le temps, entre 2000 et 2012.

> sb2012=student2012[,c("PV1MATH","CNT","ST04Q01")]
> sb2000=math2000[,c("PV1MATH","CNT","ST03Q01")]
> sb2000=sb2000[!is.na(sb2000$PV1MATH),]
> sb2000$cnt=tolower(sb2000$CNT)
> sb2012$cnt=tolower(sb2012$CNT)
> ext2000=function(py){
+ x=sb2000[sb2000$cnt==py,"PV1MATH"]
+ v=c(mean(x),quantile(x,c(.1,.9)))
+ return(v)
+ }
> ext2012=function(py){
+ x=sb2012[sb2012$cnt==py,"PV1MATH"]
+ v=c(mean(x),quantile(x,c(.1,.9)))
+ return(v)
+ }
> listepays2000=unique(sb2000$cnt)
> listepays2012=unique(sb2012$cnt)
> R2000=sapply(listepays2000,ext2000)
> R2012=sapply(listepays2012,ext2012)
> D2000=data.frame(pays=listepays2000,
+ m2000=R2000[1,],
+ q12000=R2000[2,],
+ q92000=R2000[3,])
> D2012=data.frame(pays=listepays2012,
+ m2012=R2012[1,],
+ q12012=R2012[2,],
+ q92012=R2012[3,])
> D=merge(D2000,D2012)

Si on fait un dessin proche de celui sur les revenus (avec les évolutions des moyennes en bâtons, des 10% les plus bas en rond, et des 10% les plus hauts en rond), on obtient

Si effectivement le niveau moyen des étudiants baisse en France (comme dans plusieurs autres pays), on notera que l’idée que l’élite française s’en sort bien est un cliche sans réel fondement.