{"id":3655,"date":"2026-09-11T00:51:54","date_gmt":"2026-09-11T00:51:54","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-generer-un-echantillon-fonction-sample-dans-r\/"},"modified":"2026-09-11T00:51:54","modified_gmt":"2026-09-11T00:51:54","slug":"comment-generer-un-echantillon-fonction-sample-dans-r","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-generer-un-echantillon-fonction-sample-dans-r","title":{"rendered":"Comment g\u00e9n\u00e9rer un \u00e9chantillon en utilisant la fonction sample dans R"},"content":{"rendered":"<p>L&rsquo;inf\u00e9rence statistique contemporaine repose sur un postulat fondamental : l&rsquo;impossibilit\u00e9 pratique, \u00e9conomique et temporelle d&rsquo;observer de mani\u00e8re exhaustive l&rsquo;ensemble des \u00e9l\u00e9ments constituant une population cible. Qu&rsquo;il s&rsquo;agisse de mesurer des variables psychom\u00e9triques au sein d&rsquo;une population clinique, d&rsquo;\u00e9valuer l&rsquo;efficacit\u00e9 th\u00e9rapeutique d&rsquo;une mol\u00e9cule novatrice lors d&rsquo;essais randomis\u00e9s ou d&rsquo;estimer des param\u00e8tres \u00e9conom\u00e9triques \u00e0 grande \u00e9chelle, le chercheur doit imp\u00e9rativement extraire un sous-ensemble fini d&rsquo;observations. Ce processus de r\u00e9duction dimensionnelle, loin d&rsquo;\u00eatre une simple commodit\u00e9 logistique, engage la validit\u00e9 \u00e9pist\u00e9mologique globale des conclusions scientifiques. La repr\u00e9sentativit\u00e9 du sous-ensemble s\u00e9lectionn\u00e9 conditionne directement la l\u00e9gitimit\u00e9 de l&rsquo;extrapolation inductive, qui transpose les r\u00e9gularit\u00e9s observ\u00e9es localement vers les lois r\u00e9gissant le macrocosme th\u00e9orique.<\/p>\n<p>Dans l&rsquo;\u00e9cosyst\u00e8me computationnel du logiciel <a rel=\"noopener noreferrer\" href=\"https:\/\/www.r-project.org\/\">R<\/a>, la fonction fondamentale <strong>sample()<\/strong> constitue la cl\u00e9 de vo\u00fbte de cette d\u00e9marche stochastique. Con\u00e7ue initialement au sein du langage S et perp\u00e9tu\u00e9e dans le socle de base de R, cette fonction incarne la mat\u00e9rialisation algorithmique des concepts th\u00e9oriques de tirage al\u00e9atoire, de permutation combinatoire et de mod\u00e9lisation non param\u00e9trique. Malgr\u00e9 une apparente simplicit\u00e9 syntaxique condens\u00e9e en quatre arguments \u00e9l\u00e9mentaires, <strong>sample()<\/strong> dissimule une architecture algorithmique raffin\u00e9e capable d&rsquo;orchestrer des plans d&rsquo;\u00e9chantillonnage d&rsquo;une grande complexit\u00e9, depuis les sch\u00e9mas d&rsquo;\u00e9chantillonnage al\u00e9atoire simple sans remise jusqu&rsquo;aux simulations de Monte-Carlo et aux proc\u00e9dures de bootstrap non param\u00e9trique formalis\u00e9es par Bradley Efron.<\/p>\n<p>Ma\u00eetriser les rouages formels, les propri\u00e9t\u00e9s probabilistes et les comportements idiosyncrasiques de <strong>sample()<\/strong> constitue une comp\u00e9tence indispensable pour tout statisticien, biostatisticien, data scientist ou chercheur en sciences empiriques. Le pr\u00e9sent trait\u00e9 expose de mani\u00e8re exhaustive l&rsquo;ensemble des fondements th\u00e9oriques, des m\u00e9canismes computationnels, des pi\u00e8ges d&rsquo;impl\u00e9mentation et des strat\u00e9gies d&rsquo;optimisation haute performance li\u00e9s \u00e0 cette fonction primordiale, en articulant rigueur math\u00e9matique et contextualisation op\u00e9rationnelle au sein des flux de travail analytiques modernes.<\/p>\n<h2>1. Fondements th\u00e9oriques de l&rsquo;\u00e9chantillonnage et r\u00f4le de la fonction sample() dans l&rsquo;environnement R<\/h2>\n<h3>1.1 Importance \u00e9pist\u00e9mologique de l&rsquo;\u00e9chantillonnage al\u00e9atoire<\/h3>\n<p>L&rsquo;\u00e9chantillonnage al\u00e9atoire ne constitue pas un simple proc\u00e9d\u00e9 technique de collecte de donn\u00e9es ; il incarne une rupture \u00e9pist\u00e9mologique fondamentale introduite dans la pens\u00e9e scientifique par des th\u00e9oriciens comme Jerzy Neyman et Ronald Fisher. Dans le cadre de l&rsquo;inf\u00e9rence fr\u00e9quentiste, la repr\u00e9sentativit\u00e9 statistique ne signifie pas que l&rsquo;\u00e9chantillon extrait constitue une r\u00e9plique miniature parfaite et d\u00e9terministe de la population parente, mais plut\u00f4t que chaque unit\u00e9 de ladite population poss\u00e8de une probabilit\u00e9 d&rsquo;inclusion strictement d\u00e9finie, connue <em>a priori<\/em> et non nulle. Cette condition d&rsquo;\u00e9quiprobabilit\u00e9 ou d&rsquo;assignation probabiliste ma\u00eetris\u00e9e neutralise syst\u00e9matiquement les biais de s\u00e9lection syst\u00e9matiques, qu&rsquo;ils soient conscients ou inconscients, inh\u00e9rents aux choix arbitraires de l&rsquo;exp\u00e9rimentateur.<\/p>\n<p>Dans les protocoles quantitatifs, l&rsquo;absence de randomisation rigoureuse d\u00e9truit la validit\u00e9 interne et externe des dispositifs de recherche. Sans un tirage stochastique authentique, le calcul de l&rsquo;erreur type, des intervalles de confiance et des degr\u00e9s de significativit\u00e9 statistique (les valeurs <em>p<\/em>) perd toute justification th\u00e9orique, car ces m\u00e9triques reposent intrins\u00e8quement sur la distribution d&rsquo;\u00e9chantillonnage th\u00e9orique induite par le processus al\u00e9atoire. La fonction d&rsquo;\u00e9chantillonnage agit comme un filtre d&rsquo;objectivit\u00e9 math\u00e9matique, permettant le passage contr\u00f4l\u00e9 du continuum inaccessible de la population cible vers l&rsquo;espace restreint et manipulable de l&rsquo;\u00e9chantillon empirique, garantissant ainsi l&rsquo;applicabilit\u00e9 du th\u00e9or\u00e8me central limite et de la loi des grands nombres.<\/p>\n<h3>1.2 Pr\u00e9sentation g\u00e9n\u00e9rale de la fonction sample()<\/h3>\n<p>Int\u00e9gr\u00e9e nativement dans le paquetage fondamental <em>base<\/em> de l&rsquo;environnement R, la fonction <strong>sample()<\/strong> repr\u00e9sente l&rsquo;un des outils les plus sollicit\u00e9s et les plus stables du langage. Historiquement d\u00e9riv\u00e9e des sp\u00e9cifications du langage S d\u00e9velopp\u00e9es aux Laboratoires Bell par John Chambers et ses collaborateurs, son impl\u00e9mentation a \u00e9t\u00e9 con\u00e7ue pour s&rsquo;interfacer de mani\u00e8re fluide avec le syst\u00e8me de vecteurs atomiques qui caract\u00e9rise la s\u00e9mantique de R. Son r\u00f4le d\u00e9passe largement la simple s\u00e9lection passive d&rsquo;\u00e9l\u00e9ments : elle intervient de mani\u00e8re critique dans les architectures de calcul intensif, notamment au sein des cha\u00eenes de Markov \u00e0 sauts discrets, des algorithmes de recuit simul\u00e9 et des simulations de <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Monte_Carlo_method\">Monte-Carlo<\/a>.<\/p>\n<p>D&rsquo;un point de vue conceptuel, <strong>sample()<\/strong> op\u00e8re une distinction fonctionnelle tripartite selon la nature des contraintes appliqu\u00e9es \u00e0 son ex\u00e9cution. Elle r\u00e9alise tour \u00e0 tour une <em>permutation al\u00e9atoire<\/em> lorsqu&rsquo;elle r\u00e9ordonne l&rsquo;int\u00e9gralit\u00e9 d&rsquo;un ensemble de cardinal <em>N<\/em>, un <em>tirage non exhaustif<\/em> (sans remise) lorsqu&rsquo;elle extrait un sous-ensemble strict d&rsquo;\u00e9l\u00e9ments distincts, ou une <em>simulation stochastique<\/em> (avec remise) lorsqu&rsquo;elle mod\u00e9lise des processus \u00e0 \u00e9preuves r\u00e9p\u00e9t\u00e9es ind\u00e9pendantes. Cette triple comp\u00e9tence conf\u00e8re \u00e0 une unique routine g\u00e9n\u00e9rique la capacit\u00e9 de r\u00e9pondre \u00e0 des probl\u00e9matiques math\u00e9matiques formellement divergentes, simplifiant le paysage syntaxique du langage tout en exigeant du praticien une vigilance accrue quant au param\u00e9trage s\u00e9lectionn\u00e9.<\/p>\n<h3>1.3 Cadre d&rsquo;application dans la recherche empirique<\/h3>\n<p>L&rsquo;exploitation de <strong>sample()<\/strong> structure de multiples domaines de la recherche contemporaine. En sciences comportementales, cognitives et en neurosciences, elle permet la mod\u00e9lisation stochastique des temps de r\u00e9action, la g\u00e9n\u00e9ration de s\u00e9quences d&rsquo;essais randomis\u00e9es et la neutralisation syst\u00e9matique des biais d&rsquo;habituation ou d&rsquo;apprentissage par l&rsquo;entremise de protocoles de contrebalancement. Dans le champ biom\u00e9dical et \u00e9pid\u00e9miologique, la fonction r\u00e9git l&rsquo;assignation al\u00e9atoire des patients au sein de bras exp\u00e9rimentaux en double aveugle, assurant l&rsquo;homog\u00e9n\u00e9it\u00e9 initiale des cohortes de contr\u00f4le et de traitement face aux variables de confusion non observ\u00e9es.<\/p>\n<p>Parall\u00e8lement, au sein des disciplines orient\u00e9es vers l&rsquo;apprentissage automatique (<em>machine learning<\/em>) et la science des donn\u00e9es, <strong>sample()<\/strong> assure la gouvernance du partitionnement initial des corpus de donn\u00e9es. Avant d&rsquo;entra\u00eener des mod\u00e8les pr\u00e9dictifs complexes, l&rsquo;analyste utilise cette primitive pour diviser le jeu de donn\u00e9es d&rsquo;origine en sous-ensembles ind\u00e9pendants d\u00e9di\u00e9s respectivement \u00e0 l&rsquo;apprentissage (<em>training set<\/em>), \u00e0 la validation et au test terminal. Ce d\u00e9coupage stochastique garantit que l&rsquo;\u00e9valuation des hyperparam\u00e8tres et la d\u00e9tection du surapprentissage (<em>overfitting<\/em>) reposent sur des observations non contamin\u00e9es par la phase d&rsquo;optimisation structurelle.<\/p>\n<h2>2. D\u00e9construction de la syntaxe et analyse formelle des param\u00e8tres de sample()<\/h2>\n<h3>2.1 L&rsquo;argument source x : d\u00e9finition de l&rsquo;espace d&rsquo;\u00e9chantillonnage<\/h3>\n<p>La signature standard de la fonction s&rsquo;\u00e9nonce sous la forme canonique <strong>sample(x, size, replace = FALSE, prob = NULL)<\/strong>. L&rsquo;argument fondamental <strong>x<\/strong> mat\u00e9rialise l&rsquo;univers des \u00e9v\u00e9nements possibles ou l&rsquo;espace d&rsquo;\u00e9chantillonnage de d\u00e9part. R \u00e9tant un langage intrins\u00e8quement vectoriel, <strong>x<\/strong> accepte nativement tous les vecteurs atomiques unidimensionnels : vecteurs num\u00e9riques (entiers ou r\u00e9els \u00e0 double pr\u00e9cision), vecteurs de cha\u00eenes de caract\u00e8res (<em>character<\/em>) et vecteurs logiques bool\u00e9ens (<em>logical<\/em>). L&rsquo;int\u00e9grit\u00e9 des attributs des \u00e9l\u00e9ments est pr\u00e9serv\u00e9e lors de l&rsquo;extraction, y compris pour les facteurs ordonn\u00e9s ou non ordonn\u00e9s, dont les m\u00e9tadonn\u00e9es de niveaux (<em>levels<\/em>) demeurent intactes au sein de la structure r\u00e9sultante.<\/p>\n<p>N\u00e9anmoins, la flexibilit\u00e9 de <strong>x<\/strong> rec\u00e8le une singularit\u00e9 comportementale majeure qu&rsquo;il convient de formaliser avec la plus grande rigueur math\u00e9matique. Lorsque l&rsquo;argument <strong>x<\/strong> est fourni sous la forme d&rsquo;un vecteur num\u00e9rique compos\u00e9 d&rsquo;un unique scalaire entier de valeur <em>n<\/em> (tel que la longueur du vecteur soit rigoureusement \u00e9gale \u00e0 1), le moteur sous-jacent de R modifie son interpr\u00e9tation fondamentale : au lieu d&rsquo;extraire cet \u00e9l\u00e9ment scalaire isol\u00e9, R g\u00e9n\u00e8re implicitement la s\u00e9quence arithm\u00e9tique <strong>1:n<\/strong> et effectue l&rsquo;\u00e9chantillonnage sur cet intervalle continu d&rsquo;entiers. Ce polymorphisme implicite constitue l&rsquo;une des sources les plus document\u00e9es de bogues cryptiques au sein de la communaut\u00e9 des d\u00e9veloppeurs R.<\/p>\n<h3>2.2 L&rsquo;argument size : dimensionnement de l&rsquo;\u00e9chantillon extrait<\/h3>\n<p>L&rsquo;argument <strong>size<\/strong> est une valeur enti\u00e8re positive ou nulle sp\u00e9cifiant la cardinalit\u00e9 exacte du vecteur r\u00e9sultant souhait\u00e9. Sur le plan th\u00e9orique, la fixation de <strong>size<\/strong> d\u00e9termine l&rsquo;\u00e9chelle de l&rsquo;espace d&rsquo;\u00e9chantillonnage effectif. Lorsque l&rsquo;\u00e9chantillonnage est r\u00e9alis\u00e9 sans remise, une relation d&rsquo;in\u00e9galit\u00e9 stricte s&rsquo;impose : la valeur de <strong>size<\/strong> ne peut en aucun cas exc\u00e9der la longueur intrins\u00e8que du vecteur source <strong>length(x)<\/strong>. Toute tentative d&rsquo;assigner une dimension sup\u00e9rieure sous cette modalit\u00e9 d\u00e9clenche imm\u00e9diatement une interruption de l&rsquo;interpr\u00e9teur, le syst\u00e8me refusant d&rsquo;extraire plus d&rsquo;observations distinctes que n&rsquo;en contient la population parente.<\/p>\n<p>\u00c0 l&rsquo;inverse, si le praticien omet explicitement de d\u00e9finir l&rsquo;argument <strong>size<\/strong> au sein de l&rsquo;appel de fonction, R adopte un comportement par d\u00e9faut hautement sp\u00e9cialis\u00e9 : il assigne automatiquement la valeur <strong>size = length(x)<\/strong>. Conjugu\u00e9e \u00e0 la modalit\u00e9 de tirage sans remise, cette omission standardis\u00e9e transforme l&rsquo;op\u00e9ration d&rsquo;\u00e9chantillonnage en une proc\u00e9dure de permutation compl\u00e8te de l&rsquo;ensemble source. Cette propri\u00e9t\u00e9 syntaxique est fr\u00e9quemment exploit\u00e9e pour r\u00e9organiser al\u00e9atoirement des structures de donn\u00e9es ou pour ex\u00e9cuter des tests de r\u00e9assignation non param\u00e9triques avec un minimum de verbosit\u00e9 textuelle.<\/p>\n<h3>2.3 L&rsquo;argument replace : logique bool\u00e9enne du tirage<\/h3>\n<p>Le troisi\u00e8me argument, <strong>replace<\/strong>, est un indicateur logique binaire qui contr\u00f4le directement la nature statistique du processus stochastique sous-jacent. Fix\u00e9 par d\u00e9faut \u00e0 <strong>replace = FALSE<\/strong>, il impose un sch\u00e9ma d&rsquo;\u00e9chantillonnage sans remise, \u00e9galement qualifi\u00e9 de tirage exhaustif dans la th\u00e9orie classique des sondages. Sous ce r\u00e9gime, une unit\u00e9 \u00e9l\u00e9mentaire extraite \u00e0 l&rsquo;\u00e9tape <em>k<\/em> est instantan\u00e9ment retir\u00e9e de l&rsquo;espace des possibles et ne peut, sous aucune condition math\u00e9matique, r\u00e9appara\u00eetre lors des \u00e9tapes ult\u00e9rieures <em>k + 1, &#8230;, size<\/em>.<\/p>\n<p>Lorsque le chercheur sp\u00e9cifie l&rsquo;instruction alternative <strong>replace = TRUE<\/strong>, l&rsquo;algorithme bascule vers un tirage avec remise, ou non exhaustif. Dans cette configuration, chaque unit\u00e9 s\u00e9lectionn\u00e9e est imm\u00e9diatement r\u00e9int\u00e9gr\u00e9e au sein de l&rsquo;espace des candidats \u00e9ligibles avant l&rsquo;it\u00e9ration suivante. Cette modalit\u00e9 garantit l&rsquo;ind\u00e9pendance stochastique stricte de chaque tirage individuel, rendant le r\u00e9sultat d&rsquo;une extraction totalement invariant par rapport aux s\u00e9lections qui l&rsquo;ont pr\u00e9c\u00e9d\u00e9e. Elle autorise en outre la fixation d&rsquo;un param\u00e8tre <strong>size<\/strong> arbitrairement grand, d\u00e9corr\u00e9l\u00e9 des contraintes impos\u00e9es par la dimension initiale de <strong>x<\/strong>.<\/p>\n<h3>2.4 L&rsquo;argument prob : modulation des pond\u00e9rations stochastiques<\/h3>\n<p>Par d\u00e9faut, la fonction <strong>sample()<\/strong> op\u00e8re sous l&rsquo;hypoth\u00e8se canonique de Laplace, stipulant une \u00e9quiprobabilit\u00e9 stricte de tous les \u00e9l\u00e9ments du vecteur d&rsquo;entr\u00e9e : chaque \u00e9l\u00e9ment dispose d&rsquo;une probabilit\u00e9 d&rsquo;occurrence \u00e9gale \u00e0 <strong>1 \/ length(x)<\/strong>. L&rsquo;argument <strong>prob<\/strong> permet de s&rsquo;\u00e9manciper de cette contrainte d&rsquo;uniformit\u00e9 en assignant un vecteur de poids probabilistes individualis\u00e9s, introduisant des probabilit\u00e9s d&rsquo;inclusion in\u00e9gales.<\/p>\n<p>Sur le plan structurel, le vecteur inject\u00e9 dans <strong>prob<\/strong> doit poss\u00e9der une longueur dimensionnelle rigoureusement \u00e9quivalente \u00e0 celle de <strong>x<\/strong>. Les valeurs qui le composent doivent \u00eatre strictement positives ou nulles, les valeurs n\u00e9gatives ou non d\u00e9finies \u00e9tant formellement proscrites par le v\u00e9rificateur syntaxique interne. Un raffinement notable du moteur computationnel de R r\u00e9side dans sa capacit\u00e9 de normalisation automatique : il n&rsquo;est aucunement imp\u00e9ratif que la somme empirique des \u00e9l\u00e9ments de <strong>prob<\/strong> soit \u00e9gale \u00e0 1. R ex\u00e9cute en t\u00e2che de fond une mise \u00e0 l&rsquo;\u00e9chelle proportionnelle en divisant chaque poids individuel par la somme totale du vecteur, facilitant l&rsquo;int\u00e9gration directe de rapports de cotes (<em>odds ratios<\/em>) ou d&rsquo;effectifs marginaux bruts.<\/p>\n<h2>3. \u00c9chantillonnage al\u00e9atoire simple sans remise (replace = FALSE)<\/h2>\n<h3>3.1 M\u00e9canique formelle du tirage sans remise<\/h3>\n<p>L&rsquo;\u00e9chantillonnage al\u00e9atoire simple sans remise, correspondant \u00e0 la configuration <strong>sample(x, size = k, replace = FALSE)<\/strong>, mod\u00e9lise le processus classique de s\u00e9lection s\u00e9quentielle au sein d&rsquo;une urne finie sans r\u00e9introduction des \u00e9l\u00e9ments tir\u00e9s. Math\u00e9matiquement, la probabilit\u00e9 conditionnelle d&rsquo;extraire un \u00e9l\u00e9ment donn\u00e9 varie \u00e0 chaque it\u00e9ration du processus. Si l&rsquo;ensemble initial contient <em>N<\/em> observations distinctes, la probabilit\u00e9 d&rsquo;extraction de la premi\u00e8re unit\u00e9 \u00e9quivaut \u00e0 <em>1 \/ N<\/em>. Pour la seconde unit\u00e9, conditionnellement \u00e0 l&rsquo;exclusion du premier \u00e9l\u00e9ment, la probabilit\u00e9 s&rsquo;\u00e9l\u00e8ve \u00e0 <em>1 \/ (N &#8211; 1)<\/em>, et atteint <em>1 \/ (N &#8211; k + 1)<\/em> au terme de la <em>k<\/em>-i\u00e8me s\u00e9lection.<\/p>\n<p>Ce m\u00e9canisme engendre une d\u00e9pendance probabiliste n\u00e9gative intrins\u00e8que entre les observations s\u00e9lectionn\u00e9es. Sur le plan de la th\u00e9orie des probabilit\u00e9s, ce mod\u00e8le s&rsquo;articule directement avec la loi hyperg\u00e9om\u00e9trique, laquelle formalise la distribution du nombre de succ\u00e8s obtenus lors d&rsquo;une s\u00e9rie de tirages d\u00e9pendants au sein d&rsquo;une population composite finie. L&rsquo;impossibilit\u00e9 structurelle de dupliquer une observation conf\u00e8re \u00e0 cette modalit\u00e9 une propri\u00e9t\u00e9 essentielle : l&rsquo;ensemble r\u00e9sultant conserve la nature exacte d&rsquo;un sous-ensemble strict au sens de la th\u00e9orie des ensembles, interdisant toute redondance au sein du r\u00e9sultat produit.<\/p>\n<h3>3.2 Impl\u00e9mentation pratique sur des vecteurs atomiques<\/h3>\n<p>L&rsquo;application op\u00e9rationnelle de ce sch\u00e9ma s&rsquo;illustre particuli\u00e8rement lors de la s\u00e9lection al\u00e9atoire d&rsquo;individus identifi\u00e9s par des cha\u00eenes textuelles ou des identifiants alphanum\u00e9riques continus. Consid\u00e9rons un vecteur <em>identifiants<\/em> comprenant 10 000 identifiants patients uniques au format alphanum\u00e9rique. L&rsquo;ex\u00e9cution de l&rsquo;instruction <strong>sample(identifiants, size = 500, replace = FALSE)<\/strong> g\u00e9n\u00e8re instantan\u00e9ment un sous-ensemble de 500 cha\u00eenes strictement distinctes. L&rsquo;analyse des m\u00e9triques de sortie console confirme l&rsquo;int\u00e9grit\u00e9 de la structure : l&rsquo;application de la fonction <strong>anyDuplicated()<\/strong> sur le vecteur retourn\u00e9 produit invariablement la valeur 0, confirmant l&rsquo;absence absolue de redondance.<\/p>\n<p>Sur les vecteurs num\u00e9riques continus, tels que des mesures d&rsquo;intervalles d&rsquo;\u00e9lectrocardiogrammes ou des indicateurs financiers volatils, cette proc\u00e9dure permet d&rsquo;extraire des sous-\u00e9chantillons exploratoires pr\u00e9servant l&rsquo;h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 sous-jacente sans biaiser l&rsquo;estimation des moments statistiques fondamentaux. L&rsquo;esp\u00e9rance math\u00e9matique de la moyenne empirique de l&rsquo;\u00e9chantillon extrait demeure un estimateur sans biais de l&rsquo;esp\u00e9rance de la population d&rsquo;origine, tandis que la variance empirique n\u00e9cessite l&rsquo;application d&rsquo;un facteur de correction pour population finie, commun\u00e9ment not\u00e9 <em>(N &#8211; n) \/ (N &#8211; 1)<\/em>, afin de compenser formellement l&rsquo;effet de troncation induit par l&rsquo;\u00e9puisement progressif de l&rsquo;urne.<\/p>\n<h3>3.3 Permutations al\u00e9atoires compl\u00e8tes<\/h3>\n<p>La permutation al\u00e9atoire compl\u00e8te constitue un cas limite particuli\u00e8rement f\u00e9cond du tirage sans remise, obtenu lorsque l&rsquo;argument <strong>size<\/strong> converge vers la cardinalit\u00e9 totale <strong>length(x)<\/strong>. En ex\u00e9cutant simplement <strong>sample(x)<\/strong>, le chercheur sollicite de l&rsquo;interpr\u00e9teur une r\u00e9organisation stochastique int\u00e9grale de l&rsquo;ordre s\u00e9quentiel des \u00e9l\u00e9ments du vecteur. L&rsquo;espace combinatoire r\u00e9sultant de cette op\u00e9ration englobe l&rsquo;ensemble des <em>n!<\/em> (factorielle <em>n<\/em>) bijections possibles de l&rsquo;ensemble sur lui-m\u00eame, chacune disposant d&rsquo;une probabilit\u00e9 d&rsquo;\u00e9mergence th\u00e9oriquement uniforme \u00e9gale \u00e0 <em>1 \/ n!<\/em>.<\/p>\n<p>Cette approche trouve son expression m\u00e9thodologique la plus aboutie dans les tests de permutation et d&rsquo;al\u00e9isation exacte th\u00e9oris\u00e9s par Ronald Fisher et Pitman. Dans une \u00e9tude comparant deux groupes cliniques (t\u00e9moin vs exp\u00e9rimental), l&rsquo;hypoth\u00e8se nulle stipule qu&rsquo;il n&rsquo;existe aucune divergence entre les distributions des deux populations sous-jacentes. En permutant al\u00e9atoirement les scores observ\u00e9s \u00e0 l&rsquo;aide de <strong>sample()<\/strong> tout en maintenant la taille nominale de chaque groupe, l&rsquo;analyste reconstruit de mani\u00e8re non param\u00e9trique la distribution empirique exacte de la statistique de test sous l&rsquo;hypoth\u00e8se nulle, s&rsquo;affranchissant totalement des pr\u00e9suppos\u00e9s de normalit\u00e9 ou d&rsquo;homoscedasticit\u00e9 exig\u00e9s par les tests param\u00e9triques usuels comme le test <em>t<\/em> de Student.<\/p>\n<h2>4. \u00c9chantillonnage al\u00e9atoire avec remise (replace = TRUE) et mod\u00e9lisation multinomiale<\/h2>\n<h3>4.1 Propri\u00e9t\u00e9s th\u00e9oriques du tirage avec r\u00e9p\u00e9tition<\/h3>\n<p>L&rsquo;introduction du param\u00e8tre <strong>replace = TRUE<\/strong> modifie en profondeur la physique statistique du processus d&rsquo;\u00e9chantillonnage. En autorisant la r\u00e9introduction imm\u00e9diate de chaque \u00e9l\u00e9ment s\u00e9lectionn\u00e9 au sein de l&rsquo;espace source, le syst\u00e8me supprime toute m\u00e9moire historique du processus stochastique : les tirages successifs deviennent rigoureusement ind\u00e9pendants et identiquement distribu\u00e9s (i.i.d.). La probabilit\u00e9 d&rsquo;extraire n&rsquo;importe quel \u00e9l\u00e9ment <em>i<\/em> \u00e0 l&rsquo;instant <em>t<\/em> demeure invariablement \u00e9gale \u00e0 <em>1 \/ N<\/em>, ind\u00e9pendamment du fait que cet \u00e9l\u00e9ment ait d\u00e9j\u00e0 \u00e9t\u00e9 s\u00e9lectionn\u00e9 lors des \u00e9tapes ant\u00e9rieures.<\/p>\n<p>Cette ind\u00e9pendance formelle d\u00e9verrouille les contraintes dimensionnelles impos\u00e9es par la finitude du vecteur source. Il devient ainsi parfaitement licite de d\u00e9finir une taille d&rsquo;\u00e9chantillonnage <strong>size<\/strong> substantiellement sup\u00e9rieure \u00e0 la dimension <strong>length(x)<\/strong>. Sur le plan des lois de probabilit\u00e9, ce protocole mod\u00e9lise le passage d&rsquo;une structure hyperg\u00e9om\u00e9trique vers des distributions de nature binomiale (dans le cadre d&rsquo;un univers dichotomique) ou multinomiale (pour les espaces d&rsquo;\u00e9chantillonnage cat\u00e9goriels polytomiques), offrant une passerelle directe vers l&rsquo;analyse asymptotique classique.<\/p>\n<h3>4.2 Simulation de processus stochastiques \u00e9l\u00e9mentaires<\/h3>\n<p>L&rsquo;\u00e9chantillonnage avec remise offre un cadre naturel pour la simulation de processus physiques et probabilistes \u00e9l\u00e9mentaires. La mod\u00e9lisation du lancer r\u00e9p\u00e9t\u00e9 d&rsquo;un d\u00e9 cubique r\u00e9gulier \u00e0 six faces s&rsquo;articule directement autour de l&rsquo;instruction <strong>sample(1:6, size = 10000, replace = TRUE)<\/strong>. De mani\u00e8re similaire, la simulation d&rsquo;une s\u00e9quence de 50 000 \u00e9preuves de Bernoulli sym\u00e9triques s&rsquo;ex\u00e9cute par <strong>sample(c(\u00ab\u00a0Pile\u00a0\u00bb, \u00ab\u00a0Face\u00a0\u00bb), size = 50000, replace = TRUE)<\/strong>.<\/p>\n<p>La validit\u00e9 d&rsquo;une telle simulation se v\u00e9rifie empiriquement par l&rsquo;examen de la distribution des fr\u00e9quences observ\u00e9es via la fonction <strong>table()<\/strong>, confront\u00e9e aux esp\u00e9rances asymptotiques dict\u00e9es par la <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Law_of_large_numbers\">loi forte des grands nombres<\/a>. Lorsque la taille de l&rsquo;\u00e9chantillon tend vers l&rsquo;infini, le rapport entre la fr\u00e9quence observ\u00e9e de chaque modalit\u00e9 et la taille globale de l&rsquo;\u00e9chantillon converge presque s\u00fbrement vers la probabilit\u00e9 th\u00e9orique sous-jacente (soit <em>1\/6<\/em> ou <em>0.5<\/em> dans les exemples cit\u00e9s). Ces simulations fournissent un mat\u00e9riau p\u00e9dagogique et exp\u00e9rimental inestimable pour illustrer les th\u00e9or\u00e8mes limites fondamentaux au sein des environnements d&rsquo;enseignement universitaire.<\/p>\n<h3>4.3 Cas d&rsquo;usage : attribution al\u00e9atoire de conditions exp\u00e9rimentales<\/h3>\n<p>Au-del\u00e0 de la simulation de jeux de hasard, l&rsquo;\u00e9chantillonnage avec remise est utilis\u00e9 pour l&rsquo;assignation al\u00e9atoire de participants \u00e0 diff\u00e9rentes conditions exp\u00e9rimentales au sein de protocoles de recherche en psychologie ou en m\u00e9decine translationnelle. Dans un dispositif factoriel comportant trois modalit\u00e9s de traitement (<em>Placebo<\/em>, <em>Dose Faible<\/em>, <em>Dose Forte<\/em>), l&rsquo;exp\u00e9rimentateur peut assigner stochastiquement 150 participants entrants en ex\u00e9cutant <strong>sample(c(\u00ab\u00a0Placebo\u00a0\u00bb, \u00ab\u00a0Faible\u00a0\u00bb, \u00ab\u00a0Forte\u00a0\u00bb), size = 150, replace = TRUE)<\/strong>.<\/p>\n<p>N\u00e9anmoins, cette m\u00e9thodologie par tirage ind\u00e9pendant pr\u00e9sente un risque structurel qu&rsquo;il convient d&rsquo;anticiper : le d\u00e9s\u00e9quilibre d&rsquo;effectifs imputable \u00e0 la variance stochastique pure. Contrairement \u00e0 une randomisation par blocs pr\u00e9d\u00e9finis o\u00f9 chaque modalit\u00e9 re\u00e7oit exactement le m\u00eame quota d&rsquo;individus, le tirage avec remise peut engendrer, par simple fluctuation al\u00e9atoire, des distorsions num\u00e9riques sensibles (par exemple 42, 58 et 50 participants). Si ce d\u00e9s\u00e9quilibre n&rsquo;alt\u00e8re pas la validit\u00e9 asymptotique des estimateurs, il entra\u00eene une perte d&rsquo;efficacit\u00e9 statistique (puissance du test) dans les analyses de variance (ANOVA). C&rsquo;est pourquoi, dans les protocoles cliniques rigoureux, les chercheurs privil\u00e9gient souvent une assignation par blocs \u00e9quilibr\u00e9s combinant des tirages sans remise s\u00e9quentiels plut\u00f4t qu&rsquo;un tirage avec remise global.<\/p>\n<h2>5. Tirages non uniformes et assignation de probabilit\u00e9s diff\u00e9renci\u00e9es via prob<\/h2>\n<h3>5.1 D\u00e9finition et structure du vecteur de poids<\/h3>\n<p>Dans de nombreuses configurations exp\u00e9rimentales et observationnelles, l&rsquo;hypoth\u00e8se d&rsquo;\u00e9quiprobabilit\u00e9 ne refl\u00e8te pas la r\u00e9alit\u00e9 du ph\u00e9nom\u00e8ne \u00e9tudi\u00e9. L&rsquo;argument <strong>prob<\/strong> permet de moduler pr\u00e9cis\u00e9ment la structure stochastique de l&rsquo;\u00e9chantillonnage en associant un poids explicite \u00e0 chaque \u00e9l\u00e9ment constitutif de <strong>x<\/strong>. La syntaxe requiert l&rsquo;injection d&rsquo;un vecteur num\u00e9rique de dimension rigoureusement identique \u00e0 celle de l&rsquo;espace source. Par exemple, si <strong>x<\/strong> contient cinq \u00e9l\u00e9ments, <strong>prob<\/strong> doit imp\u00e9rativement comporter un vecteur de cinq scalaires num\u00e9riques positifs.<\/p>\n<p>L&rsquo;architecture interne de R offre une flexibilit\u00e9 calculatoire remarquable en n&rsquo;imposant pas que la somme des \u00e9l\u00e9ments du vecteur <strong>prob<\/strong> soit formellement \u00e9gale \u00e0 1. Si le praticien fournit le vecteur <strong>c(10, 20, 70)<\/strong>, le moteur C sous-jacent ex\u00e9cute automatiquement une transformation lin\u00e9aire normalisatrice, convertissant ces valeurs en probabilit\u00e9s relatives respectives de <em>0.10<\/em>, <em>0.20<\/em> et <em>0.70<\/em>. L&rsquo;attribution d&rsquo;une valeur nulle (<em>0<\/em>) \u00e0 un indice sp\u00e9cifique a pour effet math\u00e9matique d&rsquo;annuler rigoureusement la probabilit\u00e9 d&rsquo;inclusion de l&rsquo;\u00e9l\u00e9ment correspondant, fournissant un m\u00e9canisme \u00e9l\u00e9gant pour exclure transitoirement certaines sous-classes sans alt\u00e9rer la morphologie vectorielle du conteneur d&rsquo;origine.<\/p>\n<h3>5.2 Simulation de distributions empiriques asym\u00e9triques<\/h3>\n<p>L&rsquo;utilisation concert\u00e9e de l&rsquo;\u00e9chantillonnage avec remise et de pond\u00e9rations asym\u00e9triques permet de reproduire artificiellement des profils distributionnels complexes observ\u00e9s dans les cohortes cliniques. En psychopathologie quantitative, par exemple, la distribution des scores de d\u00e9pression ou d&rsquo;anxi\u00e9t\u00e9 mesur\u00e9s au sein de la population g\u00e9n\u00e9rale ne suit pas une loi gaussienne sym\u00e9trique, mais pr\u00e9sente une asym\u00e9trie positive prononc\u00e9e (<em>positive skewness<\/em>), la grande majorit\u00e9 des individus pr\u00e9sentant des scores tr\u00e8s bas, tandis qu&rsquo;une minorit\u00e9 r\u00e9siduelle concentre des scores cliniquement s\u00e9v\u00e8res.<\/p>\n<p>Il devient d\u00e8s lors ais\u00e9 de g\u00e9n\u00e9rer une cohorte synth\u00e9tique de 100 000 profils symptomatiques refl\u00e9tant fid\u00e8lement cette asym\u00e9trie \u00e9pid\u00e9miologique en d\u00e9finissant un vecteur de classes de s\u00e9v\u00e9rit\u00e9 <strong>classes &lt;- c(\u00ab\u00a0Asymptomatique\u00a0\u00bb, \u00ab\u00a0L\u00e9ger\u00a0\u00bb, \u00ab\u00a0Mod\u00e9r\u00e9\u00a0\u00bb, \u00ab\u00a0S\u00e9v\u00e8re\u00a0\u00bb)<\/strong> coupl\u00e9 \u00e0 un vecteur probabiliste empiriquement \u00e9talonn\u00e9 <strong>poids &lt;- c(0.75, 0.15, 0.07, 0.03)<\/strong>. L&rsquo;instruction <strong>sample(classes, size = 100000, replace = TRUE, prob = poids)<\/strong> produit instantan\u00e9ment une distribution d&rsquo;\u00e9chantillonnage dont les proportions marginales observ\u00e9es s&rsquo;alignent avec les taux de pr\u00e9valence r\u00e9els, autorisant l&rsquo;ex\u00e9cution de simulations de puissance statistique r\u00e9alistes avant le d\u00e9ploiement d&rsquo;enqu\u00eates de terrain \u00e0 grande \u00e9chelle.<\/p>\n<h3>5.3 Sur-\u00e9chantillonnage et sous-\u00e9chantillonnage probabiliste<\/h3>\n<p>Dans les disciplines analytiques confront\u00e9es \u00e0 des ph\u00e9nom\u00e8nes d&rsquo;asym\u00e9trie de classes s\u00e9v\u00e8re (<em>class imbalance<\/em>), comme la d\u00e9tection de fraudes bancaires ou l&rsquo;identification de pathologies orphelines au sein de m\u00e9gadonn\u00e9es \u00e9lectroniques, les algorithmes de classification pr\u00e9dictive \u00e9chouent fr\u00e9quemment \u00e0 identifier la modalit\u00e9 minoritaire en raison de sa raret\u00e9 intrins\u00e8que. L&rsquo;ajustement du param\u00e8tre <strong>prob<\/strong> constitue l&rsquo;un des leviers les plus directs pour impl\u00e9menter des strat\u00e9gies de sur-\u00e9chantillonnage (<em>oversampling<\/em>) de la classe rare ou de sous-\u00e9chantillonnage (<em>undersampling<\/em>) de la classe pl\u00e9thorique.<\/p>\n<p>En assignant des probabilit\u00e9s d&rsquo;inclusion artificiellement \u00e9lev\u00e9es aux observations appartenant \u00e0 la classe minoritaire, l&rsquo;analyste contraint l&rsquo;\u00e9chantillon d&rsquo;apprentissage \u00e0 contenir une proportion \u00e9quilibr\u00e9e de cas positifs et n\u00e9gatifs, permettant aux estimateurs d&rsquo;ajuster convenablement leurs hyperplans s\u00e9parateurs. Toutefois, cette distorsion d\u00e9lib\u00e9r\u00e9e modifie l&rsquo;espace de mesure original. Pour maintenir la validit\u00e9 asymptotique des inf\u00e9rences ult\u00e9rieures, il est n\u00e9cessaire de recalculer r\u00e9trospectivement les probabilit\u00e9s d&rsquo;inclusion individuelles (les poids de Horvitz-Thompson) et de les r\u00e9injecter dans les fonctions de perte ou les \u00e9quations d&rsquo;estimation sous forme de poids d&rsquo;\u00e9chantillonnage correctifs (<em>survey weights<\/em>).<\/p>\n<h2>6. Reproductibilit\u00e9 computationnelle et contr\u00f4le du g\u00e9n\u00e9rateur pseudo-al\u00e9atoire<\/h2>\n<h3>6.1 Fonctionnement des g\u00e9n\u00e9rateurs de nombres pseudo-al\u00e9atoires (PRNG)<\/h3>\n<p>Les ordinateurs num\u00e9riques, en tant que syst\u00e8mes formels d\u00e9terministes fonctionnant sur une logique bool\u00e9enne binaire, sont fondamentalement incapables de concevoir un al\u00e9a ontologique spontan\u00e9 sans recourir \u00e0 des capteurs physiques externes (mesurant le bruit thermique ou les d\u00e9sint\u00e9grations radioactives). Par cons\u00e9quent, tout processus d&rsquo;\u00e9chantillonnage ex\u00e9cut\u00e9 par R s&rsquo;appuie sur des algorithmes math\u00e9matiques d\u00e9terministes complexes appel\u00e9s g\u00e9n\u00e9rateurs de nombres pseudo-al\u00e9atoires (<em>Pseudo-Random Number Generators<\/em> ou PRNG). Ces moteurs produisent des s\u00e9quences d\u00e9terministes d&rsquo;entiers qui imitent les propri\u00e9t\u00e9s d&rsquo;ind\u00e9pendance et d&rsquo;\u00e9quiprobabilit\u00e9 de l&rsquo;al\u00e9a authentique.<\/p>\n<p>Depuis la version 1.7.0 de R, le g\u00e9n\u00e9rateur algorithmique par d\u00e9faut est le prestigieux <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mersenne_Twister\">Mersenne-Twister<\/a> (d\u00e9velopp\u00e9 par Makoto Matsumoto et Takuji Nishimura). Cet algorithme repose sur la r\u00e9currence matricielle lin\u00e9aire modulo 2 et se distingue par une p\u00e9riode colossale de <em>2^(19937) &#8211; 1<\/em> (un nombre premier de Mersenne) ainsi qu&rsquo;une \u00e9quidistribution uniforme prouv\u00e9e jusqu&rsquo;\u00e0 la dimension 623. Cela signifie qu&rsquo;avant de r\u00e9p\u00e9ter une s\u00e9quence d&rsquo;\u00e9tats internes d\u00e9j\u00e0 parcourue, le g\u00e9n\u00e9rateur peut produire un volume de tirages qui surpasse de plusieurs ordres de grandeur le nombre total d&rsquo;atomes pr\u00e9sents dans l&rsquo;univers observable, garantissant une absence absolue de corr\u00e9lation s\u00e9rielle pour les applications scientifiques contemporaines.<\/p>\n<h3>6.2 Utilisation rigoureuse de la fonction set.seed()<\/h3>\n<p>Le d\u00e9terminisme sous-jacent des g\u00e9n\u00e9rateurs pseudo-al\u00e9atoires pr\u00e9sente un avantage pour la pratique scientifique : la reproductibilit\u00e9 computationnelle absolue. En fixant explicitement l&rsquo;\u00e9tat initial du vecteur de m\u00e9moire interne du Mersenne-Twister au moyen de la commande <strong>set.seed()<\/strong>, le chercheur ancre la trajectoire de l&rsquo;ensemble des tirages stochastiques ult\u00e9rieurs dans une s\u00e9quence immuable. Deux machines g\u00e9ographiquement distinctes ex\u00e9cutant le m\u00eame script R sous le m\u00eame \u00e9tat initial produiront une cha\u00eene d&rsquo;extractions rigoureusement bit-\u00e0-bit identique.<\/p>\n<p>Sur le plan m\u00e9thodologique, la gestion de <strong>set.seed()<\/strong> ob\u00e9it \u00e0 des r\u00e8gles strictes. L&rsquo;argument transmis doit \u00eatre un nombre entier valide. Il est imp\u00e9ratif d&rsquo;initialiser la graine stochastique au tout d\u00e9but des scripts analytiques, dans une section d\u00e9di\u00e9e \u00e0 l&rsquo;environnement d&rsquo;ex\u00e9cution, plut\u00f4t que de la disperser \u00e0 l&rsquo;int\u00e9rieur de sous-fonctions it\u00e9ratives. R\u00e9initialiser la graine \u00e0 chaque boucle d&rsquo;\u00e9chantillonnage constitue une erreur m\u00e9thodologique s\u00e9v\u00e8re qui d\u00e9truit l&rsquo;ind\u00e9pendance des it\u00e9rations en for\u00e7ant l&rsquo;algorithme \u00e0 rejouer continuellement les m\u00eames segments de la trajectoire pseudo-al\u00e9atoire. La divulgation explicite de la graine utilis\u00e9e dans les annexes m\u00e9thodologiques est aujourd&rsquo;hui une exigence incontournable des politiques \u00e9ditoriales de science ouverte et de revue par les pairs.<\/p>\n<h3>6.3 Gestion de la compatibilit\u00e9 entre versions de R<\/h3>\n<p>Un aspect critique de la reproductibilit\u00e9 \u00e0 long terme concerne la stabilit\u00e9 de l&rsquo;algorithme d&rsquo;\u00e9chantillonnage discret entre les diff\u00e9rentes versions du moteur R. Lors de la publication de la version 3.6.0 de R en avril 2019, l&rsquo;\u00e9quipe centrale de d\u00e9veloppement (<em>R Core Team<\/em>) a corrig\u00e9 un d\u00e9faut algorithmique subtil mais syst\u00e9matique qui affectait la fonction <strong>sample()<\/strong> depuis ses origines. Auparavant, l&rsquo;algorithme de discr\u00e9tisation de la loi uniforme continue introduisait un biais l\u00e9ger mais statistiquement mesurable vers les entiers inf\u00e9rieurs dans certains contextes de tirage non uniforme \u00e0 large \u00e9chelle.<\/p>\n<p>Cette correction a entra\u00een\u00e9 une rupture historique : l&rsquo;ex\u00e9cution d&rsquo;un script contenant la m\u00eame graine via <strong>set.seed(123)<\/strong> ne produit plus le m\u00eame r\u00e9sultat sous R 4.x.x que sous R 3.5.3. Pour restaurer l&rsquo;int\u00e9grit\u00e9 de flux d&rsquo;analyses historiques ou v\u00e9rifier des publications ant\u00e9rieures, R int\u00e8gre la commande de configuration <strong>RNGkind()<\/strong>. L&rsquo;instruction explicite <strong>RNGkind(sample.kind = \u00ab\u00a0Rounding\u00a0\u00bb)<\/strong> r\u00e9active le comportement ant\u00e9rieur \u00e0 la version 3.6.0, tandis que le param\u00e9trage standard moderne s&rsquo;\u00e9nonce <strong>RNGkind(sample.kind = \u00ab\u00a0Rejection\u00a0\u00bb)<\/strong>. Les statisticiens doivent consigner scrupuleusement ces m\u00e9tadonn\u00e9es d&rsquo;environnement \u00e0 l&rsquo;aide de l&rsquo;utilitaire <strong>sessionInfo()<\/strong> pour pr\u00e9munir leurs r\u00e9sultats contre d&rsquo;\u00e9ventuelles divergences inter-versions.<\/p>\n<h2>7. \u00c9chantillonnage sur des structures de donn\u00e9es complexes : data.frame et tibble<\/h2>\n<h3>7.1 \u00c9chantillonnage de lignes par indexation vectorielle<\/h3>\n<p>Dans la pratique analytique quotidienne, l&rsquo;objet d&rsquo;int\u00e9r\u00eat n&rsquo;est que rarement un vecteur atomique isol\u00e9, mais plut\u00f4t une matrice de donn\u00e9es bidimensionnelle (<em>data.frame<\/em> ou <em>tibble<\/em>) encapsulant un ensemble multivari\u00e9 d&rsquo;observations interconnect\u00e9es. La fonction <strong>sample()<\/strong> ne s&rsquo;applique pas directement \u00e0 un tableau de donn\u00e9es dans son ensemble : l&rsquo;instruction na\u00efve <strong>sample(df, 10)<\/strong> n&rsquo;extrairait pas 10 observations de mani\u00e8re matricielle, mais \u00e9chantillonnerait 10 variables (colonnes) parmi l&rsquo;ensemble des descripteurs, R interpr\u00e9tant nativement le <em>data.frame<\/em> comme une liste de vecteurs verticaux.<\/p>\n<p>Pour extraire convenablement un sous-ensemble d&rsquo;unit\u00e9s statistiques (lignes) tout en pr\u00e9servant l&rsquo;int\u00e9grit\u00e9 relationnelle entre les attributs d&rsquo;un m\u00eame individu, la m\u00e9thode canonique consiste \u00e0 d\u00e9coupler l&rsquo;\u00e9chantillonnage stochastique de l&rsquo;indexation matricielle. On g\u00e9n\u00e8re d&rsquo;abord un sous-ensemble d&rsquo;indices de positions num\u00e9riques enti\u00e8res via la fonction <strong>sample()<\/strong> appliqu\u00e9e au nombre total de lignes <strong>nrow(df)<\/strong>, puis on applique cet ensemble d&rsquo;indices sur la premi\u00e8re dimension de l&rsquo;op\u00e9rateur de sous-ensemble matriciel <strong>[indices, ]<\/strong>. Cette formulation <strong>df[sample(nrow(df), size = n), ]<\/strong> garantit que les liaisons inter-colonnes demeurent int\u00e8gres au cours de l&rsquo;extraction.<\/p>\n<h3>7.2 Partitionnement de bases de donn\u00e9es (Apprentissage et Test)<\/h3>\n<p>Le partitionnement m\u00e9thodique d&rsquo;une matrice observationnelle constitue une \u00e9tape pr\u00e9alable incontournable dans l&rsquo;\u00e9laboration de tout pipeline de mod\u00e9lisation pr\u00e9dictive ou d&rsquo;\u00e9valuation \u00e9conom\u00e9trique. Une approche robuste consiste \u00e0 scinder le jeu d&rsquo;apprentissage (par exemple 80 % de la masse des donn\u00e9es) et le jeu de test r\u00e9siduel (20 %) de mani\u00e8re rigoureusement disjointe. L&rsquo;utilisation d&rsquo;un masque bool\u00e9en g\u00e9n\u00e9r\u00e9 par l&rsquo;assignation al\u00e9atoire d&rsquo;indices offre une s\u00e9curit\u00e9 d&rsquo;impl\u00e9mentation sup\u00e9rieure \u00e0 l&rsquo;extraction directe de sous-tables s\u00e9quentielles.<\/p>\n<p>En tirant sans remise un vecteur d&rsquo;indices correspondant \u00e0 la proportion d\u00e9sir\u00e9e (ex. <strong>taille_train &lt;- round(0.80 * nrow(df))<\/strong> puis <strong>train_idx &lt;- sample(seq_len(nrow(df)), size = taille_train, replace = FALSE)<\/strong>), on isole imm\u00e9diatement les donn\u00e9es d&rsquo;entra\u00eenement via <strong>df_train &lt;- df[train_idx, ]<\/strong> et les donn\u00e9es de validation via l&rsquo;op\u00e9rateur de n\u00e9gation unaire ou de compl\u00e9mentation indiciaire <strong>df_test &lt;- df[-train_idx, ]<\/strong>. Ce protocole assure une partition \u00e9tanche, \u00e9liminant tout risque d&rsquo;interp\u00e9n\u00e9tration des donn\u00e9es (<em>data leakage<\/em>), ph\u00e9nom\u00e8ne insidieux o\u00f9 des fragments de l&rsquo;\u00e9chantillon de test viendraient contaminer le calibrage des estimateurs d&rsquo;apprentissage et fausser les mesures d&rsquo;erreur de g\u00e9n\u00e9ralisation.<\/p>\n<h3>7.3 Int\u00e9gration au sein de l&rsquo;\u00e9cosyst\u00e8me Tidyverse<\/h3>\n<p>Avec l&rsquo;av\u00e8nement et l&rsquo;h\u00e9g\u00e9monie conceptuelle de la grammaire de manipulation de donn\u00e9es formalis\u00e9e par le m\u00e9ta-paquetage <a rel=\"noopener noreferrer\" href=\"https:\/\/www.tidyverse.org\/\">Tidyverse<\/a>, la manipulation stochastique des tableaux de donn\u00e9es b\u00e9n\u00e9ficie d&rsquo;abstractions s\u00e9mantiques sp\u00e9cialis\u00e9es. Le paquetage <em>dplyr<\/em> int\u00e8gre la famille fonctionnelle <strong>slice_sample()<\/strong>, qui constitue une surcouche de haut niveau encapsulant l&rsquo;appel \u00e0 la fonction primitive <strong>sample()<\/strong> tout en l&rsquo;adaptant aux structures modernes de type <em>tibble<\/em>.<\/p>\n<p>L&rsquo;instruction <strong>df %>% slice_sample(n = 50)<\/strong> ou <strong>df %>% slice_sample(prop = 0.2)<\/strong> simplifie la manipulation syntaxique en acceptant directement soit une taille brute, soit un ratio fractionnaire de l&rsquo;\u00e9chantillon. En outre, cette syntaxe moderne s&rsquo;associe naturellement avec l&rsquo;instruction de regroupement <strong>group_by()<\/strong>. Lorsqu&rsquo;une op\u00e9ration <strong>slice_sample()<\/strong> succ\u00e8de \u00e0 un regroupement cat\u00e9goriel, l&rsquo;\u00e9chantillonnage s&rsquo;ex\u00e9cute automatiquement au sein de chaque strate d\u00e9finie, convertissant une op\u00e9ration combinatoire fastidieuse en une ligne de code lisible et expressive. N\u00e9anmoins, pour des jeux de donn\u00e9es atteignant plusieurs dizaines de millions de lignes, l&rsquo;utilisation directe de <strong>sample()<\/strong> vectoriel coupl\u00e9e \u00e0 l&rsquo;indexation matricielle de base conserve un avantage notable en termes de vitesse d&rsquo;ex\u00e9cution brute et d&#8217;empreinte sur la m\u00e9moire vive.<\/p>\n<h2>8. Protocoles d&rsquo;\u00e9chantillonnage stratifi\u00e9 et group\u00e9 avec sample()<\/h2>\n<h3>8.1 Fondements de la stratification m\u00e9thodologique<\/h3>\n<p>Bien que l&rsquo;\u00e9chantillonnage al\u00e9atoire simple soit math\u00e9matiquement sans biais, il n&rsquo;offre aucune garantie de reproductibilit\u00e9 exacte des proportions structurelles de la population parente au sein d&rsquo;un \u00e9chantillon unique de taille finie. Dans le contexte de recherches sociod\u00e9mographiques ou d&rsquo;essais cliniques multicentriques, l&rsquo;oubli accidentel d&rsquo;une sous-population marginale (par exemple une minorit\u00e9 ethnique repr\u00e9sentant 3 % de la population ou une mutation g\u00e9n\u00e9tique rare chez 2 % des patients) compromet l&rsquo;estimation des effets d&rsquo;interaction intra-groupe.<\/p>\n<p>L&rsquo;\u00e9chantillonnage stratifi\u00e9 r\u00e9pond \u00e0 cet imp\u00e9ratif en segmentant pr\u00e9alablement la population en sous-ensembles mutuellement exclusifs et collectivement exhaustifs nomm\u00e9s <em>strates<\/em>, au sein desquelles les unit\u00e9s pr\u00e9sentent une forte homog\u00e9n\u00e9it\u00e9 interne relative \u00e0 la variable d&rsquo;int\u00e9r\u00eat. Deux approches allocationnelles dominent : l&rsquo;allocation proportionnelle, qui reproduit fid\u00e8lement la balance d\u00e9mographique globale, et l&rsquo;allocation optimale th\u00e9oris\u00e9e par Jerzy Neyman. Cette derni\u00e8re module la taille de l&rsquo;\u00e9chantillon extrait au sein de chaque strate en fonction proportionnelle de son \u00e9cart-type interne : plus une strate pr\u00e9sente une variance \u00e9lev\u00e9e, plus l&rsquo;effort d&rsquo;\u00e9chantillonnage y est intensifi\u00e9, r\u00e9duisant l&rsquo;erreur quadratique moyenne de l&rsquo;estimateur global compar\u00e9 \u00e0 un tirage simple sans remise.<\/p>\n<h3>8.2 Impl\u00e9mentation d&rsquo;un \u00e9chantillonnage stratifi\u00e9 en base-R<\/h3>\n<p>La mise en \u0153uvre d&rsquo;un plan d&rsquo;\u00e9chantillonnage stratifi\u00e9 proportionnel via les primitives fondamentales de R repose sur l&rsquo;exploitation combin\u00e9e des fonctions <strong>split()<\/strong>, <strong>lapply()<\/strong> et <strong>do.call()<\/strong>. La fonction <strong>split()<\/strong> d\u00e9coupe initialement le tableau d&rsquo;observations multivari\u00e9 en une liste index\u00e9e de sous-tableaux disjoints, chaque \u00e9l\u00e9ment de la liste mat\u00e9rialisant une strate sociod\u00e9mographique ou clinique sp\u00e9cifique.<\/p>\n<p>L&rsquo;analyste mobilise ensuite la fonction d&rsquo;ordre sup\u00e9rieur <strong>lapply()<\/strong> pour appliquer it\u00e9rativement la m\u00e9canique de <strong>sample()<\/strong> \u00e0 chaque segment autonome. \u00c0 chaque it\u00e9ration, la taille de sous-ensemble allou\u00e9e est calcul\u00e9e dynamiquement au prorata des effectifs de la strate observ\u00e9e. Au terme du processus d&rsquo;extraction vectorielle, l&rsquo;agr\u00e9gation structurelle s&rsquo;op\u00e8re par l&rsquo;invocation canonique <strong>do.call(rbind, liste_echantillons)<\/strong>, qui recombine les sous-matrices disjointes en une matrice unifi\u00e9e. Ce flux op\u00e9ratoire algorithmique, bien que plus verbeux que les raccourcis de biblioth\u00e8ques tierces, pr\u00e9sente l&rsquo;avantage d&rsquo;une transparence absolue sur la gestion de la m\u00e9moire et d&rsquo;une totale ind\u00e9pendance vis-\u00e0-vis des d\u00e9pendances de paquetages externes.<\/p>\n<h3>8.3 \u00c9chantillonnage en grappes (Cluster Sampling)<\/h3>\n<p>L&rsquo;\u00e9chantillonnage en grappes (ou par faisceaux) se distingue structurellement de la d\u00e9marche stratifi\u00e9e bien que sa formulation computationnelle emprunte des m\u00e9canismes similaires. Alors que la stratification consiste \u00e0 \u00e9chantillonner des individus au sein de <em>toutes<\/em> les strates disponibles, le tirage en grappes consiste \u00e0 s\u00e9lectionner al\u00e9atoirement un sous-ensemble d&rsquo;unit\u00e9s primaires collectives (nomm\u00e9es <em>grappes<\/em>, telles que des centres hospitaliers, des \u00e9tablissements scolaires ou des communes enti\u00e8res) pour ensuite inclure soit l&rsquo;int\u00e9gralit\u00e9, soit un sous-\u00e9chantillon d&rsquo;unit\u00e9s secondaires issues de ces grappes s\u00e9lectionn\u00e9es.<\/p>\n<p>Dans l&rsquo;environnement R, cette s\u00e9lection d&rsquo;unit\u00e9s primaires s&rsquo;ex\u00e9cute en extrayant d&rsquo;abord un sous-ensemble al\u00e9atoire au niveau des identifiants uniques de grappes via <strong>grappes_retenues &lt;- sample(unique(df$centre_id), size = k, replace = FALSE)<\/strong>. La seconde \u00e9tape filtre la matrice de donn\u00e9es compl\u00e8te au moyen de l&rsquo;op\u00e9rateur d&rsquo;appartenance vectorielle <strong>df[df$centre_id %in% grappes_retenues, ]<\/strong>. Sur le plan de l&rsquo;inf\u00e9rence th\u00e9orique, cette commodit\u00e9 logistique induit un effet de structure (l&rsquo;effet de dessein ou <em>design effect<\/em>) caus\u00e9 par la corr\u00e9lation intra-classe positive qui relie les observations issues d&rsquo;une m\u00eame grappe, imposant le recours ult\u00e9rieur \u00e0 des mod\u00e8les lin\u00e9aires mixtes ou \u00e0 des corrections d&rsquo;erreur-type pour variables group\u00e9es (<em>clustered standard errors<\/em>).<\/p>\n<h2>9. R\u00e9\u00e9chantillonnage non param\u00e9trique, Bootstrap et tests de permutations<\/h2>\n<h3>9.1 Le principe du bootstrap d&rsquo;Efron<\/h3>\n<p>Introduite en 1979 par le statisticien de Stanford Bradley Efron, la technique de r\u00e9\u00e9chantillonnage non param\u00e9trique connue sous le nom de <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bootstrapping_(statistics)\">bootstrap<\/a> a transform\u00e9 l&rsquo;inf\u00e9rence moderne en substituant la puissance de calcul brute aux d\u00e9veloppements math\u00e9matiques asymptotiques souvent intraitables. Le postulat fondamental du bootstrap est \u00e0 la fois audacieux et simple : la distribution empirique observ\u00e9e au sein d&rsquo;un \u00e9chantillon de donn\u00e9es al\u00e9atoires constitue la meilleure approximation accessible de la distribution de probabilit\u00e9 inconnue de la population parente.<\/p>\n<p>D\u00e8s lors, pour estimer la variabilit\u00e9 d&rsquo;un param\u00e8tre complexe (m\u00e9diane, rapport de cotes, coefficient de corr\u00e9lation de Spearman, matrice de quantification quantile), on proc\u00e8de \u00e0 des tirages successifs avec remise au sein de l&rsquo;\u00e9chantillon d&rsquo;origine, en fixant imp\u00e9rativement une taille de r\u00e9\u00e9chantillon <strong>size<\/strong> rigoureusement \u00e9gale \u00e0 la dimension de l&rsquo;\u00e9chantillon initial <em>N<\/em>. R\u00e9p\u00e9t\u00e9 des milliers de fois, ce processus engendre une distribution empirique de la statistique d&rsquo;int\u00e9r\u00eat, dont la dispersion fournit une estimation sans biais de l&rsquo;erreur type et permet l&rsquo;\u00e9tablissement d&rsquo;intervalles de confiance non param\u00e9triques (par la m\u00e9thode des percentiles ou la m\u00e9thode BCA) s&rsquo;affranchissant de toute hypoth\u00e8se sur la forme analytique de la distribution sous-jacente.<\/p>\n<h3>9.2 Programmation manuelle d&rsquo;une boucle bootstrap avec sample()<\/h3>\n<p>Bien que des paquetages sp\u00e9cialis\u00e9s comme <em>boot<\/em> automatisent ces proc\u00e9dures, la programmation manuelle d&rsquo;une boucle bootstrap avec les outils de base de R met en lumi\u00e8re l&rsquo;\u00e9l\u00e9gance algorithmique de la m\u00e9thode. Supposons un vecteur de mesures biom\u00e9triques <em>mesures<\/em> de longueur <em>N<\/em> dont nous souhaitons quantifier l&rsquo;intervalle de confiance \u00e0 95 % pour la m\u00e9diane sans recourir aux th\u00e9or\u00e8mes asymptotiques.<\/p>\n<p>L&rsquo;analyste pr\u00e9alloue d&rsquo;abord un conteneur m\u00e9moire num\u00e9rique de dimension <em>B<\/em> (par exemple 10 000 it\u00e9rations) : <strong>replications &lt;- numeric(10000)<\/strong>. \u00c0 l&rsquo;int\u00e9rieur d&rsquo;une structure it\u00e9rative standard ou via la fonction vectoris\u00e9e <strong>replicate()<\/strong>, l&rsquo;op\u00e9ration se r\u00e9sume \u00e0 l&rsquo;ex\u00e9cution s\u00e9quentielle : <strong>replicate(10000, median(sample(mesures, size = length(mesures), replace = TRUE)))<\/strong>. Au terme de la boucle, l&rsquo;\u00e9cart-type empirique du vecteur des r\u00e9plications fournit l&rsquo;estimation de l&rsquo;erreur type de la m\u00e9diane, et l&rsquo;application imm\u00e9diate de la fonction <strong>quantile(replications, probs = c(0.025, 0.975))<\/strong> borne directement l&rsquo;intervalle de confiance empirique. Cette capacit\u00e9 \u00e0 d\u00e9river la loi de distribution d&rsquo;estimateurs robustes non diff\u00e9rentiables fait de <strong>sample()<\/strong> un outil incontournable de la recherche non param\u00e9trique contemporaine.<\/p>\n<h3>9.3 Tests d&rsquo;ind\u00e9pendance par permutation de variables<\/h3>\n<p>Les tests d&rsquo;ind\u00e9pendance par permutation repr\u00e9sentent une application m\u00e9thodologique fondamentale de <strong>sample()<\/strong>, fournissant des solutions exactes pour \u00e9valuer la significativit\u00e9 statistique d&rsquo;une association bivari\u00e9e. Consid\u00e9rons un protocole \u00e9valuant l&rsquo;association entre une covariable continue (par exemple le niveau d&rsquo;expression d&rsquo;un biomarqueur s\u00e9rique) et l&rsquo;appartenance \u00e0 un groupe binaire (malade vs sain). L&rsquo;hypoth\u00e8se nulle d&rsquo;invariance stipule que l&rsquo;assignation de l&rsquo;\u00e9tiquette de groupe n&rsquo;a aucun lien avec la magnitude du biomarqueur.<\/p>\n<p>Pour tester empiriquement cette absence d&rsquo;association, il suffit de d\u00e9coupler al\u00e9atoirement la relation entre les colonnes en permutant l&rsquo;une d&rsquo;entre elles via <strong>sample(groupe, replace = FALSE)<\/strong> tout en conservant le vecteur des biomarqueurs inchang\u00e9. En r\u00e9p\u00e9tant cette permutation compl\u00e8te un nombre substantiel de fois (ex. <em>B = 5 000<\/em>), on recalcule \u00e0 chaque pas la statistique de test (par exemple la diff\u00e9rence absolue des moyennes de groupe). La <em>p<\/em>-valeur de permutation empirique s&rsquo;obtient alors en calculant la proportion de simulations pour lesquelles la statistique permut\u00e9e \u00e9gale ou surpasse la statistique initialement observ\u00e9e sur les donn\u00e9es r\u00e9elles. Cette approche \u00e9limine toute d\u00e9pendance \u00e0 l&rsquo;\u00e9gard des approximations de grands \u00e9chantillons et tol\u00e8re parfaitement les d\u00e9s\u00e9quilibres d&rsquo;effectifs s\u00e9v\u00e8res.<\/p>\n<h2>10. Erreurs classiques, comportements pi\u00e8ges et diagnostics sous R<\/h2>\n<h3>10.1 Le pi\u00e8ge critique de l&rsquo;argument de longueur unitaire<\/h3>\n<p>Parmi l&rsquo;ensemble des subtilit\u00e9s computationnelles inh\u00e9rentes au langage R, le comportement de la fonction <strong>sample()<\/strong> face \u00e0 un vecteur de longueur unitaire repr\u00e9sente sans doute le pi\u00e8ge le plus insidieux pour les chercheurs. Ce comportement d\u00e9coule d&rsquo;une d\u00e9cision d&rsquo;ergonomie syntaxique prise lors de la conception historique du logiciel : si l&rsquo;argument <strong>x<\/strong> est un vecteur num\u00e9rique d&rsquo;une seule valeur scalaire <em>n<\/em> (avec <em>n &gt; 1<\/em>), R n&rsquo;interpr\u00e8te pas <strong>x<\/strong> comme un \u00e9l\u00e9ment unique \u00e0 s\u00e9lectionner, mais consid\u00e8re implicitement l&rsquo;expression g\u00e9n\u00e9ratrice <strong>1:n<\/strong> comme le v\u00e9ritable espace d&rsquo;\u00e9chantillonnage.<\/p>\n<p>Consid\u00e9rons une fonction personnalis\u00e9e qui filtre des identifiants et soumet les \u00e9l\u00e9ments r\u00e9siduels \u00e0 un tirage stochastique via <strong>sample(elements_restants, size = 1)<\/strong>. Si les filtres en amont ne conservent qu&rsquo;un seul identifiant (par exemple l&rsquo;entier num\u00e9rique <em>100<\/em>), le programmeur s&rsquo;attend l\u00e9gitimement \u00e0 ce que la fonction retourne invariablement la valeur <em>100<\/em>. Au lieu de cela, R interpr\u00e8te l&rsquo;appel comme <strong>sample(1:100, size = 1)<\/strong> et renvoie un entier pseudo-al\u00e9atoire entre 1 et 100. Pour immuniser de mani\u00e8re d\u00e9finitive les scripts analytiques contre cette d\u00e9rive critique, il est imp\u00e9ratif d&rsquo;utiliser une fonction d&rsquo;\u00e9chantillonnage s\u00e9curis\u00e9e (<em>safe wrapper<\/em>), souvent formalis\u00e9e sous le nom de <strong>resample()<\/strong> dans la documentation officielle du logiciel :<\/p>\n<p><strong>resample &lt;- function(x, &#8230;) x[sample.int(length(x), &#8230;)]<\/strong><\/p>\n<p>Cette impl\u00e9mentation alternative op\u00e8re l&rsquo;\u00e9chantillonnage non pas sur la valeur intrins\u00e8que de <strong>x<\/strong>, mais sur l&rsquo;espace s\u00e9quentiel de ses indices via <strong>sample.int()<\/strong>, assurant un comportement rigoureusement pr\u00e9visible, y compris lorsque <strong>length(x) == 1<\/strong>.<\/p>\n<h3>10.2 D\u00e9passement de la taille sans remise et erreurs lev\u00e9es<\/h3>\n<p>Une anomalie fr\u00e9quente dans l&rsquo;ex\u00e9cution de simulations stochastiques r\u00e9side dans le d\u00e9passement non intentionnel de la capacit\u00e9 cardinale de l&rsquo;espace source lors d&rsquo;un tirage sans remise. L&rsquo;ex\u00e9cution de la commande <strong>sample(1:50, size = 51, replace = FALSE)<\/strong> d\u00e9clenche imm\u00e9diatement une interruption irr\u00e9versible du flux d&rsquo;ex\u00e9cution assortie du message explicite : <em>\u00ab\u00a0Error in sample.int(length(x), size, replace, prob) : cannot take a sample larger than the population when &lsquo;replace = FALSE'\u00a0\u00bb<\/em>.<\/p>\n<p>Si cette protection native pr\u00e9vient l&rsquo;introduction d&rsquo;incoh\u00e9rences logiques dans des sc\u00e9narios d\u00e9terministes simples, elle peut stopper brutalement des simulations de Monte-Carlo ex\u00e9cut\u00e9es sur plusieurs jours si des sous-groupes filtr\u00e9s de mani\u00e8re dynamique voient leur effectif chuter en de\u00e7\u00e0 du param\u00e8tre <strong>size<\/strong> prescrit. Les praticiens doivent s\u00e9curiser leurs architectures en adjoignant des clauses de validation d\u00e9fensive pr\u00e9alables, mobilisant des instructions d&rsquo;assertion formelle comme <strong>stopifnot(length(x) &gt;= size)<\/strong> ou en int\u00e9grant des structures conditionnelles articul\u00e9es autour de <strong>tryCatch()<\/strong> pour intercepter gracieusement ces exceptions sans compromettre la cha\u00eene de calcul globale. Par ailleurs, la pr\u00e9sence de valeurs manquantes (<em>NA<\/em> ou <em>NaN<\/em>) au sein du vecteur <strong>x<\/strong> ne l\u00e8ve aucune alerte : R traite ces marqueurs d&rsquo;absence comme des \u00e9l\u00e9ments atomiques valides et les \u00e9chantillonne au prorata de leur fr\u00e9quence, ce qui peut fausser les calculs subs\u00e9quents si un nettoyage pr\u00e9alable n&rsquo;a pas \u00e9t\u00e9 r\u00e9alis\u00e9.<\/p>\n<h3>10.3 Incoh\u00e9rences de pond\u00e9ration avec prob<\/h3>\n<p>L&rsquo;utilisation de l&rsquo;argument de pond\u00e9ration probabiliste <strong>prob<\/strong> expose le flux de calcul \u00e0 plusieurs risques d&rsquo;invalidation num\u00e9rique. La premi\u00e8re contrainte formelle concerne la dimensionnalit\u00e9 : si le vecteur <strong>prob<\/strong> pr\u00e9sente une longueur diff\u00e9rente de <strong>length(x)<\/strong>, R interrompt le traitement avec un message d&rsquo;incompatibilit\u00e9 de dimensions. Plus insidieuse est l&rsquo;injection accidentelle de valeurs extr\u00eames ou aberrantes issues de calculs interm\u00e9diaires mal conditionn\u00e9s.<\/p>\n<p>L&rsquo;introduction d&rsquo;une valeur strictement n\u00e9gative au sein du vecteur de probabilit\u00e9s d\u00e9clenche imm\u00e9diatement une exception bloquante. De m\u00eame, la pr\u00e9sence de valeurs infinies (<em>Inf<\/em>) ou ind\u00e9termin\u00e9es (<em>NaN<\/em>) invalide le calcul interne de normalisation de R. Enfin, un cas pathologique concerne l&rsquo;hypoth\u00e8se o\u00f9 l&rsquo;ensemble des \u00e9l\u00e9ments du vecteur de poids serait strictement \u00e9gal \u00e0 z\u00e9ro : <strong>prob = c(0, 0, 0)<\/strong>. Dans une telle configuration, la somme vectorielle s&rsquo;annule, rendant impossible la division normalisatrice et provoquant l&rsquo;\u00e9chec de la routine d&rsquo;allocation. L&rsquo;int\u00e9grit\u00e9 du vecteur probabiliste doit syst\u00e9matiquement \u00eatre valid\u00e9e en amont \u00e0 l&rsquo;aide de pr\u00e9dicats logiques assurant la finitude (<strong>all(is.finite(prob))<\/strong>) et la stricte positivit\u00e9 globale de la somme (<strong>sum(prob) &gt; 0<\/strong>).<\/p>\n<h2>11. Efficience algorithmique et optimisation pour les donn\u00e9es massives<\/h2>\n<h3>11.1 Complexit\u00e9 temporelle et spatiale de la fonction sample()<\/h3>\n<p>L&rsquo;\u00e9valuation de la performance computationnelle de <strong>sample()<\/strong> exige une plong\u00e9e dans la th\u00e9orie de la complexit\u00e9 algorithmique. Lors d&rsquo;un tirage \u00e9quiprobable sans remise de taille <em>k<\/em> au sein d&rsquo;une population de dimension <em>N<\/em>, R impl\u00e9mente en interne des variantes hautement optimis\u00e9es de l&rsquo;algorithme de m\u00e9lange de Fisher-Yates (ou algorithme de Knuth) et, lorsque le ratio <em>k \/ N<\/em> est faible, des techniques avanc\u00e9es d&rsquo;\u00e9chantillonnage de r\u00e9servoir (<em>reservoir sampling<\/em>). La complexit\u00e9 temporelle th\u00e9orique de ces op\u00e9rations s&rsquo;exprime en <em>O(k)<\/em> ou <em>O(N)<\/em>, ce qui garantit une vitesse d&rsquo;ex\u00e9cution optimale pour la majorit\u00e9 des probl\u00e8mes statistiques conventionnels.<\/p>\n<p>Toutefois, la manipulation de jeux de donn\u00e9es massifs (plusieurs dizaines ou centaines de millions d&rsquo;enregistrements) r\u00e9v\u00e8le des goulots d&rsquo;\u00e9tranglement spatiaux (m\u00e9moire vive). Le passage d&rsquo;un vecteur atomique \u00e0 travers la pile d&rsquo;\u00e9valuation de R implique des duplications d&rsquo;objets en m\u00e9moire (s\u00e9mantique du passage par valeur, ou <em>copy-on-modify<\/em>), saturant potentiellement la m\u00e9moire cache du microprocesseur. De surcro\u00eet, lorsque des probabilit\u00e9s non uniformes complexes sont inject\u00e9es via <strong>prob<\/strong>, l&rsquo;algorithme doit construire des tables d&rsquo;alias ou mobiliser la m\u00e9thode de la transform\u00e9e inverse, dont le co\u00fbt combinatoire initial s&rsquo;\u00e9l\u00e8ve en <em>O(N)<\/em>, impactant substantiellement la latence temporelle globale lors d&rsquo;appels it\u00e9ratifs r\u00e9p\u00e9t\u00e9s.<\/p>\n<h3>11.2 Alternatives \u00e0 haute performance : sample.int()<\/h3>\n<p>Pour les environnements de calcul intensif, tels que les cha\u00eenes d&rsquo;estimation bay\u00e9sienne par MCMC ou les architectures de for\u00eats al\u00e9atoires personnalis\u00e9es, l&rsquo;appel standard \u00e0 <strong>sample()<\/strong> induit une surcharge computationnelle (<em>overhead<\/em>) non n\u00e9gligeable li\u00e9e \u00e0 la v\u00e9rification des types et \u00e0 la conversion interne des arguments. L&rsquo;alternative professionnelle consiste \u00e0 mobiliser directement la primitive interne de plus bas niveau : <strong>sample.int()<\/strong>.<\/p>\n<p>La fonction primitive <strong>sample.int(n, size, replace = FALSE, prob = NULL)<\/strong> d\u00e9l\u00e8gue l&rsquo;ex\u00e9cution directement au code compil\u00e9 en langage C sans effectuer les multiples contr\u00f4les de s\u00fbret\u00e9 s\u00e9mantique propres aux fonctions g\u00e9n\u00e9riques R. Elle op\u00e8re exclusivement sur les entiers s\u00e9quentiels de 1 \u00e0 <em>n<\/em>, \u00e9liminant toute latence li\u00e9e au d\u00e9r\u00e9f\u00e9rencement de structures d&rsquo;objets complexes. En combinant <strong>sample.int()<\/strong> avec une indexation matricielle directe, les benchmarks r\u00e9v\u00e8lent des gains d&rsquo;acc\u00e9l\u00e9ration substantiels (souvent de l&rsquo;ordre de 30 % \u00e0 50 % de temps d&rsquo;ex\u00e9cution en moins), repr\u00e9sentant une \u00e9conomie de temps cruciale lorsque des dizaines de millions d&rsquo;it\u00e9rations stochastiques sont ex\u00e9cut\u00e9es au sein de pipelines analytiques distribu\u00e9s.<\/p>\n<h3>11.3 Parall\u00e9lisation des processus d&rsquo;\u00e9chantillonnage it\u00e9ratifs<\/h3>\n<p>Face \u00e0 la d\u00e9multiplication des volumes de donn\u00e9es et \u00e0 la n\u00e9cessit\u00e9 de conduire des simulations d&rsquo;envergure, le recours au parall\u00e9lisme computationnel s&rsquo;impose. Cependant, la distribution d&rsquo;appels r\u00e9p\u00e9t\u00e9s \u00e0 <strong>sample()<\/strong> sur de multiples c\u0153urs de calcul (<em>multithreading<\/em> ou <em>multiprocessing<\/em>) introduit un risque statistique critique : la corr\u00e9lation crois\u00e9e des s\u00e9quences pseudo-al\u00e9atoires g\u00e9n\u00e9r\u00e9es par des processus ouvriers concurrents. Si chaque c\u0153ur initialise le Mersenne-Twister de mani\u00e8re na\u00efve, des segments identiques de la trajectoire stochastique risquent d&rsquo;\u00eatre dupliqu\u00e9s, d\u00e9truisant l&rsquo;ind\u00e9pendance requise par les th\u00e9or\u00e8mes d&rsquo;\u00e9chantillonnage.<\/p>\n<p>La solution m\u00e9thodologique repose sur l&rsquo;adoption de g\u00e9n\u00e9rateurs pseudo-al\u00e9atoires parall\u00e9lisables, au premier rang desquels figure l&rsquo;algorithme de Pierre L&rsquo;Ecuyer (<em>L&rsquo;Ecuyer-CMRG<\/em>). Cet algorithme subdivise le cycle interne du g\u00e9n\u00e9rateur en flux disjoints ind\u00e9pendants et en sous-flux de longueurs astronomiques, assignant un sous-flux \u00e9tanche \u00e0 chaque unit\u00e9 de calcul d\u00e9di\u00e9e. Au sein de R, l&rsquo;int\u00e9gration s&rsquo;ex\u00e9cute via le paquetage <em>parallel<\/em> en invoquant pr\u00e9alablement <strong>RNGkind(\u00ab\u00a0L&rsquo;Ecuyer-CMRG\u00a0\u00bb)<\/strong> coupl\u00e9 \u00e0 <strong>mc.reset.stream()<\/strong> ou <strong>clusterSetRNGStream()<\/strong>. Les routines distribu\u00e9es, telles que <strong>mclapply()<\/strong> ou <strong>foreach() %dopar%<\/strong>, peuvent ainsi consommer des millions d&rsquo;\u00e9chantillons al\u00e9atoires simultan\u00e9ment en garantissant la stricte ind\u00e9pendance statistique entre les r\u00e9sultats produits par les diff\u00e9rents c\u0153urs.<\/p>\n<h2>12. Applications concr\u00e8tes en recherche quantitative et psychom\u00e9trie<\/h2>\n<h3>12.1 Randomisation de protocoles psychophysiques et contrebalancement<\/h3>\n<p>Dans les paradigmes exp\u00e9rimentaux des neurosciences cognitives et de la psychom\u00e9trie comportementale, la structure de pr\u00e9sentation des stimuli influence directement l&rsquo;architecture des r\u00e9ponses motrices et attentionnelles des participants. La pr\u00e9sentation r\u00e9p\u00e9t\u00e9e de blocs de stimuli visuels ou auditifs dans un ordre fixe engendre des art\u00e9facts d&rsquo;habituation, de fatigue neuronale ou d&rsquo;anticipation strat\u00e9gique, ruinant la validit\u00e9 interne des mesures d&rsquo;imagerie c\u00e9r\u00e9brale (IRMf, potentiels \u00e9voqu\u00e9s EEG) ou des chronom\u00e9tries mentales (temps de r\u00e9ponse milliseconde).<\/p>\n<p>L&rsquo;utilisation de la fonction <strong>sample()<\/strong> permet d&rsquo;orchestrer des plans d&rsquo;al\u00e9isation par blocs et des structures de contrebalancement stochastique d&rsquo;une grande rigueur. La g\u00e9n\u00e9ration de pseudo-carr\u00e9s latins al\u00e9atoires s&rsquo;op\u00e8re en combinant des permutations d&rsquo;items au sein de boucles individualis\u00e9es : pour chaque sujet exp\u00e9rimental, l&rsquo;ordre des conditions est d\u00e9fini par une permutation sans remise issue de <strong>sample(conditions)<\/strong>. De surcro\u00eet, pour pr\u00e9venir l&rsquo;\u00e9mergence accidentelle de motifs locaux ind\u00e9sirables (par exemple la pr\u00e9sentation fortuite de trois stimuli cibles cons\u00e9cutifs), l&rsquo;algorithme d&rsquo;\u00e9chantillonnage est ins\u00e9r\u00e9 au sein d&rsquo;une routine de validation \u00e0 rejet, qui rejette et r\u00e9\u00e9chantillonne instantan\u00e9ment toute s\u00e9quence pr\u00e9sentant des runs de r\u00e9p\u00e9tition exc\u00e9dant les tol\u00e9rances psychophysiques d\u00e9finies par le protocole exp\u00e9rimental.<\/p>\n<h3>12.2 Simulation d&rsquo;\u00e9chantillons normatifs pour la validation d&rsquo;\u00e9chelles<\/h3>\n<p>Le d\u00e9veloppement et la validation psychom\u00e9trique d&rsquo;instruments de mesure (questionnaires de personnalit\u00e9, inventaires cliniques, \u00e9chelles de stress per\u00e7u) requi\u00e8rent l&rsquo;\u00e9tablissement de tables normatives standardis\u00e9es bas\u00e9es sur des distributions de r\u00e9f\u00e9rence. L&rsquo;exp\u00e9rimentateur utilise <strong>sample()<\/strong> pour mod\u00e9liser le comportement d&rsquo;\u00e9chantillons virtuels sous diverses hypoth\u00e8ses th\u00e9oriques de calibration, notamment pour tester la robustesse des indices d&rsquo;homog\u00e9n\u00e9it\u00e9 interne face \u00e0 des violations de l&rsquo;unidimensionnalit\u00e9.<\/p>\n<p>L&rsquo;\u00e9valuation de la sensibilit\u00e9 du c\u00e9l\u00e8bre <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Cronbach%27s_alpha\">coefficient alpha de Cronbach<\/a> face \u00e0 des taux de r\u00e9ponse biais\u00e9s s&rsquo;op\u00e8re par la simulation syst\u00e9matique de vecteurs de r\u00e9ponses sur des \u00e9chelles de Likert d&rsquo;amplitude 1 \u00e0 5. En param\u00e9trant des vecteurs probabilistes asym\u00e9triques via <strong>prob<\/strong> (simulant des effets d&rsquo;acquiescement ou de d\u00e9sirabilit\u00e9 sociale), le chercheur g\u00e9n\u00e8re des matrices de r\u00e9ponses synth\u00e9tiques soumises \u00e0 diff\u00e9rentes conditions de perturbation stochastique. En outre, la mod\u00e9lisation de m\u00e9canismes d&rsquo;attrition de donn\u00e9es \u2014 tels que la non-r\u00e9ponse al\u00e9atoire (<em>Missing Completely at Random<\/em>, MCAR) ou non al\u00e9atoire (<em>Missing Not at Random<\/em>, MNAR) \u2014 est directement impl\u00e9ment\u00e9e en substituant des marqueurs <em>NA<\/em> aux donn\u00e9es simul\u00e9es selon un masque indiciaire g\u00e9n\u00e9r\u00e9 par <strong>sample(c(TRUE, FALSE), size = n, prob = c(taux_manquant, 1 &#8211; taux_manquant), replace = TRUE)<\/strong>, permettant d&rsquo;\u00e9valuer la r\u00e9silience des m\u00e9thodes d&rsquo;imputation multiple.<\/p>\n<h3>12.3 Validation crois\u00e9e de mod\u00e8les factoriels et pr\u00e9dictifs<\/h3>\n<p>Dans l&rsquo;analyse structurelle des profils de donn\u00e9es complexes, la scission de l&rsquo;\u00e9chantillon empirique via des protocoles de r\u00e9\u00e9chantillonnage repr\u00e9sente la r\u00e9f\u00e9rence m\u00e9thodologique absolue pour pr\u00e9munir les mod\u00e8les contre le surajustement (<em>capitalization on chance<\/em>). En psychom\u00e9trie multivari\u00e9e, une pratique classique consiste \u00e0 scinder stochastiquement un \u00e9chantillon clinique global en deux sous-\u00e9chantillons d&rsquo;effectifs \u00e9gaux \u00e0 l&rsquo;aide de <strong>sample(nrow(donnees), size = floor(nrow(donnees) \/ 2), replace = FALSE)<\/strong>. Le premier jeu de donn\u00e9es est d\u00e9volu \u00e0 l&rsquo;analyse factorielle exploratoire (AFE), identifiant la g\u00e9om\u00e9trie latente sous-jacente des traits psychologiques, tandis que le second \u00e9chantillon, strictement ind\u00e9pendant, est r\u00e9serv\u00e9 \u00e0 l&rsquo;analyse factorielle confirmatoire (AFC) sous mod\u00e9lisation par \u00e9quations structurelles (SEM).<\/p>\n<p>La reproductibilit\u00e9 de la structure factorielle s&rsquo;\u00e9value alors par la stabilit\u00e9 des indices d&rsquo;ajustement globaux (<em>Root Mean Square Error of Approximation<\/em> [RMSEA], <em>Comparative Fit Index<\/em> [CFI]) confront\u00e9s d&rsquo;une sous-cohorte \u00e0 l&rsquo;autre. Parall\u00e8lement, dans les approches pr\u00e9dictives mobilisant des r\u00e9gressions p\u00e9nalis\u00e9es (Lasso, Ridge, Elastic Net), la validation crois\u00e9e \u00e0 <em>k<\/em> blocs (<em>k-fold cross-validation<\/em>) s&rsquo;appuie sur la fonction <strong>sample()<\/strong> pour m\u00e9langer al\u00e9atoirement les donn\u00e9es pr\u00e9alablement \u00e0 leur assignation dans les diff\u00e9rents plis de validation. Cette m\u00e9thodologie garantit une estimation non biais\u00e9e de l&rsquo;erreur quadratique moyenne de pr\u00e9diction (RMSEP), fournissant un cadre solide pour la r\u00e9daction des sections analytiques d&rsquo;articles empiriques soumis aux revues de premier rang.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Chambers, J. M. (2008). <em>Software for data analysis: Programming with R<\/em>. Springer. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/978-0-387-75936-4\">https:\/\/doi.org\/10.1007\/978-0-387-75936-4<\/a><\/li>\n<li>Efron, B. (1979). Bootstrap methods: Another look at the jackknife. <em>The Annals of Statistics<\/em>, 7(1), 1\u201326. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1214\/aos\/1176344552\">https:\/\/doi.org\/10.1214\/aos\/1176344552<\/a><\/li>\n<li>Fisher, R. A. (1935). <em>The design of experiments<\/em>. Oliver and Boyd.<\/li>\n<li>Gentle, J. E. (2003). <em>Random number generation and Monte Carlo methods<\/em> (2nd ed.). Springer. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/b97336\">https:\/\/doi.org\/10.1007\/b97336<\/a><\/li>\n<li>L&rsquo;Ecuyer, P. (1999). Good parameter sets for combined multiple recursive random number generators. <em>Operations Research<\/em>, 47(1), 159\u2013164. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1287\/opre.47.1.159\">https:\/\/doi.org\/10.1287\/opre.47.1.159<\/a><\/li>\n<li>Matsumoto, M., &amp; Nishimura, T. (1998). Mersenne Twister: A 623-dimensionally equidistributed uniform pseudo-random number generator. <em>ACM Transactions on Modeling and Computer Simulation<\/em>, 8(1), 3\u201330. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1145\/272991.272995\">https:\/\/doi.org\/10.1145\/272991.272995<\/a><\/li>\n<li>Neyman, J. (1934). On the two different aspects of the representative method: The method of stratified sampling and the method of purposive selection. <em>Journal of the Royal Statistical Society<\/em>, 97(4), 558\u2013625. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/2342192\">https:\/\/doi.org\/10.2307\/2342192<\/a><\/li>\n<li>R Core Team. (2023). <em>R: A language and environment for statistical computing<\/em>. R Foundation for Statistical Computing. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.R-project.org\/\">https:\/\/www.R-project.org\/<\/a><\/li>\n<li>Wickham, H. (2019). <em>Advanced R<\/em> (2nd ed.). Chapman and Hall\/CRC. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1201\/9781351201315\">https:\/\/doi.org\/10.1201\/9781351201315<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet sur l&rsquo;utilisation de la fonction sample() dans R : syntaxe, probabilit\u00e9s, r\u00e9\u00e9chantillonnage bootstrap et applications empiriques.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1829,2193],"tags":[4277,5653,2658,3999,5652],"class_list":["post-3655","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-statistique","category-programmation-r","tag-bootstrap","tag-echantillonnage","tag-r","tag-reproductibilite","tag-sample"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/3655","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=3655"}],"version-history":[{"count":0,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/3655\/revisions"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}