dimanche 10 mai 2020

Pratique de l'Analyse Discriminante Linéaire

Bon, les circonstances font qu'il m'a été possible de consacrer suffisamment de temps à l'écriture d'un livre. J'ai choisi de travailler sur l'analyse discriminante linéaire, une méthode prédictive que je trouve très intéressante, tant par sa mécanique interne que par l'usage que l'on peut en faire.

Curieusement, alors qu'elle est souvent abordée dans les ouvrages de statistique exploratoire (data science dirait-on aujourd'hui), je ne connais pas de référence qui lui est entièrement consacrée en français. Je la trouve pourtant très riche. Il y a vraiment beaucoup de choses à dire sur son compte. J'ai décidé de m'y coller en choisissant délibérément l'axe prédictif, et en essayant de mettre en avant les différents aspects qui en font le sel. Ceux justement que j'essaie de souligner dans les séances que je lui consacre dans mes enseignements. En effet, sa présentation se résume très rapidement à un empilement de formules matricielles si l'on n'y prend garde. Il fallait absolument éviter cet écueil en se focalisant sur sa pratique, en étant toujours autant que possible concret et pragmatique.

Un package pour R, discriminR, réalisé par un groupe d'étudiants du Master SISE (promotion 2017-2018), Tom Alran, Benoît Courbon et Samuel Rasser-Chinta, accompagne cet ouvrage. Il permet de mettre facilement  en application les principales idées qui ont mises en avant, avec des sorties aux standards de SAS Proc Discrim et Proc Stepdisc. Un tutoriel décrit son mode opératoire et la lecture des résultats dans le chapitre consacré aux logiciels. Merci à eux d'avoir bien voulu nous faire profiter de leur travail.

Ça fait plus de 20 ans que j'enseigne l'analyse discriminante prédictive, je ne m'en lasse pas, je lui trouve toujours de beaux atours et j'adore en parler.

Mots-clés : analyse discriminante linéaire, ADL, linear discriminant analysis, LDA, fonctions de classement, évaluation, sélection de variables, stepdisc, variables explicatives qualitatives, disqual, bayésien naïf, régularisation, analyse factorielle discriminante, analyse des correspondances discriminante, proc discrim, proc stepdisc, logiciel R, package discriminR, scikit-learn, python
Ouvrage : Analyse discriminante linéaire
Package R : discriminR 0.1.0
Données exemples : Data ADL
Références :
Page de cours, "Analyse discriminante".

mardi 14 avril 2020

Dépendances des variables qualitatives - Version 2.1

Voilà un item de ma TODO LIST qui vient de resurgir de nulle part. Après 9 ans, j'ai mis à jour mon livre intitulé "Etude de dépendances – Variables qualitatives". Les deux premières versions dataient de 2007 (version 1.0 puis 2.0). Le document a été recompilé en 2011 semble-t-il, mais sans que je n'aie conservé une trace du pourquoi. Il était resté en stand-by depuis.

La période étant propice à l'introspection, j'ai essayé de faire le tour de mes supports en suspens. Et je me suis rendu compte que j'avais noté une série de modifications à faire sur ce document. Je l'ai donc mis à jour en corrigeant déjà les coquilles qui pouvaient l'émailler ici ou là, en modifiant les options de compilation pour qu'une table de matière apparaisse dans les lecteurs de PDF, en rajoutant des références ou en retirant les liens URL devenus obsolètes, et en rajoutant quelques sections qui me paraissaient intéressantes.

Le fichier Excel des exemples illustratifs a été complété en conséquence.

Mots-clés : tableau de contingence, khi-2, mesures PRE (proportional reduction in error), odds et odds-ratio, coefficient de concordance, mesures d'association, associations ordinales
Techniques décrites : statistique du khi-2, test d'indépendance du khi-2, contributions au khi-2, t de Tschuprow, v de Cramer, lambda de Goodman et Kruskal, tau de Goodman et Kruskal, U de Theil, coefficient phi, correction de continuité, Q de Yule, kappa de Cohen, kappa de Fleiss, gamma de Goodman et Kruskal, tau-b de Kendall, tau-c de Kendall, d de Sommers, test de Mc Nemar, coefficient d'incertitude symétrique
Ouvrage : Etude des dépendances - Variables qualitatives - Tableau de contingence et mesures d'association
Exemples illustratifs : Credit.xlsx

jeudi 9 avril 2020

Analyse Discriminante Linéaire sous R

En rédigeant mon précédent tutoriel consacré à l'analyse discriminante sous Python, je me suis rendu compte que je n'avais jamais écrit d'équivalent pour R, où l'on passerait en revue les fonctionnalités de la fonction lda() du package MASS qui fait référence sous cet environnement. C'est étonnant, surtout que je la pratique depuis un bon moment déjà. C'est même une des premières méthodes de R que j'ai explorées avec glm() et rpart(). Nous allons essayer d'y remédier dans ce document.

