mardi 25 juin 2019

Économétrie - Classe inversée

Lorsque j'avais commencé mon cours d'économétrie ("théorie et pratique de la régression linéaire simple et multiple" serait plus approprié) il y a une quinzaine d'années, je disposais de 24h pour les CM (cours magistraux) et 12h pour les TD (travaux dirigés, sur machine en ce qui me concerne). C'était Byzance. Puis, au fil du temps sont arrivées les restrictions, de plus en plus oppressantes, au point que ces dernières années on m'accordait (on accordait aux étudiants) 8.75h CM et 10.5h TD. Je me suis toujours battu pour préserver les exercices sur machine, primordiales à mon sens, parce que les étudiants sont dans l'action, parce que je peux être au plus près d'eux pour échanger et parler des aspects opérationnels que l'on ne traite jamais dans les manuels d'économétrie. Il m'a bien fallu lâcher du lest d'un autre côté. C'est tombé sur les CM. Aussi peu d'heures (5 séances d'1h45) pour traiter de la corrélation, la régression simple, la régression multiple et l'appréhension des problèmes pratiques (expertise des résidus, colinéarité, sélection de variables, identification des points atypiques ; des thèmes de niveau L3, ni plus ni moins), on en rigolerait si ce n'était pas au détriment des étudiants.

Pour le coup, je me suis dit qu'il fallait absolument trouver une autre manière de réaliser mon cours d'économétrie, sinon on allait droit dans le mur. Ça tombe sous le sens finalement. Quel intérêt aujourd'hui de faire des CM lénifiants où les étudiants grattent avec un profond ennui, alors qu'ils ont à disposition de très nombreux supports sur le web, y compris d'excellents (pour certains) cours filmés réalisés par d'éminents collègues, en français (faites une recherche avec les mots-clés "régression linéaire" sur YouTube, juste pour voir), en anglais, dans d'autres langues. Je me suis dit que c'était là une occasion d'appliquer les principes de la pédagogie inversée (ou classe inversée), séduisante en théorie, mais dont la mise en œuvre n'est pas toujours évidente parce que nous devons forcément composer avec des contraintes de tout ordre, y compris matérielles. Pour ma part, j'avais une soixantaine d'étudiants, dans des salles où il est impossible de modifier la configuration du mobilier pour les organiser en groupes (notre service du patrimoine a certainement beaucoup de qualités, mais l'humour n'en fait pas partie).

Après réflexion, j'ai opté pour la version suivante de la classe inversée. Les étudiants sont organisés en groupes. Une semaine avant la séance, je leur transmets une liste de supports à lire, accompagnée d'une série d'exercices à réaliser. Le jour dit, je fais un rappel de cours très succinct (une quinzaine de minutes) en mettant l'accent sur les points importants. Puis, les étudiants, au titre de leur groupe, passent au tableau pour la correction des exercices sur la base du volontariat. Chaque passage avec succès correspond à un bonus sur la note finale de la matière.

Je n'étais pas vraiment convaincu de l'intérêt du rappel de cours, mais les étudiants ont insisté pour que je resitue les thèmes de la séance. Dans l'idéal, l'étudiant qui passe au tableau devrait effectuer une correction commentée. Dans les faits, il a tendance à écrire silencieusement à toute vitesse les équations et les résultats. Souvent les étudiants s'attachent au "comment faire" au détriment du "pourquoi le faire ainsi". Pendant qu'ils écrivent donc, je m'applique à les aider en les poussant à expliquer leur démarche ou en commentant moi-même, afin de positionner la question traitée par rapport au chapitre de cours concerné.

Ça a plutôt bien marché finalement, surtout parce que les étudiants ont adhéré au mode de fonctionnement. C'est heureux parce qu'un enseignement n'a aucun sens si on n'a pas leur assentiment. J'avais aussi la crainte que les séances se transforment en activité de recopie des corrections, mais la plupart ont joué le jeu et se sont beaucoup investis. Il m'a même fallu instaurer des règles de passage au tableau pour que les bonus soient équitablement répartis.

