De la réussite au brevet dans cinq collèges rennais

Ce matin, on a travaillé sur des données de réussite au brevet des collèges, sur Rennes (dans le cadre du cours de statistique). On dispose de données pour 5 collèges rennais, sur une douzaine d’années (entre 2001 et 2015).

  • Analyse de le temps de l’agrégation des collèges

On avait commencé par quelque chose de simple: regarder l’évolution dans le temps du taux de réussite,

> base=
+ read.table(
+ "http://freakonometrics.free.fr/brevet_rennes.csv", header=TRUE,sep=";",dec=",")
> idx=seq(4,ncol(base),by=3)
> annees=as.numeric(substr(names(base)[idx],2,5))
> College=6
> plot(annees,base[College,idx],type="b")

Sur la figure, il y a en plus des intervalles de confiance. On était parti sur des intervalles de confiance construits à partir des lois binomiales (et pas des approximations Gaussiennes),

> N=base[College,idx-2]
> prob=base[College,idx]
> A_inf=qbinom(.05,
+ prob=as.numeric(prob),
+ size=as.numeric(N))
> A_sup=qbinom(.95,
+ prob=as.numeric(prob),
+ size=as.numeric(N))
> p_inf=as.numeric(A_inf/N)
> p_sup=as.numeric(A_sup/N)
> segments(annees,p_inf,annees,p_sup,col="red")

En regardant le dessin, on peut se demander s’il n’y a pas une rupture, vers 2010. Le test utilisé sous R est un test (d’indépendance) du chi-deux sur un tableau de contingence, qui peut s’interpréter effectivement comme un test d’homogénéité, ou de stabilité, du taux d’admission.

où le nombre d’admis ‘théorique’ (sous hypothèse d’homogénéité) est tout simplement le nombre de présents l’année observée, multiplié par le taux (moyen, global) d’admis

et de manière symétrique

Les grandeurs utiles sont ici

> Presents=base[College,idx-2]
> Admis   =base[College,idx-1]

Ici, le test d’une stabilité après 2010 s’écrit ici

> P=Presents[annees>=2010]
> A=Admis[annees>=2010]
> Tableau=cbind(as.numeric(A),as.numeric(P-A))
> colnames(Tableau)=c("Admis","Recal?s")
> rownames(Tableau)=names(A)
> Q=chisq.test(Tableau)
> Q$expected
         Admis  Recal?s
A2010 430.0566 28.94340
A2011 487.2101 32.78991
A2012 515.3184 34.68164
A2013 549.9852 37.01476
A2014 518.1292 34.87081
A2015 545.3005 36.69948
> contrib=(Q$observed-Q$expected)^2/Q$expected
> sum(contrib)
[1] 7.922245
> 1-pchisq(sum(contrib),df=(ncol(Tableau)-1)*(nrow(Tableau)-1))
[1] 0.1605733

C’est exactement ce qu’on obtient avec le test

> prop.test(A,P)
 
data:  A out of P
X-squared = 7.9222, df = 5, p-value = 0.1606
alternative hypothesis: two.sided
sample estimates:
     prop 1    prop 2    prop 3    prop 4    prop 5
6 0.9368192 0.9230769 0.9618182 0.9335605 0.9349005
     prop 6
6 0.9312715

Première observation: après 2010, le taux de réussite est homogène dans le temps, globalement, sur les 5 collèges

Si on regarde avant 2009, c’est la même chose

> P=Presents[annees<2010]
> A=Admis[annees<2010]
> prop.test(A,P)
 
data:  A out of P
X-squared = 1.8812, df = 5, p-value = 0.8653
alternative hypothesis: two.sided
sample estimates:
     prop 1    prop 2    prop 3    prop 4    prop 5
6 0.8844538 0.9058824 0.8965517 0.9043659 0.8897796
     prop 6
6 0.8913934

Seconde observation: avant 2009, le taux de réussite était homogène dans le temps,

Et si on regarde les deux groupes, avant 2009, et après 2010,

> P_avant = sum(Presents[annees<2010])
> A_avant = sum(Admis[annees<2010])
> P_apres = sum(Presents[annees>=2010])
> A_apres = sum(Admis[annees>=2010])
> P=c(P_avant,P_apres)
> A=c(A_avant,A_apres)
> prop.test(A,P)
 
data:  A out of P
X-squared = 34.698, df = 1, p-value = 3.851e-09
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.05551863 -0.02735136
sample estimates:
   prop 1    prop 2 
0.8955075 0.9369425

Troisième observation: si on agrège les données avant 2009 d’un côté, et après 2010 de l’autre, on observe que les taux de réussite on changé.

x

Il y a manifestement une rupture sur les taux de réussite, autour de 2010, sur Rennes. Significative.

  • Analyse de l’évolution temporelle des taux, par collège

Pour faire les dessins, on peut adapter le code précédant

