Freakonometrics

To content | To menu | To search

Thursday, July 14 2011

Comparer des notes entre pays

A Montréal, l'an passé, le principal souvenir que je garderai de mon cours est le mal que j'ai eu à comprendre comment mettre des notes. Je ne ferais pas un billet sur la difficulté à évaluer le niveau d'un étudiant (car j'ai toujours détesté les examens, aussi bien en tant qu’étudiant que prof), mais j'ai une une réelle difficulté à comprendre ce que vaut une note... Par exemple, un C, ça correspond à quoi (avec mon référentiel de prof français) ? C'est bien ou pas ? C'est quoi la moyenne ?
La seule information dont on dispose pour mettre les notes est le tableau ci-contre. Et autant je pense voir ce qu'est un travail "excellent", ou "faible", mais "passable" ? Car le tableau me dit qu'un élève qui a 50 sur 100 a une note passable, ce qui est aussi la référence que l'on utilise en France. Sauf que les élèves ont commence à me dire que 50, c'est pas terrible... qu'une note moyenne ici c’était plutôt 60, voire 65. Bref, sous-entendu (voire entendu, tout court), "monsieur, vous devez remonter les notes". Et comme je l'ai prouve ici, il ne faut jamais croire les élèves...
Et effectivement, dans un vieux rapport datant des années 90 (en maths et informatiques), je suis tombé sur le graphique suivant

qui donne la distribution "typique" des notes. Autrement dit, la médiane est à 63, ce qui signifie que plus de moitie a une note qui est "bien","très bien" voire "excellent". En revanche, une distribution comme celle dessous est considérée comme "dure et discriminatoire"

Pour mieux comprendre les notations au Canada et en France, j'ai voulu faire une petite étude (non, je ne reviendrai pas sur les notes). On continue aujourd'hui à trouver ce genre de distribution à Montréal. Par exemple, si on considère les cours, analyse (en première année), algèbre linéaire et calcul, on a les histogrammes suivants

ce qui donne le boxplot suivant

i.e. pour les cours algèbre linéaire et calcul on est effectivement sur des moyennes autour de 60.
Prenons maintenant, a titre de comparaison, des cours de maths, dans une université française, en l’occurrence a Rennes, comme analyse (en première année), arithmétique et algèbre linéaire, on a des histogrammes beaucoup plus plats,

A titre de comparaison, j'ai été voir du cote du département de Sciences Économiques, avec macroéconomie, microéconomie et mathématiques appliquées, on a

i.e. on retrouve de belles gaussiennes pour les cours d’économie, mais une distribution assez différente pour le cours de maths,

On a effectivement des distributions assez différentes, généralement, en première année à l’université, entre le Canada et la France. Ce qui explique que les profs, lorsque les étudiants souhaitent passer d'un pays a l'autre ne regarde plus vraiment les notes, mais plus le rang de l’étudiant au sein de sa promotion.
D'ailleurs, si on fait un graphique quantile-quantile, avec les cours de maths à Montréal versus les cours de maths a Rennes, on a le graphique suivant

autrement dit, une note de 50 à Montréal correspond à 33 en France (soit 6.5 sur 20), alors que 50 en France (10 sur 20) correspond a 59 à Montréal. On retrouve la encore le fait qu'une note médiane correspond à 60 ici... c'est a dire un C. Il va falloir que je m'adapte l’année prochaine....

Tuesday, April 21 2009

R et Fortran (ou C/C++)

Puisque la question m'a été posée par un élève, je vais faire un cours billet sur le sujet. Oui, il est possible d'executer des code Fortran en R, et il n'est pas forcément utile de retaper le code dans un autre langage.

Prenons un exemple pratique (et intéressant). Sur la page http://lstat.kuleuven.be/Wiley (associée au livre Statistics of Extremes, de Jan Beirlant, Yuri Gogebeur, Johan Segers et Jeff Teugel), il y a des bases de données, mais aussi des codes, dont certains en Fortran. Par exemple ici. Un code en Fortan, ça ressemble à ça,

Pour utilise code et en particulier la fonction gpd, il suffit de pouvoir appeler du code Fortran depuis R. On peut trouver pas mal de documents là dessus sur internet (par exemple ici, ou ). Celà se fait en deux temps.

  1. il faut compiler le code Fortan pour générer un fichier .dll. Pour cela, il suffit de trouver des compilateurs (gratuits) ici, par exemple.
  2. ensuite depuis R, on utilise la fonction dyn.load("D:\\gpd.dll") et toujours sous R, on utilise la commande .Fortran("gpd") doù les paramètres peuvent être spécifiés, par exemple .Fortran("gpd", nobs=as.integer(nrow(base),p=as.integer(4)).
Notons que dans la seconde étape, pour vérifier si la library est bien chargée, on peut lancer le test is.loaded(symbol.For("gpd")) dont, avec un peu de chance, la réponse sera TRUE.