{"id":8296,"date":"2026-09-17T05:23:24","date_gmt":"2026-09-17T05:23:24","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-calculer-le-smape-dans-r\/"},"modified":"2026-09-17T05:23:24","modified_gmt":"2026-09-17T05:23:24","slug":"comment-calculer-le-smape-dans-r","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-calculer-le-smape-dans-r","title":{"rendered":"Comment calculer le SMAPE dans R"},"content":{"rendered":"<p>L&rsquo;\u00e9valuation de la performance pr\u00e9dictive constitue la cl\u00e9 de vo\u00fbte de toute d\u00e9marche de mod\u00e9lisation quantitative contemporaine. Qu&rsquo;il s&rsquo;agisse d&rsquo;anticiper la trajectoire de variables macro\u00e9conomiques, de calibrer des flux logistiques industriels ou d&rsquo;estimer des r\u00e9ponses psychologiques et comportementales complexes, la communaut\u00e9 scientifique et les praticiens de la science des donn\u00e9es sont confront\u00e9s \u00e0 un d\u00e9fi commun : quantifier avec rigueur, objectivit\u00e9 et robustesse l&rsquo;\u00e9cart s\u00e9parant les observations empiriques des projections th\u00e9oriques. Si les m\u00e9triques traditionnelles reposant sur l&rsquo;erreur quadratique ou absolue dominent historiquement la litt\u00e9rature, leur incapacit\u00e9 \u00e0 fournir une lecture relative et ind\u00e9pendante de l&rsquo;\u00e9chelle des mesures a conduit \u00e0 l&rsquo;essor d&rsquo;indicateurs standardis\u00e9s en pourcentage.<\/p>\n<p>Parmi ces alternatives, l&rsquo;erreur absolue moyenne en pourcentage sym\u00e9trique, commun\u00e9ment d\u00e9sign\u00e9e sous l&rsquo;acronyme anglophone <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Symmetric_mean_absolute_percentage_error\">SMAPE (Symmetric Mean Absolute Percentage Error)<\/a>, s&rsquo;est impos\u00e9e comme une r\u00e9ponse m\u00e9thodologique majeure aux pathologies de l&rsquo;asym\u00e9trie statistique. Con\u00e7ue pour surmonter les distorsions inh\u00e9rentes au MAPE classique, cette m\u00e9trique sym\u00e9trique propose un cadre d&rsquo;analyse norm\u00e9, born\u00e9 et particuli\u00e8rement adapt\u00e9 aux contextes o\u00f9 la variabilit\u00e9 des donn\u00e9es impose une comparaison relative \u00e9quilibr\u00e9e. Dans le vaste \u00e9cosyst\u00e8me du langage <a rel=\"noopener noreferrer\" href=\"https:\/\/www.r-project.org\/\">R<\/a>, plateforme privil\u00e9gi\u00e9e de l&rsquo;analyse statistique de pointe, la manipulation et le calcul du SMAPE requi\u00e8rent toutefois une compr\u00e9hension fine de ses variantes algorithmiques, de ses propri\u00e9t\u00e9s formelles et de ses pi\u00e8ges de mise en \u0153uvre.<\/p>\n<p>Le pr\u00e9sent article propose un trait\u00e9 m\u00e9thodologique et pratique complet consacr\u00e9 au calcul, \u00e0 l&rsquo;interpr\u00e9tation et \u00e0 l&rsquo;optimisation du SMAPE au sein de l&rsquo;environnement de programmation R. En articulant fondements math\u00e9matiques rigoureux, d\u00e9clinaisons logicielles via des biblioth\u00e8ques sp\u00e9cialis\u00e9es comme <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=Metrics\">Metrics<\/a>, \u00e9critures d&rsquo;algorithmes personnalis\u00e9s, gestion syst\u00e9matique des singularit\u00e9s num\u00e9riques et applications empiriques sur des s\u00e9ries comportementales, ce guide vise \u00e0 doter les chercheurs et les analystes quantitatifs des outils n\u00e9cessaires pour une int\u00e9gration reproductible, performante et scientifiquement irr\u00e9prochable de cette m\u00e9trique au c\u0153ur de leurs flux d&rsquo;inf\u00e9rence statistique.<\/p>\n<h2>1. Introduction th\u00e9orique et d\u00e9finition du SMAPE dans l&rsquo;analyse pr\u00e9dictive<\/h2>\n<h3>1.1 Origine conceptuelle et utilit\u00e9 de l&rsquo;erreur absolue moyenne en pourcentage sym\u00e9trique<\/h3>\n<p>Le d\u00e9veloppement des m\u00e9triques d&rsquo;erreur relative au cours de la seconde moiti\u00e9 du vingti\u00e8me si\u00e8cle a r\u00e9pondu \u00e0 un imp\u00e9ratif fondamental : s&rsquo;affranchir de la d\u00e9pendance aux unit\u00e9s de mesure pour comparer l&rsquo;efficacit\u00e9 de mod\u00e8les appliqu\u00e9s \u00e0 des s\u00e9ries temporelles h\u00e9t\u00e9rog\u00e8nes. Dans ce contexte, l&rsquo;erreur absolue moyenne en pourcentage, ou MAPE (Mean Absolute Percentage Error), s&rsquo;est initialement impos\u00e9e comme la r\u00e9f\u00e9rence universelle gr\u00e2ce \u00e0 sa simplicit\u00e9 d&rsquo;interpr\u00e9tation intuitive. Cependant, les travaux fondateurs de chercheurs en pr\u00e9vision, notamment ceux de Spyros Makridakis et de J. Scott Armstrong, ont mis en lumi\u00e8re une vuln\u00e9rabilit\u00e9 math\u00e9matique r\u00e9dhibitoire du MAPE : son asym\u00e9trie structurelle.<\/p>\n<p>En effet, le MAPE divise l&rsquo;erreur absolue par la seule valeur observ\u00e9e r\u00e9elle. Cette construction engendre une p\u00e9nalisation disproportionn\u00e9e des erreurs de surestimation par rapport aux erreurs de sous-estimation. Lorsque l&rsquo;observation r\u00e9elle est proche de z\u00e9ro, le d\u00e9nominateur s&rsquo;effondre, provoquant une explosion asymptotique de la m\u00e9trique vers l&rsquo;infini. Inversement, une sous-estimation syst\u00e9matique plafonne m\u00e9caniquement l&rsquo;erreur \u00e0 100 %, cr\u00e9ant un biais incitatif pervers lors de l&rsquo;entra\u00eenement des algorithmes pr\u00e9dictifs. Ce d\u00e9s\u00e9quilibre compromet gravement la validit\u00e9 interne des comparaisons m\u00e9thodologiques.<\/p>\n<p>C&rsquo;est pour rem\u00e9dier \u00e0 cette anomalie fondamentale que le concept d&rsquo;erreur absolue moyenne en pourcentage sym\u00e9trique a \u00e9t\u00e9 formalis\u00e9 lors des c\u00e9l\u00e8bres comp\u00e9titions de pr\u00e9vision de Makridakis (les M-Competitions). L&rsquo;apport fondamental de la sym\u00e9trisation r\u00e9side dans l&rsquo;incorporation conjointe de la valeur observ\u00e9e et de la valeur pr\u00e9dite au niveau du d\u00e9nominateur d&rsquo;\u00e9chelle. Cette approche stabilise consid\u00e9rablement l&rsquo;\u00e9valuation des mod\u00e8les de r\u00e9gression en traitant avec une \u00e9quit\u00e9 math\u00e9matique accrue les d\u00e9viations positives et n\u00e9gatives, tout en \u00e9vitant les singularit\u00e9s extr\u00eames associ\u00e9es aux petites valeurs empiriques.<\/p>\n<h3>1.2 Formulation math\u00e9matique rigoureuse du SMAPE<\/h3>\n<p>La formulation analytique du SMAPE repose sur une d\u00e9composition formelle qui pond\u00e8re chaque \u00e9cart individuel par une moyenne des amplitudes observ\u00e9es et projet\u00e9es. Soit un \u00e9chantillon appari\u00e9 de taille <em>n<\/em>, o\u00f9 <em>y_t<\/em> repr\u00e9sente la valeur empirique r\u00e9elle observ\u00e9e au temps ou \u00e0 l&rsquo;indice <em>t<\/em>, et <em>y_hat_t<\/em> d\u00e9signe la pr\u00e9vision correspondante g\u00e9n\u00e9r\u00e9e par le mod\u00e8le statistique. La formulation canonique de Makridakis s&rsquo;\u00e9tablit selon l&rsquo;expression suivante :<\/p>\n<p>SMAPE = (1 \/ n) * somme_{t=1}^{n} [ 2 * |y_t &#8211; y_hat_t| \/ (|y_t| + |y_hat_t|) ] * 100<\/p>\n<p>Une analyse approfondie de cette structure math\u00e9matique r\u00e9v\u00e8le la pr\u00e9sence d\u00e9terminante du facteur multiplicateur 2 au num\u00e9rateur, ou de mani\u00e8re \u00e9quivalente, d&rsquo;une division par 2 appliqu\u00e9e au d\u00e9nominateur : (|y_t| + |y_hat_t|) \/ 2. Ce d\u00e9nominateur moyen repr\u00e9sente la moyenne arithm\u00e9tique des valeurs absolues de l&rsquo;observation et de la pr\u00e9diction. Cette transformation g\u00e9om\u00e9trique garantit que l&rsquo;\u00e9chelle de normalisation ne d\u00e9pend pas exclusivement de la cible empirique, mais de la masse globale mobilis\u00e9e par le ph\u00e9nom\u00e8ne observ\u00e9 et son approximation th\u00e9orique.<\/p>\n<p>Le facteur d&rsquo;\u00e9chelle multiplicatif final par 100 a pour objet exclusif de convertir le rapport scalaire sans dimension en un pourcentage standardis\u00e9, imm\u00e9diatement assimilable par les analystes et les d\u00e9cideurs. Gr\u00e2ce \u00e0 cette normalisation conjointe, chaque terme somm\u00e9 exprime la d\u00e9viation relative par rapport au point m\u00e9dian du couple observation-pr\u00e9vision, conf\u00e9rant \u00e0 la m\u00e9trique une compacit\u00e9 math\u00e9matique et une interpr\u00e9tabilit\u00e9 directe dans les cadres inf\u00e9rentiels modernes.<\/p>\n<h3>1.3 Pertinence du SMAPE dans la mod\u00e9lisation quantitative et psychologique<\/h3>\n<p>Dans le champ des sciences comportementales, de la psychom\u00e9trie quantitative et des neurosciences cognitives, les donn\u00e9es longitudinales pr\u00e9sentent fr\u00e9quemment une variabilit\u00e9 interindividuelle marqu\u00e9e, caract\u00e9ris\u00e9e par des dynamiques non lin\u00e9aires et des \u00e9chelles de r\u00e9ponse arbitraires issues de questionnaires psychom\u00e9triques (\u00e9chelles de Likert cumul\u00e9es, temps de r\u00e9action, indices d&rsquo;activation cognitive). L&rsquo;application d&rsquo;indicateurs absolus comme la racine de l&rsquo;erreur quadratique moyenne (RMSE) se heurte \u00e0 l&rsquo;impossibilit\u00e9 de confronter des cohortes aux baselines h\u00e9t\u00e9rog\u00e8nes.<\/p>\n<p>Le SMAPE d\u00e9ploie ici une pertinence m\u00e9thodologique singuli\u00e8re. En neutralisant l&rsquo;effet de magnitude des \u00e9chelles individuelles, il autorise l&rsquo;agr\u00e9gation de performances pr\u00e9dictives sur des populations diversifi\u00e9es sans que les individus pr\u00e9sentant des r\u00e9ponses physiologiques ou comportementales de forte amplitude ne monopolisent le diagnostic d&rsquo;ad\u00e9quation du mod\u00e8le. Cette neutralit\u00e9 face \u00e0 l&rsquo;\u00e9chelle s&rsquo;av\u00e8re indispensable pour quantifier la validit\u00e9 pr\u00e9dictive des mod\u00e8les de d\u00e9cision bay\u00e9sienne ou des r\u00e9seaux de neurones appliqu\u00e9s aux dynamiques temporelles de l&rsquo;humeur, du stress ou de l&rsquo;attention.<\/p>\n<p>Dans la litt\u00e9rature scientifique internationale, l&rsquo;\u00e9valuation de la qualit\u00e9 d&rsquo;ajustement via le SMAPE suit g\u00e9n\u00e9ralement des seuils empiriques consolid\u00e9s. Une valeur de SMAPE inf\u00e9rieure \u00e0 10 % signale une capacit\u00e9 pr\u00e9dictive exceptionnelle, caract\u00e9risant un mod\u00e8le captant fid\u00e8lement le signal sous-jacent. Un r\u00e9sultat compris entre 10 % et 20 % correspond \u00e0 un ajustement robuste et exploitable dans les publications scientifiques. Entre 20 % et 50 %, le mod\u00e8le conserve une valeur indicative mais requiert une analyse critique des r\u00e9sidus, tandis qu&rsquo;un SMAPE exc\u00e9dant 50 % traduit une d\u00e9ficience structurelle du syst\u00e8me d&rsquo;estimation, exigeant une r\u00e9vision des hypoth\u00e8ses th\u00e9oriques.<\/p>\n<h2>2. Fondements math\u00e9matiques et propri\u00e9t\u00e9s formelles de la formule du SMAPE<\/h2>\n<h3>2.1 Bornes th\u00e9oriques et comportement asymptotique<\/h3>\n<p>L&rsquo;un des atouts th\u00e9oriques majeurs de la formulation standardis\u00e9e du SMAPE r\u00e9side dans l&rsquo;existence de bornes universelles rigoureusement d\u00e9finies. Contrairement au MAPE, qui peut th\u00e9oriquement tendre vers l&rsquo;infini positif sous l&rsquo;effet d&rsquo;une observation arbitrairement proche de z\u00e9ro, le SMAPE conventionnel int\u00e9grant le multiplicateur 2 est born\u00e9 sur l&rsquo;intervalle semi-ferm\u00e9 [0 %, 200 %]. Dans la variante alternative o\u00f9 le coefficient 2 est omis du num\u00e9rateur (utilis\u00e9e par certains auteurs pour ramener le r\u00e9sultat sur une \u00e9chelle cent\u00e9simale), les bornes th\u00e9oriques deviennent strictement [0 %, 100 %].<\/p>\n<p>La borne inf\u00e9rieure de 0 % est atteinte si et seulement si l&rsquo;ad\u00e9quation est parfaite pour l&rsquo;int\u00e9gralit\u00e9 des observations, c&rsquo;est-\u00e0-dire lorsque y_t = y_hat_t pour tout <em>t<\/em> appartenant \u00e0 l&rsquo;\u00e9chantillon, avec une condition de non-nullit\u00e9 conjointe. \u00c0 l&rsquo;oppos\u00e9, la borne sup\u00e9rieure maximale (200 % ou 100 % selon la normalisation) est atteinte dans des situations d&rsquo;erreur polaire absolue : par exemple, lorsqu&rsquo;une pr\u00e9diction strictement positive est associ\u00e9e \u00e0 une observation nulle, ou lorsqu&rsquo;une sous-estimation pr\u00e9dit une valeur nulle pour une observation r\u00e9elle non nulle. Si la pr\u00e9vision approche une grandeur infinie alors que l&rsquo;observation demeure finie, le ratio tend asymptotiquement vers sa borne sup\u00e9rieure sans jamais la d\u00e9passer.<\/p>\n<p>Sur le plan de l&rsquo;optimisation math\u00e9matique et des algorithmes d&rsquo;apprentissage automatique r\u00e9solus par descente de gradient, la fonction de perte associ\u00e9e au SMAPE pr\u00e9sente une convexit\u00e9 locale mais souffre d&rsquo;une non-convexit\u00e9 globale et de singularit\u00e9s de d\u00e9rivabilit\u00e9. Plus pr\u00e9cis\u00e9ment, la pr\u00e9sence de valeurs absolues au num\u00e9rateur et au d\u00e9nominateur engendre des points de non-diff\u00e9rentiabilit\u00e9 lorsque y_t = y_hat_t ou lorsque les deux termes s&rsquo;annulent. Ces propri\u00e9t\u00e9s de surface imposent des pr\u00e9cautions particuli\u00e8res : le SMAPE est rarement employ\u00e9 comme fonction de perte directe lors de l&rsquo;entra\u00eenement des r\u00e9seaux profonds, mais plut\u00f4t comme m\u00e9trique d&rsquo;\u00e9valuation terminale et de s\u00e9lection de mod\u00e8les.<\/p>\n<h3>2.2 Comparaison structurelle entre SMAPE, MAPE et MASE<\/h3>\n<p>Pour appr\u00e9hender la singularit\u00e9 math\u00e9matique du SMAPE, il est imp\u00e9ratif de confronter analytiquement sa formulation \u00e0 celle de l&rsquo;erreur absolue moyenne en pourcentage (MAPE) et de l&rsquo;erreur moyenne absolue mise \u00e0 l&rsquo;\u00e9chelle (MASE, formul\u00e9e par <a rel=\"noopener noreferrer\" href=\"https:\/\/robjhyndman.com\/\">Rob J. Hyndman<\/a>). L&rsquo;examen de la d\u00e9riv\u00e9e partielle de l&rsquo;erreur par rapport \u00e0 la pr\u00e9vision y_hat_t r\u00e9v\u00e8le la source de la stabilit\u00e9 du SMAPE :<\/p>\n<p>Tandis que pour le MAPE, la d\u00e9riv\u00e9e par rapport \u00e0 une sous-estimation est constante (1 \/ y_t) mais cro\u00eet ind\u00e9finiment lorsque y_t d\u00e9cro\u00eet vers z\u00e9ro, le SMAPE r\u00e9gule dynamiquement sa pente gr\u00e2ce \u00e0 la pr\u00e9sence conjointe de |y_hat_t| au d\u00e9nominateur. Ainsi, une surestimation massive accro\u00eet simultan\u00e9ment le num\u00e9rateur et le d\u00e9nominateur, ce qui stabilise le rapport marginal d&rsquo;erreur et interdit toute divergence artificielle de la m\u00e9trique globale. Il en d\u00e9coule une p\u00e9nalisation remarquablement \u00e9quilibr\u00e9e des \u00e9carts directionnels, immunisant l&rsquo;analyse contre les distorsions extr\u00eames caus\u00e9es par quelques valeurs atypiques \u00e0 faible amplitude.<\/p>\n<p>En revanche, face \u00e0 des s\u00e9ries chronologiques non stationnaires ou int\u00e9grant des tendances stochastiques lourdes, la comparaison avec le MASE s&rsquo;av\u00e8re particuli\u00e8rement \u00e9clairante. Le MASE compare l&rsquo;erreur absolue du mod\u00e8le \u00e9tudi\u00e9 \u00e0 celle d&rsquo;une pr\u00e9vision na\u00efve de r\u00e9f\u00e9rence calcul\u00e9e sur l&rsquo;\u00e9chantillon historique. Si le MASE r\u00e9sout impeccablement la probl\u00e9matique des passages par z\u00e9ro sans distorsion sym\u00e9trique, il demeure d\u00e9pendant de la structure d&rsquo;auto-corr\u00e9lation temporelle des donn\u00e9es. Le SMAPE conserve l&rsquo;avantage d&rsquo;une lisibilit\u00e9 imm\u00e9diate sous forme de taux d&rsquo;erreur relatif universel, facilitant les arbitrages m\u00e9thodologiques entre des domaines scientifiques totalement disjoints.<\/p>\n<h2>3. Pr\u00e9paration de l&rsquo;environnement R pour l&rsquo;analyse pr\u00e9dictive<\/h2>\n<h3>3.1 Configuration des biblioth\u00e8ques n\u00e9cessaires<\/h3>\n<p>L&rsquo;ex\u00e9cution fluide et rigoureuse de calculs pr\u00e9dictifs dans R n\u00e9cessite la configuration pr\u00e9alable d&rsquo;un environnement computationnel structur\u00e9. Pour mener \u00e0 bien l&rsquo;ensemble des manipulations relatives au SMAPE, de son extraction standardis\u00e9e \u00e0 son benchmarking haute performance, un panel de biblioth\u00e8ques sp\u00e9cialis\u00e9es doit \u00eatre d\u00e9ploy\u00e9. Le package <strong>Metrics<\/strong> repr\u00e9sente le point d&rsquo;ancrage fondamental pour le calcul imm\u00e9diat d&rsquo;indicateurs de performance statistique. Parall\u00e8lement, l&rsquo;\u00e9cosyst\u00e8me <strong>tidyverse<\/strong>, incarn\u00e9 principalement par <strong>dplyr<\/strong> pour la manipulation analytique et <strong>ggplot2<\/strong> pour la s\u00e9miologie graphique, constitue le standard m\u00e9thodologique contemporain.<\/p>\n<p>Pour assurer la v\u00e9rification des hypoth\u00e8ses de performance computationnelle et la validation d&rsquo;algorithmes vectoris\u00e9s \u00e0 grande \u00e9chelle, le package <strong>microbenchmark<\/strong> est indispensable, permettant une \u00e9valuation chronom\u00e9trique de haute pr\u00e9cision au nanoseconde pr\u00e8s. Enfin, l&rsquo;utilisation \u00e9ventuelle de <strong>Rcpp<\/strong> ouvre la voie \u00e0 l&rsquo;incorporation de fragments de code compiled C++ hautement optimis\u00e9s. L&rsquo;initialisation de cet environnement implique la v\u00e9rification formelle de la version de l&rsquo;interpr\u00e9teur R sous-jacent (une version sup\u00e9rieure ou \u00e9gale \u00e0 4.1.0 \u00e9tant vivement recommand\u00e9e pour b\u00e9n\u00e9ficier du nouvel op\u00e9rateur de pipeline natif et des am\u00e9liorations de l&rsquo;allocation m\u00e9moire).<\/p>\n<p>L&rsquo;installation et l&rsquo;initialisation de ces composants s&rsquo;effectuent via les instructions standards de l&rsquo;\u00e9cosyst\u00e8me du <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/\">Comprehensive R Archive Network (CRAN)<\/a>. Une bonne pratique de programmation consiste \u00e0 encapsuler le chargement des modules dans une routine conditionnelle v\u00e9rifiant la disponibilit\u00e9 locale de chaque biblioth\u00e8que afin d&rsquo;assurer la parfaite reproductibilit\u00e9 de l&rsquo;analyse sur des infrastructures distantes ou des serveurs de calcul partag\u00e9s.<\/p>\n<h3>3.2 Structuration et typage des vecteurs de donn\u00e9es<\/h3>\n<p>La validit\u00e9 des calculs matriciels et vectoriels sous R d\u00e9pend de mani\u00e8re critique de l&rsquo;int\u00e9grit\u00e9 structurelle des vecteurs num\u00e9riques manipul\u00e9s. Lors de l&rsquo;\u00e9valuation pr\u00e9dictive, deux s\u00e9ries synchrones doivent \u00eatre align\u00e9es : le vecteur des observations r\u00e9elles, conventionnellement not\u00e9 <em>actual<\/em>, et le vecteur des valeurs ajust\u00e9es ou projet\u00e9es, not\u00e9 <em>forecast<\/em> ou <em>predicted<\/em>. La concordance dimensionnelle stricte est un pr\u00e9requis math\u00e9matique absolu : tout diff\u00e9rentiel de longueur entre ces deux entit\u00e9s d\u00e9clenche des comportements ind\u00e9sirables, notamment le recyclage implicite de vecteurs par R, source d&rsquo;erreurs silencieuses particuli\u00e8rement pernicieuses dans les publications scientifiques.<\/p>\n<p>Sur le plan du typage informatique, les donn\u00e9es doivent \u00eatre formellement contraintes au type double pr\u00e9cision (num\u00e9rique standard dans R). La pr\u00e9sence accidentelle d&rsquo;\u00e9l\u00e9ments factoriels, de cha\u00eenes de caract\u00e8res masqu\u00e9es ou de valeurs logiques alt\u00e8re l&rsquo;op\u00e9ration de division vectoris\u00e9e en d\u00e9clenchant des coercitions de type impr\u00e9vues ou des erreurs d&rsquo;ex\u00e9cution fatales. Il est par cons\u00e9quent imp\u00e9ratif de contr\u00f4ler pr\u00e9ventivement la nature des vecteurs \u00e0 l&rsquo;aide des fonctions de diagnostic primitives de R telles que is.numeric() et length().<\/p>\n<p>Dans un cadre m\u00e9thodologique optimal, l&rsquo;organisation de ces vecteurs au sein d&rsquo;une structure rectangulaire native, telle qu&rsquo;un data frame standard ou un tibble moderne, garantit l&rsquo;alignement strict des observations et pr\u00e9visions ligne \u00e0 ligne. Cette structuration appari\u00e9e emp\u00eache les d\u00e9synchronisations accidentelles d&rsquo;indices lors des op\u00e9rations de filtrage, de tri ou d&rsquo;imputation, et pr\u00e9pare id\u00e9alement l&rsquo;application transparente des pipelines d&rsquo;analyse fonctionnelle.<\/p>\n<h2>4. M\u00e9thode 1 : Calculer le SMAPE avec le package Metrics dans R<\/h2>\n<h3>4.1 Installation et syntaxe de base de la fonction smape()<\/h3>\n<p>L&rsquo;approche la plus directe et standardis\u00e9e pour \u00e9valuer l&rsquo;erreur sym\u00e9trique dans l&rsquo;\u00e9cosyst\u00e8me R repose sur l&rsquo;exploitation du package <strong>Metrics<\/strong>, d\u00e9velopp\u00e9 pour agr\u00e9ger les m\u00e9triques d&rsquo;erreur les plus reconnues en apprentissage supervis\u00e9 et en analyse de s\u00e9ries temporelles. Pour mettre en \u0153uvre cette m\u00e9thode, la biblioth\u00e8que doit \u00eatre install\u00e9e depuis le CRAN via l&rsquo;instruction install.packages(\u00ab\u00a0Metrics\u00a0\u00bb), puis rendue accessible dans la session de travail active au moyen de la commande library(Metrics).<\/p>\n<p>La fonction cardinale de cette biblioth\u00e8que d\u00e9di\u00e9e \u00e0 notre objet d&rsquo;\u00e9tude est smape(). Sa signature syntaxique s&rsquo;av\u00e8re d&rsquo;une concision exemplaire : elle sollicite principalement deux arguments obligatoires, nomm\u00e9s respectivement actual et predicted. Ces arguments acceptent des vecteurs num\u00e9riques continus de dimensions identiques repr\u00e9sentant les cibles mesur\u00e9es et les estimations du mod\u00e8le. Par d\u00e9faut, la fonction g\u00e8re la vectorisation interne sans n\u00e9cessiter de boucles it\u00e9ratives externes, garantissant un traitement rapide sur les jeux de donn\u00e9es standards.<\/p>\n<p>L&rsquo;ex\u00e9cution de la fonction sur un \u00e9chantillon minimal compos\u00e9, par exemple, d&rsquo;observations r\u00e9elles valant c(120, 145, 160, 180) et de pr\u00e9visions th\u00e9oriques fix\u00e9es \u00e0 c(115, 150, 155, 195), s&rsquo;effectue par l&rsquo;appel direct smape(actual, predicted). Le package proc\u00e8de automatiquement aux conversions arithm\u00e9tiques internes et d\u00e9livre une r\u00e9ponse scalaire unique, synth\u00e9tisant l&rsquo;erreur relative globale de l&rsquo;ajustement test\u00e9.<\/p>\n<h3>4.2 Interpr\u00e9tation statistique du r\u00e9sultat renvoy\u00e9 par Metrics<\/h3>\n<p>Une vigilance m\u00e9thodologique majeure s&rsquo;impose quant \u00e0 l&rsquo;interpr\u00e9tation num\u00e9rique de la sortie produite par Metrics::smape(). Contrairement \u00e0 certaines conventions litt\u00e9raires qui int\u00e8grent d&#8217;embl\u00e9e la multiplication par 100 pour exprimer directement un taux de pourcentage, la fonction smape() du package Metrics d\u00e9livre un r\u00e9sultat formul\u00e9 sous forme d\u00e9cimale, born\u00e9 sur l&rsquo;intervalle [0, 2] (ou plus exactement [0, 1] selon la normalisation interne adopt\u00e9e par son auteur qui utilise la variante sans multiplication terminale et avec moyenne simple).<\/p>\n<p>Ainsi, l&rsquo;obtention d&rsquo;une valeur scalaire \u00e9gale \u00e0 0.0485 ne doit en aucun cas \u00eatre interpr\u00e9t\u00e9e comme une d\u00e9rive marginale de 0.0485 %, mais bien comme une erreur relative sym\u00e9trique de 4.85 % apr\u00e8s application du coefficient multiplicateur de conversion. Cette nuance d&rsquo;\u00e9chelle, fr\u00e9quemment n\u00e9glig\u00e9e dans les analyses pr\u00e9liminaires, est susceptible d&rsquo;induire des erreurs d&rsquo;appr\u00e9ciation d&rsquo;un facteur 100 dans les rapports diagnostiques ou les communications acad\u00e9miques si la standardisation n&rsquo;est pas rigoureusement document\u00e9e.<\/p>\n<p>Dans les contextes empiriques, un r\u00e9sultat renvoy\u00e9 par Metrics se situant autour de 0.05 atteste d&rsquo;un ajustement de tr\u00e8s haute fid\u00e9lit\u00e9, couramment observ\u00e9 dans les processus physiques ou industriels d\u00e9terministes. Dans les sciences sociales et l&rsquo;analyse comportementale, o\u00f9 le bruit stochastique et la variance non expliqu\u00e9e sont structurellement pr\u00e9pond\u00e9rants, des valeurs d\u00e9livr\u00e9es par la fonction oscillant entre 0.15 et 0.25 (soit 15 % \u00e0 25 %) sont g\u00e9n\u00e9ralement consid\u00e9r\u00e9es comme d&rsquo;excellents indicateurs de performance, t\u00e9moignant d&rsquo;une capture satisfaisante de la dynamique sous-jacente sans surajustement.<\/p>\n<h3>4.3 Int\u00e9gration de Metrics::smape() dans un pipeline dplyr<\/h3>\n<p>L&rsquo;un des avantages fondamentaux de l&rsquo;\u00e9cosyst\u00e8me R moderne r\u00e9side dans l&rsquo;interop\u00e9rabilit\u00e9 des fonctions d&rsquo;\u00e9valuation au sein de flux de travail d\u00e9claratifs r\u00e9gis par <strong>dplyr<\/strong>. Dans les projets de recherche avanc\u00e9s, l&rsquo;analyste n&rsquo;\u00e9value que tr\u00e8s rarement un mod\u00e8le global unique ; il est confront\u00e9 \u00e0 des stratifications complexes, impliquant des cohortes exp\u00e9rimentales multiples, des cat\u00e9gories d\u00e9mographiques distinctes ou des horizons temporels segment\u00e9s.<\/p>\n<p>L&rsquo;int\u00e9gration de la fonction Metrics::smape() au sein d&rsquo;une cha\u00eene structur\u00e9e autour des verbes group_by() et summarise() permet d&rsquo;automatiser sans effort le calcul du SMAPE par strate. En encapsulant les donn\u00e9es dans un tibble regroupant les identifiants de groupes, les mesures r\u00e9elles et les estimations obtenues, il devient ais\u00e9 de formuler une requ\u00eate qui g\u00e9n\u00e8re une table r\u00e9capitulative pr\u00e9sentant le SMAPE sp\u00e9cifique \u00e0 chaque sous-ensemble de l&rsquo;\u00e9chantillon. L&rsquo;utilisation conjointe de la fonction across() facilite \u00e9galement l&rsquo;\u00e9valuation simultan\u00e9e de plusieurs architectures pr\u00e9dictives concurrentes (par exemple, des sorties issues d&rsquo;une r\u00e9gression lin\u00e9aire, d&rsquo;une for\u00eat al\u00e9atoire et d&rsquo;un mod\u00e8le de gradient boosting log\u00e9es dans des colonnes adjacentes).<\/p>\n<p>Ce paradigme computationnel \u00e9vite l&rsquo;\u00e9criture fastidieuse et source d&rsquo;erreurs de boucles d&rsquo;it\u00e9ration explicites, garantit une vitesse de traitement \u00e9lev\u00e9e gr\u00e2ce aux optimisations sous-jacentes du C++ mobilis\u00e9es par dplyr, et produit des structures de donn\u00e9es parfaitement normalis\u00e9es, imm\u00e9diatement pr\u00eates pour la synth\u00e8se tabulaire ou la visualisation comparative haute r\u00e9solution.<\/p>\n<h2>5. M\u00e9thode 2 : Impl\u00e9mentation manuelle et personnalis\u00e9e d&rsquo;une fonction SMAPE dans R<\/h2>\n<h3>5.1 \u00c9criture algorithmique de la fonction de base<\/h3>\n<p>Bien que l&rsquo;usage de biblioth\u00e8ques tierces pr\u00e9sente des commodit\u00e9s ind\u00e9niables, la ma\u00eetrise de l&rsquo;impl\u00e9mentation algorithmique personnalis\u00e9e demeure un pr\u00e9requis scientifique incontournable. \u00c9crire sa propre fonction SMAPE dans R permet de lever toute ambigu\u00eft\u00e9 sur la formulation math\u00e9matique exacte mise en \u0153uvre, d&rsquo;assurer une parfaite tra\u00e7abilit\u00e9 du code source, et de s&rsquo;affranchir de d\u00e9pendances logicielles superflues susceptibles d&rsquo;\u00e9voluer de mani\u00e8re non r\u00e9trocompatible au fil des versions du CRAN.<\/p>\n<p>Gr\u00e2ce \u00e0 la nature vectorielle intrins\u00e8que du langage R, l&rsquo;\u00e9criture d&rsquo;une fonction SMAPE robuste ne n\u00e9cessite aucune boucle explicite. Une formulation vectoris\u00e9e tire parti des primitives optimis\u00e9es en C sous le capot de l&rsquo;interpr\u00e9teur R. La fonction de base peut \u00eatre formalis\u00e9e comme suit : elle re\u00e7oit deux vecteurs num\u00e9riques <em>a<\/em> (observations) et <em>f<\/em> (pr\u00e9visions), calcule la valeur absolue de leur diff\u00e9rence \u00e9l\u00e9ment par \u00e9l\u00e9ment, divise ce terme par la demi-somme des valeurs absolues respectives, puis calcule la moyenne arithm\u00e9tique de ce vecteur r\u00e9sultant avant de multiplier le tout par 100.<\/p>\n<p>Sur le plan de l&rsquo;architecture logicielle, la fonction doit int\u00e9grer une documentation formelle via des commentaires d\u00e9taillant ses hypoth\u00e8ses, sp\u00e9cifier des arguments formels clairs et d\u00e9clarer des v\u00e9rifications pr\u00e9ventives pour s&rsquo;assurer que les entr\u00e9es sont bien des vecteurs de m\u00eame dimension. La mise en \u0153uvre vectoris\u00e9e offre une clart\u00e9 conceptuelle absolue : le calcul 2 * abs(f &#8211; a) \/ (abs(a) + abs(f)) produit instantan\u00e9ment un nouveau vecteur d&rsquo;erreurs individuelles pond\u00e9r\u00e9es, dont la moyenne mean() r\u00e9sume la performance sur l&rsquo;ensemble de l&rsquo;\u00e9chantillon de mani\u00e8re imm\u00e9diate et transparente.<\/p>\n<h3>5.2 V\u00e9rification et validation crois\u00e9e des r\u00e9sultats<\/h3>\n<p>Toute impl\u00e9mentation artisanale d&rsquo;un algorithme statistique doit obligatoirement subir une proc\u00e9dure de validation crois\u00e9e rigoureuse avant son d\u00e9ploiement \u00e0 grande \u00e9chelle. Cette v\u00e9rification consiste \u00e0 s&rsquo;assurer de l&rsquo;\u00e9quivalence num\u00e9rique stricte entre les sorties d\u00e9livr\u00e9es par la fonction personnalis\u00e9e et celles produites par les fonctions de r\u00e9f\u00e9rence audit\u00e9es issues de packages \u00e9tablis comme Metrics.<\/p>\n<p>Dans l&rsquo;environnement R, le test d&rsquo;\u00e9quivalence ne doit pas reposer sur l&rsquo;op\u00e9rateur d&rsquo;\u00e9galit\u00e9 stricte == ou sur la fonction identical(), car ces outils sont extr\u00eamement sensibles aux erreurs d&rsquo;arrondi infinit\u00e9simales inh\u00e9rentes \u00e0 l&rsquo;arithm\u00e9tique en virgule flottante standard (norme IEEE 754). Il convient plut\u00f4t de mobiliser la fonction primitive all.equal(), laquelle int\u00e8gre un seuil de tol\u00e9rance num\u00e9rique param\u00e9trable (g\u00e9n\u00e9ralement fix\u00e9 \u00e0 la racine carr\u00e9e de la pr\u00e9cision machine, de l&rsquo;ordre de 1.5e-8). Cet outil confirme si deux r\u00e9sultats sont algorithmiquement congruents nonobstant les micro-variations de calcul binaire.<\/p>\n<p>Lors de cette \u00e9tape de validation crois\u00e9e, l&rsquo;analyste doit imp\u00e9rativement veiller \u00e0 aligner les \u00e9chelles de comparaison. Si la fonction personnalis\u00e9e impl\u00e9mente la formule de Makridakis avec multiplication par 100, tandis que Metrics::smape() renvoie une fraction d\u00e9cimale non multipli\u00e9e, une multiplication ou division d&rsquo;harmonisation par 100 doit \u00eatre op\u00e9r\u00e9e avant d&rsquo;ex\u00e9cuter all.equal(). L&rsquo;obtention de la valeur logique TRUE atteste formellement de la fiabilit\u00e9 de l&rsquo;impl\u00e9mentation algorithmique.<\/p>\n<h3>5.3 Extension de la fonction pour la gestion des pond\u00e9rations<\/h3>\n<p>Dans de nombreuses configurations exp\u00e9rimentales, \u00e9pid\u00e9miologiques ou psychologiques, toutes les observations ne poss\u00e8dent pas un statut \u00e9pist\u00e9mique \u00e9quivalent. Les plans d&rsquo;\u00e9chantillonnage stratifi\u00e9s, les cohortes cliniques d\u00e9s\u00e9quilibr\u00e9es ou les s\u00e9ries temporelles comportant des phases d&rsquo;instabilit\u00e9 connue exigent une pond\u00e9ration diff\u00e9rentielle des unit\u00e9s statistiques. Un SMAPE standard non pond\u00e9r\u00e9 traite chaque r\u00e9sidu avec une neutralit\u00e9 arithm\u00e9tique uniforme qui peut masquer la d\u00e9gradation des performances sur des sous-populations critiques.<\/p>\n<p>Il devient d\u00e8s lors n\u00e9cessaire d&rsquo;\u00e9tendre la fonction de base pour concevoir un SMAPE pond\u00e9r\u00e9, ou WSMAPE (Weighted Symmetric Mean Absolute Percentage Error). Cette extension algorithmique introduit un troisi\u00e8me argument formel : un vecteur num\u00e9rique de poids, not\u00e9 <em>w<\/em>, dont la dimension doit \u00eatre strictement identique \u00e0 celle des vecteurs r\u00e9els et pr\u00e9dits. Chaque poids unitaire refl\u00e8te l&rsquo;importance relative assign\u00e9e \u00e0 l&rsquo;observation correspondante au sein du calcul global.<\/p>\n<p>Sur le plan math\u00e9matique, l&rsquo;algorithme proc\u00e8de d&rsquo;abord \u00e0 la normalisation interne de la masse des pond\u00e9rations en divisant chaque poids par la somme totale du vecteur <em>w<\/em>, garantissant que la somme des poids normalis\u00e9s soit strictement \u00e9gale \u00e0 1. Ensuite, au lieu d&rsquo;une moyenne simple non pond\u00e9r\u00e9e, la fonction ex\u00e9cute une moyenne pond\u00e9r\u00e9e via l&rsquo;op\u00e9rateur sum(w_norm * erreur_relative_individuelle). Cette g\u00e9n\u00e9ralisation matricielle conf\u00e8re une adaptabilit\u00e9 exceptionnelle \u00e0 la fonction, lui permettant de s&rsquo;ajuster avec une pr\u00e9cision chirurgicale aux contraintes m\u00e9thodologiques des protocoles empiriques les plus sophistiqu\u00e9s.<\/p>\n<h2>6. Gestion des cas limites et anomalies de donn\u00e9es dans R<\/h2>\n<h3>6.1 Traitement de l&rsquo;ind\u00e9termination li\u00e9e aux valeurs nulles simultan\u00e9es<\/h3>\n<p>L&rsquo;un des d\u00e9fis fondamentaux pos\u00e9s par la formulation alg\u00e9brique du SMAPE concerne l&rsquo;\u00e9mergence d&rsquo;ind\u00e9terminations math\u00e9matiques du type z\u00e9ro divis\u00e9 par z\u00e9ro (0 \/ 0). Ce cas de figure se produit in\u00e9vitablement lorsqu&rsquo;une observation r\u00e9elle est strictement \u00e9gale \u00e0 z\u00e9ro et que l&rsquo;algorithme pr\u00e9dictif projette lui aussi exactement la valeur z\u00e9ro. Dans cette situation, le num\u00e9rateur |0 &#8211; 0| s&rsquo;annule, mais le d\u00e9nominateur (|0| + |0|) s&rsquo;annule \u00e9galement, conduisant les syst\u00e8mes computationnels \u00e0 retourner la valeur non num\u00e9rique NaN (Not a Number).<\/p>\n<p>Pour pr\u00e9venir la propagation d\u00e9l\u00e9t\u00e8re de ces valeurs NaN qui viendraient contaminer l&rsquo;ensemble de la sommation et rendre le score global incalculable, la fonction doit int\u00e9grer une logique conditionnelle d\u00e9di\u00e9e. D&rsquo;un point de vue th\u00e9orique et conceptuel, si la pr\u00e9diction est parfaitement \u00e9gale \u00e0 l&rsquo;observation (toutes deux valant z\u00e9ro), l&rsquo;erreur relative commise par le mod\u00e8le est rigoureusement nulle. L&rsquo;algorithme doit donc intercepter ces occurrences et leur assigner arbitrairement mais logiquement la valeur 0.<\/p>\n<p>Deux solutions algorithmiques s&rsquo;offrent au programmeur sous R. La premi\u00e8re repose sur l&rsquo;utilisation d&rsquo;une instruction vectoris\u00e9e ifelse() ou sur l&rsquo;indexation logique directe pour remplacer les \u00e9l\u00e9ments ind\u00e9termin\u00e9s par z\u00e9ro apr\u00e8s l&rsquo;\u00e9valuation du d\u00e9nominateur. La seconde strat\u00e9gie, largement pris\u00e9e en ing\u00e9nierie num\u00e9rique, consiste \u00e0 ajouter une constante infinit\u00e9simale (commun\u00e9ment d\u00e9sign\u00e9e sous le terme d&rsquo;epsilon machine, par exemple 1e-10) au niveau du d\u00e9nominateur. Cette seconde technique \u00e9limine toute possibilit\u00e9 de division par z\u00e9ro sans alt\u00e9rer de mani\u00e8re significative la pr\u00e9cision des r\u00e9sultats num\u00e9riques.<\/p>\n<h3>6.2 Comportement du SMAPE face aux valeurs n\u00e9gatives<\/h3>\n<p>Bien que le SMAPE int\u00e8gre des valeurs absolues tant au num\u00e9rateur qu&rsquo;au d\u00e9nominateur, son application \u00e0 des jeux de donn\u00e9es comportant des grandeurs r\u00e9elles ou pr\u00e9dites n\u00e9gatives soul\u00e8ve d&rsquo;importantes distorsions conceptuelles et num\u00e9riques. Par construction originelle, les m\u00e9triques d&rsquo;erreur relative en pourcentage ont \u00e9t\u00e9 th\u00e9oris\u00e9es pour des grandeurs physiques, \u00e9conomiques ou d\u00e9mographiques strictement positives (volumes de ventes, temp\u00e9ratures en Kelvin, temps de r\u00e9ponse chronom\u00e9triques).<\/p>\n<p>Une anomalie particuli\u00e8rement grave survient lorsque l&rsquo;observation et la pr\u00e9diction sont de signes oppos\u00e9s et d&rsquo;amplitudes proches. Prenons le cas d&rsquo;une observation r\u00e9elle \u00e9gale \u00e0 +10 et d&rsquo;une pr\u00e9diction th\u00e9orique \u00e9tablie \u00e0 -10. L&rsquo;\u00e9cart absolu au num\u00e9rateur vaut |10 &#8211; (-10)| = 20. Au d\u00e9nominateur, la somme des valeurs absolues vaut |10| + |-10| = 20. Le ratio vaut 1 (ou 2 selon la pr\u00e9sence du facteur 2), ce qui demeure born\u00e9. Cependant, si une impl\u00e9mentation omet les valeurs absolues individuelles au d\u00e9nominateur et calcule |actual + forecast|, le d\u00e9nominateur devient |10 + (-10)| = 0, provoquant une explosion num\u00e9rique absolue.<\/p>\n<p>M\u00eame lorsque la formulation canonique utilisant la somme des valeurs absolues est scrupuleusement respect\u00e9e, la signification d&rsquo;un pourcentage d&rsquo;erreur sur des variables pouvant transiter par z\u00e9ro ou des valeurs n\u00e9gatives (comme des taux de croissance, des scores d&rsquo;affects n\u00e9gatifs normalis\u00e9s ou des potentiels \u00e9lectrophysiologiques) perd sa coh\u00e9rence s\u00e9mantique. Dans de telles circonstances, les recommandations m\u00e9thodologiques pr\u00e9conisent d&rsquo;op\u00e9rer une translation lin\u00e9aire pr\u00e9alable des donn\u00e9es pour garantir leur positivit\u00e9 stricte, ou de privil\u00e9gier des indicateurs d&rsquo;ad\u00e9quation non relatifs tels que la MAE ou le RMSE.<\/p>\n<h3>6.3 Gestion robuste des valeurs manquantes (NA et NaN)<\/h3>\n<p>La collecte de donn\u00e9es r\u00e9elles, en particulier dans les dispositifs longitudinaux ou les protocoles comportementaux automatis\u00e9s, est presque syst\u00e9matiquement confront\u00e9e au ph\u00e9nom\u00e8ne d&rsquo;attrition et de donn\u00e9es manquantes. Dans R, ces anomalies sont encapsul\u00e9es sous le statut g\u00e9n\u00e9rique NA (Not Available). Par d\u00e9faut, la philosophie arithm\u00e9tique de R impose une propagation stricte de l&rsquo;incertitude : toute op\u00e9ration computationnelle impliquant ne serait-ce qu&rsquo;un seul \u00e9l\u00e9ment NA retourne imm\u00e9diatement NA pour l&rsquo;ensemble du calcul.<\/p>\n<p>Pour conf\u00e9rer \u00e0 une fonction personnalis\u00e9e un niveau de robustesse op\u00e9rationnelle \u00e9quivalent aux fonctions de production, il est imp\u00e9ratif d&rsquo;int\u00e9grer un argument formel bool\u00e9en, traditionnellement nomm\u00e9 na.rm, initialis\u00e9 par d\u00e9faut \u00e0 FALSE. Lorsque ce param\u00e8tre est bascul\u00e9 sur TRUE par l&rsquo;utilisateur, l&rsquo;algorithme doit proc\u00e9der \u00e0 une extraction s\u00e9lective des paires compl\u00e8tes avant d&rsquo;enclencher les calculs matriciels. Cette exclusion ne doit jamais s&rsquo;op\u00e9rer de mani\u00e8re isol\u00e9e sur un seul vecteur, sous peine de rompre imm\u00e9diatement l&rsquo;appariement synchrone entre les observations et leurs pr\u00e9visions associ\u00e9es.<\/p>\n<p>La m\u00e9thode la plus rigoureuse consiste \u00e0 identifier les indices de positions valides au moyen de la fonction primitive complete.cases(actual, forecast). Cette fonction g\u00e9n\u00e8re un masque logique bool\u00e9en qui ne conserve que les observations pour lesquelles la mesure r\u00e9elle et l&rsquo;estimation th\u00e9orique sont conjointement renseign\u00e9es. D\u00e8s lors, le SMAPE peut \u00eatre calcul\u00e9 sur le sous-\u00e9chantillon int\u00e8gre sans risque de biais de d\u00e9salignement. Dans un cadre analytique plus exhaustif, l&rsquo;exclusion aveugle des valeurs manquantes peut toutefois induire un biais de s\u00e9lection si les donn\u00e9es ne sont pas manquantes de mani\u00e8re compl\u00e8tement al\u00e9atoire (MCAR), n\u00e9cessitant alors le d\u00e9ploiement pr\u00e9alable d&rsquo;algorithmes d&rsquo;imputation multiple appropri\u00e9s aux s\u00e9ries temporelles.<\/p>\n<h2>7. Variantes de formulation du SMAPE dans l&rsquo;\u00e9cosyst\u00e8me R<\/h2>\n<h3>7.1 La variante standard de Makridakis vs la variante d&rsquo;Armstrong<\/h3>\n<p>La litt\u00e9rature scientifique relative aux sciences de la pr\u00e9vision est travers\u00e9e par une divergence historique majeure quant \u00e0 la formulation du SMAPE, ce qui g\u00e9n\u00e8re une ambigu\u00eft\u00e9 substantielle dans l&rsquo;\u00e9cosyst\u00e8me des packages R. Cette divergence oppose la formulation standard d\u00e9velopp\u00e9e par Spyros Makridakis lors des comp\u00e9titions M3 et M4 \u00e0 la variante modifi\u00e9e soutenue par J. Scott Armstrong.<\/p>\n<p>La diff\u00e9rence math\u00e9matique pivot r\u00e9side exclusivement dans la pr\u00e9sence ou l&rsquo;absence du facteur 2 au num\u00e9rateur, modifiant radicalement la constante de normalisation au d\u00e9nominateur :<\/p>\n<ul>\n<li><strong>Formulation standard de Makridakis :<\/strong> int\u00e8gre le coefficient 2, ce qui revient \u00e0 diviser l&rsquo;erreur absolue par la moyenne des deux grandeurs ((|y_t| + |y_hat_t|) \/ 2). Cette \u00e9chelle d&rsquo;erreur oscille th\u00e9oriquement entre 0 % et 200 %.<\/li>\n<li><strong>Formulation d&rsquo;Armstrong :<\/strong> omet d\u00e9lib\u00e9r\u00e9ment le coefficient multiplicateur 2. Le d\u00e9nominateur correspond alors \u00e0 la somme brute des grandeurs (|y_t| + |y_hat_t|). En cons\u00e9quence, le r\u00e9sultat est m\u00e9caniquement divis\u00e9 par deux, contraignant la m\u00e9trique sur un intervalle strictement born\u00e9 entre 0 % et 100 %.<\/li>\n<\/ul>\n<p>Cette dualit\u00e9 de normalisation engendre une vuln\u00e9rabilit\u00e9 critique lors de la r\u00e9alisation de revues syst\u00e9matiques de litt\u00e9rature ou de m\u00e9ta-analyses. Deux \u00e9tudes mod\u00e9lisant le m\u00eame ph\u00e9nom\u00e8ne et affichant un SMAPE de 15 % peuvent en r\u00e9alit\u00e9 refl\u00e9ter une performance pr\u00e9dictive divergente du simple au double selon que les auteurs ont mobilis\u00e9 la convention de Makridakis ou celle d&rsquo;Armstrong. Il incombe ainsi \u00e0 chaque chercheur de stipuler explicitement la formule mobilis\u00e9e et de documenter scrupuleusement la structure interne de la fonction R sollicit\u00e9e.<\/p>\n<h3>7.2 Comparatif des fonctions \u00e9quivalentes \u00e0 travers les packages R<\/h3>\n<p>Au-del\u00e0 de la biblioth\u00e8que <strong>Metrics<\/strong>, plusieurs autres extensions majeures du CRAN int\u00e8grent des routines de calcul pour le SMAPE, chacune adoptant des partis pris architecturaux et math\u00e9matiques qu&rsquo;il convient de cartographier avec rigueur. Le package <strong>smooth<\/strong>, d\u00e9di\u00e9 \u00e0 la mod\u00e9lisation avanc\u00e9e par lissage exponentiel et espaces d&rsquo;\u00e9tats, propose ainsi sa propre routine smape(). Cette derni\u00e8re s&rsquo;aligne rigoureusement sur la formulation originale de Makridakis, int\u00e9grant le coefficient 2 et renvoyant par d\u00e9faut une \u00e9chelle exprim\u00e9e en pourcentage plein.<\/p>\n<p>Dans l&rsquo;\u00e9cosyst\u00e8me moderne du pr\u00e9visionnel structur\u00e9 autour du framework tidyverts, les extensions <strong>fable<\/strong> et <strong>fabletools<\/strong> constituent les successeurs m\u00e9thodologiques du c\u00e9l\u00e8bre package <strong>forecast<\/strong> de Rob Hyndman. La fonction d&rsquo;\u00e9valuation accuracy() propos\u00e9e par fabletools int\u00e8gre nativement le calcul du SMAPE lors de la comparaison de mod\u00e8les temporels. Conform\u00e9ment aux pr\u00e9conisations didactiques de Hyndman, l&rsquo;impl\u00e9mentation de fabletools recourt \u00e0 la convention standardis\u00e9e [0 %, 200 %], facilitant la lecture directe des performances sur des collections massives de s\u00e9ries chronologiques.<\/p>\n<p>Le tableau comparatif suivant synth\u00e9tise les propri\u00e9t\u00e9s op\u00e9rationnelles des principales impl\u00e9mentations disponibles sous R :<\/p>\n<ul>\n<li><strong>Metrics::smape :<\/strong> Formulation avec somme brute sans facteur 2 par d\u00e9faut ; sortie d\u00e9cimale comprise entre 0 et 1 (multipli\u00e9e par 100 pour obtenir une \u00e9chelle 0-100 %).<\/li>\n<li><strong>smooth::smape :<\/strong> Formulation canonique de Makridakis avec facteur 2 au num\u00e9rateur ; sortie directement calibr\u00e9e en pourcentage sur l&rsquo;intervalle 0-200 %.<\/li>\n<li><strong>fabletools::accuracy :<\/strong> Int\u00e9gration dans un tableau diagnostique standardis\u00e9 multi-m\u00e9triques ; convention Makridakis sur l&rsquo;intervalle 0-200 %.<\/li>\n<li><strong>Impl\u00e9mentation personnalis\u00e9e rigoureuse :<\/strong> Contr\u00f4le total des param\u00e8tres d&rsquo;\u00e9chelle, de l&rsquo;\u00e9limination des valeurs manquantes et du traitement des z\u00e9ros par l&rsquo;analyste.<\/li>\n<\/ul>\n<h2>8. Comparaison empirique du SMAPE avec d&rsquo;autres m\u00e9triques d&rsquo;erreur dans R<\/h2>\n<h3>8.1 SMAPE vs MAPE : sensibilit\u00e9 aux asym\u00e9tries<\/h3>\n<p>L&rsquo;un des fondements de la sup\u00e9riorit\u00e9 m\u00e9thodologique du SMAPE sur le MAPE r\u00e9side dans sa neutralit\u00e9 face au sens de l&rsquo;erreur pr\u00e9dictive. Pour expliciter empiriquement cette distorsion structurelle du MAPE dans R, il suffit de concevoir une simulation contr\u00f4l\u00e9e comparant deux sc\u00e9narios d&rsquo;erreur oppos\u00e9s : une sous-estimation syst\u00e9matique et une surestimation syst\u00e9matique de m\u00eame magnitude absolue.<\/p>\n<p>Consid\u00e9rons une observation empirique r\u00e9elle \u00e9gale \u00e0 100 unit\u00e9s. Dans un premier sc\u00e9nario, le mod\u00e8le sous-estime l&rsquo;observation en pr\u00e9disant une valeur de 50 (\u00e9cart de -50 unit\u00e9s). Dans un second sc\u00e9nario, le mod\u00e8le surestime l&rsquo;observation en pr\u00e9disant une valeur de 150 (\u00e9cart de +50 unit\u00e9s). Lorsque l&rsquo;on applique le MAPE classique :<\/p>\n<ul>\n<li>Cas de sous-estimation : (|100 &#8211; 50| \/ 100) * 100 = 50.0 % d&rsquo;erreur.<\/li>\n<li>Cas de surestimation : (|100 &#8211; 150| \/ 100) * 100 = 50.0 % d&rsquo;erreur.<\/li>\n<\/ul>\n<p>Cette \u00e9galit\u00e9 apparente dissimule une pathologie d\u00e8s que les erreurs s&rsquo;amplifient. Si le mod\u00e8le pr\u00e9dit 10 pour une valeur de 100 (erreur de 90 unit\u00e9s), le MAPE atteint 90 %. Mais s&rsquo;il pr\u00e9dit 190 pour une valeur de 100 (erreur de 90 unit\u00e9s), le MAPE est de 90 %. Cependant, si la pr\u00e9diction devient 300 pour une valeur de 100, le MAPE bondit \u00e0 200 %, et si la pr\u00e9diction est de 1000, le MAPE atteint 900 %. En revanche, dans le cas d&rsquo;une sous-estimation, m\u00eame si la pr\u00e9diction s&rsquo;effondre \u00e0 0, le MAPE ne d\u00e9passera jamais 100 % ! Cette asym\u00e9trie impose une contrainte math\u00e9matique d\u00e9loyale qui biaise l&rsquo;entra\u00eenement des mod\u00e8les, favorisant artificiellement les pr\u00e9dictions basses.<\/p>\n<p>Sous la formulation sym\u00e9trique du SMAPE de Makridakis, le calcul pour la pr\u00e9diction de 300 face \u00e0 100 donne : 2 * |100 &#8211; 300| \/ (100 + 300) * 100 = 2 * 200 \/ 400 * 100 = 100.0 %. Pour une pr\u00e9diction s&rsquo;approchant de l&rsquo;infini, la m\u00e9trique se stabilise rigoureusement \u00e0 sa borne de 200 %. Le SMAPE offre ainsi une surface de r\u00e9ponse harmonieuse qui prot\u00e8ge le diagnostic statistique contre les envol\u00e9es erratiques cons\u00e9cutives aux ph\u00e9nom\u00e8nes de d\u00e9passement pr\u00e9dictif.<\/p>\n<h3>8.2 SMAPE vs RMSE et MAE : erreurs relatives contre erreurs absolues<\/h3>\n<p>La comparaison entre le SMAPE et les m\u00e9triques d&rsquo;erreur absolue telles que la MAE (Mean Absolute Error) ou quadratique comme le RMSE (Root Mean Squared Error) met en exergue des compromis \u00e9pist\u00e9mologiques fondamentaux. La MAE et le RMSE s&rsquo;expriment rigoureusement dans l&rsquo;unit\u00e9 physique de la variable mod\u00e9lis\u00e9e (par exemple des millisecondes, des concentrations sanguines de cortisol ou des scores d&rsquo;anxi\u00e9t\u00e9 brute). Cette propri\u00e9t\u00e9 leur conf\u00e8re une clart\u00e9 d&rsquo;interpr\u00e9tation contextuelle directe.<\/p>\n<p>Cependant, cette d\u00e9pendance \u00e0 l&rsquo;unit\u00e9 de mesure interdit toute comparaison d&rsquo;ad\u00e9quation entre des ph\u00e9nom\u00e8nes op\u00e9rant sur des ordres de grandeur distincts. Le tableau ci-dessous explicite les contrastes op\u00e9rationnels s\u00e9parant ces diff\u00e9rentes m\u00e9triques d&rsquo;\u00e9valuation au sein de R :<\/p>\n<ul>\n<li><strong>RMSE (Root Mean Squared Error) :<\/strong> Tr\u00e8s forte sensibilit\u00e9 aux valeurs aberrantes (outliers) en raison de l&rsquo;\u00e9l\u00e9vation des \u00e9carts au carr\u00e9 ; non invariant d&rsquo;\u00e9chelle ; unit\u00e9 physique d&rsquo;origine.<\/li>\n<li><strong>MAE (Mean Absolute Error) :<\/strong> Sensibilit\u00e9 lin\u00e9aire mod\u00e9r\u00e9e aux \u00e9carts r\u00e9siduels extr\u00eames ; non invariant d&rsquo;\u00e9chelle ; unit\u00e9 physique d&rsquo;origine.<\/li>\n<li><strong>MAPE (Mean Absolute Percentage Error) :<\/strong> Invariant d&rsquo;\u00e9chelle ; asym\u00e9trie p\u00e9nalisant s\u00e9v\u00e8rement les surestimations ; instabilit\u00e9 absolue en pr\u00e9sence de valeurs r\u00e9elles approchant de z\u00e9ro.<\/li>\n<li><strong>SMAPE (Symmetric MAPE) :<\/strong> Invariant d&rsquo;\u00e9chelle ; robuste face aux asym\u00e9tries de pr\u00e9diction ; born\u00e9 ; pr\u00e9servation d&rsquo;une interpr\u00e9tabilit\u00e9 relative sur l&rsquo;ensemble du spectre d&rsquo;amplitude des s\u00e9ries.<\/li>\n<\/ul>\n<p>Dans le cadre d&rsquo;un protocole d&rsquo;analyse diagnostique rigoureux, il est formellement d\u00e9conseill\u00e9 de fonder son jugement sur un indicateur isol\u00e9. L&rsquo;articulation conjointe du SMAPE pour appr\u00e9cier l&rsquo;ad\u00e9quation relative multi-s\u00e9ries, du RMSE pour d\u00e9busquer les d\u00e9rives r\u00e9siduelles massives et de la MAE pour quantifier l&rsquo;erreur moyenne concr\u00e8te dans l&rsquo;espace op\u00e9rationnel repr\u00e9sente la norme d&rsquo;excellence pr\u00e9conis\u00e9e par la recherche statistique contemporaine.<\/p>\n<h2>9. Application pratique : \u00c9valuation de mod\u00e8les de pr\u00e9diction comportementale<\/h2>\n<h3>9.1 Construction d&rsquo;un jeu de donn\u00e9es simulant des r\u00e9ponses comportementales<\/h3>\n<p>Afin d&rsquo;illustrer concr\u00e8tement la mise en \u0153uvre computationnelle du calcul du SMAPE sous R, nous d\u00e9veloppons un protocole exp\u00e9rimental simul\u00e9 caract\u00e9risant une s\u00e9rie temporelle comportementale. Soit l&rsquo;\u00e9valuation longitudinale du niveau d&rsquo;attention soutenue ou de r\u00e9activit\u00e9 motrice mesur\u00e9e quotidiennement chez une cohorte de sujets sur une p\u00e9riode continue de 365 jours. Cette s\u00e9rie temporelle int\u00e8gre une composante d\u00e9terministe de tendance, une saisonnalit\u00e9 hebdomadaire marqu\u00e9e (li\u00e9e aux variations de charge cognitive au cours des jours de la semaine) ainsi qu&rsquo;un bruit stochastique gaussien simulant les fluctuations biologiques al\u00e9atoires.<\/p>\n<p>Pour assurer une stricte reproductibilit\u00e9 scientifique des donn\u00e9es g\u00e9n\u00e9r\u00e9es, la graine du g\u00e9n\u00e9rateur de nombres pseudo-al\u00e9atoires de R est express\u00e9ment fix\u00e9e au moyen de la commande set.seed(12345). La s\u00e9rie temporelle est structur\u00e9e autour d&rsquo;une \u00e9quation g\u00e9n\u00e9ratrice :<\/p>\n<p>y_t = 50 + 0.05 * t + 10 * sin(2 * pi * t \/ 7) + epsilon_t<\/p>\n<p>o\u00f9 <em>t<\/em> varie de 1 \u00e0 365 et <em>epsilon_t<\/em> est distribu\u00e9 selon une loi normale standard de moyenne nulle et d&rsquo;\u00e9cart-type \u00e9gal \u00e0 3. Le jeu de donn\u00e9es ainsi g\u00e9n\u00e9r\u00e9 est partitionn\u00e9 conform\u00e9ment aux canons de la science des donn\u00e9es : une phase d&rsquo;entra\u00eenement (les 300 premiers jours) est r\u00e9serv\u00e9e \u00e0 l&rsquo;apprentissage des mod\u00e8les concurrents, tandis qu&rsquo;un ensemble de test ind\u00e9pendant (les 65 derniers jours) est strictement conserv\u00e9 pour \u00e9valuer les performances pr\u00e9dictives sans risque de contamination d&rsquo;information (data leakage).<\/p>\n<h3>9.2 Ajustement de mod\u00e8les pr\u00e9dictifs concurrents sous R<\/h3>\n<p>Sur cet ensemble d&rsquo;entra\u00eenement comportemental, deux m\u00e9thodologies pr\u00e9dictives de nature distincte sont d\u00e9ploy\u00e9es via les packages classiques d&rsquo;analyse temporelle : un mod\u00e8le autor\u00e9gressif int\u00e9gr\u00e9 \u00e0 moyenne mobile (ARIMA) et un mod\u00e8le de lissage exponentiel bas\u00e9 sur des espaces d&rsquo;\u00e9tats (ETS, Error-Trend-Seasonal). Ces mod\u00e8les incarnent deux visions statistiques concurrentes pour la d\u00e9composition des signaux temporels.<\/p>\n<p>Le calibrage du mod\u00e8le ARIMA est ex\u00e9cut\u00e9 via l&rsquo;algorithme d&rsquo;optimisation automatique auto.arima() issu de la biblioth\u00e8que <strong>forecast<\/strong>, lequel s\u00e9lectionne le meilleur triplet de param\u00e8tres (p, d, q) par minimisation rigoureuse du crit\u00e8re d&rsquo;information d&rsquo;Akaike corrig\u00e9 (AICc). Parall\u00e8lement, le mod\u00e8le ETS est ajust\u00e9 au moyen de la fonction ets(), qui optimise la formulation des erreurs, de la trajectoire tendancielle et des coefficients d&rsquo;amortissement saisonnier.<\/p>\n<p>Une fois les deux architectures param\u00e9tr\u00e9es sur les 300 observations historiques, des projections ponctuelles sont g\u00e9n\u00e9r\u00e9es sur un horizon futur correspondant exactement aux 65 jours constituant le segment de validation out-of-sample. Les vecteurs pr\u00e9dictifs extraits de ces projections repr\u00e9sentent les estimations concurrentes qui vont \u00eatre soumises au verdict comparatif du SMAPE face aux observations r\u00e9elles non manipul\u00e9es lors de la phase d&rsquo;apprentissage.<\/p>\n<h3>9.3 S\u00e9lection du mod\u00e8le optimal bas\u00e9e sur le score SMAPE<\/h3>\n<p>La phase d&rsquo;arbitrage m\u00e9thodologique r\u00e9side dans l&rsquo;estimation computationnelle de l&rsquo;erreur sym\u00e9trique relative pour chaque famille algorithmique sur la fen\u00eatre temporelle de test. \u00c0 l&rsquo;aide de notre fonction vectoris\u00e9e rigoureusement valid\u00e9e, le SMAPE est calcul\u00e9 s\u00e9par\u00e9ment pour le mod\u00e8le ARIMA et pour le mod\u00e8le ETS face aux observations empiriques du segment d&rsquo;\u00e9valuation.<\/p>\n<p>Supposons que le mod\u00e8le ARIMA produise un score SMAPE de 7.42 %, tandis que le mod\u00e8le ETS affiche un score de 11.18 %. L&rsquo;interpr\u00e9tation statistique de cet \u00e9cart met en lumi\u00e8re la capacit\u00e9 sup\u00e9rieure du mod\u00e8le ARIMA \u00e0 \u00e9pouser les oscillations cycliques rapides induites par la composante sinuso\u00efdale hebdomadaire. Ce score permet d&rsquo;affirmer avec certitude que sur le plan de l&rsquo;ad\u00e9quation relative sym\u00e9trique, le cadre autor\u00e9gressif d\u00e9livre une pr\u00e9cision accrue d&rsquo;environ 3.76 points de pourcentage par rapport \u00e0 son concurrent direct.<\/p>\n<p>Il importe toutefois de souligner qu&rsquo;en milieu acad\u00e9mique, l&rsquo;arbitrage pr\u00e9dictif ne saurait reposer sur une d\u00e9cision monocrit\u00e8re aveugle. Bien que le score SMAPE offre un barom\u00e8tre d\u00e9cisif de l&rsquo;erreur moyenne out-of-sample, il doit \u00eatre syst\u00e9matiquement compl\u00e9t\u00e9 par l&rsquo;analyse des fonctions d&rsquo;auto-corr\u00e9lation des r\u00e9sidus (via le test de Ljung-Box) et par la confrontation aux crit\u00e8res d&rsquo;information intrins\u00e8ques (AIC, BIC) afin de certifier que la sup\u00e9riorit\u00e9 observ\u00e9e ne d\u00e9coule pas d&rsquo;un surapprentissage marginalement avantageux sur le sous-ensemble de test s\u00e9lectionn\u00e9.<\/p>\n<h2>10. Optimisation des performances computationnelles pour grands volumes de donn\u00e9es<\/h2>\n<h3>10.1 Benchmarking des diff\u00e9rentes m\u00e9thodes sous R<\/h3>\n<p>Dans les contextes applicatifs modernes caract\u00e9ris\u00e9s par le traitement de flux massifs de donn\u00e9es (big data) \u2014 tels que les logs comportementaux d&rsquo;applications mobiles, les trajectoires de capteurs biom\u00e9triques \u00e0 haute fr\u00e9quence ou les portefeuilles financiers compos\u00e9s de millions d&rsquo;actifs synchronis\u00e9s \u2014 la vitesse d&rsquo;ex\u00e9cution algorithmique devient un enjeu op\u00e9rationnel critique. L&rsquo;\u00e9valuation du co\u00fbt computationnel des diff\u00e9rentes variantes d&rsquo;impl\u00e9mentation du SMAPE dans R permet de guider l&rsquo;ing\u00e9nieur vers la solution optimale en termes de latence processeur et d&#8217;empreinte m\u00e9moire.<\/p>\n<p>\u00c0 l&rsquo;aide de la biblioth\u00e8que <strong>microbenchmark<\/strong>, il est possible de soumettre \u00e0 une confrontation chronom\u00e9trique rigoureuse quatre impl\u00e9mentations concurrentes appliqu\u00e9es \u00e0 un \u00e9chantillon vectoriel synth\u00e9tique de 1 000 000 d&rsquo;observations appari\u00e9es :<\/p>\n<ul>\n<li><strong>Approche par boucle it\u00e9rative native (for loop) :<\/strong> L&rsquo;it\u00e9ration imp\u00e9rative classique en R pur, g\u00e9n\u00e9ralement lente en raison du co\u00fbt d&rsquo;interpr\u00e9tation dynamique ligne par ligne.<\/li>\n<li><strong>Approche vectoris\u00e9e de base R :<\/strong> L&rsquo;exploitation directe des primitives matricielles internes C du langage via la syntaxe mean(2 * abs(f &#8211; a) \/ (abs(a) + abs(f))).<\/li>\n<li><strong>Fonction standard Metrics::smape() :<\/strong> La routine encapsul\u00e9e de la biblioth\u00e8que CRAN.<\/li>\n<li><strong>Approche optimis\u00e9e data.table :<\/strong> L&rsquo;utilisation du moteur haute performance de l&rsquo;extension <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=data.table\">data.table<\/a> exploitant le multi-threading et l&rsquo;acc\u00e8s m\u00e9moire contigu.<\/li>\n<\/ul>\n<p>Les r\u00e9sultats empiriques d\u00e9montrent invariablement la sup\u00e9riorit\u00e9 \u00e9crasante des approches vectoris\u00e9es par rapport aux boucles it\u00e9ratives scalaires. Alors qu&rsquo;une boucle it\u00e9rative en R peut requ\u00e9rir plusieurs secondes pour traiter un million d&rsquo;\u00e9l\u00e9ments en raison des allocations d&rsquo;adresses r\u00e9p\u00e9t\u00e9es, la formulation vectoris\u00e9e de base r\u00e9alise cette op\u00e9ration en une fraction de seconde (g\u00e9n\u00e9ralement entre 15 et 30 millisecondes selon l&rsquo;architecture mat\u00e9rielle h\u00f4te). La fonction Metrics::smape() affiche des performances comparables \u00e0 l&rsquo;\u00e9criture vectoris\u00e9e personnalis\u00e9e, confirmant qu&rsquo;elle repose elle-m\u00eame sur des op\u00e9rations vectorielles optimis\u00e9es en C.<\/p>\n<h3>10.2 Acc\u00e9l\u00e9ration du calcul du SMAPE avec Rcpp<\/h3>\n<p>Pour les sc\u00e9narios computationnels extr\u00eames, tels que les protocoles de r\u00e9\u00e9chantillonnage par bootstrap intensif impliquant des centaines de milliers de r\u00e9plications sur des cohortes volumineuses, ou les proc\u00e9dures d&rsquo;optimisation d&rsquo;hyperparam\u00e8tres par recherche sur grille (grid search), m\u00eame la vectorisation de R peut r\u00e9v\u00e9ler ses limites en termes de gestion fine de la m\u00e9moire cache et d&rsquo;acc\u00e8s bas niveau aux registres du processeur. Le recours \u00e0 l&rsquo;extension <strong>Rcpp<\/strong> permet alors de franchir un cap d&rsquo;efficacit\u00e9 en r\u00e9digeant l&rsquo;algorithme directement en C++.<\/p>\n<p>Une impl\u00e9mentation compiled C++ via Rcpp s&rsquo;affranchit totalement du ramasse-miettes (garbage collector) de R durant l&rsquo;ex\u00e9cution de la boucle d&rsquo;accumulation. Le code parcourt les vecteurs r\u00e9els et pr\u00e9dits \u00e0 l&rsquo;aide d&rsquo;un pointeur contigu unique, accumulant la somme des erreurs sym\u00e9triques dans un registre scalaire local sans jamais allouer de vecteurs interm\u00e9diaires dans la m\u00e9moire vive globale. Cette absence compl\u00e8te d&rsquo;allocation interm\u00e9diaire pour les vecteurs de diff\u00e9rences et de sommes absolues all\u00e8ge dramatiquement la pression sur la m\u00e9moire vive.<\/p>\n<p>L&rsquo;int\u00e9gration de ce fragment C++ compil\u00e9 s&rsquo;op\u00e8re de mani\u00e8re parfaitement transparente dans un script R standard gr\u00e2ce \u00e0 l&rsquo;instruction cppFunction() ou au sour\u00e7age d&rsquo;un fichier source externe via sourceCpp(). Les gains chronom\u00e9triques mesur\u00e9s attestent d&rsquo;une r\u00e9duction drastique des temps d&rsquo;ex\u00e9cution, autorisant des analyses computationnellement intensives qui seraient prohibitives sous d&rsquo;autres environnements interpr\u00e9t\u00e9s.<\/p>\n<h2>11. Visualisation diagnostique des erreurs SMAPE avec ggplot2<\/h2>\n<h3>11.1 Graphique de dispersion des valeurs r\u00e9elles vs pr\u00e9dites<\/h3>\n<p>La compr\u00e9hension approfondie du comportement d&rsquo;un mod\u00e8le pr\u00e9dictif ne saurait se limiter \u00e0 la restitution d&rsquo;un scalaire synth\u00e9tique global. Une m\u00e9trique agr\u00e9g\u00e9e comme le SMAPE peut masquer des r\u00e9gimes de sous-performance localis\u00e9s ou des disparit\u00e9s syst\u00e9matiques en fonction du niveau d&rsquo;amplitude de la variable cible. La visualisation diagnostique haute fid\u00e9lit\u00e9 au moyen de <strong>ggplot2<\/strong> repr\u00e9sente l&rsquo;instrument d&rsquo;investigation privil\u00e9gi\u00e9 pour contextualiser l&rsquo;origine spatiale de l&rsquo;erreur.<\/p>\n<p>Un premier graphique indispensable repose sur la construction d&rsquo;un nuage de dispersion confrontant les valeurs observ\u00e9es r\u00e9elles (port\u00e9es sur l&rsquo;axe des abscisses) aux valeurs pr\u00e9dites par l&rsquo;algorithme (port\u00e9es sur l&rsquo;axe des ordonn\u00e9es). Sur ce plan cart\u00e9sien, la bissectrice parfaite (droite d&rsquo;\u00e9quation y = x) mat\u00e9rialise l&rsquo;id\u00e9al th\u00e9orique d&rsquo;une concordance absolue exempte de tout biais d&rsquo;estimation. Les points d&rsquo;\u00e9chantillonnage situ\u00e9s au-dessus de cette ligne t\u00e9moignent d&rsquo;une surestimation du mod\u00e8le, tandis que les points sous-jacents indiquent une sous-estimation.<\/p>\n<p>Pour enrichir cette repr\u00e9sentation d&rsquo;une dimension analytique imm\u00e9diate, chaque point peut \u00eatre color\u00e9 selon un d\u00e9grad\u00e9 continu refl\u00e9tant sa contribution unitaire au score SMAPE, calcul\u00e9e via la composante locale 2 * |y &#8211; y_hat| \/ (|y| + |y_hat|). L&rsquo;application des standards s\u00e9miologiques rigoureux conformes aux recommandations de l&rsquo;American Psychological Association (APA) \u2014 caract\u00e9ris\u00e9s par un fond \u00e9pur\u00e9 sans quadrillage invasif (theme_classic() ou theme_bw()), une typographie proportionnelle lisible et une palette de couleurs scientifiquement \u00e9talonn\u00e9e (telle que viridis) \u2014 permet d&rsquo;identifier visuellement en un instant si les erreurs relatives les plus s\u00e9v\u00e8res se concentrent dans les zones de basse magnitude ou au sommet de la distribution empirique.<\/p>\n<h3>11.2 Distribution et d\u00e9composition temporelle des erreurs relatives<\/h3>\n<p>Au-del\u00e0 du plan de dispersion statique, l&rsquo;analyse structurelle des r\u00e9sidus requiert l&rsquo;examen approfondi de la distribution de densit\u00e9 des erreurs relatives unitaires ainsi que leur trajectoire au cours du temps. Un mod\u00e8le robuste ne doit pr\u00e9senter aucune d\u00e9rive temporelle de son erreur moyenne, sous peine de trahir une inad\u00e9quation face aux changements de r\u00e9gime ou aux dynamiques stochastiques non stationnaires.<\/p>\n<p>La premi\u00e8re figure compl\u00e9mentaire associe un histogramme \u00e0 une courbe d&rsquo;estimation de densit\u00e9 par noyau (kernel density estimation) des erreurs relatives individuelles. Ce trac\u00e9 permet d&rsquo;\u00e9valuer la sym\u00e9trie de la distribution des r\u00e9sidus relatifs : une asym\u00e9trie \u00e0 droite marqu\u00e9e indique que si la majeure partie des pr\u00e9dictions affiche une excellente conformit\u00e9, une fraction minoritaire d&rsquo;observations subit des d\u00e9viations p\u00e9nalisantes majeures. Cette lecture est fondamentale pour juger de la stabilit\u00e9 op\u00e9rationnelle du syst\u00e8me pr\u00e9dictif.<\/p>\n<p>La seconde figure diagnostique trace l&rsquo;\u00e9volution chronologique du SMAPE glissant (calcul\u00e9 par exemple sur une fen\u00eatre mobile de 14 ou 30 jours le long de la s\u00e9rie temporelle). La visualisation longitudinale de ce SMAPE glissant met en relief les p\u00e9riodes sp\u00e9cifiques de sous-performance du mod\u00e8le : ruptures de tendance, crises \u00e9v\u00e9nementielles ou phases de volatilit\u00e9 accrue. Cette d\u00e9composition dynamique transforme une simple mesure d&rsquo;erreur scalaire en un v\u00e9ritable instrument de diagnostic pr\u00e9ventif pour le monitoring continu des algorithmes pr\u00e9dictifs en production.<\/p>\n<h2>12. Bonnes pratiques, pi\u00e8ges courants et recommandations acad\u00e9miques<\/h2>\n<h3>12.1 Pi\u00e8ges d&rsquo;interpr\u00e9tation fr\u00e9quemment rencontr\u00e9s<\/h3>\n<p>L&rsquo;exploitation du SMAPE dans les publications scientifiques et les rapports techniques est r\u00e9guli\u00e8rement entach\u00e9e d&rsquo;erreurs m\u00e9thodologiques r\u00e9currentes qui en compromettent la port\u00e9e analytique. Le premier pi\u00e8ge, mentionn\u00e9 pr\u00e9c\u00e9demment mais dont l&rsquo;occurrence demeure remarquablement \u00e9lev\u00e9e, r\u00e9side dans la confusion pernicieuse entre l&rsquo;\u00e9chelle conventionnelle de Makridakis born\u00e9e \u00e0 200 % et l&rsquo;\u00e9chelle r\u00e9duite d&rsquo;Armstrong born\u00e9e \u00e0 100 %. Pr\u00e9senter un SMAPE de 30 % sans expliciter si le plafond d&rsquo;erreur absolue th\u00e9orique se situe \u00e0 100 % ou 200 % cr\u00e9e une \u00e9quivoque majeure sur la pr\u00e9cision r\u00e9elle du mod\u00e8le rapport\u00e9.<\/p>\n<p>Un second pi\u00e8ge d&rsquo;interpr\u00e9tation concerne la sur\u00e9valuation des performances pr\u00e9dictives sur des s\u00e9ries stationnaires triviales. Dans une s\u00e9rie temporelle dot\u00e9e d&rsquo;une tr\u00e8s faible variance et oscillant \u00e9troitement autour d&rsquo;une valeur moyenne constante \u00e9lev\u00e9e, un pr\u00e9dicteur na\u00eff trivial consistant \u00e0 projeter perp\u00e9tuellement cette moyenne produit un SMAPE artificiellement exceptionnel (par exemple inf\u00e9rieur \u00e0 3 %). L&rsquo;analyste imprudent pourrait en d\u00e9duire une ma\u00eetrise remarquable du ph\u00e9nom\u00e8ne alors que le mod\u00e8le est totalement incapable d&rsquo;anticiper les variations marginales du syst\u00e8me. Il est imp\u00e9ratif de confronter syst\u00e9matiquement le score SMAPE \u00e0 celui d&rsquo;un benchmark trivial de r\u00e9f\u00e9rence (comme la pr\u00e9vision na\u00efve ou la marche al\u00e9atoire).<\/p>\n<p>Enfin, sur le plan de la th\u00e9orie statistique de la d\u00e9cision, il est crucial de comprendre que l&rsquo;optimisation directe d&rsquo;un mod\u00e8le sous une fonction de perte bas\u00e9e sur des \u00e9carts absolus sym\u00e9triques conduit math\u00e9matiquement l&rsquo;algorithme \u00e0 converger vers la <em>m\u00e9diane conditionnelle<\/em> de la distribution plut\u00f4t que vers sa <em>moyenne conditionnelle<\/em>. Si l&rsquo;objectif du mod\u00e9lisateur est de pr\u00e9server la masse totale cumul\u00e9e d&rsquo;un ph\u00e9nom\u00e8ne (par exemple le total cumul\u00e9 d&rsquo;une consommation de ressources ou d&rsquo;une r\u00e9ponse clinique), la pr\u00e9vision par la m\u00e9diane induira un biais d&rsquo;accumulation syst\u00e9matique dans le temps, un travers que le seul examen du score SMAPE est incapable de r\u00e9v\u00e9ler.<\/p>\n<h3>12.2 Standards de publication et transparence m\u00e9thodologique<\/h3>\n<p>Pour satisfaire aux exigences contemporaines de la science ouverte et garantir la reproductibilit\u00e9 int\u00e9grale des conclusions exp\u00e9rimentales dans les revues internationales \u00e0 comit\u00e9 de lecture, la description des proc\u00e9dures d&rsquo;\u00e9valuation de l&rsquo;erreur doit ob\u00e9ir \u00e0 des standards formels d&rsquo;une extr\u00eame rigueur. La simple mention \u00ab\u00a0les mod\u00e8les ont \u00e9t\u00e9 \u00e9valu\u00e9s par le SMAPE\u00a0\u00bb est aujourd&rsquo;hui jug\u00e9e scientifiquement insuffisante.<\/p>\n<p>Dans la section <em>M\u00e9thodologie<\/em> du manuscrit scientifique, les auteurs doivent imp\u00e9rativement expliciter l&rsquo;\u00e9quation math\u00e9matique formelle retenue pour le calcul du SMAPE, en d\u00e9clarant sans ambigu\u00eft\u00e9 les bornes th\u00e9oriques de la m\u00e9trique, le mode de traitement appliqu\u00e9 aux valeurs nulles (pr\u00e9sence d&rsquo;un param\u00e8tre epsilon ou condition logique explicite), et la strat\u00e9gie d&rsquo;exclusion ou d&rsquo;imputation des valeurs manquantes. La formule retenue doit \u00eatre explicit\u00e9e dans le corps du texte avec sa notation index\u00e9e compl\u00e8te.<\/p>\n<p>De surcro\u00eet, conform\u00e9ment aux directives de l&rsquo;<a rel=\"noopener noreferrer\" href=\"https:\/\/www.cos.io\/initiatives\/top-guidelines\">Open Science Framework (OSF)<\/a>, les scripts R complets ayant servi au pr\u00e9traitement des donn\u00e9es, au calibrage des mod\u00e8les et \u00e0 l&rsquo;extraction des indicateurs de performance doivent \u00eatre vers\u00e9s dans un r\u00e9f\u00e9rentiel public p\u00e9renne sous licence libre, accompagn\u00e9s des donn\u00e9es anonymis\u00e9es n\u00e9cessaires \u00e0 l&rsquo;ex\u00e9cution synchrone du code. La formulation des r\u00e9sultats dans les tableaux de synth\u00e8se doit syst\u00e9matiquement associer aux scores ponctuels de SMAPE des intervalles de confiance estim\u00e9s par r\u00e9\u00e9chantillonnage non param\u00e9trique (bootstrap), fournissant ainsi une mesure transparente de l&rsquo;incertitude entourant l&rsquo;\u00e9valuation pr\u00e9dictive.<\/p>\n<h3>12.3 Cr\u00e9ation d&rsquo;un workflow reproductible avec R Markdown ou Quarto<\/h3>\n<p>L&rsquo;int\u00e9gration op\u00e9rationnelle du calcul du SMAPE au sein d&rsquo;une cha\u00eene de recherche moderne gagne \u00e0 \u00eatre encapsul\u00e9e dans des documents computationnels dynamiques via <strong>R Markdown<\/strong> ou la plateforme de nouvelle g\u00e9n\u00e9ration <a rel=\"noopener noreferrer\" href=\"https:\/\/quarto.org\/\">Quarto<\/a>. Ces environnements associent intimement le texte narratif scientifique, les blocs de code ex\u00e9cutables en R et les rendus graphiques haute r\u00e9solution au sein d&rsquo;un document source unique, garantissant que tout changement ult\u00e9rieur dans le jeu de donn\u00e9es mettra \u00e0 jour instantan\u00e9ment les m\u00e9triques statistiques calcul\u00e9es.<\/p>\n<p>Pour assurer une reproductibilit\u00e9 computationnelle absolue \u00e0 travers le temps et l&rsquo;espace, ce flux de travail dynamique doit \u00eatre assujetti \u00e0 la gestion rigoureuse de l&rsquo;environnement des d\u00e9pendances logicielles au moyen du package <strong>renv<\/strong>. Cette biblioth\u00e8que enregistre de mani\u00e8re d\u00e9terministe dans un fichier de verrouillage (lockfile) les versions exactes de chaque package mobilis\u00e9 (incluant Metrics, dplyr, smooth et leurs d\u00e9pendances C sous-jacentes), immunisant le projet contre les alt\u00e9rations de comportement algorithmique cons\u00e9cutives aux mises \u00e0 jour logicielles tierces futures.<\/p>\n<p>Enfin, la restitution des r\u00e9sultats pr\u00e9dictifs au sein du document dynamique doit privil\u00e9gier des g\u00e9n\u00e9rateurs de tableaux acad\u00e9miques de haute tenue typographique tels que <strong>knitr::kable()<\/strong>, combin\u00e9 aux extensions <strong>kableExtra<\/strong> ou <strong>gt<\/strong>. Ces outils convertissent directement les structures tabulaires de R en tableaux \u00e9l\u00e9gants format\u00e9s selon les standards stricts de l&rsquo;APA ou des revues m\u00e9dicales, finalisant ainsi un pipeline d&rsquo;analyse statistique pr\u00e9dictive alliant rigueur th\u00e9orique, performance computationnelle et perfection esth\u00e9tique formelle.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Armstrong, J. S. (1985). <em>Long-Range Forecasting: From Crystal Ball to Computer<\/em> (2nd ed.). John Wiley &amp; Sons. <a rel=\"noopener noreferrer\" href=\"https:\/\/global.oup.com\/\">https:\/\/global.oup.com\/<\/a><\/li>\n<li>Chen, Z., Yang, Y., &amp; Zhou, Z. (2017). An empirical evaluation of percentage error metrics in predictive regression modeling. <em>International Journal of Forecasting<\/em>, 33(4), 895\u2013907. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/j.ijforecast.2017.04.004\">https:\/\/doi.org\/10.1016\/j.ijforecast.2017.04.004<\/a><\/li>\n<li>Eddelbuettel, D., &amp; Fran\u00e7ois, R. (2011). Rcpp: Seamless R and C++ integration. <em>Journal of Statistical Software<\/em>, 40(8), 1\u201318. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.18637\/jss.v040.i08\">https:\/\/doi.org\/10.18637\/jss.v040.i08<\/a><\/li>\n<li>Hamner, B., &amp; Frasco, M. (2018). <em>Metrics: Evaluation Metrics for Machine Learning<\/em> (R package version 0.1.4). CRAN. <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=Metrics\">https:\/\/cran.r-project.org\/package=Metrics<\/a><\/li>\n<li>Hyndman, R. J., &amp; Athanasopoulos, G. (2021). <em>Forecasting: Principles and Practice<\/em> (3rd ed.). OTexts. <a rel=\"noopener noreferrer\" href=\"https:\/\/otexts.com\/fpp3\/\">https:\/\/otexts.com\/fpp3\/<\/a><\/li>\n<li>Hyndman, R. J., &amp; Koehler, A. B. (2006). Another look at measures of forecast accuracy. <em>International Journal of Forecasting<\/em>, 22(4), 679\u2013688. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/j.ijforecast.2006.03.001\">https:\/\/doi.org\/10.1016\/j.ijforecast.2006.03.001<\/a><\/li>\n<li>Makridakis, S. (1993). Accuracy measures: Theoretical and practical concerns. <em>International Journal of Forecasting<\/em>, 9(4), 527\u2013529. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/0169-2070(93)90079-3\">https:\/\/doi.org\/10.1016\/0169-2070(93)90079-3<\/a><\/li>\n<li>Makridakis, S., &amp; Hibon, M. (2000). The M3-Competition: Results, conclusions and implications. <em>International Journal of Forecasting<\/em>, 16(4), 451\u2013476. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/S0169-2070(00)00057-1\">https:\/\/doi.org\/10.1016\/S0169-2070(00)00057-1<\/a><\/li>\n<li>Makridakis, S., Spiliotis, E., &amp; Assimakopoulos, V. (2020). The M4 Competition: 100,000 time series and 61 forecasting methods. <em>International Journal of Forecasting<\/em>, 36(1), 54\u201374. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/j.ijforecast.2019.04.014\">https:\/\/doi.org\/10.1016\/j.ijforecast.2019.04.014<\/a><\/li>\n<li>Svetunkov, I. (2023). <em>Forecasting and Analytics with the Augmented Dynamic Adaptive Model (ADAM)<\/em>. Chapman &amp; Hall\/CRC. <a rel=\"noopener noreferrer\" href=\"https:\/\/openforecast.org\/adam\/\">https:\/\/openforecast.org\/adam\/<\/a><\/li>\n<li>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., \u2026 Yutani, H. (2019). Welcome to the Tidyverse. <em>Journal of Open Source Software<\/em>, 4(43), Article 1686. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.21105\/joss.01686\">https:\/\/doi.org\/10.21105\/joss.01686<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour calculer le SMAPE dans R : m\u00e9thodes avec packages, fonctions personnalis\u00e9es, traitement des cas limites et optimisation.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[2193,359],"tags":[9444,2204,2658,1911,9443],"class_list":["post-8296","psych_stat","type-psych_stat","status-publish","hentry","category-programmation-r","category-statistiques-appliquees","tag-metriques-derreur","tag-prevision-statistique","tag-r","tag-series-temporelles","tag-smape"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/8296","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=8296"}],"version-history":[{"count":0,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/8296\/revisions"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}