Je mets en ligne aujourd'hui la liste des exercices pour les 4 séances "CM" du cours d'économétrie (je consacrais la séance 5 des "CM" à la correction conjointe d'annales d'examen). L'objectif pédagogique est d'aiguiller les étudiants sur les différents thèmes du programme de L3. J'y joins les corrigés (sous Excel, tout le monde connaît mon attachement aux vertus pédagogiques du tableur pour l'initiation à la statistique) que je diffusais après coup afin que les étudiants disposent d'un repère commun. J'avoue que j'ai un peu du mal à m'y retrouver moi-même après tant d'années. Il se peut que certains exercices aient été glanés sur d'autres sites web ou encore dans des ouvrages de référence, je suis désolé de ne pas pouvoir créditer leurs auteurs faute de pouvoir les retrouver, mais je les remercie quoiqu'il en soit.

Exercices corrigés - Économétrie
ThèmeSujetCorrigé
Séance n°1. Corrélation de Pearson. Estimation, intervalle de confiance, tests, corrélation partielle, corrélation de Spearman.
Séance n°2. Régression linéaire simple. Estimation des coefficients, intervalle de confiance, tests de significativité, prédiction ponctuelle et par intervalle.
Séance n°3. Régression linéaire multiple. Estimation des coefficients, intervalle de confiance, tests de significativité, tests généralisés sur les coefficients, prédiction ponctuelle et par intervalle, rupture de structure, test de Chow.
Séance n°4. Pratique de la régression. Etude des résidus, colinéarité et sélection de variables, points atypiques et influents, traitement des exogènes qualitatives.

lundi 17 juin 2019

Économétrie - Projet Open Data

Suite à des circonstances particulières, il m'a fallu improviser une évaluation de mon cours d'économétrie une année. J'avais décidé de faire travailler mes étudiants sur la modélisation à partir des "Open Data". J'avais en-tête un double objectif : (1) les faire travailler sur la pratique de la régression linéaire multiple, qui était un peu le coeur du cours il faut dire ; (2) les amener à s'intéresser aux "Open Data", le potentiel d'études qu'elles (données ouvertes) recèlent, mais aussi la difficulté à les exploiter puisqu'elles ne sont pas explicitement collectées à des fins d'analyse.

Les étudiants ont si bien travaillé que j'ai reconduit le dispositif l'année suivante en rajoutant une soutenance pour que les étudiants puissent présenter et de défendre leur travail. Ils ont beaucoup d'imagination pour dégoter des sujets originaux voire épiques qui ont le mérite de titiller ma curiosité.

Je mets en ligne le cahier des charges que je diffusais auprès des étudiants (souvent des personnes me contactent pour avoir des idées de mémoire, je me dis que le thème universel des "open data" peut inspirer). Dans notre timing, suite à ma présentation du format de l'évaluation, ils avaient deux semaines pour me proposer un sujet qui tient la route, que je devais valider, puis deux semaines supplémentaires pour finaliser l'étude et me rendre un rapport. Les soutenances avaient lieu la semaine suivante. Sachant qu'en parallèle, ne l'oublions pas, ils suivent les autres enseignements et subissent d'autres évaluations sous des formes diverses et variées.

Enfin, très important, je proscrivais l'utilisation des bases déjà préparées que l'on retrouve sur les sites dépôts dédiés aux challenges ou à l'étude des algorithmes de machine learning. Elles sont très bien dans le cadre restreint des compétitions et des comparaisons, mais elles ne reflètent en rien la démarche la modélisation dans une étude réelle, contexte où la préparation des données tient une place primordiale et conditionne la qualité des résultats.

Les étudiants peuvent utiliser les outils qu'ils souhaitent. Ils s'appuient sur R ou Python souvent, mais plusieurs ont fait le choix de Gretl. La seule règle imposée était que je puisse reproduire les calculs à l'identique.

Cahier des charges : Projet Open Data - Modélisation

jeudi 13 juin 2019

Outils d'optimisation sous R

J'utilise quasiment toujours le tableur Excel pour disséquer les algorithmes de machine learning. Il n'y a rien de mieux je trouve pour décortiquer les formules. On ne peut pas rentrer des commandes au petit bonheur la chance, nous sommes obligés de tout comprendre pour pouvoir tout décomposer. Comme une grande partie des méthodes revient à optimiser une fonction de perte (ou de gain), je m'appuie alors sur le solveur. J'obtiens souvent des résultats satisfaisants, comme par exemple dans mon ouvrage – qui servira de référence – consacré à la “Pratique de la régression logistique” où l'on maximise la log-vraisemblance.

