lundi 27 mai 2019

Régression de Poisson avec R

Ce tutoriel fait suite au support de cours dédié à la Régression de Poisson. Je reprends la trame et les données d'un traitement décrit dans l'ouvrage "Approaching Multivariate Analysis - A Practical Introduction" (2010, chapitre 13). Les auteurs effectuent les traitements sous SPSS. J'ai trouvé intéressant de pouvoir reproduire (ou pas) leurs résultats en effectuant l'analyse sous R avec l'outil glm() du package "stats" de R.

Mots-clés : régression de poisson, modèle de comptage, glm, logiciel R, codage disjonctif, codage imbriqué, tests de significativité, résidus déviance, résidus standardisé, levier
Didacticiel : Régression de Poisson avec R
Données et programme : Poisson Regression
Références :
P. Dugard, J. Todman, H. Staines, "Approcahing Multivariate Analysis - A Practical Introduction", Second Edition, Routeledge, 2010.
R. Rakotomalala, "Régression de Poisson - Diapos", Mai 2019.

vendredi 24 mai 2019

Régression de Poisson - Diapos

J'essaie de mettre de l'ordre dans mes documents concernant mon cours d'économétrie en ce moment. Je suis tombé sur une très ancienne TODO LIST où j'avais noté une série de choses à faire en relation avec cet enseignement, entres autres la régression de Poisson. J'avais acheté un livre à cet effet (Hilbe, 2011), et il prenait malheureusement la poussière dans ma petite bibliothèque personnelle depuis plusieurs années.

Il n'est jamais trop tard pour bien faire. J'ai lu l'ouvrage, excellent au demeurant (à mi-chemin entre le texte didactique et la monographie), et j'ai décidé rédiger un support de cours pour cette technique explicative où la variable réponse représente un comptage. Sont détaillés dans le diaporama : les principes qui sous-tendent la méthode, l'estimation des paramètres par la méthode du maximum de la vraisemblance, les outils nécessaires à sa pratique (tests et intervalles de confiance, sélection de variables, identification des points atypiques et influents).

L'écriture de ce support aura été pour moi l'occasion de continuer à explorer une autre manière de présenter une méthode statistique en faisant la part belle à du code R. Il ne faut pas que la présentation soit dépendante du langage, certainement pas. Mais illustrer par des instructions et des sorties de logiciel peuvent aider à comprendre les concepts. Je l'espère tout du moins.

Un tutoriel détaillant la mise en oeuvre de la régression de Poisson sur un ensemble de données arrive incessamment sous peu.

Mots-clés : régression de poisson, modèle de comptage, estimation du maximum de vraisemblance, déviance, sélection de variable, critères aic / akaike et bic / schwarz, étude des résidus, détection des points atypiques et influents, surdispersion, overdispersion
Support de cours : Poisson Regression
Données pour illustration du cours : Affairs
Références :
J.M. Hilbe, ''Negative Binomial Regression'', Second Edition, Cambridge University Press, 2011.

mercredi 15 mai 2019

Économétrie avec gretl

En faisant faire un travail d'analyse économétrique sur les "Open Data" à mes étudiants, où ils étaient libres d'utiliser l'outil de leur choix, j'ai constaté que plusieurs d'entre eux ont opté pour "gretl" (Gnu Regression, Econometrics and Time-series Library). Je connaissais, je l'avais testé vite fait par le passé, mais sans creuser davantage. Ces étudiants avaient parfaitement répondu au cahier des charges de l'étude, là où la majorité de leurs collègues avaient travaillé sous R. Visiblement, "gretl" semble proposer des fonctionnalités assez complètes, qui répondent aux attendus de mon enseignement d'économétrie de Licence en tous les cas. Nous allons examiner cela dans ce tutoriel.

Nous prenons comme repère la quatrième séance de TD (travaux dirigés sur machine) de mon cours. L'objectif est d'expliquer la nocivité des cigarettes (teneur en CO – monoxyde de carbone) à partir de leurs caractéristiques (teneur en nicotine, en goudron, poids). Les thèmes abordés sont : l'importation et la description des données, la pratique de la régression linéaire multiple avec l'estimation des paramètres du modèle et l'inspection des résultats. Mettre en parallèle les sorties de "gretl" et la correction du TD (traité sous R) accessible en ligne nous permettra de calibrer notre démarche et vérifier les résultats.