Nous reprenons la trame de la présentation pour Python, en prenant appui toujours sur notre support de cours dédié, mais en l'adaptant bien sûr aux spécificités de lda(). Notre référence reste SAS, avec les procédures proc discrim et proc candisc. Un des enjeux fort sera de faire le lien entre les parties descriptives et prédictives en dérivant les fonctions de classement à partir des fonctions canoniques discriminantes.

Mots-clés : logiciel R, analyse discriminante linéaire, analyse discriminante prédictive, ADL, linear discriminant analysis, lda, package MASS, sélection de variables, package klaR, stepdisc, logiciel SAS, proc discrim, proc candisc
Didacticiel : ADL sous R
Données et code source R : Kirsch - Mirabelle - Poire
Références :
R. Rakotomalala, "Analyse discriminante linéaire".
Tutoriel Tanagra, "Analyse discriminante linéaire sous Python", avril 2020.

lundi 6 avril 2020

Analyse Discriminante Linéaire sous Python

L'analyse discriminante linéaire est une méthode prédictive où le modèle s'exprime sous la forme d'un système d'équations linéaires des variables explicatives. Je l'affectionne particulièrement. Le temps que je lui consacre dans mes enseignements fait partie de mes séances favorites notamment parce qu'elle se prête à des multiples lectures. Je tiendrai très facilement des heures avec un nombre pourtant réduit de slides.

Dans ce tutoriel, nous étudierons le comportement de la classe de calcul LinearDiscriminantAnalysis du package "scikit-learn" pour Python. En faisant le tour de ses propriétés et méthodes, nous passerons en revue les différents aspects de la technique. Pour mieux situer la teneur des résultats, nous mettrons en parallèle les sorties de la procédure PROC DISCRIM du logiciel SAS qui fait figure de référence dans le domaine.

Mots-clés : python, analyse discriminante linéaire, adl, test manova, lambda de wilks, coefficients des fonctions de classement, package scikit-learn, logiciel sas, prox discrim
Données et code source Python : Kirsch - Mirabelle - Poire
Références :
R. Rakotomalala, "Analyse discriminante linéaire".

mardi 31 mars 2020

Régression Logistique sous Python

Ce tutoriel fait suite à la série d'exercices corrigés de régression logistique sous R (TD 1 à TD 8). Il aurait pu constituer la 9ème séance des travaux dirigés où l'on ferait travailler les étudiants sous Python. J'aime bien alterner les logiciels dans ma pratique de l'enseignement. J'ai quand-même préféré le format tutoriel parce qu'il y a de nombreux commentaires à faire sur le mode opératoire  et les résultats des outils que nous utiliserons. Les librairies "statsmodels" et "scikit-learn" adoptent des points de vue très différents sur les mêmes traitements. Il est important de mettre en relation directe les thèmes et les commandes avec le cours rédigé disponible en ligne (voir références).

Enfin, ce document peut être vu comme le pendant pour la régression logistique de celui consacré à la régression linéaire disponible sur notre site ("Python - Econométrie avec StatsModels", septembre 2015).

Mots-clés : python, package statsmodels, package scikit-learn, log-vraisemblance, régression logistique, inférence statistique, évaluation du modèle en resubstitution et en test, courbe roc, critère auc
Didacticiel : Régression logistique avec statsmodels et scikit-learn
Données et code source Python : Infidélité
Références :
R. Rakotomalala, "Cours de régression logistique".

vendredi 27 mars 2020

Régression Logistique -- TD 8

Huitième et dernier TD de mon cours de régression logistique, nous traitons de la régression logistique multinomiale où la variable cible est qualitative nominale à plus de 2 modalités.

Nous explorons deux packages spécialisés, "nnet" et "vgam". Les modes opératoires sont similaires mais il faut faire attention aux spécificités, notamment lors de la prédiction. Ces librairies, de par leur mode de fonctionnement, requièrent la standardisation ou la normalisation des données. L'occasion est belle pour montrer comment réaliser l'opération sur l'échantillon d'apprentissage (facile), puis la transposer sur l'échantillon test (la procédure n'est pas toujours très bien comprise par les étudiants).

Enfin, pour élargir nos perspectives d'analyse,  une comparaison avec les résultats d'un arbre de décision – autre méthode qui permet d'appréhender simplement les variables cibles nominales – est réalisée.

Mots-clés : logiciel R, régression multinomiale, arbre de décision, package rpart, scale, rappel / sensibilité par classe, précision par classe

Sujet du TD : Régression multinomiale
Données : waveform
Correction du TD (code R) : waveform – Correction
Référence : Site du cours de régression logistique

jeudi 26 mars 2020

Régression Logistique -- TD 7

