{"id":3013,"date":"2026-09-06T23:41:22","date_gmt":"2026-09-06T23:41:22","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-creer-une-matrice-de-covariance-en-python\/"},"modified":"2026-09-06T23:41:25","modified_gmt":"2026-09-06T23:41:25","slug":"comment-creer-une-matrice-de-covariance-en-python","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-creer-une-matrice-de-covariance-en-python","title":{"rendered":"Comment cr\u00e9er une matrice de covariance en Python"},"content":{"rendered":"<p>L&rsquo;analyse des interd\u00e9pendances au sein de donn\u00e9es multidimensionnelles constitue l&rsquo;un des piliers m\u00e9thodologiques fondamentaux de la statistique moderne, de l&rsquo;apprentissage automatique et des sciences comportementales quantitatives. Qu&rsquo;il s&rsquo;agisse de calibrer une batterie de tests psychom\u00e9triques, de mod\u00e9liser les fluctuations conjointes d&rsquo;actifs financiers ou de r\u00e9duire la dimensionnalit\u00e9 d&rsquo;un signal biologique, la capacit\u00e9 \u00e0 quantifier la mani\u00e8re dont plusieurs variables al\u00e9atoires varient de concert repr\u00e9sente une \u00e9tape analytique incontournable. Au c\u0153ur de cet \u00e9difice se trouve la matrice de variance-covariance, un objet alg\u00e9brique compact qui r\u00e9sume l&rsquo;ensemble des dispersions marginales et des covariations bilat\u00e9rales caract\u00e9risant un syst\u00e8me multivari\u00e9.<\/p>\n<p>Dans l&rsquo;\u00e9cosyst\u00e8me du calcul scientifique contemporain, le langage de programmation <a rel=\"noopener noreferrer\" href=\"https:\/\/www.python.org\/\">Python<\/a> s&rsquo;est impos\u00e9 comme l&rsquo;environnement d&rsquo;\u00e9lection pour manipuler ces structures. Gr\u00e2ce \u00e0 des biblioth\u00e8ques hautement optimis\u00e9es telles que <a rel=\"noopener noreferrer\" href=\"https:\/\/numpy.org\/\">NumPy<\/a>, <a rel=\"noopener noreferrer\" href=\"https:\/\/pandas.pydata.org\/\">Pandas<\/a> et <a rel=\"noopener noreferrer\" href=\"https:\/\/scipy.org\/\">SciPy<\/a>, les chercheurs et praticiens disposent d&rsquo;outils algorithmiques d&rsquo;une grande puissance, permettant d&rsquo;ex\u00e9cuter des op\u00e9rations matricielles complexes avec une efficacit\u00e9 computationnelle proche des routines bas niveau compil\u00e9es en C ou Fortran. Toutefois, la simple ex\u00e9cution d&rsquo;une fonction de calcul matriciel ne saurait suffire : une compr\u00e9hension intime des hypoth\u00e8ses sous-jacentes, des formulations alg\u00e9briques et des subtilit\u00e9s d&rsquo;impl\u00e9mentation logicielle s&rsquo;av\u00e8re indispensable pour \u00e9viter des erreurs d&rsquo;interpr\u00e9tation m\u00e9thodologique souvent d\u00e9l\u00e9t\u00e8res.<\/p>\n<p>Ce guide exhaustif a pour vocation d&rsquo;explorer, de mani\u00e8re rigoureuse et approfondie, la th\u00e9orie, la construction algorithmique et l&rsquo;interpr\u00e9tation appliqu\u00e9e de la matrice de covariance en Python. En ancrant notre r\u00e9flexion dans le champ de la <a rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Psychom%C3%A9trie\">psychom\u00e9trie<\/a> et de la mod\u00e9lisation quantitative, nous examinerons pas \u00e0 pas chaque composante math\u00e9matique, chaque ligne de code structurante, ainsi que les \u00e9cueils num\u00e9riques classiques tels que la singularit\u00e9 matricielle ou la perte du caract\u00e8re semi-d\u00e9fini positif. De la formulation des estimateurs \u00e0 la visualisation avanc\u00e9e, en passant par la transition vers la corr\u00e9lation et l&rsquo;analyse spectrale, ce document offre un cadre de r\u00e9f\u00e9rence complet pour le chercheur et le data scientist exigeants.<\/p>\n<h2>1. Introduction th\u00e9orique \u00e0 la covariance et aux matrices associatives en psychom\u00e9trie<\/h2>\n<h3>1.1 D\u00e9finition formelle de la covariance statistique<\/h3>\n<p>La covariance statistique mesure la tendance conjointe de deux variables al\u00e9atoires r\u00e9elles \u00e0 s&rsquo;\u00e9carter simultan\u00e9ment de leurs esp\u00e9rances math\u00e9matiques respectives. D&rsquo;un point de vue conceptuel, elle constitue une extension bivari\u00e9e directe de la variance scalaire. Si l&rsquo;on consid\u00e8re deux variables continues, not\u00e9es arbitrairement <em>X<\/em> et <em>Y<\/em>, la covariance est d\u00e9finie comme l&rsquo;esp\u00e9rance du produit de leurs d\u00e9viations centr\u00e9es :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"operatorname{Cov}(X, Y) = \\mathbb{E}[(X - \\mathbb{E}[X])(Y - \\mathbb{E}[Y])]\">$$operatorname{Cov}(X, Y) = \\mathbb{E}[(X &#8211; \\mathbb{E}[X])(Y &#8211; \\mathbb{E}[Y])]$$<\/span><\/p>\n<p>Cette formulation analytique capture la direction g\u00e9om\u00e9trique de l&rsquo;association lin\u00e9aire. Lorsque les observations de <em>X<\/em> sup\u00e9rieures \u00e0 sa moyenne co\u00efncident syst\u00e9matiquement avec des r\u00e9alisations de <em>Y<\/em> sup\u00e9rieures \u00e0 la sienne, le produit des d\u00e9viations est positif, conf\u00e9rant une covariance globale positive. Inversement, si une d\u00e9viation positive le long de l&rsquo;axe des abscisses s&rsquo;accompagne de mani\u00e8re pr\u00e9dominante d&rsquo;une d\u00e9viation n\u00e9gative le long de l&rsquo;axe des ordonn\u00e9es, la valeur attendue du produit devient n\u00e9gative, d\u00e9notant un patron de variation inverse.<\/p>\n<p>Il importe de souligner avec vigueur la distinction \u00e9pist\u00e9mologique fondamentale entre d\u00e9pendance statistique et d\u00e9pendance causale. Une covariance non nulle atteste strictement d&rsquo;une co-occurrence lin\u00e9aire des fluctuations au sein du rep\u00e8re d&rsquo;observation ; elle ne pr\u00e9juge en rien d&rsquo;une quelconque primaut\u00e9 temporelle, d&rsquo;un m\u00e9canisme g\u00e9n\u00e9ratif unilat\u00e9ral ou de l&rsquo;absence d&rsquo;une tierce variable confondante. Dans le champ de l&rsquo;\u00e9valuation psychologique et des sciences sociales, cette mesure renseigne avant tout sur la covariation inter-individuelle observ\u00e9e lors de l&rsquo;administration simultan\u00e9e de plusieurs \u00e9preuves.<\/p>\n<h3>1.2 R\u00f4le structurel de la matrice de covariance<\/h3>\n<p>D\u00e8s lors que le protocole exp\u00e9rimental implique non plus deux variables isol\u00e9es, mais un vecteur al\u00e9atoire d&rsquo;ordre <em>p<\/em>, la dispersion globale du syst\u00e8me n\u00e9cessite une g\u00e9n\u00e9ralisation matricielle. La matrice de variance-covariance, classiquement d\u00e9sign\u00e9e par la lettre grecque majuscule Sigma (<span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{\\Sigma}\">$\\mathbf{\\Sigma}$<\/span>), est une structure carr\u00e9e de dimensions <em>p<\/em> &times; <em>p<\/em> qui synth\u00e9tise exhaustivement la structure associative du syst\u00e8me.<\/p>\n<p>Cette matrice poss\u00e8de des propri\u00e9t\u00e9s alg\u00e9briques remarquables. En premier lieu, elle est intrins\u00e8quement sym\u00e9trique par rapport \u00e0 sa diagonale principale, dans la mesure o\u00f9 l&rsquo;op\u00e9rateur de covariance est commutatif : pour tout couple d&rsquo;indices <span class=\"arabpsy-math-inline\" data-latex=\"(j, k)\">$(j, k)$<\/span>, la relation <span class=\"arabpsy-math-inline\" data-latex=\"\\sigma_{jk} = \\sigma_{kj}\">$\\sigma_{jk} = \\sigma_{kj}$<\/span> est scrupuleusement v\u00e9rifi\u00e9e. En second lieu, les \u00e9l\u00e9ments positionn\u00e9s pr\u00e9cis\u00e9ment le long de la diagonale principale repr\u00e9sentent la covariance d&rsquo;une variable avec elle-m\u00eame, ce qui correspond, par d\u00e9finition, aux variances marginales :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\sigma_{jj} = operatorname{Cov}(X_j, X_j) = operatorname{Var}(X_j)\">$$\\sigma_{jj} = operatorname{Cov}(X_j, X_j) = operatorname{Var}(X_j)$$<\/span><\/p>\n<p>Les \u00e9l\u00e9ments hors-diagonale quantifient les covariations bilat\u00e9rales entre les dimensions distinctes du vecteur de mesure. Dans le domaine du diagnostic psychom\u00e9trique, cette matrice offre un outil d&rsquo;exploration imm\u00e9diat de la coh\u00e9rence interne d&rsquo;un instrument d&rsquo;\u00e9valuation : des variances diagonales homog\u00e8nes associ\u00e9es \u00e0 des covariances extra-diagonales substantiellement positives sugg\u00e8rent que les items mesurent des facettes convergentes d&rsquo;un m\u00eame domaine de comp\u00e9tence ou d&rsquo;un trait psychologique partag\u00e9.<\/p>\n<h3>1.3 Applications directes en psychologie quantitative<\/h3>\n<p>La mod\u00e9lisation psychom\u00e9trique contemporaine repose sur la formalisation de variables latentes inobservables inf\u00e9r\u00e9es \u00e0 partir d&rsquo;indicateurs manifestes. La matrice de covariance empirique constitue la mati\u00e8re premi\u00e8re sur laquelle s&rsquo;\u00e9chafaudent les analyses les plus sophistiqu\u00e9es, \u00e0 l&rsquo;instar de la mod\u00e9lisation en \u00e9quations structurelles (<a rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Mod%C3%A8le_d%27%C3%A9quations_structurelles\">SEM<\/a>) et de l&rsquo;analyse factorielle confirmatoire (AFC).<\/p>\n<p>Lorsqu&rsquo;un chercheur administre une batterie d&rsquo;\u00e9valuations cognitives mesurant par exemple la m\u00e9moire de travail, le raisonnement inductif et la vitesse de traitement, l&rsquo;analyse conjointe des variances et des covariances permet d&rsquo;estimer la part de variance attribuable \u00e0 un facteur g\u00e9n\u00e9ral d&rsquo;efficience intellectuelle par rapport aux variances sp\u00e9cifiques \u00e0 chaque t\u00e2che. En outre, la th\u00e9orie classique des tests exploite directement ces coefficients pour \u00e9valuer la fid\u00e9lit\u00e9 de consistance interne, illustr\u00e9e notamment par le coefficient alpha de Cronbach ou le coefficient om\u00e9ga de McDonald, lesquels sont d\u00e9riv\u00e9s des sommes des blocs matriciels.<\/p>\n<p>Enfin, dans les protocoles longitudinaux o\u00f9 les m\u00eames \u00e9preuves sont administr\u00e9es de mani\u00e8re r\u00e9p\u00e9t\u00e9e au fil du temps, la stabilit\u00e9 temporelle des construits psychologiques est appr\u00e9hend\u00e9e par l&rsquo;examen des covariances d&rsquo;autocorr\u00e9lation crois\u00e9e. Une matrice de covariance mal conditionn\u00e9e ou estim\u00e9e sur des bases erron\u00e9es compromet irr\u00e9m\u00e9diablement l&rsquo;ajustement de ces mod\u00e8les structurels, faussant les indices d&rsquo;ad\u00e9quation tels que le RMSEA ou le CFI.<\/p>\n<h2>2. Fondements math\u00e9matiques et formulations alg\u00e9briques<\/h2>\n<h3>2.1 Formule de la covariance de population<\/h3>\n<p>Sur le plan math\u00e9matique, le calcul de la covariance d\u00e9pend crucialement du statut \u00e9pist\u00e9mique des donn\u00e9es consid\u00e9r\u00e9es : s&rsquo;agit-il de la totalit\u00e9 exhaustive d&rsquo;une population finie ou d&rsquo;un \u00e9chantillon stochastique extrait de celle-ci ? Pour une population ferm\u00e9e compos\u00e9e d&rsquo;exactement <em>N<\/em> observations exhaustives, la covariance de population entre deux dimensions <span class=\"arabpsy-math-inline\" data-latex=\"X\">$X$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"Y\">$Y$<\/span> s&rsquo;exprime par l&rsquo;\u00e9quation suivante :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\sigma_{XY} = \\frac{1}{N} \\sum_{i=1}^{N} (x_i - \\mu_X)(y_i - \\mu_Y)\">$$\\sigma_{XY} = \\frac{1}{N} \\sum_{i=1}^{N} (x_i &#8211; \\mu_X)(y_i &#8211; \\mu_Y)$$<\/span><\/p>\n<p>Dans cette formulation, <span class=\"arabpsy-math-inline\" data-latex=\"\\mu_X\">$\\mu_X$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"\\mu_Y\">$\\mu_Y$<\/span> d\u00e9signent les v\u00e9ritables moyennes param\u00e9triques de la population globale. Le d\u00e9nominateur correspond rigoureusement \u00e0 la taille totale <em>N<\/em>. Cette relation suppose implicitement que chaque individu de la population contribue de mani\u00e8re \u00e9quiprobable au calcul du moment conjoint centr\u00e9 du second ordre.<\/p>\n<p>Il convient de noter que cette m\u00e9trique est particuli\u00e8rement sensible \u00e0 la distribution sous-jacente des scores. Si les variables manifestent une asym\u00e9trie marqu\u00e9e ou une leptocurticit\u00e9 prononc\u00e9e, la pr\u00e9sence de valeurs extr\u00eames situ\u00e9es simultan\u00e9ment dans les queues de distribution peut artificiellement amplifier la valeur calcul\u00e9e, conf\u00e9rant une image trompeuse de la d\u00e9pendance moyenne. L&rsquo;hypoth\u00e8se implicite d&rsquo;une distribution normale multivari\u00e9e sous-tend tr\u00e8s fr\u00e9quemment l&rsquo;interpr\u00e9tation lin\u00e9aire de cet estimateur.<\/p>\n<h3>2.2 Formule de la covariance d&rsquo;\u00e9chantillon et correction de Bessel<\/h3>\n<p>Dans l&rsquo;immense majorit\u00e9 des contextes empiriques, l&rsquo;acc\u00e8s \u00e0 la population enti\u00e8re demeure impossible. Le chercheur travaille sur un \u00e9chantillon al\u00e9atoire de taille <em>n<\/em> issu d&rsquo;une population cible infinie ou inaccessible. D\u00e8s lors, les v\u00e9ritables moyennes param\u00e9triques sont inconnues et doivent \u00eatre estim\u00e9es \u00e0 partir des moyennes d&rsquo;\u00e9chantillon <span class=\"arabpsy-math-inline\" data-latex=\"\\bar{x}\">$\\bar{x}$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"\\bar{y}\">$\\bar{y}$<\/span>. Cette substitution induit un ph\u00e9nom\u00e8ne statistique bien document\u00e9 : l&rsquo;utilisation d&rsquo;une moyenne estim\u00e9e sur le m\u00eame \u00e9chantillon entra\u00eene une sous-estimation syst\u00e9matique de la dispersion r\u00e9elle, car les donn\u00e9es sont m\u00e9caniquement plus proches de leur propre moyenne d&rsquo;\u00e9chantillon que de la v\u00e9ritable moyenne populationnelle.<\/p>\n<p>Pour neutraliser ce biais n\u00e9gatif asymptotique, on applique la c\u00e9l\u00e8bre <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bessel%27s_correction\">correction de Bessel<\/a>, consistant \u00e0 substituer le d\u00e9nominateur <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span> par les degr\u00e9s de libert\u00e9 r\u00e9siduels, soit <span class=\"arabpsy-math-inline\" data-latex=\"n - 1\">$n &#8211; 1$<\/span>. L&rsquo;estimateur d&rsquo;\u00e9chantillon sans biais s&rsquo;\u00e9crit formellement :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"s_{XY} = \\frac{1}{n - 1} \\sum_{i=1}^{n} (x_i - \\bar{x})(y_i - \\bar{y})\">$$s_{XY} = \\frac{1}{n &#8211; 1} \\sum_{i=1}^{n} (x_i &#8211; \\bar{x})(y_i &#8211; \\bar{y})$$<\/span><\/p>\n<p>La preuve formelle repose sur le calcul de l&rsquo;esp\u00e9rance math\u00e9matique de la somme des produits d&rsquo;\u00e9carts. On d\u00e9montre rigoureusement que <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbb{E}[s_{XY}] = \\sigma_{XY}\">$\\mathbb{E}[s_{XY}] = \\sigma_{XY}$<\/span>, ce qui garantit la propri\u00e9t\u00e9 de non-biais de l&rsquo;estimateur. Pour de petits \u00e9chantillons cliniques (par exemple, <span class=\"arabpsy-math-inline\" data-latex=\"n &lt; 30\">$n &lt; 30$<\/span>), l&#039;impact de cette correction est loin d&#039;\u00eatre anodin : utiliser <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span> au lieu de <span class=\"arabpsy-math-inline\" data-latex=\"n - 1\">$n &#8211; 1$<\/span> engendre une sous-estimation de la covariance de l&#039;ordre de 3 \u00e0 10 %, ce qui alt\u00e8re substantiellement les inf\u00e9rences ult\u00e9rieures.<\/p>\n<h3>2.3 \u00c9criture matricielle compacte<\/h3>\n<p>L&rsquo;alg\u00e8bre lin\u00e9aire offre une repr\u00e9sentation particuli\u00e8rement \u00e9l\u00e9gante et computationnellement efficace du calcul de la matrice de covariance. Soit une matrice de donn\u00e9es brutes <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{X}\">$\\mathbf{X}$<\/span> de dimensions <span class=\"arabpsy-math-inline\" data-latex=\"n \\times p\">$n \\times p$<\/span>, o\u00f9 chaque ligne repr\u00e9sente une observation individuelle (un sujet d&rsquo;exp\u00e9rience) et chaque colonne repr\u00e9sente une variable (un test psychologique). La premi\u00e8re op\u00e9ration consiste \u00e0 calculer la matrice des donn\u00e9es centr\u00e9es, not\u00e9e <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{X}_c\">$\\mathbf{X}_c$<\/span> :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\mathbf{X}_c = \\mathbf{X} - \\frac{1}{n} \\mathbf{1}_n \\mathbf{1}_n^T \\mathbf{X}\">$$\\mathbf{X}_c = \\mathbf{X} &#8211; \\frac{1}{n} \\mathbf{1}_n \\mathbf{1}_n^T \\mathbf{X}$$<\/span><\/p>\n<p>o\u00f9 <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{1}_n\">$\\mathbf{1}_n$<\/span> est un vecteur colonne unitaire de dimension <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span>. Une fois ce centrage effectu\u00e9 sur chaque colonne, la matrice de variance-covariance de l&rsquo;\u00e9chantillon <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{S}\">$\\mathbf{S}$<\/span> s&rsquo;obtient instantan\u00e9ment par le produit ext\u00e9rieur de la matrice transpos\u00e9e par elle-m\u00eame, pond\u00e9r\u00e9 par le facteur d&rsquo;ajustement ad\u00e9quat :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\mathbf{S} = \\frac{1}{n - 1} \\mathbf{X}_c^T \\mathbf{X}_c\">$$\\mathbf{S} = \\frac{1}{n &#8211; 1} \\mathbf{X}_c^T \\mathbf{X}_c$$<\/span><\/p>\n<p>Cette formulation matricielle r\u00e9v\u00e8le imm\u00e9diatement les propri\u00e9t\u00e9s intrins\u00e8ques de l&rsquo;objet r\u00e9sultant. Par construction, le produit <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{X}_c^T \\mathbf{X}_c\">$\\mathbf{X}_c^T \\mathbf{X}_c$<\/span> est une matrice sym\u00e9trique semi-d\u00e9finie positive. Cela implique que pour tout vecteur non nul <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{v} in \\mathbb{R}^p\">$\\mathbf{v} in \\mathbb{R}^p$<\/span>, la forme quadratique associ\u00e9e satisfait <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{v}^T \\mathbf{S} \\mathbf{v} ge 0\">$\\mathbf{v}^T \\mathbf{S} \\mathbf{v} ge 0$<\/span>. De plus, son d\u00e9terminant, souvent appel\u00e9 la variance g\u00e9n\u00e9ralis\u00e9e du syst\u00e8me, est strictement sup\u00e9rieur ou \u00e9gal \u00e0 z\u00e9ro, refl\u00e9tant le volume hyper-ellipso\u00efdal occup\u00e9 par le nuage de points dans l&rsquo;espace euclidien \u00e0 <em>p<\/em> dimensions.<\/p>\n<h2>3. Configuration de l&rsquo;environnement Python pour le calcul statistique<\/h2>\n<h3>3.1 Installation et initialisation des biblioth\u00e8ques fondamentales<\/h3>\n<p>L&rsquo;ex\u00e9cution fluide et reproductible d&rsquo;analyses quantitatives sous Python exige une architecture logicielle robuste. Le traitement matriciel s&rsquo;articule principalement autour de la biblioth\u00e8que NumPy, qui impl\u00e9mente les tableaux multidimensionnels contigus en m\u00e9moire et s&rsquo;interface avec les sous-programmes vectoriels BLAS (Basic Linear Algebra Subprograms) et LAPACK. Pour la manipulation structur\u00e9e et l&rsquo;analyse exploratoire, Pandas s&rsquo;impose comme un standard absolu, tandis que SciPy apporte un ensemble \u00e9tendu de fonctions statistiques avanc\u00e9es. Enfin, la visualisation des r\u00e9sultats repose sur les moteurs graphiques de <a rel=\"noopener noreferrer\" href=\"https:\/\/matplotlib.org\/\">Matplotlib<\/a> et <a rel=\"noopener noreferrer\" href=\"https:\/\/seaborn.pydata.org\/\">Seaborn<\/a>.<\/p>\n<p>Il est fortement recommand\u00e9 d&rsquo;isoler le projet au sein d&rsquo;un environnement virtuel d\u00e9di\u00e9, garantissant la stabilit\u00e9 des versions et la reproductibilit\u00e9 des calculs. L&rsquo;initialisation de l&rsquo;environnement peut \u00eatre r\u00e9alis\u00e9e au moyen de l&rsquo;utilitaire <em>venv<\/em> ou via le gestionnaire de paquets <em>conda<\/em>. La commande d&rsquo;installation s&rsquo;ex\u00e9cute classiquement dans le terminal syst\u00e8me :<\/p>\n<p><code>pip install numpy pandas scipy matplotlib seaborn<\/code><\/p>\n<p>Au sein du script Python ou du calepin scientifique, la convention communautaire prescrit des alias normalis\u00e9s pour optimiser la lisibilit\u00e9 et l&rsquo;interop\u00e9rabilit\u00e9 du code source :<\/p>\n<p><code>import numpy as np<br \/>import pandas as pd<br \/>import scipy.stats as stats<br \/>import matplotlib.pyplot as plt<br \/>import seaborn as sns<\/code><\/p>\n<h3>3.2 Gestion des formats de donn\u00e9es num\u00e9riques<\/h3>\n<p>Une distinction fondamentale doit \u00eatre op\u00e9r\u00e9e entre les structures de donn\u00e9es g\u00e9n\u00e9riques du langage (telles que les listes imbriqu\u00e9es) et les tableaux typ\u00e9s optimis\u00e9s. Une liste Python standard est une collection de pointeurs h\u00e9t\u00e9rog\u00e8nes dispers\u00e9s en m\u00e9moire vive, ce qui induit une surcharge temporelle consid\u00e9rable lors d&rsquo;it\u00e9rations r\u00e9p\u00e9t\u00e9es. \u00c0 l&rsquo;inverse, l&rsquo;objet <code>numpy.ndarray<\/code> stocke les \u00e9l\u00e9ments de mani\u00e8re contigu\u00eb dans un bloc de m\u00e9moire binaire uniforme, autorisant la vectorisation SIMD (Single Instruction, Multiple Data) des processeurs modernes.<\/p>\n<p>Dans les calculs matriciels de haute pr\u00e9cision, le typage m\u00e9moire joue un r\u00f4le d\u00e9terminant. Par d\u00e9faut, NumPy alloue des flottants sur 64 bits (<code>np.float64<\/code>), conformes \u00e0 la norme IEEE 754 en double pr\u00e9cision. Cette pr\u00e9cision est g\u00e9n\u00e9ralement requise pour le calcul de d\u00e9terminants et l&rsquo;inversion matricielle, o\u00f9 des erreurs d&rsquo;arrondi infinit\u00e9simales peuvent d\u00e9g\u00e9n\u00e9rer en instabilit\u00e9s catastrophiques. L&rsquo;utilisation du format 32 bits (<code>np.float32<\/code>) peut \u00eatre envisag\u00e9e sur des jeux de donn\u00e9es massifs pour diviser l&#8217;empreinte m\u00e9moire par deux, mais elle doit \u00eatre manipul\u00e9e avec pr\u00e9caution lors de soustractions de moyennes tr\u00e8s proches.<\/p>\n<p>Avant d&rsquo;engager tout calcul de covariance, une phase de nettoyage rigoureuse s&rsquo;impose : la d\u00e9tection des valeurs manquantes (repr\u00e9sent\u00e9es par <code>np.nan<\/code>) et l&rsquo;identification des observations aberrantes ou non plausibles (par exemple, des scores n\u00e9gatifs \u00e0 une \u00e9preuve de performance standardis\u00e9e) doivent \u00eatre conduites de fa\u00e7on syst\u00e9matique pour ne pas contaminer la somme des d\u00e9viations crois\u00e9es.<\/p>\n<h2>4. Structuration d&rsquo;un jeu de donn\u00e9es psychom\u00e9triques avec NumPy<\/h2>\n<h3>4.1 Mod\u00e9lisation vectorielle d&rsquo;\u00e9valuations cognitives<\/h3>\n<p>Afin d&rsquo;illustrer concr\u00e8tement la construction matricielle, consid\u00e9rons une \u00e9tude psychom\u00e9trique fictive mais r\u00e9aliste portant sur l&rsquo;\u00e9valuation des aptitudes acad\u00e9miques aupr\u00e8s d&rsquo;un groupe d&rsquo;\u00e9tudiants. L&rsquo;\u00e9valuation mobilise trois dimensions cognitives distinctes mais potentiellement corr\u00e9l\u00e9es : un test de raisonnement math\u00e9matique (<span class=\"arabpsy-math-inline\" data-latex=\"X_1\">$X_1$<\/span>), une \u00e9preuve de compr\u00e9hension scientifique (<span class=\"arabpsy-math-inline\" data-latex=\"X_2\">$X_2$<\/span>) et un examen d&rsquo;analyse historique et textuelle (<span class=\"arabpsy-math-inline\" data-latex=\"X_3\">$X_3$<\/span>). Cinq sujets ont \u00e9t\u00e9 soumis \u00e0 ces trois \u00e9preuves standardis\u00e9es.<\/p>\n<p>Sur le plan computationnel, chaque dimension peut \u00eatre initialement formalis\u00e9e sous la forme d&rsquo;un tableau unidimensionnel (vecteur ligne ou colonne) regroupant les scores obtenus par les sujets :<\/p>\n<p><code>math_scores = [85, 90, 78, 92, 88]<br \/>science_scores = [80, 88, 75, 95, 85]<br \/>history_scores = [70, 65, 80, 68, 72]<\/code><\/p>\n<p>L&rsquo;int\u00e9gration de ces diff\u00e9rents vecteurs au sein d&rsquo;une entit\u00e9 matricielle coh\u00e9rente s&rsquo;op\u00e8re par le truchement de la fonction <code>np.array()<\/code>. Toutefois, une d\u00e9cision g\u00e9om\u00e9trique capitale s&rsquo;impose alors : comment agencer spatialement les observations et les variables au sein de la matrice globale bidimensionnelle ?<\/p>\n<h3>4.2 Orientation spatiale des matrices de donn\u00e9es<\/h3>\n<p>En statistique computationnelle et en science des donn\u00e9es, la convention standard universelle \u2014 adopt\u00e9e par des \u00e9cosyst\u00e8mes majeurs comme Scikit-Learn et Pandas \u2014 stipule que les lignes doivent repr\u00e9senter les observations ind\u00e9pendantes (les sujets cliniques ou participants), tandis que les colonnes repr\u00e9sentent les variables manifestes (les items ou \u00e9preuves). Ainsi, un jeu de donn\u00e9es contenant <em>n<\/em> sujets et <em>p<\/em> variables doit former une matrice de dimensions <span class=\"arabpsy-math-inline\" data-latex=\"n \\times p\">$n \\times p$<\/span>.<\/p>\n<p>Cependant, certaines fonctions statistiques issues du calcul num\u00e9rique pur (notamment dans la tradition MATLAB historique) adoptent la convention inverse, o\u00f9 chaque ligne correspond \u00e0 une variable et chaque colonne \u00e0 une observation. NumPy permet d&rsquo;adapter instantan\u00e9ment l&rsquo;agencement spatial par l&rsquo;op\u00e9rateur de transposition <code>.T<\/code> :<\/p>\n<p><code># Assemblage o\u00f9 chaque ligne est une variable (3 x 5)<br \/>data_by_variable = np.array([math_scores, science_scores, history_scores])<\/p>\n<p># Matrice conforme au standard statistique conventionnel (5 x 3)<br \/>data_by_subject = data_by_variable.T<\/code><\/p>\n<p>La validation formelle des dimensions matricielles s&rsquo;effectue syst\u00e9matiquement \u00e0 l&rsquo;aide de l&rsquo;attribut <code>.shape<\/code>. Dans le cas pr\u00e9sent, l&rsquo;instruction <code>data_by_subject.shape<\/code> renvoie explicitement le tuple <code>(5, 3)<\/code>, attestant de la pr\u00e9sence de 5 unit\u00e9s statistiques d\u00e9crites le long de 3 axes d&rsquo;\u00e9valuation distincts. Cette v\u00e9rification dimensionnelle pr\u00e9liminaire pr\u00e9munit l&rsquo;analyste contre de graves inversions de perspectives lors des appels de fonctions ult\u00e9rieurs.<\/p>\n<h2>5. Calcul pas-\u00e0-pas de la matrice de covariance avec NumPy<\/h2>\n<h3>5.1 Mise en \u0153uvre de la fonction np.cov<\/h3>\n<p>La biblioth\u00e8que NumPy propose une fonction directe et optimis\u00e9e pour extraire la matrice de covariance : <code>numpy.cov()<\/code>. Sa signature comporte plusieurs arguments essentiels dont la ma\u00eetrise \u00e9vite des erreurs classiques de dimensionnement. L&rsquo;un des param\u00e8tres les plus d\u00e9terminants est pr\u00e9cis\u00e9ment <code>rowvar<\/code>, qui gouverne l&rsquo;interpr\u00e9tation des axes de la matrice fournie en argument.<\/p>\n<p>Par d\u00e9faut, l&rsquo;argument <code>rowvar<\/code> est initialis\u00e9 \u00e0 <code>True<\/code> dans NumPy. Cela signifie que l&rsquo;algorithme postule implicitement que chaque ligne repr\u00e9sente une variable et chaque colonne une observation. Par cons\u00e9quent, si l&rsquo;on transmet directement une matrice standardis\u00e9e de dimension <span class=\"arabpsy-math-inline\" data-latex=\"n \\times p\">$n \\times p$<\/span> (5 sujets en lignes et 3 variables en colonnes) sans modifier ce param\u00e8tre, NumPy tentera de calculer une matrice de covariance de taille <span class=\"arabpsy-math-inline\" data-latex=\"5 \\times 5\">$5 \\times 5$<\/span>, quantifiant les covariances entre les sujets et non entre les \u00e9preuves !<\/p>\n<p>Pour obtenir la matrice de covariance <span class=\"arabpsy-math-inline\" data-latex=\"3 \\times 3\">$3 \\times 3$<\/span> attendue entre nos trois \u00e9preuves acad\u00e9miques, deux approches parfaitement \u00e9quivalentes sont envisageables :<\/p>\n<p><code># Approche 1 : Utilisation de la matrice 5x3 avec rowvar=False<br \/>cov_matrix = np.cov(data_by_subject, rowvar=False)<\/p>\n<p># Approche 2 : Utilisation de la matrice transpos\u00e9e 3x5 avec rowvar=True (d\u00e9faut)<br \/>cov_matrix = np.cov(data_by_variable)<\/code><\/p>\n<p>L&rsquo;ex\u00e9cution de cette commande d\u00e9livre un objet matriciel \u00e0 deux dimensions de taille strictement \u00e9gale \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"3 \\times 3\">$3 \\times 3$<\/span>, encapsulant l&rsquo;int\u00e9gralit\u00e9 des variances et covariances d&rsquo;\u00e9chantillon du protocole exp\u00e9rimental.<\/p>\n<figure class=\"wpt-preserved-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/covarianceMatrixPython2.png\" alt=\"Covariance matrix in Python\" \/><figcaption>Covariance matrix in Python<\/figcaption><\/figure>\n<h3>5.2 D\u00e9composition interne de l&rsquo;algorithme NumPy<\/h3>\n<p>Comprendre la m\u00e9canique computationnelle interne de <code>np.cov<\/code> permet de d\u00e9mystifier son ex\u00e9cution et d&rsquo;en appr\u00e9cier l&rsquo;efficacit\u00e9 algorithmique. Si l&rsquo;on devait reproduire fid\u00e8lement cette routine sans recourir \u00e0 l&rsquo;abstraction fournie par la biblioth\u00e8que, les op\u00e9rations arithm\u00e9tiques se d\u00e9ploieraient selon une s\u00e9quence rigoureusement ordonn\u00e9e.<\/p>\n<p>La premi\u00e8re \u00e9tape consiste \u00e0 soustraire le vecteur des moyennes marginales \u00e0 chaque observation \u00e9l\u00e9mentaire. Dans un environnement vectoris\u00e9, cette op\u00e9ration exploite le m\u00e9canisme de diffusion (<em>broadcasting<\/em>) de NumPy :<\/p>\n<p><code># Calcul de la moyenne le long de l'axe des sujets (axe 0)<br \/>means = np.mean(data_by_subject, axis=0)<\/p>\n<p># Centrage vectoris\u00e9 des donn\u00e9es<br \/>data_centered = data_by_subject - means<\/code><\/p>\n<p>La seconde phase consiste \u00e0 multiplier la matrice centr\u00e9e transpos\u00e9e par la matrice centr\u00e9e elle-m\u00eame. Cette multiplication matricielle est d\u00e9l\u00e9gu\u00e9e aux sous-programmes BLAS de niveau 3 (sp\u00e9cifiquement la routine <code>dgemm<\/code> ou <code>dsyrk<\/code>), garantissant un parall\u00e9lisme optimal au niveau du mat\u00e9riel de calcul :<\/p>\n<p><code># Produit matriciel du tenseur centr\u00e9 transpos\u00e9 par lui-m\u00eame<br \/>scatter_matrix = np.dot(data_centered.T, data_centered)<\/code><\/p>\n<p>Enfin, l&rsquo;obtention de l&rsquo;estimateur sans biais s&rsquo;ach\u00e8ve par une division scalaire de chaque cellule par le degr\u00e9 de libert\u00e9 d&rsquo;\u00e9chantillonnage, \u00e0 savoir le nombre de sujets d\u00e9cr\u00e9ment\u00e9 d&rsquo;une unit\u00e9 (<span class=\"arabpsy-math-inline\" data-latex=\"n - 1\">$n &#8211; 1$<\/span>) :<\/p>\n<p><code>manual_cov_matrix = scatter_matrix \/ (data_by_subject.shape[0] - 1)<\/code><\/p>\n<p>La comparaison num\u00e9rique entre <code>cov_matrix<\/code> et <code>manual_cov_matrix<\/code> r\u00e9v\u00e8le une \u00e9galit\u00e9 absolue \u00e0 la pr\u00e9cision machine pr\u00e8s (de l&rsquo;ordre de <span class=\"arabpsy-math-inline\" data-latex=\"10^{-16}\">$10^{-16}$<\/span>), confirmant que <code>np.cov<\/code> n&rsquo;est rien d&rsquo;autre que l&rsquo;encapsulation \u00e9l\u00e9gante et s\u00e9curis\u00e9e de cette s\u00e9rie d&rsquo;op\u00e9rations d&rsquo;alg\u00e8bre lin\u00e9aire.<\/p>\n<h3>5.3 Inspection num\u00e9rique des sorties matricielles<\/h3>\n<p>L&rsquo;examen direct de l&rsquo;objet bidimensionnel obtenu permet de valider les propri\u00e9t\u00e9s th\u00e9oriques pr\u00e9alablement \u00e9nonc\u00e9es. Si nous affichons le contenu de la matrice de covariance <span class=\"arabpsy-math-inline\" data-latex=\"3 \\times 3\">$3 \\times 3$<\/span>, nous obtenons des valeurs num\u00e9riques pr\u00e9cises illustrant le comportement des scores :<\/p>\n<p>Les termes situ\u00e9s sur la diagonale principale correspondent respectivement aux \u00e9l\u00e9ments <code>[0, 0]<\/code>, <code>[1, 1]<\/code> et <code>[2, 2]<\/code>. Ils quantifient les variances empiriques des scores de math\u00e9matiques, de sciences et d&rsquo;histoire. L&rsquo;extraction de ces composantes diagonales s&rsquo;effectue ais\u00e9ment via l&rsquo;utilitaire <code>np.diag()<\/code> :<\/p>\n<p><code>variances = np.diag(cov_matrix)<\/code><\/p>\n<p>Par ailleurs, la sym\u00e9trie fondamentale de l&rsquo;objet se confirme par l&rsquo;inspection des paires crois\u00e9es. Par exemple, la valeur log\u00e9e \u00e0 la position <code>[0, 1]<\/code> \u2014 refl\u00e9tant la covariance entre les math\u00e9matiques et les sciences \u2014 est rigoureusement identique au terme pr\u00e9sent \u00e0 la coordonn\u00e9e <code>[1, 0]<\/code>. L&rsquo;assertion logique <code>np.allclose(cov_matrix, cov_matrix.T)<\/code> s&rsquo;\u00e9value syst\u00e9matiquement \u00e0 <code>True<\/code>.<\/p>\n<p>L&rsquo;extraction d&rsquo;une relation bilat\u00e9rale sp\u00e9cifique peut \u00eatre op\u00e9r\u00e9e par simple indi\u00e7age matriciel standard. Pour isoler la covariance entre les sciences et l&rsquo;histoire, il suffit d&rsquo;interroger la case <code>cov_matrix[1, 2]<\/code>. Cette souplesse d&rsquo;interrogation s\u00e9lective permet de manipuler les blocs de covariance au sein de pipelines analytiques automatis\u00e9s.<\/p>\n<h2>6. Param\u00e9trage fondamental : Biais d&rsquo;\u00e9chantillonnage et degr\u00e9 de libert\u00e9<\/h2>\n<h3>6.1 Usage du param\u00e8tre bias=True dans np.cov<\/h3>\n<p>La fonction <code>np.cov()<\/code> int\u00e8gre un commutateur bool\u00e9en nomm\u00e9 <code>bias<\/code>, dont la valeur par d\u00e9faut est assign\u00e9e \u00e0 <code>False<\/code>. Lorsque l&rsquo;analyste fait explicitement le choix de configurer <code>bias=True<\/code>, l&rsquo;algorithme modifie son d\u00e9nominateur de normalisation pour appliquer strictement la formule de la population finie, en divisant la matrice de dispersion non plus par <span class=\"arabpsy-math-inline\" data-latex=\"n - 1\">$n &#8211; 1$<\/span>, mais par <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span> :<\/p>\n<p><code>population_cov_matrix = np.cov(data_by_subject, rowvar=False, bias=True)<\/code><\/p>\n<p>Cette option computationnelle est th\u00e9oriquement indiqu\u00e9e dans les contextes particuliers o\u00f9 le jeu de donn\u00e9es analys\u00e9 ne d\u00e9coule pas d&rsquo;un processus d&rsquo;\u00e9chantillonnage probabiliste, mais englobe de fa\u00e7on exhaustive et int\u00e9grale la population cible \u00e9tudi\u00e9e. C&rsquo;est par exemple le cas si l&rsquo;on \u00e9tudie les performances acad\u00e9miques de l&rsquo;ensemble d&rsquo;une promotion ferm\u00e9e d&rsquo;\u00e9tudiants d&rsquo;un d\u00e9partement donn\u00e9, sans intention de g\u00e9n\u00e9raliser les conclusions statistiques \u00e0 d&rsquo;autres cohortes futures ou ext\u00e9rieures.<\/p>\n<p>L&rsquo;utilisation de <code>bias=True<\/code> permet en outre de faire co\u00efncider rigoureusement les r\u00e9sultats avec des manuels de math\u00e9matiques pures o\u00f9 la covariance est d\u00e9finie a priori comme l&rsquo;esp\u00e9rance directe du produit sous distribution empirique uniforme, sans consid\u00e9ration pour les propri\u00e9t\u00e9s de convergence asymptotique de l&rsquo;\u00e9chantillonnage.<\/p>\n<h3>6.2 Usage du param\u00e8tre bias=False et param\u00e8tre ddof<\/h3>\n<p>Dans la recherche empirique inf\u00e9rentielle, le comportement par d\u00e9faut (<code>bias=False<\/code>) repr\u00e9sente la norme m\u00e9thodologique internationale. Il garantit que l&rsquo;estimateur de la matrice de covariance sera parfaitement non biais\u00e9 au sens de l&rsquo;esp\u00e9rance math\u00e9matique, compensant math\u00e9matiquement le degr\u00e9 de libert\u00e9 consomm\u00e9 par l&rsquo;estimation pr\u00e9alable du vecteur des moyennes.<\/p>\n<p>Toutefois, NumPy offre un degr\u00e9 de granularit\u00e9 sup\u00e9rieur gr\u00e2ce au param\u00e8tre <code>ddof<\/code> (<em>Delta Degrees of Freedom<\/em>). Par convention interne dans la fonction <code>np.cov<\/code> :<\/p>\n<ul>\n<li>Lorsque <code>bias=False<\/code> et <code>ddof=None<\/code>, le syst\u00e8me applique un d\u00e9calage implicite de 1, divisant la somme par <span class=\"arabpsy-math-inline\" data-latex=\"n - 1\">$n &#8211; 1$<\/span>.<\/li>\n<li>Lorsque <code>bias=True<\/code> et <code>ddof=None<\/code>, le syst\u00e8me applique un d\u00e9calage de 0, divisant par <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span>.<\/li>\n<li>Si l&rsquo;argument <code>ddof<\/code> est explicitement d\u00e9clar\u00e9 par l&rsquo;utilisateur (par exemple <code>ddof=1<\/code> ou <code>ddof=0<\/code>), il prend l&rsquo;ascendant hi\u00e9rarchique absolu sur le commutateur <code>bias<\/code>.<\/li>\n<\/ul>\n<p>Cette modularit\u00e9 s&rsquo;av\u00e8re indispensable dans certaines mod\u00e9lisations statistiques avanc\u00e9es o\u00f9 plusieurs param\u00e8tres interm\u00e9diaires ont \u00e9t\u00e9 pr\u00e9alablement estim\u00e9s \u00e0 partir des m\u00eames donn\u00e9es brutes, n\u00e9cessitant une p\u00e9nalisation plus s\u00e9v\u00e8re des degr\u00e9s de libert\u00e9 r\u00e9siduels (par exemple, en divisant par <span class=\"arabpsy-math-inline\" data-latex=\"n - k\">$n &#8211; k$<\/span>, o\u00f9 <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span> est le nombre total de contraintes lin\u00e9aires impos\u00e9es au syst\u00e8me).<\/p>\n<h3>6.3 Comparaison empirique des matrices obtenues<\/h3>\n<p>Pour saisir l&rsquo;impact concret de ce choix algorithmique sur nos scores acad\u00e9miques (<span class=\"arabpsy-math-inline\" data-latex=\"n = 5\">$n = 5$<\/span>), proc\u00e9dons \u00e0 une comparaison arithm\u00e9tique directe des sorties matricielles g\u00e9n\u00e9r\u00e9es avec <code>bias=True<\/code> (<span class=\"arabpsy-math-inline\" data-latex=\"N\">$N$<\/span>) et <code>bias=False<\/code> (<span class=\"arabpsy-math-inline\" data-latex=\"N - 1\">$N &#8211; 1$<\/span>) :<\/p>\n<p>Lorsque le d\u00e9nominateur est fix\u00e9 \u00e0 4 (<span class=\"arabpsy-math-inline\" data-latex=\"n - 1\">$n &#8211; 1$<\/span>), les valeurs de variance et de covariance obtenues sont m\u00e9caniquement sup\u00e9rieures de 25 % par rapport \u00e0 celles calcul\u00e9es avec un diviseur fix\u00e9 \u00e0 5 (<span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span>). En effet, le rapport arithm\u00e9tique s&rsquo;exprime tr\u00e8s simplement :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\mathbf{S}_{\\text{non-biais\u00e9}} = \\frac{n}{n - 1} \\mathbf{S}_{\\text{biais\u00e9}} = \\frac{5}{4} \\mathbf{S}_{\\text{biais\u00e9}} = 1.25 \\times \\mathbf{S}_{\\text{biais\u00e9}}\">$$\\mathbf{S}_{\\text{non-biais\u00e9}} = \\frac{n}{n &#8211; 1} \\mathbf{S}_{\\text{biais\u00e9}} = \\frac{5}{4} \\mathbf{S}_{\\text{biais\u00e9}} = 1.25 \\times \\mathbf{S}_{\\text{biais\u00e9}}$$<\/span><\/p>\n<p>Cette distorsion d&rsquo;amplitude de 25 % sur un effectif de 5 participants illustre de mani\u00e8re spectaculaire la vuln\u00e9rabilit\u00e9 des petits \u00e9chantillons aux choix computationnels. Si la taille de l&rsquo;\u00e9chantillon s&rsquo;\u00e9l\u00e8ve en revanche \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"n = 1000\">$n = 1000$<\/span>, le facteur de redressement n&rsquo;est plus que de <span class=\"arabpsy-math-inline\" data-latex=\"1000 \/ 999 \\approx 1.001\">$1000 \/ 999 \\approx 1.001$<\/span>, traduisant la convergence asymptotique des deux formulations d\u00e8s lors que la masse de donn\u00e9es cro\u00eet.<\/p>\n<p>La r\u00e8gle empirique incontournable pour la r\u00e9daction de rapports de recherche scientifique consiste \u00e0 toujours consigner explicitement la convention adopt\u00e9e. Dans le doute, l&rsquo;estimateur sans biais (<span class=\"arabpsy-math-inline\" data-latex=\"n - 1\">$n &#8211; 1$<\/span>) doit \u00eatre syst\u00e9matiquement privil\u00e9gi\u00e9 afin d&rsquo;assurer l&rsquo;interop\u00e9rabilit\u00e9 des inf\u00e9rences multivari\u00e9es ult\u00e9rieures.<\/p>\n<h2>7. G\u00e9n\u00e9ration de la matrice de covariance avec la biblioth\u00e8que Pandas<\/h2>\n<h3>7.1 Encapsulation des donn\u00e9es dans un DataFrame<\/h3>\n<p>Bien que les tableaux NumPy excellent dans la manipulation matricielle brute, ils pr\u00e9sentent une limite ergonomique majeure : les dimensions n&rsquo;y sont index\u00e9es que par des coordonn\u00e9es ordinales num\u00e9riques enti\u00e8res (0, 1, 2&#8230;), ce qui occulte le sens substantiel des variables et accro\u00eet le risque d&rsquo;erreurs d&rsquo;attribution lors d&rsquo;analyses complexes. L&rsquo;infrastructure offerte par la biblioth\u00e8que Pandas comble id\u00e9alement cette lacune gr\u00e2ce \u00e0 l&rsquo;objet <code>pandas.DataFrame<\/code>.<\/p>\n<p>L&rsquo;encapsulation d&rsquo;une matrice NumPy dans un DataFrame permet d&rsquo;associer des m\u00e9tadonn\u00e9es s\u00e9mantiques riches, telles que le nom explicite des construits \u00e9valu\u00e9s le long des colonnes et des identifiants nominatifs ou codifi\u00e9s pour les participants le long de l&rsquo;index des lignes :<\/p>\n<p><code>columns = ['Mathematiques', 'Sciences', 'Histoire']<br \/>sujets = ['Etudiant_A', 'Etudiant_B', 'Etudiant_C', 'Etudiant_D', 'Etudiant_E']<\/p>\n<p>df_psychometrie = pd.DataFrame(data=data_by_subject, index=sujets, columns=columns)<\/code><\/p>\n<p>Cette repr\u00e9sentation sous forme de tableau de donn\u00e9es structur\u00e9 fluidifie consid\u00e9rablement les \u00e9tapes subs\u00e9quentes du flux analytique, permettant l&rsquo;interrogation intuitive des donn\u00e9es via des expressions vectoris\u00e9es claires et facilitant l&rsquo;int\u00e9gration des m\u00e9triques dans des rapports statistiques document\u00e9s.<\/p>\n<h3>7.2 Application de la m\u00e9thode .cov() de Pandas<\/h3>\n<p>L&rsquo;extraction de la matrice de covariance \u00e0 partir d&rsquo;un DataFrame s&rsquo;effectue d&rsquo;une mani\u00e8re remarquablement directe et concise par l&rsquo;appel de la m\u00e9thode <code>.cov()<\/code>. Contrairement aux nuances d&rsquo;orientation axiale rencontr\u00e9es avec NumPy, la m\u00e9thode native de Pandas pr\u00e9suppose toujours que les colonnes incarnent les variables al\u00e9atoires d&rsquo;int\u00e9r\u00eat :<\/p>\n<p><code>pandas_cov_matrix = df_psychometrie.cov()<\/code><\/p>\n<p>Le r\u00e9sultat g\u00e9n\u00e9r\u00e9 par cette instruction est lui-m\u00eame un DataFrame carr\u00e9 (<span class=\"arabpsy-math-inline\" data-latex=\"p \\times p\">$p \\times p$<\/span>) dont les index de lignes et de colonnes reprennent scrupuleusement les intitul\u00e9s textuels des variables (<code>'Mathematiques'<\/code>, <code>'Sciences'<\/code>, <code>'Histoire'<\/code>). Cette labellisation intrins\u00e8que \u00e9limine toute ambigu\u00eft\u00e9 lors de l&rsquo;inspection visuelle ou de l&rsquo;extraction par cl\u00e9 textuelle, par exemple via <code>pandas_cov_matrix.loc['Mathematiques', 'Sciences']<\/code>.<\/p>\n<p>Il est fondamental de noter que l&rsquo;impl\u00e9mentation de <code>.cov()<\/code> dans Pandas applique <em>exclusivement et par d\u00e9faut<\/em> l&rsquo;estimateur sans biais avec correction de Bessel (<span class=\"arabpsy-math-inline\" data-latex=\"n - 1\">$n &#8211; 1$<\/span>). Contrairement \u00e0 NumPy, la m\u00e9thode Pandas ne propose pas de commutateur direct de type <code>bias=True<\/code>, illustrant un ancrage philosophique orient\u00e9 prioritairement vers l&rsquo;inf\u00e9rence statistique et l&rsquo;\u00e9conom\u00e9trie appliqu\u00e9e.<\/p>\n<h3>7.3 Contr\u00f4le de robustesse et calcul par paires<\/h3>\n<p>L&rsquo;un des avantages les plus d\u00e9cisifs de Pandas r\u00e9side dans sa prise en charge native, flexible et sophistiqu\u00e9e des enregistrements lacunaires, une probl\u00e9matique omnipr\u00e9sente lors de la collecte de questionnaires psychologiques ou d&rsquo;\u00e9valuations cliniques. Lorsqu&rsquo;un individu omet de r\u00e9pondre \u00e0 une section d&rsquo;un test, la valeur associ\u00e9e prend la forme d&rsquo;un <code>NaN<\/code> (Not a Number).<\/p>\n<p>Face \u00e0 ce sc\u00e9nario, NumPy g\u00e9n\u00e9rerait par d\u00e9faut une matrice enti\u00e8rement contamin\u00e9e de valeurs non d\u00e9finies, exigeant un filtrage pr\u00e9alable manuel. Pandas, en revanche, op\u00e8re une suppression des valeurs manquantes par paire (<em>pairwise deletion<\/em>). La covariance entre la variable <span class=\"arabpsy-math-inline\" data-latex=\"j\">$j$<\/span> et la variable <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span> est alors estim\u00e9e en exploitant l&rsquo;ensemble exhaustif des individus disposant simultan\u00e9ment de mesures valides pour ces deux dimensions pr\u00e9cises.<\/p>\n<p>La m\u00e9thode <code>.cov()<\/code> int\u00e8gre un param\u00e8tre de robustesse particuli\u00e8rement utile : <code>min_periods<\/code>. Cet argument permet de contraindre le nombre minimal d&rsquo;observations conjointes non manquantes indispensables pour valider l&rsquo;estimation d&rsquo;une cellule donn\u00e9e. Si pour une paire d&rsquo;items, le volume d&rsquo;enregistrements simultan\u00e9s descend sous ce seuil critique, la fonction renvoie prudemment <code>NaN<\/code> pour cette case pr\u00e9cise, \u00e9vitant ainsi d&rsquo;inf\u00e9rer des covariances instables sur la base d&rsquo;une ou deux donn\u00e9es isol\u00e9es.<\/p>\n<p>Enfin, les r\u00e9sultats tabulaires obtenus via Pandas se pr\u00eatent instantan\u00e9ment \u00e0 des op\u00e9rations d&rsquo;exportation vers des formats standardis\u00e9s de diffusion scientifique, au moyen de m\u00e9thodes telles que <code>.to_csv()<\/code> ou <code>.to_latex()<\/code> pour une incorporation directe dans un manuscrit acad\u00e9mique formalis\u00e9.<\/p>\n<h2>8. Interpr\u00e9tation analytique et clinique des r\u00e9sultats de covariance<\/h2>\n<h3>8.1 D\u00e9codage des amplitudes et des signes statistiques<\/h3>\n<p>L&rsquo;interpr\u00e9tation clinique ou th\u00e9orique d&rsquo;une matrice de covariance exige de d\u00e9crypter en premier lieu la polarit\u00e9 des signes scalaires. Un coefficient de covariance positif entre les performances en math\u00e9matiques et en sciences traduit une dynamique de synchronie adaptative : les \u00e9tudiants qui manifestent une efficience sup\u00e9rieure \u00e0 la moyenne dans la r\u00e9solution de probl\u00e8mes formels ont \u00e9galement tendance \u00e0 afficher un niveau de ma\u00eetrise sup\u00e9rieur dans les disciplines d&rsquo;investigation empirique.<\/p>\n<p>\u00c0 l&rsquo;inverse, l&rsquo;apparition d&rsquo;une covariance n\u00e9gative entre deux dimensions psychologiques r\u00e9v\u00e8le une relation d&rsquo;antagonisme fonctionnel ou un m\u00e9canisme de compensation cognitive. Si, par exemple, le score en analyse textuelle et historique \u00e9voluait en sens inverse de la performance en calcul math\u00e9matique, cela pourrait orienter l&rsquo;analyste vers l&rsquo;hypoth\u00e8se de profils de sp\u00e9cialisation cognitive polaris\u00e9s, o\u00f9 l&rsquo;investissement pr\u00e9f\u00e9rentiel dans les comp\u00e9tences verbales s&rsquo;accompagne d&rsquo;un d\u00e9sengagement relatif du domaine logico-quantitatif.<\/p>\n<p>Toutefois, une r\u00e9serve interpr\u00e9tative majeure doit \u00eatre formul\u00e9e : l&rsquo;amplitude num\u00e9rique brute d&rsquo;une covariance ne permet en aucun cas de statuer sur la force absolue ou l&rsquo;intensit\u00e9 du lien. Contrairement \u00e0 une id\u00e9e re\u00e7ue tenace, une covariance chiffr\u00e9e \u00e0 45 ne traduit pas n\u00e9cessairement une association plus \u00e9troite qu&rsquo;une covariance \u00e9tablie \u00e0 2,5. Cette limitation d\u00e9coule directement de la d\u00e9pendance dimensionnelle de la m\u00e9trique vis-\u00e0-vis des \u00e9chelles de mesure primitives.<\/p>\n<h3>8.2 Effet de l&rsquo;\u00e9chelle de mesure sur la grandeur des coefficients<\/h3>\n<p>La covariance est une statistique non born\u00e9e dont l&rsquo;unit\u00e9 de mesure correspond au produit strict des unit\u00e9s des deux variables impliqu\u00e9es. Consid\u00e9rons une exp\u00e9rience \u00e9valuant le lien entre un score de pr\u00e9cision \u00e0 un test attentionnel (mesur\u00e9 en pourcentage de r\u00e9ussite, de 0 \u00e0 100) et la latence motrice associ\u00e9e.<\/p>\n<p>Si la latence motrice est consign\u00e9e en secondes, les d\u00e9viations s&rsquo;exprimeront en fractions d\u00e9cimales (par exemple 0,25 seconde). La covariance r\u00e9sultante sera alors d&rsquo;un ordre de grandeur tr\u00e8s modeste. Si, sans alt\u00e9rer d&rsquo;un iota le comportement des sujets, l&rsquo;exp\u00e9rimentateur convertit arbitrairement ces temps de r\u00e9action en millisecondes (multipliant chaque valeur par 1000), la nouvelle covariance math\u00e9matique sera instantan\u00e9ment multipli\u00e9e par un facteur 1000 !<\/p>\n<p>Cette sensibilit\u00e9 absolue aux transformations lin\u00e9aires de mise \u00e0 l&rsquo;\u00e9chelle rend p\u00e9rilleuse toute tentative de comparaison inter-tests directe sur la base unique de la covariance brute. Deux instruments psychom\u00e9triques mesurant un construit analogue avec des graduations d&rsquo;\u00e9chelle diff\u00e9rentes g\u00e9n\u00e9reront des matrices de covariance formellement incomparables au niveau de leurs \u00e9l\u00e9ments scalaires non standardis\u00e9s, soulignant l&rsquo;imp\u00e9rieuse n\u00e9cessit\u00e9 m\u00e9thodologique d&rsquo;une standardisation pr\u00e9liminaire ou d&rsquo;une conversion en coefficients de corr\u00e9lation adimensionnels.<\/p>\n<h3>8.3 \u00c9tude de cas : Corr\u00e9lations latentes entre disciplines scolaires<\/h3>\n<p>Appliquons cette grille de lecture analytique aux coefficients calcul\u00e9s sur notre \u00e9chantillon didactique d&rsquo;\u00e9tudiants. L&rsquo;examen des covariances crois\u00e9es r\u00e9v\u00e8le un patron hautement instructif :<\/p>\n<p>La covariance entre les math\u00e9matiques et les sciences s&rsquo;\u00e9tablit \u00e0 une valeur positive robuste (<span class=\"arabpsy-math-inline\" data-latex=\"+35.5\">$+35.5$<\/span>), refl\u00e9tant une forte tendance au co-d\u00e9veloppement des aptitudes formelles. En revanche, la covariance observ\u00e9e entre les math\u00e9matiques et l&rsquo;histoire ($ -18.25 <span class=\"arabpsy-math-inline\" data-latex=\") affiche un signe n\u00e9gatif, de m\u00eame que celle unissant les sciences et l&#039;histoire (\">$) affiche un signe n\u00e9gatif, de m\u00eame que celle unissant les sciences et l&rsquo;histoire ($<\/span> -15.5 $).<\/p>\n<p>Dans une perspective psychom\u00e9trique quantitative, ces r\u00e9sultats interrogent l&rsquo;existence d&rsquo;un facteur g\u00e9n\u00e9ral d&rsquo;intelligence univoque (le traditionnel <em>facteur g<\/em> postul\u00e9 par <a rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Charles_Spearman\">Charles Spearman<\/a>), qui pr\u00e9dirait une positivit\u00e9 g\u00e9n\u00e9ralis\u00e9e de l&rsquo;ensemble des \u00e9l\u00e9ments hors-diagonale (ph\u00e9nom\u00e8ne connu sous le nom de <em>positive manifold<\/em>). L&rsquo;\u00e9mergence de covariances n\u00e9gatives nettes au sein de cet \u00e9chantillon pointe plut\u00f4t vers un mod\u00e8le bifactoriel ou vers des ph\u00e9nom\u00e8nes de dissociation neuropsychologique, caract\u00e9ris\u00e9s par des profils d&rsquo;aptitudes s\u00e9lectives et diff\u00e9renci\u00e9es.<\/p>\n<h2>9. Visualisation graphique de la matrice de covariance en Python<\/h2>\n<h3>9.1 Repr\u00e9sentation sous forme de carte thermique avec Seaborn<\/h3>\n<p>Bien que l&rsquo;examen d&rsquo;un tableau de chiffres demeure incontournable pour les calculs de pr\u00e9cision, l&rsquo;exploration de structures associatives \u00e0 haute dimensionnalit\u00e9 b\u00e9n\u00e9ficie immens\u00e9ment d&rsquo;une repr\u00e9sentation graphique spatialis\u00e9e. La m\u00e9thode de choix pour projeter une matrice de dispersion r\u00e9side dans la confection d&rsquo;une carte thermique (<a rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Carte_thermique\">heatmap<\/a>), qui convertit l&rsquo;amplitude continue des coefficients en un gradient chromatique discernable instantan\u00e9ment.<\/p>\n<p>La biblioth\u00e8que Seaborn offre une fonction particuli\u00e8rement \u00e9volu\u00e9e pour accomplir cette t\u00e2che : <code>sns.heatmap()<\/code>. Pour restituer fid\u00e8lement la structure de nos donn\u00e9es sans trahir les propri\u00e9t\u00e9s statistiques sous-jacentes, il est crucial de param\u00e9trer judicieusement la palette de couleurs. D\u00e8s lors que la matrice contient \u00e0 la fois des covariances positives et n\u00e9gatives, une palette divergente centr\u00e9e sur z\u00e9ro s&rsquo;av\u00e8re imp\u00e9rative :<\/p>\n<p><code>plt.figure(figsize=(8, 6))<br \/>sns.heatmap(pandas_cov_matrix, annot=True, fmt=\".2f\", cmap='coolwarm', center=0, cbar=True, square=True)<\/code><\/p>\n<p>L&rsquo;activation de l&rsquo;argument <code>annot=True<\/code> garantit l&rsquo;affichage textuel explicite de la valeur num\u00e9rique au sein de chaque cellule, tandis que <code>center=0<\/code> ancre rigoureusement la teinte neutre de la palette sur une covariance nulle. Ainsi, les associations positives sautent aux yeux sous des tonalit\u00e9s chaudes (rouges), tandis que les covariations inverses se d\u00e9tachent nettement sous des teintes froides (bleues).<\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/covarianceMatrixPython3.png\" alt=\"Covariance matrix in Python\" \/><figcaption>Covariance matrix in Python<\/figcaption><\/figure>\n<h3>9.2 Personnalisation graphique avec Matplotlib<\/h3>\n<p>Pour r\u00e9pondre aux normes exigeantes des publications acad\u00e9miques internationales (telles que les recommandations stylistiques de l&rsquo;American Psychological Association &#8211; APA), le graphique brut g\u00e9n\u00e9r\u00e9 par d\u00e9faut n\u00e9cessite des ajustements typographiques et structurels fins. Matplotlib permet un contr\u00f4le absolu sur chaque \u00e9l\u00e9ment constitutif de l&rsquo;image.<\/p>\n<p>Il convient de d\u00e9finir une r\u00e9solution d&rsquo;affichage \u00e9lev\u00e9e (au moins 300 points par pouce ou DPI), d&rsquo;ajuster l&rsquo;orientation des \u00e9tiquettes textuelles pour en optimiser la lisibilit\u00e9 et de doter la figure d&rsquo;un titre contextuel rigoureux :<\/p>\n<p><code>plt.title(\"Matrice de Variance-Covariance des \u00c9preuves Cognitives (N = 5)\", fontsize=14, fontweight='bold', pad=15)<br \/>plt.xticks(fontsize=11, rotation=0)<br \/>plt.yticks(fontsize=11, rotation=0)<br \/>plt.tight_layout()<\/p>\n<p># Sauvegarde en format vectoriel haute d\u00e9finition<br \/>plt.savefig(\"matrice_covariance_psychometrie.pdf\", dpi=300, format='pdf')<br \/>plt.show()<\/code><\/p>\n<p>L&rsquo;exportation dans un format vectoriel non destructif tel que le PDF ou le SVG pr\u00e9serve l&rsquo;int\u00e9grit\u00e9 visuelle des trac\u00e9s quelle que soit la r\u00e9solution d&rsquo;impression, \u00e9liminant tout artefact de pixellisation lors de la composition typographique finale d&rsquo;un article scientifique.<\/p>\n<h3>9.3 Visualisation conjointe par nuages de points matriciels (Pairplot)<\/h3>\n<p>La matrice de covariance r\u00e9sume un syst\u00e8me multivari\u00e9 en ne conservant que les deux premiers moments de la distribution (la tendance centrale et la dispersion lin\u00e9aire de second ordre). Cette r\u00e9duction d&rsquo;information pr\u00e9suppose tacitement que les relations entre les variables soient approximativement lin\u00e9aires et d\u00e9pourvues d&rsquo;asym\u00e9tries pathologiques.<\/p>\n<p>Afin de valider empiriquement ce postulat indispensable, la g\u00e9n\u00e9ration d&rsquo;une grille de dispersion bivari\u00e9e via <code>sns.pairplot()<\/code> s&rsquo;impose comme une pr\u00e9caution m\u00e9thodologique \u00e9l\u00e9mentaire. Cette fonction projette l&rsquo;ensemble des nuages de points crois\u00e9s deux \u00e0 deux sur les zones hors-diagonale, tout en affichant l&rsquo;histogramme marginal ou l&rsquo;estimation par noyau de la densit\u00e9 (KDE) le long de la diagonale principale :<\/p>\n<p><code>g = sns.pairplot(df_psychometrie, diag_kind='kde', kind='reg')<br \/>g.fig.suptitle(\"Distributions Marginales et Ajustements Lin\u00e9aires Bivari\u00e9s\", y=1.02, fontsize=14)<\/code><\/p>\n<p>L&rsquo;inclusion d&rsquo;une droite de r\u00e9gression locale permet d&rsquo;identifier visuellement d&rsquo;\u00e9ventuels effets de plafond ou de plancher, des discontinuit\u00e9s de mesure ou des relations en U invers\u00e9. Si une association non lin\u00e9aire flagrante venait \u00e0 se manifester, l&rsquo;analyste saurait imm\u00e9diatement que la matrice de covariance lin\u00e9aire sous-estime gravement la v\u00e9ritable d\u00e9pendance fonctionnelle reliant les dimensions \u00e9valu\u00e9es.<\/p>\n<h2>10. Transition m\u00e9thodologique : De la matrice de covariance \u00e0 la matrice de corr\u00e9lation<\/h2>\n<h3>10.1 Op\u00e9ration math\u00e9matique de standardisation<\/h3>\n<p>Pour affranchir l&rsquo;analyse de la d\u00e9pendance vis-\u00e0-vis des unit\u00e9s de mesure physiques ou psychom\u00e9triques primitives, le passage de la matrice de covariance \u00e0 la matrice de corr\u00e9lation lin\u00e9aire de Pearson constitue une \u00e9tape universelle. Ce processus \u00e9quivaut \u00e0 normaliser conjointement chaque variable al\u00e9atoire en la divisant par son propre \u00e9cart-type marginal :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"r_{XY} = \\frac{operatorname{Cov}(X, Y)}{\\sigma_X \\sigma_Y} = \\frac{\\sigma_{XY}}{\\sqrt{\\sigma_{XX}} \\sqrt{\\sigma_{YY}}}\">$$r_{XY} = \\frac{operatorname{Cov}(X, Y)}{\\sigma_X \\sigma_Y} = \\frac{\\sigma_{XY}}{\\sqrt{\\sigma_{XX}} \\sqrt{\\sigma_{YY}}}$$<\/span><\/p>\n<p>Cette op\u00e9ration alg\u00e9brique confine strictement la valeur du coefficient r\u00e9sultant au sein de l&rsquo;intervalle ferm\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"[-1, +1]\">$[-1, +1]$<\/span>. Un coefficient unitaire (<span class=\"arabpsy-math-inline\" data-latex=\"+1\">$+1$<\/span>) signale une relation lin\u00e9aire positive parfaite, une valeur de <span class=\"arabpsy-math-inline\" data-latex=\"-1\">$-1$<\/span> traduit une association inverse absolue, tandis qu&rsquo;une valeur de 0 stipule l&rsquo;absence int\u00e9grale de relation lin\u00e9aire.<\/p>\n<p>Au niveau matriciel, la transition s&rsquo;op\u00e8re de mani\u00e8re compacte. Soit <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{D}\">$\\mathbf{D}$<\/span> une matrice diagonale contenant exclusivement les \u00e9carts-types marginaux du syst\u00e8me, c&rsquo;est-\u00e0-dire que pour chaque \u00e9l\u00e9ment diagonal <span class=\"arabpsy-math-inline\" data-latex=\"d_{jj} = \\sqrt{\\sigma_{jj}} = \\sigma_j\">$d_{jj} = \\sqrt{\\sigma_{jj}} = \\sigma_j$<\/span>. La matrice de corr\u00e9lation <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{R}\">$\\mathbf{R}$<\/span> s&rsquo;obtient alors par la pr\u00e9- et post-multiplication de la matrice de covariance <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{S}\">$\\mathbf{S}$<\/span> par l&rsquo;inverse de cette matrice d&rsquo;\u00e9chelles :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\mathbf{R} = \\mathbf{D}^{-1} \\mathbf{S} \\mathbf{D}^{-1}\">$$\\mathbf{R} = \\mathbf{D}^{-1} \\mathbf{S} \\mathbf{D}^{-1}$$<\/span><\/p>\n<p>Par construction math\u00e9matique intrins\u00e8que, la matrice de corr\u00e9lation conserve l&rsquo;enti\u00e8re sym\u00e9trie de la matrice de covariance tout en fixant immuablement chacun des \u00e9l\u00e9ments de sa diagonale principale \u00e0 la valeur exacte de 1, puisque la corr\u00e9lation d&rsquo;une variable avec elle-m\u00eame est par d\u00e9finition unitaire.<\/p>\n<h3>10.2 Transformation en Python<\/h3>\n<p>L&rsquo;\u00e9cosyst\u00e8me Python propose plusieurs trajectoires pour effectuer cette m\u00e9tamorphose alg\u00e9brique, allant des m\u00e9thodes natives directes aux transformations matricielles manuelles.<\/p>\n<p>Sous Pandas, l&rsquo;obtention de la matrice de corr\u00e9lation est triviale gr\u00e2ce \u00e0 l&rsquo;appel de <code>df.corr()<\/code>, qui calcule imm\u00e9diatement les coefficients de Pearson par d\u00e9faut :<\/p>\n<p><code>corr_matrix_pandas = df_psychometrie.corr()<\/code><\/p>\n<p>Sous NumPy, la fonction \u00e9quivalente <code>np.corrcoef()<\/code> prend en charge les donn\u00e9es vectoris\u00e9es :<\/p>\n<p><code>corr_matrix_numpy = np.corrcoef(data_by_subject, rowvar=False)<\/code><\/p>\n<p>Pour illustrer la m\u00e9canique alg\u00e9brique formelle \u00e0 des fins didactiques ou algorithmiques avanc\u00e9es, il est particuli\u00e8rement formateur d&rsquo;impl\u00e9menter manuellement la transformation matricielle \u00e9voqu\u00e9e pr\u00e9c\u00e9demment \u00e0 partir de la matrice de covariance d\u00e9j\u00e0 calcul\u00e9e :<\/p>\n<p><code># Extraction des variances diagonales<br \/>diag_variances = np.diag(cov_matrix)<\/p>\n<p># Calcul des inverses des \u00e9carts-types<br \/>inv_std_devs = 1.0 \/ np.sqrt(diag_variances)<\/p>\n<p># Cr\u00e9ation de la matrice diagonale D^{-1}<br \/>D_inv = np.diag(inv_std_devs)<\/p>\n<p># Double produit matriciel : D^{-1} * S * D^{-1}<br \/>manual_corr_matrix = np.dot(np.dot(D_inv, cov_matrix), D_inv)<\/code><\/p>\n<p>La confrontation des sorties entre <code>cov_matrix<\/code> et <code>corr_matrix_pandas<\/code> permet de mesurer le gain d&rsquo;interpr\u00e9tabilit\u00e9 clinique : des covariances num\u00e9riques disparates se m\u00e9tamorphosent en indices de d\u00e9pendance normalis\u00e9s directement comparables, facilitant la comparaison transversale entre les \u00e9preuves acad\u00e9miques.<\/p>\n<h2>11. Exploitation de la matrice de covariance dans les analyses multivari\u00e9es avanc\u00e9es<\/h2>\n<h3>11.1 D\u00e9composition spectrale et Analyse en Composantes Principales (ACP)<\/h3>\n<p>L&rsquo;utilit\u00e9 m\u00e9thodologique de la matrice de covariance ne se borne pas \u00e0 la simple inspection descriptive de ses coefficients : elle constitue le moteur analytique de l&rsquo;<a rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Analyse_en_composantes_principales\">Analyse en Composantes Principales<\/a> (ACP). L&rsquo;ACP vise \u00e0 projeter un nuage de points multivari\u00e9 complexe sur un ensemble d&rsquo;axes factoriels orthogonaux non corr\u00e9l\u00e9s, qui maximisent successivement la variance captur\u00e9e.<\/p>\n<p>Sur le plan math\u00e9matique, cette op\u00e9ration repose sur la d\u00e9composition spectrale (ou diagonalisation) de la matrice de covariance <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{S}\">$\\mathbf{S}$<\/span>. \u00c9tant sym\u00e9trique et semi-d\u00e9finie positive, la matrice peut toujours \u00eatre d\u00e9compos\u00e9e sous la forme :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\mathbf{S} = \\mathbf{V} \\mathbf{\\Lambda} \\mathbf{V}^T\">$$\\mathbf{S} = \\mathbf{V} \\mathbf{\\Lambda} \\mathbf{V}^T$$<\/span><\/p>\n<p>o\u00f9 <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{\\Lambda}\">$\\mathbf{\\Lambda}$<\/span> est une matrice diagonale contenant les valeurs propres (<span class=\"arabpsy-math-inline\" data-latex=\"\\lambda_1 ge \\lambda_2 ge dots ge \\lambda_p ge 0\">$\\lambda_1 ge \\lambda_2 ge dots ge \\lambda_p ge 0$<\/span>) et <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{V}\">$\\mathbf{V}$<\/span> est une matrice unitaire constitu\u00e9e des vecteurs propres orthogonaux associ\u00e9s. En Python, cette op\u00e9ration de d\u00e9composition s&rsquo;ex\u00e9cute directement via le sous-module d&rsquo;alg\u00e8bre lin\u00e9aire de NumPy :<\/p>\n<p><code>eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)<\/code><\/p>\n<p>Chaque valeur propre quantifie la part absolue de variance globale expliqu\u00e9e par la composante principale correspondante. La somme arithm\u00e9tique de toutes les valeurs propres est rigoureusement \u00e9gale \u00e0 la trace de la matrice de covariance d&rsquo;origine (la somme des variances marginales). L&rsquo;examen du ratio <span class=\"arabpsy-math-inline\" data-latex=\"\\lambda_1 \/ \\sum \\lambda_i\">$\\lambda_1 \/ \\sum \\lambda_i$<\/span> renseigne imm\u00e9diatement le psychom\u00e9tricien sur la viabilit\u00e9 d&rsquo;un mod\u00e8le unidimensionnel pour r\u00e9sumer le profil cognitif complet d&rsquo;un individu.<\/p>\n<h3>11.2 Calcul de la distance statistique de Mahalanobis<\/h3>\n<p>Dans un espace multivari\u00e9 h\u00e9t\u00e9rog\u00e8ne, la distance euclidienne classique est m\u00e9thodologiquement inop\u00e9rante pour \u00e9valuer l&rsquo;\u00e9loignement d&rsquo;une observation par rapport au centre de gravit\u00e9 d&rsquo;un groupe, car elle traite les axes comme s&rsquo;ils \u00e9taient orthogonaux et de dispersions identiques. Pour corriger cette distorsion, on utilise la <a rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Distance_de_Mahalanobis\">distance de Mahalanobis<\/a>, qui pond\u00e8re la d\u00e9viation vectorielle par l&rsquo;inverse de la matrice de covariance globale :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"D_M(\\mathbf{x}, boldsymbol{\\mu}) = \\sqrt{(\\mathbf{x} - boldsymbol{\\mu})^T \\mathbf{S}^{-1} (\\mathbf{x} - boldsymbol{\\mu})}\">$$D_M(\\mathbf{x}, boldsymbol{\\mu}) = \\sqrt{(\\mathbf{x} &#8211; boldsymbol{\\mu})^T \\mathbf{S}^{-1} (\\mathbf{x} &#8211; boldsymbol{\\mu})}$$<\/span><\/p>\n<p>Cette m\u00e9trique statistique d\u00e9forme l&rsquo;espace m\u00e9trique en tenant compte des corr\u00e9lations existantes et des variances diff\u00e9rentielles. En pratique, l&rsquo;inversion de la matrice s&rsquo;effectue au moyen de <code>np.linalg.inv()<\/code> ou via les routines sp\u00e9cialis\u00e9es de SciPy :<\/p>\n<p><code>from scipy.spatial.distance import mahalanobis<\/p>\n<p># Calcul du vecteur moyen et de la matrice inverse<br \/>mean_vector = np.mean(data_by_subject, axis=0)<br \/>inv_cov = np.linalg.inv(cov_matrix)<\/p>\n<p># \u00c9valuation de la distance pour le premier sujet<br \/>distance_sujet_1 = mahalanobis(data_by_subject[0], mean_vector, inv_cov)<\/code><\/p>\n<p>Dans les contextes d&rsquo;\u00e9valuation clinique et de d\u00e9pistage neuropsychologique, le carr\u00e9 de la distance de Mahalanobis suit asymptotiquement une distribution du khi-deux (<span class=\"arabpsy-math-inline\" data-latex=\"\\chi^2\">$\\chi^2$<\/span>) \u00e0 <em>p<\/em> degr\u00e9s de libert\u00e9. Cette propri\u00e9t\u00e9 offre un crit\u00e8re probabiliste formel pour d\u00e9tecter de mani\u00e8re automatis\u00e9e les profils cognitifs atypiques ou aberrants (<em>outliers<\/em> multivari\u00e9s), caract\u00e9ris\u00e9s par des configurations de scores extr\u00eamement improbables au regard de la covariance globale de la population.<\/p>\n<h3>11.3 Introduction aux mod\u00e8les \u00e0 variables latentes et analyses factorielles<\/h3>\n<p>L&rsquo;aboutissement m\u00e9thodologique de l&rsquo;analyse structurelle des matrices de covariance r\u00e9side dans l&rsquo;ajustement de mod\u00e8les \u00e0 variables latentes, formalis\u00e9 par l&rsquo;analyse factorielle exploratoire ou confirmatoire et les mod\u00e8les d&rsquo;\u00e9quations structurelles (<a rel=\"noopener noreferrer\" href=\"https:\/\/semopy.com\/\">Semopy<\/a> en environnement Python). Le postulat central de ces approches stipule que la matrice de covariance observ\u00e9e empiriquement (<span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{S}\">$\\mathbf{S}$<\/span>) peut \u00eatre reproduite avec une distorsion minimale par une matrice de covariance th\u00e9orique param\u00e9tr\u00e9e <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{\\Sigma}(boldsymbol{\\theta})\">$\\mathbf{\\Sigma}(boldsymbol{\\theta})$<\/span> :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\mathbf{\\Sigma}(boldsymbol{\\theta}) = \\mathbf{\\Lambda} \\mathbf{\\Phi} \\mathbf{\\Lambda}^T + \\mathbf{\\Theta}_\\epsilon\">$$\\mathbf{\\Sigma}(boldsymbol{\\theta}) = \\mathbf{\\Lambda} \\mathbf{\\Phi} \\mathbf{\\Lambda}^T + \\mathbf{\\Theta}_\\epsilon$$<\/span><\/p>\n<p>Dans cette \u00e9quation structurelle classique, <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{\\Lambda}\">$\\mathbf{\\Lambda}$<\/span> d\u00e9signe la matrice des saturations factorielles reliant les variables manifestes aux facteurs latents inobservables, <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{\\Phi}\">$\\mathbf{\\Phi}$<\/span> incarne la matrice de covariance entre les facteurs latents eux-m\u00eames, et <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{\\Theta}_\\epsilon\">$\\mathbf{\\Theta}_\\epsilon$<\/span> repr\u00e9sente la matrice diagonale des erreurs de mesure et variances uniques.<\/p>\n<p>L&rsquo;estimation algorithmique consiste \u00e0 minimiser une fonction de discr\u00e9pance (le plus souvent fond\u00e9e sur le maximum de vraisemblance multivari\u00e9) mesurant l&rsquo;\u00e9cart entre la matrice empirique et la matrice reconstruite. La matrice des r\u00e9sidus de covariance <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{S} - \\mathbf{\\Sigma}(\\hat{boldsymbol{\\theta}})\">$\\mathbf{S} &#8211; \\mathbf{\\Sigma}(\\hat{boldsymbol{\\theta}})$<\/span> constitue l&rsquo;indicateur diagnostique fondamental : si les r\u00e9sidus sont statistiquement proches de z\u00e9ro, le chercheur conclut \u00e0 la validit\u00e9 structurelle de sa th\u00e9orie cognitive sous-jacente.<\/p>\n<h2>12. R\u00e9solution des probl\u00e8mes courants, singularit\u00e9s matricielles et bonnes pratiques<\/h2>\n<h3>12.1 Matrices non inversibles et probl\u00e8mes de rang<\/h3>\n<p>L&rsquo;un des incidents num\u00e9riques les plus d\u00e9stabilisants rencontr\u00e9s lors du traitement multivari\u00e9 r\u00e9side dans la non-inversibilit\u00e9 d&rsquo;une matrice de covariance, couramment d\u00e9sign\u00e9e comme une singularit\u00e9 matricielle. Lorsqu&rsquo;une matrice est singuli\u00e8re, son d\u00e9terminant s&rsquo;annule rigoureusement (<span class=\"arabpsy-math-inline\" data-latex=\"det(\\mathbf{S}) = 0\">$det(\\mathbf{S}) = 0$<\/span>), rendant impossible l&rsquo;\u00e9valuation de son inverse classique <span class=\"arabpsy-math-inline\" data-latex=\"\\mathbf{S}^{-1}\">$\\mathbf{S}^{-1}$<\/span>, condition indispensable au calcul de la distance de Mahalanobis, \u00e0 la r\u00e9gression lin\u00e9aire g\u00e9n\u00e9ralis\u00e9e ou \u00e0 l&rsquo;ajustement de mod\u00e8les factoriels.<\/p>\n<p>Cette pathologie alg\u00e9brique d\u00e9coule g\u00e9n\u00e9ralement de deux situations empiriques bien identifi\u00e9es :<\/p>\n<ul>\n<li><strong>La multicolin\u00e9arit\u00e9 parfaite :<\/strong> Deux ou plusieurs variables du jeu de donn\u00e9es sont des combinaisons lin\u00e9aires directes d&rsquo;autres variables (par exemple, si un score total a \u00e9t\u00e9 malencontreusement inclus aux c\u00f4t\u00e9s des sous-scores partiels qui le composent).<\/li>\n<li><strong>Le d\u00e9ficit dimensionnel (<span class=\"arabpsy-math-inline\" data-latex=\"n &lt; p\">$n &lt; p$<\/span>) :<\/strong> Le nombre de sujets \u00e9valu\u00e9s (<span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span>) est inf\u00e9rieur ou \u00e9gal au nombre de variables mesur\u00e9es (<span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>). Dans ce cas de figure, le rang de la matrice centr\u00e9e ne peut exc\u00e9der <span class=\"arabpsy-math-inline\" data-latex=\"n - 1\">$n &#8211; 1$<\/span>, induisant m\u00e9caniquement une matrice carr\u00e9e <span class=\"arabpsy-math-inline\" data-latex=\"p \\times p\">$p \\times p$<\/span> de rang incomplet.<\/li>\n<\/ul>\n<p>Pour contourner cette impasse num\u00e9rique, deux solutions techniques de premier ordre peuvent \u00eatre d\u00e9ploy\u00e9es sous Python. La premi\u00e8re repose sur le calcul de la pseudo-inverse de Moore-Penrose via <code>np.linalg.pinv()<\/code>, qui fournit une solution approch\u00e9e au sens des moindres carr\u00e9s en annulant les valeurs propres nulles. La seconde m\u00e9thode, plus rigoureuse sur le plan statistique, consiste \u00e0 appliquer une r\u00e9gularisation de Tikhonov (ou <em>shrinkage<\/em> bay\u00e9sien), popularis\u00e9e par l&rsquo;estimateur de Ledoit-Wolf impl\u00e9ment\u00e9 dans la biblioth\u00e8que Scikit-Learn :<\/p>\n<p><code>from sklearn.covariance import LedoitWolf<\/p>\n<p># Estimation robuste et garantie inversible<br \/>lw = LedoitWolf().fit(data_by_subject)<br \/>regularized_cov = lw.covariance_<\/code><\/p>\n<p>Cette technique injecte une l\u00e9g\u00e8re p\u00e9nalisation le long de la diagonale principale, for\u00e7ant toutes les valeurs propres \u00e0 demeurer strictement positives tout en pr\u00e9servant fid\u00e8lement la structure relationnelle hors-diagonale.<\/p>\n<h3>12.2 Gestion des matrices non semi-d\u00e9finies positives<\/h3>\n<p>Une matrice de covariance th\u00e9orique doit imp\u00e9rativement \u00eatre semi-d\u00e9finie positive (PSD, pour <em>Positive Semi-Definite<\/em>), ce qui \u00e9quivaut \u00e0 stipuler que toutes ses valeurs propres doivent \u00eatre sup\u00e9rieures ou \u00e9gales \u00e0 z\u00e9ro. Or, dans les protocoles psychom\u00e9triques r\u00e9els, il arrive fr\u00e9quemment que la matrice empirique calcul\u00e9e viole cette exigence fondamentale et pr\u00e9sente des valeurs propres n\u00e9gatives minuscules mais destructrices.<\/p>\n<p>Cette d\u00e9rive d\u00e9coule presque syst\u00e9matiquement du traitement fragment\u00e9 des donn\u00e9es manquantes par suppression par paires (<em>pairwise deletion<\/em>). Lorsque les covariances sont estim\u00e9es sur des sous-\u00e9chantillons d&rsquo;individus divergents d&rsquo;une cellule \u00e0 l&rsquo;autre, la coh\u00e9rence g\u00e9om\u00e9trique globale de la matrice n&rsquo;est plus garantie. Cette situation proscrit formellement toute simulation de Monte-Carlo multivari\u00e9e via <code>np.random.multivariate_normal()<\/code>, cette fonction d\u00e9clenchant imm\u00e9diatement une lev\u00e9e d&rsquo;exception (<code>LinAlgError: matrix is not positive-semidefinite<\/code>).<\/p>\n<p>Pour assainir une telle structure alt\u00e9r\u00e9e, on peut recourir \u00e0 un algorithme de projection spectrale afin de localiser la matrice semi-d\u00e9finie positive la plus proche (au sens de la norme de Frobenius). La proc\u00e9dure consiste \u00e0 d\u00e9composer la matrice en valeurs\/vecteurs propres, \u00e0 seuiller les valeurs propres n\u00e9gatives \u00e0 z\u00e9ro (ou \u00e0 une valeur infinit\u00e9simale <span class=\"arabpsy-math-inline\" data-latex=\"epsilon &gt; 0\">$epsilon &gt; 0$<\/span>), puis \u00e0 reconstruire la matrice :<\/p>\n<p><code># D\u00e9composition spectrale<br \/>vals, vecs = np.linalg.eigh(cov_matrix)<\/p>\n<p># Troncation des valeurs propres n\u00e9gatives \u00e0 une valeur positive minimale<br \/>vals[vals &lt; 1e-8] = 1e-8<\/p>\n<p># Reconstruction de la matrice assainie<br \/>cov_matrix_repaired = vecs @ np.diag(vals) @ vecs.T<\/code><\/p>\n<p>Cette correction algorithmique restaure l&rsquo;int\u00e9grit\u00e9 alg\u00e9brique de la matrice tout en minimisant la distorsion des covariations empiriques r\u00e9elles collect\u00e9es aupr\u00e8s des sujets.<\/p>\n<h3>12.3 Synth\u00e8se des recommandations pour le code de recherche reproductible<\/h3>\n<p>L&rsquo;\u00e9laboration d&rsquo;un pipeline de traitement statistique en Python exige une discipline m\u00e9thodologique rigoureuse afin d&rsquo;assurer l&rsquo;exactitude des calculs, la lisibilit\u00e9 du code et la reproductibilit\u00e9 des conclusions scientifiques. En synth\u00e8se des d\u00e9monstrations d\u00e9velopp\u00e9es tout au long de ce guide, plusieurs r\u00e8gles op\u00e9rationnelles s&rsquo;imposent :<\/p>\n<ul>\n<li><strong>Explicitation syst\u00e9matique des param\u00e8tres :<\/strong> Ne laissez jamais s&rsquo;ex\u00e9cuter des arguments par d\u00e9faut ambigus. Dans tout appel \u00e0 <code>np.cov<\/code>, d\u00e9clarez express\u00e9ment l&rsquo;orientation axiale (<code>rowvar=False<\/code> pour une matrice d&rsquo;observations standard) et sp\u00e9cifiez la nature de l&rsquo;estimateur via <code>ddof=1<\/code> pour un \u00e9chantillon ou <code>ddof=0<\/code> pour une population.<\/li>\n<li><strong>V\u00e9rification formelle des postulats :<\/strong> Avant d&rsquo;engager des interpr\u00e9tations pouss\u00e9es, inspectez la distribution marginale de vos variables et assurez-vous de l&rsquo;absence de non-lin\u00e9arit\u00e9s critiques ou de points aberrants influents susceptibles de fausser artificiellement la somme des produits d&rsquo;\u00e9carts.<\/li>\n<li><strong>Contr\u00f4le du conditionnement matriciel :<\/strong> \u00c9valuez syst\u00e9matiquement le nombre de conditionnement de votre matrice \u00e0 l&rsquo;aide de <code>np.linalg.cond(cov_matrix)<\/code>. Un nombre de conditionnement trop \u00e9lev\u00e9 signale une quasi-singularit\u00e9 et commande la prudence avant toute tentative d&rsquo;inversion.<\/li>\n<li><strong>Architecture modulaire et tests unitaires :<\/strong> Encapsulez vos routines de calcul de covariance au sein de fonctions document\u00e9es int\u00e9grant des assertions de contr\u00f4le (validation des dimensions, absence de <code>NaN<\/code> non trait\u00e9s, validation du caract\u00e8re sym\u00e9trique via <code>np.allclose<\/code>).<\/li>\n<\/ul>\n<p>En observant scrupuleusement ces principes directeurs, l&rsquo;analyste quantitative et le chercheur en sciences comportementales s&rsquo;assurent d&rsquo;exploiter la matrice de covariance non pas comme une bo\u00eete noire algorithmique opaque, mais comme un instrument d&rsquo;investigation statistique d&rsquo;une puissance, d&rsquo;une \u00e9l\u00e9gance et d&rsquo;une pr\u00e9cision incomparables.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Anderson, T. W. (2003). <em>An introduction to multivariate statistical analysis<\/em> (3rd ed.). John Wiley &amp; Sons.<\/li>\n<li>Bessel, F. W. (1815). \u00dcber die Beurtheilung der Genauigkeit der Beobachtungen. <em>Zeitschrift f\u00fcr Astronomie und verwandte Wissenschaften<\/em>, 1, 33-42.<\/li>\n<li>Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., &#8230; &amp; Oliphant, T. E. (2020). Array programming with NumPy. <em>Nature<\/em>, 585(7825), 357-362. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1038\/s41586-020-2649-2\">https:\/\/doi.org\/10.1038\/s41586-020-2649-2<\/a><\/li>\n<li>Ledoit, O., &amp; Wolf, M. (2004). A well-conditioned estimator for large-dimensional covariance matrices. <em>Journal of Multivariate Analysis<\/em>, 88(2), 365-411. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/S0047-259X(03)00096-4\">https:\/\/doi.org\/10.1016\/S0047-259X(03)00096-4<\/a><\/li>\n<li>Mahalanobis, P. C. (1936). On the generalized distance in statistics. <em>Proceedings of the National Institute of Sciences of India<\/em>, 2(1), 49-55.<\/li>\n<li>McKinney, W. (2010). Data structures for statistical computing in Python. In <em>Proceedings of the 9th Python in Science Conference<\/em> (Vol. 445, pp. 51-56).<\/li>\n<li>Spearman, C. (1904). \u00ab\u00a0General Intelligence,\u00a0\u00bb objectively determined and measured. <em>The American Journal of Psychology<\/em>, 15(2), 201-292. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/1412107\">https:\/\/doi.org\/10.2307\/1412107<\/a><\/li>\n<li>Waskom, M. L. (2021). Seaborn: statistical data visualization. <em>Journal of Open Source Software<\/em>, 6(60), 3021. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.21105\/joss.03021\">https:\/\/doi.org\/10.21105\/joss.03021<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour calculer, interpr\u00e9ter et visualiser une matrice de covariance en Python appliqu\u00e9e \u00e0 l&rsquo;analyse de donn\u00e9es psychom\u00e9triques.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[2141,5039],"tags":[4308,2960,2466,16,2468],"class_list":["post-3013","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-quantitative","category-psychometrie-et-data-science","tag-matrice-de-covariance","tag-numpy","tag-pandas","tag-psychometrie","tag-python"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/3013","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=3013"}],"version-history":[{"count":0,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/3013\/revisions"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}