logo

SAS et R expliqués à ma fille

Les pivots dans R expliqués à ma fille

De nombreux cas de figure dans R nécessitent de réorganiser les données de manière à changer ce que représente une ligne dans un data.frame : tableaux croisés statistiques, construction de graphiques, opération à réaliser systématiquement sur N colonnes. Des pivots (en général partiels) dans les données sont alors à envisager ; nous verrons ici les fonctions pivot_longer et pivot_wider du package {tidyr}, élément du méta-package {tidyverse}. A noter que ce document est une version plus récente et plus courte d’un article plus […]

La régression logistique avec R, sa vie, son oeuvre

La régression logistique sous R expliquée à ma fille La régression logistique n’est pas, en soi, un modèle si compliqué. Mais les résultats qu’on peut en tirer sont nombreux, et la seule fonction glm du package {stats} ne les présente pas toujours de façon simple. Petit tour des possibilités offertes par des packages complémentaires pour tout comprendre des résultats d’un modèle. Les données : passagers du Titanic Le package {carData} contient un data.frame appelé TitanicSurvival. Il recense les 1309 passagers […]

La procédure SGPLOT, sa vie, son œuvre

A partir de SAS 9.2, la procédure SGPLOT (et ses sœurs SGPANEL et SGSCATTER) vient proposer une autre manière de créer des graphiques depuis SAS. Cette présentation ne suppose aucune connaissance du fonctionnement « historique » de SAS/GRAPH. Quelqu’un qui n’a jamais utilisé une procédure GPLOT ou GCHART peut tout à fait comprendre la logique de SGPLOT, aussi bien qu’un familier de ces procédures (qui sera peut-être même dérouté par sa simplicité). En SAS 9.3, les procédures SG… sont directement rattachées au […]

Dictionnaire de SAS vers R

C comme CONTENTS : pour mieux savoir quelles variables contient un data.frame, la fonction str donne un bon aperçu. Une alternative est glimpse du package {tibble} D comme DATE : plusieurs types de R stockent des dates, le plus courant étant Date (avec un D majuscule). Les types POSIXlt et POSIXct correspondent eux aux datetimes. Le package {lubridate} est une mine de fonctions pour gérer aisément des dates et des intervalles de temps D comme DDE (lien) : le package {openxlsx} propose de […]

L’utilité d’un factor expliquée à ma fille

