{"id":9923,"date":"2026-10-14T18:02:35","date_gmt":"2026-10-14T18:02:35","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-calculer-une-moyenne-ponderee-dans-sas-exemples\/"},"modified":"2026-10-14T18:02:35","modified_gmt":"2026-10-14T18:02:35","slug":"comment-calculer-une-moyenne-ponderee-dans-sas-exemples","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-calculer-une-moyenne-ponderee-dans-sas-exemples","title":{"rendered":"Comment calculer une moyenne pond\u00e9r\u00e9e dans SAS (avec exemples)"},"content":{"rendered":"<p>L&rsquo;analyse statistique moderne repose sur une exigence fondamentale d&rsquo;exactitude dans l&rsquo;agr\u00e9gation des donn\u00e9es quantitatives. Dans les environnements corporatifs, \u00e9pid\u00e9miologiques et \u00e9conom\u00e9triques contemporains, les observations brutes issues de processus de collecte automatis\u00e9s ou d&rsquo;enqu\u00eates par sondage ne poss\u00e8dent que tr\u00e8s rarement une repr\u00e9sentativit\u00e9 intrins\u00e8que \u00e9quivalente. Traiter chaque point de donn\u00e9es avec le m\u00eame niveau d&rsquo;importance arithm\u00e9tique revient fr\u00e9quemment \u00e0 occulter les structures sous-jacentes du ph\u00e9nom\u00e8ne observ\u00e9, introduisant des biais d&rsquo;agr\u00e9gation susceptibles de fausser les prises de d\u00e9cision strat\u00e9giques et les inf\u00e9rences scientifiques. C&rsquo;est dans ce contexte m\u00e9thodologique rigoureux que le concept de moyenne pond\u00e9r\u00e9e s&rsquo;impose non pas comme un simple raffinement algorithmique, mais comme un imp\u00e9ratif \u00e9pist\u00e9mologique et analytique.<\/p>\n<p>Le syst\u00e8me <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.sas.com\/\">SAS (Statistical Analysis System)<\/a>, d\u00e9velopp\u00e9 initialement pour l&rsquo;analyse agronomique et devenu la norme internationale en biostatistique, en mod\u00e9lisation financi\u00e8re et en actuariat, propose une panoplie d&rsquo;outils particuli\u00e8rement \u00e9tendue pour r\u00e9soudre ces probl\u00e9matiques de pond\u00e9ration. De la puissance d\u00e9clarative du langage ensembliste via la proc\u00e9dure <strong>PROC SQL<\/strong> \u00e0 la granularit\u00e9 s\u00e9quentielle offerte par l&rsquo;\u00e9tape <strong>DATA<\/strong>, en passant par les proc\u00e9dures d&rsquo;agr\u00e9gation statistique optimis\u00e9es telles que <strong>PROC MEANS<\/strong>, <strong>PROC SUMMARY<\/strong> et <strong>PROC SURVEYMEANS<\/strong>, la plateforme logicielle offre une flexibilit\u00e9 sans \u00e9gale. La ma\u00eetrise de ces diff\u00e9rentes approches permet aux statisticiens et ing\u00e9nieurs de donn\u00e9es de concilier exactitude math\u00e9matique, performance computationnelle sur des volumes massifs de donn\u00e9es et auditabilit\u00e9 rigoureuse des cha\u00eenes de traitement.<\/p>\n<p>Le pr\u00e9sent trait\u00e9 propose une exploration exhaustive des paradigmes et des techniques algorithmiques n\u00e9cessaires pour calculer une moyenne pond\u00e9r\u00e9e dans SAS. En articulant les fondements math\u00e9matiques rigoureux de l&rsquo;estimation statistique avec les d\u00e9tails d&rsquo;impl\u00e9mentation logicielle, ce document guide l&rsquo;analyste \u00e0 travers chaque \u00e9tape op\u00e9rationnelle, depuis l&rsquo;ingestion et le contr\u00f4le d&rsquo;int\u00e9grit\u00e9 des vecteurs de donn\u00e9es jusqu&rsquo;\u00e0 l&rsquo;optimisation des flux d&rsquo;entr\u00e9es-sorties sur des m\u00e9ga-bases de donn\u00e9es, en passant par le traitement des valeurs atypiques et l&rsquo;encapsulation macro-programmatique r\u00e9utilisable.<\/p>\n<h2>1. Introduction th\u00e9orique \u00e0 la moyenne pond\u00e9r\u00e9e dans l&rsquo;environnement SAS<\/h2>\n<h3>1.1 D\u00e9finition conceptuelle et pertinence statistique de la pond\u00e9ration<\/h3>\n<p>La distinction \u00e9pist\u00e9mologique entre la moyenne arithm\u00e9tique simple et la moyenne pond\u00e9r\u00e9e r\u00e9side dans l&rsquo;abandon de l&rsquo;hypoth\u00e8se d&rsquo;\u00e9quipond\u00e9ration des unit\u00e9s d&rsquo;observation. Dans une moyenne arithm\u00e9tique classique, chaque observation se voit attribuer implicitement un coefficient unitaire \u00e9quivalent, traduisant le postulat selon lequel chaque point d&rsquo;\u00e9chantillonnage apporte une fraction strictement identique d&rsquo;information sur le param\u00e8tre populationnel sous-jacent. Or, dans les configurations empiriques r\u00e9elles, cette hypoth\u00e8se est fr\u00e9quemment contredite par la r\u00e9alit\u00e9 des processus g\u00e9n\u00e9rateurs de donn\u00e9es. La moyenne pond\u00e9r\u00e9e r\u00e9sout cette limitation en assignant \u00e0 chaque observation un facteur d&rsquo;importance relative, souvent qualifi\u00e9 de poids, qui module sa contribution \u00e0 la synth\u00e8se globale.<\/p>\n<p>L&rsquo;attribution de ces coefficients d&rsquo;importance relative est indispensable dans de multiples domaines de la recherche quantitative. En psychom\u00e9trie et en sciences comportementales, par exemple, lorsqu&rsquo;une mesure agr\u00e8ge diff\u00e9rentes \u00e9preuves cognitives dont la fid\u00e9lit\u00e9 de mesure ou la saturation factorielle varie, l&rsquo;application d&rsquo;un poids proportionnel \u00e0 la variance partag\u00e9e permet d&rsquo;estimer un score composite plus fid\u00e8le \u00e0 la variable latente. De m\u00eame, en \u00e9conom\u00e9trie de la consommation, le calcul d&rsquo;un niveau moyen de prix pour un panier de biens n\u00e9cessite imp\u00e9rativement de pond\u00e9rer le co\u00fbt unitaire de chaque transaction par les volumes de vente r\u00e9els, sous peine de sur\u00e9valuer drastiquement des biens marginaux tr\u00e8s on\u00e9reux mais rarement acquis.<\/p>\n<p>Dans le domaine des sondages stratifi\u00e9s et de la statistique publique, l&rsquo;impact des distorsions d&rsquo;\u00e9chantillonnage sur les estimations non pond\u00e9r\u00e9es s&rsquo;av\u00e8re particuli\u00e8rement d\u00e9vastateur. Lorsqu&rsquo;une sous-population sp\u00e9cifique est intentionnellement sur\u00e9chantillonn\u00e9e dans un plan d&rsquo;\u00e9chantillonnage complexe pour des imp\u00e9ratifs d&rsquo;analyse locale, le calcul d&rsquo;un estimateur moyen national non pond\u00e9r\u00e9 induit un biais de repr\u00e9sentativit\u00e9 majeur. Les estimateurs pond\u00e9r\u00e9s interviennent alors comme un dispositif de calage sur marges et de redressement, r\u00e9\u00e9quilibrant les proportions relatives de chaque strate au sein de l&rsquo;espace inf\u00e9rentiel afin de reproduire fid\u00e8lement la structure sociod\u00e9mographique de la population cible.<\/p>\n<h3>1.2 Architecture logicielle de SAS pour le calcul statistique<\/h3>\n<p>L&rsquo;architecture interne du logiciel SAS est con\u00e7ue pour ex\u00e9cuter des calculs analytiques de grande \u00e9chelle avec une efficacit\u00e9 m\u00e9moire optimale. Au c\u0153ur de cette infrastructure se trouve le moteur de traitement multithread et le syst\u00e8me de gestion de donn\u00e9es orient\u00e9 colonnes et lignes, optimis\u00e9 pour la manipulation de volumes massifs d\u00e9passant les capacit\u00e9s d&rsquo;allocation de la m\u00e9moire vive standard. Contrairement \u00e0 des environnements de prototypage qui n\u00e9cessitent le chargement int\u00e9gral des jeux de donn\u00e9es dans l&rsquo;espace RAM, SAS g\u00e8re des flux d&rsquo;enregistrements s\u00e9quentiels ou index\u00e9s \u00e0 travers des structures de tampons sophistiqu\u00e9es, garantissant la stabilit\u00e9 computationnelle sur des t\u00e9raoctets de donn\u00e9es.<\/p>\n<p>Sur le plan fonctionnel, l&rsquo;environnement SAS repose sur une dualit\u00e9 compl\u00e9mentaire entre l&rsquo;\u00e9tape <strong>DATA<\/strong> proc\u00e9durale et les proc\u00e9dures analytiques pr\u00e9compil\u00e9es dites <strong>PROC<\/strong>. L&rsquo;\u00e9tape <strong>DATA<\/strong> offre un contr\u00f4le granulaire au niveau de chaque ligne de donn\u00e9es au moyen d&rsquo;une boucle implicite de lecture et d&rsquo;\u00e9criture. Ce paradigme it\u00e9ratif permet d&rsquo;impl\u00e9menter des algorithmes sur mesure, d&rsquo;effectuer des tests logiques complexes et de g\u00e9rer des accumulateurs vectoriels avec une pr\u00e9cision extr\u00eame. Parall\u00e8lement, les proc\u00e9dures analytiques telles que <strong>PROC MEANS<\/strong> ou <strong>PROC SUMMARY<\/strong> constituent des modules en langage compil\u00e9, hautement optimis\u00e9s au niveau machine pour ex\u00e9cuter des agr\u00e9gations statistiques multivari\u00e9es avec des performances de traitement in\u00e9gal\u00e9es.<\/p>\n<p>Au sein de cet \u00e9cosyst\u00e8me, la proc\u00e9dure <strong>PROC SQL<\/strong> occupe une position charni\u00e8re en int\u00e9grant le paradigme de l&rsquo;alg\u00e8bre relationnelle normalis\u00e9e ANSI dans le monde analytique SAS. <strong>PROC SQL<\/strong> permet de formuler des requ\u00eates d\u00e9claratives ensemblistes complexes, combinant jointures relationnelles, sous-requ\u00eates imbriqu\u00e9es et fonctions d&rsquo;agr\u00e9gation d&rsquo;une compacit\u00e9 remarquable. Cette coexistence de multiples paradigmes de programmation au sein d&rsquo;une m\u00eame plateforme conf\u00e8re \u00e0 l&rsquo;ing\u00e9nieur SAS la possibilit\u00e9 de choisir l&rsquo;approche la plus adapt\u00e9e selon les contraintes de lisibilit\u00e9 du code, de maintenance technique et de performance temporelle des calculs statistiques.<\/p>\n<h2>2. Fondements math\u00e9matiques et formalisation de la moyenne pond\u00e9r\u00e9e<\/h2>\n<h3>2.1 Formulation alg\u00e9brique standard<\/h3>\n<p>D&rsquo;un point de vue math\u00e9matique formel, soit un \u00e9chantillon de <em>n<\/em> observations issues d&rsquo;une population cible, caract\u00e9ris\u00e9 par un vecteur de variables d&rsquo;int\u00e9r\u00eat <em>Y = (y\u2081, y\u2082, &#8230;, y\u2099)\u1d40<\/em> appartenant \u00e0 l&rsquo;espace r\u00e9el <strong>R\u207f<\/strong>. \u00c0 cet \u00e9chantillon est adjoint un vecteur de facteurs de pond\u00e9ration strictement positifs ou nuls not\u00e9 <em>W = (w\u2081, w\u2082, &#8230;, w\u2099)\u1d40<\/em>. La moyenne pond\u00e9r\u00e9e, d\u00e9sign\u00e9e conventionnellement par la notation <em>y\u0304_w<\/em>, correspond au barycentre des valeurs observ\u00e9es, o\u00f9 chaque point g\u00e9om\u00e9trique est attir\u00e9 vers les zones de concentration des masses relatives de pond\u00e9ration.<\/p>\n<p>L&rsquo;expression sommatoire fondamentale de cet estimateur scalaire s&rsquo;\u00e9nonce comme le rapport du produit scalaire des deux vecteurs sur la somme arithm\u00e9tique des composantes du vecteur de pond\u00e9ration. Formellement, elle se d\u00e9finit par :<\/p>\n<p><em>y\u0304_w = ( \u2211_{i=1}^{n} w_i \u00b7 y_i ) \/ ( \u2211_{i=1}^{n} w_i )<\/em><\/p>\n<p>Dans un formalisme matriciel, cette \u00e9quation s&rsquo;exprime avec une \u00e9l\u00e9gance structurelle sous la forme :<\/p>\n<p><em>y\u0304_w = ( W\u1d40 Y ) \/ ( W\u1d40 <strong>1<\/strong>\u2099 )<\/em><\/p>\n<p>o\u00f9 <strong>1<\/strong>\u2099 repr\u00e9sente un vecteur colonne unitaire de dimension <em>n<\/em>. Cette \u00e9criture met en exergue le processus de normalisation implicite : chaque poids <em>w_i<\/em> peut \u00eatre renormalis\u00e9 en une proportion relative <em>p_i = w_i \/ ( \u2211_{j=1}^{n} w_j )<\/em>, telle que la somme de ces coefficients renormalis\u00e9s soit rigoureusement \u00e9gale \u00e0 l&rsquo;unit\u00e9 (<em>\u2211 p_i = 1<\/em>). L&rsquo;estimateur de la moyenne pond\u00e9r\u00e9e se r\u00e9duit alors \u00e0 une combinaison lin\u00e9aire convexe directe des r\u00e9alisations individuelles.<\/p>\n<p>La validit\u00e9 math\u00e9matique de cette construction exige le respect imp\u00e9ratif de deux conditions d&rsquo;existence : la non-n\u00e9gativit\u00e9 stricte des pond\u00e9rations individuelles (<em>\u2200 i, w_i \u2265 0<\/em>) pour pr\u00e9server la propri\u00e9t\u00e9 de barycentre interne au domaine de d\u00e9finition de <em>Y<\/em>, et la non-nullit\u00e9 de la masse totale de pond\u00e9ration (<em>\u2211_{i=1}^{n} w_i &gt; 0<\/em>), condition n\u00e9cessaire pour pr\u00e9venir l&rsquo;ind\u00e9termination li\u00e9e \u00e0 une division par z\u00e9ro. Lorsque ces postulats sont v\u00e9rifi\u00e9s, l&rsquo;estimateur poss\u00e8de d&rsquo;excellentes propri\u00e9t\u00e9s d&rsquo;invariance d&rsquo;\u00e9chelle par rapport aux poids : la multiplication de l&rsquo;ensemble du vecteur <em>W<\/em> par une constante scalaire positive quelconque laisse la moyenne pond\u00e9r\u00e9e strictement inchang\u00e9e.<\/p>\n<h3>2.2 Types de pond\u00e9rations rencontr\u00e9s en analyse de donn\u00e9es<\/h3>\n<p>L&rsquo;interpr\u00e9tation statistique et le traitement computationnel de la moyenne pond\u00e9r\u00e9e d\u00e9pendent \u00e9troitement de la nature ontologique des poids consid\u00e9r\u00e9s. La litt\u00e9rature sp\u00e9cialis\u00e9e, formalis\u00e9e notamment dans les travaux de <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.wiley.com\/en-us\/Sampling+Techniques%2C+3rd+Edition-p-9780471162407\">William G. Cochran sur la th\u00e9orie des sondages<\/a>, distingue trois grandes familles de pond\u00e9rations aux propri\u00e9t\u00e9s th\u00e9oriques distinctes : les poids de fr\u00e9quence, les poids de sondage probabilistes et les poids analytiques de pr\u00e9cision.<\/p>\n<p>Les poids de fr\u00e9quence, couramment d\u00e9sign\u00e9s sous le terme de <em>frequency weights<\/em> et mobilis\u00e9s via l&rsquo;instruction <strong>FREQ<\/strong> dans SAS, repr\u00e9sentent des multiplicateurs entiers indiquant le nombre exact de fois o\u00f9 une combinaison donn\u00e9e de variables s&rsquo;est manifest\u00e9e \u00e0 l&rsquo;identique dans l&rsquo;\u00e9chantillon. Un enregistrement dot\u00e9 d&rsquo;un poids de fr\u00e9quence de 5 est conceptuellement \u00e9quivalent \u00e0 l&#8217;empilement strict de 5 lignes d&rsquo;observations identiques dans la table de donn\u00e9es. Par cons\u00e9quent, la somme des poids de fr\u00e9quence augmente m\u00e9caniquement la taille d&rsquo;\u00e9chantillon per\u00e7ue (<em>N = \u2211 f_i<\/em>), ce qui r\u00e9duit la variance estim\u00e9e de la moyenne et amplifie la puissance statistique des tests d&rsquo;hypoth\u00e8ses en gonflant artificiellement les degr\u00e9s de libert\u00e9.<\/p>\n<p>\u00c0 l&rsquo;oppos\u00e9, les poids d&rsquo;\u00e9chantillonnage ou poids de conception probabiliste (<em>sampling weights<\/em> ou <em>design weights<\/em>), formalis\u00e9s par l&rsquo;estimateur d&rsquo;Horvitz-Thompson, correspondent \u00e0 l&rsquo;inverse de la probabilit\u00e9 d&rsquo;inclusion de chaque unit\u00e9 dans l&rsquo;\u00e9chantillon (<em>w_i = 1 \/ \u03c0_i<\/em>). Ces poids refl\u00e8tent le volume de la population cible qu&rsquo;une observation donn\u00e9e repr\u00e9sente dans l&rsquo;univers d&rsquo;extrapolation. Enfin, les poids analytiques (<em>analytic weights<\/em> ou <em>reliability weights<\/em>) sont proportionnels \u00e0 l&rsquo;inverse de la variance de la mesure observ\u00e9e (<em>w_i \u221d 1 \/ \u03c3_i\u00b2<\/em>). Utilis\u00e9s dans l&rsquo;estimation par les moindres carr\u00e9s pond\u00e9r\u00e9s (WLS) et la m\u00e9ta-analyse, ils permettent d&rsquo;accorder une autorit\u00e9 sup\u00e9rieure aux observations dont l&rsquo;incertitude est minimale. Le choix erron\u00e9 entre ces paradigmes sous SAS modifie radicalement le calcul de l&rsquo;erreur type, de la matrice de variance-covariance et des intervalles de confiance associ\u00e9s \u00e0 l&rsquo;estimateur moyen.<\/p>\n<h2>3. Pr\u00e9paration et structuration du jeu de donn\u00e9es exp\u00e9rimental dans SAS<\/h2>\n<h3>3.1 D\u00e9claration et instanciation de la table de donn\u00e9es initiale<\/h3>\n<p>Afin de concr\u00e9tiser les d\u00e9marches programmatiques expos\u00e9es tout au long de cet ouvrage, nous construisons un ensemble de donn\u00e9es de r\u00e9f\u00e9rence simulant les transactions commerciales d&rsquo;une entreprise de distribution. Ce jeu de donn\u00e9es synth\u00e9tique, bien que compact pour des imp\u00e9ratifs p\u00e9dagogiques d&rsquo;auditabilit\u00e9 imm\u00e9diate, int\u00e8gre l&rsquo;ensemble des caract\u00e9ristiques structurelles rencontr\u00e9es dans les probl\u00e9matiques industrielles : une variable nominale identifiant des agents commerciaux (<em>sales_rep<\/em>), une variable continue d&rsquo;int\u00e9r\u00eat repr\u00e9sentant le prix unitaire d&rsquo;un article vendu (<em>price<\/em>) et une variable m\u00e9trique d&rsquo;intensit\u00e9 servant de coefficient de pond\u00e9ration, \u00e0 savoir le volume d&rsquo;unit\u00e9s transact\u00e9es (<em>amount<\/em>).<\/p>\n<p>L&rsquo;instanciation de cette table au sein de la biblioth\u00e8que de travail temporaire <strong>WORK<\/strong> est orchestr\u00e9e via une \u00e9tape <strong>DATA<\/strong> int\u00e9grant la directive de saisie int\u00e9gr\u00e9e <strong>DATALINES<\/strong>. La structuration de l&rsquo;\u00e9tape de compilation SAS est explicit\u00e9e ci-dessous :<\/p>\n<p><strong>DATA<\/strong> work.ventes_echantillon;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>INPUT<\/strong> sales_rep $ price amount;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>DATALINES<\/strong>;<br \/>\nA 10 3<br \/>\nA 14 2<br \/>\nA 8 7<br \/>\nB 12 11<br \/>\nB 9 15<br \/>\n;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<p>Dans ce segment d&rsquo;instructions fondamentales, l&rsquo;instruction <strong>INPUT<\/strong> effectue la d\u00e9claration typologique des colonnes. Le modificateur dollar ($) appos\u00e9 \u00e0 la suite du libell\u00e9 <em>sales_rep<\/em> informe le compilateur que cette colonne doit \u00eatre instanci\u00e9e sous la forme d&rsquo;une cha\u00eene de caract\u00e8res de longueur standard, tandis que les identifiants <em>price<\/em> et <em>amount<\/em> sont allou\u00e9s sous la forme de variables num\u00e9riques \u00e0 virgule flottante sur 8 octets en conformit\u00e9 avec le standard IEEE 754. L&rsquo;\u00e9tape de lecture s&rsquo;ex\u00e9cute \u00e0 travers la boucle implicite it\u00e9rant sur chaque enregistrement d\u00e9limit\u00e9 par l&rsquo;espace.<\/p>\n<p>Pour attester de l&rsquo;exactitude de l&rsquo;instanciation physique et contr\u00f4ler l&rsquo;absence d&rsquo;erreurs de troncature ou de conversion de types, la proc\u00e9dure standard <strong>PROC PRINT<\/strong> est ex\u00e9cut\u00e9e avec la clause de num\u00e9rotation d&rsquo;observations :<\/p>\n<p><strong>PROC PRINT<\/strong> data=work.ventes_echantillon noobs;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<p>La sortie g\u00e9n\u00e9r\u00e9e confirme la pr\u00e9sence d&rsquo;une table bidimensionnelle de 5 observations et 3 variables, pr\u00eate pour les op\u00e9rations d&rsquo;analyse descriptive et d&rsquo;agr\u00e9gation matricielle.<\/p>\n<h3>3.2 Contr\u00f4le de l&rsquo;int\u00e9grit\u00e9 structurelle des variables<\/h3>\n<p>Pr\u00e9alablement \u00e0 toute manipulation computationnelle d&rsquo;envergure, une phase rigoureuse d&rsquo;audit de la qualit\u00e9 des donn\u00e9es s&rsquo;av\u00e8re m\u00e9thodologiquement indispensable. Dans le cadre pr\u00e9cis du calcul d&rsquo;une moyenne pond\u00e9r\u00e9e, cette d\u00e9marche d&rsquo;assurance qualit\u00e9 repose sur deux exigences cardinales : la validation de la compl\u00e9tude du vecteur de pond\u00e9ration et la v\u00e9rification des plages de variation admissibles pour la variable cible.<\/p>\n<p>L&rsquo;inspection du vecteur <em>amount<\/em> doit imp\u00e9rativement certifier l&rsquo;absence de valeurs nulles, n\u00e9gatives ou manquantes. Une valeur manquante au sein du vecteur de poids entra\u00eenerait l&rsquo;exclusion automatique de l&rsquo;observation concern\u00e9e ou induirait une ind\u00e9termination dans l&rsquo;op\u00e9rateur de cumul. De m\u00eame, l&rsquo;examen de la distribution empirique de la variable continue <em>price<\/em> permet de rep\u00e9rer d&rsquo;\u00e9ventuelles valeurs aberrantes dont l&rsquo;interaction multiplicative avec un poids d\u00e9mesur\u00e9ment \u00e9lev\u00e9 exercerait un effet de levier excessif sur la valeur finale de l&rsquo;estimateur.<\/p>\n<p>La documentation des m\u00e9tadonn\u00e9es associ\u00e9es \u00e0 ces variables constitue \u00e9galement une bonne pratique essentielle r\u00e9gie par les standards de la recherche internationale. L&rsquo;interrogation des tables de dictionnaires SAS, via la vue syst\u00e8me <em>dictionary.columns<\/em>, permet d&rsquo;extraire dynamiquement les attributs de format, de label et de codage afin de garantir la p\u00e9rennit\u00e9 du pipeline analytique et sa conformit\u00e9 aux audits statistiques les plus stricts.<\/p>\n<h2>4. M\u00e9thode 1 : Calcul global d&rsquo;une moyenne pond\u00e9r\u00e9e via PROC SQL<\/h2>\n<h3>4.1 Syntaxe fondamentale et impl\u00e9mentation de la requ\u00eate SQL<\/h3>\n<p>L&rsquo;utilisation de la proc\u00e9dure <strong>PROC SQL<\/strong> repr\u00e9sente une d\u00e9marche particuli\u00e8rement intuitive et \u00e9l\u00e9gante pour obtenir la moyenne pond\u00e9r\u00e9e globale d&rsquo;un vecteur de donn\u00e9es. En transposant les axiomes de la th\u00e9orie des ensembles et du mod\u00e8le relationnel dans l&rsquo;architecture SAS, cette m\u00e9thode permet de calculer le num\u00e9rateur et le d\u00e9nominateur de l&rsquo;estimateur au sein d&rsquo;une seule et m\u00eame expression scalaire d&rsquo;agr\u00e9gation.<\/p>\n<p>La syntaxe de base exploite la fonction d&rsquo;agr\u00e9gation <strong>SUM()<\/strong> appliqu\u00e9e de fa\u00e7on simultan\u00e9e au produit crois\u00e9 des colonnes et au vecteur de pond\u00e9ration univari\u00e9. La projection s&rsquo;articule comme suit :<\/p>\n<p><strong>PROC SQL<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>CREATE TABLE<\/strong> work.moyenne_ponderee_globale <strong>AS<\/strong><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>SELECT<\/strong> SUM(price * amount) \/ SUM(amount) <strong>AS<\/strong> weighted_avg<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>FROM<\/strong> work.ventes_echantillon;<br \/>\n<strong>QUIT<\/strong>;<\/p>\n<p>Dans ce bloc transactionnel, l&rsquo;instruction <strong>CREATE TABLE<\/strong> ordonne \u00e0 SAS de persister le r\u00e9sultat de la requ\u00eate relationnelle dans une nouvelle table r\u00e9sidente en m\u00e9moire. La clause <strong>SELECT<\/strong> applique l&rsquo;expression d&rsquo;\u00e9valuation arithm\u00e9tique <em>price * amount<\/em> au niveau de chaque ligne d&rsquo;observation avant de soumettre les produits r\u00e9sultants \u00e0 l&rsquo;op\u00e9rateur de sommation ensembliste <strong>SUM()<\/strong>. De mani\u00e8re concomitante, l&rsquo;expression <em>SUM(amount)<\/em> calcule la masse totale des coefficients de pond\u00e9ration. L&rsquo;op\u00e9rateur de division scalaire g\u00e9n\u00e8re alors la valeur synth\u00e9tique finale, \u00e0 laquelle est attribu\u00e9 l&rsquo;alias d&rsquo;exportation <em>weighted_avg<\/em>. L&rsquo;instruction <strong>QUIT<\/strong> cl\u00f4ture la session de la proc\u00e9dure interactive.<\/p>\n<h3>4.2 Application empirique au jeu de donn\u00e9es d&rsquo;exemple<\/h3>\n<p>L&rsquo;application rigoureuse de cette syntaxe \u00e0 notre jeu de donn\u00e9es exp\u00e9rimental permet de d\u00e9composer arithm\u00e9tiquement le r\u00e9sultat obtenu. D\u00e9taillons les calculs interm\u00e9diaires effectu\u00e9s par le processeur d&rsquo;ex\u00e9cution de <strong>PROC SQL<\/strong> :<\/p>\n<ul>\n<li>Observation 1 : 10 \u00d7 3 = 30<\/li>\n<li>Observation 2 : 14 \u00d7 2 = 28<\/li>\n<li>Observation 3 : 8 \u00d7 7 = 56<\/li>\n<li>Observation 4 : 12 \u00d7 11 = 132<\/li>\n<li>Observation 5 : 9 \u00d7 15 = 135<\/li>\n<\/ul>\n<p>La sommation scalaire du num\u00e9rateur produit : <em>30 + 28 + 56 + 132 + 135 = 381<\/em>. Parall\u00e8lement, la sommation des poids associ\u00e9s au d\u00e9nominateur \u00e9tablit le volume total \u00e0 : <em>3 + 2 + 7 + 11 + 15 = 38<\/em>. Le quotient arithm\u00e9tique rigoureux de ces deux grandeurs scalaires est :<\/p>\n<p><em>y\u0304_w = 381 \/ 38 \u2248 9,70588235&#8230;<\/em><\/p>\n<p>L&rsquo;ex\u00e9cution de la proc\u00e9dure de restitution <strong>PROC PRINT<\/strong> confirme cette convergence num\u00e9rique :<\/p>\n<p><strong>PROC PRINT<\/strong> data=work.moyenne_ponderee_globale noobs;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<figure class=\"wpt-preserved-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/wa1.jpg\" alt=\"\" \/><\/figure>\n<p>Pour appr\u00e9hender l&rsquo;int\u00e9r\u00eat fondamental de cette d\u00e9marche pond\u00e9r\u00e9e, il convient de confronter ce r\u00e9sultat \u00e0 la moyenne arithm\u00e9tique simple non pond\u00e9r\u00e9e du vecteur des prix : <em>y\u0304 = (10 + 14 + 8 + 12 + 9) \/ 5 = 53 \/ 5 = 10,6<\/em>. L&rsquo;\u00e9cart quantitatif absolu est de <em>0,89412<\/em> unit\u00e9 mon\u00e9taire. Cette divergence marqu\u00e9e d\u00e9coule directement du fait que les transactions caract\u00e9ris\u00e9es par les prix les plus bas (9 et 8) sont associ\u00e9es aux volumes de transaction les plus consid\u00e9rables (respectivement 15 et 7 unit\u00e9s). Ignorer la pond\u00e9ration conduirait dans ce cas pr\u00e9cis \u00e0 surestimer le prix unitaire moyen effectif des transactions de pr\u00e8s de 9,2 %, introduisant une distorsion \u00e9conomique significative.<\/p>\n<h2>5. D\u00e9composition analytique du processus computationnel sous PROC SQL<\/h2>\n<h3>5.1 Ordre d&rsquo;\u00e9valuation des expressions arithm\u00e9tiques internes<\/h3>\n<p>L&rsquo;\u00e9valuation d&rsquo;une expression combinant des fonctions d&rsquo;agr\u00e9gation scalaires et des op\u00e9rateurs arithm\u00e9tiques \u00e9l\u00e9mentaires sous <strong>PROC SQL<\/strong> r\u00e9pond \u00e0 une hi\u00e9rarchie syntaxique et op\u00e9ratoire stricte, r\u00e9gie par les sp\u00e9cifications du standard ANSI SQL et les optimisations du compilateur de requ\u00eates SAS. Comprendre cette m\u00e9canique s\u00e9quentielle interne est indispensable pour pr\u00e9venir tout comportement inattendu lors de traitements statistiques critiques.<\/p>\n<p>Dans la construction <em>SUM(price * amount) \/ SUM(amount)<\/em>, l&rsquo;interpr\u00e9teur de requ\u00eates d\u00e9compose le calcul en quatre phases distinctes. En premier lieu, lors de la lecture ligne \u00e0 ligne ou du chargement vectoriel en m\u00e9moire tampon, l&rsquo;op\u00e9rateur de multiplication \u00e9l\u00e9mentaire (<em>price * amount<\/em>) est \u00e9valu\u00e9 de mani\u00e8re prioritaire pour chaque enregistrement individuel de la table. Si l&rsquo;un des deux op\u00e9randes pr\u00e9sente une valeur manquante au niveau de la ligne, l&rsquo;expression multiplicative produit une valeur manquante interm\u00e9diaire pour cette ligne sp\u00e9cifique.<\/p>\n<p>Dans un deuxi\u00e8me temps, le premier accumulateur d&rsquo;agr\u00e9gation recueille la somme de ces produits individuels valid\u00e9s, ignorant les valeurs manquantes conform\u00e9ment aux sp\u00e9cifications relationnelles de l&rsquo;op\u00e9rateur <strong>SUM()<\/strong>. Simultan\u00e9ment ou dans un registre parall\u00e8le, le second accumulateur de l&rsquo;expression <em>SUM(amount)<\/em> agr\u00e8ge les composantes individuelles du vecteur de pond\u00e9ration. Une fois la table int\u00e9gralement balay\u00e9e, le moteur arithm\u00e9tique proc\u00e8de enfin \u00e0 la division des deux scalaires accumul\u00e9s au sein du processeur de calcul en virgule flottante double pr\u00e9cision, g\u00e9rant dynamiquement les arrondis conform\u00e9ment aux directives de la norme IEEE 754 avant d&rsquo;\u00e9crire la valeur finale dans le vecteur de sortie.<\/p>\n<h3>5.2 Optimisation des ressources m\u00e9moire lors de la requ\u00eate<\/h3>\n<p>Le principal atout architectural de la formulation ensembliste r\u00e9side dans la capacit\u00e9 du moteur <strong>PROC SQL<\/strong> \u00e0 ex\u00e9cuter cette op\u00e9ration d&rsquo;agr\u00e9gation globale en une seule passe s\u00e9quentielle sur les donn\u00e9es (<em>single-pass processing<\/em>). Le compilateur identifie que la requ\u00eate ne comporte aucune clause d&rsquo;ordonnancement (<em>ORDER BY<\/em>) ni d\u00e9pendance de sous-requ\u00eate corr\u00e9l\u00e9e, ce qui lui permet d&rsquo;instancier des accumulateurs d&rsquo;agr\u00e9gation imm\u00e9diatement lors de l&rsquo;acc\u00e8s aux pages de donn\u00e9es sans avoir \u00e0 r\u00e9\u00e9crire de tables temporaires de travail sur le disque.<\/p>\n<p>Sur le plan de l&rsquo;allocation des tampons m\u00e9moire, SAS alloue par d\u00e9faut un espace contr\u00f4l\u00e9 par l&rsquo;option syst\u00e8me <strong>BUFSIZE<\/strong> et un nombre de tampons d&rsquo;E\/S d\u00e9fini par <strong>BUFNO<\/strong>. Lors de l&rsquo;ex\u00e9cution de la commande d&rsquo;agr\u00e9gation, les blocs de donn\u00e9es sont transf\u00e9r\u00e9s s\u00e9quentiellement depuis le disque dur ou le syst\u00e8me de stockage r\u00e9seau directement vers ces m\u00e9moires tampons d&rsquo;entr\u00e9e. D\u00e8s lors que les multiplications et additions sont r\u00e9percut\u00e9es dans les accumulateurs scalaires centraux, le bloc de m\u00e9moire tampon peut \u00eatre imm\u00e9diatement recycl\u00e9 pour accueillir la page physique suivante. Cette strat\u00e9gie garantit que la consommation de m\u00e9moire vive de la requ\u00eate demeure strictement constante (<em>O(1)<\/em> en complexit\u00e9 spatiale), quel que soit le volume total de la table analys\u00e9e, qu&rsquo;elle comporte cinquante observations ou un demi-milliard d&rsquo;enregistrements.<\/p>\n<h2>6. M\u00e9thode 2 : Calcul de la moyenne pond\u00e9r\u00e9e par sous-groupes avec PROC SQL<\/h2>\n<h3>6.1 Th\u00e9orie de la stratification et de la segmentation statistique<\/h3>\n<p>Dans les d\u00e9marches empiriques avanc\u00e9es, l&rsquo;estimation d&rsquo;un param\u00e8tre global univari\u00e9 s&rsquo;av\u00e8re fr\u00e9quemment insuffisante pour capter l&rsquo;h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 des structures comportementales ou \u00e9conomiques sous-jacentes. La stratification ou la segmentation d&rsquo;un \u00e9chantillon selon une ou plusieurs variables qualitatives cat\u00e9gorielles (telles que le repr\u00e9sentant commercial, le centre hospitalier, le segment de march\u00e9 ou la r\u00e9gion g\u00e9ographique) r\u00e9pond \u00e0 la n\u00e9cessit\u00e9 th\u00e9orique de mod\u00e9liser des distributions conditionnelles locales.<\/p>\n<p>Ce partitionnement de la population repose sur le th\u00e9or\u00e8me fondamental de d\u00e9composition de la variance d&rsquo;Huygens, qui stipule que la variance totale d&rsquo;une variable quantitative se d\u00e9compose rigoureusement en la somme de la variance moyenne intra-groupe (qui mesure la dispersion r\u00e9siduelle au sein de chaque strate) et de la variance inter-groupe (qui mesure l&rsquo;\u00e9cartement des moyennes des diff\u00e9rentes strates par rapport \u00e0 la moyenne g\u00e9n\u00e9rale barycentrique) :<\/p>\n<p><em>Var(Y) = E[Var(Y|X)] + Var(E[Y|X])<\/em><\/p>\n<p>Lorsque des facteurs de pond\u00e9ration interviennent au sein de chaque strate, le calcul conditionnel de la moyenne pond\u00e9r\u00e9e par sous-groupe pr\u00e9serve l&rsquo;int\u00e9grit\u00e9 de la structure hi\u00e9rarchique des donn\u00e9es. L&rsquo;\u00e9valuation locale de l&rsquo;estimateur permet d&rsquo;identifier si les disparit\u00e9s de performance observ\u00e9es globalement r\u00e9sultent d&rsquo;une r\u00e9elle sup\u00e9riorit\u00e9 structurelle d&rsquo;une unit\u00e9 ou simplement d&rsquo;un effet de composition d&rsquo;\u00e9chelle li\u00e9 \u00e0 la distribution diff\u00e9rentielle des volumes ou des poids.<\/p>\n<h3>6.2 Syntaxe de l&rsquo;instruction GROUP BY sous PROC SQL<\/h3>\n<p>La mise en \u0153uvre computationnelle de cette d\u00e9composition par strates s&rsquo;effectue dans <strong>PROC SQL<\/strong> par l&rsquo;adjonction de la clause d&rsquo;agr\u00e9gation factorielle <strong>GROUP BY<\/strong>. Cette instruction modifie la s\u00e9mantique de l&rsquo;\u00e9valuation : au lieu de condenser l&rsquo;int\u00e9gralit\u00e9 de la table dans une cellule scalaire unique, le processeur de requ\u00eates instancie un ensemble d&rsquo;accumulateurs disjoints pour chaque valeur distincte de la variable de regroupement.<\/p>\n<p>La formulation syntaxique canonique pour notre \u00e9tude de cas est structur\u00e9e de la mani\u00e8re suivante :<\/p>\n<p><strong>PROC SQL<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>CREATE TABLE<\/strong> work.moyenne_ponderee_par_groupe <strong>AS<\/strong><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>SELECT<\/strong> sales_rep,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(price * amount) \/ SUM(amount) <strong>AS<\/strong> weighted_avg<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>FROM<\/strong> work.ventes_echantillon<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>GROUP BY<\/strong> sales_rep;<br \/>\n<strong>QUIT<\/strong>;<\/p>\n<p>Dans ce mod\u00e8le de requ\u00eate, la variable <em>sales_rep<\/em> est explicitement s\u00e9lectionn\u00e9e aux c\u00f4t\u00e9s de l&rsquo;estimateur pond\u00e9r\u00e9. Le moteur SQL partitionne conceptuellement la table d&rsquo;entr\u00e9e en sous-ensembles homog\u00e8nes correspondant aux modalit\u00e9s identifi\u00e9es (dans notre exemple, les repr\u00e9sentants A et B), ex\u00e9cute l&rsquo;\u00e9valuation arithm\u00e9tique de mani\u00e8re isol\u00e9e au sein de chaque partition, puis compile une table de sortie r\u00e9capitulative contenant exactement un enregistrement par niveau de la variable de segmentation.<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/wa2.jpg\" alt=\"\" \/><\/figure>\n<h3>6.3 Interpr\u00e9tation acad\u00e9mique des r\u00e9sultats par groupe<\/h3>\n<p>L&rsquo;ex\u00e9cution de la proc\u00e9dure de contr\u00f4le tabulaire <strong>PROC PRINT<\/strong> met en lumi\u00e8re la distribution diff\u00e9rentielle des moyennes pond\u00e9r\u00e9es selon le repr\u00e9sentant commercial :<\/p>\n<p><strong>PROC PRINT<\/strong> data=work.moyenne_ponderee_par_groupe noobs;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<p>L&rsquo;analyse des valeurs num\u00e9riques obtenues r\u00e9v\u00e8le des \u00e9carts remarquables qui m\u00e9ritent une d\u00e9composition formelle :<\/p>\n<p>Pour le repr\u00e9sentant commercial A, la somme des produits montant par prix est : <em>(10 \u00d7 3) + (14 \u00d7 2) + (8 \u00d7 7) = 30 + 28 + 56 = 114<\/em>. La somme des coefficients de pond\u00e9ration associ\u00e9s est : <em>3 + 2 + 7 = 12<\/em>. La moyenne pond\u00e9r\u00e9e conditionnelle s&rsquo;\u00e9l\u00e8ve donc rigoureusement \u00e0 :<\/p>\n<p><em>y\u0304_{w, A} = 114 \/ 12 = 9,5000<\/em><\/p>\n<p>Pour le repr\u00e9sentant commercial B, la somme des produits est : <em>(12 \u00d7 11) + (9 \u00d7 15) = 132 + 135 = 267<\/em>. La somme des poids correspondants est : <em>11 + 15 = 26<\/em>. L&rsquo;estimateur pond\u00e9r\u00e9 conditionnel s&rsquo;\u00e9tablit alors \u00e0 :<\/p>\n<p><em>y\u0304_{w, B} = 267 \/ 26 \u2248 10,2692<\/em><\/p>\n<p>La comparaison de ces indicateurs pond\u00e9r\u00e9s avec les moyennes arithm\u00e9tiques simples respectives illustre l&rsquo;importance m\u00e9thodologique de l&rsquo;analyse par sous-groupe. Pour le commercial A, la moyenne arithm\u00e9tique simple est de <em>(10 + 14 + 8) \/ 3 = 10,6667<\/em>, soit une valeur sensiblement sup\u00e9rieure \u00e0 sa moyenne pond\u00e9r\u00e9e (9,5000). Cette baisse significative s&rsquo;explique par le poids pr\u00e9dominant de la transaction \u00e0 8 unit\u00e9s mon\u00e9taires, qui concentre \u00e0 elle seule plus de 58 % du volume d&rsquo;activit\u00e9 du repr\u00e9sentant. Pour le commercial B, la moyenne simple est de <em>(12 + 9) \/ 2 = 10,5000<\/em>, comparativement \u00e0 une moyenne pond\u00e9r\u00e9e de 10,2692. En neutralisant les biais d&rsquo;agr\u00e9gation interne, l&rsquo;analyste met en \u00e9vidence que l&rsquo;\u00e9cart de tarification effective entre les deux agents n&rsquo;est que de <em>0,7692<\/em> unit\u00e9 mon\u00e9taire en faveur du repr\u00e9sentant B, alors qu&rsquo;une comparaison sommaire des moyennes brutes non pond\u00e9r\u00e9es concluait erron\u00e9ment \u00e0 une tarification moyenne plus \u00e9lev\u00e9e pour le repr\u00e9sentant A.<\/p>\n<h2>7. Gestion des donn\u00e9es manquantes et des valeurs atypiques dans la pond\u00e9ration<\/h2>\n<h3>7.1 Comportement de PROC SQL face aux valeurs NULL<\/h3>\n<p>L&rsquo;irruption de donn\u00e9es manquantes (d\u00e9sign\u00e9es sous le concept de <em>NULL<\/em> en langage SQL standard et mat\u00e9rialis\u00e9es par un point <em>.<\/em> pour les grandeurs num\u00e9riques dans l&rsquo;environnement SAS) pose des d\u00e9fis th\u00e9oriques et algorithmiques majeurs lors du calcul d&rsquo;agr\u00e9gats statistiques pond\u00e9r\u00e9s. La rigueur analytique impose d&rsquo;expliciter le traitement r\u00e9serv\u00e9 \u00e0 ces occurrences au sein du processeur de requ\u00eates.<\/p>\n<p>Sous <strong>PROC SQL<\/strong>, le comportement des fonctions d&rsquo;agr\u00e9gation d&rsquo;ensemble vis-\u00e0-vis des donn\u00e9es manquantes ob\u00e9it aux r\u00e8gles de la logique ternaire relationnelle :<\/p>\n<ul>\n<li>Si la variable d&rsquo;int\u00e9r\u00eat <em>price<\/em> pr\u00e9sente une valeur manquante sur une ligne donn\u00e9e alors que son poids <em>amount<\/em> est document\u00e9, le produit arithm\u00e9tique <em>price * amount<\/em> produit une valeur manquante interm\u00e9diaire. L&rsquo;op\u00e9rateur <strong>SUM()<\/strong> omet cette observation manquante au num\u00e9rateur, mais l&rsquo;expression du d\u00e9nominateur <em>SUM(amount)<\/em> int\u00e9grerait quant \u00e0 elle le poids de cette ligne si elle \u00e9tait calcul\u00e9e ind\u00e9pendamment sur l&rsquo;ensemble de la table ! Cette asym\u00e9trie produirait une sous-estimation syst\u00e9matique dramatique de la moyenne pond\u00e9r\u00e9e en gonflant le d\u00e9nominateur sans apport au num\u00e9rateur.<\/li>\n<li>De m\u00eame, si la valeur de pond\u00e9ration <em>amount<\/em> est manquante, le produit du num\u00e9rateur est converti en valeur manquante et ignor\u00e9.<\/li>\n<\/ul>\n<p>Pour immuniser le code contre ce risque d&rsquo;asym\u00e9trie structurelle, il est imp\u00e9ratif d&rsquo;int\u00e9grer une clause de filtrage <strong>WHERE<\/strong> stricte assurant l&rsquo;alignement bivari\u00e9 complet des deux colonnes :<\/p>\n<p><strong>PROC SQL<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>CREATE TABLE<\/strong> work.moyenne_nettoyee <strong>AS<\/strong><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>SELECT<\/strong> sales_rep,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(price * amount) \/ SUM(amount) <strong>AS<\/strong> weighted_avg<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>FROM<\/strong> work.ventes_echantillon<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>WHERE<\/strong> price <strong>IS NOT NULL<\/strong> <strong>AND<\/strong> amount <strong>IS NOT NULL<\/strong><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>GROUP BY<\/strong> sales_rep;<br \/>\n<strong>QUIT<\/strong>;<\/p>\n<p>L&rsquo;application pr\u00e9alable de ce pr\u00e9dicat bool\u00e9en garantit que seules les observations poss\u00e9dant une int\u00e9grit\u00e9 bivari\u00e9e conjointe participent \u00e0 la formation simultan\u00e9e des agr\u00e9gats du num\u00e9rateur et du d\u00e9nominateur, \u00e9liminant tout biais d&rsquo;attrition asym\u00e9trique au sein du journal SAS.<\/p>\n<h3>7.2 Traitement des poids n\u00e9gatifs ou nuls<\/h3>\n<p>D&rsquo;un point de vue m\u00e9thodologique, l&rsquo;attribution d&rsquo;un coefficient de pond\u00e9ration n\u00e9gatif \u00e0 une observation constitue une anomalie logique dans la quasi-totalit\u00e9 des cadres d&rsquo;\u00e9chantillonnage probabiliste. Un poids n\u00e9gatif d\u00e9stabilise la positivit\u00e9 de la mesure spectrale et peut conduire \u00e0 des situations aberrantes o\u00f9 la moyenne pond\u00e9r\u00e9e calcul\u00e9e s&rsquo;\u00e9tablit en dehors de l&rsquo;enveloppe convexe d\u00e9limit\u00e9e par le minimum et le maximum des observations de l&rsquo;\u00e9chantillon. De surcro\u00eet, si la somme arithm\u00e9tique des poids converge vers z\u00e9ro, l&rsquo;op\u00e9ration de division aboutit \u00e0 un d\u00e9bordement arithm\u00e9tique ou \u00e0 une valeur manquante non d\u00e9finie.<\/p>\n<p>La pr\u00e9vention algorithmique de ces \u00e9cueils op\u00e9rationnels requiert l&rsquo;int\u00e9gration de clauses conditionnelles utilisant l&rsquo;expression <strong>CASE WHEN<\/strong> au sein de la requ\u00eate <strong>PROC SQL<\/strong>, ou la formulation d&rsquo;un filtre restrictif sur la positivit\u00e9 stricte :<\/p>\n<p><strong>PROC SQL<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>CREATE TABLE<\/strong> work.moyenne_ponderee_securisee <strong>AS<\/strong><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>SELECT<\/strong> sales_rep,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>CASE<\/strong><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>WHEN<\/strong> SUM(CASE WHEN amount &gt; 0 THEN amount ELSE 0 END) &gt; 0<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>THEN<\/strong> SUM(CASE WHEN amount &gt; 0 THEN price * amount ELSE 0 END) \/<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(CASE WHEN amount &gt; 0 THEN amount ELSE 0 END)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>ELSE<\/strong> .<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>END<\/strong> <strong>AS<\/strong> weighted_avg<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>FROM<\/strong> work.ventes_echantillon<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>GROUP BY<\/strong> sales_rep;<br \/>\n<strong>QUIT<\/strong>;<\/p>\n<p>Cette architecture d\u00e9fensive \u00e9limine toute instabilit\u00e9 num\u00e9rique : si la somme des poids positifs d&rsquo;une strate s&rsquo;av\u00e8re nulle ou n\u00e9gative, l&rsquo;estimateur bascule \u00e9l\u00e9gamment vers une valeur manquante contr\u00f4l\u00e9e sans interrompre la cha\u00eene de production du traitement par lot.<\/p>\n<h2>8. Approche alternative : Impl\u00e9mentation via l&rsquo;\u00e9tape DATA et l&rsquo;instruction RETAIN<\/h2>\n<h3>8.1 Algorithme s\u00e9quentiel de cumul it\u00e9ratif<\/h3>\n<p>Bien que l&rsquo;approche relationnelle sous <strong>PROC SQL<\/strong> se distingue par sa concision d\u00e9clarative, la m\u00e9thode historique reposant sur l&rsquo;\u00e9tape <strong>DATA<\/strong> s\u00e9quentielle demeure l&rsquo;une des techniques fondamentales du r\u00e9pertoire SAS. Elle offre un contr\u00f4le d\u00e9terministe absolu sur la m\u00e9moire, particuli\u00e8rement appr\u00e9ci\u00e9 lors de l&rsquo;int\u00e9gration d&rsquo;algorithmes m\u00e9tier hautement param\u00e9tr\u00e9s ou de calculs n\u00e9cessitant des structures de r\u00e9tention inter-enregistrements.<\/p>\n<p>L&rsquo;impl\u00e9mentation de cette logique requiert imp\u00e9rativement l&rsquo;ordonnancement pr\u00e9alable des observations selon la variable de classification \u00e0 l&rsquo;aide de la proc\u00e9dure <strong>PROC SORT<\/strong>, condition indispensable \u00e0 l&rsquo;activation des variables automatiques de franchissement de fronti\u00e8res cat\u00e9gorielles <em>FIRST.byvariable<\/em> et <em>LAST.byvariable<\/em> :<\/p>\n<p><strong>PROC SORT<\/strong> data=work.ventes_echantillon out=work.ventes_triees;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>BY<\/strong> sales_rep;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<p>Une fois la table ordonn\u00e9e physiquement selon la cl\u00e9 primaire de stratification, l&rsquo;\u00e9tape <strong>DATA<\/strong> mobilise l&rsquo;instruction <strong>RETAIN<\/strong> pour maintenir l&rsquo;\u00e9tat des accumulateurs du num\u00e9rateur et du d\u00e9nominateur d&rsquo;une it\u00e9ration \u00e0 la suivante :<\/p>\n<p><strong>DATA<\/strong> work.moyenne_ponderee_data_step (keep=sales_rep weighted_avg);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>SET<\/strong> work.ventes_triees;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>BY<\/strong> sales_rep;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>RETAIN<\/strong> sum_produits sum_poids 0;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;\/* Initialisation des accumulateurs au d\u00e9but de chaque sous-groupe *\/<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>IF<\/strong> FIRST.sales_rep <strong>THEN DO<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum_produits = 0;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum_poids = 0;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>END<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;\/* Cumul conditionnel *\/<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>IF<\/strong> NOT MISSING(price) AND NOT MISSING(amount) AND amount &gt; 0 <strong>THEN DO<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum_produits + (price * amount);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum_poids + amount;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>END<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;\/* Calcul final et \u00e9mission du r\u00e9sultat \u00e0 la derni\u00e8re ligne du groupe *\/<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>IF<\/strong> LAST.sales_rep <strong>THEN DO<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>IF<\/strong> sum_poids &gt; 0 <strong>THEN<\/strong> weighted_avg = sum_produits \/ sum_poids;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>ELSE<\/strong> weighted_avg = .;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>OUTPUT<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>END<\/strong>;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<p>Dans ce segment algorithmique, l&rsquo;instruction de somme implicite <em>variable + expression<\/em> assure automatiquement la persistance de l&rsquo;\u00e9tat sans \u00eatre r\u00e9initialis\u00e9e \u00e0 une valeur manquante au passage du vecteur de travail (<em>Program Data Vector<\/em> &#8211; PDV). Le bloc conditionnel adoss\u00e9 au marqueur <strong>FIRST.sales_rep<\/strong> remet \u00e0 z\u00e9ro les accumulateurs \u00e0 l&rsquo;entr\u00e9e de chaque nouvelle strate, tandis que la directive <strong>LAST.sales_rep<\/strong> d\u00e9clenche la division barycentrique et l&rsquo;instruction <strong>OUTPUT<\/strong>, expulsant l&rsquo;enregistrement synth\u00e9tis\u00e9 dans la table de destination.<\/p>\n<h3>8.2 Avantages programmatiques compar\u00e9s de l&rsquo;\u00e9tape DATA<\/h3>\n<p>L&rsquo;int\u00e9r\u00eat de l&rsquo;\u00e9tape <strong>DATA<\/strong> par rapport aux requ\u00eates <strong>PROC SQL<\/strong> r\u00e9side dans son aptitude \u00e0 effectuer des calculs s\u00e9quentiels d&rsquo;une complexit\u00e9 algorithmique arbitraire sans n\u00e9cessiter de lectures r\u00e9cursives de la table. Il devient ais\u00e9 d&rsquo;int\u00e9grer dans la m\u00eame passe de lecture des calculs de moyennes pond\u00e9r\u00e9es glissantes, des v\u00e9rifications conditionnelles multi-colonnes, la gestion de compteurs de contr\u00f4le ou encore l&rsquo;\u00e9valuation conjointe d&rsquo;indicateurs de dispersion sur mesure.<\/p>\n<p>En mati\u00e8re d&rsquo;efficience brute, lorsque les tables de donn\u00e9es sont volumineuses mais d\u00e9j\u00e0 tri\u00e9es physiquement sur disque (ou partitionn\u00e9es selon l&rsquo;architecture du syst\u00e8me de fichiers), l&rsquo;\u00e9tape <strong>DATA<\/strong> surpasse g\u00e9n\u00e9ralement <strong>PROC SQL<\/strong>. Elle \u00e9limine la surcharge li\u00e9e \u00e0 la phase d&rsquo;optimisation de requ\u00eates relationnelles et r\u00e9duit l&#8217;empreinte m\u00e9moire \u00e0 la stricte dimension des variables conserv\u00e9es dans le vecteur PDV. Toutefois, elle impose une discipline de programmation plus rigoureuse, mat\u00e9rialis\u00e9e par l&rsquo;obligation absolue de trier pr\u00e9alablement les donn\u00e9es et de g\u00e9rer manuellement la r\u00e9initialisation des variables d&rsquo;\u00e9tat.<\/p>\n<h2>9. Calcul de moyennes pond\u00e9r\u00e9es via les proc\u00e9dures statistiques natives : PROC MEANS et PROC SUMMARY<\/h2>\n<h3>9.1 Utilisation de l&rsquo;instruction WEIGHT dans PROC MEANS<\/h3>\n<p>Les proc\u00e9dures statistiques compil\u00e9es du noyau SAS, au premier rang desquelles figurent <strong>PROC MEANS<\/strong> et sa jumelle fonctionnelle <strong>PROC SUMMARY<\/strong>, constituent les vecteurs d&rsquo;ex\u00e9cution privil\u00e9gi\u00e9s pour le calcul standardis\u00e9 d&rsquo;indicateurs descriptifs pond\u00e9r\u00e9s. Con\u00e7ues sp\u00e9cifiquement pour l&rsquo;agr\u00e9gation num\u00e9rique de haute intensit\u00e9, elles int\u00e8grent nativement des algorithmes optimis\u00e9s pour minimiser les erreurs d&rsquo;arrondi sur les sommes de grands nombres.<\/p>\n<p>Le param\u00e9trage d&rsquo;une analyse pond\u00e9r\u00e9e sous <strong>PROC MEANS<\/strong> repose sur la d\u00e9claration explicite de l&rsquo;instruction <strong>WEIGHT<\/strong>. Il est ici fondamental de rappeler la divergence conceptuelle absolue entre l&rsquo;instruction <strong>WEIGHT<\/strong> et l&rsquo;instruction <strong>FREQ<\/strong> :<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/wa3.jpg\" alt=\"\" \/><\/figure>\n<ul>\n<li>L&rsquo;instruction <strong>FREQ<\/strong> indique au compilateur que la variable associ\u00e9e repr\u00e9sente un compte d&rsquo;occurrences enti\u00e8res d&rsquo;unit\u00e9s d&rsquo;observation rigoureusement identiques. Elle modifie directement les degr\u00e9s de libert\u00e9 en posant <em>N = \u2211 freq_i<\/em>, ce qui impacte le calcul de l&rsquo;erreur type de la moyenne : <em>SE = s \/ \u221aN<\/em>.<\/li>\n<li>L&rsquo;instruction <strong>WEIGHT<\/strong>, quant \u00e0 elle, d\u00e9finit des pond\u00e9rations analytiques ou de pr\u00e9cision proportionnelle. Elle utilise la valeur de pond\u00e9ration pour pond\u00e9rer le calcul de la moyenne (<em>y\u0304_w<\/em>) et de la variance, mais ne modifie pas artificiellement le nombre nominal d&rsquo;observations ind\u00e9pendantes de l&rsquo;\u00e9chantillon pour le calcul des degr\u00e9s de libert\u00e9 standard, pr\u00e9servant ainsi l&rsquo;int\u00e9grit\u00e9 inf\u00e9rentielle des tests d&rsquo;hypoth\u00e8ses univari\u00e9s.<\/li>\n<\/ul>\n<p>La syntaxe canonique d&rsquo;extraction vers une table p\u00e9renne sans affichage \u00e0 l&rsquo;\u00e9cran est formul\u00e9e ainsi :<\/p>\n<p><strong>PROC MEANS<\/strong> data=work.ventes_echantillon noprint;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>VAR<\/strong> price;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>WEIGHT<\/strong> amount;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>OUTPUT OUT<\/strong>=work.moyenne_ponderee_proc_means<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mean=weighted_avg<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sumwgt=total_poids;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<p>Dans ce module d&rsquo;instructions, la clause <strong>VAR<\/strong> identifie la variable quantitative cible, <strong>WEIGHT<\/strong> d\u00e9signe le vecteur des facteurs d&rsquo;\u00e9chelle, et l&rsquo;instruction <strong>OUTPUT OUT<\/strong> g\u00e9n\u00e8re une table optimis\u00e9e contenant la statistique d&rsquo;int\u00e9r\u00eat sous le libell\u00e9 <em>weighted_avg<\/em> ainsi que la somme cumul\u00e9e des poids via le mot-cl\u00e9 <em>sumwgt<\/em>.<\/p>\n<h3>9.2 Application par sous-groupes avec l&rsquo;instruction CLASS ou BY<\/h3>\n<p>L&rsquo;extension de <strong>PROC MEANS<\/strong> au calcul par sous-groupes peut \u00eatre r\u00e9alis\u00e9e selon deux strat\u00e9gies distinctes : l&rsquo;instruction <strong>CLASS<\/strong> ou l&rsquo;instruction <strong>BY<\/strong>. Chacune r\u00e9pond \u00e0 des contraintes computationnelles diff\u00e9rentes.<\/p>\n<p>L&rsquo;utilisation de l&rsquo;instruction <strong>CLASS<\/strong> constitue l&rsquo;approche la plus souple et performante sur les jeux de donn\u00e9es de taille mod\u00e9r\u00e9e \u00e0 grande, car elle ne requiert aucun tri physique pr\u00e9alable des donn\u00e9es :<\/p>\n<p><strong>PROC MEANS<\/strong> data=work.ventes_echantillon noprint nway;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>CLASS<\/strong> sales_rep;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>VAR<\/strong> price;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>WEIGHT<\/strong> amount;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>OUTPUT OUT<\/strong>=work.moyenne_par_classe (drop=_type_ _freq_)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mean=weighted_avg;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<p>L&rsquo;option <strong>NWAY<\/strong> force la proc\u00e9dure \u00e0 ne restituer que le niveau d&rsquo;interaction le plus fin d\u00e9fini par les variables de classe, occultant la ligne de synth\u00e8se g\u00e9n\u00e9rale (qui correspondrait \u00e0 l&rsquo;agr\u00e9gat global non segment\u00e9). En interne, SAS emploie une table de hachage ultra-rapide en m\u00e9moire vive pour indexer dynamiquement les modalit\u00e9s de la variable cat\u00e9gorielle <em>sales_rep<\/em> et y agr\u00e9ger les produits et poids correspondants.<\/p>\n<p>\u00c0 l&rsquo;inverse, si le volume des donn\u00e9es d\u00e9passe l&rsquo;espace de la m\u00e9moire vive allou\u00e9e pour la table de hachage, l&rsquo;instruction <strong>BY<\/strong> coupl\u00e9e \u00e0 une \u00e9tape <strong>PROC SORT<\/strong> devient incontournable. Elle garantit un traitement s\u00e9quentiel par blocs sans aucun risque de saturation de la m\u00e9moire vive (<em>out-of-memory error<\/em>), assurant une fiabilit\u00e9 parfaite pour l&rsquo;analyse de m\u00e9ga-donn\u00e9es en environnement de production.<\/p>\n<h2>10. Extension aux protocoles d&rsquo;enqu\u00eates complexes avec PROC SURVEYMEANS<\/h2>\n<h3>10.1 N\u00e9cessit\u00e9 de la correction de sondage en recherche empirique<\/h3>\n<p>Dans le champ m\u00e9thodologique des enqu\u00eates probabilistes et de la recherche en sant\u00e9 publique, les donn\u00e9es observ\u00e9es ne satisfont presque jamais \u00e0 l&rsquo;hypoth\u00e8se canonique d&rsquo;ind\u00e9pendance et d&rsquo;identique distribution (i.i.d.). Les plans de sondage r\u00e9els comportent fr\u00e9quemment des caract\u00e9ristiques de stratification a priori, d&rsquo;\u00e9chantillonnage en grappes (<em>clustering<\/em>) \u00e0 plusieurs degr\u00e9s et d&rsquo;in\u00e9gales probabilit\u00e9s d&rsquo;inclusion corrig\u00e9es par des poids de calage post-stratificatoire.<\/p>\n<p>L&rsquo;application d&rsquo;une proc\u00e9dure conventionnelle telle que <strong>PROC MEANS<\/strong> ou <strong>PROC SQL<\/strong> \u00e0 ces environnements produit une estimation ponctuelle correcte de la moyenne pond\u00e9r\u00e9e, mais g\u00e9n\u00e8re une estimation totalement biais\u00e9e de l&rsquo;erreur type et de la variance de l&rsquo;estimateur. En effet, l&rsquo;effet d&rsquo;\u00e9chantillonnage en grappes induit une corr\u00e9lation intra-classe positive qui r\u00e9duit la quantit\u00e9 r\u00e9elle d&rsquo;information ind\u00e9pendante contenue dans l&rsquo;\u00e9chantillon. Utiliser la formule classique de la variance conduit alors \u00e0 sous-estimer syst\u00e9matiquement les erreurs types r\u00e9elles, ce qui gonfle artificiellement le taux d&rsquo;erreur de premi\u00e8re esp\u00e8ce (rejet intempestif de l&rsquo;hypoth\u00e8se nulle d&rsquo;\u00e9galit\u00e9 des moyennes) et produit des intervalles de confiance ind\u00fbment \u00e9troits.<\/p>\n<p>Pour r\u00e9soudre cette d\u00e9faillance th\u00e9orique majeure, SAS int\u00e8gre la proc\u00e9dure sp\u00e9cialis\u00e9e <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/support.sas.com\/documentation\/onlinedoc\/stat\/142\/surveymeans.pdf\">PROC SURVEYMEANS<\/a>, capable d&rsquo;estimer sans biais les variances asymptotiques sous des plans de sondage complexes au moyen des techniques de lin\u00e9arisation par s\u00e9rie de Taylor ou de r\u00e9\u00e9chantillonnage r\u00e9p\u00e9t\u00e9 (<em>jackknife<\/em>, <em>bootstrap<\/em> ou r\u00e9plication \u00e9quilibr\u00e9e r\u00e9p\u00e9t\u00e9e &#8211; BRR).<\/p>\n<h3>10.2 Param\u00e9trage de la proc\u00e9dure PROC SURVEYMEANS<\/h3>\n<p>La mise en \u0153uvre de <strong>PROC SURVEYMEANS<\/strong> requiert la sp\u00e9cification formelle de la structure de conception du plan d&rsquo;\u00e9chantillonnage au moyen d&rsquo;instructions d\u00e9di\u00e9es r\u00e9gissant les grappes, les strates et les coefficients d&rsquo;expansion :<\/p>\n<p><strong>PROC SURVEYMEANS<\/strong> data=work.ventes_echantillon varmethod=taylor;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>VAR<\/strong> price;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>WEIGHT<\/strong> amount;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>DOMAIN<\/strong> sales_rep;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>ODS OUTPUT<\/strong> Domain=work.resultats_enquete_domaine;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<p>Dans cette architecture de commande, l&rsquo;instruction <strong>WEIGHT<\/strong> d\u00e9clare le vecteur des poids de sondage probabilistes. L&rsquo;instruction fondamentale <strong>DOMAIN<\/strong> permet d&rsquo;ex\u00e9cuter l&rsquo;analyse sous-populationnelle par agent commercial sans recourir \u00e0 un filtrage externe ou \u00e0 une instruction <strong>BY<\/strong>. En statistique des sondages, le calcul d&rsquo;un estimateur moyen sur une sous-population dont la taille est elle-m\u00eame une variable al\u00e9atoire n\u00e9cessite imp\u00e9rativement d&rsquo;int\u00e9grer la variabilit\u00e9 stochastique du d\u00e9nominateur d&rsquo;\u00e9chantillonnage dans le calcul de la variance par lin\u00e9arisation de Taylor, d\u00e9marche que seule l&rsquo;instruction <strong>DOMAIN<\/strong> ex\u00e9cute avec exactitude th\u00e9orique.<\/p>\n<p>La table r\u00e9sultante export\u00e9e via le syst\u00e8me ODS (<em>Output Delivery System<\/em>) met \u00e0 la disposition des chercheurs non seulement la moyenne pond\u00e9r\u00e9e sans biais, mais \u00e9galement l&rsquo;erreur type asymptotique corrig\u00e9e de l&rsquo;effet de plan (<em>design effect<\/em>), les degr\u00e9s de libert\u00e9 r\u00e9els de l&rsquo;enqu\u00eate et les bornes des intervalles de confiance \u00e0 95 % respectant rigoureusement la m\u00e9thodologie de l&rsquo;inf\u00e9rence en population finie.<\/p>\n<h2>11. Optimisation des performances et robustesse du code pour les m\u00e9ga-donn\u00e9es<\/h2>\n<h3>11.1 Indexation et strat\u00e9gies de traitement en m\u00e9moire<\/h3>\n<p>Lorsque le volume des tables de donn\u00e9es atteint plusieurs dizaines de gigaoctets ou franchit le cap des centaines de millions d&rsquo;enregistrements, les temps de r\u00e9ponse machine et la charge des syst\u00e8mes d&rsquo;entr\u00e9es-sorties deviennent les contraintes pr\u00e9pond\u00e9rantes de l&rsquo;ing\u00e9nierie statistique. L&rsquo;optimisation algorithmique exige alors la mise en place d&rsquo;architectures de stockage optimis\u00e9es et le calibrage fin des param\u00e8tres d&rsquo;ex\u00e9cution du moteur SAS.<\/p>\n<p>L&rsquo;une des strat\u00e9gies fondamentales r\u00e9side dans la cr\u00e9ation d&rsquo;index simples ou composites sur les variables de regroupement. Un index structur\u00e9 sous forme d&rsquo;arbre B-tree (<em>balanced tree<\/em>) acc\u00e9l\u00e8re consid\u00e9rablement le traitement de la clause <strong>GROUP BY<\/strong> sous <strong>PROC SQL<\/strong> ou de l&rsquo;instruction <strong>CLASS<\/strong> sous <strong>PROC MEANS<\/strong>, en dispensant le syst\u00e8me de balayer l&rsquo;int\u00e9gralit\u00e9 des enregistrements dans un ordre dispers\u00e9 :<\/p>\n<p><strong>PROC DATASETS<\/strong> library=work nolist;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>MODIFY<\/strong> ventes_echantillon;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>INDEX CREATE<\/strong> sales_rep;<br \/>\n<strong>QUIT<\/strong>;<\/p>\n<p>Parall\u00e8lement \u00e0 l&rsquo;indexation, le calibrage des options syst\u00e8me de gestion des flux d&rsquo;E\/S au niveau de la session SAS s&rsquo;av\u00e8re d\u00e9terminant :<\/p>\n<p><strong>OPTIONS<\/strong> bufsize=64k bufno=32;<\/p>\n<p>L&rsquo;extension de la taille des pages m\u00e9moire via <strong>BUFSIZE=64K<\/strong> permet de charger de vastes blocs s\u00e9quentiels de lignes en une seule op\u00e9ration physique de lecture sur le disque de stockage, r\u00e9duisant drastiquement le nombre d&rsquo;interruptions d&rsquo;entr\u00e9es-sorties mat\u00e9rielles. L&rsquo;\u00e9l\u00e9vation conjointe du nombre de tampons par <strong>BUFNO=32<\/strong> fluidifie le pipeline de donn\u00e9es en permettant au syst\u00e8me de pr\u00e9charger les blocs suivants en m\u00e9moire vive pendant que le processeur ex\u00e9cute les op\u00e9rations multiplicatives et de sommation sur le bloc courant.<\/p>\n<p>Il convient \u00e9galement d&rsquo;accorder une vigilance extr\u00eame \u00e0 la pr\u00e9cision des types num\u00e9riques. Sous SAS, les variables num\u00e9riques sont toutes stock\u00e9es par d\u00e9faut sous forme de nombres en virgule flottante double pr\u00e9cision sur 8 octets. R\u00e9duire artificiellement la longueur de stockage des variables d&rsquo;accumulation (<em>LENGTH sum_produits 4;<\/em>) dans une vaine tentative d&rsquo;\u00e9conomiser de l&rsquo;espace disque constitue une erreur technique critique : cela r\u00e9duirait la mantisse \u00e0 une pr\u00e9cision insuffisante, g\u00e9n\u00e9rant de graves erreurs de troncature cumulative lors de l&rsquo;addition de millions de produits pond\u00e9r\u00e9s.<\/p>\n<h3>11.2 Encapsulation dans une macro-proc\u00e9dure r\u00e9utilisable<\/h3>\n<p>Afin de satisfaire aux imp\u00e9ratifs d&rsquo;industrialisation logicielle, de reproductibilit\u00e9 scientifique et de maintenance applicative, il est recommand\u00e9 d&rsquo;encapsuler la cha\u00eene analytique au sein d&rsquo;une macro SAS modulaire et param\u00e9tr\u00e9e. Cette abstraction macro-programmatique doit int\u00e9grer des m\u00e9canismes de validation pr\u00e9ventive de l&rsquo;environnement d&rsquo;ex\u00e9cution, garantissant l&rsquo;existence des jeux de donn\u00e9es, la conformit\u00e9 typologique des colonnes et la tra\u00e7abilit\u00e9 des ex\u00e9cutions.<\/p>\n<p>Le module de r\u00e9f\u00e9rence suivant illustre la conception d&rsquo;une macro robuste d\u00e9di\u00e9e au calcul d&rsquo;une moyenne pond\u00e9r\u00e9e segment\u00e9e :<\/p>\n<p><strong>%MACRO<\/strong> calculate_weighted_mean(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;data=,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;var=,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;weight=,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;by=,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;out=work.resultat_pondere<br \/>\n);<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\/* 1. Validation de l&rsquo;existence de la table en entr\u00e9e *\/<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>%IF<\/strong> NOT %SYSFUNC(exist(&amp;data)) <strong>%THEN %DO<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%PUT %STR(ERR)OR: [MACRO CALCULATE_WEIGHTED_MEAN] La table &amp;data est introuvable.;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%RETURN;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>%END<\/strong>;<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\/* 2. Validation des param\u00e8tres obligatoires *\/<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>%IF<\/strong> &amp;var = <strong>OR<\/strong> &amp;weight = <strong>%THEN %DO<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%PUT %STR(ERR)OR: [MACRO CALCULATE_WEIGHTED_MEAN] Les parametres VAR et WEIGHT sont obligatoires.;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%RETURN;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>%END<\/strong>;<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\/* 3. Execution de l&rsquo;agregation via PROC SQL securisee *\/<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>PROC SQL<\/strong>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>CREATE TABLE<\/strong> &amp;out <strong>AS<\/strong><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>SELECT<\/strong><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>%IF<\/strong> %LENGTH(&amp;by) &gt; 0 <strong>%THEN<\/strong> &amp;by ,;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(CASE WHEN &amp;weight &gt; 0 AND &amp;var IS NOT NULL THEN &amp;var * &amp;weight ELSE 0 END) \/<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(CASE WHEN &amp;weight &gt; 0 AND &amp;var IS NOT NULL THEN &amp;weight ELSE . END) <strong>AS<\/strong> weighted_mean,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM(CASE WHEN &amp;weight &gt; 0 AND &amp;var IS NOT NULL THEN &amp;weight ELSE 0 END) <strong>AS<\/strong> sum_weights,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COUNT(CASE WHEN &amp;weight &gt; 0 AND &amp;var IS NOT NULL THEN &amp;var END) <strong>AS<\/strong> valid_n<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>FROM<\/strong> &amp;data<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>WHERE<\/strong> &amp;weight &gt; 0 AND &amp;var IS NOT NULL<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>%IF<\/strong> %LENGTH(&amp;by) &gt; 0 <strong>%THEN<\/strong> <strong>GROUP BY<\/strong> &amp;by ;;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>QUIT<\/strong>;<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;%PUT %STR(NOTE): [MACRO CALCULATE_WEIGHTED_MEAN] Traitement execute avec succes vers la table &amp;out.;<br \/>\n<strong>%MEND<\/strong> calculate_weighted_mean;<\/p>\n<p>Cette macro illustre une int\u00e9gration programmatique compl\u00e8te : elle v\u00e9rifie dynamiquement les m\u00e9tadonn\u00e9es syst\u00e8me via la fonction macro <em>%SYSFUNC(exist())<\/em>, g\u00e8re l&rsquo;absence \u00e9ventuelle de clause de regroupement au moyen d&rsquo;aiguillages conditionnels macro-g\u00e9n\u00e9ratifs (<em>%IF %LENGTH(&amp;by) &gt; 0<\/em>), immunise le d\u00e9nominateur contre les divisions par z\u00e9ro et exporte simultan\u00e9ment l&rsquo;estimateur de la moyenne, la somme totale des facteurs de pond\u00e9ration et le nombre effectif d&rsquo;observations ayant contribu\u00e9 au calcul.<\/p>\n<h2>12. Synth\u00e8se m\u00e9thodologique, validation crois\u00e9e et recommandations pratiques<\/h2>\n<h3>12.1 Matrice d\u00e9cisionnelle pour le choix de la m\u00e9thode SAS<\/h3>\n<p>Face \u00e0 la pluralit\u00e9 des m\u00e9canismes logiciels offerts par la plateforme SAS pour calculer une moyenne pond\u00e9r\u00e9e, l&rsquo;ing\u00e9nieur de donn\u00e9es ou le biostatisticien doit op\u00e9rer un arbitrage raisonn\u00e9, guid\u00e9 par les contraintes sp\u00e9cifiques de son projet analytique. Le tableau comparatif conceptuel suivant formalise les crit\u00e8res d\u00e9cisionnels pr\u00e9pond\u00e9rants r\u00e9gissant le choix entre <strong>PROC SQL<\/strong>, <strong>PROC MEANS<\/strong>, l&rsquo;\u00e9tape <strong>DATA<\/strong> s\u00e9quentielle et <strong>PROC SURVEYMEANS<\/strong> :<\/p>\n<ul>\n<li><strong>PROC SQL<\/strong> : Recommand\u00e9e pour la concision d\u00e9clarative du code, l&rsquo;int\u00e9gration imm\u00e9diate dans des flux relationnels combinant jointures et filtres, et l&rsquo;auditabilit\u00e9 rapide par des analystes familiers du standard SQL. M\u00e9thode id\u00e9ale pour des calculs d&rsquo;agr\u00e9gation d&rsquo;entreprise standards sans mod\u00e9lisation de plans de sondage complexes.<\/li>\n<li><strong>PROC MEANS \/ PROC SUMMARY<\/strong> : Recommand\u00e9e pour le calcul statistique intensif sur de grands volumes de donn\u00e9es. Offre une vitesse d&rsquo;ex\u00e9cution algorithmique maximale gr\u00e2ce \u00e0 son code machine compil\u00e9 et \u00e0 sa table de hachage interne optimis\u00e9e (via l&rsquo;instruction <strong>CLASS<\/strong>). Indispensable lorsque l&rsquo;analyste requiert simultan\u00e9ment d&rsquo;autres m\u00e9triques statistiques pond\u00e9r\u00e9es (variance, \u00e9cart-type, percentiles).<\/li>\n<li><strong>\u00c9tape DATA avec RETAIN<\/strong> : Recommand\u00e9e d\u00e8s lors que le calcul de la moyenne s&rsquo;inscrit au sein d&rsquo;une cha\u00eene algorithmique s\u00e9quentielle sur mesure, exigeant des r\u00e8gles m\u00e9tier complexes, des tests logiques multiples entre observations successives ou la conservation d&rsquo;\u00e9tats d&rsquo;it\u00e9ration non lin\u00e9aires.<\/li>\n<li><strong>PROC SURVEYMEANS<\/strong> : Imp\u00e9rative en \u00e9pid\u00e9miologie, en sociologie quantitative et en \u00e9conom\u00e9trie appliqu\u00e9e lorsque les donn\u00e9es proc\u00e8dent d&rsquo;un \u00e9chantillonnage non \u00e9quiprobable \u00e0 plusieurs degr\u00e9s, avec pr\u00e9sence de strates et de grappes. Seule approche m\u00e9thodologiquement recevable pour la publication acad\u00e9mique de tests d&rsquo;inf\u00e9rence statistique et d&rsquo;intervalles de confiance non biais\u00e9s.<\/li>\n<\/ul>\n<h3>12.2 Protocole de validation et assurance qualit\u00e9 des calculs<\/h3>\n<p>L&rsquo;assurance qualit\u00e9 des r\u00e9sultats computationnels constitue la pierre angulaire de l&rsquo;\u00e9thique de la recherche et de la gouvernance des donn\u00e9es en entreprise. L&rsquo;analyste rigoureux ne saurait se satisfaire de l&rsquo;obtention d&rsquo;un r\u00e9sultat num\u00e9rique sans en avoir au pr\u00e9alable valid\u00e9 la reproductibilit\u00e9 absolue \u00e0 travers un protocole de tests unitaires et de validation crois\u00e9e.<\/p>\n<p>Un protocole d&rsquo;assurance qualit\u00e9 exhaustif s&rsquo;articule autour de trois imp\u00e9ratifs op\u00e9rationnels :<\/p>\n<ul>\n<li><strong>V\u00e9rification sur donn\u00e9es synth\u00e9tiques t\u00e9moins<\/strong> : Ex\u00e9cution syst\u00e9matique du pipeline sur un jeu de donn\u00e9es de r\u00e9f\u00e9rence restreint (tel que notre table <em>work.ventes_echantillon<\/em>), dont les propri\u00e9t\u00e9s barycentriques ont \u00e9t\u00e9 calcul\u00e9es et v\u00e9rifi\u00e9es manuellement en double aveugle. Tout \u00e9cart num\u00e9rique au-del\u00e0 de la tol\u00e9rance d&rsquo;arrondi flottant standard (<em>10\u207b\u00b9\u00b2<\/em>) signale une anomalie structurelle dans le code.<\/li>\n<li><strong>Validation crois\u00e9e inter-proc\u00e9dures<\/strong> : Confrontation syst\u00e9matique des tables de sortie g\u00e9n\u00e9r\u00e9es respectivement par <strong>PROC SQL<\/strong> et <strong>PROC MEANS<\/strong> au moyen de la proc\u00e9dure de comparaison automatis\u00e9e <strong>PROC COMPARE<\/strong> :<\/li>\n<\/ul>\n<p><strong>PROC COMPARE<\/strong> base=work.moyenne_ponderee_par_groupe<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compare=work.moyenne_par_classe<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;criterion=1e-9;<br \/>\n<strong>RUN<\/strong>;<\/p>\n<p>L&rsquo;inspection du journal SAS g\u00e9n\u00e9r\u00e9 par <strong>PROC COMPARE<\/strong> doit imp\u00e9rativement attester de la conformit\u00e9 stricte des vecteurs num\u00e9riques analys\u00e9s, sans divergence d&rsquo;\u00e9galit\u00e9 de valeurs ni discordance d&rsquo;attributs de formats.<\/p>\n<ul>\n<li><strong>Audit des valeurs manquantes et des bornes spectrales<\/strong> : Contr\u00f4le final s&rsquo;assurant que chaque valeur de moyenne pond\u00e9r\u00e9e estim\u00e9e s&rsquo;inscrit rigoureusement \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;intervalle ferm\u00e9 d\u00e9limit\u00e9 par la valeur minimale et la valeur maximale de la variable cible au sein de chaque strate : <em>min(y_i) \u2264 y\u0304_w \u2264 max(y_i)<\/em>. Toute transgression de cette borne fondamentale r\u00e9v\u00e8le la pr\u00e9sence de coefficients de pond\u00e9ration n\u00e9gatifs non ma\u00eetris\u00e9s ou une division par z\u00e9ro masqu\u00e9e.<\/li>\n<\/ul>\n<p>En observant scrupuleusement ces d\u00e9marches m\u00e9thodologiques, les praticiens de la science des donn\u00e9es garantissent \u00e0 leurs mod\u00e8les d\u00e9cisionnels et \u00e0 leurs publications acad\u00e9miques un niveau d&rsquo;int\u00e9grit\u00e9, d&rsquo;exactitude et de robustesse conforme aux exigences les plus \u00e9lev\u00e9es de la communaut\u00e9 statistique internationale.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<p>Cochran, W. G. (1977). <em>Sampling Techniques<\/em> (3rd ed.). John Wiley &amp; Sons. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.wiley.com\/en-us\/Sampling+Techniques%2C+3rd+Edition-p-9780471162407\">https:\/\/www.wiley.com\/en-us\/Sampling+Techniques%2C+3rd+Edition-p-9780471162407<\/a><\/p>\n<p>Horvitz, D. G., &amp; Thompson, D. J. (1952). A generalization of sampling without replacement from a finite universe. <em>Journal of the American Statistical Association<\/em>, 47(260), 663\u2013685. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/01621459.1952.10483446\">https:\/\/doi.org\/10.1080\/01621459.1952.10483446<\/a><\/p>\n<p>IEEE. (2019). <em>IEEE Standard for Floating-Point Arithmetic<\/em> (IEEE Std 754-2019). Institute of Electrical and Electronics Engineers. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/ieeexplore.ieee.org\/document\/8766229\">https:\/\/ieeexplore.ieee.org\/document\/8766229<\/a><\/p>\n<p>Institut National de la Statistique et des \u00c9tudes \u00c9conomiques. (2020). <em>M\u00e9thodes de calage sur marges et traitement des donn\u00e9es de sondage<\/em>. Insee M\u00e9thodes. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.insee.fr\/\">https:\/\/www.insee.fr\/<\/a><\/p>\n<p>Kish, L. (1965). <em>Survey Sampling<\/em>. John Wiley &amp; Sons. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.wiley.com\/\">https:\/\/www.wiley.com\/<\/a><\/p>\n<p>Lumley, T. (2010). <em>Complex Surveys: A Guide to Analysis Using R<\/em>. John Wiley &amp; Sons. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1002\/9780470580066\">https:\/\/doi.org\/10.1002\/9780470580066<\/a><\/p>\n<p>S\u00e4rndal, C.-E., Swensson, B., &amp; Wretman, J. (2003). <em>Model Assisted Survey Sampling<\/em>. Springer-Verlag. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/978-1-4612-4378-6\">https:\/\/doi.org\/10.1007\/978-1-4612-4378-6<\/a><\/p>\n<p>SAS Institute Inc. (2021). <em>SAS\/STAT 15.2 User&rsquo;s Guide: The SURVEYMEANS Procedure<\/em>. SAS Institute Inc. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/support.sas.com\/documentation\/onlinedoc\/stat\/142\/surveymeans.pdf\">https:\/\/support.sas.com\/documentation\/onlinedoc\/stat\/142\/surveymeans.pdf<\/a><\/p>\n<p>SAS Institute Inc. (2023). <em>SAS 9.4 SQL Procedure User&rsquo;s Guide<\/em> (5th ed.). SAS Institute Inc. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/support.sas.com\/documentation\/cdl\/en\/sqlproc\/69894\/PDF\/default\/sqlproc.pdf\">https:\/\/support.sas.com\/documentation\/cdl\/en\/sqlproc\/69894\/PDF\/default\/sqlproc.pdf<\/a><\/p>\n<p>SAS Institute Inc. (2023). <em>Base SAS 9.4 Procedures Guide: Statistical Procedures<\/em> (6th ed.). SAS Institute Inc. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/support.sas.com\/documentation\/cdl\/en\/procstat\/69629\/PDF\/default\/procstat.pdf\">https:\/\/support.sas.com\/documentation\/cdl\/en\/procstat\/69629\/PDF\/default\/procstat.pdf<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour calculer une moyenne pond\u00e9r\u00e9e dans SAS avec PROC SQL, PROC MEANS et l&rsquo;\u00e9tape DATA, illustr\u00e9 d&rsquo;exemples de code d\u00e9taill\u00e9s.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1829,9499],"tags":[1884,3884,10466,235,2344],"class_list":["post-9923","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-statistique","category-programmation-sas","tag-analyse-de-donnees","tag-moyenne-ponderee","tag-proc-sql","tag-sas","tag-statistiques"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/9923","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=9923"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/9923\/revisions"}],"predecessor-version":[{"id":9927,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/9923\/revisions\/9927"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}