Je me suis demandé s'il existait un équivalent du solveur sous R. En cherchant un peu, je me suis rendu compte que oui, il s'agit de la fonction optim() du package “stats”, installé et chargé par défaut sous R. Tout comme son homologue sous Excel, il peut fonctionner avec seulement une fonction objectif et un vecteur de paramètres. Mais il peut aller plus loin, nous pouvons lui fournir d'autres informations pour qu'il soit plus efficace. Il sait produire également des résultats additionnels nécessaires à l'inférence statistique lorsque nous travaillons sur les algorithmes de régression par exemple.

Dans ce tutoriel, nous montrons l'utilisation des fonctions optim() et optimHess() pour la programmation de la régression logistique. Nous comparerons les résultats d'une part avec les sorties de la fonction glm() de R, d'autre part avec les fruits d'une petite implémentation maison de l'algorithme de Newton-Raphson.

Mots-clés : optim, optimHess, algorithme d'optimisation, bfgs, newton-raphson, log-vraisemblance, vecteur gardient, matrice hessienne, logiciel R, solveur excel, régression logistique
Didacticiel : Optimisation sous R
Données et programme R : optim et optimHess
Références :
R. Rakotomalala, "Pratique de la régression logistique", Version 2.0, mai 2017.

lundi 10 juin 2019

Régression ZIP sous R et Python

Ce tutoriel fait suite au support de cours consacré à la Zero-Inflated Poisson Regression, une technique adaptée à la modélisation d'une variable de comptage lorsque la valeur "0" est surreprésentée.

Nous travaillerons sous R dans un premier temps. Nous détaillons les différentes manières de modéliser une variable cible représentant un dénombrement. Nous appliquerons tour à tour la régression logistique, la régression de Poisson et la régression ZIP avec le package "pscl" (Political Science Computational Library). Nous analyserons les résultats pour essayer de comprendre l'intérêt des différentes approches. Dans un deuxième temps, nous reprenons dans les grandes lignes la même étude en travaillant sous Python cette fois-ci. Nous ferons appel au package "statsmodels". Nous constaterons – sans surprise – la convergence des résultats avec ceux de R.

Mots-clés : régression zip, zero-inflated poisson regression, régression de poisson, régression logistique, package pscl, package statsmodels, logiciel R, test de vuong
Données et programmes R / Python : Affairs
Références :
R. Rakotomalala, "Régression ZIP - Diapos", juin 2019.
R. Rakotomalala, "Régression de Poisson - Diapos", mai 2019.

jeudi 6 juin 2019

Régression ZIP - Diapos

En grattant un peu pour rédiger mon précédent support pour la Régression de Poisson, je me suis rendu compte qu’il y avait une abondante littérature dans le domaine. Dans ce document, je m’intéresse à la " Zero-inflated Poisson Regression " c.-à-d. à la construction d’un modèle de comptage dans le cas où la valeur 0 est surreprésentée.

Je réutilise l’exemple des infidélités maritales (tout un programme) où l’on essaie d’expliquer (Y) le nombre de tromperies dans les ménages sur une période étudiée. Le schéma de modélisation repose sur l’idée qu’elle (la valeur zéro) est régie par deux phénomènes : (Y = 0) parce que la personne est intrinsèquement fidèle, elle ne risque pas d’aller voir ailleurs ; (Y = 0) parce que la personne n’a pas eu l’occasion ou l’opportunité de folâtrer sur la période étudiée.

Ce support décrit les mécanismes sous-jacents à la Régression ZIP : l’estimation des paramètres, les tests statistiques associés, notamment celui qui permet de cerner la contribution effective du modèle par rapport à la régression de Poisson usuelle.

Mots-clés : modèle de comptage, régression de poisson, régression zip, zero-inflated poisson regression, estimation du maximum de vraisemblance, test de vuong, fonction de lien logit, fonction de lien log
Données et calculs sous Excel : Affairs ZIP
Références :
R. Rakotomalala, "Régression de Poisson - Diapos", mai 2019.