> dessin_c=function(College=1,YL=c(.7,1)){
+ plot(annees,base[College,idx],type="b",ylim=YL)
+ title(base[College,1])
+   N=base[College,idx-2]
+ prob=base[College,idx]
+ A_inf=qbinom(.05,
+              prob=as.numeric(prob),
+              size=as.numeric(N))
+ A_sup=qbinom(.95,
+              prob=as.numeric(prob),
+              size=as.numeric(N))
+ p_inf=as.numeric(A_inf/N)
+ p_sup=as.numeric(A_sup/N)
+ segments(annees,p_inf,annees,p_sup,col="red")
+ 
+ Presents=base[College,idx-2]
+ Admis   =base[College,idx-1]
+ p_moy=sum(Admis)/sum(Presents)
+ abline(h=p_moy,lty=2)
+ n_inf=qbinom(.05,prob=p_moy,size=sum(Presents))
+ n_sup=qbinom(.95,prob=p_moy,size=sum(Presents))
+ p_inf=as.numeric(n_inf/sum(Presents))
+ p_sup=as.numeric(n_sup/sum(Presents))
+ #abline(h=p_inf,lty=2,col="red")
+ #abline(h=p_sup,lty=2,col="red")
+ }

Par exemple, pour le collègue E,

> dessin_c(1)

pour le collège  C

> dessin_c(2)

et le collège A,

> dessin_c(4)

Après, il est possible de faire des tests. Tout plein. Par exemple, au collège E, les quatre dernières années suivent une tendance à la baisse, manifeste, mais pas significatif (avec un seuil inférieur à 20%)

> College=1
> Presents=base[College,idx-2]
> Admis   =base[College,idx-1]
> P=Presents[annees>2011]
> A=Admis[annees>2011]
> prop.test(A,P)
  
data:  A out of P
X-squared = 4.4104, df = 3, p-value = 0.2204
alternative hypothesis: two.sided
sample estimates:
  prop 1    prop 2    prop 3    prop 4
1  0.925 0.8804348 0.8641975 0.8191489
  • Comparaison des cinq collèges, par année

Au lieu de suivre un collège, au cours du temps, on peut aussi prendre une année, et comparer les collèges. La encore, on peut commencer par une petite fonction pour faire des dessins,

> dessin_y=function(Annee=2015){
+ K=1+3*which(annees==Annee)
+ NOM=substr(base[1:5,1],9,9)
+ plot(base[1:5,K],ylim=c(.7,1),xlab=Annee,
+      ylab="Taux Admis",axes=FALSE,
+      xlim=c(.3,5.7))
+ axis(2)
+ text(1:5,rep(.72,5),NOM,col="blue")
+ 
+ prob=base[1:5,K]
+ N=base[1:5,K-2]
+ A_inf=qbinom(.05,
+              prob=as.numeric(prob),
+              size=as.numeric(N))
+ A_sup=qbinom(.95,
+              prob=as.numeric(prob),
+              size=as.numeric(N))
+ p_inf=as.numeric(A_inf/N)
+ p_sup=as.numeric(A_sup/N)
+ segments(1:5,p_inf,1:5,p_sup,col="red")
+ abline(h=sum(base[1:5,K-1])/
+          sum(base[1:5,K-2]),
+       lty=2)
+ }

En 2004,

> dessin_y(2004)

en 2006,

> dessin_y(2006)

On observe que les cinq collèges sont assez proches, en terme de résultats au brevet.

> P=base[1:5,"P2006"]
> A=base[1:5,"A2006"]
> prop.test(A,P)
 
data:  A out of P
X-squared = 2.5407, df = 4, p-value = 0.6374
alternative hypothesis: two.sided
sample estimates:
   prop 1    prop 2    prop 3    prop 4    prop 5 0.8760331 0.8829787 0.8750000 0.9050633 0.9298246

En 2011 par contre, on a un graphique bien différent

> dessin_y(2011)

et un rapide test confirme que les collèges ne sont plus homogènes

> P=base[1:5,"P2006"]
> A=base[1:5,"A2006"]
> prop.test(A,P)
 
data:  A out of P
X-squared = 2.5407, df = 4, p-value = 0.6374
alternative hypothesis: two.sided
sample estimates:
   prop 1    prop 2    prop 3    prop 4    prop 5
0.8760331 0.8829787 0.8750000 0.9050633 0.9298246

en 2014

> dessin_y(2014)

et en 2015

> dessin_y(2015)

On peut d’avoir regarder l’évolution de la p-value du test d’homogénéité entre collège, en fonction du temps

> p=function(i){
+     nom=paste("P",annees[i],sep="")
+     P=base[1:5,nom]
+     nom=paste("A",annees[i],sep="")
+     A=base[1:5,nom]
+     prop.test(A,P)$p.value}
> plot(annees,Vectorize(p)(1:12),type="b")
> abline(h=.05,lty=2,col="red")

Sauf en 2012, on note que depuis 2008, les collèges rennais ne sont plus vraiment homogènes, en terme de réussite au brevet. On peut passer des heures sur ces données… d’ailleurs toutes les suggestions et toutes les observations sont les bienvenues !


2 thoughts on “De la réussite au brevet dans cinq collèges rennais”

  1. Parfois je me demande si en organisant une sélection dans certains collèges, certain n’essayent pas de piper les résultats de ce beau raisonnement statistique.

    1. c’est ce qu’on observe ici… certains montent, d’autres baisse… on voit que certains font de la sélection, et les non-sélectionnés se retrouvent dans d’autres collèges (la moyenne étant constante sur les dernières années)

Leave a Reply

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