Dans cette septième séance, nous abordons le traitement des données groupées en régression logistique. La ligne du tableau de données correspond à une combinaison des variables explicatives, on parle de pattern ou de profil. Elle représente un ensemble d'observations dont tout ou partie (ou aucun) sont rattachées à la modalité cible de la variable dépendante.

Ce prisme permet de mieux souligner l'influence des caractéristiques des individus dans la régression. Avec l'étude des profils, nous pouvons identifier les aspects mal restitués, ceux qui pèsent fortement – voire indûment – dans le modèle. Elle permet également de suggérer des combinaisons des variables qui approfondissent notre analyse.

Mots-clés : logiciel R, covariate pattern,  profil, données groupées, levier, résidus de pearson, résidus déviance, statistique de pearson, statistique déviance, distance de cook, interaction, données titanic

Sujet du TD : Covariate pattern
Données : titanic
Correction du TD (code R) : titanic – Correction
Référence : Site du cours de régression logistique

mercredi 25 mars 2020

Régression Logistique -- TD 6

Nous approfondissons la sélection de variables durant cette sixième séance. Nous revenons tout d'abord sur les approches classiques pas-à-pas, ascendantes et descendantes. Elles fournissent des sous-ensembles de variables parfois différentes qui sont autant de scénarios de solutions. Nous confrontons les résultats et nous nous en remettons aux performances prédictives pour identifier la plus intéressante.

Puis nous explorons les approches alternatives, en particulier les techniques de ranking, qui agissent en amont et indépendamment des méthodes de machine learning pour effectuer la sélection, et l'approche wrapper, qui s'appuie sur des critères de performances estimés explicitement à partir des méthodes de machine learning.

Mots-clés : logiciel R, stepwise, forward, backward, stepAIC, critère AIC, akaike, BIC, schwartz, méthode filtre, ranking, incertitude symétrique, symmetrical uncertainty, méthode CFS, wrapper, package caret, cross-validation, validation croisée, sélection de variables

mardi 24 mars 2020

Régression Logistique -- TD 5

Il est question de détection et traitement des non-linéarités dans cette cinquième séance. Nous commençons par un test omnibus, simple à mettre en œuvre mais peu puissant, pour identifier les variables qui agissent non-linéairement sur le LOGIT. Nous enchaînons ensuite avec une procédure graphique, les résidus partiels, pour la même tâche, mais elle présente l'avantage de suggérer la transformation de variables à opérer. Enfin, dans une dernière étape, nous étudions l'intérêt du passage systématique par la discrétisation des variables explicatives en régression logistique, stratégie souvent évoquée pour traiter simplement et automatiquement les non-linéarités.

Mots-clés : logiciel R, package rms, test de box-tidwell, graphiques des résidus partiels, transformation de variables, discrétisation de variables, package discretization, non-linéarité, package caret

lundi 23 mars 2020

Régression Logistique -- TD 4.b

Deuxième partie de la quatrième séance, nous nous intéressons à la courbe ROC pour l'évaluation de la régression, dans un schéma de resubstitution (on utilise les mêmes données pour la construction et l‘évaluation du modèle) dans un premier temps pour comprendre les mécanismes sous-jacents à la construction de la courbe et au calcul du critère AUC (aire sous la courbe).

Nous passons à un schéma de rééchantillonnage, le leave-one-out, dans un deuxième temps pour obtenir une courbe et une valeur de l'AUC plus représentatives de la qualité réelle du modèle dans la population. L'écart des résultats est substantiel, montrant, si besoin était, l'inanité de l'approche par substitution pour apprécier les performances des classifieurs.

Mots-clés : logiciel R, courbe ROC, receiver operating characteristic, auc, area under curve, aire sous la courbe, package ROCR, resubstitution, méthode de resampling, rééchantillonnage, leave-one-out

dimanche 15 mars 2020

Régression Logistique -- TD 4.a

Nous enchaînons avec l'évaluation des modèles dans cette quatrième séance.

Elle est subdivisée en deux parties. La première, celle-ci, est consacrée aux procédures visant à confronter les probabilités d'affectation aux classes fournies par le modèle avec les proportions observées dans les données disponibles : à l'aide d'une procédé graphique, le diagramme de fiabilité ; et d'un test statistique, le test de Hosmer et Lemeshow. Les calculs sont simples mais il faut bien décomposer les étapes pour ne pas se perdre dans les commandes R. Nous confrontons par la suite nos résultats avec ceux fournis par les packages spécialisés.

Mots-clés : logiciel R, package generalhoslem, package resourceselection, diagramme de fiabilité, reliability diagram, test de hosmer-lemeshow, probabilités d'affectation, scores

samedi 14 mars 2020

Régression Logistique -- TD 3

