{"id":1778,"date":"2026-10-14T18:00:43","date_gmt":"2026-10-14T18:00:43","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-utiliser-fonction-table-r-exemples\/"},"modified":"2026-10-14T18:00:43","modified_gmt":"2026-10-14T18:00:43","slug":"comment-utiliser-fonction-table-r-exemples","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-utiliser-fonction-table-r-exemples","title":{"rendered":"Comment utiliser la fonction table dans R (avec des exemples)"},"content":{"rendered":"<p>Dans le champ contemporain de l&rsquo;analyse computationnelle et de la mod\u00e9lisation statistique, l&rsquo;exploration initiale des donn\u00e9es constitue une \u00e9tape matricielle d&rsquo;o\u00f9 d\u00e9coule l&rsquo;ensemble des inf\u00e9rences ult\u00e9rieures. Au sein de l&rsquo;environnement de programmation statistique R, d\u00e9velopp\u00e9 initialement par Ross Ihaka et Robert Gentleman au d\u00e9partement de statistique de l&rsquo;Universit\u00e9 d&rsquo;Auckland, la manipulation des variables qualitatives et discr\u00e8tes repose sur une grammaire rigoureuse o\u00f9 la fonction <em>table()<\/em> occupe une place cardinale. Cet outil \u00e9l\u00e9mentaire mais prodigieusement polyvalent permet aux chercheurs, analystes et biostatisticiens de synth\u00e9tiser des collections consid\u00e9rables d&rsquo;observations sous la forme de structures tabulaires compactes, r\u00e9v\u00e9lant imm\u00e9diatement les fr\u00e9quences absolues, les asym\u00e9tries de distribution et les liaisons bivari\u00e9es ou multidimensionnelles sous-jacentes.<\/p>\n<p>La pertinence de cette commande de base du package <em>base<\/em> ne s&rsquo;est nullement \u00e9rod\u00e9e avec l&rsquo;av\u00e8nement d&rsquo;\u00e9cosyst\u00e8mes modernes comme le <a rel=\"noopener noreferrer\" href=\"https:\/\/www.tidyverse.org\/\">Tidyverse<\/a>. Bien au contraire, sa l\u00e9g\u00e8ret\u00e9 algorithmique, son absence de d\u00e9pendance logicielle externe et son int\u00e9gration directe avec les fonctions d&rsquo;inf\u00e9rence non param\u00e9trique en font une pierre angulaire incontournable pour quiconque souhaite inspecter des profils sociod\u00e9mographiques, des inventaires cliniques ou des r\u00e9partitions exp\u00e9rimentales. En sciences humaines, biom\u00e9dicales et psychom\u00e9triques, la fonction <em>table()<\/em> s&rsquo;av\u00e8re indispensable pour certifier la conformit\u00e9 empirique d&rsquo;un protocole exp\u00e9rimental avant toute mod\u00e9lisation pr\u00e9dictive avanc\u00e9e.<\/p>\n<p>Cet article encyclop\u00e9dique propose une immersion didactique et m\u00e9thodologique exhaustive dans le fonctionnement, les nuances algorithmiques et les extensions analytiques de la commande <em>table()<\/em> dans le langage R. \u00c0 travers douze chapitres structur\u00e9s et rigoureusement document\u00e9s, nous aborderons la synth\u00e8se univari\u00e9e, le croisement bivari\u00e9, la gestion des non-r\u00e9ponses, le calcul des probabilit\u00e9s marginales, l&rsquo;interfa\u00e7age avec les tests d&rsquo;hypoth\u00e8ses et les strat\u00e9gies d&rsquo;optimisation m\u00e9moire pour les volum\u00e9tries complexes. Chaque section d\u00e9cortique les fondements math\u00e9matiques et la syntaxe R afin d&rsquo;offrir au praticien une ma\u00eetrise totale de la tabulation de contingence.<\/p>\n<h2>1. Introduction \u00e0 la fonction table() et son importance en analyse statistique<\/h2>\n<h3>1.1 D\u00e9finition et r\u00f4le fondamental de table() dans l&rsquo;environnement R<\/h3>\n<p>La fonction <em>table()<\/em> constitue l&rsquo;instruction g\u00e9n\u00e9rique de l&rsquo;environnement <a rel=\"noopener noreferrer\" href=\"https:\/\/www.r-project.org\/\">R<\/a> d\u00e9di\u00e9e au calcul des effectifs conjoints et marginaux associ\u00e9s aux niveaux de variables cat\u00e9gorielles ou discr\u00e8tes. D&rsquo;un point de vue structural, elle prend en argument un ou plusieurs objets vectoriels, des facteurs ou des listes d&rsquo;observations, et construit une table de contingence multidimensionnelle repr\u00e9sentant le d\u00e9nombrement crois\u00e9 des occurrences observ\u00e9es dans l&rsquo;\u00e9chantillon. Cette fonction ne se limite pas \u00e0 un simple d\u00e9compte arithm\u00e9tique : elle transforme des vecteurs bruts non structur\u00e9s en un objet formel dot\u00e9 de la classe sp\u00e9cifique <em>table<\/em>, lequel h\u00e9rite des propri\u00e9t\u00e9s matricielles et des tableaux multidimensionnels (<em>arrays<\/em>) du langage.<\/p>\n<p>Dans le flux de travail standard de l&rsquo;analyse exploratoire des donn\u00e9es (<em>Exploratory Data Analysis<\/em>, concept popularis\u00e9 par John Tukey), la tabulation constitue invariablement le premier contact empirique avec le signal informationnel. Face \u00e0 une variable qualitative, les statistiques descriptives param\u00e9triques traditionnelles telles que la moyenne arithm\u00e9tique ou l&rsquo;\u00e9cart-type sont math\u00e9matiquement aberrantes et d\u00e9nu\u00e9es de pertinence conceptuelle. Le d\u00e9nombrement des modalit\u00e9s via <em>table()<\/em> permet d&rsquo;objectiver instantan\u00e9ment la distribution empirique de la variable, d&rsquo;\u00e9valuer la dispersion des effectifs entre les classes et de d\u00e9celer d&rsquo;\u00e9ventuelles anomalies d&rsquo;encodage ou des d\u00e9s\u00e9quilibres structurels.<\/p>\n<p>D&rsquo;un point de vue informatique, il est crucial de diff\u00e9rencier le vecteur de facteur (<em>factor<\/em>) de la structure de table. Alors que le facteur conserve la s\u00e9quence ordonn\u00e9e ou non ordonn\u00e9e des modalit\u00e9s pour chaque individu statistique individuel au moyen d&rsquo;un codage sous-jacent par entiers associ\u00e9s \u00e0 des \u00e9tiquettes textuelles (<em>levels<\/em>), la fonction <em>table()<\/em> agr\u00e8ge cette m\u00e9moire individuelle pour ne conserver que l&rsquo;espace vectoriel des effectifs par modalit\u00e9. L&rsquo;objet r\u00e9sultant b\u00e9n\u00e9ficie d&rsquo;une empreinte m\u00e9moire consid\u00e9rablement r\u00e9duite et autorise des manipulations alg\u00e9briques imm\u00e9diates ainsi que des transmissions directes vers des modules d&rsquo;analyse inf\u00e9rentielle.<\/p>\n<h3>1.2 Pertinence m\u00e9thodologique dans la recherche empirique et psychologique<\/h3>\n<p>Dans le contexte sp\u00e9cifique de la recherche empirique en psychologie clinique, en psychom\u00e9trie et en sciences comportementales, la rigueur m\u00e9trologique impose un contr\u00f4le continu de la structure des r\u00e9ponses obtenues. L&rsquo;administration d&rsquo;inventaires psychologiques, d&rsquo;\u00e9chelles de bien-\u00eatre subjectif ou d&rsquo;instruments de mesure de la personnalit\u00e9 g\u00e9n\u00e8re une masse substantielle de variables ordinales, typiquement calibr\u00e9es selon des formats de r\u00e9ponse de type Likert en cinq ou sept points. L&rsquo;application imm\u00e9diate de la fonction <em>table()<\/em> permet de v\u00e9rifier l&rsquo;\u00e9talement effectif des r\u00e9ponses sur l&rsquo;ensemble du continuum psychom\u00e9trique propos\u00e9 et d&rsquo;identifier sans d\u00e9lai d&rsquo;\u00e9ventuels effets de plancher (accumulation anormale d&rsquo;observations sur le niveau minimal) ou de plafond (saturation des r\u00e9ponses sur le score maximal).<\/p>\n<p>Au-del\u00e0 de l&rsquo;inspection des items individuels, la tabulation crois\u00e9e est d\u00e9terminante dans l&rsquo;\u00e9valuation de la repr\u00e9sentativit\u00e9 sociod\u00e9mographique des cohortes d&rsquo;\u00e9chantillonnage. Qu&rsquo;il s&rsquo;agisse de mesurer la stratification par tranches d&rsquo;\u00e2ge, l&rsquo;\u00e9quilibre des identit\u00e9s de genre ou la distribution des niveaux de dipl\u00f4me au sein d&rsquo;une population clinique, <em>table()<\/em> offre un aper\u00e7u imm\u00e9diat de la validit\u00e9 \u00e9cologique du recrutement. Une sous-repr\u00e9sentation critique d&rsquo;un groupe sp\u00e9cifique peut vicier la port\u00e9e des conclusions ou compromettre l&rsquo;invariance de mesure d&rsquo;un instrument psychologique, rendant indispensable un r\u00e9\u00e9quilibrage exp\u00e9rimental pr\u00e9alable.<\/p>\n<p>Dans les protocoles exp\u00e9rimentaux randomis\u00e9s contr\u00f4l\u00e9s, la fonction assure une veille m\u00e9thodologique sur l&rsquo;assignation al\u00e9atoire des sujets. L&rsquo;exp\u00e9rimentateur utilise la tabulation crois\u00e9e pour s&rsquo;assurer qu&rsquo;aucune covariable discr\u00e8te perturbatrice (telle que le statut tabagique, la comorbidit\u00e9 anxieuse ou la m\u00e9dication concomitante) ne se retrouve concentr\u00e9e de mani\u00e8re disproportionn\u00e9e dans le bras exp\u00e9rimental au d\u00e9triment du bras t\u00e9moin. Cette v\u00e9rification rapide garantit l&rsquo;absence de biais de confusion avant l&rsquo;ajustement de mod\u00e8les statistiques plus complexes, \u00e0 l&rsquo;instar de l&rsquo;analyse de variance ou de la r\u00e9gression logistique.<\/p>\n<h3>1.3 Pr\u00e9sentation du jeu de donn\u00e9es de d\u00e9monstration<\/h3>\n<p>Pour garantir la reproductibilit\u00e9 int\u00e9grale des concepts th\u00e9oriques et des instructions logicielles d\u00e9taill\u00e9s tout au long de cette monographie, nous concevons un environnement de donn\u00e9es simul\u00e9, rigoureusement document\u00e9 et ancr\u00e9 dans une probl\u00e9matique psychologique clinique r\u00e9aliste. Consid\u00e9rons une cohorte de cent cinquante participants ayant compl\u00e9t\u00e9 une \u00e9valuation psychologique standardis\u00e9e relative \u00e0 la symptomatologie d\u00e9pressive, \u00e0 l&rsquo;anxi\u00e9t\u00e9 comorbide, au type de prise en charge psychoth\u00e9rapeutique attribu\u00e9 et au statut d&rsquo;observance du protocole de soin.<\/p>\n<p>La cr\u00e9ation de ce jeu de donn\u00e9es sous la forme d&rsquo;un tableau rectangulaire classique (<em>data.frame<\/em>) s&rsquo;op\u00e8re en fixant pr\u00e9alablement le g\u00e9n\u00e9rateur de nombres pseudo-al\u00e9atoires au moyen de l&rsquo;instruction <em>set.seed(42)<\/em>. Cette d\u00e9marche pr\u00e9vient toute d\u00e9rive d&rsquo;\u00e9chantillonnage lors de la reproduction des analyses. Les variables constitutives englobent un identifiant num\u00e9rique individuel (<em>id<\/em>), le genre des participants (<em>Genre<\/em> : Femme, Homme, Non-binaire), le groupe d&rsquo;intervention th\u00e9rapeutique (<em>Traitement<\/em> : TCC, Psychanalyse, Pleine_Conscience, Liste_Attente), la s\u00e9v\u00e9rit\u00e9 initiale du trouble (<em>Severite<\/em> : Legere, Moderee, Severe), et enfin une mesure binaire d&rsquo;adh\u00e9sion au traitement (<em>Observance<\/em> : Oui, Non), comportant d\u00e9lib\u00e9r\u00e9ment des donn\u00e9es non assign\u00e9es (valeurs manquantes not\u00e9es <em>NA<\/em>).<\/p>\n<p>L&rsquo;examen scrupuleux de l&rsquo;architecture de ce jeu de donn\u00e9es via la commande <em>str(donnees_cliniques)<\/em> et la fonction de synth\u00e8se <em>summary(donnees_cliniques)<\/em> r\u00e9v\u00e8le l&rsquo;\u00e9tat des types internes allou\u00e9s par l&rsquo;interpr\u00e9teur R. Il appara\u00eet fondamental, dans une d\u00e9marche statistique professionnelle, de convertir syst\u00e9matiquement les vecteurs de caract\u00e8res textuels en facteurs explicites gr\u00e2ce \u00e0 <em>as.factor()<\/em> ou <em>factor()<\/em>. Cette pr\u00e9caution s\u00e9mantique garantit que la fonction <em>table()<\/em> prendra ult\u00e9rieurement en consid\u00e9ration l&rsquo;ensemble des modalit\u00e9s th\u00e9oriquement possibles, y compris celles dont les occurrences empiriques s&rsquo;av\u00e9reraient temporairement nulles au sein d&rsquo;un sous-groupe exp\u00e9rimental donn\u00e9.<\/p>\n<h2>2. Cr\u00e9ation de tableaux de fr\u00e9quences univari\u00e9s fondamentaux<\/h2>\n<h3>2.1 Syntaxe de base et d\u00e9nombrement d&rsquo;une variable unique<\/h3>\n<p>L&rsquo;ex\u00e9cution la plus \u00e9l\u00e9mentaire de la fonction <em>table()<\/em> repose sur la transmission d&rsquo;un vecteur unique repr\u00e9sentant les observations collect\u00e9es sur une dimension sp\u00e9cifique de l&rsquo;\u00e9chantillon. Dans le cadre d&rsquo;un tableau de donn\u00e9es structur\u00e9, l&rsquo;acc\u00e8s \u00e0 la colonne d&rsquo;int\u00e9r\u00eat s&rsquo;effectue traditionnellement par l&rsquo;interm\u00e9diaire de l&rsquo;op\u00e9rateur d&rsquo;extraction dollar, selon l&rsquo;instruction <em>table(donnees_cliniques$Traitement)<\/em>. R proc\u00e8de alors \u00e0 un balayage lin\u00e9aire s\u00e9quentiel de l&rsquo;ensemble du vecteur, identifie l&rsquo;ensemble des modalit\u00e9s uniques pr\u00e9sentes, et incr\u00e9mente un compteur interne pour chacune d&rsquo;entre elles.<\/p>\n<p>L&rsquo;objet ainsi g\u00e9n\u00e9r\u00e9 appartient formellement \u00e0 la classe <em>table<\/em>, mais se comporte intrins\u00e8quement comme un vecteur num\u00e9rique unidimensionnel dont chaque cellule porte un nom textuel (<em>named numeric vector<\/em>) correspondant \u00e0 l&rsquo;\u00e9tiquette de la modalit\u00e9 correspondante. L&rsquo;affichage textuel dans la console R dispose horizontalement les modalit\u00e9s r\u00e9pertori\u00e9es, imm\u00e9diatement surplomb\u00e9es de leurs effectifs absolus d&rsquo;occurrence. Si nous observons la variable <em>Traitement<\/em>, la console restitue par exemple un d\u00e9compte pr\u00e9cis indiquant trente-huit participants assign\u00e9s au groupe de th\u00e9rapie cognitivo-comportementale (TCC), trente-six en liste d&rsquo;attente, trente-neuf engag\u00e9s dans un protocole de pleine conscience et trente-sept en approche analytique.<\/p>\n<p>Lorsque la fonction est appliqu\u00e9e \u00e0 une variable num\u00e9rique continue ou discr\u00e8te comportant un nombre \u00e9lev\u00e9 de valeurs distinctes, son comportement demeure strictement identique : elle g\u00e9n\u00e8re autant de colonnes qu&rsquo;il existe de valeurs scalaires uniques dans le vecteur. Si cette approche s&rsquo;av\u00e8re parfaitement ad\u00e9quate pour des variables discr\u00e9tis\u00e9es comportant un nombre r\u00e9duit de paliers entiers (par exemple le nombre de s\u00e9ances th\u00e9rapeutiques manqu\u00e9es, variant de z\u00e9ro \u00e0 quatre), elle engendre une dispersion illisible sur des m\u00e9triques purement continues comme le temps de r\u00e9action en millisecondes ou le taux s\u00e9rique d&rsquo;un biomarqueur. Dans cette derni\u00e8re circonstance, une discr\u00e9tisation pr\u00e9liminaire au moyen de la fonction <em>cut()<\/em> devient obligatoire avant toute tabulation.<\/p>\n<h3>2.2 Tri et ordonnancement des effectifs univari\u00e9s<\/h3>\n<p>Par d\u00e9faut, la fonction <em>table()<\/em> ordonne les colonnes de son r\u00e9sultat selon l&rsquo;ordre lexicographique ou alphab\u00e9tique des \u00e9tiquettes s&rsquo;il s&rsquo;agit de cha\u00eenes de caract\u00e8res, ou selon l&rsquo;ordre intrins\u00e8que d\u00e9fini par les niveaux (<em>levels<\/em>) si la variable a \u00e9t\u00e9 pr\u00e9alablement convertie en facteur. Cependant, dans une perspective d&rsquo;analyse de donn\u00e9es pragmatique, la recherche du mode statistique (la modalit\u00e9 la plus fr\u00e9quente) ou la hi\u00e9rarchisation des comportements minoritaires impose fr\u00e9quemment un r\u00e9ordonnancement structurel fond\u00e9 sur la magnitude m\u00eame des effectifs observ\u00e9s plut\u00f4t que sur l&rsquo;arbitraire alphab\u00e9tique.<\/p>\n<p>L&rsquo;atteinte de cet objectif s&rsquo;obtient avec une parfaite \u00e9l\u00e9gance programmatique en imbriquant la commande de tabulation dans la fonction de tri native du langage, sous la forme <em>sort(table(donnees_cliniques$Traitement), decreasing = TRUE)<\/em>. En assignant la valeur logique <em>TRUE<\/em> au param\u00e8tre <em>decreasing<\/em>, les effectifs se trouvent imm\u00e9diatement rang\u00e9s dans un ordre strictement d\u00e9croissant, positionnant \u00e0 l&rsquo;extr\u00eame gauche la modalit\u00e9 modale et rel\u00e9guant \u00e0 l&rsquo;extr\u00e9mit\u00e9 droite les cat\u00e9gories les plus rares. Cette op\u00e9ration s&rsquo;av\u00e8re primordiale dans l&rsquo;analyse de questions \u00e0 r\u00e9ponses multiples ou lors de l&rsquo;examen de diagnostics diff\u00e9rentiels en \u00e9pid\u00e9miologie psychiatrique.<\/p>\n<p>L&rsquo;inversion de l&rsquo;argument \u00e0 <em>decreasing = FALSE<\/em> permet sym\u00e9triquement d&rsquo;ordonner le tableau de mani\u00e8re croissante, une tactique analytique particuli\u00e8rement pr\u00e9cieuse lors des phases de nettoyage des donn\u00e9es (<em>data cleaning<\/em>). Cette disposition permet d&rsquo;isoler instantan\u00e9ment les cat\u00e9gories sous-repr\u00e9sent\u00e9es, les coquilles typographiques ayant accidentellement cr\u00e9\u00e9 des modalit\u00e9s parasites \u00e0 fr\u00e9quence marginale unitaire, ou les sous-groupes cliniques dont la faiblesse d&rsquo;effectif risque de violer les postulats de validit\u00e9 des futurs tests d&rsquo;ad\u00e9quation ou d&rsquo;ajustement non param\u00e9triques.<\/p>\n<h3>2.3 Indexation et interrogation des \u00e9l\u00e9ments du tableau univari\u00e9<\/h3>\n<p>\u00c9tant donn\u00e9 que l&rsquo;objet issu de <em>table()<\/em> conserve une structure interne analogue \u00e0 celle des vecteurs atomiques nomm\u00e9s, l&rsquo;analyste peut d\u00e9ployer l&rsquo;int\u00e9gralit\u00e9 du syst\u00e8me d&rsquo;indexation par crochets pour interroger s\u00e9lectivement les effectifs calcul\u00e9s. Cette interrogation peut \u00eatre men\u00e9e par le truchement des positions indicielles enti\u00e8res. Ainsi, la syntaxe <em>mon_tableau[1]<\/em> extrait le premier compartiment du tableau avec son libell\u00e9 associ\u00e9, tandis que des requ\u00eates d&rsquo;exclusion telles que <em>mon_tableau[-2]<\/em> omettent d\u00e9lib\u00e9r\u00e9ment la seconde modalit\u00e9 de l&rsquo;extraction.<\/p>\n<p>L&rsquo;acc\u00e8s s\u00e9mantique par le nom de la modalit\u00e9 constitue n\u00e9anmoins la m\u00e9thode la plus robuste et la plus lisible lors de la r\u00e9daction de scripts reproductibles, car elle s&rsquo;affranchit des incertitudes relatives \u00e0 l&rsquo;ordre interne des facteurs. L&rsquo;expression <em>mon_tableau[\u00ab\u00a0TCC\u00a0\u00bb]<\/em> renvoie de fa\u00e7on univoque l&rsquo;effectif allou\u00e9 au protocole cognitivo-comportemental, pr\u00e9venant toute m\u00e9prise indiciaire cons\u00e9cutive \u00e0 une modification ult\u00e9rieure du dictionnaire de donn\u00e9es. Il est \u00e9galement possible d&rsquo;extraire simultan\u00e9ment plusieurs modalit\u00e9s cibl\u00e9es en fournissant un vecteur de cha\u00eenes de caract\u00e8res au sein de l&rsquo;op\u00e9rateur d&rsquo;indexation, par exemple <em>mon_tableau[c(\u00ab\u00a0TCC\u00a0\u00bb, \u00ab\u00a0Psychanalyse\u00a0\u00bb)]<\/em>.<\/p>\n<p>En outre, les objets de classe <em>table<\/em> r\u00e9pondent parfaitement aux op\u00e9rations arithm\u00e9tiques vectorielles \u00e9l\u00e9mentaires. L&rsquo;utilisateur peut sommer directement les composantes de deux tableaux partageant des dimensions homologues, multiplier un tableau par une constante scalaire, ou appliquer des conditions de filtrage logique. L&rsquo;instruction bool\u00e9enne <em>mon_tableau[mon_tableau > 30]<\/em> filtre et n&rsquo;affiche que les modalit\u00e9s dont l&rsquo;occurrence empirique d\u00e9passe rigoureusement le seuil de trente sujets, facilitant ainsi la s\u00e9lection algorithmique des composantes majeures d&rsquo;un \u00e9chantillon complexe sans n\u00e9cessiter l&rsquo;appel \u00e0 des fonctions de filtrage tierces.<\/p>\n<h2>3. Traitement rigoureux des donn\u00e9es manquantes avec l&rsquo;argument useNA<\/h2>\n<h3>3.1 Le comportement par d\u00e9faut de table() face aux valeurs NA<\/h3>\n<p>L&rsquo;un des pi\u00e8ges m\u00e9thodologiques les plus insidieux pour les praticiens r\u00e9side dans la gestion implicite des valeurs manquantes, d\u00e9sign\u00e9es par la constante logique <em>NA<\/em> (<em>Not Available<\/em>) dans l&rsquo;\u00e9cosyst\u00e8me R. Dans sa configuration d&rsquo;usine par d\u00e9faut, le param\u00e8tre <em>useNA<\/em> de la fonction <em>table()<\/em> est assign\u00e9 \u00e0 la valeur <em>\u00ab\u00a0no\u00a0\u00bb<\/em>. Par cons\u00e9quent, lors de l&rsquo;appel conventionnel <em>table(donnees_cliniques$Observance)<\/em>, toutes les observations absentes, non renseign\u00e9es, r\u00e9sultant d&rsquo;abandons exp\u00e9rimentaux ou d&rsquo;erreurs de passation sont purement et simplement escamot\u00e9es de la compilation finale sans qu&rsquo;aucun message d&rsquo;avertissement ne soit \u00e9mis par la console.<\/p>\n<p>Cette troncature silencieuse engendre des r\u00e9percussions d\u00e9sastreuses sur la validit\u00e9 interne des conclusions statistiques. En occultant l&rsquo;existence des non-r\u00e9ponses, le chercheur s&rsquo;expose \u00e0 une sous-estimation syst\u00e9matique de la taille r\u00e9elle de l&rsquo;\u00e9chantillon sollicit\u00e9, mais surtout \u00e0 une distorsion sensible du d\u00e9nominateur lors de la conversion ult\u00e9rieure des effectifs en pourcentages ou proportions relatives. Si quinze patients sur cent n&rsquo;ont pas renseign\u00e9 leur statut d&rsquo;adh\u00e9sion th\u00e9rapeutique, d\u00e9clarer un taux d&rsquo;observance de soixante pour cent calcul\u00e9 uniquement sur les quatre-vingt-cinq cas complets constitue une surestimation ill\u00e9gitime de l&rsquo;efficacit\u00e9 de l&rsquo;intervention, masquant une potentielle attrition s\u00e9lective li\u00e9e \u00e0 des effets secondaires ind\u00e9sirables.<\/p>\n<p>L&rsquo;illustration empirique de ce ph\u00e9nom\u00e8ne se mat\u00e9rialise d\u00e8s lors que l&rsquo;on confronte la longueur du vecteur initial obtenue via la commande <em>length(donnees_cliniques$Observance)<\/em> avec la somme arithm\u00e9tique des effectifs extraits par la table standard via <em>sum(table(donnees_cliniques$Observance))<\/em>. Le diff\u00e9rentiel num\u00e9rique obtenu atteste de la d\u00e9perdition invisible d&rsquo;observations, ce qui impose une vigilance algorithmique constante et le recours syst\u00e9matique aux param\u00e8tres d&rsquo;inclusion des donn\u00e9es incompl\u00e8tes.<\/p>\n<h3>3.2 Param\u00e9trage de useNA : &lsquo;ifany&rsquo; versus &lsquo;always&rsquo;<\/h3>\n<p>Pour conjurer ce biais d&rsquo;oblit\u00e9ration des donn\u00e9es manquantes, les concepteurs du langage ont dot\u00e9 la fonction <em>table()<\/em> de l&rsquo;argument formel <em>useNA<\/em>, lequel admet trois arguments textuels rigoureusement diff\u00e9renci\u00e9s : <em>\u00ab\u00a0no\u00a0\u00bb<\/em>, <em>\u00ab\u00a0ifany\u00a0\u00bb<\/em> et <em>\u00ab\u00a0always\u00a0\u00bb<\/em>. L&rsquo;affectation <em>useNA = \u00ab\u00a0ifany\u00a0\u00bb<\/em> instruit l&rsquo;interpr\u00e9teur de proc\u00e9der \u00e0 un examen dynamique du vecteur source : si et seulement si au moins une valeur <em>NA<\/em> est recens\u00e9e dans les observations, une colonne ou une ligne additionnelle labellis\u00e9e <em><NA><\/em> est annex\u00e9e au tableau final pour consigner pr\u00e9cis\u00e9ment le volume des donn\u00e9es d\u00e9faillantes. Dans l&rsquo;\u00e9ventualit\u00e9 o\u00f9 le vecteur serait parfaitement complet, aucune case surnum\u00e9raire n&rsquo;est introduite, pr\u00e9servant ainsi la dimension standard du tableau.<\/p>\n<p>\u00c0 l&rsquo;inverse, l&rsquo;argument <em>useNA = \u00ab\u00a0always\u00a0\u00bb<\/em> ob\u00e9it \u00e0 une logique d&rsquo;homog\u00e9n\u00e9isation structurelle et de standardisation industrielle des processus de traitement. Quelle que soit la r\u00e9alit\u00e9 empirique du vecteur \u00e9tudi\u00e9, qu&rsquo;il contienne ou non des donn\u00e9es absentes, la fonction g\u00e9n\u00e9rera syst\u00e9matiquement la modalit\u00e9 <em><NA><\/em>. Si aucune observation ne se r\u00e9v\u00e8le manquante, cette cat\u00e9gorie arborera fi\u00e8rement un effectif \u00e9gal \u00e0 z\u00e9ro. Cette approche est particuli\u00e8rement recommand\u00e9e dans les architectures de programmation modulaire, les fonctions automatis\u00e9es ou les scripts d&rsquo;analyse par lots (<em>batch processing<\/em>), car elle garantit que la topologie dimensionnelle de l&rsquo;objet r\u00e9sultant demeure rigoureusement constante \u00e0 travers des \u00e9chantillons successifs, \u00e9vitant les ruptures d&rsquo;ex\u00e9cution li\u00e9es \u00e0 des changements inattendus de cardinalit\u00e9 vectorielle.<\/p>\n<p>L&rsquo;int\u00e9gration explicite de l&rsquo;argument <em>useNA<\/em> modifie en outre la fa\u00e7on dont les fonctions d\u00e9riv\u00e9es, telles que les matrices de transition ou les calculs de proportions, appr\u00e9hendent l&rsquo;espace d&rsquo;\u00e9chantillonnage global. La documentation officielle du projet R, maintenue par le <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/\">Comprehensive R Archive Network (CRAN)<\/a>, documente avec acuit\u00e9 cette modification structurelle, insistant sur le fait que la prise en compte explicite de la non-r\u00e9ponse modifie formellement le statut de l&rsquo;incompl\u00e9tude, qui passe du statut d&rsquo;angle mort m\u00e9thodologique \u00e0 celui de cat\u00e9gorie d&rsquo;observation mesurable et quantifiable.<\/p>\n<h3>3.3 Distinction fondamentale entre NA et cha\u00eene de caract\u00e8res &lsquo;NA&rsquo;<\/h3>\n<p>Une source r\u00e9currente d&rsquo;erreurs d&rsquo;interpr\u00e9tation chez les analystes provient de la confusion pernicieuse entre la v\u00e9ritable valeur manquante logique <em>NA<\/em> propre au syst\u00e8me R et la cha\u00eene de caract\u00e8res typographique contenant les deux lettres capitales <em>\u00ab\u00a0NA\u00a0\u00bb<\/em>. Cette situation pr\u00e9vaut fr\u00e9quemment \u00e0 la suite d&rsquo;op\u00e9rations d&rsquo;importation de fichiers textes d\u00e9limit\u00e9s (.csv, .txt, .tsv) issus de logiciels tiers ou de plateformes d&rsquo;enqu\u00eates en ligne comme Qualtrics ou Google Forms. Lorsque les param\u00e8tres d&rsquo;importation omettent de stipuler les arguments d&rsquo;identification des cha\u00eenes manquantes (<em>na.strings = c(\u00ab\u00a0NA\u00a0\u00bb, \u00ab\u00a0\u00a0\u00bb, \u00a0\u00bb \u00ab\u00a0)<\/em>), la mention textuelle <em>\u00ab\u00a0NA\u00a0\u00bb<\/em> est convertie en une modalit\u00e9 cat\u00e9gorielle valide au m\u00eame titre que n&rsquo;importe quelle autre r\u00e9ponse qualitative.<\/p>\n<p>Cette anomalie engendre une distorsion majeure : la fonction <em>table()<\/em> native sans param\u00e8tre va d\u00e9compter la modalit\u00e9 textuelle <em>\u00ab\u00a0NA\u00a0\u00bb<\/em> comme une cat\u00e9gorie d&rsquo;observation standard, trompant l&rsquo;exp\u00e9rimentateur qui s&rsquo;imagine avoir affaire \u00e0 une r\u00e9ponse explicite ou, pire, qui utilise ult\u00e9rieurement <em>useNA = \u00ab\u00a0ifany\u00a0\u00bb<\/em> et voit alors appara\u00eetre deux entit\u00e9s concurrentes : la cha\u00eene <em>\u00ab\u00a0NA\u00a0\u00bb<\/em> pourvue de ses effectifs et la constante <em><NA><\/em> cr\u00e9dit\u00e9e d&rsquo;un score nul. Dans un contexte de recherche psychologique, o\u00f9 la non-r\u00e9ponse peut traduire un refus d\u00e9lib\u00e9r\u00e9 de t\u00e9moigner face \u00e0 un item invasif ou un d\u00e9crochage attentionnel, ce flou d&rsquo;encodage fausse compl\u00e8tement l&rsquo;estimation de l&rsquo;incompl\u00e9tude des protocoles.<\/p>\n<p>Pour assainir la matrice des donn\u00e9es pr\u00e9alablement \u00e0 toute tabulation, il s&rsquo;av\u00e8re indispensable d&rsquo;ex\u00e9cuter des proc\u00e9dures d&rsquo;uniformisation s\u00e9mantique. L&rsquo;instruction conditionnelle <em>donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Observance[donnees_cliniques\">$Observance[donnees_cliniques$<\/span>Observance == \u00ab\u00a0NA\u00a0\u00bb] <- NA<\/em> permet de convertir la cha\u00eene de caract\u00e8res polluante en la constante manquante unifi\u00e9e du syst\u00e8me. C&rsquo;est uniquement apr\u00e8s cette normalisation que l&rsquo;appel \u00e0 <em>table(donnees_cliniques$Observance, useNA = \u00ab\u00a0ifany\u00a0\u00bb)<\/em> restituera une vision authentique, fid\u00e8le et math\u00e9matiquement transparente des dynamiques de passation de l&rsquo;inventaire psychom\u00e9trique.<\/p>\n<h2>4. Calcul des proportions et des pourcentages avec prop.table()<\/h2>\n<h3>4.1 Transformation des effectifs bruts en fr\u00e9quences relatives<\/h3>\n<p>Bien que la consultation des effectifs bruts observ\u00e9s soit indispensable \u00e0 l&rsquo;appr\u00e9ciation quantitative de l&rsquo;\u00e9chantillon, la comparaison inter-groupes ou la mise en perspective avec la litt\u00e9rature scientifique exige l&rsquo;abstraction de la taille d&rsquo;\u00e9chantillon par le truchement des fr\u00e9quences relatives. Pour op\u00e9rer cette translation arithm\u00e9tique sans recourir \u00e0 des boucles fastidieuses, l&rsquo;environnement R met \u00e0 disposition la fonction <em>prop.table()<\/em>, con\u00e7ue express\u00e9ment pour s&rsquo;articuler de mani\u00e8re matricielle avec la sortie directe de la commande <em>table()<\/em>. Le principe d&rsquo;imbrication syntaxique standard prend ainsi la forme \u00e9l\u00e9gante <em>prop.table(table(donnees_cliniques$Severite))<\/em>.<\/p>\n<p>D&rsquo;un point de vue math\u00e9matique, la fonction <em>prop.table()<\/em> normalise chaque cellule du tableau en divisant son effectif absolu par la somme totale de l&rsquo;ensemble des observations contenues dans la structure. Il en d\u00e9coule une propri\u00e9t\u00e9 fondamentale : la somme axiomatique des composantes du tableau de proportions univari\u00e9 r\u00e9sultant est rigoureusement \u00e9gale \u00e0 l&rsquo;unit\u00e9 (valeur scalaire 1.0). Cette propri\u00e9t\u00e9 garantit une conformit\u00e9 absolue avec les postulats de base de la th\u00e9orie des probabilit\u00e9s de Kolmogorov, o\u00f9 chaque modalit\u00e9 se voit assigner une probabilit\u00e9 empirique d&rsquo;occurrence comprise dans l&rsquo;intervalle ferm\u00e9 allant de z\u00e9ro \u00e0 un inclus.<\/p>\n<p>Pour convertir ces valeurs scalaires en pourcentages stricts, imm\u00e9diatement intelligibles pour des lecteurs non statisticiens ou pour l&rsquo;insertion dans des rapports institutionnels, il suffit d&rsquo;appliquer l&rsquo;op\u00e9rateur arithm\u00e9tique de multiplication vectorielle sur l&rsquo;objet transform\u00e9 : <em>prop.table(table(donnees_cliniques$Severite)) * 100<\/em>. L&rsquo;interpr\u00e9teur R applique ce facteur multiplicateur de mani\u00e8re vectoris\u00e9e \u00e0 chacune des composantes, convertissant instantan\u00e9ment, \u00e0 titre d&rsquo;exemple, une fr\u00e9quence relative de 0.3533 en un pourcentage explicite de 35.33 %.<\/p>\n<h3>4.2 Formatage et contr\u00f4le de la pr\u00e9cision num\u00e9rique avec round()<\/h3>\n<p>Les valeurs produites par <em>prop.table()<\/em> arborent g\u00e9n\u00e9ralement la pr\u00e9cision par d\u00e9faut de la virgule flottante en double pr\u00e9cision, g\u00e9n\u00e9rant une cascade de d\u00e9cimales qui nuit gravement \u00e0 la lisibilit\u00e9 des synth\u00e8ses et contrevient aux canons de pr\u00e9sentation typographique conventionnels. La ma\u00eetrise du rendu scientifique implique donc l&rsquo;adjonction de la fonction d&rsquo;arrondi <em>round()<\/em> en enveloppe sup\u00e9rieure de l&rsquo;expression. La formulation canonique s&rsquo;\u00e9nonce ainsi : <em>round(prop.table(table(donnees_cliniques$Severite)) * 100, digits = 2)<\/em>, o\u00f9 l&rsquo;argument <em>digits<\/em> sp\u00e9cifie le nombre exact de d\u00e9cimales \u00e0 conserver apr\u00e8s la virgule.<\/p>\n<p>Dans le champ des publications scientifiques assujetties aux normes internationales de l&rsquo;<a rel=\"noopener noreferrer\" href=\"https:\/\/apastyle.apa.org\/\">American Psychological Association (APA)<\/a>, les pourcentages doivent pr\u00e9f\u00e9rentiellement \u00eatre rapport\u00e9s avec une pr\u00e9cision d&rsquo;une ou deux d\u00e9cimales, tout en veillant m\u00e9ticuleusement \u00e0 ce que la somme des pourcentages arrondis ne d\u00e9vie pas substantiellement du seuil th\u00e9orique de 100 %. Les impr\u00e9cisions d&rsquo;arrondi individuel (<em>rounding artifacts<\/em>) peuvent parfois conduire \u00e0 un total apparent de 99.99 % ou 100.01 %. Le statisticien avis\u00e9 se doit de documenter explicitement ces micro-\u00e9carts dans les notes de bas de table de ses manuscrits pour attester de la rigueur arithm\u00e9tique de son traitement.<\/p>\n<p>Voici un exemple r\u00e9capitulatif montrant l&rsquo;encha\u00eenement de la commande et la structure du r\u00e9sultat g\u00e9n\u00e9r\u00e9 pour la s\u00e9v\u00e9rit\u00e9 initiale du trouble clinique :<\/p>\n<ul>\n<li>Modalit\u00e9 <em>Legere<\/em> : Effectif brut = 42, Proportion = 0.280, Pourcentage format\u00e9 = 28.00 %<\/li>\n<li>Modalit\u00e9 <em>Moderee<\/em> : Effectif brut = 65, Proportion = 0.433, Pourcentage format\u00e9 = 43.33 %<\/li>\n<li>Modalit\u00e9 <em>Severe<\/em> : Effectif brut = 43, Proportion = 0.287, Pourcentage format\u00e9 = 28.67 %<\/li>\n<li>Total des observations valides : N = 150, Somme des pourcentages = 100.00 %<\/li>\n<\/ul>\n<h3>4.3 Comparaison entre fr\u00e9quences observ\u00e9es et distributions th\u00e9oriques<\/h3>\n<p>La quantification des fr\u00e9quences relatives au moyen de <em>prop.table()<\/em> ne r\u00e9pond pas exclusivement \u00e0 un objectif d&rsquo;\u00e9conomie descriptive ; elle sert d&rsquo;instrument diagnostique pr\u00e9liminaire pour confronter la distribution empirique d&rsquo;un \u00e9chantillon \u00e0 des attentes th\u00e9oriques pr\u00e9alables ou \u00e0 des lois de distribution de probabilit\u00e9 postul\u00e9es <em>a priori<\/em>. Dans l&rsquo;ing\u00e9nierie des questionnaires et la validation des instruments psychom\u00e9triques, cette confrontation permet d&rsquo;examiner attentivement la balance des modalit\u00e9s d&rsquo;un item.<\/p>\n<p>Par exemple, lors de l&rsquo;\u00e9valuation d&rsquo;un questionnaire \u00e0 choix multiples ou d&rsquo;une \u00e9chelle comportementale standardis\u00e9e, l&rsquo;hypoth\u00e8se nulle sous-jacente postule souvent une distribution uniforme des s\u00e9lections entre les diff\u00e9rentes options (\u00e9quiprobabilit\u00e9 des distracteurs). L&rsquo;examen des proportions empiriques via <em>prop.table()<\/em> permet de rep\u00e9rer imm\u00e9diatement un distracteur dysfonctionnel qui ne retiendrait qu&rsquo;une proportion marginale des suffrages (par exemple moins de 2 % de s\u00e9lection), signalant une modalit\u00e9 non discriminative qui devra faire l&rsquo;objet d&rsquo;une r\u00e9vision r\u00e9dactionnelle ou d&rsquo;une suppression lors de l&rsquo;analyse d&rsquo;items.<\/p>\n<p>Sur le plan \u00e9pid\u00e9miologique, cette comparaison descriptive des proportions calcul\u00e9es avec <em>table()<\/em> permet \u00e9galement d&rsquo;appr\u00e9cier la repr\u00e9sentativit\u00e9 d&rsquo;une cohorte clinique par rapport aux donn\u00e9es de pr\u00e9valence nationale \u00e9tablies par les agences de sant\u00e9 publique. Si une enqu\u00eate clinique sur la d\u00e9pendance nicotinique r\u00e9unit une cohorte affichant 75 % de femmes, alors que la population nationale des usagers n&rsquo;en d\u00e9nombre que 45 %, l&rsquo;analyste d\u00e9duit imm\u00e9diatement l&rsquo;existence d&rsquo;un biais de recrutement majeur qui devra \u00eatre temp\u00e9r\u00e9 par des techniques d&rsquo;\u00e9chantillonnage inverse, de redressement d&rsquo;\u00e9chantillon (<em>raking ratio<\/em>) ou de pond\u00e9ration statistique explicite.<\/p>\n<h2>5. Tableaux de contingence bivari\u00e9s : croisement de deux variables<\/h2>\n<h3>5.1 Syntaxe et construction d&rsquo;une table \u00e0 double entr\u00e9e<\/h3>\n<p>L&rsquo;extension naturelle du d\u00e9nombrement univari\u00e9 r\u00e9side dans l&rsquo;analyse de la d\u00e9pendance entre deux dimensions qualitatives. La construction d&rsquo;un tableau de contingence bivari\u00e9 (ou table \u00e0 double entr\u00e9e) s&rsquo;effectue avec une fluidit\u00e9 remarquable en fournissant conjointement deux vecteurs distincts en argument de la fonction : <em>table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Traitement, donnees_cliniques\">$Traitement, donnees_cliniques$<\/span>Observance)<\/em>. Par convention matricielle stricte au sein de l&rsquo;environnement R, le premier vecteur assign\u00e9 en argument indexe invariablement les lignes du tableau r\u00e9sultant, tandis que le second vecteur d\u00e9termine la structuration des colonnes.<\/p>\n<p>L&rsquo;objet produit acquiert instantan\u00e9ment une dimension bidimensionnelle (matrice de taille I \u00d7 J, o\u00f9 I d\u00e9signe le nombre de modalit\u00e9s de la premi\u00e8re variable et J le nombre de modalit\u00e9s de la seconde). Chaque intersection cellulaire renferme l&rsquo;effectif conjoint n<sub>ij<\/sub>, correspondant au nombre exact d&rsquo;observations au sein de la cohorte qui partagent simultan\u00e9ment la modalit\u00e9 i sur la variable de ligne et la modalit\u00e9 j sur la variable de colonne. La console R affiche cette matrice rectangulaire en juxtaposant les intitul\u00e9s des colonnes au sommet et en d\u00e9clinant les modalit\u00e9s de ligne sur le flanc gauche.<\/p>\n<p>Ce croisement permet de contextualiser imm\u00e9diatement les associations comportementales. En croisant par exemple le type de protocole th\u00e9rapeutique administr\u00e9 (quatre modalit\u00e9s en lignes) avec l&rsquo;observance clinique binaire (deux modalit\u00e9s en colonnes, hors donn\u00e9es manquantes), l&rsquo;exp\u00e9rimentateur extrait instantan\u00e9ment le nombre de patients assign\u00e9s \u00e0 la pleine conscience ayant maintenu leur observance vis-\u00e0-vis de ceux ayant d\u00e9croch\u00e9. Le tableau de contingence constitue ainsi l&rsquo;ossature empirique fondamentale sur laquelle reposent les m\u00e9triques de risque, les rapports de cotes et les proc\u00e9dures de tests non param\u00e9triques.<\/p>\n<h3>5.2 Calcul des proportions marginales de lignes et de colonnes<\/h3>\n<p>D\u00e8s lors que l&rsquo;on manipule une table \u00e0 double entr\u00e9e, l&rsquo;application na\u00efve de la commande <em>prop.table()<\/em> sans sp\u00e9cification dimensionnelle additionnelle calcule la proportion de chaque cellule par rapport au grand total cumul\u00e9 de l&rsquo;\u00e9chantillon entier (o\u00f9 la somme globale de l&rsquo;ensemble des cases vaut 1.0). Si cette information s&rsquo;av\u00e8re utile pour appr\u00e9cier la raret\u00e9 relative d&rsquo;un profil particulier dans l&rsquo;ensemble de l&rsquo;\u00e9tude, elle ne permet pas d&rsquo;\u00e9valuer directement l&rsquo;influence conditionnelle d&rsquo;une variable sur l&rsquo;autre. C&rsquo;est ici qu&rsquo;intervient le param\u00e8tre crucial <em>margin<\/em> de la fonction <em>prop.table()<\/em>.<\/p>\n<p>Pour calculer les profils-lignes (les distributions conditionnelles de la variable en colonne pour chaque modalit\u00e9 de ligne prise isol\u00e9ment), il convient de renseigner l&rsquo;argument <em>margin = 1<\/em>, mat\u00e9rialisant l&rsquo;instruction : <em>prop.table(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Traitement, donnees_cliniques\">$Traitement, donnees_cliniques$<\/span>Observance), margin = 1)<\/em>. Dans cette configuration, la somme horizontale de chaque ligne individuelle totalise rigoureusement 1.0 (ou 100 %). Sur le plan \u00e9pist\u00e9mologique et causal, cette disposition r\u00e9pond formellement \u00e0 la question : \u00ab \u00c9tant donn\u00e9 qu&rsquo;un patient est soumis au traitement X, quelle est la probabilit\u00e9 conditionnelle P(Observance | Traitement X) qu&rsquo;il suive le protocole ? \u00bb.<\/p>\n<p>\u00c0 l&rsquo;inverse, l&rsquo;assignation du param\u00e8tre <em>margin = 2<\/em> g\u00e9n\u00e8re les profils-colonnes, o\u00f9 chaque colonne individuelle se trouve standardis\u00e9e pour \u00e9galer la somme unitaire. L&rsquo;expression <em>prop.table(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Traitement, donnees_cliniques\">$Traitement, donnees_cliniques$<\/span>Observance), margin = 2)<\/em> permet de r\u00e9pondre \u00e0 la perspective inverse : \u00ab Parmi l&rsquo;ensemble des patients ayant valid\u00e9 leur observance, quelle est la proportion de ceux qui provenaient du bras de th\u00e9rapie cognitivo-comportementale ? \u00bb. La distinction m\u00e9thodique entre profils-lignes et profils-colonnes s&rsquo;av\u00e8re fondamentale dans les \u00e9tudes cas-t\u00e9moins et les protocoles prospectifs pour \u00e9viter les erreurs d&rsquo;inversion probabiliste r\u00e9currentes (sophisme du procureur).<\/p>\n<h3>5.3 Application psychologique : \u00e9tude de l&rsquo;adh\u00e9sion th\u00e9rapeutique selon le profil<\/h3>\n<p>Pour illustrer concr\u00e8tement la port\u00e9e de cette distinction en psychologie m\u00e9dicale, examinons les r\u00e9sultats crois\u00e9s de notre cohorte clinique relative \u00e0 l&rsquo;observance en fonction du diagnostic psychopathologique initial. En croisant la s\u00e9v\u00e9rit\u00e9 initiale du trouble (<em>Severite<\/em> : L\u00e9g\u00e8re, Mod\u00e9r\u00e9e, S\u00e9v\u00e8re) avec l&rsquo;adh\u00e9sion finale (<em>Observance<\/em> : Oui, Non), l&rsquo;obtention des fr\u00e9quences relatives conditionnelles par ligne au moyen de l&rsquo;expression <em>round(prop.table(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Severite, donnees_cliniques\">$Severite, donnees_cliniques$<\/span>Observance), margin = 1) * 100, 1)<\/em> r\u00e9v\u00e8le des disparit\u00e9s th\u00e9rapeutiques majeures.<\/p>\n<p>Le profil-ligne met en exergue que les patients souffrant d&rsquo;une symptomatologie initiale l\u00e9g\u00e8re affichent un taux d&rsquo;adh\u00e9sion compl\u00e8te de 82.5 %, avec seulement 17.5 % d&rsquo;abandon en cours de route. En revanche, au fur et \u00e0 mesure que la gravit\u00e9 symptomatique s&rsquo;accentue, le taux de conformit\u00e9 s&rsquo;\u00e9rode de fa\u00e7on critique : les patients classifi\u00e9s dans la cat\u00e9gorie de s\u00e9v\u00e9rit\u00e9 mod\u00e9r\u00e9e ne conservent qu&rsquo;une adh\u00e9sion de 58.3 %, tandis que le segment clinique \u00e0 s\u00e9v\u00e9rit\u00e9 \u00e9lev\u00e9e s&rsquo;effondre \u00e0 34.2 % d&rsquo;observance, enregistrant un d\u00e9crochage pr\u00e9matur\u00e9 chez pr\u00e8s des deux tiers des individus concern\u00e9s.<\/p>\n<p>Cette analyse bivari\u00e9e conditionnelle, imm\u00e9diatement extraite par le couplage judicieux de <em>table()<\/em> et <em>prop.table()<\/em>, \u00e9claire le praticien sur la n\u00e9cessit\u00e9 imp\u00e9rieuse de concevoir des modules d&rsquo;accompagnement motivationnel renforc\u00e9s sp\u00e9cifiquement calibr\u00e9s pour les patients s\u00e9v\u00e8rement atteints d\u00e8s la phase d&rsquo;admission. Elle d\u00e9montre avec force qu&rsquo;une analyse descriptive men\u00e9e avec exactitude porte d\u00e9j\u00e0 en elle la substantifique moelle de la d\u00e9cision clinique et du raffinement th\u00e9orique.<\/p>\n<h2>6. Extension aux analyses multidimensionnelles (trois variables et plus)<\/h2>\n<h3>6.1 G\u00e9n\u00e9ration de tableaux de contingence d&rsquo;ordre sup\u00e9rieur \u00e0 deux<\/h3>\n<p>La r\u00e9alit\u00e9 des sciences empiriques ne s&rsquo;accommode que rarement de liaisons bivari\u00e9es isol\u00e9es ; les ph\u00e9nom\u00e8nes psychologiques et comportementaux sont par essence r\u00e9gis par des configurations causales multifactorielles o\u00f9 interagissent des d\u00e9terminants sociod\u00e9mographiques, des facteurs de vuln\u00e9rabilit\u00e9 et des cadres d&rsquo;intervention vari\u00e9s. La fonction <em>table()<\/em> supporte de mani\u00e8re totalement native l&rsquo;int\u00e9gration d&rsquo;un nombre arbitraire de variables vectorielles transmises en s\u00e9rie dans son corps d&rsquo;instructions, sous la syntaxe g\u00e9n\u00e9rique : <em>table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Genre, donnees_cliniques\">$Genre, donnees_cliniques$<\/span>Traitement, donnees_cliniques$Observance)<\/em>.<\/p>\n<p>L&rsquo;objet produit \u00e0 l&rsquo;issue de cet appel s&rsquo;\u00e9mancipe de la simple matrice bidimensionnelle pour constituer un tableau multidimensionnel (<em>array<\/em> de rang 3 ou plus). Dans notre cas d&rsquo;\u00e9cole \u00e0 trois dimensions, la console R restitue ce volume d&rsquo;information complexe en le d\u00e9coupant analytiquement sous forme d&rsquo;une succession ordonn\u00e9e de tranches ou sous-tables bidimensionnelles de contingence. Chaque sous-table repr\u00e9sente le croisement bivari\u00e9 complet des deux premi\u00e8res variables (Genre \u00d7 Traitement), conditionn\u00e9 \u00e0 un niveau fix\u00e9 et immuable de la troisi\u00e8me variable (ici, la sous-table pour l&rsquo;Observance = \u00ab\u00a0Oui\u00a0\u00bb, suivie de la sous-table pour l&rsquo;Observance = \u00ab\u00a0Non\u00a0\u00bb).<\/p>\n<p>Cette d\u00e9composition conditionnelle permet de plonger instantan\u00e9ment dans l&rsquo;intimit\u00e9 factorielle des donn\u00e9es. N\u00e9anmoins, d\u00e8s que le nombre de facteurs atteint quatre ou cinq dimensions crois\u00e9es, l&rsquo;affichage console fragment\u00e9 devient particuli\u00e8rement difficile \u00e0 appr\u00e9hender visuellement pour le cerveau humain, multipliant les feuillets tabulaires successifs et morcelant la continuit\u00e9 perceptive n\u00e9cessaire \u00e0 la d\u00e9tection de patrons comportementaux stables.<\/p>\n<h3>6.2 Am\u00e9lioration de la lisibilit\u00e9 des tables complexes via ftable()<\/h3>\n<p>Face \u00e0 la complexit\u00e9 d&rsquo;agencement visuel inh\u00e9rente aux structures multidimensionnelles d&rsquo;ordre sup\u00e9rieur, l&rsquo;environnement R de base offre une fonction sp\u00e9cialis\u00e9e hautement sophistiqu\u00e9e : la commande <em>ftable()<\/em>, acronyme signifiant <em>Flat Contingency Table<\/em> (tableau de contingence aplani). Cette fonction transforme un objet multidimensionnel compact ou une collection de vecteurs en une repr\u00e9sentation tabulaire bidimensionnelle plane parfaitement lisible, organisant hi\u00e9rarchiquement les facteurs sous forme d&rsquo;imbrications embo\u00eet\u00e9es en lignes et en colonnes.<\/p>\n<p>L&rsquo;invocation de cette fonctionnalit\u00e9 s&rsquo;ex\u00e9cute avec une extr\u00eame simplicit\u00e9 en transmettant directement l&rsquo;objet g\u00e9n\u00e9r\u00e9 par <em>table()<\/em> comme argument d&rsquo;entr\u00e9e : <em>ftable(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Genre, donnees_cliniques\">$Genre, donnees_cliniques$<\/span>Traitement, donnees_cliniques$Observance))<\/em>, ou en passant directement les vecteurs \u00e0 l&rsquo;instruction <em>ftable(donnees_cliniques[, c(\u00ab\u00a0Genre\u00a0\u00bb, \u00ab\u00a0Traitement\u00a0\u00bb, \u00ab\u00a0Observance\u00a0\u00bb)])<\/em>. La pr\u00e9sentation obtenue condense \u00e9l\u00e9gamment l&rsquo;information en pla\u00e7ant, par exemple, les modalit\u00e9s embo\u00eet\u00e9es du Genre et du Traitement le long des lignes gauches, tandis que les paliers de l&rsquo;Observance th\u00e9rapeutique coiffent horizontalement les colonnes sup\u00e9rieures.<\/p>\n<p>De surcro\u00eet, <em>ftable()<\/em> offre une flexibilit\u00e9 totale gr\u00e2ce \u00e0 ses param\u00e8tres de configuration <em>row.vars<\/em> et <em>col.vars<\/em>, qui permettent \u00e0 l&rsquo;analyste de sp\u00e9cifier explicitement quelles variables dimensionnelles doivent \u00eatre d\u00e9ploy\u00e9es verticalement en lignes et lesquelles doivent \u00eatre projet\u00e9es horizontalement en colonnes. Cette restructuration visuelle s&rsquo;av\u00e8re indispensable pour pr\u00e9parer des plans factoriels complexes (tels que des devis quasi-exp\u00e9rimentaux croisant trois facteurs inter-sujets de type 2 \u00d7 3 \u00d7 2) en vue de leur int\u00e9gration dans des rapports d&rsquo;\u00e9tape ou des m\u00e9moires de recherche acad\u00e9miques.<\/p>\n<h3>6.3 Contr\u00f4le de l&rsquo;effet de mod\u00e9ration et d\u00e9tection du paradoxe de Simpson<\/h3>\n<p>Sur le plan \u00e9pist\u00e9mologique et m\u00e9thodologique, l&rsquo;analyse multidimensionnelle par tabulation crois\u00e9e d&rsquo;ordre sup\u00e9rieur constitue un pare-feu essentiel contre l&rsquo;un des pi\u00e8ges statistiques les plus d\u00e9vastateurs de la recherche quantitative : le c\u00e9l\u00e8bre <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Simpson%27s_paradox\">paradoxe de Simpson<\/a> (ou effet Yule-Simpson). Ce ph\u00e9nom\u00e8ne contre-intuitif survient lorsqu&rsquo;une corr\u00e9lation apparente ou une tendance statistique observ\u00e9e au sein d&rsquo;une population globale agr\u00e9g\u00e9e se trouve totalement invers\u00e9e, neutralis\u00e9e ou substantiellement alt\u00e9r\u00e9e d\u00e8s lors que les donn\u00e9es sont ventil\u00e9es en sous-groupes homog\u00e8nes selon une troisi\u00e8me variable de confusion ou de mod\u00e9ration.<\/p>\n<p>Consid\u00e9rons une situation o\u00f9 l&rsquo;examen bivari\u00e9 na\u00eff entre le type de th\u00e9rapie et le r\u00e9tablissement clinique sugg\u00e8re que l&rsquo;intervention A surpasse syst\u00e9matiquement l&rsquo;intervention B en termes de pourcentage global de succ\u00e8s. L&rsquo;introduction d&rsquo;un troisi\u00e8me facteur de stratification via <em>table(Therapie, Retablissement, Severite)<\/em> peut r\u00e9v\u00e9ler que l&rsquo;intervention B affiche en r\u00e9alit\u00e9 des taux d&rsquo;efficacit\u00e9 intrins\u00e8que sup\u00e9rieurs \u00e0 la fois chez les patients l\u00e9gers et chez les patients s\u00e9v\u00e8res consid\u00e9r\u00e9s s\u00e9par\u00e9ment. La sup\u00e9riorit\u00e9 globale illusoire de l&rsquo;intervention A provenait uniquement du fait que les cliniciens lui avaient assign\u00e9 pr\u00e9f\u00e9rentiellement des cas intrins\u00e8quement b\u00e9nins et faciles \u00e0 gu\u00e9rir.<\/p>\n<p>La tabulation \u00e0 trois dimensions repr\u00e9sente ainsi un dispositif de contr\u00f4le m\u00e9thodologique d&rsquo;une puissance redoutable. Elle contraint le chercheur \u00e0 v\u00e9rifier la stabilit\u00e9 des liaisons statistiques \u00e0 travers les diff\u00e9rentes strates de la population avant d&rsquo;\u00e9mettre des inf\u00e9rences causales hasardeuses. Dans le cadre de l&rsquo;inf\u00e9rence causale moderne, formalis\u00e9e notamment par Judea Pearl, la stratification syst\u00e9matique par table de contingence multidimensionnelle constitue la premi\u00e8re \u00e9tape empirique vers le blocage des chemins de confusion (<em>backdoor paths<\/em>) dans les r\u00e9seaux bay\u00e9siens de recherche clinique.<\/p>\n<h2>7. Calcul des totaux marginaux avec la fonction addmargins()<\/h2>\n<h3>7.1 Int\u00e9gration automatique des sommes marginales<\/h3>\n<p>La communication rigoureuse de r\u00e9sultats tabulaires en recherche scientifique ne saurait se cantonner \u00e0 la pr\u00e9sentation exclusive des effectifs intracellulaires ; elle exige imp\u00e9rativement la mention des totaux marginaux de lignes et de colonnes afin de permettre au lecteur d&rsquo;appr\u00e9hender instantan\u00e9ment les masses globales d&rsquo;effectifs engag\u00e9es dans chaque condition. Pour automatiser l&rsquo;int\u00e9gration de ces bordures arithm\u00e9tiques sans alt\u00e9rer manuellement la structure matricielle, R dispose de la fonction d\u00e9di\u00e9e <em>addmargins()<\/em>.<\/p>\n<p>La syntaxe canonique proc\u00e8de par encapsulation directe de l&rsquo;objet table originel : <em>addmargins(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Traitement, donnees_cliniques\">$Traitement, donnees_cliniques$<\/span>Severite))<\/em>. Le r\u00e9sultat imprim\u00e9 dans la console \u00e9tend imm\u00e9diatement la matrice d&rsquo;une ligne suppl\u00e9mentaire \u00e0 sa base et d&rsquo;une colonne suppl\u00e9mentaire sur son flanc droit, chacune \u00e9tant coiff\u00e9e du label explicite <em>Sum<\/em>. L&rsquo;intersection cellulaire situ\u00e9e \u00e0 l&rsquo;angle inf\u00e9rieur droit du tableau affiche la sommation cardinale totale de l&rsquo;\u00e9chantillon analys\u00e9 (N = 150 dans notre \u00e9tude clinique de r\u00e9f\u00e9rence).<\/p>\n<p>Cette commande simplifie consid\u00e9rablement la v\u00e9rification de l&rsquo;int\u00e9grit\u00e9 num\u00e9rique des protocoles. Elle permet de s&rsquo;assurer d&rsquo;un coup d&rsquo;\u0153il qu&rsquo;aucune observation n&rsquo;a \u00e9t\u00e9 ind\u00fbment omise au cours du processus d&rsquo;agr\u00e9gation, et que les sous-groupes exp\u00e9rimentaux respectent les exigences volum\u00e9triques minimales n\u00e9cessaires pour garantir une puissance statistique suffisante lors des phases de testage ult\u00e9rieures.<\/p>\n<h3>7.2 Contr\u00f4le cibl\u00e9 des dimensions d&rsquo;adjonction marginale<\/h3>\n<p>Dans de multiples circonstances analytiques, le calcul indiscrimin\u00e9 des marges \u00e0 la fois sur les dimensions horizontales et verticales s&rsquo;av\u00e8re inutile, voire redondant avec l&rsquo;architecture logique du plan d&rsquo;analyse. La fonction <em>addmargins()<\/em> int\u00e8gre un param\u00e8tre de ciblage directionnel nomm\u00e9 <em>margin<\/em>, calqu\u00e9 sur la logique matricielle standard de R, permettant de restreindre pr\u00e9cis\u00e9ment l&rsquo;adjonction des totaux \u00e0 une dimension sp\u00e9cifique du tableau.<\/p>\n<p>Si l&rsquo;analyste sp\u00e9cifie l&rsquo;instruction <em>addmargins(mon_tableau, margin = 1)<\/em>, la sommation s&rsquo;op\u00e8re exclusivement le long des colonnes, g\u00e9n\u00e9rant uniquement la marge horizontale inf\u00e9rieure (somme des modalit\u00e9s de lignes pour chaque colonne). R\u00e9ciproquement, l&rsquo;expression <em>addmargins(mon_tableau, margin = 2)<\/em> circonscrit l&rsquo;adjonction \u00e0 une seule colonne marginale droite, consignant la somme horizontale de chaque ligne. Cette granularit\u00e9 directionnelle s&rsquo;av\u00e8re particuli\u00e8rement fondamentale lorsqu&rsquo;on combine <em>addmargins()<\/em> avec la fonction de calcul de proportions <em>prop.table()<\/em>.<\/p>\n<p>Consid\u00e9rons en effet le croisement suivant, source fr\u00e9quente d&rsquo;incoh\u00e9rences de d\u00e9butant : si l&rsquo;on applique pr\u00e9alablement des profils-lignes avec <em>prop.table(mon_tableau, margin = 1)<\/em>, chaque ligne somme individuellement \u00e0 100 %. Dans cette configuration, appliquer un <em>addmargins()<\/em> global induirait en erreur en sommant artificiellement les colonnes de pourcentages, aboutissant \u00e0 des marges de colonnes d\u00e9nu\u00e9es de sens physique. La m\u00e9thodologie rigoureuse exige d&rsquo;ordonner l&rsquo;instruction comme suit : <em>addmargins(prop.table(mon_tableau, margin = 1) * 100, margin = 2)<\/em>, ce qui appose harmonieusement une colonne terminale affichant 100 % en face de chaque ligne, attestant formellement de la compl\u00e9tude du calcul probabiliste sans fausser les autres perspectives.<\/p>\n<h3>7.3 Personnalisation des fonctions de marge<\/h3>\n<p>Une dimension m\u00e9connue mais exceptionnellement puissante de la fonction <em>addmargins()<\/em> r\u00e9side dans sa capacit\u00e9 \u00e0 se d\u00e9partir de la simple sommation arithm\u00e9tique (<em>sum<\/em>) pour appliquer des fonctions math\u00e9matiques ou statistiques personnalis\u00e9es sur les marges du tableau. Le param\u00e8tre formel <em>FUN<\/em> accepte en effet n&rsquo;importe quelle primitive ou fonction utilisateur capable d&rsquo;op\u00e9rer sur un vecteur num\u00e9rique d&rsquo;effectifs.<\/p>\n<p>En sp\u00e9cifiant par exemple l&rsquo;argument <em>FUN = mean<\/em>, l&rsquo;instruction <em>addmargins(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Traitement, donnees_cliniques\">$Traitement, donnees_cliniques$<\/span>Severite), FUN = mean)<\/em> remplace l&rsquo;addition classique des cellules par le calcul de l&rsquo;effectif moyen observ\u00e9 par modalit\u00e9. Cette approche permet de visualiser sans d\u00e9lai la moyenne d&rsquo;attribution des participants par condition exp\u00e9rimentale. L&rsquo;\u00e9tiquette de bordure s&rsquo;adapte automatiquement et adopte le nom de la fonction transmise, s&rsquo;intitulant d\u00e9sormais <em>mean<\/em> au lieu de l&rsquo;usuel <em>Sum<\/em>.<\/p>\n<p>Il est m\u00eame envisageable de transmettre une liste structur\u00e9e de fonctions successives au param\u00e8tre <em>FUN<\/em>, telles que <em>FUN = list(list(sum, sd), list(sum, mean))<\/em>, autorisant la cr\u00e9ation de tableaux de synth\u00e8se complexes int\u00e9grant concomitamment le total marginal, l&rsquo;\u00e9cart-type de dispersion des effectifs cellulaires ou la m\u00e9diane des cat\u00e9gories. Cette flexibilit\u00e9 algorithmique transforme <em>addmargins()<\/em> en un v\u00e9ritable moteur de reporting descriptif condens\u00e9, r\u00e9duisant drastiquement le besoin d&rsquo;outils d&rsquo;agr\u00e9gation tiers pour les besoins d&rsquo;\u00e9valuation imm\u00e9diate.<\/p>\n<h2>8. Transformation et conversion des objets de classe table<\/h2>\n<h3>8.1 Conversion en data frame via as.data.frame()<\/h3>\n<p>Bien que la pr\u00e9sentation sous forme d&rsquo;objet de classe <em>table<\/em> soit optimale pour la consultation directe dans le terminal R, l&rsquo;int\u00e9gration des r\u00e9sultats de contingence dans des cha\u00eenes de traitement automatis\u00e9es, des modules graphiques modernes ou des algorithmes de mod\u00e9lisation lin\u00e9aire exige fr\u00e9quemment une mutation structurelle vers le format rectangulaire standard : le <em>data.frame<\/em>. L&rsquo;ex\u00e9cution de cette coercition s&rsquo;accomplit par le truchement de la fonction native <em>as.data.frame()<\/em>.<\/p>\n<p>Lorsque l&rsquo;on transmet un objet de classe <em>table<\/em> \u00e0 la commande <em>as.data.frame(ma_table)<\/em>, l&rsquo;interpr\u00e9teur R op\u00e8re une op\u00e9ration de d\u00e9construction et de r\u00e9agencement dimensionnel complet. Au lieu de conserver l&rsquo;architecture matricielle crois\u00e9e (I lignes \u00d7 J colonnes), la fonction d\u00e9ploie l&rsquo;int\u00e9gralit\u00e9 des combinaisons factorielles possibles sous la forme de lignes individuelles d&rsquo;un nouveau tableau rectangulaire (format long). Chaque facteur initial devient une colonne explicite de type facteur, et une colonne num\u00e9rique additionnelle syst\u00e9matiquement labellis\u00e9e <em>Freq<\/em> est automatiquement forg\u00e9e pour consigner l&rsquo;effectif d\u00e9compt\u00e9 dans la cellule correspondante.<\/p>\n<p>Cette conversion s&rsquo;av\u00e8re particuli\u00e8rement pr\u00e9cieuse pour assurer l&rsquo;interop\u00e9rabilit\u00e9 avec les \u00e9cosyst\u00e8mes contemporains de manipulation de donn\u00e9es, tels que <a rel=\"noopener noreferrer\" href=\"https:\/\/dplyr.tidyverse.org\/\">dplyr<\/a> ou les visualisations d\u00e9claratives avec <em>ggplot2<\/em>. Elle permet d&rsquo;appliquer instantan\u00e9ment des filtres, des mutations de variables, des jointures relationnelles ou des exportations vers des bases de donn\u00e9es relationnelles SQL sans se heurter aux rigidit\u00e9s d&rsquo;indexation propres aux matrices de contingence.<\/p>\n<h3>8.2 Reconstitution du tableau brut \u00e0 partir des effectifs agr\u00e9g\u00e9s<\/h3>\n<p>Une probl\u00e9matique r\u00e9currente dans la pratique de la recherche acad\u00e9mique d\u00e9coule de l&rsquo;impossibilit\u00e9 fr\u00e9quente d&rsquo;acc\u00e9der aux donn\u00e9es individuelles micro-statistiques des publications historiques ou des rapports \u00e9pid\u00e9miologiques anciens, les auteurs ne divulguant g\u00e9n\u00e9ralement que le tableau de contingence agr\u00e9g\u00e9 r\u00e9capitulant les effectifs observ\u00e9s. Si un chercheur d\u00e9sire r\u00e9analyser ces r\u00e9sultats pour appliquer des mod\u00e8les de r\u00e9gression logistique, des arbres de d\u00e9cision ou des proc\u00e9dures de r\u00e9\u00e9chantillonnage de type bootstrap, il se heurte \u00e0 la structure r\u00e9sum\u00e9e des donn\u00e9es.<\/p>\n<p>Heureusement, R offre la possibilit\u00e9 de d\u00e9compacter et de reconstituer l&rsquo;int\u00e9gralit\u00e9 du jeu de donn\u00e9es brut individuel ligne par ligne (<em>raw observations<\/em>) \u00e0 partir de la version convertie en data frame d&rsquo;un objet <em>table<\/em>. La proc\u00e9dure repose sur l&rsquo;exploitation concert\u00e9e de la fonction de r\u00e9plication vectorielle <em>rep()<\/em> et du syst\u00e8me d&rsquo;indexation matricielle, selon l&rsquo;algorithme suivant :<\/p>\n<ul>\n<li>\u00c9tape 1 : Conversion de l&rsquo;objet <em>table<\/em> en format tabulaire interm\u00e9diaire avec <em>df_agrege <- as.data.frame(ma_table)<\/em>.<\/li>\n<li>\u00c9tape 2 : G\u00e9n\u00e9ration d&rsquo;un vecteur d&rsquo;indices reproduisant le num\u00e9ro de chaque ligne autant de fois que l&rsquo;indique la colonne des effectifs : <em>indices <- rep(seq_len(nrow(df_agrege)), times = df_agrege$Freq)<\/em>.<\/li>\n<li>\u00c9tape 3 : Duplication des lignes correspondantes sans conserver la colonne de fr\u00e9quence : <em>df_brut <- df_agrege[indices, c(\"Traitement\", \"Observance\")]<\/em>.<\/li>\n<li>\u00c9tape 4 : R\u00e9initialisation propre de la num\u00e9rotation des lignes avec <em>rownames(df_brut) <- NULL<\/em>.<\/li>\n<\/ul>\n<p>\u00c0 l&rsquo;issue de cette manipulation \u00e9l\u00e9gante, le nouvel objet <em>df_brut<\/em> contient rigoureusement 150 lignes repr\u00e9sentant chaque sujet virtuel avec ses modalit\u00e9s individuelles d&rsquo;appartenance. Cette prouesse algorithmique autorise la r\u00e9tro-ing\u00e9nierie int\u00e9grale d&rsquo;articles scientifiques centenaires pour les r\u00e9examiner sous le prisme des m\u00e9thodologies computationnelles les plus contemporaines.<\/p>\n<h3>8.3 Conversion matricielle stricte avec as.matrix()<\/h3>\n<p>Dans le prolongement des conversions de formats, la transformation d&rsquo;une table bidimensionnelle en matrice num\u00e9rique pure via l&rsquo;instruction <em>as.matrix(ma_table)<\/em> r\u00e9pond \u00e0 des n\u00e9cessit\u00e9s computationnelles d&rsquo;alg\u00e8bre lin\u00e9aire et de mod\u00e9lisation math\u00e9matique avanc\u00e9e. Bien qu&rsquo;un objet de classe <em>table<\/em> h\u00e9rite conceptuellement des structures matricielles, il transporte avec lui un ensemble d&rsquo;attributs de classe sp\u00e9cifiques qui peuvent parfois perturber le fonctionnement d&rsquo;algorithmes math\u00e9matiques de bas niveau \u00e9crits en langage C ou Fortran.<\/p>\n<p>L&rsquo;application de <em>as.matrix()<\/em> d\u00e9pouille l&rsquo;objet de ses m\u00e9tadonn\u00e9es de classe tout en pr\u00e9servant scrupuleusement le contenu num\u00e9rique des cellules ainsi que les attributs d&rsquo;\u00e9tiquetage des dimensions (<em>dimnames<\/em>, incluant les noms de lignes et de colonnes). La matrice r\u00e9sultante se pr\u00eate alors directement aux op\u00e9rations de multiplication matricielle (op\u00e9rateur <em>%*%<\/em>), \u00e0 la transposition via <em>t()<\/em>, \u00e0 l&rsquo;inversion de matrices ou \u00e0 l&rsquo;extraction de valeurs propres (<em>eigenvalues<\/em>) dans le cadre de l&rsquo;analyse factorielle des correspondances simples (AFC).<\/p>\n<p>Cette coercition matricielle stricte s&rsquo;av\u00e8re \u00e9galement indispensable lors de la programmation d&rsquo;estimateurs personnalis\u00e9s, comme le calcul manuel des distances du chi-deux ou l&rsquo;impl\u00e9mentation de mod\u00e8les de quasi-sym\u00e9trie et de quasi-ind\u00e9pendance sur des tables de contingence carr\u00e9es, attestant une fois de plus de la remarquable continuit\u00e9 op\u00e9rationnelle entre les structures \u00e9l\u00e9mentaires de base du langage R.<\/p>\n<h2>9. Visualisation graphique des r\u00e9sultats issus de table()<\/h2>\n<h3>9.1 Repr\u00e9sentation graphique univari\u00e9e avec barplot()<\/h3>\n<p>La communication de r\u00e9sultats statistiques franchit un palier d&rsquo;accessibilit\u00e9 d\u00e9terminant d\u00e8s lors que les structures textuelles sont traduites sous forme de repr\u00e9sentations graphiques rigoureuses. Au sein du syst\u00e8me graphique historique de R (le moteur graphique de base), la fonction <em>barplot()<\/em> a \u00e9t\u00e9 architecturalement con\u00e7ue pour dialoguer de fa\u00e7on totalement symbiotique avec la sortie directe d&rsquo;un appel \u00e0 <em>table()<\/em>. L&rsquo;instruction minimale <em>barplot(table(donnees_cliniques$Traitement))<\/em> suffit \u00e0 tracer instantan\u00e9ment un diagramme en barres verticaux conforme aux r\u00e8gles de l&rsquo;art.<\/p>\n<p>L&rsquo;interpr\u00e9teur R associe automatiquement les hauteurs des rectangles aux effectifs absolus compil\u00e9s dans l&rsquo;objet de contingence, tout en positionnant les libell\u00e9s des modalit\u00e9s sous chaque colonne sur l&rsquo;axe des abscisses. Pour hisser la production graphique aux standards des publications acad\u00e9miques de premier rang, l&rsquo;analyste se doit d&rsquo;enrichir la syntaxe en configurant les param\u00e8tres cosm\u00e9tiques et structurels fondamentaux : l&rsquo;argument <em>main<\/em> pour assigner un titre scientifique univoque, <em>xlab<\/em> et <em>ylab<\/em> pour qualifier les axes de mesure, <em>col<\/em> pour introduire une palette chromatique contrast\u00e9e et accessible aux personnes dyschromates, et <em>las = 1<\/em> pour contraindre l&rsquo;orientation horizontale des \u00e9tiquettes num\u00e9riques de l&rsquo;axe des ordonn\u00e9es.<\/p>\n<p>Il importe en outre de distinguer clairement la visualisation des effectifs absolus de celle des fr\u00e9quences relatives. La transmission d&rsquo;un tableau converti par <em>prop.table()<\/em> au sein de la fonction graphique, via l&rsquo;expression <em>barplot(prop.table(table(donnees_cliniques$Traitement)) * 100, ylab = \u00ab\u00a0Fr\u00e9quence relative (%)\u00a0\u00bb, ylim = c(0, 50))<\/em>, produit une figure normalis\u00e9e, imm\u00e9diatement comparable avec des cohortes d&rsquo;effectifs divergents, renfor\u00e7ant consid\u00e9rablement l&rsquo;objectivit\u00e9 du transfert visuel d&rsquo;information.<\/p>\n<h3>9.2 Visualisation des contingences bivari\u00e9es : barplot group\u00e9 et empil\u00e9<\/h3>\n<p>Lorsque l&rsquo;investigation graphique s&rsquo;\u00e9tend au croisement bivari\u00e9 de deux variables qualitatives, la fonction <em>barplot()<\/em> adapte spontan\u00e9ment son comportement pour projeter l&rsquo;objet de dimension bidimensionnelle sous forme de diagrammes composites. Par d\u00e9faut, la transmission d&rsquo;une table \u00e0 double entr\u00e9e, telle que <em>barplot(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Observance, donnees_cliniques\">$Observance, donnees_cliniques$<\/span>Traitement))<\/em>, engendre un diagramme en barres empil\u00e9es (<em>stacked barplot<\/em>). Chaque colonne globale repr\u00e9sente une modalit\u00e9 de la variable en colonne, et se trouve segment\u00e9e verticalement en sous-sections proportionnelles aux effectifs des modalit\u00e9s de la variable de ligne.<\/p>\n<p>Si le diagramme empil\u00e9 est utile pour \u00e9valuer la masse globale cumul\u00e9e par modalit\u00e9 tout en visualisant sa partition interne, il rend d\u00e9licate la comparaison visuelle pr\u00e9cise des strates interm\u00e9diaires en raison de l&rsquo;absence d&rsquo;une ligne de base commune. Pour pallier cet inconv\u00e9nient m\u00e9thodologique, il est imp\u00e9ratif d&rsquo;activer le param\u00e8tre formel <em>beside = TRUE<\/em>, g\u00e9n\u00e9rant ainsi un diagramme en barres juxtapos\u00e9es ou group\u00e9es (<em>grouped barplot<\/em>). Sous cette modalit\u00e9, les cat\u00e9gories sont align\u00e9es c\u00f4te \u00e0 c\u00f4te au-dessus d&rsquo;une ligne d&rsquo;origine commune, autorisant une appr\u00e9ciation directe des diff\u00e9rentiels d&rsquo;effectifs entre les sous-groupes cliniques.<\/p>\n<p>L&rsquo;exhaustivit\u00e9 de la restitution graphique impose enfin l&rsquo;adjonction m\u00e9thodique d&rsquo;une l\u00e9gende scientifique rigoureuse via le param\u00e8tre <em>legend.text = TRUE<\/em> ou par l&rsquo;appel subs\u00e9quent de la commande explicite <em>legend()<\/em>. Cette derni\u00e8re permet de sp\u00e9cifier le positionnement spatial optimal dans le plan graphique (ex. <em>\u00ab\u00a0topright\u00a0\u00bb<\/em>), les intitul\u00e9s exacts des modalit\u00e9s de contraste, les teintes associ\u00e9es et la suppression des bordures superflues (<em>bty = \u00ab\u00a0n\u00a0\u00bb<\/em>), garantissant ainsi que la figure se suffit \u00e0 elle-m\u00eame sans n\u00e9cessiter de d\u00e9cryptage fastidieux dans le corps du texte.<\/p>\n<h3>9.3 Visualisation avanc\u00e9e par le diagramme en mosa\u00efque (mosaicplot)<\/h3>\n<p>Pour appr\u00e9hender visuellement et de fa\u00e7on structurelle la totalit\u00e9 des d\u00e9pendances statistiques au sein d&rsquo;une table de contingence bivari\u00e9e ou multidimensionnelle, le diagramme en mosa\u00efque (impl\u00e9ment\u00e9 nativement via la commande <em>mosaicplot()<\/em>) constitue l&rsquo;outil le plus abouti de la statistique graphique exploratoire. Contrairement au simple diagramme en barres, le trac\u00e9 de mosa\u00efque segmente l&rsquo;espace graphique bidimensionnel unitaire en une s\u00e9rie de rectangles imbriqu\u00e9s dont les aires de surface g\u00e9om\u00e9trique sont rigoureusement proportionnelles aux probabilit\u00e9s conjointes observ\u00e9es dans les cellules du tableau crois\u00e9.<\/p>\n<p>L&rsquo;ex\u00e9cution \u00e9l\u00e9mentaire s&rsquo;initie par l&rsquo;instruction <em>mosaicplot(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Traitement, donnees_cliniques\">$Traitement, donnees_cliniques$<\/span>Observance))<\/em>. Les largeurs relatives des colonnes verticales mat\u00e9rialisent les proportions marginales de la premi\u00e8re variable, tandis que les hauteurs de coupure horizontales traduisent fid\u00e8lement les proportions conditionnelles de la seconde variable au sein de chaque strate. L&rsquo;observateur visualise instantan\u00e9ment si les s\u00e9parations horizontales s&rsquo;alignent de fa\u00e7on continue \u00e0 travers les colonnes (attestant d&rsquo;une ind\u00e9pendance statistique absolue entre les deux facteurs) ou si elles manifestent des ruptures de niveau accus\u00e9es (r\u00e9v\u00e9lant une interaction ou une d\u00e9pendance probabiliste marqu\u00e9e).<\/p>\n<p>Le raffinement m\u00e9thodologique ultime de cette fonction s&rsquo;exprime par l&rsquo;activation de l&rsquo;argument de coloration r\u00e9siduelle : <em>shade = TRUE<\/em>. D\u00e8s son activation, R proc\u00e8de automatiquement au calcul interne d&rsquo;un test d&rsquo;ind\u00e9pendance du chi-deux et colore chaque cellule de la mosa\u00efque en fonction de la valeur de son r\u00e9sidu de Pearson standardis\u00e9 (mesure de l&rsquo;\u00e9cart relatif entre l&rsquo;effectif empirique observ\u00e9 et l&rsquo;effectif th\u00e9orique attendu sous hypoth\u00e8se d&rsquo;ind\u00e9pendance). Une coloration bleue signale une sur-repr\u00e9sentation statistiquement significative de la cellule au-del\u00e0 du seuil critique de fluctuation d&rsquo;\u00e9chantillonnage, tandis qu&rsquo;une coloration rouge d\u00e9nonce un d\u00e9ficit structurel significatif d&rsquo;observations, guidant imm\u00e9diatement le regard de l&rsquo;analyste vers les foyers majeurs d&rsquo;association clinique.<\/p>\n<h2>10. Passerelle entre table() et inf\u00e9rence statistique : tests d&rsquo;ind\u00e9pendance<\/h2>\n<h3>10.1 Test du Chi-deux d&rsquo;ind\u00e9pendance avec chisq.test()<\/h3>\n<p>L&rsquo;aboutissement naturel d&rsquo;une d\u00e9marche d&rsquo;exploration par tableau de contingence r\u00e9side dans la validation inf\u00e9rentielle de l&rsquo;existence d&rsquo;une association statistiquement significative entre les variables \u00e9tudi\u00e9es. La fonction fondamentale du test d&rsquo;ind\u00e9pendance du Chi-deux de Karl Pearson, mat\u00e9rialis\u00e9e par la commande <em>chisq.test()<\/em> dans le package <em>stats<\/em>, a \u00e9t\u00e9 programm\u00e9e pour ing\u00e9rer directement comme argument d&rsquo;entr\u00e9e l&rsquo;objet issu de la fonction <em>table()<\/em>, sans qu&rsquo;aucune restructuration de donn\u00e9es ne soit requise : <em>test_chi2 <- chisq.test(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Traitement, donnees_cliniques\">$Traitement, donnees_cliniques$<\/span>Observance))<\/em>.<\/p>\n<p>Le diagnostic statistique impose n\u00e9anmoins une v\u00e9rification formelle des conditions d&rsquo;application de Cochran avant d&rsquo;accorder le moindre cr\u00e9dit \u00e0 la valeur p-value r\u00e9sultante. Selon ces crit\u00e8res acad\u00e9miques fondamentaux, aucun effectif th\u00e9orique attendu ne doit \u00eatre strictement inf\u00e9rieur \u00e0 un, et au moins 80 % des cellules du tableau de contingence doivent pr\u00e9senter un effectif th\u00e9orique attendu sup\u00e9rieur ou \u00e9gal \u00e0 cinq. L&rsquo;analyste extrait instantan\u00e9ment la matrice des effectifs th\u00e9oriques attendus sous l&rsquo;hypoth\u00e8se nulle d&rsquo;ind\u00e9pendance en interrogeant l&rsquo;attribut calcul\u00e9 <em>test_chi2$expected<\/em>.<\/p>\n<p>Si les conditions de validit\u00e9 sont certifi\u00e9es, l&rsquo;examen exhaustif de l&rsquo;objet de test permet d&rsquo;extraire la statistique globale de test du chi-deux (<em>test_chi2$statistic<\/em>), le nombre de degr\u00e9s de libert\u00e9 associ\u00e9, calcul\u00e9 selon la formule classique (I &#8211; 1) \u00d7 (J &#8211; 1) (<em>test_chi2$parameter<\/em>), et la probabilit\u00e9 critique d&rsquo;erreur de premi\u00e8re esp\u00e8ce (<em>test_chi2$p.value<\/em>). L&rsquo;inspection d\u00e9taill\u00e9e des r\u00e9sidus de Pearson standardis\u00e9s via <em>test_chi2$residuals<\/em> permet ensuite d&rsquo;identifier avec pr\u00e9cision quelles cellules sp\u00e9cifiques contribuent le plus massivement au rejet de l&rsquo;hypoth\u00e8se nulle d&rsquo;ind\u00e9pendance.<\/p>\n<h3>10.2 Alternative pour faibles effectifs : le test exact de Fisher<\/h3>\n<p>Lorsque les donn\u00e9es compil\u00e9es dans le tableau de contingence pr\u00e9sentent des effectifs cellulaires marginaux excessivement t\u00e9nus \u2014 situation fr\u00e9quente en psychologie clinique, en neuropsychologie ou lors de l&rsquo;investigation de pathologies rares ou de comportements suicidaires \u2014, les conditions de Cochran sont irr\u00e9m\u00e9diablement viol\u00e9es. L&rsquo;approximation asymptotique continue continue de la loi du chi-deux devient invalide, entra\u00eenant un risque majeur d&rsquo;inflation de l&rsquo;erreur de premi\u00e8re esp\u00e8ce (rejet \u00e0 tort de l&rsquo;hypoth\u00e8se nulle). Face \u00e0 cette contrainte m\u00e9thodologique, l&rsquo;analyste doit imp\u00e9rativement substituer au test asymptotique le test exact de Fisher, impl\u00e9ment\u00e9 dans R via la fonction <em>fisher.test()<\/em>.<\/p>\n<p>Tout comme son homologue asymptotique, <em>fisher.test()<\/em> s&rsquo;applique de fa\u00e7on parfaitement directe sur l&rsquo;objet produit par <em>table()<\/em> : <em>fisher.test(table(donnees_cliniques<span class=\"arabpsy-math-inline\" data-latex=\"Traitement, donnees_cliniques\">$Traitement, donnees_cliniques$<\/span>Observance))<\/em>. Le test exact de Fisher calcule la probabilit\u00e9 hyperg\u00e9om\u00e9trique exacte d&rsquo;observer la configuration tabulaire constat\u00e9e conditionnellement aux marges observ\u00e9es fix\u00e9es. Pour les tables de dimension 2 \u00d7 2, la fonction d\u00e9livre en outre une estimation ponctuelle non biais\u00e9e du rapport de cotes (<em>Odds Ratio<\/em>) accompagn\u00e9e de son intervalle de confiance exact \u00e0 95 %, fournissant une quantification clinique indispensable de la force de l&rsquo;association.<\/p>\n<p>Pour les tables de contingence de dimensions sup\u00e9rieures (telles que notre croisement th\u00e9rapeutique 4 \u00d7 2), le calcul algorithmique exact implique l&rsquo;\u00e9num\u00e9ration combinatoire d&rsquo;un volume consid\u00e9rable de permutations matricielles potentielles. Dans l&rsquo;\u00e9ventualit\u00e9 o\u00f9 la volum\u00e9trie matricielle saturerait les capacit\u00e9s d&rsquo;allocation m\u00e9moire du sous-syst\u00e8me, <em>fisher.test()<\/em> autorise l&rsquo;activation du param\u00e8tre d&rsquo;estimation stochastique par simulation de Monte Carlo via l&rsquo;argument <em>simulate.p.value = TRUE, B = 100000<\/em>, combinant ainsi exactitude inf\u00e9rentielle et faisabilit\u00e9 computationnelle.<\/p>\n<h3>10.3 Mesures d&rsquo;association et d&rsquo;accord inter-juges<\/h3>\n<p>La mise en \u00e9vidence d&rsquo;une p-value hautement significative via <em>chisq.test()<\/em> ou <em>fisher.test()<\/em> ne renseigne en rien sur l&rsquo;amplitude clinique ou pratique de la liaison constat\u00e9e, la significativit\u00e9 statistique \u00e9tant par essence tributaire de la puissance d&rsquo;\u00e9chantillonnage. Il incombe donc au chercheur de compl\u00e9ter obligatoirement la tabulation par le calcul d&rsquo;une mesure de taille d&rsquo;effet standardis\u00e9e. Pour les tables de contingence rectangulaires de dimensions quelconques, le coefficient V de Cramer constitue la m\u00e9trique de r\u00e9f\u00e9rence universelle.<\/p>\n<p>Le calcul manuel du V de Cramer s&rsquo;articule directement sur les sorties de nos fonctions \u00e9l\u00e9mentaires : il s&rsquo;obtient en divisant la statistique du chi-deux par le produit de la taille d&rsquo;\u00e9chantillon totale (extraite par <em>sum(ma_table)<\/em>) et de la valeur minimale entre le nombre de lignes moins un et le nombre de colonnes moins un, avant d&rsquo;extraire la racine carr\u00e9e du quotient. Ce coefficient oscille rigoureusement dans l&rsquo;intervalle ferm\u00e9 [0, 1], o\u00f9 une valeur proche de 0 d\u00e9note une absence de relation et une valeur sup\u00e9rieure \u00e0 0.35 signe une association substantielle dans le champ des sciences comportementales.<\/p>\n<p>Enfin, dans l&rsquo;\u00e9valuation psychom\u00e9trique de la fid\u00e9lit\u00e9 inter-observateurs ou de la concordance diagnostique entre deux cliniciens \u00e9valuant les m\u00eames patients, l&rsquo;objet de contingence carr\u00e9 issu de <em>table(Juge_A, Juge_B)<\/em> constitue le substrat de calcul du coefficient <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Cohen%27s_kappa\">Kappa de Cohen<\/a>. La somme des \u00e9l\u00e9ments situ\u00e9s sur la diagonale principale de la matrice (obtenue par l&rsquo;instruction <em>sum(diag(ma_table))<\/em>) quantifie l&rsquo;accord empirique brut observ\u00e9, lequel est ensuite confront\u00e9 \u00e0 l&rsquo;accord al\u00e9atoire attendu sous hypoth\u00e8se d&rsquo;ind\u00e9pendance pour isoler la concordance intrins\u00e8que de la mesure clinique.<\/p>\n<h2>11. Comparaison approfondie : table(), xtabs(), et alternatives de l&rsquo;\u00e9cosyst\u00e8me R<\/h2>\n<h3>11.1 La syntaxe par formule avec la fonction xtabs()<\/h3>\n<p>Parall\u00e8lement \u00e0 la syntaxe matricielle de <em>table()<\/em>, le package <em>stats<\/em> de R propose une fonction alternative d&rsquo;une \u00e9l\u00e9gance conceptuelle remarquable pour la tabulation crois\u00e9e : la commande <em>xtabs()<\/em>. Son apport fondamental r\u00e9side dans l&rsquo;adoption int\u00e9grale de l&rsquo;interface symbolique par formule (<em>formula interface<\/em>), standardis\u00e9e dans l&rsquo;univers de la mod\u00e9lisation statistique lin\u00e9aire par John Chambers. L&rsquo;analyste exprime les croisements sous la forme intuitive <em>xtabs(~ Traitement + Observance, data = donnees_cliniques)<\/em>.<\/p>\n<p>Cette formulation pr\u00e9sente des avantages ergonomiques ind\u00e9niables. D&rsquo;une part, l&rsquo;explicitation du param\u00e8tre <em>data<\/em> \u00e9limine l&rsquo;obligation de r\u00e9p\u00e9ter fastidieusement l&rsquo;op\u00e9rateur dollar devant chaque nom de colonne, r\u00e9duisant substantiellement la verbosit\u00e9 du code et limitant les erreurs d&rsquo;inattention lors de l&rsquo;\u00e9criture de scripts \u00e9tendus. D&rsquo;autre part, <em>xtabs()<\/em> g\u00e8re de fa\u00e7on native et transparente l&rsquo;int\u00e9gration des variables de pond\u00e9ration d&rsquo;\u00e9chantillonnage ou de fr\u00e9quence agr\u00e9g\u00e9e.<\/p>\n<p>Si l&rsquo;analyste travaille sur une base de donn\u00e9es d&rsquo;enqu\u00eate o\u00f9 chaque ligne individuelle est assortie d&rsquo;un coefficient de redressement d\u00e9mographique (<em>Poids_Sondage<\/em>), l&rsquo;incorporation de cette pond\u00e9ration s&rsquo;ex\u00e9cute avec une limpidit\u00e9 exemplaire en positionnant la variable de poids \u00e0 gauche du tilde : <em>xtabs(Poids_Sondage ~ Traitement + Observance, data = donnees_cliniques)<\/em>. L&rsquo;objet retourn\u00e9 conserve formellement la classe <em>xtabs<\/em> et <em>table<\/em>, pr\u00e9servant une compatibilit\u00e9 int\u00e9grale avec l&rsquo;ensemble des fonctions d\u00e9riv\u00e9es telles que <em>prop.table()<\/em>, <em>addmargins()<\/em> ou <em>summary()<\/em>.<\/p>\n<h3>11.2 Alternatives modernes avec dplyr et janitor<\/h3>\n<p>L&rsquo;essor contemporain du paradigme du Tidyverse a vu \u00e9merger des alternatives fonctionnelles con\u00e7ues pour s&rsquo;int\u00e9grer directement dans des pipelines construits autour de l&rsquo;op\u00e9rateur de tuyauterie s\u00e9quentielle (<em>pipe<\/em>, not\u00e9 <em>%>%<\/em> ou le tube natif <em>|><\/em>). Au sein du package <em>dplyr<\/em>, le calcul d&rsquo;effectifs s&rsquo;op\u00e8re usuellement par le biais de la fonction <em>count()<\/em>, selon l&rsquo;expression <em>donnees_cliniques |> count(Traitement, Observance)<\/em>, ou par l&rsquo;encha\u00eenement canonique <em>group_by() |> summarise(Freq = n())<\/em>.<\/p>\n<p>Si ces syntaxes contemporaines s\u00e9duisent par leur lisibilit\u00e9 et leur restitution imm\u00e9diate sous forme de tibble (data frame moderne optimis\u00e9), elles ne produisent pas une v\u00e9ritable matrice de contingence \u00e0 double entr\u00e9e, mais plut\u00f4t une liste longue r\u00e9capitulative des combinaisons factorielles observ\u00e9es. L&rsquo;obtention d&rsquo;une table \u00e0 double entr\u00e9e n\u00e9cessite l&rsquo;adjonction d&rsquo;une commande de pivotement horizontal telle que <em>tidyr::pivot_wider(names_from = Observance, values_from = n, values_fill = 0)<\/em>, alourdissant le flux d&rsquo;instructions.<\/p>\n<p>Dans ce paysage moderne, le package sp\u00e9cialis\u00e9 <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=janitor\">janitor<\/a> se distingue par sa remarquable fonction <em>tabyl()<\/em>. Con\u00e7ue pour r\u00e9concilier l&rsquo;esprit du Tidyverse et les besoins pratiques du statisticien, elle autorise des formulations compactes de type <em>donnees_cliniques |> tabyl(Traitement, Observance)<\/em>. Associ\u00e9e \u00e0 ses fonctions accessoires de parure tabulaire (<em>adorn_totals()<\/em>, <em>adorn_percentages()<\/em>, <em>adorn_pct_formatting()<\/em>), elle produit en une seule cha\u00eene de commande des tableaux crois\u00e9s incorporant simultan\u00e9ment effectifs absolus, pourcentages conditionnels format\u00e9s et totaux marginaux avec une \u00e9l\u00e9gance visuelle pr\u00eate pour la publication.<\/p>\n<h3>11.3 Crit\u00e8res de s\u00e9lection de l&rsquo;outil adapt\u00e9 au contexte d&rsquo;analyse<\/h3>\n<p>Face \u00e0 cette multiplicit\u00e9 d&rsquo;outils, le statisticien avis\u00e9 doit asseoir son choix technique sur des crit\u00e8res m\u00e9thodologiques et contextuels rigoureusement pond\u00e9r\u00e9s :<\/p>\n<ul>\n<li><strong>R de base avec table() :<\/strong> \u00c0 privil\u00e9gier imp\u00e9rativement pour le d\u00e9veloppement de packages logiciels autonomes, les scripts de calcul haute performance, la maintenance de codes p\u00e9rennes sans d\u00e9pendances externes susceptibles de d\u00e9pr\u00e9ciation (<em>zero-dependency scripts<\/em>), et lors de l&rsquo;ex\u00e9cution directe de tests non param\u00e9triques (<em>chisq.test()<\/em>).<\/li>\n<li><strong>Interface par formule xtabs() :<\/strong> Id\u00e9ale pour les protocoles d&rsquo;enqu\u00eates n\u00e9cessitant l&rsquo;application directe de pond\u00e9rations sociod\u00e9mographiques (poids d&rsquo;\u00e9chantillonnage) et pour les analystes habitu\u00e9s \u00e0 la syntaxe des mod\u00e8les d&rsquo;analyse de variance ou de r\u00e9gression log-lin\u00e9aire.<\/li>\n<li><strong>Approche dplyr::count() :<\/strong> Parfaitement adapt\u00e9e aux flux de pr\u00e9paration et de nettoyage de donn\u00e9es volumineuses (<em>data wrangling pipelines<\/em>) pr\u00e9alablement \u00e0 des \u00e9tapes de mod\u00e9lisation par apprentissage automatique, particuli\u00e8rement lorsque la sortie doit demeurer dans un format rectangulaire unifi\u00e9.<\/li>\n<li><strong>Package janitor::tabyl() :<\/strong> La solution de r\u00e9f\u00e9rence pour la confection rapide de rapports descriptifs automatis\u00e9s sous R Markdown ou Quarto destin\u00e9s \u00e0 des comit\u00e9s de pilotage ou des auditoires non sp\u00e9cialistes exigeant une mise en forme typographique soign\u00e9e sans effort de programmation matricielle additionnel.<\/li>\n<\/ul>\n<p>Sur le plan de la scalabilit\u00e9 et du traitement de m\u00e9gadonn\u00e9es (<em>Big Data<\/em>), des benchmarks d&rsquo;\u00e9valuation computationnelle r\u00e9v\u00e8lent que <em>table()<\/em> surpasse tr\u00e8s largement en vitesse d&rsquo;ex\u00e9cution pure les approches reposant sur de multiples op\u00e9rations d&#8217;empaquetage et de d\u00e9ballage de data frames, garantissant une \u00e9conomie substantielle de cycles CPU sur des collections comptabilisant plusieurs millions d&rsquo;enregistrements.<\/p>\n<h2>12. Bonnes pratiques, gestion des erreurs courantes et optimisation<\/h2>\n<h3>12.1 Conservation des modalit\u00e9s sans observation (niveaux \u00e0 effectif nul)<\/h3>\n<p>Un \u00e9cueil classique en programmation statistique survient lorsque l&rsquo;on manipule des sous-groupes exp\u00e9rimentaux au sein desquels certaines modalit\u00e9s th\u00e9oriquement existantes ne sont repr\u00e9sent\u00e9es par aucune observation empirique (effectif cellulaire rigoureusement nul). Le comportement de la fonction <em>table()<\/em> est alors enti\u00e8rement tributaire du type interne de la variable : si la variable est stock\u00e9e sous forme de vecteur de cha\u00eenes de caract\u00e8res (<em>character<\/em>), l&rsquo;interpr\u00e9teur omet purement et simplement la modalit\u00e9 absente de la restitution tabulaire, restreignant la table aux seules cat\u00e9gories effectivement observ\u00e9es.<\/p>\n<p>Cette omission peut g\u00e9n\u00e9rer des erreurs en cascade d\u00e9sastreuses lors de l&rsquo;automatisation d&rsquo;analyses comparatives inter-groupes. Si un groupe t\u00e9moin comporte les niveaux \u00ab\u00a0B\u00e9nin\u00a0\u00bb, \u00ab\u00a0Mod\u00e9r\u00e9\u00a0\u00bb et \u00ab\u00a0S\u00e9v\u00e8re\u00a0\u00bb, tandis qu&rsquo;un bras exp\u00e9rimental particuli\u00e8rement performant ne d\u00e9nombre aucun participant dans la cat\u00e9gorie \u00ab\u00a0S\u00e9v\u00e8re\u00a0\u00bb, la comparaison matricielle des deux tableaux \u00e9chouera brutalement en raison d&rsquo;une non-conformit\u00e9 dimensionnelle (incompatibilit\u00e9 de conformabilit\u00e9 matricielle entre un tableau 1 \u00d7 3 et un tableau 1 \u00d7 2).<\/p>\n<p>Pour juguler cette d\u00e9faillance, la bonne pratique absolue consiste \u00e0 convertir imp\u00e9rativement les vecteurs en facteurs formels en d\u00e9clarant explicitement le dictionnaire complet de leurs niveaux possibles via l&rsquo;argument <em>levels<\/em> : <em>donnees_cliniques$Severite <- factor(donnees_cliniques$Severite, levels = c(\"Legere\", \"Moderee\", \"Severe\"))<\/em>. D\u00e8s lors, la fonction <em>table()<\/em> est formellement contrainte de restituer l&rsquo;ensemble des modalit\u00e9s d\u00e9clar\u00e9es, affichant avec exactitude un effectif de z\u00e9ro pour les cases vides. Cette rigueur structurelle garantit l&rsquo;alignement dimensionnel parfait des matrices lors des \u00e9tapes subs\u00e9quentes de concat\u00e9nation ou de calcul matriciel.<\/p>\n<h3>12.2 Gestion de l&#8217;empreinte m\u00e9moire sur les volum\u00e9tries de donn\u00e9es importantes<\/h3>\n<p>Lorsque la tabulation crois\u00e9e est \u00e9tendue \u00e0 un nombre \u00e9lev\u00e9 de variables multidimensionnelles ou \u00e0 des variables cat\u00e9gorielles poss\u00e9dant un cardinal tr\u00e8s \u00e9tendu (par exemple des nomenclatures g\u00e9ographiques fines par communes crois\u00e9es avec des classifications professionnelles d\u00e9taill\u00e9es), la table de contingence r\u00e9sultante tend vers une hyper-matrice creuse (<em>sparse array<\/em>). Dans une telle matrice, une \u00e9crasante majorit\u00e9 des intersections cellulaires renferme la valeur z\u00e9ro.<\/p>\n<p>L&rsquo;instanciation sous la forme standard de l&rsquo;objet de classe <em>table<\/em> alloue en m\u00e9moire un bloc continu d&rsquo;entiers repr\u00e9sentant chaque case individuelle, qu&rsquo;elle soit vide ou occup\u00e9e. Si l&rsquo;on croise simultan\u00e9ment quatre variables comprenant chacune cent modalit\u00e9s, le tableau g\u00e9n\u00e9r\u00e9 requiert le stockage de cent millions de cellules, mena\u00e7ant de saturer la m\u00e9moire vive (RAM) du poste de calcul et de provoquer l&rsquo;interruption brutale de session par d\u00e9passement de capacit\u00e9 (<em>vector memory limit exhausted<\/em>).<\/p>\n<p>Dans ces conditions critiques d&rsquo;ing\u00e9nierie des donn\u00e9es, le praticien doit se tourner vers les structures matricielles creuses sp\u00e9cialis\u00e9es propos\u00e9es par le package formel <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=Matrix\">Matrix<\/a>. La fonction <em>sparseMatrix()<\/em> permet de ne stocker physiquement que les coordonn\u00e9es non nulles du tableau de contingence et leurs effectifs associ\u00e9s, compressant l&#8217;empreinte m\u00e9moire d&rsquo;un facteur pouvant atteindre plusieurs ordres de grandeur. Parall\u00e8lement, une strat\u00e9gie d&rsquo;optimisation pr\u00e9ventive impose de filtrer en amont les donn\u00e9es inutiles et de restreindre le champ des vecteurs pass\u00e9s \u00e0 <em>table()<\/em> au strict p\u00e9rim\u00e8tre exp\u00e9rimental pertinent.<\/p>\n<h3>12.3 Synth\u00e8se et arbre de d\u00e9cision m\u00e9thodologique pour le praticien<\/h3>\n<p>Pour parachever cette immersion exhaustive et fournir au praticien un cadre de r\u00e9f\u00e9rence directement actionnable dans son activit\u00e9 analytique quotidienne, nous dressons un protocole m\u00e9thodologique synth\u00e9tique en plusieurs jalons d\u00e9cisionnels fondamentaux :<\/p>\n<ul>\n<li><strong>\u00c9tape de validation des donn\u00e9es :<\/strong> Assainir les vecteurs sources, \u00e9liminer les confusions typographiques relatives aux valeurs manquantes, et contraindre le typage en facteurs explicites pour p\u00e9renniser les niveaux \u00e0 effectif nul.<\/li>\n<li><strong>Choix du mode de tabulation :<\/strong> S\u00e9lectionner <em>table(&#8230;, useNA = \u00ab\u00a0ifany\u00a0\u00bb)<\/em> pour l&rsquo;inspection univari\u00e9e de s\u00e9curit\u00e9, <em>table(Ligne, Colonne)<\/em> pour l&rsquo;analyse de d\u00e9pendance bivari\u00e9e conventionnelle, ou <em>ftable()<\/em> d\u00e8s lors que le plan factoriel int\u00e8gre trois dimensions ou davantage.<\/li>\n<li><strong>Standardisation conditionnelle :<\/strong> Recourir rigoureusement \u00e0 <em>prop.table(&#8230;, margin = 1)<\/em> pour l&rsquo;\u00e9tude des profils-lignes causaux, et adjoindre la commande <em>round(&#8230;, digits = 2)<\/em> pour certifier la conformit\u00e9 de l&rsquo;arrondi avec les standards de reporting scientifique.<\/li>\n<li><strong>Enrichissement p\u00e9riph\u00e9rique :<\/strong> Compl\u00e9ter syst\u00e9matiquement la synth\u00e8se par <em>addmargins(&#8230;, margin = 2)<\/em> pour v\u00e9rifier les volumes d&rsquo;\u00e9chantillonnage r\u00e9els sous-tendant les pourcentages affich\u00e9s.<\/li>\n<li><strong>Passerelle inf\u00e9rentielle :<\/strong> Valider les effectifs attendus de Cochran avec <em>chisq.test()$expected<\/em> ; basculer sans h\u00e9sitation vers <em>fisher.test()<\/em> en pr\u00e9sence de sous-effectifs cellulaires, et quantifier l&rsquo;amplitude de l&rsquo;effet par le coefficient V de Cramer.<\/li>\n<li><strong>P\u00e9rennit\u00e9 et reproductibilit\u00e9 :<\/strong> Int\u00e9grer l&rsquo;int\u00e9gralit\u00e9 du pipeline d&rsquo;instructions au sein d&rsquo;un document computationnel reproductible (de type Quarto ou R Markdown), garantissant la tra\u00e7abilit\u00e9 int\u00e9grale depuis la donn\u00e9e brute non compil\u00e9e jusqu&rsquo;au tableau de synth\u00e8se pr\u00eat pour la publication acad\u00e9mique.<\/li>\n<\/ul>\n<p>Gr\u00e2ce \u00e0 cette ma\u00eetrise approfondie des m\u00e9canismes intimes de la fonction <em>table()<\/em> et de ses extensions structurales, le statisticien transforme un outil \u00e9l\u00e9mentaire en un instrument d&rsquo;investigation clinique et empirique d&rsquo;une pr\u00e9cision chirurgicale, assurant la robustesse m\u00e9thodologique et la transparence analytique de l&rsquo;ensemble de ses travaux de recherche.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Chambers, J. M., &#038; Hastie, T. J. (Eds.). (1992). <em>Statistical Models in S<\/em>. Wadsworth &#038; Brooks\/Cole Advanced Books &#038; Software.<\/li>\n<li>Cohen, J. (1988). <em>Statistical Power Analysis for the Behavioral Sciences<\/em> (2nd ed.). Lawrence Erlbaum Associates.<\/li>\n<li>Friendly, M. (2000). <em>Visualizing Categorical Data<\/em>. SAS Institute. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.worldcat.org\/title\/visualizing-categorical-data\/oclc\/43568777\">https:\/\/www.worldcat.org\/title\/visualizing-categorical-data\/oclc\/43568777<\/a><\/li>\n<li>Ihaka, R., &#038; Gentleman, R. (1996). R: A language for data analysis and graphics. <em>Journal of Computational and Graphical Statistics<\/em>, 5(3), 299\u2013314. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/10618600.1996.10474713\">https:\/\/doi.org\/10.1080\/10618600.1996.10474713<\/a><\/li>\n<li>Pearl, J. (2009). <em>Causality: Models, Reasoning, and Inference<\/em> (2nd ed.). Cambridge University Press. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1017\/CBO9780511803161\">https:\/\/doi.org\/10.1017\/CBO9780511803161<\/a><\/li>\n<li>R Core Team. (2024). <em>R: A language and environment for statistical computing<\/em>. R Foundation for Statistical Computing, Vienna, Austria. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.R-project.org\/\">https:\/\/www.R-project.org\/<\/a><\/li>\n<li>Tukey, J. W. (1977). <em>Exploratory Data Analysis<\/em>. Addison-Wesley.<\/li>\n<li>Wickham, H. (2019). <em>Advanced R<\/em> (2nd ed.). Chapman and Hall\/CRC. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1201\/9781351201315\">https:\/\/doi.org\/10.1201\/9781351201315<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet sur l&rsquo;utilisation de la fonction table() dans R pour l&rsquo;analyse de fr\u00e9quences, tableaux crois\u00e9s et applications psychom\u00e9triques.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[3775,1835],"tags":[3777,2884,2212,3776,3778],"class_list":["post-1778","psych_stat","type-psych_stat","status-publish","hentry","category-methodes-quantitatives-et-r","category-statistiques-en-psychologie","tag-analyse-de-frequences","tag-r-base","tag-statistiques-descriptives","tag-table-r","tag-tableau-de-contingence"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/1778","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat"}],"about":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/types\/psych_stat"}],"author":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1778"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/1778\/revisions"}],"predecessor-version":[{"id":16271,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/1778\/revisions\/16271"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1778"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}