Mots-clés : gretl, économétrie, régression linéaire multiple, analyse des résidus, tests de normalité, détection des points atypiques et influents, graphique des résidus, tests généralisés
Didacticiel : Régression avec gretl
Données et programme : Gretl - Cigarettes
Références :

dimanche 12 mai 2019

Économétrie - TD 6 - Évaluation

Je passe au contrôle pour la sixième session sur machine (après les TD 1.A, TD 1.B, TD 2, TD 3, TD 4, TD 5) de mon cours d'économétrie. Contrairement aux autres séances, je fournis uniquement les données et les objectifs. Charge aux étudiants (en groupes de 2 souvent) de mettre au point une stratégie pour élaborer le modèle le plus performant.

Nous sommes un peu beaucoup dans une vision "machine learning" où seule compte l'efficacité prédictive (un chercheur célèbre disait qu'en machine learning, on recherche avant tout à identifier ce qui marche le mieux, alors qu'en statistique, on chercherait plutôt à expliquer pourquoi ça marche). Au regard de la durée de la séance (1h45) où les étudiants doivent effectuer les traitements, mettre en forme les résultats, et rédiger un compte rendu, il est difficile de se lancer dans des considérations métaphysiques de toute manière.

Les étudiants reçoivent deux ensembles de données dispatchées dans deux feuilles d'un classeur Excel. Le premier est classique (données étiquetées), il comporte la variable endogène à prédire et un certain nombre d'exogènes candidates. Ils doivent l'exploiter pour créer le meilleur modèle possible. Le second contient uniquement les explicatives, les observations étant numérotées (données non-étiquetées). J'ai conservé pour la correction les valeurs de la colonne cible. Les étudiants doivent produire les prédictions ponctuelles et les intervalles de prédiction. Une partie de l'évaluation repose sur la confrontation entre les prédictions des étudiants et les valeurs observées (que j'ai réservées à part). Deux critères m'importent dans l'histoire : (1) l'erreur quadratique moyenne (écarts entre prédiction ponctuelle et valeur observée) ; (2) la qualité des fourchettes de prédiction (leur – faible - amplitude et la proportion des valeurs observées effectivement couvertes par les fourchettes, ces deux caractéristiques étant antinomiques).

Dans le fichier mis en ligne ici, l'objectif est de prédire le prix des véhicules à partir de leurs caractéristiques (encore les voitures Monsieur…). Il y a deux (tout petits) pièges : la distribution de l'endogène est fortement asymétrique, une transformation serait souhaitable ; une des exogènes présente une valeur unique, on devrait s'en apercevoir avec les statistiques descriptives (si on pense à les calculer), il ne sert à rien de l'introduire dans le modèle.

Travailler en temps contraint oblige les étudiants à avoir une bonne maîtrise, d'une part des concepts et méthodes de la régression linéaire multiple, d'autre part des outils (Excel, R ou Python, ils ont le choix), pour espérer pouvoir s'en sortir.

Sujet du contrôle : Régression multiple - Excel, R ou Python
Données : Car prices - Data
Données pour correction : Car prices - Étiquettes

samedi 11 mai 2019

Économétrie - TD 5 - Régression sous Python

Ne dit-on pas que "L'ennui naquit un jour de l'uniformité" ? Pour varier encore une fois les plaisirs, je fais travailler les étudiants sous Python dans ce cinquième TD (après TD 1.A, TD 1.B, TD 2, TD 3, TD 4) de mon cours d'économétrie. L'objectif est de pousser les étudiants à s'abstraire de l'outil, la forme, pour se concentrer sur le fond, la pratique de la régression linéaire multiple. Tout comme pour R, certains connaissent déjà, d'autres non. Pour préparer la séance, je les enjoins à réaliser des exercices de remise à niveau pour Python.

Durant le TD, nous revenons sur les principaux thèmes étudiés cette année : la régression linéaire multiple, l'inspection des résidus, la détection de la colinéarité, la sélection de variables, les tests généralisés, la détection et le traitement des points atypiques et influents, la prédiction ponctuelle et par intervalle. Temps imparti : 1h45. Bien s'exercer sous Python en amont est fondamental pour le succès de la séance.

