{"word_count": 796, "character_count": 7881}
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ègesOn avait commencé par quelque chose de simple: regarder l'évolution dans le temps du taux de réussite,&#62; base=+ read.table(+ "http://freakonometrics.free.fr/brevet_rennes.csv", header=TRUE,sep=";",dec=",")&#62; idx=seq(4,ncol(base),by=3)&#62; annees=as.numeric(substr(names(base)[idx],2,5))&#62; College=6&#62; 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),&#62; N=base[College,idx-2]&#62; prob=base[College,idx]&#62; A_inf=qbinom(.05,+ prob=as.numeric(prob),+ size=as.numeric(N))&#62; A_sup=qbinom(.95,+ prob=as.numeric(prob),+ size=as.numeric(N))&#62; p_inf=as.numeric(A_inf/N)&#62; p_sup=as.numeric(A_sup/N)&#62; 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'admiset de manière symétriqueLes grandeurs utiles sont ici&#62; Presents=base[College,idx-2]&#62; Admis   =base[College,idx-1]Ici, le test d'une stabilité après 2010 s'écrit ici&#62; P=Presents[annees&#62;=2010]&#62; A=Admis[annees&#62;=2010]&#62; Tableau=cbind(as.numeric(A),as.numeric(P-A))&#62; colnames(Tableau)=c("Admis","Recal?s")&#62; rownames(Tableau)=names(A)&#62; Q=chisq.test(Tableau)&#62; Q$expected         Admis  Recal?sA2010 430.0566 28.94340A2011 487.2101 32.78991A2012 515.3184 34.68164A2013 549.9852 37.01476A2014 518.1292 34.87081A2015 545.3005 36.69948&#62; contrib=(Q$observed-Q$expected)^2/Q$expected&#62; sum(contrib)[1] 7.922245&#62; 1-pchisq(sum(contrib),df=(ncol(Tableau)-1)*(nrow(Tableau)-1))[1] 0.1605733C'est exactement ce qu'on obtient avec le test&#62; prop.test(A,P) data:  A out of PX-squared = 7.9222, df = 5, p-value = 0.1606alternative hypothesis: two.sidedsample estimates:     prop 1    prop 2    prop 3    prop 4    prop 56 0.9368192 0.9230769 0.9618182 0.9335605 0.9349005     prop 66 0.9312715Première observation: après 2010, le taux de réussite est homogène dans le temps, globalement, sur les 5 collègesSi on regarde avant 2009, c'est la même chose&#62; P=Presents[annees&#60;2010]&#62; A=Admis[annees&#60;2010]&#62; prop.test(A,P) data:  A out of PX-squared = 1.8812, df = 5, p-value = 0.8653alternative hypothesis: two.sidedsample estimates:     prop 1    prop 2    prop 3    prop 4    prop 56 0.8844538 0.9058824 0.8965517 0.9043659 0.8897796     prop 66 0.8913934Seconde 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,&#62; P_avant = sum(Presents[annees&#60;2010])&#62; A_avant = sum(Admis[annees&#60;2010])&#62; P_apres = sum(Presents[annees&#62;=2010])&#62; A_apres = sum(Admis[annees&#62;=2010])&#62; P=c(P_avant,P_apres)&#62; A=c(A_avant,A_apres)&#62; prop.test(A,P) data:  A out of PX-squared = 34.698, df = 1, p-value = 3.851e-09alternative hypothesis: two.sided95 percent confidence interval: -0.05551863 -0.02735136sample estimates:   prop 1    prop 2 0.8955075 0.9369425Troisiè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é.xIl 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ègePour faire les dessins, on peut adapter le code précédant&#62; 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,&#62; dessin_c(1)pour le collège  C&#62; dessin_c(2)et le collège A,&#62; 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%)&#62; College=1&#62; Presents=base[College,idx-2]&#62; Admis   =base[College,idx-1]&#62; P=Presents[annees&#62;2011]&#62; A=Admis[annees&#62;2011]&#62; prop.test(A,P)  data:  A out of PX-squared = 4.4104, df = 3, p-value = 0.2204alternative hypothesis: two.sidedsample estimates:  prop 1    prop 2    prop 3    prop 41  0.925 0.8804348 0.8641975 0.8191489Comparaison des cinq collèges, par annéeAu 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,&#62; 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,&#62; dessin_y(2004)en 2006,&#62; dessin_y(2006)On observe que les cinq collèges sont assez proches, en terme de résultats au brevet.&#62; P=base[1:5,"P2006"]&#62; A=base[1:5,"A2006"]&#62; prop.test(A,P) data:  A out of PX-squared = 2.5407, df = 4, p-value = 0.6374alternative hypothesis: two.sidedsample estimates:   prop 1    prop 2    prop 3    prop 4    prop 5 0.8760331 0.8829787 0.8750000 0.9050633 0.9298246En 2011 par contre, on a un graphique bien différent&#62; dessin_y(2011)et un rapide test confirme que les collèges ne sont plus homogènes&#62; P=base[1:5,"P2006"]&#62; A=base[1:5,"A2006"]&#62; prop.test(A,P) data:  A out of PX-squared = 2.5407, df = 4, p-value = 0.6374alternative hypothesis: two.sidedsample estimates:   prop 1    prop 2    prop 3    prop 4    prop 50.8760331 0.8829787 0.8750000 0.9050633 0.9298246en 2014&#62; dessin_y(2014)et en 2015&#62; 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&#62; 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}&#62; plot(annees,Vectorize(p)(1:12),type="b")&#62; 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 !