{"id":2073,"date":"2026-10-14T18:00:47","date_gmt":"2026-10-14T18:00:47","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-calculer-moyenne-geometrique-r-exemples\/"},"modified":"2026-10-14T18:00:47","modified_gmt":"2026-10-14T18:00:47","slug":"comment-calculer-moyenne-geometrique-r-exemples","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-calculer-moyenne-geometrique-r-exemples","title":{"rendered":"Comment calculer la moyenne g\u00e9om\u00e9trique dans R (avec exemples)"},"content":{"rendered":"<p>Dans le paysage foisonnant de l&rsquo;analyse statistique contemporaine et du traitement de donn\u00e9es quantitatives sous l&rsquo;environnement de programmation <strong>R<\/strong>, le choix des indicateurs de tendance centrale constitue un pivot \u00e9pist\u00e9mologique fondamental. Si la moyenne arithm\u00e9tique s&rsquo;impose par d\u00e9faut dans l&rsquo;esprit de nombreux praticiens en raison de son intuitivit\u00e9 alg\u00e9brique et de sa manipulabilit\u00e9 analytique, elle s&rsquo;av\u00e8re fr\u00e9quemment inappropri\u00e9e, voire fallacieuse, d\u00e8s lors que les ph\u00e9nom\u00e8nes sous-jacents ob\u00e9issent \u00e0 des dynamiques multiplicatives, exponentielles ou asym\u00e9triques. En psychologie quantitative, en psychophysique, en \u00e9conom\u00e9trie et dans les neurosciences cognitives computationnelles, les mesures empiriques &mdash; qu&rsquo;il s&rsquo;agisse de latences motrices, de chronom\u00e9tries mentales ou de ratios psychom\u00e9triques d&rsquo;adaptation &mdash; pr\u00e9sentent r\u00e9guli\u00e8rement des distributions positivement \u00e9tir\u00e9es vers la droite, remettant en cause l&rsquo;application aveugle du mod\u00e8le additif standard.<\/p>\n<p>La <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Moyenne_g%C3%A9om%C3%A9trique\">moyenne g\u00e9om\u00e9trique<\/a> \u00e9merge pr\u00e9cis\u00e9ment pour combler ce gouffre m\u00e9thodologique. Fond\u00e9e sur la racine n-i\u00e8me du produit des observations ou, de fa\u00e7on strictement \u00e9quivalente et num\u00e9riquement plus stable, sur l&rsquo;exponentielle de la moyenne arithm\u00e9tique de leurs logarithmes, elle offre une synth\u00e8se rigoureuse des grandeurs fonctionnant par proportions et facteurs d&rsquo;\u00e9chelle. Dans le langage de programmation <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.r-project.org\/\">R<\/a>, environnement d\u00e9di\u00e9 par excellence \u00e0 l&rsquo;inf\u00e9rence et \u00e0 l&rsquo;exploitation des donn\u00e9es complexes, l&rsquo;absence d&rsquo;une fonction primitive unique et g\u00e9n\u00e9rique nomm\u00e9e directement pour la moyenne g\u00e9om\u00e9trique dans le paquet de base (contrairement \u00e0 la pr\u00e9sence imm\u00e9diate de la fonction <em>mean<\/em>) n\u00e9cessite une compr\u00e9hension algorithmique et math\u00e9matique approfondie afin de d\u00e9velopper des routines de calcul p\u00e9rennes, efficientes et r\u00e9silientes face aux anomalies de mesure.<\/p>\n<p>Cet article propose une exploration exhaustive, th\u00e9orique et appliqu\u00e9e, du calcul de la moyenne g\u00e9om\u00e9trique dans l&rsquo;\u00e9cosyst\u00e8me R. En articulant les fondements math\u00e9matiques purs, les imp\u00e9ratifs computationnels li\u00e9s \u00e0 la pr\u00e9cision en virgule flottante, les contraintes empiriques pos\u00e9es par les z\u00e9ros et les valeurs n\u00e9gatives, ainsi que les paradigmes modernes de manipulation de donn\u00e9es vectoris\u00e9es et tabulaires (notamment au travers du m\u00e9tapaquetage <em>tidyverse<\/em> et des biblioth\u00e8ques psychom\u00e9triques sp\u00e9cialis\u00e9es), nous fournissons aux chercheurs et analystes de donn\u00e9es un cadre de r\u00e9f\u00e9rence m\u00e9thodologique complet. \u00c0 travers des impl\u00e9mentations pas \u00e0 pas, des benchmarks conceptuels et des \u00e9tudes de cas inspir\u00e9es des sciences du comportement, ce guide d\u00e9taill\u00e9 \u00e9claire les conditions de calcul, de visualisation et de communication statistique de cette m\u00e9trique incontournable.<\/p>\n<h2>1. Introduction th\u00e9orique et fondements math\u00e9matiques de la moyenne g\u00e9om\u00e9trique<\/h2>\n<h3>1.1 D\u00e9finition formelle et formulation math\u00e9matique<\/h3>\n<p>D&rsquo;un point de vue formel, consid\u00e9rons un \u00e9chantillon de variables quantitatives continues strictement positives not\u00e9 <em>x<\/em>, compos\u00e9 de <em>n<\/em> observations scalaires individuelles <em>x<sub>1<\/sub>, x<sub>2<\/sub>, &#8230;, x<sub>n<\/sub><\/em>. La moyenne g\u00e9om\u00e9trique, traditionnellement d\u00e9sign\u00e9e par la lettre <em>G<\/em> ou la notation <em>M<sub>geom<\/sub><\/em>, se d\u00e9finit au sens premier comme la racine n-i\u00e8me du produit continu de l&rsquo;ensemble de ces termes. En utilisant le formalisme du produit tensoriel scalaire, cette relation s&rsquo;exprime selon l&rsquo;\u00e9quation fondamentale :<\/p>\n<p><em>G = ( &prod;<sub>i=1<\/sub><sup>n<\/sup> x<sub>i<\/sub> )<sup>1\/n<\/sup> = ( x<sub>1<\/sub> &times; x<sub>2<\/sub> &times; &#8230; &times; x<sub>n<\/sub> )<sup>1\/n<\/sup><\/em><\/p>\n<p>Bien que cette expression soit conceptuellement limpide, sa mise en &oelig;uvre directe sur des ensembles de donn\u00e9es empiriques volumineux se heurte rapidement \u00e0 des obstacles computationnels r\u00e9dhibitoires. Pour contourner ces \u00e9cueils, l&rsquo;alg\u00e8bre math\u00e9matique exploite la propri\u00e9t\u00e9 de morphisme de la fonction logarithmique, laquelle convertit les produits en sommes lin\u00e9aires. En appliquant le logarithme naturel (ou n\u00e9p\u00e9rien) \u00e0 chaque terme de l&rsquo;\u00e9galit\u00e9, nous \u00e9tablissons l&rsquo;\u00e9quivalence logarithmique universelle :<\/p>\n<p><em>ln(G) = (1 \/ n) &sum;<sub>i=1<\/sub><sup>n<\/sup> ln(x<sub>i<\/sub>)<\/em><\/p>\n<p>En composant \u00e0 nouveau par la fonction exponentielle, fonction r\u00e9ciproque stricte du logarithme n\u00e9p\u00e9rien sur le demi-axe r\u00e9el positif, la moyenne g\u00e9om\u00e9trique se reformule \u00e9l\u00e9gamment comme l&rsquo;exponentielle de la moyenne arithm\u00e9tique des logarithmes de l&rsquo;\u00e9chantillon initial :<\/p>\n<p><em>G = exp( (1 \/ n) &sum;<sub>i=1<\/sub><sup>n<\/sup> ln(x<sub>i<\/sub>) )<\/em><\/p>\n<p>Cette dualit\u00e9 math\u00e9matique \u00e9claire la place de la moyenne g\u00e9om\u00e9trique au sein de la famille plus large des moyennes g\u00e9n\u00e9ralis\u00e9es, souvent nomm\u00e9es moyennes de Kolmogorov ou moyennes quasi-arithm\u00e9tiques. De surcro\u00eet, la structure de la moyenne g\u00e9om\u00e9trique s&rsquo;ins\u00e8re de mani\u00e8re immuable dans l&rsquo;in\u00e9galit\u00e9 classique reliant les moyennes fondamentales, gouvern\u00e9e par l&rsquo;<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/In%C3%A9galit%C3%A9_de_Cauchy-Schwarz\">in\u00e9galit\u00e9 de Cauchy-Schwarz<\/a> et le th\u00e9or\u00e8me des moyennes de puissance. Pour tout ensemble de r\u00e9els strictement positifs non identiques, nous v\u00e9rifions rigoureusement l&rsquo;ordre hi\u00e9rarchique suivant :<\/p>\n<p><em>Moyenne Harmonique &le; Moyenne G\u00e9om\u00e9trique &le; Moyenne Arithm\u00e9tique<\/em><\/p>\n<p>L&rsquo;\u00e9galit\u00e9 parfaite entre ces trois m\u00e9triques n&rsquo;est atteinte que dans la circonstance d\u00e9g\u00e9n\u00e9r\u00e9e o\u00f9 l&rsquo;ensemble des observations sont strictement identiques entre elles (<em>x<sub>1<\/sub> = x<sub>2<\/sub> = &#8230; = x<sub>n<\/sub><\/em>), t\u00e9moignant de la dispersion nulle de la distribution.<\/p>\n<h3>1.2 Propri\u00e9t\u00e9s multiplicatives et invariance d&rsquo;\u00e9chelle<\/h3>\n<p>L&rsquo;une des propri\u00e9t\u00e9s structurales les plus remarquables de la moyenne g\u00e9om\u00e9trique r\u00e9side dans son ad\u00e9quation parfaite aux processus gouvern\u00e9s par des m\u00e9canismes g\u00e9n\u00e9rateurs multiplicatifs. Contrairement \u00e0 la moyenne arithm\u00e9tique, qui postule un univers additif o\u00f9 chaque incr\u00e9ment absolu conserve la m\u00eame signification quelle que soit l&rsquo;amplitude du niveau de d\u00e9part, la moyenne g\u00e9om\u00e9trique analyse les variations relatives, les taux d&rsquo;accroissement et les facteurs de proportionnalit\u00e9.<\/p>\n<p>Cette nature multiplicative induit une propri\u00e9t\u00e9 statistique cruciale : l&rsquo;invariance face au changement d&rsquo;\u00e9chelle proportionnel, \u00e9galement qualifi\u00e9e d&rsquo;homog\u00e9n\u00e9it\u00e9 de degr\u00e9 un. Si l&rsquo;on multiplie l&rsquo;ensemble des \u00e9l\u00e9ments d&rsquo;un vecteur exp\u00e9rimental par une constante positive arbitraire <em>k<\/em>, la moyenne g\u00e9om\u00e9trique de la nouvelle s\u00e9rie r\u00e9sultante est rigoureusement \u00e9gale \u00e0 la moyenne g\u00e9om\u00e9trique originale multipli\u00e9e par cette m\u00eame constante <em>k<\/em>. De mani\u00e8re encore plus significative, si l&rsquo;on compare deux s\u00e9ries de donn\u00e9es mesur\u00e9es dans des unit\u00e9s m\u00e9triques distinctes, le ratio de leurs moyennes g\u00e9om\u00e9triques demeure strictement invariant, ce qui n&rsquo;est nullement garanti par la moyenne arithm\u00e9tique standard.<\/p>\n<p>Par ailleurs, la moyenne g\u00e9om\u00e9trique pr\u00e9sente une r\u00e9silience math\u00e9matique sup\u00e9rieure face aux valeurs extr\u00eames positives (les &laquo; valeurs aberrantes &raquo; ou <em>outliers<\/em> \u00e0 queue lourde). Dans la mesure o\u00f9 la transformation logarithmique sous-jacente comprime l&rsquo;amplitude des grands nombres tout en dilatant l&rsquo;intervalle des valeurs proches de z\u00e9ro, un point d&rsquo;observation anormalement \u00e9lev\u00e9 n&rsquo;exercera pas sur l&rsquo;estimation globale la force de levier d\u00e9mesur\u00e9e qu&rsquo;il imposerait \u00e0 une moyenne arithm\u00e9tique. Cette caract\u00e9ristique conf\u00e8re \u00e0 l&rsquo;estimateur g\u00e9om\u00e9trique une robustesse relative tr\u00e8s appr\u00e9ci\u00e9e lors de l&rsquo;\u00e9tude de ph\u00e9nom\u00e8nes physiques ou psychologiques soumis \u00e0 de fortes variations intermittentes.<\/p>\n<h3>1.3 Justification du passage par les logarithmes en calcul num\u00e9rique<\/h3>\n<p>Sur le plan de l&rsquo;informatique th\u00e9orique et de l&rsquo;architecture mat\u00e9rielle des processeurs, l&rsquo;\u00e9valuation na\u00efve d&rsquo;un produit continu de <em>n<\/em> nombres selon la formule \u00e9l\u00e9mentaire <em>( &prod; x<sub>i<\/sub> )<sup>1\/n<\/sup><\/em> m\u00e8ne in\u00e9luctablement \u00e0 un \u00e9chec algorithmique sur des cohortes de taille mod\u00e9r\u00e9e ou grande. En effet, selon le standard international <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/standards.ieee.org\/ieee\/754\/6267\/\">IEEE 754<\/a> pour l&rsquo;arithm\u00e9tique en virgule flottante \u00e0 double pr\u00e9cision, les nombres r\u00e9els ne peuvent d\u00e9passer une limite sup\u00e9rieure de l&rsquo;ordre de <em>1.797693 &times; 10<sup>308<\/sup><\/em>.<\/p>\n<p>D\u00e8s lors que l&rsquo;on manipule, par exemple, un vecteur compos\u00e9 de seulement quelques centaines d&rsquo;observations d&rsquo;une valeur moyenne de 50, le produit accumul\u00e9 franchit instantan\u00e9ment cette borne physique, d\u00e9clenchant un d\u00e9passement de capacit\u00e9 arithm\u00e9tique irr\u00e9m\u00e9diable, d\u00e9sign\u00e9 techniquement sous le terme de <em>d\u00e9passement vers l&rsquo;infini<\/em> ou <strong>overflow<\/strong> arithm\u00e9tique. Dans ce cas de figure, l&rsquo;interpr\u00e9teur R substitue au produit la constante <em>Inf<\/em>, et l&rsquo;extraction subs\u00e9quente de la racine n-i\u00e8me \u00e9choue en renvoyant invariablement <em>Inf<\/em> ou <em>NaN<\/em>, d\u00e9truisant toute possibilit\u00e9 d&rsquo;inf\u00e9rence statistique.<\/p>\n<p>La transformation par le logarithme n\u00e9p\u00e9rien r\u00e9sout ce probl\u00e8me d&rsquo;ing\u00e9nierie logicielle avec une \u00e9l\u00e9gance absolue. En substituant \u00e0 l&rsquo;explosion multiplicative une somme de logarithmes, les magnitudes num\u00e9riques demeurent cantonn\u00e9es dans des plages d&rsquo;amplitude parfaitement ma\u00eetris\u00e9es. Le calcul de la somme <em>&sum; ln(x<sub>i<\/sub>)<\/em> s&rsquo;ex\u00e9cute avec une remarquable stabilit\u00e9 computationnelle, limitant au maximum les erreurs de troncature et d&rsquo;arrondi machine. Une fois le barycentre obtenu dans le domaine transform\u00e9 par simple division par <em>n<\/em>, l&rsquo;application finale de l&rsquo;op\u00e9rateur exponentiel <em>exp()<\/em> restitue la valeur \u00e0 l&rsquo;\u00e9chelle naturelle sans jamais fr\u00f4ler les fronti\u00e8res de saturation des registres m\u00e9moires du microprocesseur.<\/p>\n<h2>2. Pertinence de la moyenne g\u00e9om\u00e9trique en psychologie quantitative et sciences cognitives<\/h2>\n<h3>2.1 Analyse des temps de r\u00e9action et lois psychophysiques<\/h3>\n<p>Le champ exp\u00e9rimental de la psychologie cognitive et des neurosciences comportementales mobilise massivement l&rsquo;analyse des chronom\u00e9tries mentales. Qu&rsquo;il s&rsquo;agisse de mesurer la vitesse de d\u00e9tection d&rsquo;un stimulus visuel, le d\u00e9lai de s\u00e9lection d&rsquo;une r\u00e9ponse motrice dans une t\u00e2che d&rsquo;inhibition comportementale (comme la t\u00e2che de Stroop ou le paradigme de Simon), ou encore la vitesse de traitement s\u00e9mantique, la distribution empirique des temps de r\u00e9action ne suit pratiquement jamais une distribution normale gaussienne. Au contraire, elle exhibe une asym\u00e9trie positive marqu\u00e9e, caract\u00e9ris\u00e9e par une accumulation rapide de latences minimales physiologiques et une longue queue de distribution s&rsquo;\u00e9tirant vers des latences tr\u00e8s \u00e9lev\u00e9es.<\/p>\n<p>La litt\u00e9rature en psychom\u00e9trie computationnelle d\u00e9montre que ces latences sont remarquablement bien ajust\u00e9es par des lois de distribution log-normales ou des lois d&rsquo;ex-Gaussienne. Dans le cadre d&rsquo;un mod\u00e8le log-normal, la moyenne g\u00e9om\u00e9trique des temps de r\u00e9ponse repr\u00e9sente rigoureusement l&rsquo;estimateur de la m\u00e9diane de la distribution sous-jacente, fournissant le param\u00e8tre d&rsquo;\u00e9chelle le plus fid\u00e8le pour qualifier la performance cognitive typique d&rsquo;un participant sans distorsion due \u00e0 d&rsquo;occasionnels d\u00e9crochages attentionnels.<\/p>\n<p>De surcro\u00eet, cette approche s&rsquo;inscrit en continuit\u00e9 directe avec la <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Loi_de_Weber-Fechner\">loi de Weber-Fechner<\/a>, pierre angulaire de la psychophysique classique. Selon cette loi, la sensation subjective psychologique varie proportionnellement au logarithme de l&rsquo;intensit\u00e9 physique du stimulus objectif administr\u00e9 :<\/p>\n<p><em>S = k &times; ln(I \/ I<sub>0<\/sub>)<\/em><\/p>\n<p>Lorsqu&rsquo;un chercheur souhaite synth\u00e9tiser les seuils diff\u00e9rentiels de perception sensorielle &mdash; par exemple l&rsquo;intensit\u00e9 lumineuse minimale discernable ou l&rsquo;amplitude acoustique per\u00e7ue &mdash;, le calcul d&rsquo;une moyenne arithm\u00e9tique d\u00e9nature profond\u00e9ment le substrat psychologique de la mesure. Seule la moyenne g\u00e9om\u00e9trique respecte l&rsquo;homologie entre l&rsquo;\u00e9chelle physique exponentielle et la grille perceptuelle humaine logarithmique.<\/p>\n<h3>2.2 \u00c9chelles de r\u00e9ponse et ratios psychom\u00e9triques<\/h3>\n<p>Au-del\u00e0 de la psychophysique des seuils, la construction d&rsquo;\u00e9chelles de mesure subjectives en sciences sociales et comportementales s&rsquo;appuie fr\u00e9quemment sur la m\u00e9thode d&rsquo;estimation de magnitude popularis\u00e9e par S. S. Stevens. Dans ces protocoles d&rsquo;\u00e9valuation psychologique directe, les sujets ne r\u00e9pondent pas via des \u00e9chelles d&rsquo;intervalles contraintes de type Likert (de 1 \u00e0 7), mais assignent librement des valeurs num\u00e9riques arbitraires dont les rapports mutuels refl\u00e8tent leurs jugements internes d&rsquo;intensit\u00e9 ou de valence.<\/p>\n<p>Pour agr\u00e9ger de tels jugements entre plusieurs participants, la moyenne arithm\u00e9tique g\u00e9n\u00e8re des aberrations statistiques majeures. Si un sujet A juge un stimulus deux fois plus stressant qu&rsquo;un r\u00e9f\u00e9rentiel (ratio = 2) et qu&rsquo;un sujet B le juge deux fois moins stressant (ratio = 0.5), leur ressenti moyen combin\u00e9 devrait logiquement refl\u00e9ter une neutralit\u00e9 relative (ratio = 1). Or, la moyenne arithm\u00e9tique de 2 et de 0.5 s&rsquo;\u00e9tablit \u00e0 1.25, introduisant un biais positif artificiel non n\u00e9gligeable. En revanche, la moyenne g\u00e9om\u00e9trique de 2 et 0.5 produit avec une parfaite exactitude :<\/p>\n<p><em>( 2 &times; 0.5 )<sup>1\/2<\/sup> = ( 1 )<sup>1\/2<\/sup> = 1.0<\/em><\/p>\n<p>L&rsquo;utilisation de la moyenne g\u00e9om\u00e9trique s&rsquo;impose \u00e9galement lors de la standardisation et de l&rsquo;int\u00e9gration de scores composites composites issus de batteries neuropsychologiques pluridisciplinaires. Lorsque des sous-tests \u00e9valuant la flexibilit\u00e9 ex\u00e9cutive, la m\u00e9moire \u00e9pisodique et l&#8217;empan visuo-spatial poss\u00e8dent des m\u00e9triques intrins\u00e8ques incommensurables, la synth\u00e8se par moyenne g\u00e9om\u00e9trique garantit que l&rsquo;indice de performance globale pr\u00e9serve la contribution relative de chaque domaine cognitif sans \u00e9crasement par les \u00e9chelles \u00e0 forte variance brute.<\/p>\n<h3>2.3 Mod\u00e9lisation des trajectoires d&rsquo;apprentissage et taux de variation<\/h3>\n<p>L&rsquo;\u00e9valuation quantitative du progr\u00e8s comportemental au fil des sessions d&rsquo;entra\u00eenement moteur ou d&rsquo;acquisition de connaissances rel\u00e8ve intrins\u00e8quement de mod\u00e8les dynamiques non lin\u00e9aires. Selon la c\u00e9l\u00e8bre loi de puissance de l&rsquo;apprentissage formalis\u00e9e par Newell et Rosenbloom, le temps n\u00e9cessaire pour ex\u00e9cuter une t\u00e2che cognitive complexe d\u00e9cro\u00eet comme une fonction de puissance du nombre d&rsquo;essais pr\u00e9alablement accomplis :<\/p>\n<p><em>T = a &times; N<sup>-b<\/sup><\/em><\/p>\n<p>o\u00f9 <em>b<\/em> symbolise le taux d&rsquo;apprentissage de l&rsquo;individu. Ce ph\u00e9nom\u00e8ne indique que chaque r\u00e9p\u00e9tition procure un gain relatif &mdash; un pourcentage de r\u00e9duction de la latence &mdash; plut\u00f4t qu&rsquo;une diminution temporelle constante exprim\u00e9e en millisecondes fixes.<\/p>\n<p>Lorsque les chercheurs analysent longitudinalement des cohortes d&rsquo;apprentissage, la d\u00e9termination du rythme moyen de progression n\u00e9cessite imp\u00e9rativement le calcul de moyennes g\u00e9om\u00e9triques appliqu\u00e9es aux ratios d&rsquo;am\u00e9lioration successifs <em>T<sub>t<\/sub> \/ T<sub>t-1<\/sub><\/em>. Proc\u00e9der par moyenne arithm\u00e9tique sur de tels taux de changement induit le fameux paradoxe de la moyenne des pourcentages, aboutissant \u00e0 une surestimation syst\u00e9matique de la vitesse d&rsquo;acquisition des comp\u00e9tences cognitives.<\/p>\n<p>De m\u00eame, dans les protocoles d&rsquo;investigation de la m\u00e9moire \u00e0 long terme explorant la courbe de l&rsquo;oubli formul\u00e9e initialement par Hermann Ebbinghaus, la r\u00e9tention mn\u00e9sique s&rsquo;\u00e9rode selon un facteur de d\u00e9clin multiplicatif r\u00e9current par unit\u00e9 de temps. La quantification rigoureuse du coefficient de r\u00e9tention moyen au sein d&rsquo;une population n\u00e9cessite par cons\u00e9quent l&rsquo;agr\u00e9gation g\u00e9om\u00e9trique des indices de persistance mn\u00e9sique interm\u00e9diaires.<\/p>\n<h2>3. La syntaxe fondamentale de base dans R : exp(mean(log(x)))<\/h2>\n<h3>3.1 D\u00e9composition fonctionnelle de l&rsquo;instruction primitive<\/h3>\n<p>L&rsquo;environnement de base de <strong>R<\/strong> (souvent d\u00e9sign\u00e9 sous le vocable de <em>base R<\/em>) privil\u00e9gie une philosophie de programmation fonctionnelle o\u00f9 la modularit\u00e9 des op\u00e9rations primitives pr\u00e9vaut sur la multiplication d&rsquo;op\u00e9rateurs sp\u00e9cialis\u00e9s redondants. Ainsi, pour ex\u00e9cuter le calcul d&rsquo;une moyenne g\u00e9om\u00e9trique sur un objet vectoriel d\u00e9sign\u00e9 par <em>x<\/em>, l&rsquo;idiome universel et le plus direct repose sur l&rsquo;imbrication tripartite :<\/p>\n<p><code>exp(mean(log(x)))<\/code><\/p>\n<p>Examinons avec pr\u00e9cision la m\u00e9canique interne de cette expression lors de son \u00e9valuation s\u00e9quentielle par l&rsquo;interpr\u00e9teur R :<\/p>\n<ul>\n<li><strong>La primitive <code>log(x)<\/code><\/strong> : Cette fonction applique l&rsquo;op\u00e9rateur logarithmique n\u00e9p\u00e9rien (base <em>e &approx; 2.718282<\/em>) \u00e0 chaque \u00e9l\u00e9ment constitutif du vecteur atomique num\u00e9rique <em>x<\/em>. En vertu du polymorphisme natif de R, cette op\u00e9ration s&rsquo;effectue de fa\u00e7on enti\u00e8rement vectoris\u00e9e, appelant directement en arri\u00e8re-plan des routines compil\u00e9es en langage C issues de la biblioth\u00e8que standard <code>mathlib<\/code>.<\/li>\n<li><strong>L&rsquo;op\u00e9rateur <code>mean(...)<\/code><\/strong> : Il re\u00e7oit en entr\u00e9e le vecteur num\u00e9rique nouvellement instanci\u00e9 contenant les logarithmes des donn\u00e9es d&rsquo;origine. La fonction en calcule le centre de gravit\u00e9 additif &mdash; c&rsquo;est-\u00e0-dire la somme de l&rsquo;ensemble des termes divis\u00e9e par la longueur effective de la structure &mdash; et retourne un unique scalaire repr\u00e9sentant la moyenne arithm\u00e9tique de l&rsquo;espace transform\u00e9.<\/li>\n<li><strong>La fonction <code>exp(...)<\/code><\/strong> : Enfin, l&rsquo;exponentielle est appliqu\u00e9e \u00e0 ce scalaire r\u00e9sultant. Elle projette \u00e0 rebours cette valeur vers le syst\u00e8me de coordonn\u00e9es initial de la mesure, d\u00e9livrant rigoureusement l&rsquo;estimateur de la moyenne g\u00e9om\u00e9trique.<\/li>\n<\/ul>\n<h3>3.2 Construction d&rsquo;une fonction personnalis\u00e9e d\u00e9di\u00e9e<\/h3>\n<p>Bien que la frappe r\u00e9p\u00e9t\u00e9e de l&rsquo;instruction primitive <code>exp(mean(log(x)))<\/code> soit tout \u00e0 fait envisageable pour des manipulations interactives en console, les exigences d&rsquo;ing\u00e9nierie logicielle, de lisibilit\u00e9 algorithmique et de reproductibilit\u00e9 de l&rsquo;analyse plaident vigoureusement en faveur de son encapsulation au sein d&rsquo;une fonction R modulaire et r\u00e9utilisable. Nous pouvons formaliser cette d\u00e9finition selon la syntaxe suivante :<\/p>\n<p><code>calculer_moyenne_geometrique &lt;- function(x) {<br \/>\n&nbsp;&nbsp;return(exp(mean(log(x))))<br \/>\n}<\/code><\/p>\n<p>L&rsquo;encapsulation fonctionnelle pr\u00e9sente l&rsquo;immense avantage de normaliser les flux de travail analytiques. En assignant un nom explicite \u00e0 l&rsquo;op\u00e9ration statistique, le chercheur s&rsquo;affranchit des erreurs d&rsquo;inattention syntaxique lors de scripts d&rsquo;analyse volumineux, documente implicitement l&rsquo;intention m\u00e9thodologique du code et facilite la maintenance conjointe des programmes de traitement de donn\u00e9es.<\/p>\n<h3>3.3 Efficience computationnelle et vectorisation native<\/h3>\n<p>L&rsquo;un des atouts distinctifs de l&rsquo;impl\u00e9mentation <code>exp(mean(log(x)))<\/code> r\u00e9side dans son ad\u00e9quation totale avec le mod\u00e8le de conception computationnelle de R. Dans la communaut\u00e9 des d\u00e9veloppeurs, il est notoirement document\u00e9 que les boucles it\u00e9ratives s\u00e9quentielles (de type <code>for<\/code> ou <code>while<\/code>) peuvent s&rsquo;accompagner d&rsquo;un surco\u00fbt substantiel en temps d&rsquo;horloge machine lorsqu&rsquo;elles sont \u00e9crites directement au niveau de l&rsquo;interpr\u00e9teur de script, en raison de l&rsquo;\u00e9valuation dynamique permanente des types de donn\u00e9es.<\/p>\n<p>\u00c0 l&rsquo;inverse, l&rsquo;expression <code>exp(mean(log(x)))<\/code> tire un b\u00e9n\u00e9fice maximal de la <strong>vectorisation native<\/strong>. Les op\u00e9rations de transformation logarithmique, de r\u00e9duction de somme par l&rsquo;algorithme d&rsquo;addition compens\u00e9e (sommation de Kahan ou accumulation en registres \u00e9tendus) et d&rsquo;\u00e9l\u00e9vation \u00e0 l&rsquo;exponentielle s&rsquo;op\u00e8rent au niveau le plus profond de l&rsquo;ex\u00e9cutable R, via des appels \u00e0 des blocs de code C et Fortran hautement optimis\u00e9s.<\/p>\n<p>Sur des vecteurs de donn\u00e9es massifs comprenant plusieurs dizaines de millions d&rsquo;observations &mdash; situations fr\u00e9quentes lors du profilage de donn\u00e9es \u00e9lectrophysiologiques continues ou de trajectoires oculom\u00e9triques (<em>eye-tracking<\/em>) &mdash;, cette formulation primitive surpasse de plusieurs ordres de grandeur toute logique it\u00e9rative bas\u00e9e sur des produits cumulatifs manuels, tout en maintenant une empreinte m\u00e9moire vive extr\u00eamement contenue.<\/p>\n<h2>4. Exemple 1 : Calcul de la moyenne g\u00e9om\u00e9trique pour un vecteur simple<\/h2>\n<h3>4.1 D\u00e9finition et structure du vecteur num\u00e9rique d&rsquo;exp\u00e9rimentation<\/h3>\n<p>Afin de mat\u00e9rialiser concr\u00e8tement la d\u00e9marche au travers d&rsquo;un sc\u00e9nario op\u00e9ratoire contr\u00f4l\u00e9, construisons un cas exp\u00e9rimental type issu de la psychom\u00e9trie cognitive. Supposons une s\u00e9rie d&rsquo;essais chronom\u00e9tr\u00e9s \u00e9valuant le temps d&rsquo;identification d&rsquo;une cible visuelle ambig&uuml;e par un sujet adulte, les latences \u00e9tant enregistr\u00e9es en dixi\u00e8mes de seconde : 4, 8, 9, 9, 12, 14 et 17.<\/p>\n<p>Nous instancions ce vecteur au sein de la m\u00e9moire de travail de R \u00e0 l&rsquo;aide de l&rsquo;instruction fondamentale d&rsquo;assignation et du constructeur de concat\u00e9nation <code>c()<\/code> :<\/p>\n<p><code>latences &lt;- c(4, 8, 9, 9, 12, 14, 17)<\/code><\/p>\n<p>Pr\u00e9alablement \u00e0 toute d\u00e9marche de calcul, le diagnostic de la structure atomique de l&rsquo;objet est une pr\u00e9caution m\u00e9thodologique d&rsquo;usage. L&rsquo;application des commandes de v\u00e9rification intrins\u00e8que confirme la nature du conteneur de donn\u00e9es :<\/p>\n<p><code>is.numeric(latences)<br \/>\ntypeof(latences)<br \/>\nlength(latences)<\/code><\/p>\n<p>Le diagnostic confirme que <code>latences<\/code> constitue un vecteur atomique de type &laquo; double &raquo; (r\u00e9el \u00e0 virgule flottante) compos\u00e9 d&rsquo;un effectif d&rsquo;\u00e9chantillon rigoureusement \u00e9tabli \u00e0 <em>n = 7<\/em> observations valides.<\/p>\n<h3>4.2 Ex\u00e9cution directe de la commande et r\u00e9sultat num\u00e9rique<\/h3>\n<p>Nous soumettons \u00e0 pr\u00e9sent ce vecteur \u00e0 l&rsquo;instruction de calcul g\u00e9om\u00e9trique direct dans la console R :<\/p>\n<p><code>moyenne_geom &lt;- exp(mean(log(latences)))<br \/>\nprint(moyenne_geom)<\/code><\/p>\n<p>L&rsquo;ex\u00e9cution de cette commande fournit la valeur suivante avec la pr\u00e9cision standard du formatage de R :<\/p>\n<p><code>[1] 9.579479<\/code><\/p>\n<p>Pour attester math\u00e9matiquement de la v\u00e9racit\u00e9 et de la conformit\u00e9 algorithmique du r\u00e9sultat fourni par le pipeline logarithmique, nous pouvons proc\u00e9der \u00e0 la v\u00e9rification manuelle par le produit brut, dans la mesure o\u00f9 notre effectif de 7 \u00e9l\u00e9ments est suffisamment r\u00e9duit pour \u00e9carter tout risque de saturation arithm\u00e9tique :<\/p>\n<p><code>produit_brut &lt;- prod(latences)<br \/>\nvaleur_temoin &lt;- produit_brut^(1 \/ length(latences))<br \/>\nprint(valeur_temoin)<\/code><\/p>\n<p>La commande de contr\u00f4le renvoie sans ambigu\u00eft\u00e9 <code>[1] 9.579479<\/code>. La concordance num\u00e9rique absolue entre les deux m\u00e9thodes confirme l&rsquo;exactitude de l&rsquo;estimation tout en attestant de la viabilit\u00e9 pratique du raccourci logarithmique.<\/p>\n<h3>4.3 Interpr\u00e9tation statistique comparative de l&rsquo;estimation<\/h3>\n<p>L&rsquo;int\u00e9r\u00eat de ce premier exemple s&rsquo;\u00e9claire pleinement lorsque l&rsquo;on confronte la moyenne g\u00e9om\u00e9trique obtenue aux autres indicateurs statistiques de tendance centrale conventionnels sur le m\u00eame vecteur de donn\u00e9es :<\/p>\n<p><code>moyenne_arith &lt;- mean(latences)<br \/>\nvaleur_mediane &lt;- median(latences)<\/code><\/p>\n<p>L&rsquo;affichage de ces diff\u00e9rentes estimations synth\u00e9tiques met en lumi\u00e8re la triangulation m\u00e9trique suivante :<\/p>\n<ul>\n<li><strong>M\u00e9diane<\/strong> : <code>9.000000<\/code><\/li>\n<li><strong>Moyenne g\u00e9om\u00e9trique<\/strong> : <code>9.579479<\/code><\/li>\n<li><strong>Moyenne arithm\u00e9tique<\/strong> : <code>10.428571<\/code><\/li>\n<\/ul>\n<p>Cette confrontation illustre \u00e0 merveille la position r\u00e9gulatrice de la moyenne g\u00e9om\u00e9trique au sein d&rsquo;une distribution pr\u00e9sentant une d\u00e9viation vers la droite (illustr\u00e9e par les observations terminales 14 et 17). La moyenne arithm\u00e9tique (10.43) se trouve fortement tract\u00e9e vers le haut par les deux valeurs les plus lentes de l&rsquo;\u00e9chantillon. La m\u00e9diane (9.00) se focalise exclusivement sur le rang central ordinal, ignorant compl\u00e8tement la magnitude exacte des valeurs p\u00e9riph\u00e9riques.<\/p>\n<p>La moyenne g\u00e9om\u00e9trique (9.58) s&rsquo;installe dans une position interm\u00e9diaire parfaitement proportionn\u00e9e. Elle prend en consid\u00e9ration l&rsquo;ensemble des magnitudes num\u00e9riques de l&rsquo;\u00e9chantillon tout en temp\u00e9rant la force de distorsion des valeurs \u00e9lev\u00e9es gr\u00e2ce \u00e0 la contraction logarithmique. Elle offre ainsi l&rsquo;\u00e9valuation la plus fid\u00e8le de la latence unitaire typique du participant sous une hypoth\u00e8se d&rsquo;accumulation temporelle proportionnelle.<\/p>\n<h2>5. Gestion des contraintes num\u00e9riques : le d\u00e9fi des z\u00e9ros et des valeurs n\u00e9gatives<\/h2>\n<h3>5.1 Ind\u00e9finition math\u00e9matique du logarithme aux limites r\u00e9elles<\/h3>\n<p>Le talon d&rsquo;Achille de la moyenne g\u00e9om\u00e9trique calcul\u00e9e par la voie logarithmique r\u00e9side incontestablement dans les contraintes de d\u00e9finition du domaine de la fonction <code>log(x)<\/code> dans le corps des nombres r\u00e9els. La fonction logarithmique r\u00e9elle n&rsquo;est rigoureusement d\u00e9finie que sur l&rsquo;intervalle ouvert <em>]0, +&infin;[<\/em>.<\/p>\n<p>Lorsque la valeur <em>x = 0<\/em> est transmise \u00e0 l&rsquo;instruction <code>log()<\/code> de R, le moteur de calcul num\u00e9rique retourne la constante sp\u00e9ciale <code>-Inf<\/code> (moins l&rsquo;infini), conform\u00e9ment \u00e0 la limite analytique de la fonction quand son argument tend vers z\u00e9ro par valeurs positives. Si un vecteur contient ne serait-ce qu&rsquo;une seule valeur nulle, la somme calcul\u00e9e par <code>mean()<\/code> devient in\u00e9vitablement \u00e9gale \u00e0 <code>-Inf<\/code>. Lors de l&rsquo;\u00e9valuation finale, l&rsquo;exponentielle de moins l&rsquo;infini produit :<\/p>\n<p><code>exp(-Inf) = 0<\/code><\/p>\n<p>Bien que le produit th\u00e9orique continu <em>&prod; x<sub>i<\/sub><\/em> incluant un z\u00e9ro soit effectivement \u00e9gal \u00e0 z\u00e9ro, qualifier la tendance centrale d&rsquo;un groupe d&rsquo;individus de &laquo; nulle &raquo; simplement parce qu&rsquo;un individu unique a obtenu un score de z\u00e9ro constitue une faillite m\u00e9thodologique d&rsquo;agr\u00e9gation d&rsquo;information.<\/p>\n<p>La situation devient encore plus critique en pr\u00e9sence de nombres strictement n\u00e9gatifs (<em>x &lt; 0<\/em>). L&rsquo;\u00e9valuation de <code>log(x)<\/code> pour <em>x &lt; 0<\/em> dans le domaine r\u00e9el est ind\u00e9finie. L&rsquo;interpr\u00e9teur R interrompt le cours r\u00e9gulier du calcul en \u00e9mettant un avertissement explicite (<em>Warning: NaNs produced<\/em>) et consigne la valeur <code>NaN<\/code> (<em>Not a Number<\/em>). Ce marqueur de non-d\u00e9finition contamine imm\u00e9diatement l&rsquo;int\u00e9gralit\u00e9 des calculs subs\u00e9quents, r\u00e9duisant \u00e0 n\u00e9ant la tentative d&rsquo;estimation.<\/p>\n<h3>5.2 Implications m\u00e9thodologiques dans le traitement des donn\u00e9es empiriques<\/h3>\n<p>Dans la pratique de la recherche exp\u00e9rimentale, la pr\u00e9sence de valeurs nulles ou n\u00e9gatives requiert un examen diagnostique approfondi plut\u00f4t qu&rsquo;un traitement aveugle. Il est primordial de distinguer sur le plan conceptuel :<\/p>\n<ul>\n<li><strong>Les z\u00e9ros structurels<\/strong> : Il s&rsquo;agit d&rsquo;occurrences r\u00e9elles o\u00f9 le ph\u00e9nom\u00e8ne mesur\u00e9 est physiologiquement ou psychologiquement nul. Par exemple, le nombre d&rsquo;erreurs commises dans une t\u00e2che de reconnaissance simple peut \u00eatre authentiquement de z\u00e9ro pour une fraction des participants.<\/li>\n<li><strong>Les z\u00e9ros instrumentaux ou art\u00e9factuels<\/strong> : Ils proviennent de la pr\u00e9cision finie de l&rsquo;instrument d&rsquo;enregistrement, de l&rsquo;arrondi machine ou du d\u00e9passement du seuil de sensibilit\u00e9 inf\u00e9rieur du d\u00e9tecteur.<\/li>\n<li><strong>Les valeurs n\u00e9gatives relatives<\/strong> : Fr\u00e9quemment rencontr\u00e9es dans les calculs de scores diff\u00e9rentiels (par exemple un score de soustraction pr\u00e9-test\/post-test ou une diff\u00e9rence de potentiel \u00e9voqu\u00e9 EEG), ces valeurs ne repr\u00e9sentent pas des magnitudes nulles au sens absolu, mais des r\u00e9gressions ou des polarisations relatives.<\/li>\n<\/ul>\n<p>\u00c9liminer purement et simplement les participants affichant un score nul ou n\u00e9gatif induit un <strong>biais d&rsquo;attrition statistique<\/strong> majeur. Cette troncature artificielle modifie drastiquement la composition de l&rsquo;\u00e9chantillon, tronque la variance naturelle du ph\u00e9nom\u00e8ne et vicie l&rsquo;inf\u00e9rence causale en violant l&rsquo;hypoth\u00e8se de repr\u00e9sentativit\u00e9 de l&rsquo;\u00e9chantillon probabiliste.<\/p>\n<h3>5.3 Strat\u00e9gies d&rsquo;ajustement : filtrage conditionnel versus translation constante<\/h3>\n<p>Face \u00e0 ce verrou m\u00e9thodologique, les analystes de donn\u00e9es d\u00e9ploient principalement deux tactiques algorithmiques divergentes, chacune poss\u00e9dant ses fondements et ses limitations :<\/p>\n<p><strong>La strat\u00e9gie de filtrage conditionnel<\/strong> consiste \u00e0 restreindre l&rsquo;\u00e9valuation de la moyenne g\u00e9om\u00e9trique aux seules unit\u00e9s d&rsquo;observation strictement positives au moyen d&rsquo;un sous-ensemble logique (<em>x &gt; 0<\/em>). Cette option est \u00e9pist\u00e9mologiquement d\u00e9fendable lorsque le chercheur red\u00e9finit sa question de recherche : &laquo; Quelle est la moyenne g\u00e9om\u00e9trique de la magnitude de l&rsquo;effet <em>sachant<\/em> que l&rsquo;effet s&rsquo;est manifest\u00e9 ? &raquo;. Elle exige toutefois de documenter rigoureusement la r\u00e9duction d&rsquo;effectif r\u00e9sultante.<\/p>\n<p><strong>La technique de translation scalaire<\/strong> (souvent d\u00e9sign\u00e9e sous le terme de pseudo-compte ou correction de type <em>log(x + c)<\/em>) consiste \u00e0 additionner une constante positive <em>c<\/em> \u00e0 l&rsquo;ensemble des donn\u00e9es avant le calcul logarithmique, puis \u00e0 soustraire cette m\u00eame constante apr\u00e8s r\u00e9tro-transformation exponentielle. En \u00e9cologie quantitative et en bioinformatique, la valeur <em>c = 1<\/em> est fr\u00e9quemment adopt\u00e9e, donnant naissance \u00e0 la formulation :<\/p>\n<p><em>G<sub>ajustee<\/sub> = exp( mean( log( x + 1 ) ) ) &#8211; 1<\/em><\/p>\n<p>N\u00e9anmoins, la prudence s&rsquo;impose : l&rsquo;adjonction d&rsquo;une constante arbitraire alt\u00e8re l&rsquo;invariance d&rsquo;\u00e9chelle de la moyenne g\u00e9om\u00e9trique. L&rsquo;estimation r\u00e9sultante d\u00e9pend intrins\u00e8quement de la valeur assign\u00e9e \u00e0 <em>c<\/em> relative \u00e0 la dispersion des donn\u00e9es. Une constante mal calibr\u00e9e peut lisser artificiellement les ratios diff\u00e9rentiels et corrompre les comparaisons d&rsquo;amplitudes entre groupes exp\u00e9rimentaux.<\/p>\n<h2>6. Exemple 2 : Traitement des vecteurs contenant des z\u00e9ros et des nombres n\u00e9gatifs<\/h2>\n<h3>6.1 Instanciation d&rsquo;un vecteur contamin\u00e9 par des anomalies<\/h3>\n<p>Pour illustrer concr\u00e8tement la d\u00e9faillance des pipelines de calcul na\u00effs et formaliser les rem\u00e9diations programmatiques dans R, configurons un vecteur empirique incluant intentionnellement des valeurs probl\u00e9matiques :<\/p>\n<p><code>x_contamine &lt;- c(4, 8, 9, 9, 12, 14, 17, 0, -4)<\/code><\/p>\n<p>Ce jeu de donn\u00e9es incorpore les sept valeurs valides de notre exp\u00e9rimentation initiale, auxquelles sont adjointes un score nul (pouvant traduire une absence totale de r\u00e9ponse) et une valeur n\u00e9gative (r\u00e9sultant par exemple d&rsquo;une erreur d&rsquo;enregistrement de synchronisation temporelle).<\/p>\n<p>Tentons d&rsquo;appliquer imm\u00e9diatement l&rsquo;instruction primitive non supervis\u00e9e :<\/p>\n<p><code>exp(mean(log(x_contamine)))<\/code><\/p>\n<p>La console R r\u00e9agit instantan\u00e9ment en renvoyant le message d&rsquo;alerte symptomatique :<\/p>\n<p><code>Warning message:<br \/>\nIn log(x_contamine) : NaNs produits<br \/>\n[1] NaN<\/code><\/p>\n<p>Le pipeline statistique s&rsquo;est int\u00e9gralement bris\u00e9 : l&rsquo;incapacit\u00e9 de <code>log()<\/code> \u00e0 \u00e9valuer <code>-4<\/code> a g\u00e9n\u00e9r\u00e9 un <code>NaN<\/code> qui a invalid\u00e9 la somme op\u00e9r\u00e9e par <code>mean()<\/code>, r\u00e9duisant la totalit\u00e9 de l&rsquo;analyse \u00e0 une valeur ind\u00e9termin\u00e9e.<\/p>\n<h3>6.2 Syntaxe de filtrage par sous-\u00e9chantillonnage logique<\/h3>\n<p>Pour restaurer la continuit\u00e9 op\u00e9rationnelle du calcul sans d\u00e9naturer la m\u00e9trique sur les cas valides, nous mettons en &oelig;uvre une indexation vectorielle conditionnelle au moyen des pr\u00e9dicats bool\u00e9ens natifs de R. L&rsquo;expression de filtrage s&rsquo;\u00e9nonce comme suit :<\/p>\n<p><code>x_filtre &lt;- x_contamine[x_contamine &gt; 0]<\/code><\/p>\n<p>L&rsquo;\u00e9valuation de la condition relationnelle <code>x_contamine &gt; 0<\/code> g\u00e9n\u00e8re un vecteur logique de m\u00eame longueur contenant des bool\u00e9ens <code>TRUE<\/code> pour les entit\u00e9s strictement positives et <code>FALSE<\/code> pour le z\u00e9ro et l&rsquo;entier n\u00e9gatif. Utilis\u00e9 comme s\u00e9lecteur d&rsquo;index entre crochets, il extrait uniquement les sept premiers termes.<\/p>\n<p>D\u00e8s lors, la combinaison directe du filtre et du calcul g\u00e9om\u00e9trique s&rsquo;ex\u00e9cute de fa\u00e7on compacte et s\u00fbre :<\/p>\n<p><code>resultat_corrige &lt;- exp(mean(log(x_contamine[x_contamine &gt; 0])))<br \/>\nprint(resultat_corrige)<\/code><\/p>\n<p>Le r\u00e9sultat obtenu s&rsquo;affiche de nouveau avec exactitude :<\/p>\n<p><code>[1] 9.579479<\/code><\/p>\n<p>Le sous-\u00e9chantillonnage a assaini la structure num\u00e9rique sans exiger la modification manuelle destructive du jeu de donn\u00e9es source.<\/p>\n<h3>6.3 Automatisation robuste au sein d&rsquo;une fonction personnalis\u00e9e<\/h3>\n<p>Afin de transformer cette astuce syntaxique en un standard de travail p\u00e9renne, formalisons une routine algorithmique d\u00e9fensive. Cette fonction comportera un argument param\u00e9trable pour l&rsquo;exclusion des valeurs non positives, tout en \u00e9mettant un rapport de tra\u00e7abilit\u00e9 via le m\u00e9canisme standard <code>warning()<\/code> :<\/p>\n<p><code>moyenne_geom_robuste &lt;- function(x, rm.nonpos = TRUE) {<br \/>\n&nbsp;&nbsp;if (!is.numeric(x)) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;stop(\"L'argument d'entree doit imperativement etre un vecteur numerique.\")<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;indices_invalides &lt;- which(is.na(x) | x &lt;= 0)<br \/>\n&nbsp;&nbsp;if (length(indices_invalides) &gt; 0) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;if (rm.nonpos) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nb_exclus &lt;- length(indices_invalides)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop_exclue &lt;- round((nb_exclus \/ length(x)) * 100, 2)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;warning(paste0(\"Exclusion de \", nb_exclus, \" observation(s) non positives ou manquantes (\", prop_exclue, \"% de l'echantillon).\"))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x &lt;- x[x &gt; 0 &amp; !is.na(x)]<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;} else {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(NaN)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;if (length(x) == 0) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;return(NA)<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;return(exp(mean(log(x))))<br \/>\n}<\/code><\/p>\n<p>Testons cette impl\u00e9mentation sur notre vecteur contamin\u00e9 :<\/p>\n<p><code>moyenne_geom_robuste(x_contamine, rm.nonpos = TRUE)<\/code><\/p>\n<p>La console renvoie l&rsquo;estimation statistique conforme accompagn\u00e9e d&rsquo;un avertissement d&rsquo;audit clair et explicite :<\/p>\n<p><code>Warning message:<br \/>\nIn moyenne_geom_robuste(x_contamine, rm.nonpos = TRUE) :<br \/>\nExclusion de 2 observation(s) non positives ou manquantes (22.22% de l'echantillon).<br \/>\n[1] 9.579479<\/code><\/p>\n<h2>7. Gestion des donn\u00e9es manquantes (NA) et robustesse du calcul<\/h2>\n<h3>7.1 M\u00e9canisme de propagation des valeurs manquantes dans R<\/h3>\n<p>L&rsquo;omission de mesure &mdash; d\u00e9sign\u00e9e dans l&rsquo;architecture interne de R par la constante r\u00e9serv\u00e9e <code>NA<\/code> (<em>Not Available<\/em>) &mdash; constitue une caract\u00e9ristique inh\u00e9rente \u00e0 l&rsquo;investigation empirique sur le vivant. Dans les enqu\u00eates psychom\u00e9triques longitudinales ou les suivis de cohortes comportementales, la pr\u00e9sence de donn\u00e9es manquantes est r\u00e9currente (non-r\u00e9ponse \u00e0 un item de test, d\u00e9connexion fortuite d&rsquo;une \u00e9lectrode de capture, rejet d&rsquo;un essai pour clignement palp\u00e9bral intempestif).<\/p>\n<p>Le langage R g\u00e8re les donn\u00e9es manquantes selon une stricte philosophie de <strong>propagation d&rsquo;incertitude<\/strong>. D\u00e8s lors qu&rsquo;une op\u00e9ration math\u00e9matique implique un terme dont la magnitude est fondamentalement inconnue, le r\u00e9sultat logique de cette op\u00e9ration est lui-m\u00eame inconnu. Par cons\u00e9quent :<\/p>\n<p><code>log(NA)<\/code> renvoie invariablement <code>NA<\/code>.<br \/>\n<code>mean(c(10, 12, NA))<\/code> produit imm\u00e9diatement <code>NA<\/code>.<\/p>\n<p>Si aucune disposition de traitement explicite n&rsquo;est stipul\u00e9e, toute tentative de calcul de la moyenne g\u00e9om\u00e9trique au moyen de la formule canonique <code>exp(mean(log(x)))<\/code> sur une collection de donn\u00e9es comportant le moindre <code>NA<\/code> renverra purement et simplement <code>NA<\/code>.<\/p>\n<h3>7.2 Combinaison s\u00e9quentielle de na.rm et du filtrage de positivit\u00e9<\/h3>\n<p>Pour neutraliser cette propagation d&rsquo;ind\u00e9termination sans alt\u00e9rer la coh\u00e9rence globale de l&rsquo;\u00e9chantillonnage, la fonction primitive <code>mean()<\/code> offre le param\u00e8tre formel <code>na.rm = TRUE<\/code> (pour <em>NA remove<\/em>). Ce commutateur logique intime au moteur R d&rsquo;\u00e9laguer les valeurs manquantes pr\u00e9alablement au calcul de la somme et de r\u00e9ajuster le d\u00e9nominateur au nombre effectif de cas observ\u00e9s.<\/p>\n<p>Toutefois, une vigilance syntaxique majeure s&rsquo;impose lors de l&rsquo;articulation entre le filtrage de positivit\u00e9 et la purge des valeurs manquantes. Si l&rsquo;on \u00e9crit na\u00efvement :<\/p>\n<p><code>exp(mean(log(x[x &gt; 0]), na.rm = TRUE))<\/code><\/p>\n<p>L&rsquo;\u00e9valuation de la condition logique <code>x &gt; 0<\/code> sur une case contenant initialement <code>NA<\/code> produit un <code>NA<\/code> logique dans le masque d&rsquo;indexation. L&rsquo;extraction <code>x[x &gt; 0]<\/code> pr\u00e9serve alors ces <code>NA<\/code> dans le sous-vecteur. Heureusement, la d\u00e9claration conjointe de <code>na.rm = TRUE<\/code> au sein de <code>mean()<\/code> prend en charge l&rsquo;\u00e9limination finale de ces artefacts.<\/p>\n<p>L&rsquo;ordre de composition analytique garantit ainsi que la fonction <code>log()<\/code> ne re\u00e7oit que des entit\u00e9s strictement positives ou des marqueurs <code>NA<\/code>, \u00e9vitant rigoureusement la cr\u00e9ation involontaire de <code>NaN<\/code> arithm\u00e9tiques.<\/p>\n<h3>7.3 D\u00e9veloppement d&rsquo;un op\u00e9rateur de calcul g\u00e9om\u00e9trique universel<\/h3>\n<p>En consolidant l&rsquo;ensemble des contraintes techniques &mdash; contr\u00f4le de positivit\u00e9 stricte, \u00e9limination des omissions <code>NA<\/code> et protection contre les \u00e9chantillons r\u00e9siduels vides &mdash;, nous pouvons \u00e9difier un op\u00e9rateur g\u00e9n\u00e9raliste r\u00e9pondant aux standards les plus rigoureux de la programmation scientifique. Nommons cette fonction <code>gmean_universel<\/code> :<\/p>\n<p><code>gmean_universel &lt;- function(x, na.rm = TRUE, zero.rm = TRUE) {<br \/>\n&nbsp;&nbsp;if (!is.numeric(x) &amp;&amp; !is.logical(x)) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;stop(\"L'argument vectoriel doit etre de nature purement numerique.\")<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;if (na.rm) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x &lt;- x[!is.na(x)]<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;if (any(is.na(x))) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;return(NA)<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;if (zero.rm) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x &lt;- x[x &gt; 0]<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;if (length(x) == 0 || any(x &lt;= 0)) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;return(NaN)<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;return(exp(mean(log(x))))<br \/>\n}<\/code><\/p>\n<p>Cette impl\u00e9mentation garantit une r\u00e9silience absolue. Si le vecteur contient des valeurs n\u00e9gatives et que le param\u00e8tre <code>zero.rm<\/code> est maintenu \u00e0 faux, la fonction refuse de tronquer arbitrairement le spectre empirique et d\u00e9livre imm\u00e9diatement <code>NaN<\/code>, signalant ainsi \u00e0 l&rsquo;exp\u00e9rimentateur l&rsquo;inad\u00e9quation de la m\u00e9trique g\u00e9om\u00e9trique pour son cas d&rsquo;usage.<\/p>\n<h2>8. Exemple 3 : Calcul de la moyenne g\u00e9om\u00e9trique sur les colonnes d&rsquo;un data frame<\/h2>\n<h3>8.1 G\u00e9n\u00e9ration de la structure tabulaire multidimensionnelle<\/h3>\n<p>Dans la conduite concr\u00e8te de recherches en psychologie quantitative et en neurosciences, les donn\u00e9es ne subsistent que rarement sous forme de vecteurs isol\u00e9s. Elles sont orchestr\u00e9es au sein de structures tabulaires multidimensionnelles matricielles ou, plus couramment, sous la forme de <code>data.frame<\/code>, o\u00f9 chaque rang\u00e9e symbolise une unit\u00e9 exp\u00e9rimentale (un sujet) et chaque colonne repr\u00e9sente une variable quantifi\u00e9e.<\/p>\n<p>G\u00e9n\u00e9rons une structure de donn\u00e9es empirique repr\u00e9sentative de sept participants soumis \u00e0 une batterie \u00e9valuant trois dimensions neuropsychologiques distinctes : l&rsquo;anxi\u00e9t\u00e9 cognitive (colonne <em>a<\/em>), l&#8217;empan de m\u00e9moire de travail (colonne <em>b<\/em>) et le score d&rsquo;inhibition ex\u00e9cutive (colonne <em>c<\/em>) :<\/p>\n<p><code>df_cognitif &lt;- data.frame(<br \/>\n&nbsp;&nbsp;a = c(1, 3, 4, 6, 8, 8, 9),<br \/>\n&nbsp;&nbsp;b = c(7, 8, 8, 7, 13, 14, 16),<br \/>\n&nbsp;&nbsp;c = c(11, 13, 13, 18, 19, 19, 22)<br \/>\n)<\/code><\/p>\n<p>L&rsquo;inspection structurelle via <code>str(df_cognitif)<\/code> atteste qu&rsquo;il s&rsquo;agit d&rsquo;une table d&rsquo;exp\u00e9rimentation rectangulaire de dimensions 7 lignes &times; 3 colonnes, dont l&rsquo;ensemble des vecteurs colonnes r\u00e9pond au standard de stockage num\u00e9rique.<\/p>\n<h3>8.2 Application it\u00e9rative via les primitives sapply() et lapply()<\/h3>\n<p>Pour calculer la moyenne g\u00e9om\u00e9trique de chacune des \u00e9chelles psychom\u00e9triques sans recourir \u00e0 des boucles fastidieuses, l&rsquo;idiome fondamental de base R mobilise la famille fonctionnelle des applicateurs. La primitive <code>sapply()<\/code> (pour <em>simplified apply<\/em>) op\u00e8re une it\u00e9ration sur chaque colonne du tableau en appliquant une fonction anonyme ou nomm\u00e9e, puis simplifie automatiquement la structure r\u00e9sultante sous la forme d&rsquo;un vecteur nomm\u00e9 particuli\u00e8rement ergonomique :<\/p>\n<p><code>moyennes_geom_colonnes &lt;- sapply(df_cognitif, function(colonne) exp(mean(log(colonne))))<br \/>\nprint(moyennes_geom_colonnes)<\/code><\/p>\n<p>L&rsquo;ex\u00e9cution de cette requ\u00eate g\u00e9n\u00e8re la sortie synth\u00e9tique suivante :<\/p>\n<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c<br \/>\n4.551817&nbsp;9.816654 16.037887<\/code><\/p>\n<p>Si l&rsquo;analyste d\u00e9sire pr\u00e9server la sortie sous forme d&rsquo;une structure en arbre modulaire &mdash; particuli\u00e8rement commode lorsque les colonnes poss\u00e8dent des typages composites ou des m\u00e9tadonn\u00e9es h\u00e9t\u00e9rog\u00e8nes &mdash;, la fonction &oelig;ur <code>lapply()<\/code> (pour <em>list apply<\/em>) restitue les r\u00e9sultats encapsul\u00e9s dans une liste g\u00e9n\u00e9rique :<\/p>\n<p><code>liste_geom &lt;- lapply(df_cognitif, function(colonne) exp(mean(log(colonne))))<\/code><\/p>\n<h3>8.3 Traitement matriciel avec la fonction apply()<\/h3>\n<p>Une alternative analytique puissante pour la manipulation de tableaux de donn\u00e9es enti\u00e8rement num\u00e9riques r\u00e9side dans l&rsquo;utilisation de l&rsquo;op\u00e9rateur matriciel <code>apply()<\/code>. Cet op\u00e9rateur impose la sp\u00e9cification explicite d&rsquo;une dimension de parcours via son argument formel <code>MARGIN<\/code> :<\/p>\n<ul>\n<li><code>MARGIN = 2<\/code> dicte un traitement orient\u00e9 selon les colonnes (synth\u00e8se inter-sujets de chaque variable).<\/li>\n<li><code>MARGIN = 1<\/code> dicte un traitement orient\u00e9 selon les lignes (synth\u00e8se intra-sujet entre les diff\u00e9rentes \u00e9chelles).<\/li>\n<\/ul>\n<p>Le calcul transversal par colonne s&rsquo;ex\u00e9cute par :<\/p>\n<p><code>apply(df_cognitif, MARGIN = 2, function(x) exp(mean(log(x))))<\/code><\/p>\n<p>L&rsquo;int\u00e9r\u00eat conceptuel s&rsquo;accro\u00eet lorsque le chercheur souhaite \u00e9valuer un <em>indice composite intra-individuel d&rsquo;efficience cognitive<\/em> pond\u00e9rant g\u00e9om\u00e9triquement les trois performances pour chaque participant pris isol\u00e9ment. En basculant la marge sur les rang\u00e9es (<code>MARGIN = 1<\/code>) :<\/p>\n<p><code>df_cognitif$indice_synthetique &lt;- apply(df_cognitif[, c(\"a\", \"b\", \"c\")], MARGIN = 1, function(sujet) exp(mean(log(sujet))))<br \/>\nprint(df_cognitif)<\/code><\/p>\n<p>Cette commande int\u00e8gre dynamiquement une nouvelle variable au tableau d&rsquo;origine, chaque sujet se voyant attribuer son niveau d&rsquo;aptitude composite g\u00e9om\u00e9trique harmonis\u00e9.<\/p>\n<h2>9. Approche avanc\u00e9e avec le Tidyverse et dplyr pour les analyses psychom\u00e9triques<\/h2>\n<h3>9.1 Int\u00e9gration dans un flux de manipulation summarise()<\/h3>\n<p>L&rsquo;\u00e9cosyst\u00e8me moderne du <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.tidyverse.org\/\">Tidyverse<\/a>, initi\u00e9 par Hadley Wickham et activement maintenu par les \u00e9quipes de Posit, a r\u00e9volutionn\u00e9 les pratiques d&rsquo;ing\u00e9nierie statistique dans R en introduisant le paradigme des &laquo; donn\u00e9es ordonn\u00e9es &raquo; (<em>tidy data<\/em>). Dans cette architecture, les manipulations de flux s&rsquo;articulent autour de l&rsquo;op\u00e9rateur de redirection s\u00e9quentielle &mdash; historiquement le tube <code>%&gt;%<\/code> du paquet <code>magrittr<\/code>, aujourd&rsquo;hui consolid\u00e9 dans le tube natif <code>|&gt;<\/code> introduit depuis la version 4.1 de R.<\/p>\n<p>Au sein de ce flux d\u00e9claratif, le verbe <code>summarise()<\/code> de la biblioth\u00e8que <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/dplyr.tidyverse.org\/\">dplyr<\/a> permet de condenser de multiples observations en indicateurs r\u00e9capitulatifs avec une \u00e9l\u00e9gance syntaxique incomparable. Illustrons son utilisation :<\/p>\n<p><code>library(dplyr)<\/p>\n<p>resume_statistique &lt;- df_cognitif |&gt;<br \/>\n&nbsp;&nbsp;summarise(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;geo_mean_a = exp(mean(log(a), na.rm = TRUE)),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;arith_mean_a = mean(a, na.rm = TRUE),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;mediane_a = median(a, na.rm = TRUE)<br \/>\n&nbsp;&nbsp;)<br \/>\nprint(resume_statistique)<\/code><\/p>\n<p>Cette approche garantit une lisibilit\u00e9 irr\u00e9prochable du script d&rsquo;analyse. Le flux d&rsquo;op\u00e9rations s&rsquo;\u00e9nonce comme une phrase logique en langage quasi-naturel, limitant drastiquement la charge cognitive lors de la relecture de pipelines statistiques complexes.<\/p>\n<h3>9.2 Op\u00e9rations transversales multi-colonnes avec across()<\/h3>\n<p>La puissance du dialecte <code>dplyr<\/code> culmine avec le modificateur contextuel <code>across()<\/code>, con\u00e7u pour appliquer simultan\u00e9ment un jeu de transformations algorithmiques \u00e0 un \u00e9ventail d\u00e9termin\u00e9 de variables num\u00e9riques au sein d&rsquo;une seule directive concise.<\/p>\n<p>Supposons que nous souhaitions extraire les moyennes g\u00e9om\u00e9triques de l&rsquo;ensemble des colonnes num\u00e9riques de notre base de recherche comportementale. Nous combinons <code>across()<\/code> avec le s\u00e9lecteur typologique <code>where(is.numeric)<\/code> :<\/p>\n<p><code>tableau_geometrique &lt;- df_cognitif |&gt;<br \/>\n&nbsp;&nbsp;summarise(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;across(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where(is.numeric),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~ exp(mean(log(.x[.x &gt; 0]), na.rm = TRUE)),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.names = \"geom_{.col}\"<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;)<br \/>\n&nbsp;&nbsp;)<br \/>\nprint(tableau_geometrique)<\/code><\/p>\n<p>Dans cette expression hautement optimis\u00e9e, le tilde <code>~<\/code> amorce une fonction anonyme condens\u00e9e dans laquelle <code>.x<\/code> repr\u00e9sente de fa\u00e7on abstraite le vecteur colonne en cours de traitement. La clause <code>.names = \"geom_{.col}\"<\/code> orchestre une m\u00e9taprogrammation \u00e9l\u00e9gante qui renomme automatiquement les colonnes de sortie en pr\u00e9fixant le libell\u00e9 d&rsquo;origine par &laquo; geom_ &raquo;.<\/p>\n<h3>9.3 Agr\u00e9gation par stratification exp\u00e9rimentale avec group_by()<\/h3>\n<p>Dans la tr\u00e8s grande majorit\u00e9 des protocoles de recherche en neurosciences cognitives et en psychologie clinique, l&rsquo;objectif fondamental r\u00e9side dans la comparaison inter-groupes (par exemple groupe t\u00e9moin sain contre cohorte clinique avec l\u00e9sion c\u00e9r\u00e9brale) ou dans l&rsquo;\u00e9tude des interactions entre conditions exp\u00e9rimentales (condition neutre contre condition d&rsquo;amor\u00e7age \u00e9motionnel) et covariables sociod\u00e9mographiques (genre, tranches d&rsquo;\u00e2ge).<\/p>\n<p>L&rsquo;articulation harmonieuse entre <code>group_by()<\/code> et <code>summarise()<\/code> rend cette partition analytique limpide. Enrichissons notre jeu de donn\u00e9es exp\u00e9rimental en y ajoutant une variable de conditionnement inter-sujets :<\/p>\n<p><code>df_groupes &lt;- data.frame(<br \/>\n&nbsp;&nbsp;groupe_clinique = factor(c(\"Temoin\", \"Temoin\", \"Temoin\", \"Patient\", \"Patient\", \"Patient\", \"Patient\")),<br \/>\n&nbsp;&nbsp;temps_reaction = c(210, 245, 260, 310, 450, 490, 850)<br \/>\n)<\/p>\n<p>comparaison_groupes &lt;- df_groupes |&gt;<br \/>\n&nbsp;&nbsp;group_by(groupe_clinique) |&gt;<br \/>\n&nbsp;&nbsp;summarise(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;effectif = n(),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;moyenne_geom = exp(mean(log(temps_reaction))),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;moyenne_arith = mean(temps_reaction),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;ratio_distorsion = round(moyenne_arith \/ moyenne_geom, 3)<br \/>\n&nbsp;&nbsp;)<br \/>\nprint(comparaison_groupes)<\/code><\/p>\n<p>Cette syntaxe segmente instantan\u00e9ment les sous-populations d&rsquo;\u00e9chantillons, d\u00e9livrant une table r\u00e9capitulative claire. Le ratio de distorsion mis en exergue dans cet exemple illustre avec nettet\u00e9 comment l&rsquo;h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 et l&rsquo;asym\u00e9trie de distribution au sein du groupe clinique creusent l&rsquo;\u00e9cart entre la moyenne arithm\u00e9tique et la moyenne g\u00e9om\u00e9trique, r\u00e9v\u00e9lant la vuln\u00e9rabilit\u00e9 de la premi\u00e8re face \u00e0 l&rsquo;allongement de la latence chez les patients s\u00e9v\u00e8res.<\/p>\n<h2>10. Utilisation des packages sp\u00e9cialis\u00e9s dans R (psych, EnvStats, DescTools)<\/h2>\n<h3>10.1 La fonction geometric.mean() de la biblioth\u00e8que psych<\/h3>\n<p>Pour la communaut\u00e9 des chercheurs en sciences comportementales et psychom\u00e9trie quantitative, l&rsquo;\u00e9minent paquet <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=psych\">psych<\/a>, d\u00e9velopp\u00e9 par William Revelle \u00e0 la Northwestern University, constitue la biblioth\u00e8que de pr\u00e9dilection incontournable. Parmi son impressionnant arsenal d&rsquo;outils d\u00e9di\u00e9s \u00e0 l&rsquo;analyse factorielle, \u00e0 la validation de fid\u00e9lit\u00e9 d&rsquo;\u00e9chelle et au calcul d&rsquo;indices de coh\u00e9rence interne (alpha de Cronbach, om\u00e9ga de McDonald), ce package met nativement \u00e0 disposition une fonction explicitement baptis\u00e9e <code>geometric.mean()<\/code>.<\/p>\n<p>Son installation et son exploitation s&rsquo;op\u00e8rent selon le protocole standard :<\/p>\n<p><code>install.packages(\"psych\")<br \/>\nlibrary(psych)<\/code><\/p>\n<p>L&rsquo;impl\u00e9mentation offerte par <code>psych::geometric.mean()<\/code> pr\u00e9sente l&rsquo;avantage majeur d&rsquo;int\u00e9grer en natif la prise en compte des valeurs manquantes sans imposer de reformulation syntaxique complexe :<\/p>\n<p><code>latences_avec_na &lt;- c(4, 8, 9, 9, 12, 14, 17, NA)<br \/>\nres_psych &lt;- geometric.mean(latences_avec_na, na.rm = TRUE)<br \/>\nprint(res_psych)<\/code><\/p>\n<p>Un aspect m\u00e9thodologique essentiel de la fonction <code>geometric.mean()<\/code> de <em>psych<\/em> r\u00e9side dans son traitement propri\u00e9taire des valeurs nulles. Par d\u00e9faut, si des scores de z\u00e9ro sont d\u00e9tect\u00e9s au sein du vecteur, la fonction n&rsquo;interrompt pas brutalement son cycle de traitement ; elle avertit l&rsquo;utilisateur et applique une constante corrective unitaire ou un ajustement param\u00e9tr\u00e9, garantissant une flexibilit\u00e9 pr\u00e9cieuse lors de l&rsquo;analyse exploratoire de grands inventaires de personnalit\u00e9 ou d&rsquo;\u00e9chelles d&rsquo;attitudes.<\/p>\n<h3>10.2 Estimation robuste avec le package EnvStats<\/h3>\n<p>Bien que son patronyme renvoie initialement \u00e0 la statistique environnementale, le paquetage hautement sp\u00e9cialis\u00e9 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=EnvStats\">EnvStats<\/a> fait autorit\u00e9 dans l&rsquo;ensemble de la communaut\u00e9 biostatistique pour son traitement exhaustif des distributions log-normales et asym\u00e9triques. Sa fonction <code>geoMean()<\/code> se distingue par une rigueur algorithmique absolue.<\/p>\n<p>L&rsquo;appel conventionnel s&rsquo;ex\u00e9cute selon l&rsquo;interface formelle :<\/p>\n<p><code>library(EnvStats)<br \/>\nres_envstats &lt;- geoMean(latences, na.rm = TRUE)<\/code><\/p>\n<p>Cependant, la v\u00e9ritable plus-value d&rsquo;<em>EnvStats<\/em> r\u00e9side dans sa capacit\u00e9 \u00e0 transcender la statistique descriptive univari\u00e9e pour aborder l&rsquo;inf\u00e9rence formelle et l&rsquo;estimation probabiliste param\u00e9trique. Via la fonction conjointe <code>elnormAlt()<\/code> (pour <em>estimation of lognormal parameters &#8211; alternative parameterization<\/em>), le package estime simultan\u00e9ment la moyenne g\u00e9om\u00e9trique de la population parente et calcule ses intervalles de confiance exacts bas\u00e9s sur la distribution log-normale :<\/p>\n<p><code>estimation_complete &lt;- elnormAlt(latences, ci = TRUE, ci.type = \"two-sided\", conf.level = 0.95)<br \/>\nprint(estimation_complete$parameters[\"mean\"])<br \/>\nprint(estimation_complete<span class=\"arabpsy-math-inline\" data-latex=\"interval\">$interval$<\/span>limits)<\/code><\/p>\n<p>Cette instrumentation inf\u00e9rentielle s&rsquo;av\u00e8re providentielle pour le chercheur qui doit rapporter dans ses publications scientifiques des intervalles de confiance robustes pour la moyenne g\u00e9om\u00e9trique, conformes aux exigences contemporaines de r\u00e9plication des r\u00e9sultats en psychologie exp\u00e9rimentale.<\/p>\n<h3>10.3 La suite DescTools et sa fonction Gmean()<\/h3>\n<p>Le m\u00e9ta-package d&rsquo;analyse descriptive et exploratoire <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=DescTools\">DescTools<\/a>, con\u00e7u par Andri Signorell, regroupe un nombre consid\u00e9rable d&rsquo;op\u00e9rateurs statistiques optimis\u00e9s pour la production de rapports d&rsquo;analyse pr\u00e9liminaires. Sa fonction d\u00e9di\u00e9e s&rsquo;intitule de mani\u00e8re compacte <code>Gmean()<\/code>.<\/p>\n<p>Ce module apporte un niveau de personnalisation algorithmique sup\u00e9rieur, particuli\u00e8rement en ce qui concerne la gestion fine des z\u00e9ros structurels gr\u00e2ce \u00e0 l&rsquo;argument formel <code>method<\/code> :<\/p>\n<p><code>library(DescTools)<\/p>\n<p>vecteur_mixte &lt;- c(4, 8, 9, 9, 12, 14, 17, 0)<\/p>\n<p>res_desctools_classic &lt;- Gmean(vecteur_mixte, na.rm = TRUE, method = \"classic\")<\/p>\n<p>res_desctools_modifie &lt;- Gmean(vecteur_mixte, na.rm = TRUE, method = \"mod\")<\/code><\/p>\n<p>En mode <code>\"classic\"<\/code>, la d\u00e9tection d&rsquo;une observation nulle entra\u00eene le basculement strict vers z\u00e9ro, tandis que la m\u00e9thode modifi\u00e9e <code>\"mod\"<\/code> (ou les r\u00e9glages bas\u00e9s sur <code>zero.prop<\/code>) d\u00e9ploie une correction g\u00e9om\u00e9trique adaptative proportionnelle \u00e0 l&rsquo;effectif total. DescTools propose ainsi une trousse \u00e0 outils interm\u00e9diaire id\u00e9ale pour tester la robustesse des r\u00e9sultats empiriques face aux diff\u00e9rentes hypoth\u00e8ses d&rsquo;imputation des z\u00e9ros.<\/p>\n<h2>11. Visualisation graphique et interpr\u00e9tation comparative des moyennes<\/h2>\n<h3>11.1 Repr\u00e9sentation conjointe de la distribution et des tendances centrales<\/h3>\n<p>La communication statistique ne saurait \u00eatre compl\u00e8te sans une m\u00e9diation visuelle soign\u00e9e permettant d&rsquo;appr\u00e9cier la morphologie de la distribution des donn\u00e9es et d&rsquo;expliciter le positionnement diff\u00e9rentiel des indicateurs de tendance centrale. Le package graphique de r\u00e9f\u00e9rence <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/ggplot2.tidyverse.org\/\">ggplot2<\/a> offre une flexibilit\u00e9 totale pour concevoir de telles synth\u00e8ses visuelles didactiques.<\/p>\n<p>Imaginons un \u00e9chantillon exp\u00e9rimental de 1000 observations simul\u00e9es issues d&rsquo;une distribution log-normale mod\u00e9lisant des temps de d\u00e9cision perceptive :<\/p>\n<p><code>library(ggplot2)<\/p>\n<p>set.seed(42)<br \/>\nlatences_simulees &lt;- rlnorm(n = 1000, meanlog = 5.5, sdlog = 0.45)<br \/>\ndonnees_visu &lt;- data.frame(Temps = latences_simulees)<\/p>\n<p>stat_arith &lt;- mean(donnees_visu$Temps)<br \/>\nstat_geom &lt;- exp(mean(log(donnees_visu$Temps)))<br \/>\nstat_med &lt;- median(donnees_visu$Temps)<\/code><\/p>\n<p>Nous construisons un histogramme de densit\u00e9 empirique sur lequel nous superposons des lignes verticales contrast\u00e9es signalant l&#8217;emplacement exact de chaque m\u00e9trique :<\/p>\n<p><code>p1 &lt;- ggplot(donnees_visu, aes(x = Temps)) +<br \/>\n&nbsp;&nbsp;geom_histogram(aes(y = after_stat(density)), bins = 50, fill = \"#ECEFF1\", color = \"#90A4AE\") +<br \/>\n&nbsp;&nbsp;geom_density(color = \"#37474F\", linewidth = 0.8) +<br \/>\n&nbsp;&nbsp;geom_vline(aes(xintercept = stat_med, color = \"Mediane\"), linewidth = 1.1, linetype = \"dashed\") +<br \/>\n&nbsp;&nbsp;geom_vline(aes(xintercept = stat_geom, color = \"Moyenne Geometrique\"), linewidth = 1.2) +<br \/>\n&nbsp;&nbsp;geom_vline(aes(xintercept = stat_arith, color = \"Moyenne Arithmetique\"), linewidth = 1.1, linetype = \"dotdash\") +<br \/>\n&nbsp;&nbsp;scale_color_manual(name = \"Indicateurs\", values = c(\"Mediane\" = \"#1E88E5\", \"Moyenne Geometrique\" = \"#004D40\", \"Moyenne Arithmetique\" = \"#D81B60\")) +<br \/>\n&nbsp;&nbsp;labs(title = \"Morphologie de distribution asymetrique et parametres de centralite\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subtitle = \"Illustration de la divergence arithmetique-geometrique sur 1000 latences cognitives\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = \"Temps de reaction (ms)\", y = \"Densite de probabilite\") +<br \/>\n&nbsp;&nbsp;theme_minimal() +<br \/>\n&nbsp;&nbsp;theme(legend.position = \"bottom\", plot.title = element_text(face = \"bold\", size = 13))<\/code><\/p>\n<p>Ce graphique met en lumi\u00e8re avec une force d\u00e9monstrative indiscutable comment la moyenne arithm\u00e9tique (en magenta) se trouve &laquo; aspir\u00e9e &raquo; vers la queue de distribution sous l&rsquo;effet des valeurs \u00e9lev\u00e9es occasionnelles, fournissant une impression trompeuse de la performance moyenne r\u00e9elle. La moyenne g\u00e9om\u00e9trique (en vert sombre), elle, co\u00efncide presque id\u00e9alement avec le sommet de vraisemblance et la m\u00e9diane empirique (en bleu).<\/p>\n<h3>11.2 Transformation d&rsquo;\u00e9chelle logarithmique des axes visuels<\/h3>\n<p>Lorsque des mesures s&rsquo;\u00e9tendent sur plusieurs ordres de grandeur &mdash; comme c&rsquo;est le cas pour les fr\u00e9quences d&rsquo;apparition des mots en psycholinguistique cognitive ou les seuils de d\u00e9tection olfactive &mdash;, la repr\u00e9sentation sur une \u00e9chelle cart\u00e9sienne lin\u00e9aire \u00e9crase la quasi-totalit\u00e9 des observations dans un intervalle illisible pr\u00e8s de l&rsquo;origine. Le passage \u00e0 une \u00e9chelle logarithmique sur l&rsquo;axe des abscisses via <code>scale_x_log10()<\/code> permet de r\u00e9tablir une parfaite sym\u00e9trie distributionnelle :<\/p>\n<p><code>p2 &lt;- ggplot(donnees_visu, aes(x = Temps)) +<br \/>\n&nbsp;&nbsp;geom_density(fill = \"#80CBC4\", alpha = 0.4, color = \"#00695C\") +<br \/>\n&nbsp;&nbsp;scale_x_log10(breaks = c(100, 200, 300, 500, 1000)) +<br \/>\n&nbsp;&nbsp;geom_vline(xintercept = stat_geom, color = \"#004D40\", linewidth = 1.2) +<br \/>\n&nbsp;&nbsp;annotate(\"text\", x = stat_geom * 1.15, y = 1.5, label = paste0(\"G = \", round(stat_geom, 1), \" ms\"), color = \"#004D40\", fontface = \"bold\") +<br \/>\n&nbsp;&nbsp;labs(title = \"Symetrisation gaussienne sous transformation d'echelle logarithmique\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = \"Temps de reaction (ms, echelle log10)\", y = \"Densite transformee\") +<br \/>\n&nbsp;&nbsp;theme_classic()<\/code><\/p>\n<p>Sur cette projection logarithmique, la distribution log-normale originale prend l&rsquo;apparence rigoureuse d&rsquo;une courbe en cloche gaussienne sym\u00e9trique. Fait math\u00e9matique remarquable : la moyenne g\u00e9om\u00e9trique s&rsquo;installe alors tr\u00e8s exactement au centre parfait de gravit\u00e9 visuel et d&rsquo;inflexion sym\u00e9trique de la courbe, d\u00e9montrant visuellement son ad\u00e9quation ontologique profonde avec les ph\u00e9nom\u00e8nes r\u00e9gis par des \u00e9chelles d&rsquo;intervalles relatives.<\/p>\n<h3>11.3 Conception de diagrammes d&rsquo;interaction conformes aux normes APA<\/h3>\n<p>L&rsquo;American Psychological Association (<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/apastyle.apa.org\/\">APA<\/a>) impose des directives \u00e9ditoriales d&rsquo;une grande rigueur pour la publication des r\u00e9sultats exp\u00e9rimentaux dans les revues \u00e0 comit\u00e9 de lecture de rang A. Lorsque des moyennes g\u00e9om\u00e9triques sont mobilis\u00e9es pour synth\u00e9tiser des dispositifs factoriels crois\u00e9s (par exemple un plan factoriel mixte 2 &times; 2 associant un facteur de groupe et une condition exp\u00e9rimentale), il est m\u00e9thodologiquement incorrect de juxtaposer des barres d&rsquo;erreur bas\u00e9es sur l&rsquo;\u00e9cart-type arithm\u00e9tique standard lin\u00e9aire.<\/p>\n<p>La mesure de dispersion appropri\u00e9e conjointe \u00e0 la moyenne g\u00e9om\u00e9trique est l&rsquo;<strong>\u00e9cart-type g\u00e9om\u00e9trique<\/strong> (not\u00e9 <em>GSD<\/em> pour <em>Geometric Standard Deviation<\/em>). Il se d\u00e9finit math\u00e9matiquement comme l&rsquo;exponentielle de l&rsquo;\u00e9cart-type des logarithmes :<\/p>\n<p><em>GSD = exp( sd( log(x) ) )<\/em><\/p>\n<p>L&rsquo;\u00e9cart-type g\u00e9om\u00e9trique est un facteur multiplicatif\/divisif sans dimension. Par cons\u00e9quent, l&rsquo;intervalle de dispersion empirique \u00e0 68% ne s&rsquo;exprime pas sous la forme additive <em>[G &#8211; SD, G + SD]<\/em>, mais sous la forme multiplicative asym\u00e9trique :<\/p>\n<p><em>[ G \/ GSD , G &times; GSD ]<\/em><\/p>\n<p>Formalisons la construction d&rsquo;un diagramme d&rsquo;interaction vectoriel professionnel sous ggplot2 respectant scrupuleusement ce formalisme :<\/p>\n<p><code>df_experience &lt;- data.frame(<br \/>\n&nbsp;&nbsp;Condition = factor(rep(c(\"Controle\", \"Stress_Aigu\"), each = 2)),<br \/>\n&nbsp;&nbsp;Tache = factor(rep(c(\"Facile\", \"Complexe\"), times = 2)),<br \/>\n&nbsp;&nbsp;G_Mean = c(220, 310, 240, 480),<br \/>\n&nbsp;&nbsp;GSD = c(1.18, 1.25, 1.19, 1.35)<br \/>\n)<\/p>\n<p>df_experience<span class=\"arabpsy-math-inline\" data-latex=\"Borne_Inf &lt;- df_experience\">$Borne_Inf &lt;- df_experience$<\/span>G_Mean \/ df_experience$GSD<br \/>\ndf_experience<span class=\"arabpsy-math-inline\" data-latex=\"Borne_Sup &lt;- df_experience\">$Borne_Sup &lt;- df_experience$<\/span>G_Mean * df_experience$GSD<\/p>\n<p>p_apa &lt;- ggplot(df_experience, aes(x = Condition, y = G_Mean, group = Tache, shape = Tache, linetype = Tache)) +<br \/>\n&nbsp;&nbsp;geom_line(position = position_dodge(0.25), linewidth = 0.75, color = \"black\") +<br \/>\n&nbsp;&nbsp;geom_errorbar(aes(ymin = Borne_Inf, ymax = Borne_Sup), width = 0.15, position = position_dodge(0.25), linewidth = 0.6, color = \"black\") +<br \/>\n&nbsp;&nbsp;geom_point(position = position_dodge(0.25), size = 3, fill = \"white\", color = \"black\") +<br \/>\n&nbsp;&nbsp;scale_shape_manual(values = c(16, 17)) +<br \/>\n&nbsp;&nbsp;scale_linetype_manual(values = c(\"solid\", \"dashed\")) +<br \/>\n&nbsp;&nbsp;scale_y_continuous(limits = c(150, 700), breaks = seq(200, 700, by = 100)) +<br \/>\n&nbsp;&nbsp;labs(x = \"Condition psychophysiologique\", y = \"Temps de latence geometrique moyen (ms)\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caption = \"Note. Les barres d'erreur representent l'ecart-type geometrique asymetrique (G \/ GSD, G * GSD). Format APA 7e ed.\") +<br \/>\n&nbsp;&nbsp;theme_classic(base_size = 12) +<br \/>\n&nbsp;&nbsp;theme(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;legend.position = \"top\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;legend.title = element_text(face = \"bold\"),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;axis.title = element_text(face = \"bold\"),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;plot.caption = element_text(hjust = 0, face = \"italic\", size = 9)<br \/>\n&nbsp;&nbsp;)<br \/>\nprint(p_apa)<\/code><\/p>\n<p>Ce type de figure s&rsquo;ins\u00e8re directement dans des manuscrits soumis aux plus hautes exigences des revues internationales de neurosciences cognitives et de psychologie quantitative, t\u00e9moignant d&rsquo;une ma\u00eetrise m\u00e9thodologique sans faille de l&rsquo;asym\u00e9trie propre aux grandeurs multiplicatives.<\/p>\n<h2>12. Bonnes pratiques, limites statistiques et recommandations m\u00e9thodologiques<\/h2>\n<h3>12.1 Arbre de d\u00e9cision pour le choix d&rsquo;un indicateur de tendance centrale<\/h3>\n<p>L&rsquo;int\u00e9gration de la moyenne g\u00e9om\u00e9trique au c&oelig;ur de son arsenal m\u00e9thodologique ne dispense aucunement de proc\u00e9der \u00e0 un examen critique de la nature fondamentale des donn\u00e9es exp\u00e9rimentales. Aucun indicateur statistique ne saurait d\u00e9tenir de validit\u00e9 universelle absolue ; chaque m\u00e9trique tire sa pertinence du respect de ses postulats math\u00e9matiques sous-jacents.<\/p>\n<p>Pour guider le praticien face \u00e0 ses donn\u00e9es dans R, nous pouvons synth\u00e9tiser les crit\u00e8res de s\u00e9lection selon l&rsquo;arbre logique d\u00e9cisionnel suivant :<\/p>\n<ul>\n<li><strong>Le domaine des valeurs comprend-il des nombres n\u00e9gatifs ou un z\u00e9ro conceptuellement incompressible ?<\/strong>\n<ul>\n<li><em>Si oui<\/em> : Exclure imp\u00e9rativement la moyenne g\u00e9om\u00e9trique standard. Privil\u00e9gier la m\u00e9diane (approche non param\u00e9trique ordinale robuste) ou la moyenne arithm\u00e9tique tronqu\u00e9e (<em>trimmed mean<\/em>) apr\u00e8s examen attentif des r\u00e9sidus.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Le processus g\u00e9n\u00e9rateur sous-jacent est-il additif ou multiplicatif ?<\/strong>\n<ul>\n<li><em>S&rsquo;il est additif<\/em> (ex. : taille en centim\u00e8tres, poids total accumul\u00e9) et que la distribution pr\u00e9sente une sym\u00e9trie gaussienne confirm\u00e9e (coefficient d&rsquo;asym\u00e9trie de Pearson <em>|skewness| &lt; 0.5<\/em> et test de Shapiro-Wilk non significatif) : Adopter la <strong>moyenne arithm\u00e9tique<\/strong>.<\/li>\n<li><em>S&rsquo;il est multiplicatif<\/em> (ex. : taux de croissance, pourcentages d&rsquo;\u00e9volution, chronom\u00e9tries mentales, seuils perceptifs log-normaux) : Adopter imp\u00e9rativement la <strong>moyenne g\u00e9om\u00e9trique<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li><strong>La distribution est-elle lourdement contamin\u00e9e par des valeurs aberrantes extr\u00eames des deux c\u00f4t\u00e9s ?<\/strong>\n<ul>\n<li><em>Si oui<\/em> : La <strong>m\u00e9diane<\/strong> demeure l&rsquo;estimateur de point de rupture le plus \u00e9lev\u00e9 (50% de tol\u00e9rance aux outliers).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>12.2 Inf\u00e9rence statistique et communication des r\u00e9sultats<\/h3>\n<p>Un \u00e9cueil statistique classique lors de la communication de travaux scientifiques consiste \u00e0 calculer la moyenne g\u00e9om\u00e9trique de fa\u00e7on purement descriptive dans un tableau r\u00e9capitulatif, puis \u00e0 soumettre ces m\u00eames donn\u00e9es brutes \u00e0 un test t de Student ou \u00e0 une analyse de variance (ANOVA) param\u00e9trique ordinaire. Ce d\u00e9calage viole les hypoth\u00e8ses d&rsquo;homosc\u00e9dasticit\u00e9 et de normalit\u00e9 des r\u00e9sidus de l&rsquo;inf\u00e9rence lin\u00e9aire classique.<\/p>\n<p>La r\u00e8gle d&rsquo;or d&rsquo;une inf\u00e9rence valide sur des grandeurs g\u00e9om\u00e9triques s&rsquo;articule autour de la <strong>r\u00e9tro-transformation apr\u00e8s mod\u00e9lisation log-lin\u00e9aire<\/strong>. Le protocole rigoureux s&rsquo;\u00e9nonce comme suit :<\/p>\n<ol>\n<li>Appliquer la transformation logarithmique <code>y_log &lt;- log(y)<\/code> \u00e0 la variable d\u00e9pendante empirique.<\/li>\n<li>Ajuster le mod\u00e8le lin\u00e9aire g\u00e9n\u00e9ralis\u00e9 ou le mod\u00e8le mixte sur ces valeurs transform\u00e9es (via <code>lm()<\/code> ou la fonction <code>lmer()<\/code> de la biblioth\u00e8que <em>lme4<\/em>). Les postulats de normalit\u00e9 des r\u00e9sidus et d&rsquo;homog\u00e9n\u00e9it\u00e9 de variance s&rsquo;y trouvent g\u00e9n\u00e9ralement pleinement restaur\u00e9s.<\/li>\n<li>Extraire les moyennes estim\u00e9es marginales (<em>estimated marginal means<\/em>) et leurs intervalles de confiance \u00e0 95% dans l&rsquo;espace logarithmique (au moyen de la biblioth\u00e8que <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=emmeans\">emmeans<\/a>).<\/li>\n<li>Appliquer la r\u00e9tro-transformation exponentielle <code>exp()<\/code> \u00e0 ces estimateurs et \u00e0 leurs bornes d&rsquo;intervalles de confiance pour les ramener sur l&rsquo;\u00e9chelle m\u00e9trique d&rsquo;origine.<\/li>\n<\/ol>\n<p>Dans le corps du texte acad\u00e9mique r\u00e9dig\u00e9 selon les normes APA, les r\u00e9sultats ne doivent pas se contenter d&rsquo;\u00e9noncer un laconique <em>p-value<\/em>, mais rapporter l&rsquo;indicateur de fa\u00e7on exhaustive, par exemple : &laquo; Les temps de r\u00e9action g\u00e9om\u00e9triques moyens \u00e9taient significativement plus brefs dans la condition d&rsquo;inhibition (<em>M<sub>geom<\/sub> = 245.2 ms<\/em>, IC \u00e0 95% [228.1, 263.5]) que dans la condition de contr\u00f4le (<em>M<sub>geom<\/sub> = 312.8 ms<\/em>, IC \u00e0 95% [291.4, 335.7]), <em>t(48) = 4.12, p &lt; .001, d = 0.58<\/em> &raquo;.<\/p>\n<p>Pour les plans exp\u00e9rimentaux d&rsquo;\u00e9chantillonnage complexe o\u00f9 la distribution exacte sous-jacente ne saurait \u00eatre postul\u00e9e <em>a priori<\/em> avec certitude, le recours aux techniques non param\u00e9triques de r\u00e9-\u00e9chantillonnage par <strong>bootstrap<\/strong> (au moyen du paquet <code>boot<\/code> dans R) fournit une m\u00e9thode de pointe pour estimer sans biais l&rsquo;erreur-type empirique de la moyenne g\u00e9om\u00e9trique.<\/p>\n<h3>12.3 Synth\u00e8se des r\u00e8gles d&rsquo;or de programmation dans R<\/h3>\n<p>Pour conclure cette fresque th\u00e9orique et op\u00e9rationnelle, synth\u00e9tisons les trois axiomes m\u00e9thodologiques et informatiques que tout analyste de donn\u00e9es op\u00e9rant dans l&rsquo;environnement R devrait graver dans ses protocoles d&rsquo;ing\u00e9nierie statistique :<\/p>\n<ol>\n<li><strong>V\u00e9rification syst\u00e9matique de la positivit\u00e9 du vecteur<\/strong> : Ne jamais lancer une instruction <code>log()<\/code> sans avoir pr\u00e9alablement garanti par un test logique ou une clause d\u00e9fensive l&rsquo;absence de valeurs inf\u00e9rieures ou \u00e9gales \u00e0 z\u00e9ro, sous peine de contaminer silencieusement l&rsquo;arbre analytique par des <code>NaN<\/code> destructeurs.<\/li>\n<li><strong>Privil\u00e9gier la vectorisation native<\/strong> : Exploiter prioritairement le triplet d&rsquo;instructions fondamentales <code>exp(mean(log(x), na.rm = TRUE))<\/code> ou des paquets sp\u00e9cialis\u00e9s \u00e9prouv\u00e9s (<code>psych<\/code>, <code>EnvStats<\/code>) plut\u00f4t que des constructions it\u00e9ratives manuelles par produit cumulatif, assurant ainsi une v\u00e9locit\u00e9 maximale et une r\u00e9silience computationnelle absolue face aux risques d&rsquo;overflow arithm\u00e9tique.<\/li>\n<li><strong>Transparence et reproductibilit\u00e9 exp\u00e9rimentale<\/strong> : Documenter de mani\u00e8re explicite et v\u00e9rifiable dans le script de recherche la proportion exacte d&rsquo;observations nulles ou manquantes exclues lors de la phase d&rsquo;\u00e9puration, archiver la graine al\u00e9atoire (<code>set.seed()<\/code>) lors de l&rsquo;application de routines de bootstrap, et figer les versions de l&rsquo;environnement de calcul R via des syst\u00e8mes de gestion des d\u00e9pendances comme <code>renv<\/code> afin de garantir la p\u00e9rennit\u00e9 s\u00e9culaire de vos analyses quantitatives.<\/li>\n<\/ol>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<p>American Psychological Association. (2020). <em>Publication manual of the American Psychological Association<\/em> (7th ed.). American Psychological Association. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1037\/0000165-000\">https:\/\/doi.org\/10.1037\/0000165-000<\/a><\/p>\n<p>Bland, J. M., &amp; Altman, D. G. (1996). Statistics notes: Transformations, means, and confidence intervals. <em>BMJ<\/em>, 312(7038), 1079. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1136\/bmj.312.7038.1079\">https:\/\/doi.org\/10.1136\/bmj.312.7038.1079<\/a><\/p>\n<p>Fechner, G. T. (1860). <em>Elemente der Psychophysik<\/em>. Breitkopf und H\u00e4rtel.<\/p>\n<p>Lenth, R. V. (2023). <em>emmeans: Estimated Marginal Means, aka Least-Squares Means<\/em> (R package version 1.8.5). Comprehensive R Archive Network. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/CRAN.R-project.org\/package=emmeans\">https:\/\/CRAN.R-project.org\/package=emmeans<\/a><\/p>\n<p>Millard, S. P. (2013). <em>EnvStats: An R package for environmental statistics<\/em>. Springer. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/978-1-4614-8456-1\">https:\/\/doi.org\/10.1007\/978-1-4614-8456-1<\/a><\/p>\n<p>Newell, A., &amp; Rosenbloom, P. S. (1981). Mechanisms of skill acquisition and the law of practice. In J. R. Anderson (Ed.), <em>Cognitive skills and their acquisition<\/em> (pp. 1-55). Lawrence Erlbaum Associates.<\/p>\n<p>R Core Team. (2023). <em>R: A language and environment for statistical computing<\/em>. R Foundation for Statistical Computing. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.R-project.org\/\">https:\/\/www.R-project.org\/<\/a><\/p>\n<p>Revelle, W. (2023). <em>psych: Procedures for psychological, psychometric, and personality research<\/em> (R package version 2.3.6). Northwestern University. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/CRAN.R-project.org\/package=psych\">https:\/\/CRAN.R-project.org\/package=psych<\/a><\/p>\n<p>Signorell, A. (2023). <em>DescTools: Tools for descriptive statistics<\/em> (R package version 0.99.50). Comprehensive R Archive Network. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/CRAN.R-project.org\/package=DescTools\">https:\/\/CRAN.R-project.org\/package=DescTools<\/a><\/p>\n<p>Stevens, S. S. (1957). On the psychophysical law. <em>Psychological Review<\/em>, 64(3), 153-181. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1037\/h0046162\">https:\/\/doi.org\/10.1037\/h0046162<\/a><\/p>\n<p>Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., Fran\u00e7ois, R., Grolemund, G., Hayes, A., Henry, L., Hester, J., Kuhn, M., Pedersen, T. L., Miller, E., Bache, S. M., M\u00fcller, K., Ooms, J., Robinson, D., Seidel, D. P., Spinu, V., Takahashi, K., Vaughan, D., Wilke, C., Woo, K., &amp; Yutani, H. (2019). Welcome to the Tidyverse. <em>Journal of Open Source Software<\/em>, 4(43), 1686. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.21105\/joss.01686\">https:\/\/doi.org\/10.21105\/joss.01686<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>D\u00e9couvrez comment calculer la moyenne g\u00e9om\u00e9trique dans R avec des exemples pratiques : vecteurs, gestion des z\u00e9ros, data frames et fonctions sp\u00e9cialis\u00e9es.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1881,4136],"tags":[1884,4137,2956,16,2212],"class_list":["post-2073","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-de-la-recherche","category-statistiques-en-r","tag-analyse-de-donnees","tag-moyenne-geometrique","tag-programmation-r","tag-psychometrie","tag-statistiques-descriptives"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2073","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=2073"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2073\/revisions"}],"predecessor-version":[{"id":16315,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2073\/revisions\/16315"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}