Sujet du TD : Régression multiple - Python
Données : Mortality - Data
Correction du TD : Mortality - Correction

vendredi 10 mai 2019

Économétrie - TD 4 - Régression sous R (II)

"Ah bon ? On ne traite pas un fichier de voitures aujourd'hui ?". Les étudiants sont caustiques parfois. Oui, oui, pour ce quatrième TD (après TD 1.A, TD 1.B, TD 2 et TD 3) de mon cours d'économétrie, le propos de la régression est l'explication de la nocivité des cigarettes à partir de leur teneur en divers composants. Nettement moins poétique que les automobiles je trouve. Mais il faut bien varier les plaisirs. Nous travaillons sous le logiciel R pour la seconde fois. Les thèmes méthodologiques abordés sont la régression linéaire multiple, l'analyse des résidus dont les tests de normalité, la détection et le traitement des points atypiques, la sélection de variables, la prédiction sur les individus supplémentaires regroupés dans un fichier à part, l'exportation des résultats.

Petite coquetterie, je demande aux étudiants de produire à la fin du TD un rapport (word ou pdf) récapitulant les questions, le code R et leurs éventuels commentaires. Pour ce faire, je les aiguille sur la création de projets Markdown sous Rstudio. J'effectue une petite démonstration en début de séance. On trouve facilement des tutoriels à ce sujet sur le web.

Comme d'habitude, les étudiants ont 1h45 pour réaliser les exercices.

Sujet du TD : Régression multiple - R - Markdown
Données : Cigarettes - Data
Correction du TD : Cigarettes - Correction

jeudi 9 mai 2019

Économétrie - TD 3 - Régression sous R (I)

(1) "Qu'importe le flacon pourvu qu'on ait l'ivresse" et (2) "cent fois sur le métier il faut remettre son ouvrage" sont deux adages qui me conviennent parfaitement (surtout le premier, on se demande pourquoi). Dans ce troisième TD de mon cours d'économétrie (après TD 1.A, TD 1.B et TD.2), nous revenons (précepte 2) sur la corrélation et la régression simple, mais avec un autre outil (précepte 1), le logiciel R, tant prisé par les statisticiens. Certains de nos étudiants sont assez familiarisés avec R, d'autres non. Pour que tout le monde soit d'emblée opérationnel, je leur conseille de réaliser préalablement (avant la séance !) des exercices de remise à niveau pour R.

Les thèmes abordés durant ce TD sont : la corrélation, intervalle de confiance de la corrélation, la corrélation sur les rangs, la régression simple, l'estimation de la pente et de la constante, les tests de significativités, les graphiques usuels en régression simple, la prédiction ponctuelle et par intervalle.

Temps imparti : 1h45. Les meilleurs y arrivent, pourvu qu'ils aient une bonne connaissance de R en amont.

Sujet du TD : Corrélation et régression simple - R
Données : Autos completed - Data
Correction du TD : Autos completed - Correction

mercredi 8 mai 2019

Économétrie - TD 2 - Régression multiple

Deuxième séance de TD (la première est scindée en 1.a et 1.b) pour mon cours d'économétrie. Le thème est la régression multiple, avec la dernière session sous Excel. Nous explorons : l'estimation des coefficients par le calcul matriciel et à l'aide de la fonction droitereg(), la construction du tableau d'analyse de variance, le calcul du coefficient de détermination, le test de significativité globale de la régression, le calcul des critères AIC (Akaike) et BIC (Schwarz), les tests de significativité individuelle des coefficients, la sélection de variables, la prédiction ponctuelle et par intervalle, l'évaluation de l'impact des variables à travers les coefficients standardisés, les tests généralisés sur les coefficients.

Le temps imparti est de 1h45. C'est court mais faisable… si on maîtrise les formules du cours et que l'on sait manipuler les fonctions matricielles d'Excel.

Enfin, afin que les étudiants puissent retravailler sereinement dessus après la séance, outre le corrigé, je décris les opérations dans un tutoriel ("Régression linéaire sous Excel", mars 2018) où l'on réalise des tâches similaires sur un autre fichier de données.

mardi 7 mai 2019

Économétrie - TD 1.b - Régression simple

