{"id":4927,"date":"2026-09-11T14:42:53","date_gmt":"2026-09-11T14:42:53","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/validation-croisee-leave-one-out-en-r-exemples\/"},"modified":"2026-09-11T14:42:53","modified_gmt":"2026-09-11T14:42:53","slug":"validation-croisee-leave-one-out-en-r-exemples","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=validation-croisee-leave-one-out-en-r-exemples","title":{"rendered":"Validation crois\u00e9e Leave-One-Out en R (avec exemples)"},"content":{"rendered":"<p>L&rsquo;\u00e9valuation rigoureuse de la performance pr\u00e9dictive d&rsquo;un mod\u00e8le statistique constitue l&rsquo;une des pierres angulaires de la science des donn\u00e9es moderne et de l&rsquo;\u00e9conom\u00e9trie appliqu\u00e9e. Face \u00e0 des jeux de donn\u00e9es restreints, fr\u00e9quents dans les sciences translationnelles, la psychom\u00e9trie clinique ou les \u00e9tudes neurobiologiques, les praticiens sont confront\u00e9s \u00e0 un dilemme m\u00e9thodologique s\u00e9v\u00e8re : comment mesurer la capacit\u00e9 de g\u00e9n\u00e9ralisation d&rsquo;un algorithme sans amputer drastiquement l&rsquo;\u00e9chantillon d&rsquo;apprentissage ? La tentation d&rsquo;\u00e9valuer un mod\u00e8le sur les donn\u00e9es m\u00eames qui ont servi \u00e0 son ajustement conduit in\u00e9vitablement \u00e0 un optimisme empirique fallacieux, masquant un surapprentissage d\u00e9l\u00e9t\u00e8re.<\/p>\n<p>Pour surmonter cet \u00e9cueil, les techniques de r\u00e9\u00e9chantillonnage offrent un cadre probabiliste robuste. Parmi elles, la <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Cross-validation_(statistics)\">validation crois\u00e9e<\/a> Leave-One-Out (LOOCV, ou validation crois\u00e9e par omission unitaire) occupe une place singuli\u00e8re. Poussant la logique de la partition \u00e0 son paroxysme d\u00e9terministe, cette approche \u00e9value s\u00e9quentiellement le mod\u00e8le sur chaque observation individuelle apr\u00e8s l&rsquo;avoir entra\u00een\u00e9 sur l&rsquo;int\u00e9gralit\u00e9 des autres points disponibles. Ce proc\u00e9d\u00e9 \u00e9limine tout al\u00e9a li\u00e9 au d\u00e9coupage des plis et maximise l&rsquo;exploitation de l&rsquo;information statistique contenue dans des cohortes de petite taille.<\/p>\n<p>N\u00e9anmoins, la mise en \u0153uvre de la LOOCV ne saurait se r\u00e9duire \u00e0 une simple commodit\u00e9 algorithmique. Elle engage des consid\u00e9rations profondes relatives au compromis biais-variance, \u00e0 la corr\u00e9lation des pr\u00e9dicteurs, \u00e0 la structure de d\u00e9pendance spatio-temporelle et \u00e0 la charge computationnelle. Ce guide exhaustif explore l&rsquo;ensemble des fondements th\u00e9oriques, des propri\u00e9t\u00e9s alg\u00e9briques et des impl\u00e9mentations concr\u00e8tes sous l&rsquo;environnement de calcul statistique <a rel=\"noopener noreferrer\" href=\"https:\/\/www.r-project.org\/\">R<\/a>, en d\u00e9cortiquant aussi bien les \u00e9critures natives vectoris\u00e9es que les fonctionnalit\u00e9s avanc\u00e9es des biblioth\u00e8ques sp\u00e9cialis\u00e9es.<\/p>\n<h2>1. Introduction th\u00e9orique \u00e0 la validation crois\u00e9e Leave-One-Out (LOOCV)<\/h2>\n<h3>1.1 Origines et place de la LOOCV dans l&rsquo;apprentissage statistique<\/h3>\n<p>L&rsquo;\u00e9mergence des techniques de validation empirique remonte aux travaux fondateurs de chercheurs tels que Seymour Geisser et Mervyn Stone au d\u00e9but des ann\u00e9es 1970. Avant cette formalisation, l&rsquo;\u00e9valuation des mod\u00e8les reposait presque exclusivement sur des crit\u00e8res d&rsquo;ad\u00e9quation intra-\u00e9chantillon, tels que le coefficient de d\u00e9termination standard ou les tests de rapport de vraisemblance non p\u00e9nalis\u00e9s. Or, ces mesures s&rsquo;av\u00e8rent structurellement incapables de quantifier l&rsquo;erreur de g\u00e9n\u00e9ralisation sur de nouvelles observations issues de la m\u00eame population parente.<\/p>\n<p>La n\u00e9cessit\u00e9 de contrer le ph\u00e9nom\u00e8ne de surajustement (<em>overfitting<\/em>) est devenue critique avec l&rsquo;av\u00e8nement de mod\u00e8les \u00e0 haute flexibilit\u00e9 param\u00e9trique appliqu\u00e9s \u00e0 des \u00e9chantillons exp\u00e9rimentaux restreints. Dans de nombreuses disciplines, le co\u00fbt d&rsquo;acquisition des donn\u00e9es ou la raret\u00e9 intrins\u00e8que des sujets limite la taille des cohortes \u00e0 quelques dizaines d&rsquo;unit\u00e9s statistiques. Dans un tel contexte, amputer l&rsquo;\u00e9chantillon d&rsquo;un tiers pour constituer un ensemble de test ind\u00e9pendant prive le mod\u00e8le d&rsquo;une fraction substantielle de son information fondamentale, augmentant artificiellement l&rsquo;impr\u00e9cision de l&rsquo;estimation des param\u00e8tres.<\/p>\n<p>Sur le plan formel, la validation crois\u00e9e Leave-One-Out se d\u00e9finit comme un partitionnement exhaustif et d\u00e9terministe men\u00e9 sur un \u00e9chantillon de taille <em>n<\/em>. L&rsquo;algorithme it\u00e8re exactement <em>n<\/em> fois : \u00e0 chaque \u00e9tape, une seule observation est r\u00e9serv\u00e9e pour le test out-of-sample, tandis que les <em>n &#8211; 1<\/em> observations restantes composent le sous-ensemble d&rsquo;apprentissage. Contrairement aux m\u00e9thodes stochastiques d\u00e9pendantes d&rsquo;une initialisation al\u00e9atoire, la LOOCV est strictement reproductible pour un jeu de donn\u00e9es fix\u00e9. D&rsquo;un point de vue \u00e9pist\u00e9mologique, elle incarne le principe de parcimonie maximale dans le sacrifice des donn\u00e9es d&rsquo;entra\u00eenement, conf\u00e9rant aux plans exp\u00e9rimentaux quantitatifs une base d&rsquo;inf\u00e9rence hautement standardis\u00e9e.<\/p>\n<h3>1.2 Le compromis biais-variance dans l&rsquo;estimation de l&rsquo;erreur empirique<\/h3>\n<p>L&rsquo;analyse comparative des estimateurs de l&rsquo;erreur pr\u00e9dictive requiert une dissection fine du compromis biais-variance. L&rsquo;estimateur LOOCV pr\u00e9sente la propri\u00e9t\u00e9 remarquable de poss\u00e9der un biais d&rsquo;estimation de l&rsquo;erreur de test quasi nul. En effet, chaque mod\u00e8le interm\u00e9diaire est ajust\u00e9 sur un \u00e9chantillon de taille <em>n &#8211; 1<\/em>, ce qui le rend statistiquement presque indiscernable du mod\u00e8le final entra\u00een\u00e9 sur les <em>n<\/em> observations compl\u00e8tes. L&rsquo;esp\u00e9rance math\u00e9matique de l&rsquo;erreur quadratique mesur\u00e9e par LOOCV refl\u00e8te donc fid\u00e8lement l&rsquo;esp\u00e9rance de l&rsquo;erreur de g\u00e9n\u00e9ralisation du mod\u00e8le global.<\/p>\n<p>Cependant, cette absence quasi totale de biais s&rsquo;accompagne d&rsquo;une contrepartie statistique majeure : une variance potentiellement tr\u00e8s \u00e9lev\u00e9e de l&rsquo;estimateur de performance lui-m\u00eame. Dans une proc\u00e9dure LOOCV, les <em>n<\/em> mod\u00e8les ajust\u00e9s reposent sur des jeux de donn\u00e9es d&rsquo;apprentissage qui partagent exactement <em>n &#8211; 2<\/em> observations en commun. Cette redondance informationnelle induit une corr\u00e9lation positive extr\u00eamement forte entre les fonctions de pr\u00e9diction estim\u00e9es \u00e0 chaque it\u00e9ration. L&rsquo;agr\u00e9gation de pr\u00e9dictions hautement corr\u00e9l\u00e9es limite l&rsquo;effet r\u00e9ducteur de variance habituellement conf\u00e9r\u00e9 par la loi des grands nombres sur des variables al\u00e9atoires ind\u00e9pendantes.<\/p>\n<p>Ce ph\u00e9nom\u00e8ne s&rsquo;illustre particuli\u00e8rement lorsqu&rsquo;on compare la LOOCV \u00e0 une validation crois\u00e9e <em>k<\/em>-fold standard (o\u00f9 <em>k = 5<\/em> ou <em>k = 10<\/em>). Bien que ces derni\u00e8res introduisent un l\u00e9ger biais pessimiste \u2014 le mod\u00e8le n&rsquo;\u00e9tant entra\u00een\u00e9 que sur 80 % ou 90 % des donn\u00e9es \u2014, les sous-mod\u00e8les y sont moins corr\u00e9l\u00e9s entre eux, ce qui peut se traduire par une variance globale plus faible de l&rsquo;estimateur de l&rsquo;erreur quadratique moyenne. La stabilit\u00e9 asymptotique de la LOOCV s&rsquo;am\u00e9liore \u00e0 mesure que la taille <em>n<\/em> augmente, mais pour des \u00e9chantillons mod\u00e9r\u00e9s, l&rsquo;analyste doit \u00eatre conscient que la pr\u00e9cision ponctuelle de la mesure d&rsquo;erreur peut souffrir de cette forte corr\u00e9lation inter-mod\u00e8les.<\/p>\n<h3>1.3 Objectifs op\u00e9rationnels et crit\u00e8res de performance cibl\u00e9s<\/h3>\n<p>Dans la pratique de la mod\u00e9lisation statistique, la LOOCV poursuit trois objectifs op\u00e9rationnels interd\u00e9pendants. Le premier r\u00e9side dans la quantification absolue de la capacit\u00e9 d&rsquo;extrapolation locale du mod\u00e8le sur des observations strictement ind\u00e9pendantes du processus d&rsquo;estimation des coefficients. En isolant un point unique, on simule la confrontation du syst\u00e8me pr\u00e9dictif \u00e0 un nouvel individu clinique ou exp\u00e9rimental arrivant de mani\u00e8re s\u00e9quentielle dans un protocole d&rsquo;\u00e9valuation.<\/p>\n<p>Le second objectif concerne l&rsquo;estimation non biais\u00e9e de l&rsquo;erreur quadratique moyenne de test (<em>Mean Squared Error<\/em>, ou MSE). Les m\u00e9triques d&rsquo;erreur calcul\u00e9es sur les r\u00e9sidus d&rsquo;ajustement intra-\u00e9chantillon sous-estiment syst\u00e9matiquement le risque quadratique r\u00e9el. L&rsquo;erreur issue de la LOOCV fournit une approximation asymptotiquement non biais\u00e9e du risque th\u00e9orique associ\u00e9 \u00e0 la fonction de d\u00e9cision s\u00e9lectionn\u00e9e, autorisant une comparaison objective entre des familles fonctionnelles distinctes.<\/p>\n<p>Enfin, la LOOCV sert de crit\u00e8re directeur dans l&rsquo;optimisation de la s\u00e9lection de pr\u00e9dicteurs lors de d\u00e9marches exploratoires ou confirmatoires. Qu&rsquo;il s&rsquo;agisse de calibrer des hyperparam\u00e8tres de r\u00e9gularisation ou de d\u00e9terminer le sous-ensemble optimal de variables explicatives dans une r\u00e9gression lin\u00e9aire, la minimisation du crit\u00e8re LOOCV permet d&rsquo;arbitrer entre complexit\u00e9 structurelle et fid\u00e9lit\u00e9 empirique, en p\u00e9nalisant implicitement les architectures sur-param\u00e9tr\u00e9es qui d\u00e9gradent la pr\u00e9diction individuelle hors \u00e9chantillon.<\/p>\n<h2>2. Fondements math\u00e9matiques et algorithmiques de la m\u00e9thode LOOCV<\/h2>\n<h3>2.1 Algorithme it\u00e9ratif standard et d\u00e9composition de la perte<\/h3>\n<p>La formulation algorithmique brute de la validation crois\u00e9e Leave-One-Out s&rsquo;articule autour d&rsquo;une boucle d\u00e9terministe. Soit un ensemble d&rsquo;apprentissage compos\u00e9 de <em>n<\/em> paires d&rsquo;observations <em>D = {(x_1, y_1), (x_2, y_2), &#8230;, (x_n, y_n)}<\/em>, o\u00f9 chaque <em>x_i<\/em> repr\u00e9sente un vecteur de covariables de dimension <em>p<\/em> et <em>y_i<\/em> une variable r\u00e9ponse scalaire continue ou discr\u00e8te. L&rsquo;espace d&rsquo;\u00e9chantillonnage est partitionn\u00e9 en <em>n<\/em> configurations o\u00f9 le <em>i<\/em>-\u00e8me sous-ensemble de test est constitu\u00e9 du singleton <em>{(x_i, y_i)}<\/em> et le sous-ensemble d&rsquo;apprentissage correspondant est d\u00e9fini par <em>D_(-i) = D  {(x_i, y_i)}<\/em>.<\/p>\n<p>Pour chaque indice <em>i<\/em> variant de 1 \u00e0 <em>n<\/em>, l&rsquo;algorithme proc\u00e8de aux op\u00e9rations formelles suivantes :<\/p>\n<ul>\n<li>Ajustement de l&rsquo;op\u00e9rateur de pr\u00e9diction <em>f_(-i)<\/em> en appliquant la r\u00e8gle d&rsquo;apprentissage statistique exclusivement sur la base de donn\u00e9es amput\u00e9e <em>D_(-i)<\/em>.<\/li>\n<li>Calcul de la pr\u00e9diction hors \u00e9chantillon pour le point isol\u00e9 : <em>y_hat_i = f_(-i)(x_i)<\/em>.<\/li>\n<li>D\u00e9termination du r\u00e9sidu d&rsquo;omission empirique : <em>e_i = y_i &#8211; f_(-i)(x_i)<\/em>.<\/li>\n<\/ul>\n<p>Une fois les <em>n<\/em> it\u00e9rations compl\u00e9t\u00e9es, la perte globale est agr\u00e9g\u00e9e. Dans le cas d&rsquo;une fonction de perte quadratique <em>L(y, y_hat) = (y &#8211; y_hat)^2<\/em>, l&rsquo;estimateur de l&rsquo;erreur quadratique moyenne par LOOCV s&rsquo;\u00e9crit formellement :<\/p>\n<p><em>MSE_LOOCV = (1 \/ n) * somme_{i=1}^n (y_i &#8211; f_(-i)(x_i))^2<\/em><\/p>\n<p>Cette d\u00e9composition illustre que chaque r\u00e9sidu \u00e9l\u00e9mentaire refl\u00e8te une v\u00e9ritable erreur out-of-sample, garantissant que l&rsquo;information relative \u00e0 la cible <em>y_i<\/em> n&rsquo;a en aucune mani\u00e8re contamin\u00e9 l&rsquo;estimation des coefficients de la fonction <em>f_(-i)<\/em>.<\/p>\n<h3>2.2 Formule analytique directe (Short-cut) pour les moindres carr\u00e9s ordinaires<\/h3>\n<p>L&rsquo;ex\u00e9cution it\u00e9rative de <em>n<\/em> r\u00e9gressions distinctes pr\u00e9sente un co\u00fbt computationnel substantiel. Cependant, dans le cadre fondamental de la r\u00e9gression lin\u00e9aire estim\u00e9e par les <a rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/M%C3%A9thode_des_moindres_carr%C3%A9s\">moindres carr\u00e9s ordinaires<\/a> (MCO), une \u00e9l\u00e9gante propri\u00e9t\u00e9 alg\u00e9brique permet d&rsquo;obtenir la valeur exacte de l&rsquo;erreur LOOCV \u00e0 partir d&rsquo;un unique ajustement du mod\u00e8le sur la totalit\u00e9 des <em>n<\/em> observations.<\/p>\n<p>Consid\u00e9rons la matrice des pr\u00e9dicteurs <em>X<\/em> de dimensions <em>n * (p + 1)<\/em> et le vecteur r\u00e9ponse <em>Y<\/em> de dimension <em>n<\/em>. L&rsquo;ajustement global par les moindres carr\u00e9s produit le vecteur des valeurs ajust\u00e9es <em>Y_hat = H * Y<\/em>, o\u00f9 <em>H = X * (X^T * X)^(-1) * X^T<\/em> d\u00e9signe la matrice de projection orthogonale, commun\u00e9ment qualifi\u00e9e de matrice chapeau (<em>hat matrix<\/em>). Les \u00e9l\u00e9ments diagonaux de cette matrice, not\u00e9s <em>h_ii<\/em>, repr\u00e9sentent le bras de levier statistique (<em>leverage<\/em>) associ\u00e9 \u00e0 la <em>i<\/em>-\u00e8me observation.<\/p>\n<p>En exploitant le lemme d&rsquo;inversion matricielle de Sherman-Morrison-Woodbury, on d\u00e9montre rigoureusement que le r\u00e9sidu d&rsquo;omission s&rsquo;exprime directement en fonction du r\u00e9sidu classique intra-\u00e9chantillon <em>e_i = y_i &#8211; y_hat_i<\/em> et de l&rsquo;effet de levier <em>h_ii<\/em> :<\/p>\n<p><em>y_i &#8211; f_(-i)(x_i) = e_i \/ (1 &#8211; h_ii)<\/em><\/p>\n<p>Cette identit\u00e9 remarquable \u00e9tablit un pont direct avec la statistique PRESS (<em>Prediction Residual Sum of Squares<\/em>) introduite par David Allen en 1974. L&rsquo;erreur quadratique moyenne de validation crois\u00e9e peut ainsi \u00eatre formul\u00e9e sans r\u00e9estimation s\u00e9quentielle :<\/p>\n<p><em>MSE_LOOCV = (1 \/ n) * somme_{i=1}^n ( e_i \/ (1 &#8211; h_ii) )^2 = PRESS \/ n<\/em><\/p>\n<p>L&rsquo;int\u00e9r\u00eat algorithmique est colossal : la complexit\u00e9 computationnelle passe de <em>O(n^2 * p + n * p^3)<\/em> pour la boucle standard \u00e0 <em>O(n * p^2 + p^3)<\/em> pour le calcul direct via la d\u00e9composition matricielle, rendant la LOOCV instantan\u00e9e m\u00eame pour des valeurs de <em>n<\/em> atteignant plusieurs dizaines de milliers d&rsquo;unit\u00e9s.<\/p>\n<h3>2.3 Complexit\u00e9 computationnelle pour les mod\u00e8les non lin\u00e9aires et p\u00e9nalis\u00e9s<\/h3>\n<p>La simplification alg\u00e9brique offerte par la statistique PRESS s&rsquo;av\u00e8re h\u00e9las sp\u00e9cifique aux mod\u00e8les lin\u00e9aires additifs non p\u00e9nalis\u00e9s r\u00e9solus par projection orthogonale. D\u00e8s lors que l&rsquo;on quitte le domaine des moindres carr\u00e9s ordinaires, la formule analytique exacte cesse de s&rsquo;appliquer directement.<\/p>\n<p>Dans le cadre des r\u00e9gressions r\u00e9gularis\u00e9es telles que la r\u00e9gression Ridge, le Lasso ou l&rsquo;ElasticNet, l&rsquo;introduction d&rsquo;une p\u00e9nalit\u00e9 <em>L2<\/em> ou <em>L1<\/em> brise l&rsquo;orthogonalit\u00e9 stricte du projecteur lin\u00e9aire. Certes, pour la r\u00e9gression Ridge, une approximation analytique analogue bas\u00e9e sur les valeurs propres de <em>(X^T * X + lambda * I)<\/em> existe, mais pour le Lasso, le caract\u00e8re non d\u00e9rivable de la norme <em>L1<\/em> impose g\u00e9n\u00e9ralement des r\u00e9ajustements num\u00e9riques, bien que des formules approch\u00e9es bas\u00e9es sur le nombre de degr\u00e9s de libert\u00e9 actifs aient \u00e9t\u00e9 propos\u00e9es par Robert Tibshirani.<\/p>\n<p>Pour les algorithmes d&rsquo;apprentissage non lin\u00e9aires et non param\u00e9triques \u2014 tels que les for\u00eats al\u00e9atoires, les machines \u00e0 vecteurs de support \u00e0 noyau (SVM) ou les r\u00e9seaux de neurones profonds \u2014, aucune simplification alg\u00e9brique exacte n&rsquo;est envisageable. La complexit\u00e9 algorithmique d&rsquo;une LOOCV redevient alors strictement \u00e9gale \u00e0 <em>n<\/em> fois le co\u00fbt de l&rsquo;entra\u00eenement d&rsquo;un mod\u00e8le unitaire. Pour un mod\u00e8le dont l&rsquo;ajustement est quadratique ou cubique par rapport \u00e0 <em>n<\/em>, l&rsquo;\u00e9valuation LOOCV globale explose en <em>O(n^3)<\/em> ou <em>O(n^4)<\/em>. Dans l&rsquo;environnement R, cela se traduit par des saturations s\u00e9v\u00e8res de la m\u00e9moire vive et des temps de calcul prohibitifs, justifiant le recours \u00e0 des approximations stochastiques ou \u00e0 la parall\u00e9lisation explicite.<\/p>\n<h2>3. LOOCV face aux autres m\u00e9thodes de r\u00e9\u00e9chantillonnage statistique<\/h2>\n<h3>3.1 LOOCV versus validation crois\u00e9e k-fold standard<\/h3>\n<p>La validation crois\u00e9e \u00e0 <em>k<\/em> blocs (<em>k-fold cross-validation<\/em>) constitue la g\u00e9n\u00e9ralisation naturelle de la LOOCV. En r\u00e9alit\u00e9, la LOOCV repr\u00e9sente le cas limite formel o\u00f9 le nombre de blocs <em>k<\/em> est fix\u00e9 exactement \u00e0 la taille totale de l&rsquo;\u00e9chantillon, soit <em>k = n<\/em>. Dans le protocole <em>k<\/em>-fold habituel, l&rsquo;ensemble de donn\u00e9es est segment\u00e9 en <em>k<\/em> sous-ensembles mutuellement exclusifs d&rsquo;effectifs quasi \u00e9quivalents (typiquement <em>k = 5<\/em> ou <em>k = 10<\/em>).<\/p>\n<p>L&rsquo;analyse comparative de ces deux paradigmes soul\u00e8ve un arbitrage m\u00e9thodologique fondamental :<\/p>\n<ul>\n<li><strong>Biais d&rsquo;estimation :<\/strong> Pour <em>k = 10<\/em>, chaque sous-mod\u00e8le n&rsquo;utilise que 90 % des donn\u00e9es disponibles. Si la courbe d&rsquo;apprentissage du mod\u00e8le n&rsquo;a pas atteint son asymptote, cet \u00e9loignement de l&rsquo;effectif complet <em>n<\/em> induit une sous-estimation syst\u00e9matique des performances r\u00e9elles. La LOOCV, entra\u00eenant ses mod\u00e8les sur <em>(n &#8211; 1) \/ n<\/em> de l&rsquo;effectif, r\u00e9duit ce biais \u00e0 une magnitude n\u00e9gligeable.<\/li>\n<li><strong>Variance de l&rsquo;estimateur :<\/strong> Comme explicit\u00e9 pr\u00e9c\u00e9demment, le recouvrement massif des jeux d&rsquo;entra\u00eenement en LOOCV engendre une variance \u00e9lev\u00e9e de la m\u00e9trique agr\u00e9g\u00e9e. \u00c0 l&rsquo;inverse, un sch\u00e9ma <em>k = 10<\/em> g\u00e9n\u00e8re des sous-ensembles d&rsquo;apprentissage moins interd\u00e9pendants, stabilisant souvent la variance globale au prix d&rsquo;une l\u00e9g\u00e8re d\u00e9gradation du biais.<\/li>\n<li><strong>Al\u00e9a d&rsquo;\u00e9chantillonnage :<\/strong> La validation crois\u00e9e <em>k<\/em>-fold d\u00e9pend intrins\u00e8quement de la partition al\u00e9atoire initiale des blocs. Deux ex\u00e9cutions successives sous diff\u00e9rentes graines de reproductibilit\u00e9 (<em>seeds<\/em>) aboutiront \u00e0 des estimations num\u00e9riques distinctes. La LOOCV, quant \u00e0 elle, offre un caract\u00e8re parfaitement d\u00e9terministe et invariant.<\/li>\n<\/ul>\n<p>En synth\u00e8se, la LOOCV demeure m\u00e9thodologiquement pr\u00e9f\u00e9rable sur des cohortes r\u00e9duites (typiquement <em>n &lt; 100<\/em>), o\u00f9 l&rsquo;amputation de 10 % \u00e0 20 % des effectifs fausserait gravement l&rsquo;estimation des param\u00e8tres, alors que le <em>k<\/em>-fold standard s&rsquo;impose sur les bases de donn\u00e9es d&rsquo;envergure interm\u00e9diaire \u00e0 massive.<\/p>\n<h3>3.2 LOOCV versus bootstrapping et out-of-bag validation<\/h3>\n<p>Le <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bootstrapping_(statistics)\">bootstrapping<\/a>, formalis\u00e9 par Bradley Efron, repose sur un paradigme conceptuellement distinct : le tirage non d\u00e9terministe avec remise d&rsquo;\u00e9chantillons de taille <em>n<\/em> \u00e0 partir des donn\u00e9es originales. Dans ce processus, la probabilit\u00e9 th\u00e9orique pour une observation donn\u00e9e d&rsquo;\u00eatre omise d&rsquo;un \u00e9chantillon bootstrap est asymptotiquement de <em>(1 &#8211; 1\/n)^n<\/em>, ce qui converge vers <em>1 \/ e<\/em> (environ 36,8 %). Ces observations non s\u00e9lectionn\u00e9es constituent l&rsquo;ensemble out-of-bag (OOB), sur lequel la fonction ajust\u00e9e peut \u00eatre \u00e9valu\u00e9e sans biais d&rsquo;optimisme intra-\u00e9chantillon.<\/p>\n<p>Compar\u00e9 \u00e0 la LOOCV, le bootstrap simple souffre d&rsquo;un biais pessimiste substantiel, car un \u00e9chantillon bootstrap typique ne comporte qu&rsquo;environ 63,2 % d&rsquo;observations uniques distinctes. Bien que l&rsquo;estimateur composite \u00ab .632 \u00bb et sa version corrig\u00e9e \u00ab .632+ \u00bb aient \u00e9t\u00e9 d\u00e9velopp\u00e9s pour contrebalancer cette d\u00e9viation en combinant lin\u00e9airement l&rsquo;erreur intra-\u00e9chantillon et l&rsquo;erreur OOB, ces corrections reposent sur des heuristiques param\u00e9triques qui peuvent s&rsquo;av\u00e9rer instables en pr\u00e9sence de mod\u00e8les fortement surajust\u00e9s.<\/p>\n<p>Par ailleurs, face \u00e0 des structures de donn\u00e9es hi\u00e9rarchiques ou regroup\u00e9es (donn\u00e9es longitudinales, scores scolaires agr\u00e9g\u00e9s par classe), le tirage avec remise d\u00e9structure les d\u00e9pendances intrins\u00e8ques des observations si un r\u00e9\u00e9chantillonnage par grappes n&rsquo;est pas sp\u00e9cifi\u00e9 avec rigueur. La LOOCV conserve une structure g\u00e9om\u00e9trique d\u00e9terministe sans d\u00e9doublement d&rsquo;observations, ce qui facilite son adaptation m\u00e9thodologique sous forme de \u00ab Leave-One-Cluster-Out \u00bb dans les contextes multiniveaux.<\/p>\n<h3>3.3 LOOCV versus validation par s\u00e9paration simple (Train\/Test Split)<\/h3>\n<p>La technique de la scission unique (<em>Train\/Test Split<\/em> ou m\u00e9thode hold-out) consiste \u00e0 fragmenter arbitrairement le jeu de donn\u00e9es en deux sous-ensembles compl\u00e9mentaires, par exemple 70 % allou\u00e9s \u00e0 l&rsquo;apprentissage et 30 % \u00e0 l&rsquo;\u00e9valuation finale. Si cette m\u00e9thode est abondamment pl\u00e9biscit\u00e9e dans l&rsquo;industrie pour les volumes de donn\u00e9es massifs (<em>Big Data<\/em>) en raison de son co\u00fbt de calcul unitaire d\u00e9risoire, son application \u00e0 des cohortes exp\u00e9rimentales de taille mod\u00e9r\u00e9e rel\u00e8ve d&rsquo;une h\u00e9r\u00e9sie m\u00e9thodologique.<\/p>\n<p>Sur de petits \u00e9chantillons, la partition simple expose l&rsquo;analyse \u00e0 une volatilit\u00e9 catastrophique li\u00e9e aux fluctuations d&rsquo;\u00e9chantillonnage. Le positionnement par pur hasard de quelques valeurs extr\u00eames ou aberrantes dans le jeu de test plut\u00f4t que dans le jeu d&rsquo;entra\u00eenement peut alt\u00e9rer radicalement le score de performance observ\u00e9, rendant les conclusions exp\u00e9rimentales enti\u00e8rement contingentes du partitionnement initial. De plus, la r\u00e9tention de 20 % \u00e0 40 % des donn\u00e9es affaiblit consid\u00e9rablement la puissance statistique de l&rsquo;ajustement du mod\u00e8le.<\/p>\n<p>La LOOCV r\u00e9sout simultan\u00e9ment ces deux d\u00e9faillances. En exploitant 100 % des observations successivement comme \u00e9l\u00e9ments d&rsquo;\u00e9valuation et en mobilisant \u00e0 chaque pas <em>n &#8211; 1<\/em> observations pour la calibration, elle valorise l&rsquo;int\u00e9gralit\u00e9 du capital informationnel disponible tout en neutralisant l&rsquo;arbitraire du d\u00e9coupage initial.<\/p>\n<h2>4. Avantages et limites m\u00e9thodologiques de la LOOCV en mod\u00e9lisation<\/h2>\n<h3>4.1 Avantages cl\u00e9s en recherche exp\u00e9rimentale et observationnelle<\/h3>\n<p>Dans les contextes de recherche acad\u00e9mique o\u00f9 les protocoles exp\u00e9rimentaux sont on\u00e9reux \u2014 tels que l&rsquo;imagerie par r\u00e9sonance magn\u00e9tique fonctionnelle (IRMf), les analyses omiques ou la psychophysiologie clinique \u2014, la LOOCV conf\u00e8re une rigueur m\u00e9thodologique sans \u00e9quivalent. Son premier avantage cardinal r\u00e9side dans la maximisation absolue de la taille du jeu d&rsquo;entra\u00eenement : l&rsquo;estimation param\u00e9trique op\u00e8re sur un effectif presque identique \u00e0 l&rsquo;\u00e9chantillon complet, ce qui pr\u00e9serve la stabilit\u00e9 des vecteurs de coefficients estim\u00e9s.<\/p>\n<p>Le second atout m\u00e9thodologique fondamental r\u00e9side dans la reproductibilit\u00e9 math\u00e9matique absolue. Contrairement aux validations crois\u00e9es <em>k<\/em>-fold dont les m\u00e9triques oscillent selon la configuration de la graine al\u00e9atoire d\u00e9clar\u00e9e dans l&rsquo;interpr\u00e9teur logiciel, la LOOCV aboutit syst\u00e9matiquement \u00e0 un r\u00e9sultat num\u00e9rique unique et invariant pour un ensemble de donn\u00e9es fix\u00e9. Cela simplifie consid\u00e9rablement les d\u00e9marches de r\u00e9plication scientifique et la transparence des audits m\u00e9thodologiques lors des processus de r\u00e9vision par les pairs.<\/p>\n<p>Enfin, la LOOCV d\u00e9ploie une sensibilit\u00e9 diagnostique exceptionnelle \u00e0 l&rsquo;\u00e9gard des observations atypiques, isol\u00e9es ou exer\u00e7ant un fort levier. Dans une validation crois\u00e9e par blocs, l&rsquo;effet de perturbation induit par un point aberrant est dilu\u00e9 au sein du pli de test parmi plusieurs autres observations. En LOOCV, l&rsquo;observation extr\u00eame est \u00e9valu\u00e9e en totale autonomie : lorsque le mod\u00e8le est entra\u00een\u00e9 sans elle, sa projection hors \u00e9chantillon accuse un r\u00e9sidu massif qui met imm\u00e9diatement en lumi\u00e8re son statut d&rsquo;anomalie structurelle.<\/p>\n<h3>4.2 Vuln\u00e9rabilit\u00e9s statistiques et risques de sur-variance<\/h3>\n<p>Nonobstant ses vertus th\u00e9oriques, la LOOCV pr\u00e9sente des vuln\u00e9rabilit\u00e9s statistiques substantielles qu&rsquo;un analyste averti ne saurait occulter. La premi\u00e8re limitation r\u00e9side dans la variance intrins\u00e8que \u00e9lev\u00e9e de son estimateur d&rsquo;erreur globale. Bien que l&rsquo;erreur mesur\u00e9e soit d\u00e9nu\u00e9e de biais \u00e0 l&rsquo;\u00e9chelle de chaque sous-mod\u00e8le, la sommation de termes hautement corr\u00e9l\u00e9s engendre une dispersion importante de la m\u00e9trique agr\u00e9g\u00e9e si l&rsquo;on consid\u00e8re la distribution th\u00e9orique sur l&rsquo;ensemble des r\u00e9plicats de population possibles.<\/p>\n<p>Cette vuln\u00e9rabilit\u00e9 s&rsquo;amplifie consid\u00e9rablement en pr\u00e9sence de multicolin\u00e9arit\u00e9 s\u00e9v\u00e8re parmi les r\u00e9gresseurs. Lorsque deux ou plusieurs variables explicatives sont quasi-d\u00e9pendantes, l&rsquo;omission d&rsquo;une seule observation influente peut modifier drastiquement les directions d&rsquo;ajustement du plan d&rsquo;hyper-r\u00e9gression. Dans cette configuration, les mod\u00e8les <em>f_(-i)<\/em> successifs manifestent une instabilit\u00e9 param\u00e9trique sensible, r\u00e9percutant une variabilit\u00e9 anarchique sur les r\u00e9sidus d&rsquo;omission individuels.<\/p>\n<p>Un autre risque m\u00e9thodologique document\u00e9 par Trevor Hastie et ses co-auteurs concerne la propension de la LOOCV \u00e0 favoriser des mod\u00e8les sur-complexes dans les d\u00e9marches de s\u00e9lection automatique de pr\u00e9dicteurs (par r\u00e9gression pas \u00e0 pas ou minimisation combinatoire). En raison de sa faible p\u00e9nalisation du biais par rapport au <em>10-fold cross-validation<\/em>, la LOOCV tend parfois \u00e0 sur-s\u00e9lectionner des variables superflues qui capturent du bruit idiosyncrasique, augmentant le risque d&rsquo;int\u00e9grer des pr\u00e9dicteurs non g\u00e9n\u00e9ralisables \u00e0 l&rsquo;\u00e9chelle populationnelle.<\/p>\n<h3>4.3 D\u00e9pendance temporelle et spatiale : quand proscrire la LOOCV classique<\/h3>\n<p>L&rsquo;hypoth\u00e8se \u00e9pist\u00e9mologique sous-tendant la validit\u00e9 de la LOOCV \u2014 et de toute validation crois\u00e9e standard \u2014 est celle de l&rsquo;ind\u00e9pendance et de l&rsquo;identique distribution des observations (hypoth\u00e8se <em>i.i.d.<\/em>). La violation de cette condition pr\u00e9alable annule formellement les garanties de convergence de l&rsquo;estimateur d&rsquo;erreur out-of-sample.<\/p>\n<p>Cette transgression se manifeste de mani\u00e8re aigu\u00eb dans les s\u00e9ries temporelles et les donn\u00e9es g\u00e9ospatiales. Si les donn\u00e9es pr\u00e9sentent une autocorr\u00e9lation temporelle d&rsquo;ordre 1 (<em>AR(1)<\/em>), l&rsquo;observation omise <em>y_t<\/em> \u00e0 l&rsquo;instant <em>t<\/em> est \u00e9troitement corr\u00e9l\u00e9e \u00e0 ses voisins imm\u00e9diats <em>y_(t-1)<\/em> et <em>y_(t+1)<\/em>. Lors de l&rsquo;ajustement du mod\u00e8le sur <em>D_(-t)<\/em>, les points entourant imm\u00e9diatement l&rsquo;instant <em>t<\/em> sont conserv\u00e9s dans le jeu d&rsquo;entra\u00eenement. Le mod\u00e8le peut ainsi exploiter la structure d&rsquo;autocorr\u00e9lation interne pour reconstituer indirectement l&rsquo;information de <em>y_t<\/em> sans apprendre la dynamique r\u00e9elle du ph\u00e9nom\u00e8ne. Il en d\u00e9coule une fuite d&rsquo;information temporelle majeure et une sous-estimation spectaculaire de l&rsquo;erreur r\u00e9elle de pr\u00e9vision.<\/p>\n<p>Face \u00e0 ces architectures de donn\u00e9es corr\u00e9l\u00e9es, la LOOCV conventionnelle doit \u00eatre formellement proscrite au profit de d\u00e9clinaisons adapt\u00e9es :<\/p>\n<ul>\n<li><strong>Blocked LOOCV (h-block cross-validation) :<\/strong> Lorsqu&rsquo;une observation <em>y_t<\/em> est retir\u00e9e pour servir de test, une fen\u00eatre temporelle ou spatiale de taille <em>h<\/em> pr\u00e9c\u00e9dant et succ\u00e9dant \u00e0 ce point est \u00e9galement \u00e9cart\u00e9e du jeu d&rsquo;apprentissage afin de rompre tout pont d&rsquo;autocorr\u00e9lation.<\/li>\n<li><strong>Leave-One-Cluster-Out (LOCO) :<\/strong> Pour des donn\u00e9es hi\u00e9rarchiques ou des mesures r\u00e9p\u00e9t\u00e9es chez des patients, l&rsquo;omission ne doit pas porter sur une mesure unitaire mais sur l&rsquo;int\u00e9gralit\u00e9 du groupe ou du sujet (toutes les trajectoires temporelles de l&rsquo;individu <em>i<\/em> sont omises simultan\u00e9ment).<\/li>\n<li><strong>Rolling-origin evaluation :<\/strong> Pour les s\u00e9ries purement pr\u00e9dictives vers le futur, une structure s\u00e9quentielle d&rsquo;horizon mobile doit \u00eatre rigoureusement maintenue.<\/li>\n<\/ul>\n<h2>5. Pr\u00e9paration de l&rsquo;environnement de travail et \u00e9cosyst\u00e8me de packages sous R<\/h2>\n<h3>5.1 Configuration de l&rsquo;espace de travail et d\u00e9pendances logicielles<\/h3>\n<p>L&rsquo;ex\u00e9cution optimale des protocoles de validation crois\u00e9e sous R exige un environnement structur\u00e9 et reproductible. Nous mobiliserons un \u00e9cosyst\u00e8me \u00e9prouv\u00e9 combinant la manipulation fonctionnelle de donn\u00e9es, l&rsquo;infrastructure d&rsquo;apprentissage statistique et le calcul num\u00e9rique direct. Les principaux packages requis comprennent <code>caret<\/code> pour la gestion standardis\u00e9e des entra\u00eenements, <code>boot<\/code> pour le calcul rapide des erreurs par mod\u00e8les lin\u00e9aires g\u00e9n\u00e9ralis\u00e9s, <code>tidyverse<\/code> pour la manipulation et la restitution graphique, ainsi que <code>MASS<\/code> pour l&rsquo;acc\u00e8s \u00e0 des fonctions math\u00e9matiques avanc\u00e9es.<\/p>\n<p>L&rsquo;initialisation sous R s&rsquo;op\u00e8re par le chargement concert\u00e9 des biblioth\u00e8ques et la configuration des options d&rsquo;affichage num\u00e9rique afin de garantir une lisibilit\u00e9 optimale des sorties de matrices r\u00e9siduelles :<\/p>\n<p><code>options(scipen = 999, digits = 5)<\/code><br \/>\n<code>library(caret)<\/code><br \/>\n<code>library(boot)<\/code><br \/>\n<code>library(tidyverse)<\/code><br \/>\n<code>library(MASS)<\/code><\/p>\n<p>Il convient de s&rsquo;assurer de la coh\u00e9rence des versions logicielles de l&rsquo;interpr\u00e9teur R (id\u00e9alement R 4.x ou sup\u00e9rieure). Les routines matricielles internes exploitent les liaisons BLAS\/LAPACK de votre syst\u00e8me d&rsquo;exploitation ; la stabilit\u00e9 num\u00e9rique lors de l&rsquo;inversion de matrices de covariance requiert l&rsquo;absence d&rsquo;\u00e9l\u00e9ments singuliers ou ind\u00e9termin\u00e9s dans l&rsquo;espace global d&rsquo;adressage m\u00e9moire.<\/p>\n<h3>5.2 Structure et pr\u00e9traitement des donn\u00e9es pour la validation crois\u00e9e<\/h3>\n<p>La rigueur m\u00e9thodologique impose une inspection m\u00e9ticuleuse de la structure des donn\u00e9es avant toute tentative de partitionnement. Les pr\u00e9dicteurs doivent \u00eatre cat\u00e9goris\u00e9s sans ambigu\u00eft\u00e9 : les variables qualitatives doivent \u00eatre typ\u00e9es en tant que facteurs (<em>factors<\/em>) et les variables continues doivent \u00eatre stock\u00e9es dans des vecteurs num\u00e9riques purs. La pr\u00e9sence de valeurs manquantes (<code>NA<\/code>) n\u00e9cessite un arbitrage en amont : la plupart des fonctions d&rsquo;estimation matricielle rejettent les lignes incompl\u00e8tes ou appliquent par d\u00e9faut une suppression univari\u00e9e qui alt\u00e8re la taille effective de <em>n<\/em> \u00e0 chaque it\u00e9ration.<\/p>\n<p>Un aspect critique concerne la standardisation (centrage et r\u00e9duction) des variables explicatives. Si l&rsquo;on applique une normalisation globale sur l&rsquo;ensemble de donn\u00e9es complet avant de lancer une proc\u00e9dure de validation crois\u00e9e, on contamine insidieusement les sous-ensembles d&rsquo;apprentissage avec la moyenne et l&rsquo;\u00e9cart-type de l&rsquo;observation de test. Dans un cadre m\u00e9thodologique irr\u00e9prochable, l&rsquo;estimation des param\u00e8tres de centrage et de mise \u00e0 l&rsquo;\u00e9chelle doit \u00eatre encapsul\u00e9e de mani\u00e8re \u00e9tanche \u00e0 l&rsquo;int\u00e9rieur de chaque pli de r\u00e9entra\u00eenement. Nous verrons comment le param\u00e8tre <code>preProcess<\/code> de <code>caret<\/code> prend en charge cette exigence sans biais de fuite d&rsquo;information.<\/p>\n<h3>5.3 Construction d&rsquo;un jeu de donn\u00e9es synth\u00e9tique pour validation empirique<\/h3>\n<p>Afin de disposer d&rsquo;une v\u00e9rit\u00e9 terrain contr\u00f4l\u00e9e (<em>ground truth<\/em>) permettant de v\u00e9rifier empiriquement l&rsquo;exactitude de nos calculs math\u00e9matiques et d&rsquo;observer le comportement de la LOOCV, nous allons g\u00e9n\u00e9rer un jeu de donn\u00e9es synth\u00e9tique reproductible simulant une \u00e9tude psychologique. Imaginons une recherche \u00e9valuant l&rsquo;indice d&rsquo;efficience cognitive (<em>IEC<\/em>) de 50 participants sur la base de trois pr\u00e9dicteurs : la vitesse de traitement de l&rsquo;information (<em>VPI<\/em>), la capacit\u00e9 de m\u00e9moire de travail (<em>CMT<\/em>) et le niveau d&rsquo;anxi\u00e9t\u00e9 situationnelle (<em>NAS<\/em>).<\/p>\n<p>Le code suivant initialise le g\u00e9n\u00e9rateur pseudo-al\u00e9atoire et construit notre data-frame de r\u00e9f\u00e9rence :<\/p>\n<p><code>set.seed(1984)<\/code><br \/>\n<code>n &lt;- 50<\/code><br \/>\n<code>vpi &lt;- rnorm(n, mean = 100, sd = 15)<\/code><br \/>\n<code>cmt &lt;- rnorm(n, mean = 50, sd = 10)<\/code><br \/>\n<code>nas &lt;- rnorm(n, mean = 25, sd = 5)<\/code><br \/>\n<code>erreur &lt;- rnorm(n, mean = 0, sd = 8)<\/code><br \/>\n<code>iec &lt;- 15 + (0.45 * vpi) + (0.75 * cmt) - (0.60 * nas) + erreur<\/code><br \/>\n<code>df_cognitif &lt;- data.frame(IEC = iec, VPI = vpi, CMT = cmt, NAS = nas)<\/code><\/p>\n<p>Cette structure g\u00e9n\u00e8re une relation lin\u00e9aire th\u00e9orique bien d\u00e9termin\u00e9e, assortie d&rsquo;une perturbation stochastique normale homosc\u00e9dastique d&rsquo;\u00e9cart-type 8. L&rsquo;inspection pr\u00e9liminaire des distributions empiriques via <code>summary(df_cognitif)<\/code> confirme que les \u00e9chelles num\u00e9riques correspondent parfaitement aux distributions attendues dans les protocoles standardis\u00e9s d&rsquo;\u00e9valuation psychom\u00e9trique.<\/p>\n<h2>6. Impl\u00e9mentation pas \u00e0 pas de la LOOCV avec le package caret<\/h2>\n<h3>6.1 Configuration du contr\u00f4le d&rsquo;entra\u00eenement avec trainControl()<\/h3>\n<p>Le package <code>caret<\/code> (<em>Classification And REgression Training<\/em>), d\u00e9velopp\u00e9 par Max Kuhn, constitue la r\u00e9f\u00e9rence historique sous R pour unifier les interfaces de mod\u00e9lisation pr\u00e9dictive. Sa structure modulaire repose sur la s\u00e9paration rigoureuse entre la d\u00e9finition du protocole de r\u00e9\u00e9chantillonnage et l&rsquo;estimation de l&rsquo;algorithme sous-jacent.<\/p>\n<p>La configuration de la LOOCV s&rsquo;effectue au travers de la fonction <code>trainControl()<\/code>. Pour activer le partitionnement Leave-One-Out d\u00e9terministe, l&rsquo;argument fondamental est <code>method = \"LOOCV\"<\/code>. Il est imp\u00e9ratif de configurer judicieusement les param\u00e8tres auxiliaires pour autoriser l&rsquo;extraction ult\u00e9rieure des m\u00e9triques diagnostiques. Plus pr\u00e9cis\u00e9ment, l&rsquo;argument <code>savePredictions = \"all\"<\/code> (ou <code>\"final\"<\/code>) ordonne \u00e0 l&rsquo;interpr\u00e9teur de conserver en m\u00e9moire le tableau int\u00e9gral des pr\u00e9dictions hors \u00e9chantillon g\u00e9n\u00e9r\u00e9es lors de chaque passage unitaire :<\/p>\n<p><code>controle_loocv &lt;- trainControl(method = \"LOOCV\", savePredictions = \"all\")<\/code><\/p>\n<p>Cette instruction instancie un objet de configuration qui pilotera la routine d&rsquo;ajustement. Sous le capot, <code>caret<\/code> calcule le nombre total d&rsquo;observations <em>n<\/em> et planifie exactement <em>n<\/em> it\u00e9rations sans composante stochastique, rendant superflue toute r\u00e9initialisation de graine al\u00e9atoire lors des appels ult\u00e9rieurs \u00e0 cette configuration sp\u00e9cifique.<\/p>\n<h3>6.2 Entra\u00eenement et estimation du mod\u00e8le lin\u00e9aire via la fonction train()<\/h3>\n<p>L&rsquo;ajustement du mod\u00e8le sous contr\u00f4le LOOCV s&rsquo;op\u00e8re au moyen de la fonction g\u00e9n\u00e9rique <code>train()<\/code>. On sp\u00e9cifie la formule symbolique reliant la variable d\u00e9pendante aux pr\u00e9dicteurs, le jeu de donn\u00e9es, la m\u00e9thode d&rsquo;apprentissage (ici <code>method = \"lm\"<\/code> pour la r\u00e9gression lin\u00e9aire ordinaire) et l&rsquo;objet de contr\u00f4le param\u00e9tr\u00e9 pr\u00e9c\u00e9demment :<\/p>\n<p><code>modele_caret &lt;- train(IEC ~ VPI + CMT + NAS, data = df_cognitif, method = \"lm\", trControl = controle_loocv)<\/code><\/p>\n<p>L&rsquo;ex\u00e9cution de cette commande d\u00e9clenche l&rsquo;ex\u00e9cution it\u00e9rative du protocole. L&rsquo;affichage de l&rsquo;objet r\u00e9sultant via <code>print(modele_caret)<\/code> restitue une synth\u00e8se claire de la performance empirique out-of-sample :<\/p>\n<p><code>modele_caret<\/code><\/p>\n<p>La sortie console renvoie les trois m\u00e9triques agr\u00e9g\u00e9es standards calcul\u00e9es sur les 50 pr\u00e9dictions hors \u00e9chantillon :<\/p>\n<ul>\n<li><strong>RMSE (Root Mean Squared Error) :<\/strong> La racine carr\u00e9e de la moyenne des r\u00e9sidus au carr\u00e9, exprim\u00e9e directement dans l&rsquo;unit\u00e9 originale de la variable cible (ici en points d&rsquo;indice d&rsquo;efficience cognitive).<\/li>\n<li><strong>Rsquared (R\u00b2) :<\/strong> Le coefficient de d\u00e9termination out-of-sample mesurant la proportion de variance de la cible restitu\u00e9e par les pr\u00e9dictions ind\u00e9pendantes.<\/li>\n<li><strong>MAE (Mean Absolute Error) :<\/strong> L&rsquo;erreur absolue moyenne, offrant une mesure de dispersion moins sensible aux d\u00e9viations extr\u00eames que la RMSE.<\/li>\n<\/ul>\n<h3>6.3 Analyse granulaire des pr\u00e9dictions individuelles out-of-fold<\/h3>\n<p>L&rsquo;un des avantages majeurs d&rsquo;avoir sp\u00e9cifi\u00e9 <code>savePredictions = \"all\"<\/code> r\u00e9side dans l&rsquo;acc\u00e8s direct aux pr\u00e9dictions out-of-fold pour chaque individu statistique. L&rsquo;attribut <code>modele_caret$pred<\/code> contient une structure de donn\u00e9es tabulaire d\u00e9taillant pour chaque observation sa valeur observ\u00e9e (<code>obs<\/code>), sa valeur pr\u00e9dite lorsqu&rsquo;elle \u00e9tait exclue de l&rsquo;apprentissage (<code>pred<\/code>), ainsi que son identifiant de ligne original (<code>rowIndex<\/code>) :<\/p>\n<p><code>predictions_df &lt;- modele_caret<span class=\"arabpsy-math-inline\" data-latex=\"pred[order(modele_caret\">$pred[order(modele_caret$<\/span>pred$rowIndex), ]<\/code><br \/>\n<code>head(predictions_df, 5)<\/code><\/p>\n<p>Cette granularit\u00e9 analytique permet d&rsquo;\u00e9valuer la qualit\u00e9 du calibrage individuel au moyen d&rsquo;un graphique de dispersion produit avec <code>ggplot2<\/code>. La visualisation compare les valeurs r\u00e9elles aux pr\u00e9dictions LOOCV, enrichie d&rsquo;une droite de r\u00e9f\u00e9rence \u00e0 45 degr\u00e9s (droite d&rsquo;identit\u00e9 parfaite <em>y = y_hat<\/em>) :<\/p>\n<p><code>ggplot(predictions_df, aes(x = pred, y = obs)) +<\/code><br \/>\n<code>&nbsp;&nbsp;geom_point(color = \"#1f77b4\", size = 2.5, alpha = 0.8) +<\/code><br \/>\n<code>&nbsp;&nbsp;geom_abline(intercept = 0, slope = 1, linetype = \"dashed\", color = \"#d62728\", linewidth = 0.8) +<\/code><br \/>\n<code>&nbsp;&nbsp;labs(title = \"Calibrage des pr\u00e9dictions LOOCV (caret)\", x = \"Valeurs pr\u00e9dites hors \u00e9chantillon\", y = \"Valeurs observ\u00e9es\") +<\/code><br \/>\n<code>&nbsp;&nbsp;theme_minimal()<\/code><\/p>\n<p>Tout d\u00e9calage structurel ou motif en \u00e9ventail (h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 pr\u00e9dictive) le long de la diagonale th\u00e9orique signale imm\u00e9diatement \u00e0 l&rsquo;analyste un d\u00e9faut de mod\u00e9lisation non d\u00e9tectable par l&rsquo;inspection des r\u00e9sidus intra-\u00e9chantillon classiques.<\/p>\n<h2>7. Calcul manuel et programmation native de la LOOCV sans package additionnel<\/h2>\n<h3>7.1 Impl\u00e9mentation d&rsquo;une boucle for it\u00e9rative explicite<\/h3>\n<p>Comprendre la m\u00e9canique computationnelle intime d&rsquo;un algorithme passe imp\u00e9rativement par sa reconstruction dans le dialecte natif de base de R. L&rsquo;\u00e9criture d&rsquo;une boucle <code>for<\/code> explicite permet de d\u00e9mystifier le processus et d&rsquo;assurer un contr\u00f4le total sur l&rsquo;indexation matricielle.<\/p>\n<p>Nous initialisons un vecteur num\u00e9rique pr\u00e9allou\u00e9 de longueur <em>n<\/em> destin\u00e9 \u00e0 recueillir l&rsquo;ensemble des r\u00e9sidus de pr\u00e9diction. \u00c0 chaque \u00e9tape de l&rsquo;it\u00e9ration, l&rsquo;indexation n\u00e9gative <code>df[-i, ]<\/code> s\u00e9pare le jeu d&rsquo;apprentissage amput\u00e9, tandis que <code>df[i, ]<\/code> fournit l&rsquo;unique ligne servant de banc d&rsquo;essai :<\/p>\n<p><code>n &lt;- nrow(df_cognitif)<\/code><br \/>\n<code>residus_manuels &lt;- numeric(n)<\/code><br \/>\n<code>for (i in 1:n) {<\/code><br \/>\n<code>&nbsp;&nbsp;modele_local &lt;- lm(IEC ~ VPI + CMT + NAS, data = df_cognitif[-i, ])<\/code><br \/>\n<code>&nbsp;&nbsp;prediction_i &lt;- predict(modele_local, newdata = df_cognitif[i, ])<\/code><br \/>\n<code>&nbsp;&nbsp;residus_manuels[i] &lt;- df_cognitif$IEC[i] - prediction_i<\/code><br \/>\n<code>}<\/code><br \/>\n<code>mse_boucle &lt;- mean(residus_manuels^2)<\/code><br \/>\n<code>rmse_boucle &lt;- sqrt(mse_boucle)<\/code><br \/>\n<code>print(paste(\"MSE LOOCV boucle :\", round(mse_boucle, 4)))<\/code><br \/>\n<code>print(paste(\"RMSE LOOCV boucle :\", round(rmse_boucle, 4)))<\/code><\/p>\n<p>Ce script illustre avec une clart\u00e9 limpide la d\u00e9finition th\u00e9orique : chaque mod\u00e8le local ignore totalement l&rsquo;existence de l&rsquo;observation <em>i<\/em> au moment o\u00f9 ses coefficients de r\u00e9gression sont calcul\u00e9s. L&rsquo;agr\u00e9gation finale par <code>mean(residus_manuels^2)<\/code> restitue la MSE th\u00e9orique exacte sans aucune bo\u00eete noire interm\u00e9diaire.<\/p>\n<h3>7.2 Vectorisation du calcul LOOCV avec la famille apply<\/h3>\n<p>Bien que la boucle <code>for<\/code> sous les versions contemporaines de R b\u00e9n\u00e9ficie de l&rsquo;optimisation \u00e0 la vol\u00e9e du compilateur JIT (<em>Just-In-Time<\/em>), la philosophie idiomatique de R privil\u00e9gie la programmation fonctionnelle via les fonctions de la famille <code>apply<\/code> ou les foncteurs du package <code>purrr<\/code>. Ces approches r\u00e9duisent la verbosit\u00e9 du code et limitent les risques d&rsquo;effets de bord li\u00e9s \u00e0 la modification de variables dans l&rsquo;environnement global.<\/p>\n<p>La vectorisation fonctionnelle s&rsquo;ex\u00e9cute \u00e9l\u00e9gamment au moyen de la fonction <code>sapply()<\/code> en it\u00e9rant sur le vecteur d&rsquo;indices entiers de 1 \u00e0 <em>n<\/em> :<\/p>\n<p><code>calcul_residu_loocv &lt;- function(idx, data, formule) {<\/code><br \/>\n<code>&nbsp;&nbsp;fit &lt;- lm(formule, data = data[-idx, ])<\/code><br \/>\n<code>&nbsp;&nbsp;y_reel &lt;- data[idx, all.vars(formule)[1]]<\/code><br \/>\n<code>&nbsp;&nbsp;y_pred &lt;- predict(fit, newdata = data[idx, ])<\/code><br \/>\n<code>&nbsp;&nbsp;return(y_reel - y_pred)<\/code><br \/>\n<code>}<\/code><br \/>\n<code>residus_vectorises &lt;- sapply(1:nrow(df_cognitif), calcul_residu_loocv, data = df_cognitif, formule = IEC ~ VPI + CMT + NAS)<\/code><br \/>\n<code>rmse_vectorise &lt;- sqrt(mean(residus_vectorises^2))<\/code><br \/>\n<code>print(paste(\"RMSE via sapply :\", round(rmse_vectorise, 4)))<\/code><\/p>\n<p>Sur le plan de l&rsquo;allocation m\u00e9moire, cette m\u00e9thode encapsule l&rsquo;ajustement du mod\u00e8le au sein de la port\u00e9e locale de la fonction, garantissant que les objets volumineux cr\u00e9\u00e9s temporairement par <code>lm()<\/code> sont imm\u00e9diatement purg\u00e9s par le ramasse-miettes (<em>garbage collector<\/em>) \u00e0 chaque retour d&rsquo;it\u00e9ration.<\/p>\n<h3>7.3 V\u00e9rification de la formule analytique matricielle par les moindres carr\u00e9s<\/h3>\n<p>Nous pouvons d\u00e9sormais confronter les r\u00e9sultats de nos calculs it\u00e9ratifs \u00e0 l&rsquo;\u00e9l\u00e9gante formule directe de la statistique PRESS d&rsquo;Allen d\u00e9montr\u00e9e \u00e0 la section 2.2. Cette op\u00e9ration ne requiert qu&rsquo;un unique ajustement du mod\u00e8le global sur l&rsquo;ensemble de donn\u00e9es complet, suivi de l&rsquo;extraction des r\u00e9sidus intra-\u00e9chantillon et des valeurs de levier diagonal :<\/p>\n<p><code>modele_global &lt;- lm(IEC ~ VPI + CMT + NAS, data = df_cognitif)<\/code><br \/>\n<code>residus_intra &lt;- residuals(modele_global)<\/code><br \/>\n<code>leviers &lt;- hatvalues(modele_global)<\/code><br \/>\n<code>residus_press &lt;- residus_intra \/ (1 - leviers)<\/code><br \/>\n<code>mse_press &lt;- mean(residus_press^2)<\/code><br \/>\n<code>rmse_press &lt;- sqrt(mse_press)<\/code><br \/>\n<code>print(paste(\"RMSE formule PRESS matricielle :\", round(rmse_press, 4)))<\/code><\/p>\n<p>Si l&rsquo;on compare <code>rmse_boucle<\/code>, <code>rmse_vectorise<\/code> et <code>rmse_press<\/code>, on constate une identit\u00e9 num\u00e9rique absolue jusqu&rsquo;\u00e0 la quatorzi\u00e8me d\u00e9cimale (modulo la pr\u00e9cision machine IEEE 754) :<\/p>\n<p><code>all.equal(residus_manuels, as.vector(residus_press))<\/code><\/p>\n<p>Cette confirmation empirique illustre la puissance de l&rsquo;alg\u00e8bre lin\u00e9aire : un r\u00e9sultat n\u00e9cessitant 50 r\u00e9gressions compl\u00e8tes en mode it\u00e9ratif est obtenu instantan\u00e9ment par une simple division terme \u00e0 terme sur le vecteur des leviers de la matrice chapeau.<\/p>\n<h2>8. Utilisation du package boot et de la fonction cv.glm()<\/h2>\n<h3>8.1 Param\u00e9trage des mod\u00e8les lin\u00e9aires g\u00e9n\u00e9ralis\u00e9s avec glm()<\/h3>\n<p>Le package standard <code>boot<\/code>, int\u00e9gr\u00e9 nativement dans toutes les distributions R sous la tutelle de Brian Ripley, propose des fonctionnalit\u00e9s avanc\u00e9es d&rsquo;\u00e9valuation empirique. La fonction cl\u00e9 pour la validation crois\u00e9e est <code>cv.glm()<\/code>. Pour interagir avec cette biblioth\u00e8que, le mod\u00e8le sous-jacent doit \u00eatre obligatoirement sp\u00e9cifi\u00e9 via la fonction <code>glm()<\/code> (<em>Generalized Linear Models<\/em>) et non <code>lm()<\/code>.<\/p>\n<p>Dans le cas d&rsquo;une r\u00e9gression lin\u00e9aire continue classique \u00e0 erreurs normales homosc\u00e9dastiques, le param\u00e9trage de <code>glm()<\/code> retient la famille gaussienne avec fonction de lien identit\u00e9 par d\u00e9faut :<\/p>\n<p><code>modele_glm &lt;- glm(IEC ~ VPI + CMT + NAS, family = gaussian(link = \"identity\"), data = df_cognitif)<\/code><\/p>\n<p>Bien que l&rsquo;ajustement math\u00e9matique soit strictement identique \u00e0 celui produit par <code>lm()<\/code>, l&rsquo;objet r\u00e9sultant de classe <code>glm<\/code> encapsule la structure de vraisemblance et les fonctions d&rsquo;\u00e9cart (<em>deviance<\/em>) n\u00e9cessaires au fonctionnement des algorithmes r\u00e9cursifs du package <code>boot<\/code>.<\/p>\n<h3>8.2 Ex\u00e9cution de cv.glm() et interpr\u00e9tation du vecteur delta<\/h3>\n<p>L&rsquo;ex\u00e9cution de la LOOCV au moyen de <code>cv.glm()<\/code> s&rsquo;effectue en omettant d\u00e9lib\u00e9r\u00e9ment l&rsquo;argument <code>K<\/code> (ou en le fixant explicitement \u00e0 la taille de l&rsquo;\u00e9chantillon <code>K = nrow(data)<\/code>). Lorsque cet argument n&rsquo;est pas sp\u00e9cifi\u00e9, la fonction bascule automatiquement sur un partitionnement Leave-One-Out complet :<\/p>\n<p><code>validation_boot &lt;- cv.glm(data = df_cognitif, glmfit = modele_glm)<\/code><\/p>\n<p>L&rsquo;inspection des r\u00e9sultats s&rsquo;op\u00e8re en interrogeant la composante <code>delta<\/code> de l&rsquo;objet produit :<\/p>\n<p><code>validation_boot$delta<\/code><br \/>\n<code>rmse_cv_glm &lt;- sqrt(validation_boot$delta[1])<\/code><br \/>\n<code>print(paste(\"RMSE via boot::cv.glm :\", round(rmse_cv_glm, 4)))<\/code><\/p>\n<p>Le vecteur <code>delta<\/code> renvoie exactement deux valeurs num\u00e9riques distinctes qu&rsquo;il convient de ne pas confondre :<\/p>\n<ul>\n<li><strong>La premi\u00e8re composante <code>delta[1]<\/code> :<\/strong> Elle repr\u00e9sente l&rsquo;estimation brute de l&rsquo;erreur moyenne de validation crois\u00e9e non ajust\u00e9e (dans notre exemple continu, la MSE LOOCV brute).<\/li>\n<li><strong>La seconde composante <code>delta[2]<\/code> :<\/strong> Elle introduit une correction de biais d\u00e9velopp\u00e9e par Davison et Hinkley. Cette correction compense le biais asymptotique qui survient lorsque la LOOCV n&rsquo;est pas strictement \u00e9quivalente \u00e0 l&rsquo;\u00e9chantillon complet, une correction particuli\u00e8rement pertinente dans les mod\u00e8les lin\u00e9aires g\u00e9n\u00e9ralis\u00e9s non gaussiens o\u00f9 la d\u00e9viance d\u00e9pend fortement de l&rsquo;estimation de param\u00e8tres de dispersion.<\/li>\n<\/ul>\n<p>Dans le cas d&rsquo;une r\u00e9gression lin\u00e9aire gaussienne simple sous LOOCV, les deux composantes de <code>delta<\/code> sont g\u00e9n\u00e9ralement quasi indiscernables, confirmant le biais initial infime de la proc\u00e9dure.<\/p>\n<h3>8.3 Comparaison critique de la vitesse d&rsquo;ex\u00e9cution : caret, cv.glm et alg\u00e8bre matricielle<\/h3>\n<p>L&rsquo;existence de multiples impl\u00e9mentations pose la question cruciale de l&rsquo;efficience algorithmique. Nous pouvons quantifier rigoureusement les \u00e9carts de performance computationnelle gr\u00e2ce au package <code>microbenchmark<\/code>, qui ex\u00e9cute chaque m\u00e9thode un nombre contr\u00f4l\u00e9 de fois (par exemple 100 r\u00e9plications) et mesure les distributions temporelles en millisecondes :<\/p>\n<p><code>library(microbenchmark)<\/code><br \/>\n<code>test_benchmark &lt;- microbenchmark(<\/code><br \/>\n<code>&nbsp;&nbsp;Matriciel_PRESS = {<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;fit &lt;- lm(IEC ~ VPI + CMT + NAS, data = df_cognitif)<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;mean((residuals(fit) \/ (1 - hatvalues(fit)))^2)<\/code><br \/>\n<code>&nbsp;&nbsp;},<\/code><br \/>\n<code>&nbsp;&nbsp;Boucle_Native = {<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;res &lt;- numeric(nrow(df_cognitif))<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;for (i in 1:nrow(df_cognitif)) {<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m &lt;- lm(IEC ~ VPI + CMT + NAS, data = df_cognitif[-i, ])<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res[i] &lt;- df_cognitif$IEC[i] - predict(m, newdata = df_cognitif[i, ])<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;}<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;mean(res^2)<\/code><br \/>\n<code>&nbsp;&nbsp;},<\/code><br \/>\n<code>&nbsp;&nbsp;Boot_cv_glm = {<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;m &lt;- glm(IEC ~ VPI + CMT + NAS, data = df_cognitif)<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;cv.glm(df_cognitif, m)$delta[1]<\/code><br \/>\n<code>&nbsp;&nbsp;},<\/code><br \/>\n<code>&nbsp;&nbsp;Caret_LOOCV = {<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;train(IEC ~ VPI + CMT + NAS, data = df_cognitif, method = \"lm\", trControl = trainControl(method = \"LOOCV\"))<\/code><br \/>\n<code>&nbsp;&nbsp;},<\/code><br \/>\n<code>&nbsp;&nbsp;times = 50<\/code><br \/>\n<code>)<\/code><br \/>\n<code>print(test_benchmark)<\/code><\/p>\n<p>Les r\u00e9sultats r\u00e9v\u00e8lent une hi\u00e9rarchie temporelle flagrante :<\/p>\n<ul>\n<li>L&rsquo;approche <strong>Matricielle PRESS<\/strong> s&rsquo;ex\u00e9cute en une fraction de milliseconde (ordre de grandeur : 0,1 \u00e0 0,3 ms), surclassant toutes les autres approches de plusieurs ordres de grandeur.<\/li>\n<li>La <strong>Boucle Native<\/strong> et la fonction <strong>cv.glm<\/strong> affichent des performances interm\u00e9diaires (souvent entre 20 et 50 ms pour <em>n = 50<\/em>), <code>cv.glm<\/code> int\u00e9grant des contr\u00f4les d&rsquo;int\u00e9grit\u00e9 suppl\u00e9mentaires sur la structure exponentielle du mod\u00e8le.<\/li>\n<li>L&rsquo;infrastructure <strong>Caret<\/strong> s&rsquo;av\u00e8re la plus lente (souvent &gt; 150 ms), ce qui est le prix \u00e0 payer pour l&rsquo;encapsulation de multiples m\u00e9triques de contr\u00f4le, la gestion des structures de classes de haut niveau et la sauvegarde conditionnelle des r\u00e9sidus.<\/li>\n<\/ul>\n<p>La recommandation op\u00e9rationnelle est univoque : d\u00e8s lors qu&rsquo;un mod\u00e8le de r\u00e9gression lin\u00e9aire sous moindres carr\u00e9s ordinaires est \u00e9valu\u00e9, le raccourci matriciel PRESS doit \u00eatre syst\u00e9matiquement pr\u00e9f\u00e9r\u00e9 pour les d\u00e9marches intensives de s\u00e9lection de mod\u00e8les ou de bootstrap embo\u00eet\u00e9.<\/p>\n<h2>9. Application pratique : R\u00e9gression multiple sur donn\u00e9es psychom\u00e9triques<\/h2>\n<h3>9.1 Contexte de l&rsquo;\u00e9tude empirique : Mod\u00e9lisation de l&rsquo;\u00e9puisement professionnel<\/h3>\n<p>Afin d&rsquo;ancrer notre expos\u00e9 dans un cadre de recherche r\u00e9aliste, abordons un cas d&rsquo;\u00e9tude complet issu de la psychologie organisationnelle et de la sant\u00e9 au travail. L&rsquo;objectif consiste \u00e0 mod\u00e9liser le niveau d&rsquo;\u00e9puisement professionnel (<em>burnout<\/em>) au sein d&rsquo;une cohorte de 60 cadres hospitaliers soumis \u00e0 un environnement \u00e0 forte charge \u00e9motionnelle.<\/p>\n<p>Le score global d&rsquo;\u00e9puisement est mesur\u00e9 au moyen de l&rsquo;\u00e9chelle valid\u00e9e du Maslach Burnout Inventory (<em>MBI<\/em>, variable d\u00e9pendante continue variant de 0 \u00e0 100). Les variables pr\u00e9dictives document\u00e9es regroupent :<\/p>\n<ul>\n<li><strong>ChargeMentale :<\/strong> L&rsquo;indice subjectif de pression temporelle et cognitive au poste.<\/li>\n<li><strong>SoutienOrga :<\/strong> Le niveau per\u00e7u d&rsquo;assistance manag\u00e9riale et de reconnaissance institutionnelle.<\/li>\n<li><strong>Nevrosisme :<\/strong> Le trait de personnalit\u00e9 issu du mod\u00e8le Big Five mesurant la vuln\u00e9rabilit\u00e9 \u00e9motionnelle.<\/li>\n<\/ul>\n<p>G\u00e9n\u00e9rons ce cadre empirique avec des corr\u00e9lations r\u00e9alistes (relation n\u00e9gative avec le soutien organisationnel, positive avec la charge et le n\u00e9vrosisme) :<\/p>\n<p><code>set.seed(2024)<\/code><br \/>\n<code>n_burnout &lt;- 60<\/code><br \/>\n<code>charge &lt;- round(rnorm(n_burnout, mean = 65, sd = 12), 1)<\/code><br \/>\n<code>soutien &lt;- round(rnorm(n_burnout, mean = 45, sd = 10), 1)<\/code><br \/>\n<code>nevrosisme &lt;- round(rnorm(n_burnout, mean = 30, sd = 8), 1)<\/code><br \/>\n<code>bruit_clinique &lt;- rnorm(n_burnout, mean = 0, sd = 6)<\/code><br \/>\n<code>score_mbi &lt;- 20 + (0.55 * charge) - (0.40 * soutien) + (0.35 * nevrosisme) + bruit_clinique<\/code><br \/>\n<code>df_burnout &lt;- data.frame(MBI = score_mbi, ChargeMentale = charge, SoutienOrga = soutien, Nevrosisme = nevrosisme)<\/code><\/p>\n<h3>9.2 Proc\u00e9dure compl\u00e8te d&rsquo;estimation LOOCV sous R<\/h3>\n<p>Nous proc\u00e9dons \u00e0 l&rsquo;estimation du mod\u00e8le de r\u00e9gression lin\u00e9aire multiple en mobilisant le pipeline \u00e9tanche de <code>caret<\/code>. Pour respecter rigoureusement les pr\u00e9ceptes formul\u00e9s \u00e0 la section 5.2, nous int\u00e9grons le pr\u00e9traitement de centrage et de r\u00e9duction (<code>preProcess = c(\"center\", \"scale\")<\/code>) au c\u0153ur m\u00eame de la routine LOOCV afin de pr\u00e9server l&rsquo;\u00e9tanch\u00e9it\u00e9 compl\u00e8te des plis d&rsquo;apprentissage :<\/p>\n<p><code>ctrl_burnout &lt;- trainControl(method = \"LOOCV\", savePredictions = \"all\")<\/code><br \/>\n<code>fit_burnout_m1 &lt;- train(MBI ~ ChargeMentale + SoutienOrga + Nevrosisme, data = df_burnout, method = \"lm\", preProcess = c(\"center\", \"scale\"), trControl = ctrl_burnout)<\/code><br \/>\n<code>print(fit_burnout_m1)<\/code><\/p>\n<p>L&rsquo;analyse des sorties console nous fournit les indicateurs de transfert out-of-sample r\u00e9els :<\/p>\n<p><code>summary(fit_burnout_m1$finalModel)<\/code><br \/>\n<code>rmse_m1 &lt;- fit_burnout_m1<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>RMSE<\/code><br \/>\n<code>r2_m1 &lt;- fit_burnout_m1<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>Rsquared<\/code><br \/>\n<code>mae_m1 &lt;- fit_burnout_m1<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>MAE<\/code><br \/>\n<code>print(paste(\"RMSE LOOCV Mod\u00e8le 1 :\", round(rmse_m1, 3)))<\/code><br \/>\n<code>print(paste(\"R\u00b2 LOOCV Mod\u00e8le 1 :\", round(r2_m1, 3)))<\/code><\/p>\n<p>Le <em>R\u00b2<\/em> calcul\u00e9 sur les plis de validation crois\u00e9e (ici g\u00e9n\u00e9ralement compris entre 0,65 et 0,75) traduit la proportion r\u00e9elle de variance que notre structure de variables peut expliquer lorsqu&rsquo;elle est confront\u00e9e \u00e0 un cadre hospitalier non inclus dans l&rsquo;\u00e9chantillon de calibration. Ce coefficient out-of-sample est syst\u00e9matiquement plus modeste que le <em>R\u00b2<\/em> intra-\u00e9chantillon classique, refl\u00e9tant la v\u00e9ritable capacit\u00e9 de g\u00e9n\u00e9ralisation clinique.<\/p>\n<h3>9.3 Comparaison de mod\u00e8les concurrents via la LOOCV<\/h3>\n<p>Une d\u00e9marche scientifique rigoureuse ne se contente pas d&rsquo;\u00e9valuer un mod\u00e8le isol\u00e9 ; elle met en comp\u00e9tition des hypoth\u00e8ses th\u00e9oriques rivales. Consid\u00e9rons l&rsquo;hypoth\u00e8se alternative selon laquelle le soutien organisationnel exerce un effet mod\u00e9rateur tampon (effet d&rsquo;interaction) sur l&rsquo;impact de la charge mentale, en plus d&rsquo;une sp\u00e9cification alternative plus parcimonieuse omettant le trait de n\u00e9vrosisme.<\/p>\n<p>D\u00e9finissons trois mod\u00e8les candidats en comp\u00e9tition directe :<\/p>\n<ul>\n<li><strong>Mod\u00e8le 1 (Additif complet) :<\/strong> <code>MBI ~ ChargeMentale + SoutienOrga + Nevrosisme<\/code><\/li>\n<li><strong>Mod\u00e8le 2 (Avec Interaction) :<\/strong> <code>MBI ~ ChargeMentale * SoutienOrga + Nevrosisme<\/code><\/li>\n<li><strong>Mod\u00e8le 3 (Parcimonieux) :<\/strong> <code>MBI ~ ChargeMentale + SoutienOrga<\/code><\/li>\n<\/ul>\n<p>Entra\u00eenons les mod\u00e8les 2 et 3 sous le m\u00eame protocole LOOCV strict :<\/p>\n<p><code>fit_burnout_m2 &lt;- train(MBI ~ ChargeMentale * SoutienOrga + Nevrosisme, data = df_burnout, method = \"lm\", preProcess = c(\"center\", \"scale\"), trControl = ctrl_burnout)<\/code><br \/>\n<code>fit_burnout_m3 &lt;- train(MBI ~ ChargeMentale + SoutienOrga, data = df_burnout, method = \"lm\", preProcess = c(\"center\", \"scale\"), trControl = ctrl_burnout)<\/code><\/p>\n<p>Synth\u00e9tisons les m\u00e9triques de validation crois\u00e9e au sein d&rsquo;une structure tabulaire comparative :<\/p>\n<p><code>tableau_comparatif &lt;- data.frame(<\/code><br \/>\n<code>&nbsp;&nbsp;Modele = c(\"M1_Additif_Complet\", \"M2_Interaction\", \"M3_Parcimonieux\"),<\/code><br \/>\n<code>&nbsp;&nbsp;RMSE = c(fit_burnout_m1<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>RMSE, fit_burnout_m2<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>RMSE, fit_burnout_m3<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>RMSE),<\/code><br \/>\n<code>&nbsp;&nbsp;MAE = c(fit_burnout_m1<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>MAE, fit_burnout_m2<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>MAE, fit_burnout_m3<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>MAE),<\/code><br \/>\n<code>&nbsp;&nbsp;Rsquared = c(fit_burnout_m1<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>Rsquared, fit_burnout_m2<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>Rsquared, fit_burnout_m3<span class=\"arabpsy-math-inline\" data-latex=\"results\">$results$<\/span>Rsquared)<\/code><br \/>\n<code>)<\/code><br \/>\n<code>print(tableau_comparatif)<\/code><\/p>\n<p>L&rsquo;analyse des scores d&rsquo;erreur permet de trancher sans \u00e9quivoque empirique. Si le Mod\u00e8le 2 avec interaction affiche un <em>R\u00b2<\/em> intra-\u00e9chantillon l\u00e9g\u00e8rement sup\u00e9rieur, son RMSE LOOCV peut s&rsquo;av\u00e9rer sup\u00e9rieur \u00e0 celui du Mod\u00e8le 1. Cela sanctionne imm\u00e9diatement le surajustement induit par l&rsquo;estimation d&rsquo;un param\u00e8tre d&rsquo;interaction instable sur un \u00e9chantillon de seulement 60 observations. La LOOCV s\u00e9lectionne objectivement l&rsquo;architecture minimisant l&rsquo;erreur de transfert hors \u00e9chantillon.<\/p>\n<h2>10. LOOCV pour les mod\u00e8les de classification binaire et logistique<\/h2>\n<h3>10.1 Particularit\u00e9s m\u00e9thodologiques de la LOOCV appliqu\u00e9e aux sorties qualitatives<\/h3>\n<p>L&rsquo;application de la LOOCV \u00e0 des variables d\u00e9pendantes qualitatives (classification binaire ou multinomiale) soul\u00e8ve des particularit\u00e9s th\u00e9oriques majeures. L&rsquo;erreur quadratique standard n&rsquo;est plus adapt\u00e9e pour mesurer la perte op\u00e9rationnelle. L&rsquo;\u00e9valuation repose d\u00e8s lors sur la perte logistique (<em>log-loss<\/em> ou d\u00e9viance binomiale) ou sur des fonctions de perte discr\u00e8tes (taux d&rsquo;erreur de classification binaire).<\/p>\n<p>Une probl\u00e9matique m\u00e9thodologique critique concerne le d\u00e9s\u00e9quilibre des classes (<em>class imbalance<\/em>). Supposons une cohorte o\u00f9 une pathologie rare ne concerne que 4 individus sur 50. Lorsqu&rsquo;une observation positive est exclue pour servir d&rsquo;\u00e9l\u00e9ment de test, le mod\u00e8le d&rsquo;apprentissage ne dispose plus que de 3 cas positifs sur 49. Cette amputation peut modifier substantiellement la probabilit\u00e9 a priori estim\u00e9e par le mod\u00e8le, d\u00e9calant les seuils de d\u00e9cision a posteriori.<\/p>\n<p>Par ailleurs, la pr\u00e9diction out-of-sample d&rsquo;une observation unique produit une probabilit\u00e9 post\u00e9rieure continue <em>P(Y_i = 1 | x_i)<\/em>. L&rsquo;attribution \u00e0 une classe discr\u00e8te exige la d\u00e9finition d&rsquo;un seuil de coupure (typiquement 0,5 par d\u00e9faut). Les matrices de confusion issues de la LOOCV r\u00e9sultent de la concat\u00e9nation de ces <em>n<\/em> d\u00e9cisions discr\u00e8tes ind\u00e9pendantes, n\u00e9cessitant une vigilance soutenue quant \u00e0 l&rsquo;interpr\u00e9tation des m\u00e9triques de sensibilit\u00e9 et de sp\u00e9cificit\u00e9.<\/p>\n<h3>10.2 Impl\u00e9mentation sous R d&rsquo;une r\u00e9gression logistique binaire avec LOOCV<\/h3>\n<p>Pour illustrer la mise en \u0153uvre de la LOOCV en classification binaire, simulons une variable clinique indiquant la r\u00e9mission d&rsquo;un \u00e9tat anxieux s\u00e9v\u00e8re (1 = R\u00e9mission, 0 = Persistance) chez nos participants hospitaliers, pr\u00e9dite par la charge mentale et le niveau de soutien social :<\/p>\n<p><code>set.seed(42)<\/code><br \/>\n<code>proba_theorique &lt;- 1 \/ (1 + exp(-(-1.5 + 0.08 * df_burnout<span class=\"arabpsy-math-inline\" data-latex=\"SoutienOrga - 0.05 * df_burnout\">$SoutienOrga - 0.05 * df_burnout$<\/span>ChargeMentale)))<\/code><br \/>\n<code>df_burnout$Remission &lt;- factor(ifelse(rbinom(n_burnout, size = 1, prob = proba_theorique) == 1, \"Oui\", \"Non\"), levels = c(\"Non\", \"Oui\"))<\/code><\/p>\n<p>L&rsquo;apprentissage sous <code>caret<\/code> s&rsquo;op\u00e8re en d\u00e9clarant la m\u00e9thode de r\u00e9gression logistique (<code>method = \"glm\"<\/code>, <code>family = \"binomial\"<\/code>) et en configurant la fonction de synth\u00e8se pour mesurer la sensibilit\u00e9, la sp\u00e9cificit\u00e9 et l&rsquo;aire sous la courbe (<em>AUC<\/em>) :<\/p>\n<p><code>ctrl_logistique &lt;- trainControl(<\/code><br \/>\n<code>&nbsp;&nbsp;method = \"LOOCV\",<\/code><br \/>\n<code>&nbsp;&nbsp;summaryFunction = twoClassSummary,<\/code><br \/>\n<code>&nbsp;&nbsp;classProbs = TRUE,<\/code><br \/>\n<code>&nbsp;&nbsp;savePredictions = \"all\"<\/code><br \/>\n<code>)<\/code><br \/>\n<code>fit_logistique_loocv &lt;- train(<\/code><br \/>\n<code>&nbsp;&nbsp;Remission ~ ChargeMentale + SoutienOrga,<\/code><br \/>\n<code>&nbsp;&nbsp;data = df_burnout,<\/code><br \/>\n<code>&nbsp;&nbsp;method = \"glm\",<\/code><br \/>\n<code>&nbsp;&nbsp;family = \"binomial\",<\/code><br \/>\n<code>&nbsp;&nbsp;metric = \"ROC\",<\/code><br \/>\n<code>&nbsp;&nbsp;trControl = ctrl_logistique<\/code><br \/>\n<code>)<\/code><br \/>\n<code>print(fit_logistique_loocv)<\/code><\/p>\n<p>Pour inspecter la matrice de confusion globale agr\u00e9g\u00e9e \u00e0 partir des pr\u00e9dictions unitaires ind\u00e9pendantes, nous invoquons la fonction <code>confusionMatrix()<\/code> :<\/p>\n<p><code>preds_class &lt;- fit_logistique_loocv$pred<\/code><br \/>\n<code>matrice_confusion &lt;- confusionMatrix(data = preds_class<span class=\"arabpsy-math-inline\" data-latex=\"pred, reference = preds_class\">$pred, reference = preds_class$<\/span>obs, positive = \"Oui\")<\/code><br \/>\n<code>print(matrice_confusion)<\/code><\/p>\n<p>Cette matrice out-of-fold synth\u00e9tise la v\u00e9ritable pr\u00e9cision clinique du mod\u00e8le sans le biais optimiste qui entache classiquement les r\u00e9gressions logistiques ajust\u00e9es sur de petits effectifs d&rsquo;observation.<\/p>\n<h3>10.3 Calcul de l&rsquo;AUC-ROC out-of-fold sous LOOCV<\/h3>\n<p>L&rsquo;\u00e9valuation de la performance discriminante globale d&rsquo;un mod\u00e8le binaire s&rsquo;appuie pr\u00e9f\u00e9rentiellement sur la courbe <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Receiver_operating_characteristic\">ROC (Receiver Operating Characteristic)<\/a> et l&rsquo;int\u00e9grale de sa surface (AUC). Dans le cadre d&rsquo;une LOOCV, chaque participant <em>i<\/em> dispose d&rsquo;une probabilit\u00e9 d&rsquo;appartenance \u00e0 la classe positive pr\u00e9dite sans qu&rsquo;il ait particip\u00e9 \u00e0 l&rsquo;entra\u00eenement du mod\u00e8le.<\/p>\n<p>Nous pouvons mobiliser le package sp\u00e9cialis\u00e9 <code>pROC<\/code> pour construire la trajectoire de discrimination empirique et d\u00e9terminer l&rsquo;intervalle de confiance asymptotique de l&rsquo;AUC :<\/p>\n<p><code>library(pROC)<\/code><br \/>\n<code>courbe_roc_loocv &lt;- roc(response = preds_class<span class=\"arabpsy-math-inline\" data-latex=\"obs, predictor = preds_class\">$obs, predictor = preds_class$<\/span>Oui, levels = c(\"Non\", \"Oui\"))<\/code><br \/>\n<code>auc_val &lt;- auc(courbe_roc_loocv)<\/code><br \/>\n<code>print(paste(\"AUC ROC calcul\u00e9e en LOOCV :\", round(auc_val, 4)))<\/code><br \/>\n<code>ci_auc &lt;- ci.auc(courbe_roc_loocv)<\/code><br \/>\n<code>print(ci_auc)<\/code><br \/>\n<code>plot(courbe_roc_loocv, col = \"#2ca02c\", lwd = 2.5, main = \"Courbe ROC Out-Of-Fold (LOOCV)\")<\/code><br \/>\n<code>abline(a = 0, b = 1, linetype = \"dotted\", col = \"grey50\")<\/code><\/p>\n<p>Une pr\u00e9caution m\u00e9thodologique s&rsquo;impose quant \u00e0 l&rsquo;interpr\u00e9tation th\u00e9orique de cette courbe : l&rsquo;AUC obtenue par concat\u00e9nation de pr\u00e9dictions LOOCV individuelles n&rsquo;est pas strictement identique \u00e0 la moyenne d&rsquo;AUC calcul\u00e9es sur chaque pli (cette derni\u00e8re n&rsquo;ayant aucun sens math\u00e9matique pour un singleton de test <em>n = 1<\/em>). L&rsquo;AUC out-of-fold agr\u00e9g\u00e9e offre n\u00e9anmoins une excellente approximation empirique de la capacit\u00e9 discriminante globale du syst\u00e8me de d\u00e9cision.<\/p>\n<h2>11. Diagnostic des erreurs de pr\u00e9diction et m\u00e9triques d&rsquo;\u00e9valuation<\/h2>\n<h3>11.1 Formalisation et interpr\u00e9tation des indicateurs d&rsquo;erreur<\/h3>\n<p>Le choix des indicateurs scalaires d&rsquo;erreur ne rel\u00e8ve pas d&rsquo;une simple pr\u00e9f\u00e9rence cosm\u00e9tique, mais engage des propri\u00e9t\u00e9s math\u00e9matiques distinctes quant \u00e0 la sensibilit\u00e9 aux \u00e9carts :<\/p>\n<ul>\n<li><strong>Mean Squared Error (MSE) :<\/strong> D\u00e9finie par <em>(1\/n) * somme((y_i &#8211; y_hat_i)^2)<\/em>. En \u00e9levant les r\u00e9sidus au carr\u00e9, la MSE sanctionne de mani\u00e8re exponentielle les erreurs massives. Elle est math\u00e9matiquement tractable et constitue la fonction de co\u00fbt naturelle de la th\u00e9orie de l&rsquo;estimation gaussienne, mais s&rsquo;av\u00e8re particuli\u00e8rement vuln\u00e9rable aux valeurs aberrantes ponctuelles.<\/li>\n<li><strong>Root Mean Squared Error (RMSE) :<\/strong> D\u00e9finie par <em>sqrt(MSE)<\/em>. Son avantage r\u00e9side dans son interpr\u00e9tabilit\u00e9 clinique directe : elle s&rsquo;exprime dans la m\u00eame dimension physique ou psychom\u00e9trique que la variable d&rsquo;int\u00e9r\u00eat <em>Y<\/em>. Une RMSE de 6,2 sur l&rsquo;\u00e9chelle de burnout signifie que l&rsquo;\u00e9cart pr\u00e9dictif moyen s&rsquo;\u00e9tablit autour de 6,2 points de score.<\/li>\n<li><strong>Mean Absolute Error (MAE) :<\/strong> D\u00e9finie par <em>(1\/n) * somme(|y_i &#8211; y_hat_i|)<\/em>. La MAE applique une p\u00e9nalit\u00e9 strictement lin\u00e9aire aux d\u00e9viations. Elle offre une robustesse bien sup\u00e9rieure en pr\u00e9sence de distributions r\u00e9siduelles \u00e0 queues \u00e9paisses ou de contaminants aberrants, mesurant la m\u00e9diane conditionnelle de la d\u00e9viation absolue.<\/li>\n<\/ul>\n<p>Dans les protocoles exp\u00e9rimentaux sous R, il est recommand\u00e9 de rapporter conjointement la RMSE et la MAE. Un \u00e9cart substantiel entre ces deux m\u00e9triques (RMSE nettement sup\u00e9rieure \u00e0 la MAE) r\u00e9v\u00e8le syst\u00e9matiquement l&rsquo;existence de quelques erreurs de pr\u00e9diction majeures qui tirent la moyenne quadratique vers le haut.<\/p>\n<h3>11.2 Identification des observations aberrantes et points de levier<\/h3>\n<p>L&rsquo;un des sous-produits les plus puissants de la LOOCV r\u00e9side dans sa capacit\u00e9 diagnostique pour d\u00e9tecter les observations atypiques qui faussent la mod\u00e9lisation globale. Lorsqu&rsquo;un individu statistique exerce un levier excessif (<em>high leverage point<\/em>), son inclusion dans l&rsquo;\u00e9chantillon d&rsquo;apprentissage tire artificiellement la surface de r\u00e9gression vers lui, rendant son r\u00e9sidu intra-\u00e9chantillon <em>e_i<\/em> trompeusement modeste.<\/p>\n<p>En revanche, dans la proc\u00e9dure LOOCV, cet individu est totalement soustrait du calcul des coefficients. Le mod\u00e8le <em>f_(-i)<\/em> retrouve alors sa position non biais\u00e9e, et la pr\u00e9diction out-of-sample sur l&rsquo;observation omise accuse un r\u00e9sidu d&rsquo;omission <em>e_i \/ (1 &#8211; h_ii)<\/em> massif. Nous pouvons exploiter cette propri\u00e9t\u00e9 pour identifier visuellement les ruptures structurelles :<\/p>\n<p><code>residus_loocv_norm &lt;- residus_press \/ sd(residus_press)<\/code><br \/>\n<code>distance_cook &lt;- cooks.distance(modele_global)<\/code><br \/>\n<code>df_diagnostic &lt;- data.frame(Index = 1:n_burnout, Residu_LOOCV = residus_press, Residu_Norm = residus_loocv_norm, Cook = distance_cook, Levier = leviers)<\/code><br \/>\n<code>ggplot(df_diagnostic, aes(x = Levier, y = Residu_Norm)) +<\/code><br \/>\n<code>&nbsp;&nbsp;geom_point(aes(size = Cook, color = Cook), alpha = 0.8) +<\/code><br \/>\n<code>&nbsp;&nbsp;scale_color_gradient(low = \"steelblue\", high = \"firebrick\") +<\/code><br \/>\n<code>&nbsp;&nbsp;geom_hline(yintercept = c(-2, 2), linetype = \"dashed\", color = \"darkred\") +<\/code><br \/>\n<code>&nbsp;&nbsp;geom_vline(xintercept = 2 * mean(leviers), linetype = \"dotted\", color = \"black\") +<\/code><br \/>\n<code>&nbsp;&nbsp;labs(title = \"Diagnostic d'influence : R\u00e9sidus LOOCV vs Leviers\", x = \"Effet de levier (Hat values)\", y = \"R\u00e9sidus LOOCV standardis\u00e9s\") +<\/code><br \/>\n<code>&nbsp;&nbsp;theme_minimal()<\/code><\/p>\n<p>Les observations situ\u00e9es au-del\u00e0 des lignes critiques (r\u00e9sidu standardis\u00e9 sup\u00e9rieur \u00e0 2 en valeur absolue et levier sup\u00e9rieur \u00e0 deux fois le levier moyen <em>2*(p+1)\/n<\/em>) constituent des points d&rsquo;influence majeurs m\u00e9ritant une investigation clinique approfondie.<\/p>\n<h3>11.3 Tests de significativit\u00e9 des \u00e9carts de performance entre mod\u00e8les<\/h3>\n<p>Lors de la comparaison de deux mod\u00e8les concurrents (par exemple nos Mod\u00e8les 1 et 2 \u00e9valu\u00e9s \u00e0 la section 9.3), l&rsquo;observation d&rsquo;un \u00e9cart de RMSE brute out-of-sample ne suffit pas \u00e0 attester de la sup\u00e9riorit\u00e9 statistique formelle de l&rsquo;un sur l&rsquo;autre. Une question l\u00e9gitime \u00e9merge : cette diff\u00e9rence d&rsquo;erreur quadratique est-elle statistiquement significative ou imputable aux fluctuations d&rsquo;\u00e9chantillonnage ?<\/p>\n<p>Chaque observation <em>i<\/em> disposant d&rsquo;un r\u00e9sidu d&rsquo;omission pour le Mod\u00e8le 1 (<em>e_i,1<\/em>) et pour le Mod\u00e8le 2 (<em>e_i,2<\/em>), nous pouvons calculer le vecteur des diff\u00e9rences d&rsquo;erreurs quadratiques <em>d_i = (e_i,1)^2 &#8211; (e_i,2)^2<\/em>. L&rsquo;\u00e9valuation de l&rsquo;hypoth\u00e8se nulle <em>H0 : E(d_i) = 0<\/em> peut \u00eatre abord\u00e9e au moyen d&rsquo;un test <em>t<\/em> de Student appari\u00e9 ou d&rsquo;un test non param\u00e9trique des rangs sign\u00e9s de Wilcoxon si la distribution des deltas s&rsquo;\u00e9carte de la normalit\u00e9 :<\/p>\n<p><code>res_m1 &lt;- fit_burnout_m1<span class=\"arabpsy-math-inline\" data-latex=\"pred\">$pred$<\/span>obs - fit_burnout_m1<span class=\"arabpsy-math-inline\" data-latex=\"pred\">$pred$<\/span>pred<\/code><br \/>\n<code>res_m2 &lt;- fit_burnout_m2<span class=\"arabpsy-math-inline\" data-latex=\"pred\">$pred$<\/span>obs - fit_burnout_m2<span class=\"arabpsy-math-inline\" data-latex=\"pred\">$pred$<\/span>pred<\/code><br \/>\n<code>pertes_diff &lt;- (res_m1^2) - (res_m2^2)<\/code><br \/>\n<code>test_student &lt;- t.test(pertes_diff)<\/code><br \/>\n<code>test_wilcoxon &lt;- wilcox.test(pertes_diff)<\/code><br \/>\n<code>print(test_student)<\/code><br \/>\n<code>print(test_wilcoxon)<\/code><\/p>\n<p>Toutefois, une r\u00e9serve th\u00e9orique formul\u00e9e par Claude Nadeau et Yoshua Bengio doit \u00eatre scrupuleusement gard\u00e9e \u00e0 l&rsquo;esprit : les r\u00e9sidus d&rsquo;omission issus de la validation crois\u00e9e violent l&rsquo;hypoth\u00e8se d&rsquo;ind\u00e9pendance stricte en raison du recouvrement massif des jeux d&rsquo;entra\u00eenement. Le test <em>t<\/em> standard tend \u00e0 sous-estimer la variance r\u00e9elle de la diff\u00e9rence moyenne, conduisant \u00e0 un taux d&rsquo;erreur de type I l\u00e9g\u00e8rement gonfl\u00e9. Ces tests comparatifs doivent donc \u00eatre interpr\u00e9t\u00e9s comme des indicateurs diagnostiques et non comme des preuves inf\u00e9rentielles irr\u00e9futables.<\/p>\n<h2>12. Bonnes pratiques m\u00e9thodologiques, pi\u00e8ges courants et recommandations<\/h2>\n<h3>12.1 La fuite de donn\u00e9es (Data Leakage) lors du pr\u00e9traitement<\/h3>\n<p>Le pi\u00e8ge m\u00e9thodologique le plus insidieux et d\u00e9vastateur en apprentissage statistique appliqu\u00e9 r\u00e9side dans la fuite d&rsquo;information (<em>data leakage<\/em>). Il survient d\u00e8s lors qu&rsquo;une op\u00e9ration de transformation des donn\u00e9es appliqu\u00e9e en amont utilise l&rsquo;information de l&rsquo;ensemble de donn\u00e9es complet, contaminant ainsi de mani\u00e8re subreptice le sous-ensemble de test.<\/p>\n<p>Consid\u00e9rons les trois manifestations les plus courantes de cette erreur fondamentale :<\/p>\n<ul>\n<li><strong>Standardisation globale :<\/strong> Centrer et r\u00e9duire la matrice compl\u00e8te <em>X<\/em> avant d&rsquo;initier la boucle de validation crois\u00e9e. La moyenne et la variance utilis\u00e9es incorporent l&rsquo;observation omise, r\u00e9duisant artificiellement son erreur r\u00e9siduelle.<\/li>\n<li><strong>S\u00e9lection de variables pr\u00e9alable (Screening bias) :<\/strong> Calculer la corr\u00e9lation bivari\u00e9e entre chaque candidat pr\u00e9dicteur et la cible <em>Y<\/em> sur les 50 participants, retenir les 5 variables les plus fortement corr\u00e9l\u00e9es, puis soumettre ce sous-ensemble restreint \u00e0 une LOOCV. Cette d\u00e9marche invalide compl\u00e8tement l&rsquo;\u00e9valuation empirique : la s\u00e9lection initiale a d\u00e9j\u00e0 \u00ab vu \u00bb la cible de l&rsquo;observation omise, produisant des scores de performance spectaculaires sur des bruits purement al\u00e9atoires.<\/li>\n<li><strong>Imputation non encapsul\u00e9e des valeurs manquantes :<\/strong> Utiliser la m\u00e9diane de la colonne compl\u00e8te pour remplacer les donn\u00e9es absentes avant le r\u00e9\u00e9chantillonnage.<\/li>\n<\/ul>\n<p>La r\u00e8gle d&rsquo;or est absolue : <em>toute op\u00e9ration algorithmique d\u00e9pendant de la distribution des donn\u00e9es (filtrage, s\u00e9lection, mise \u00e0 l&rsquo;\u00e9chelle, imputation) doit \u00eatre strictement encapsul\u00e9e \u00e0 l&rsquo;int\u00e9rieur de chaque pli de r\u00e9entra\u00eenement<\/em>. L&rsquo;utilisation d&rsquo;environnements formels tels que <code>caret::train(..., preProcess = ...)<\/code> ou le framework moderne <code>tidymodels<\/code> garantit structurellement cette \u00e9tanch\u00e9it\u00e9 m\u00e9thodologique.<\/p>\n<h3>12.2 Strat\u00e9gies d&rsquo;arbitrage pour grands volumes de donn\u00e9es<\/h3>\n<p>Bien que la LOOCV soit math\u00e9matiquement attrayante, son d\u00e9ploiement sur de vastes bases de donn\u00e9es (<em>Big Data<\/em>) se heurte \u00e0 des contraintes physiques incontournables. Lorsque la taille de l&rsquo;\u00e9chantillon d\u00e9passe plusieurs milliers d&rsquo;observations (par exemple <em>n = 100 000<\/em>), l&rsquo;ajustement s\u00e9quentiel de 100 000 mod\u00e8les non lin\u00e9aires (tels que des mod\u00e8les de gradient boosting de type XGBoost) devient computationnellement irr\u00e9aliste, exigeant des semaines de calcul processeur pour un gain th\u00e9orique n\u00e9gligeable.<\/p>\n<p>Il convient d&rsquo;adopter des r\u00e8gles de bascule rationnelles :<\/p>\n<ul>\n<li>Pour <strong>n &lt; 100 :<\/strong> La LOOCV est fortement recommand\u00e9e, en particulier pour les mod\u00e8les param\u00e9triques lin\u00e9aires ou mod\u00e9r\u00e9ment non lin\u00e9aires, car le sacrifice de donn\u00e9es induit par un d\u00e9coupage en blocs compromettrait la stabilit\u00e9 des estimateurs.<\/li>\n<li>Pour <strong>100 &lt;= n &lt;= 10 000 :<\/strong> La validation crois\u00e9e 10-fold r\u00e9p\u00e9t\u00e9e (par exemple 10-fold r\u00e9p\u00e9t\u00e9e 5 fois avec diff\u00e9rentes graines) constitue le standard d&rsquo;excellence, offrant un \u00e9quilibre id\u00e9al entre variance contr\u00f4l\u00e9e, biais minime et temps de calcul ma\u00eetris\u00e9.<\/li>\n<li>Pour <strong>n &gt; 10 000 :<\/strong> Une validation par partition simple (Hold-out train\/validation\/test) ou un 5-fold cross-validation unique est amplement suffisant, la loi forte des grands nombres assurant la convergence asymptotique de l&rsquo;estimation de l&rsquo;erreur sur des sous-ensembles massifs.<\/li>\n<\/ul>\n<p>Dans le cas sp\u00e9cifique de la r\u00e9gression lin\u00e9aire ordinaire ou r\u00e9gularis\u00e9e Ridge, la formule matricielle PRESS d&rsquo;Allen contourne la barri\u00e8re computationnelle, permettant d&rsquo;ex\u00e9cuter une LOOCV instantan\u00e9e m\u00eame sur de tr\u00e8s grands effectifs sans r\u00e9ajustement s\u00e9quentiel.<\/p>\n<h3>12.3 Protocole de rapportage scientifique des r\u00e9sultats LOOCV<\/h3>\n<p>La publication de r\u00e9sultats scientifiques reposant sur des \u00e9valuations par validation crois\u00e9e requiert un haut niveau de transparence m\u00e9thodologique pour satisfaire aux crit\u00e8res d&rsquo;\u00e9valuation des comit\u00e9s de lecture internationaux (exigences STROBE, TRIPOD ou standards APA). Il ne suffit pas d&rsquo;affirmer qu&rsquo;une \u00ab validation crois\u00e9e a \u00e9t\u00e9 r\u00e9alis\u00e9e \u00bb.<\/p>\n<p>Le protocole de rapportage doit expliciter formellement les \u00e9l\u00e9ments suivants :<\/p>\n<ul>\n<li>La justification explicite du choix de la LOOCV au regard de la taille <em>n<\/em> de la cohorte et de la nature de la distribution des pr\u00e9dicteurs.<\/li>\n<li>La d\u00e9claration certifiant que tous les pr\u00e9traitements (normalisation, codage disjonctif, imputation, r\u00e9duction dimensionnelle) ont \u00e9t\u00e9 r\u00e9estim\u00e9s exclusivement sur les sous-ensembles <em>n &#8211; 1<\/em> sans contamination hors pli.<\/li>\n<li>La restitution conjointe des m\u00e9triques de pr\u00e9cision brute (RMSE, MAE) et des m\u00e9triques de variance expliqu\u00e9e out-of-sample (<em>R\u00b2 LOOCV<\/em>), accompagn\u00e9es de leurs intervalles de dispersion diagnostiques.<\/li>\n<li>Pour les mod\u00e8les de classification, la publication de la matrice de confusion out-of-fold compl\u00e8te ainsi que l&rsquo;AUC avec son intervalle de confiance \u00e0 95 %.<\/li>\n<li>La mise \u00e0 disposition publique ou en mat\u00e9riel suppl\u00e9mentaire du script R document\u00e9, garantissant l&rsquo;auditabilit\u00e9 et la r\u00e9plication exacte des protocoles computationnels.<\/li>\n<\/ul>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<p>Allen, D. M. (1974). The relationship between variable selection and data augmentation and a method for prediction. <em>Technometrics<\/em>, 16(1), 125\u2013127. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/00401706.1974.10489157\">https:\/\/doi.org\/10.1080\/00401706.1974.10489157<\/a><\/p>\n<p>Bengio, Y., &amp; Grandvalet, Y. (2004). No unbiased estimator of the variance of K-fold cross-validation. <em>Journal of Machine Learning Research<\/em>, 5, 1089\u20131105. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.jmlr.org\/papers\/v5\/grandvalet04a.html\">https:\/\/www.jmlr.org\/papers\/v5\/grandvalet04a.html<\/a><\/p>\n<p>Canty, A., &amp; Ripley, B. D. (2021). <em>boot: Bootstrap R (S-Plus) Functions<\/em> (R package version 1.3-28). CRAN. <a rel=\"noopener noreferrer\" href=\"https:\/\/CRAN.R-project.org\/package=boot\">https:\/\/CRAN.R-project.org\/package=boot<\/a><\/p>\n<p>Davison, A. C., &amp; Hinkley, D. V. (1997). <em>Bootstrap Methods and their Application<\/em>. Cambridge University Press. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1017\/CBO9780511802843\">https:\/\/doi.org\/10.1017\/CBO9780511802843<\/a><\/p>\n<p>Efron, B. (1983). Estimating the error rate of a prediction rule: Improvement on cross-validation. <em>Journal of the American Statistical Association<\/em>, 78(382), 316\u2013331. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/01621459.1983.10477973\">https:\/\/doi.org\/10.1080\/01621459.1983.10477973<\/a><\/p>\n<p>Geisser, S. (1975). The predictive sample reuse method with applications. <em>Journal of the American Statistical Association<\/em>, 70(350), 320\u2013328. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/01621459.1975.10479865\">https:\/\/doi.org\/10.1080\/01621459.1975.10479865<\/a><\/p>\n<p>Hastie, T., Tibshirani, R., &amp; Friedman, J. (2009). <em>The Elements of Statistical Learning: Data Mining, Inference, and Prediction<\/em> (2nd ed.). Springer. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/978-0-387-84858-7\">https:\/\/doi.org\/10.1007\/978-0-387-84858-7<\/a><\/p>\n<p>James, G., Witten, D., Hastie, T., &amp; Tibshirani, R. (2021). <em>An Introduction to Statistical Learning: with Applications in R<\/em> (2nd ed.). Springer. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/978-1-0716-1418-1\">https:\/\/doi.org\/10.1007\/978-1-0716-1418-1<\/a><\/p>\n<p>Kuhn, M. (2008). Building predictive models in R using the caret package. <em>Journal of Statistical Software<\/em>, 28(5), 1\u201326. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.18637\/jss.v028.i05\">https:\/\/doi.org\/10.18637\/jss.v028.i05<\/a><\/p>\n<p>Nadeau, C., &amp; Bengio, Y. (2003). Inference for the generalization error. <em>Machine Learning<\/em>, 52(3), 239\u2013281. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1023\/A:1024068612657\">https:\/\/doi.org\/10.1023\/A:1024068612657<\/a><\/p>\n<p>R Core Team. (2024). <em>R: A Language and Environment for Statistical Computing<\/em>. R Foundation for Statistical Computing, Vienna, Austria. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.R-project.org\/\">https:\/\/www.R-project.org\/<\/a><\/p>\n<p>Robin, X., Turck, N., Hainard, A., Tiberti, N., Lisacek, F., Sanchez, J.-C., &amp; M\u00fcller, M. (2011). pROC: an open-source package for R and S+ to analyze and compare ROC curves. <em>BMC Bioinformatics<\/em>, 12(77), 1\u20138. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1186\/1471-2105-12-77\">https:\/\/doi.org\/10.1186\/1471-2105-12-77<\/a><\/p>\n<p>Stone, M. (1974). Cross-validatory choice and assessment of statistical predictions. <em>Journal of the Royal Statistical Society: Series B (Methodological)<\/em>, 36(2), 111\u2013133. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1111\/j.2517-6161.1974.tb00994.x\">https:\/\/doi.org\/10.1111\/j.2517-6161.1974.tb00994.x<\/a><\/p>\n<p>Tibshirani, R. (1996). Regression shrinkage and selection via the Lasso. <em>Journal of the Royal Statistical Society: Series B (Methodological)<\/em>, 58(1), 267\u2013288. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1111\/j.2517-6161.1996.tb02080.x\">https:\/\/doi.org\/10.1111\/j.2517-6161.1996.tb02080.x<\/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., \u2026 Yutani, H. (2019). Welcome to the Tidyverse. <em>Journal of Open Source Software<\/em>, 4(43), 1686. <a 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>Guide complet sur la validation crois\u00e9e Leave-One-Out (LOOCV) sous R : th\u00e9orie math\u00e9matique, impl\u00e9mentations caret et boot, et applications concr\u00e8tes.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1829,2193],"tags":[6895,4319,2192,3808,2990],"class_list":["post-4927","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-statistique","category-programmation-r","tag-loocv","tag-machine-learning","tag-modelisation-predictive","tag-r-stats","tag-validation-croisee"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/4927","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=4927"}],"version-history":[{"count":0,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/4927\/revisions"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4927"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4927"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}