Je trouve que ma fille a l’air sonnée. Qu’est-ce qui a pu la secouer ainsi ? Je l’interroge et elle me dit qu’elle a essayé de manipuler des factors sous R. Ce n’est d’ailleurs pas la première fois que ça la met dans cet état… Le factor sonne toujours deux fois.   Commençons par créer deux petits jeux d’essai pour mieux saisir ce qu’est un factor dans R. Il s’agit des nombres d’élèves dans l’enseignement du 1er degré (maternelle + […]

Les transpositions dans R expliquées à ma fille

Un problème de riche Transposer des données, c’est-à-dire transformer des lignes en colonnes ou des colonnes en lignes, n’est généralement pas une opération facile. Sous R, la principale difficulté vient de la multiplication de packages pour réaliser cette opération : ici nous décrirons la logique et les avantages de trois d’entre eux, {reshape2} qui est le plus ancien, {tidyr} qui est intégré au tidyverse et {cdata} qui propose une approche assez différente via un “plan de transposition”. Commençons par créer […]

Les tables des matières expliquées à ma fille

Vos plus beaux documents produits via l’ODS (PDF, RTF, HTML, Excel) méritent, s’ils sont complexes, d’avoir une aide à la navigation. Ce document fait un tour d’horizon des possibilités, avec leurs pièges et leurs options, tout d’abord pour chacune des « destinations » de l’ODS, puis avec la procédure DOCUMENT et sa faculté de réorganiser les sorties, ainsi que leur arborescence, et donc de créer une table des matières totalement sur mesure. Les exemples proposés dans ce document ont été construits avec […]

La proc GREPLAY expliquée à ma fille

La procédure GREPLAY permet d’associer plusieurs graphiques en un seul, en jouant sur leurs emplacements et leur distribution. Elle utilise des mises en forme prédéfinies, les templates. Voici une petite introduction à son fonctionnement. Étape n° 1 : générer des graphiques et les sauvegarder Les graphiques SAS sont stockés dans des catalogues, sous formes d’entrées de type GRSEG. Pour choisir le nom et l’emplacement de ces sauvegardes, il faut ajouter aux procédures graphiques deux options : GOUT qui est le nom du […]

L’export de SAS vers Excel expliqué à ma fille

SAS est un logiciel merveilleux, mais tous n’y ont pas accès. Pour contenter la soif de données de vos collègues qui n’auraient pas d’autre outil à disposition, vous envisagez d’envoyer vos données SAS dans une feuille Excel. Et là, le drame se noue : comment vous y prendre ? Nous passons en revue 6 méthodes qui nécessitent des installations, des manipulations et des licences différentes : il y en aura forcément une qui vous conviendra. L’export en fichier plat La procédure Export permet […]

Le hash expliqué à ma fille

Ma fille vient me trouver pour m’expliquer qu’elle se met au hash. Elle a lu je ne sais où que c’était excellent, « surtout pour les joints ». Je n’avais que deux bémols avant d’acquiescer : d’abord qu’il ne faut pas en abuser, et qu’ensuite on ne dit pas joints mais jointures, en bon français. C’est donc à une nouvelle manière de rédiger des jointures via l’étape DATA que le hash (également appelé hash object ou table de hachage) nous donne accès. La […]

La proc TRANSPOSE expliquée à ma fille

De nombreux cas de figure dans SAS nécessitent de réorganiser les données de manière à changer ce que représente une observation dans une table. Des pivots (en général partiels) dans les données sont alors à envisager ; la procédure TRANSPOSE est l’outil privilégié pour les pivots. C’est quoi un pivot ? L’exemple ci-dessous illustre un pivot partiel de la variable Y selon la variable IDENT. La variable X, elle, est perdue. A l’intérieur de chaque bloc de IDENT dans la table d’origine, […]

La proc GCHART expliquée à ma fille

Produire des diagrammes en bâtons ne semble pas une tâche ardue. Les options disponibles dans la procédure GCHART de SAS ne sont d’ailleurs pas si nombreuses. Mais pour obtenir quelques graphiques complexes, il vaut souvent mieux réfléchir à l’organisation de la table SAS en entrée, que chercher une option qui n’existe peut-être pas. Quelques exemples pour illustrer cette manière de penser (pour agrandir les images, cliquer dessus). La syntaxe de base : bâtons, groupes et sous-groupes La procédure GCHART définit 4 […]

Les dates SAS expliquées à ma fille

Éternel sujet de questionnements, les dates SAS ont un fonctionnement qui a tout pour surprendre. Petite série d’explications avant qu’il vous prenne l’envie de passer toutes vos dates au goudron et aux plumes. Comment sont stockées les dates SAS ? Il existe deux types de variables qui contiennent des dates dans SAS : toutes deux sont de type numérique. On distingue les simples dates et les « datetimes ». Les simples dates sont stockées comme des nombres de jours depuis le 1er janvier 1960. […]

Les formats expliqués à ma fille

Pour certains, le format, ce n’est qu’une cochonnerie qui complique passablement le travail sur les dates, ou sur les nombres, en n’affichant pas les données telles qu’elles sont stockées. On sait moins que, dans SAS, les formats sont également un formidable outil de recodage de variables. Quel est le rôle du format ? Le format est un moyen de présenter (à l’affichage principalement) les données différemment de la façon dont elles sont physiquement stockées. L’exemple le plus frappant est celui des […]

Le RETAIN expliqué à ma fille

L’intrigante instruction RETAIN devient parfois indispensable dans une étape Data. Quelques mots pour vous aider à savoir si, comme l’ami Ricoré, elle vient toujours au bon moment. Que se passe-t-il dans une étape Data ? Lors de la lecture de données dans une étape Data (que ce soit avec une instruction SET, MERGE ou INFILE), les informations qui composent les observations sont stockées de manière temporaire dans un espace appelé Vecteur de Travail (ou PDV dans les documents en anglais). Le […]

Le LAG expliqué à ma fille

La fonction LAG est souvent présentée comme un cas de sorcellerie appliquée à l’étape DATA. Elle fonctionne de manière caractérielle, un peu à son humeur, et pas toujours de manière cohérente. Pourtant, de nombreuses personnes en donnent une définition simple : « la fonction qui renvoie la valeur de l’observation précédente ». Petite enquête au pays du LAG pour savoir si elle a vraiment mauvais caractère, ou si son comportement n’est pas abusivement simplifié par la définition précédente. Que se passe-t-il dans une […]

Les picture expliqués à ma fille

Déjà qu’ils sont nombreux, ceux qui pestent contre les formats ! Mais s’ils connaissaient tous l’abominable syntaxe des picture, ces formats « calculés », quel serait leur nombre ? En même temps, ce serait l’occasion de trouver mille manipulations bien pratiques pour formater élégamment et en évitant d’inutiles étapes DATA. Un picture est un format particulier destiné à des variables de type numérique ; il peut s’appliquer à des nombres, des dates, des heures ou des datetimes. Il n’existe pas d’équivalent pour les variables de […]

Les macro-fonctions expliquées à ma fille

Beaucoup de programmeurs SAS connaissent les macro-variables, pratiques pour véhiculer de l’information (des paramètres) d’un point à un autre d’un programme. Également populaires, les macro-programmes, qui permettent d’encapsuler du code et de s’en resservir aussi souvent que nécessaire en changeant seulement quelques paramètres. Mais les macro-fonctions ? A quoi servent-elles ? Peuvent-elles m’être utiles ? Quelle différence avec une fonction SAS ? Il y en a principalement deux : une fonction SAS s’applique à la valeur d’une variable, stockée dans […]

L’ODS expliqué à ma fille

Depuis la version 7 de SAS, la syntaxe s’est enrichie d’une vaste série d’instructions ODS (Output Delivery System). Le concept associé sous-tend le fonctionnement de l’ensemble des procédures de SAS. Ce court document se veut une introduction à ce qu’est l’ODS et comment il fonctionne. Principe de l’ODS La procédure SAS n’est plus dépositaire de la mise en forme des sorties. Elle se contente de faire les calculs demandés, et transmet les éléments à mettre en forme à l’ODS. Le […]

La procédure GPLOT expliquée à ma fille

La production de graphiques depuis SAS a mauvaise presse. Pourtant sa syntaxe n’est pas si compliquée qu’on le dit, et son rendu graphique est largement acceptable, surtout si on ne joue pas au jeu des 10 erreurs avec un graphique sous Excel.   Le cœur de chauffe : la procédure elle-même   PROC GPLOT DATA = tableLue ; PLOT variableAxeVertical * variableAxeHorizontal ; RUN ; QUIT ; A la lecture de cette syntaxe : deux questions viennent souvent à l’esprit. […]

La procédure TABULATE, sa vie, son œuvre

Dotée d’une syntaxe joueuse, dont la ponctuation est un vrai casse-tête chinois, on ne peut pas dire que la procédure TABULATE génère spontanément la sympathie. Cela dit, dans tous les casses-têtes, on trouve une logique implacable – le but de ces pages est de décortiquer celle de TABULATE. Petit itinéraire de vacances au pays des tableaux sous SAS.   Les préparatifs : syntaxe de base   PROC TABULATE DATA = tableLue ; CLASS variables1 ; VAR variables2 ; TABLE … […]

L’analyse discriminante expliquée à ma fille

Principe géométrique de l’analyse discriminante linéaire   Ce qu’on cherche : Une droite (un hyperplan / une séparation linéaire) entre deux groupes d’observations. Cette droite est une combinaison linéaire des variables explicatives, toutes continues, qui décrivent les deux groupes d’observations. Comment on s’y prend : Chacun des deux groupes d’observations est « remplacé » (synthétisé) par son barycentre (point de coordonnées moyennes de toutes les variables explicatives). La séparation entre les deux populations est faite selon une droite perpendiculaire au […]

Les réseaux de neurones expliqués à ma fille

Le but de cette annexe n’est pas d’expliquer en détail toute la théorie et la pratique des réseaux de neurones, mais seulement d’en définir les principaux termes : • Neurone • Poids synaptiques • Apprentissage • Réseau de neurones • Couche cachée • Linéarité • Données d’apprentissage et de validation Principe du neurone artificiel Le neurone artificiel (neurone informatique) est un petit modèle statistique à lui tout seul. Il doit accomplir deux tâches : 1) la synthèse des informations qui […]

Les tables Annotate expliquées à ma fille

Pour améliorer un graphique SAS, il n’est forcément payant de passer des heures à éplucher la documentation pour trouver une option magique. Il est souvent plus simple de donner à SAS des instructions de dessin pour qu’il surcharge la version « brute » du graphique. Ces instructions de dessin sont consignées dans une table appelée Annotate ; pour faire des merveilles, il suffit généralement d’une étape Data et d’un peu d’organisation. Comment se présente une table Annotate ? Il s’agit […]