Voici la seconde partie de la première séance des TD d'économétrie, consacrée à la régression simple sous Excel. Les thèmes abordés sont : estimation des paramètres, tableau d'analyse de variance, coefficient de détermination, test de significativité globale de la régression, test de significativité de la pente, graphiques des résidus, prédiction ponctuelle et par intervalle. Temps de travail escompté pour ces exercices : 45 minutes.

Sujet du TD : Régression simple - Excel
Données : Cars Acceleration (1) - Data
Correction du TD : Cars Acceleration (1) - Correction

lundi 6 mai 2019

Économétrie - TD 1.a - Corrélation

J'arrête mon cours d'économétrie (Modèle Linéaire -- Niveau Licence 3) cette année. Comme pour mon enseignement d'Excel – Programmation VBA, j'ai décidé de mettre en ligne mes travaux dirigés sur machine (TD) avant qu'ils ne tombent dans l'oubli.

Je publie aujourd'hui le premier de la série (qui comprendra TD 1.A, TD 1.B, TD 2, TD 3, TD 4, TD 5 et TD 6). Il est consacré à l'analyse des corrélations, nous utilisons le logiciel Excel.  J'ai deux commentaires. (1) Elaborer une fiche de TD est toujours très compliqué. Il faut arbitrer entre deux extrêmes : donner trop peu d'indications avec le risque de subir la fameuse phrase qui fuse du fond de la salle "qu'est-ce qu'il faut faire là ?" ; trop diriger le travail, le commentaire "on recopie le code sans rien comprendre Monsieur" est tout aussi dévastateur. Il faut donc titiller l'esprit des étudiants en leur donnant suffisamment d'indications, mais pas trop. Tout est dans la subtilité. (2) Je sais bien qu'un tableur n'est pas un logiciel d'économétrie. Mais je trouve personnellement que c'est un formidable outil pédagogique pour l'enseignement des statistiques, au moins dans un premier temps. On ne peut pas rentrer des commandes sans comprendre dans Excel. La nécessité de décrypter les formules pour réaliser les calculs aide les étudiants à assimiler les éléments du cours.

Dans cette première séance (première partie de ma première séance en réalité dans ma pratique), nous travaillons sur l'analyse des corrélations disais-je, avec les thèmes suivants : calcul du coefficient de corrélation de Pearson, test de significativité, intervalle de confiance, corrélation partielle, non-linéarité et corrélation des rangs (Spearman). Un étudiant d'un bon niveau devrait réaliser ces exercices en 1h à peu près.

Sujet du TD : Analyse des corrélations - Excel
Données : Autos - Data
Correction du TD : Autos - Correction

samedi 4 mai 2019

Python - Détection de communautés avec MDS

La détection de communautés est une des applications phares de l'analyse des réseaux sociaux. Outre un support de cours, je l'avais déjà abordé dans un ancien tutoriel. Sous Python, l'objectif était de se familiariser d'une part avec les notions essentielles de l'analyse des communautés (voisinage, centralité, individus relais, …), d'autre part de découvrir les fonctionnalités du package "igraph". Nous avions traité le fameux problème du "Club de karaté de Zachary" où les données se présentent sous la forme d'une matrice d'adjacence binaire (absence ou présence de lien entre les sociétaires du club).

Nous cherchons à aller plus loin aujourd'hui avec une configuration où les connexions entre les individus sont valorisées par une valeur numérique positive ou nulle. Le tableau de départ de l'étude correspond à une matrice de dissimilarités. Nous verrons que le positionnement multidimensionnel (Muldimensional Scaling en anglais, MDS) constitue une voie intéressante pour répondre à la problématique de la détection de communautés dans ce contexte. En effet, en positionnant les points dans espace euclidien, il permet l'exploitation des algorithmes de machine learning adaptés à ce système de représentation "individus x variables" c.-à-d. la très grande majorité d'entre eux.

Mots-clés : positionnement multidimensionnel, multidimensional scaling, MDS, détection de communautés, clustering, classification automatique, k-means, python, package scikit-learn
Programme Python + Données : MDS Communautés
Références :
R. Rakotomalala, "Détection de communautés - Diapos", mars 2017.
R. Rakotomalala, "Positionnement multidimensionnel - Diapos", avril 2019.