Cette troisième séance est consacrée aux interprétations sous la forme d'odds-ratio des coefficients de la régression logistique. Nous traitons des différentes configurations de la ou des variables indépendantes : binaires, qualitatives nominales, qualitatives ordinales, quantitatives.

Pour vérifier nos calculs, nous mettons en parallèle les résultats avec ceux fournis par un package spécialisé en épidémiologie 'epitools'.

Mots-clés : logiciel R, package xlsx, package epitools, riskratio, chisq.test, oddsratio, glm, risque relatif, odds-ratio, inférence statistique, intervalle de confiance, interprétation des coefficients, recodage des variables indépendantes

Sujet du TD : Risque relatif, odds-ratio
Données (Excel) : Coeur
Correction du TD (code R) : Coeur – Correction
Référence : Site du cours de régression logistique

jeudi 12 mars 2020

Régression Logistique -- TD 2.b

Seconde partie de la seconde séance, nous étudions toujours l'estimation des coefficients et les tests de significativité associés. Nous analysons cette fois-ci les facteurs de risque des infidélités dans les ménages. Sans surprise, l'usure du temps joue un rôle important. Mais nous verrons que d'autres variables pèsent également. A noter que la variable cible nécessite un recodage avant de pouvoir initier une régression logistique.

Mots-clés : logiciel R, package xlsx, glm, tests du rapport de vraisemblance, tests de wald, interprétation des coefficients, recodage de la variable dépendante, colinéarité

Sujet du TD : Estimation, test et interprétations
Données (Excel) : Infidélités
Correction du TD (code R) : Infidélités – Correction
Référence : Site du cours de régression logistique

mardi 10 mars 2020

Régression Logistique -- TD 2.a

Seconde séance des TD (travaux dirigés sur machine) de régression logistique. Il s'agit d'aborder les tests de significativité et les interprétations des coefficients, pour les variables explicatives quantitatives et qualitatives. La question du recodage des variables et l'interprétation des coefficients qui en découle sont étudiés.

La séance est en deux parties. Dans cette première partie, nous étudions l'impact des caractéristiques physiologiques et comportementales des personnes sur le ronflement. Les conclusions confortent à peu près ce que l'on sait de ce phénomène bien connu.

Mots-clés : logiciel R, package xlsx, glm, tests du rapport de vraisemblance, tests de wald, interprétation des coefficients, termes d'interaction, recodage des explicatives

Sujet du TD : Estimation, test et interprétations
Données (Excel) : Ronflement
Correction du TD (code R) : Ronflement – Correction
Référence : Site du cours de régression logistique

lundi 9 mars 2020

Régression Logistique -- TD 1

J'ai la fièvre du rangement de temps en temps. Je me mets en tête de mettre de l'ordre dans mes innombrables fichiers de préparations, supports de cours, tutoriels, etc., etc. Et comme il m'arrive parfois d'oublier ce que j'ai moi-même écrit, je tombe sur des sacrées surprises.

Ces dernières années, je me tourne de plus en plus vers les cours de machine learning et leurs applications. Mais je n'oublie pas que j'ai en réserve de nombreux cours de statistique, avec notamment un module de régression logistique que j'ai assuré pendant de nombreuses années et dont la préparation m'avait amené à rédiger de nombreux supports comprenant un livre (accessible sur ma page de cours dédiée). Je ne fais plus le cours depuis 2016, mais j'avais gardé bien au chaud toutes mes séances de TD (travaux dirigés sur machine) découpées en tranches d'1h45 où je faisais travailler mes étudiants sur les différentes thématiques de la régression logistique sous le logiciel R.

Vite, vite, avant que je n'oublie tout et que ce travail tombe dans l'oubli, j'ai décidé de mettre un coup de propre sur mes énoncés, et de les diffuser avec les données et les corrigés. Tout le monde peut en profiter comme il l'entend, je ne revendique absolument aucun droit là-dessus.

Première (TD 1) publication d'une longue série (TD 2.a, TD 2.b, TD 3, TD 4a, TD 4.b, TD 5, TD 6, TD 7, TD 8) donc : la création d'un modèle à l'aide de la régression logistique sur un échantillon d'apprentissage, son évaluation statistique, l'évaluation de ses performances prédictives sur un échantillon test, l'identification et la sélection des variables explicatives pertinentes.

Il faut avoir un bon niveau sous R pour pouvoir profiter pleinement des exercices, de cette séance et des suivantes.

Mots-clés : logiciel R, package xlsx, glm, package MASS, stepAIC, critère AIC, akaike, BIC, schwartz, tests de significativité, sélection de variables, estimation des coefficients, modélisation, efficiacité prédictive, échantillon d'apprentissage, échantillon test, matrice de confusion, taux d'erreur

Sujet du TD : Estimation, prédiction, sélection de variables
Données (Excel) : Diabete
Correction du TD (code R) : Diabete - Correction
Référence : Site du cours de régression logistique