{"id":7760,"date":"2026-10-14T18:02:16","date_gmt":"2026-10-14T18:02:16","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-effectuer-un-test-de-chow-en-python\/"},"modified":"2026-10-14T18:02:16","modified_gmt":"2026-10-14T18:02:16","slug":"comment-effectuer-un-test-de-chow-en-python","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-effectuer-un-test-de-chow-en-python","title":{"rendered":"Comment effectuer un test de Chow en Python"},"content":{"rendered":"<p>L&rsquo;analyse des s\u00e9ries temporelles et des donn\u00e9es transversales ordonn\u00e9es repose fondamentalement sur l&rsquo;hypoth\u00e8se de constance param\u00e9trique, selon laquelle la relation liant une variable d\u00e9pendante \u00e0 un ensemble de pr\u00e9dicteurs demeure invariante sur l&rsquo;ensemble de la p\u00e9riode d&rsquo;observation. Dans la r\u00e9alit\u00e9 empirique des sciences \u00e9conomiques, financi\u00e8res, sociales et comportementales, cette hypoth\u00e8se d&rsquo;invariance est r\u00e9guli\u00e8rement invalid\u00e9e par l&rsquo;occurrence de chocs exog\u00e8nes, de r\u00e9formes institutionnelles, de crises financi\u00e8res ou de transitions structurelles majeures. Lorsque la dynamique sous-jacente d&rsquo;un ph\u00e9nom\u00e8ne subit une telle mutation, l&rsquo;estimation d&rsquo;un mod\u00e8le de r\u00e9gression lin\u00e9aire unique sur l&rsquo;int\u00e9gralit\u00e9 de l&rsquo;\u00e9chantillon engendre des estimateurs biais\u00e9s, inconsistants et d\u00e9pourvus de validit\u00e9 pr\u00e9dictive ou explicative.<\/p>\n<p>Pour r\u00e9pondre \u00e0 cette probl\u00e9matique fondamentale de l&rsquo;\u00e9conom\u00e9trie appliqu\u00e9e, Gregory Chow a d\u00e9velopp\u00e9 en 1960 un protocole inf\u00e9rentiel rigoureux, d\u00e9sormais universellement d\u00e9sign\u00e9 sous le nom de test de Chow. Fond\u00e9 sur la comparaison des sommes des carr\u00e9s des r\u00e9sidus d&rsquo;une r\u00e9gression globale contrainte et de deux sous-r\u00e9gressions sectorielles non contraintes, ce test permet d&rsquo;\u00e9valuer statistiquement si les coefficients d&rsquo;un mod\u00e8le lin\u00e9aire subissent une modification significative \u00e0 un point d&rsquo;inflexion pr\u00e9d\u00e9termin\u00e9. La d\u00e9tection formelle de ces ruptures structurelles constitue un pr\u00e9alable indispensable \u00e0 toute mod\u00e9lisation pr\u00e9dictive ou d\u00e9cisionnelle fiable, car elle permet de distinguer les fluctuations al\u00e9atoires de court terme des r\u00e9alignements structurels profonds de long terme.<\/p>\n<p>Dans l&rsquo;\u00e9cosyst\u00e8me contemporain de la science des donn\u00e9es, l&rsquo;environnement de programmation statistique Python s&rsquo;est impos\u00e9 comme le standard de facto pour la mod\u00e9lisation \u00e9conom\u00e9trique et l&rsquo;apprentissage automatique. Bien que des progiciels sp\u00e9cialis\u00e9s traditionnels aient longtemps monopolis\u00e9 ces proc\u00e9dures, la flexibilit\u00e9 et la rigueur des biblioth\u00e8ques telles que <a rel=\"noopener noreferrer\" href=\"https:\/\/www.statsmodels.org\/\">Statsmodels<\/a>, <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> offrent aujourd&rsquo;hui des capacit\u00e9s de mise en \u0153uvre, d&rsquo;automatisation et de diagnostic approfondi d&rsquo;une puissance in\u00e9dite. Ce guide exhaustif a pour vocation d&rsquo;exposer l&rsquo;ensemble des fondements math\u00e9matiques, des postulats distributionnels, des impl\u00e9mentations algorithmiques et des strat\u00e9gies d&rsquo;extension avanc\u00e9es n\u00e9cessaires pour ex\u00e9cuter, interpr\u00e9ter et diagnostiquer avec rigueur le test de Chow dans l&rsquo;environnement Python.<\/p>\n<h2>1. Fondements th\u00e9oriques et \u00e9pist\u00e9mologiques du test de Chow<\/h2>\n<h3>1.1 Origine et d\u00e9finition de la rupture structurelle<\/h3>\n<p>L&rsquo;av\u00e8nement du test de Chow trouve son ancrage historique dans les travaux s\u00e9minaux de l&rsquo;\u00e9conom\u00e8tre Gregory C. Chow, publi\u00e9s en 1960 au sein de la revue <em>Econometrica<\/em> sous le titre <em>\u00ab Tests of Equality Between Sets of Coefficients in Two Linear Regressions \u00bb<\/em>. Confront\u00e9 aux d\u00e9fis de la v\u00e9rification empirique des fonctions de demande de biens durables, notamment dans le secteur de l&rsquo;automobile aux \u00c9tats-Unis, Chow a formalis\u00e9 un cadre statistique permettant de trancher entre la constance temporelle d&rsquo;un vecteur de param\u00e8tres et son \u00e9clatement sous l&rsquo;effet de mutations structurelles macro\u00e9conomiques.<\/p>\n<p>Le concept d&rsquo;instabilit\u00e9 param\u00e9trique se d\u00e9finit formellement comme la situation dans laquelle le processus g\u00e9n\u00e9rateur de donn\u00e9es sous-jacent modifie ses r\u00e8gles de projection lin\u00e9aire au cours du temps. Dans un cadre de mod\u00e9lisation par les moindres carr\u00e9s ordinaires (MCO), cette instabilit\u00e9 peut se manifester sous diff\u00e9rentes formes g\u00e9om\u00e9triques et stochastiques :<\/p>\n<ul>\n<li><strong>Le changement d&rsquo;ordonn\u00e9e \u00e0 l&rsquo;origine (shift structurel) :<\/strong> la constante de la r\u00e9gression subit une translation discr\u00e8te, indiquant que le niveau de base de la variable d\u00e9pendante s&rsquo;est modifi\u00e9 de fa\u00e7on permanente, tandis que la sensibilit\u00e9 marginale aux pr\u00e9dicteurs demeure inchang\u00e9e.<\/li>\n<li><strong>Le changement de pente (rotation structurelle) :<\/strong> les coefficients directeurs associ\u00e9s aux variables explicatives changent de magnitude ou de signe, traduisant une modification profonde de l&rsquo;\u00e9lasticit\u00e9 ou de l&rsquo;impact relatif des covariables sur la variable d&rsquo;int\u00e9r\u00eat.<\/li>\n<li><strong>La rupture conjointe (shift et rotation combin\u00e9s) :<\/strong> l&rsquo;ordonn\u00e9e \u00e0 l&rsquo;origine et l&rsquo;ensemble des coefficients de pente subissent des alt\u00e9rations simultan\u00e9es, marquant une red\u00e9finition globale et int\u00e9grale du r\u00e9gime d&rsquo;\u00e9quilibre entre les variables.<\/li>\n<\/ul>\n<p>Les cons\u00e9quences th\u00e9oriques de l&rsquo;omission d&rsquo;une rupture structurelle av\u00e9r\u00e9e sont d\u00e9vastatrices pour l&rsquo;inf\u00e9rence statistique. Lorsqu&rsquo;un chercheur impose arbitrairement un vecteur de param\u00e8tres unique sur un \u00e9chantillon h\u00e9t\u00e9rog\u00e8ne travers\u00e9 par une discontinuit\u00e9, l&rsquo;estimateur des MCO tente d&rsquo;agr\u00e9ger deux processus g\u00e9om\u00e9triques inconciliables. Il en r\u00e9sulte un biais de sp\u00e9cification majeur, une d\u00e9gradation substantielle de la puissance des tests de Student usuels, une sous-estimation artificielle du pouvoir explicatif r\u00e9el du mod\u00e8le et, par-dessus tout, une persistance s\u00e9rielle trompeuse au sein des r\u00e9sidus, souvent confondue \u00e0 tort avec de l&rsquo;autocorr\u00e9lation temporelle intrins\u00e8que.<\/p>\n<h3>1.2 Principe sous-jacent de la comparaison de r\u00e9gressions<\/h3>\n<p>Le socle logique du test de Chow repose sur le principe de l&#8217;embo\u00eetement de mod\u00e8les statistiques dans le cadre des moindres carr\u00e9s. Pour d\u00e9terminer si une s\u00e9rie chronologique est soumise \u00e0 deux r\u00e9gimes distincts s\u00e9par\u00e9s par un \u00e9v\u00e9nement critique survenu \u00e0 la date <span class=\"arabpsy-math-inline\" data-latex=\"T^*\">$T^*$<\/span>, l&rsquo;\u00e9conom\u00e8tre formule deux visions concurrentes de la structure des donn\u00e9es : un mod\u00e8le contraint et un mod\u00e8le non contraint.<\/p>\n<p>Le mod\u00e8le contraint (ou mod\u00e8le global restreint) postule que la m\u00eame relation lin\u00e9aire s&rsquo;applique invariablement avant et apr\u00e8s la date critique. Sous cette sp\u00e9cification, tous les coefficients sont forc\u00e9s \u00e0 demeurer strictement identiques sur la totalit\u00e9 des <span class=\"arabpsy-math-inline\" data-latex=\"N\">$N$<\/span> observations. En contrepartie, le mod\u00e8le non contraint (ou mod\u00e8le partitionn\u00e9) accorde une flexibilit\u00e9 absolue aux donn\u00e9es en estimant deux \u00e9quations ind\u00e9pendantes : la premi\u00e8re sur le sous-\u00e9chantillon pr\u00e9c\u00e9dant la rupture potentielle (comportant <span class=\"arabpsy-math-inline\" data-latex=\"N_1\">$N_1$<\/span> observations), et la seconde sur le sous-\u00e9chantillon succ\u00e9dant \u00e0 cette rupture (comportant <span class=\"arabpsy-math-inline\" data-latex=\"N_2\">$N_2$<\/span> observations, avec <span class=\"arabpsy-math-inline\" data-latex=\"N = N_1 + N_2\">$N = N_1 + N_2$<\/span>).<\/p>\n<p>L&rsquo;hypoth\u00e8se nulle (<span class=\"arabpsy-math-inline\" data-latex=\"H_0\">$H_0$<\/span>) du test stipule l&rsquo;\u00e9galit\u00e9 stricte des vecteurs de coefficients entre les deux sous-p\u00e9riodes :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"H_0 : \\beta_1 = \\beta_2\">$$H_0 : \\beta_1 = \\beta_2$$<\/span><\/p>\n<p>L&rsquo;hypoth\u00e8se alternative (<span class=\"arabpsy-math-inline\" data-latex=\"H_1\">$H_1$<\/span>) stipule qu&rsquo;au moins un \u00e9l\u00e9ment du vecteur des param\u00e8tres diff\u00e8re de mani\u00e8re statistiquement significative entre les deux sous-espaces temporels :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"H_1 : \\beta_1 \\neq \\beta_2\">$$H_1 : \\beta_1 \\neq \\beta_2$$<\/span><\/p>\n<p>Puisque le mod\u00e8le partitionn\u00e9 dispose de deux fois plus de degr\u00e9s de libert\u00e9 param\u00e9triques que le mod\u00e8le global, sa somme des carr\u00e9s des r\u00e9sidus sera n\u00e9cessairement inf\u00e9rieure ou \u00e9gale \u00e0 celle du mod\u00e8le contraint. Le c\u0153ur de l&rsquo;inf\u00e9rence consiste \u00e0 \u00e9valuer si cette r\u00e9duction de l&rsquo;erreur r\u00e9siduelle non contrainte est suffisamment massive pour ne pas \u00eatre attribu\u00e9e aux seules fluctuations de l&rsquo;\u00e9chantillonnage al\u00e9atoire.<\/p>\n<h3>1.3 Pertinence m\u00e9thodologique en sciences quantitatives et comportementales<\/h3>\n<p>Bien que con\u00e7u initialement dans l&rsquo;ar\u00e8ne de l&rsquo;\u00e9conom\u00e9trie macro\u00e9conomique pour \u00e9valuer l&rsquo;impact des politiques mon\u00e9taires ou fiscales, le test de Chow d\u00e9montre une pertinence m\u00e9thodologique transdisciplinaire remarquable. Dans les sciences quantitatives modernes, son utilisation d\u00e9passe largement les seules fronti\u00e8res de l&rsquo;analyse des s\u00e9ries financi\u00e8res.<\/p>\n<p>En sciences comportementales, en psychom\u00e9trie longitudinale et en recherche clinique, le test de Chow constitue l&rsquo;instrument canonique pour l&rsquo;\u00e9valuation des plans quasi-exp\u00e9rimentaux et des s\u00e9ries temporelles interrompues. Par exemple, lorsqu&rsquo;une cohorte de sujets est soumise \u00e0 une intervention th\u00e9rapeutique ou comportementale \u00e0 un instant pr\u00e9cis, il est imp\u00e9ratif de v\u00e9rifier si la dynamique temporelle du r\u00e9tablissement ou de l&rsquo;acquisition de comp\u00e9tences a chang\u00e9 non seulement en niveau imm\u00e9diat, mais \u00e9galement en taux d&rsquo;\u00e9volution longitudinal. L&rsquo;application du test de Chow permet de confirmer statistiquement si l&rsquo;intervention a induit une v\u00e9ritable refonte de la trajectoire psychologique ou si les observations post-interventionnelles s&rsquo;inscrivent dans le simple prolongement inertiel du r\u00e9gime ant\u00e9rieur.<\/p>\n<p>De surcro\u00eet, dans les disciplines environnementales, \u00e9pid\u00e9miologiques et d&rsquo;ing\u00e9nierie industrielle, le test valide la robustesse des mod\u00e9lisations face aux chocs exog\u00e8nes discontinus. Qu&rsquo;il s&rsquo;agisse de mesurer la modification des taux d&rsquo;\u00e9missions polluantes suite \u00e0 l&rsquo;adoption d&rsquo;un r\u00e8glement contraignant, d&rsquo;analyser la dynamique d&rsquo;une pand\u00e9mie avant et apr\u00e8s la mise en \u0153uvre de mesures de confinement, ou de d\u00e9tecter la d\u00e9gradation physique pr\u00e9matur\u00e9e d&rsquo;un composant m\u00e9canique soumis \u00e0 des contraintes thermiques, le test de Chow offre une m\u00e9thodologie formelle pour attester de la non-stationnarit\u00e9 structurelle d&rsquo;un syst\u00e8me dynamique.<\/p>\n<h2>2. Formulation math\u00e9matique et hypoth\u00e8ses distributionnelles du test<\/h2>\n<h3>2.1 Sp\u00e9cification formelle des mod\u00e8les et des r\u00e9sidus<\/h3>\n<p>Pour appr\u00e9hender la m\u00e9canique inf\u00e9rentielle du test de Chow, il est indispensable de formaliser l&rsquo;\u00e9criture matricielle des r\u00e9gressions concurrentes. Consid\u00e9rons un \u00e9chantillon global de taille <span class=\"arabpsy-math-inline\" data-latex=\"N\">$N$<\/span>, partitionn\u00e9 en deux sous-\u00e9chantillons contigus de tailles respectives <span class=\"arabpsy-math-inline\" data-latex=\"N_1\">$N_1$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"N_2\">$N_2$<\/span>, tels que <span class=\"arabpsy-math-inline\" data-latex=\"N = N_1 + N_2\">$N = N_1 + N_2$<\/span>. Soit <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span> le nombre de r\u00e9gresseurs inclus dans chaque mod\u00e8le, en comptant le terme constant d&rsquo;ordonn\u00e9e \u00e0 l&rsquo;origine.<\/p>\n<p>Le mod\u00e8le global contraint s&rsquo;\u00e9crit sous la forme classique :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"Y = X\\beta + \\varepsilon\">$$Y = X\\beta + \\varepsilon$$<\/span><\/p>\n<p>o\u00f9 <span class=\"arabpsy-math-inline\" data-latex=\"Y\">$Y$<\/span> est un vecteur colonne de dimension <span class=\"arabpsy-math-inline\" data-latex=\"(N \\times 1)\">$(N \\times 1)$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"X\">$X$<\/span> est une matrice d&rsquo;observations de dimension <span class=\"arabpsy-math-inline\" data-latex=\"(N \\times k)\">$(N \\times k)$<\/span> suppos\u00e9e de rang plein <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"\\beta\">$\\beta$<\/span> est le vecteur des param\u00e8tres communs de dimension <span class=\"arabpsy-math-inline\" data-latex=\"(k \\times 1)\">$(k \\times 1)$<\/span>, et <span class=\"arabpsy-math-inline\" data-latex=\"varepsilon\">$varepsilon$<\/span> est le vecteur des perturbations stochastiques de dimension <span class=\"arabpsy-math-inline\" data-latex=\"(N \\times 1)\">$(N \\times 1)$<\/span>. L&rsquo;estimation par les moindres carr\u00e9s ordinaires fournit le vecteur d&rsquo;estimation <span class=\"arabpsy-math-inline\" data-latex=\"\\hat{\\beta} = (X&#039;X)^{-1}X&#039;Y\">$\\hat{\\beta} = (X&rsquo;X)^{-1}X&rsquo;Y$<\/span> et le vecteur des r\u00e9sidus contraints <span class=\"arabpsy-math-inline\" data-latex=\"e = Y - X\\hat{\\beta}\">$e = Y &#8211; X\\hat{\\beta}$<\/span>. La somme des carr\u00e9s des r\u00e9sidus du mod\u00e8le contraint, not\u00e9e conventionnellement <span class=\"arabpsy-math-inline\" data-latex=\"SCR_c\">$SCR_c$<\/span> (ou <span class=\"arabpsy-math-inline\" data-latex=\"RSS_c\">$RSS_c$<\/span> pour <em>Residual Sum of Squares<\/em>), est d\u00e9finie par :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"SCR_c = e&#039;e = \\sum_{t=1}^{N} (y_t - \\hat{y}_t)^2\">$$SCR_c = e&rsquo;e = \\sum_{t=1}^{N} (y_t &#8211; \\hat{y}_t)^2$$<\/span><\/p>\n<p>Parall\u00e8lement, les r\u00e9gressions non contraintes associ\u00e9es \u00e0 chaque r\u00e9gime temporel s&rsquo;expriment comme suit :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"Y_1 = X_1 \\beta_1 + \\varepsilon_1 \\quad \\text{pour } t in [1, N_1]\">$$Y_1 = X_1 \\beta_1 + \\varepsilon_1 \\quad \\text{pour } t in [1, N_1]$$<\/span><\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"Y_2 = X_2 \\beta_2 + \\varepsilon_2 \\quad \\text{pour } t in [N_1 + 1, N]\">$$Y_2 = X_2 \\beta_2 + \\varepsilon_2 \\quad \\text{pour } t in [N_1 + 1, N]$$<\/span><\/p>\n<p>Les estimations ind\u00e9pendantes par les MCO g\u00e9n\u00e8rent les r\u00e9sidus non contraints <span class=\"arabpsy-math-inline\" data-latex=\"e_1 = Y_1 - X_1\\hat{\\beta}_1\">$e_1 = Y_1 &#8211; X_1\\hat{\\beta}_1$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"e_2 = Y_2 - X_2\\hat{\\beta}_2\">$e_2 = Y_2 &#8211; X_2\\hat{\\beta}_2$<\/span>. La somme des carr\u00e9s des r\u00e9sidus de chaque sous-mod\u00e8le s&rsquo;\u00e9crit respectivement :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"SCR_1 = e_1&#039;e_1 = \\sum_{t=1}^{N_1} (y_t - \\hat{y}_{1,t})^2\">$$SCR_1 = e_1&rsquo;e_1 = \\sum_{t=1}^{N_1} (y_t &#8211; \\hat{y}_{1,t})^2$$<\/span><\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"SCR_2 = e_2&#039;e_2 = \\sum_{t=N_1+1}^{N} (y_t - \\hat{y}_{2,t})^2\">$$SCR_2 = e_2&rsquo;e_2 = \\sum_{t=N_1+1}^{N} (y_t &#8211; \\hat{y}_{2,t})^2$$<\/span><\/p>\n<p>La somme globale des carr\u00e9s des r\u00e9sidus du syst\u00e8me non contraint, d\u00e9sign\u00e9e par <span class=\"arabpsy-math-inline\" data-latex=\"SCR_{nc}\">$SCR_{nc}$<\/span>, correspond \u00e0 la sommation directe des erreurs r\u00e9siduelles des deux r\u00e9gimes partitionn\u00e9s :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"SCR_{nc} = SCR_1 + SCR_2\">$$SCR_{nc} = SCR_1 + SCR_2$$<\/span><\/p>\n<p>Par construction math\u00e9matique, l&rsquo;espace des colonnes couvert par le mod\u00e8le non contraint englobe strictement celui du mod\u00e8le global contraint. En cons\u00e9quence, l&rsquo;in\u00e9galit\u00e9 fondamentale <span class=\"arabpsy-math-inline\" data-latex=\"SCR_c ge SCR_{nc}\">$SCR_c ge SCR_{nc}$<\/span> est rigoureusement garantie en toutes circonstances.<\/p>\n<h3>2.2 D\u00e9rivation de la statistique de test de Fisher<\/h3>\n<p>La statistique du test de Chow d\u00e9rive directement de la th\u00e9orie g\u00e9n\u00e9rale des tests de restrictions lin\u00e9aires d\u00e9velopp\u00e9e par Ronald Fisher. L&rsquo;objectif consiste \u00e0 quantifier la perte d&rsquo;ajustement relative inflig\u00e9e au mod\u00e8le par l&rsquo;imposition de l&rsquo;hypoth\u00e8se de stabilit\u00e9 structurelle <span class=\"arabpsy-math-inline\" data-latex=\"H_0 : \\beta_1 = \\beta_2\">$H_0 : \\beta_1 = \\beta_2$<\/span>.<\/p>\n<p>La p\u00e9nalit\u00e9 d&rsquo;ajustement s&rsquo;exprime par la variation de la somme des carr\u00e9s r\u00e9siduels, \u00e0 savoir <span class=\"arabpsy-math-inline\" data-latex=\"(SCR_c - SCR_{nc})\">$(SCR_c &#8211; SCR_{nc})$<\/span>. Cette quantit\u00e9 refl\u00e8te le surcro\u00eet d&rsquo;erreur inh\u00e9rent \u00e0 la contrainte de param\u00e8tres invariants. Pour que cette m\u00e9trique devienne ind\u00e9pendante de l&rsquo;unit\u00e9 de mesure de la variable d\u00e9pendante et puisse suivre une loi de probabilit\u00e9 tabul\u00e9e, elle doit \u00eatre normalis\u00e9e par le nombre de restrictions lin\u00e9aires impos\u00e9es ainsi que par l&rsquo;estimateur non biais\u00e9 de la variance de l&rsquo;erreur du mod\u00e8le non contraint.<\/p>\n<p>Le nombre de restrictions impos\u00e9es par l&rsquo;hypoth\u00e8se nulle est \u00e9gal \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span>, car nous for\u00e7ons les <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span> param\u00e8tres du premier r\u00e9gime \u00e0 \u00eatre rigoureusement identiques aux <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span> param\u00e8tres du second r\u00e9gime. Les degr\u00e9s de libert\u00e9 associ\u00e9s au num\u00e9rateur sont donc de <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span>. De son c\u00f4t\u00e9, le mod\u00e8le non contraint estime au total <span class=\"arabpsy-math-inline\" data-latex=\"2k\">$2k$<\/span> param\u00e8tres (<span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span> coefficients pour le premier sous-mod\u00e8le et <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span> coefficients pour le second). Par cons\u00e9quent, les degr\u00e9s de libert\u00e9 du d\u00e9nominateur sont donn\u00e9s par <span class=\"arabpsy-math-inline\" data-latex=\"(N_1 - k) + (N_2 - k) = N_1 + N_2 - 2k = N - 2k\">$(N_1 &#8211; k) + (N_2 &#8211; k) = N_1 + N_2 &#8211; 2k = N &#8211; 2k$<\/span>.<\/p>\n<p>La statistique canonique du test de Chow, not\u00e9e <span class=\"arabpsy-math-inline\" data-latex=\"F_{Chow}\">$F_{Chow}$<\/span>, s&rsquo;\u00e9nonce ainsi formellement :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"F_{Chow} = \\frac{(SCR_c - (SCR_1 + SCR_2)) \/ k}{(SCR_1 + SCR_2) \/ (N - 2k)} = \\frac{(SCR_c - SCR_{nc}) \/ k}{SCR_{nc} \/ (N - 2k)}\">$$F_{Chow} = \\frac{(SCR_c &#8211; (SCR_1 + SCR_2)) \/ k}{(SCR_1 + SCR_2) \/ (N &#8211; 2k)} = \\frac{(SCR_c &#8211; SCR_{nc}) \/ k}{SCR_{nc} \/ (N &#8211; 2k)}$$<\/span><\/p>\n<p>Sous la validit\u00e9 de l&rsquo;hypoth\u00e8se nulle <span class=\"arabpsy-math-inline\" data-latex=\"H_0\">$H_0$<\/span> et sous r\u00e9serve du respect strict des postulats du mod\u00e8le lin\u00e9aire gaussien, cette quantit\u00e9 suit exactement la distribution de Fisher-Snedecor \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span> degr\u00e9s de libert\u00e9 au num\u00e9rateur et <span class=\"arabpsy-math-inline\" data-latex=\"N - 2k\">$N &#8211; 2k$<\/span> degr\u00e9s de libert\u00e9 au d\u00e9nominateur :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"F_{Chow} \\sim \\mathcal{F}(k, N - 2k)\">$$F_{Chow} \\sim \\mathcal{F}(k, N &#8211; 2k)$$<\/span><\/p>\n<p>Lorsque la valeur calcul\u00e9e <span class=\"arabpsy-math-inline\" data-latex=\"F_{Chow}\">$F_{Chow}$<\/span> exc\u00e8de la valeur critique th\u00e9orique <span class=\"arabpsy-math-inline\" data-latex=\"F_{\\alpha}(k, N - 2k)\">$F_{\\alpha}(k, N &#8211; 2k)$<\/span> pour un seuil de significativit\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"\\alpha\">$\\alpha$<\/span> donn\u00e9 (usuellement 5 % ou 1 %), ou de mani\u00e8re \u00e9quivalente lorsque la <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>-valeur associ\u00e9e est inf\u00e9rieure \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"\\alpha\">$\\alpha$<\/span>, l&rsquo;hypoth\u00e8se nulle de stabilit\u00e9 temporelle est formellement rejet\u00e9e au profit de l&rsquo;existence d&rsquo;une rupture structurelle \u00e0 la date <span class=\"arabpsy-math-inline\" data-latex=\"T^*\">$T^*$<\/span>.<\/p>\n<h3>2.3 Conditions d&rsquo;application et postulats statistiques<\/h3>\n<p>L&rsquo;exactitude distributionnelle de la statistique de Fisher repose sur un ensemble d&rsquo;hypoth\u00e8ses stochastiques contraignantes qu&rsquo;il convient de formaliser avec la plus grande rigueur acad\u00e9mique. La violation de ces hypoth\u00e8ses alt\u00e8re profond\u00e9ment le comportement asymptotique du test et peut conduire \u00e0 des erreurs d&rsquo;inf\u00e9rence substantielles.<\/p>\n<ul>\n<li><strong>Hypoth\u00e8se d&rsquo;homosc\u00e9dasticit\u00e9 inter-r\u00e9gimes :<\/strong> Le test de Chow standard postule imp\u00e9rativement que la variance des termes d&rsquo;erreur demeure rigoureusement constante entre les deux sous-p\u00e9riodes consid\u00e9r\u00e9es, c&rsquo;est-\u00e0-dire :<br \/>\n    <span class=\"arabpsy-math-display\" data-latex=\"\\sigma_1^2 = \\sigma_2^2 = \\sigma^2\">$$\\sigma_1^2 = \\sigma_2^2 = \\sigma^2$$<\/span><br \/>\n    Si cette condition n&rsquo;est pas remplie et que l&rsquo;\u00e9chantillon pr\u00e9sente une h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 structurelle (une volatilit\u00e9 des r\u00e9sidus diff\u00e9rente avant et apr\u00e8s la rupture), la statistique calcul\u00e9e ne suit plus une loi de Fisher standard. Il en r\u00e9sulte un sur-rejet massif de l&rsquo;hypoth\u00e8se nulle, le test interpr\u00e9tant \u00e0 tort une simple instabilit\u00e9 de la variance comme une rupture des coefficients de r\u00e9gression.<\/li>\n<li><strong>Normalit\u00e9 des termes de perturbation :<\/strong> Les r\u00e9sidus <span class=\"arabpsy-math-inline\" data-latex=\"\\varepsilon_1\">$\\varepsilon_1$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"\\varepsilon_2\">$\\varepsilon_2$<\/span> doivent \u00eatre distribu\u00e9s selon une loi normale multivari\u00e9e :<br \/>\n    <span class=\"arabpsy-math-display\" data-latex=\"\\varepsilon \\sim \\mathcal{N}(0, \\sigma^2 I_N)\">$$\\varepsilon \\sim \\mathcal{N}(0, \\sigma^2 I_N)$$<\/span><br \/>\n    Bien que le th\u00e9or\u00e8me central limite conf\u00e8re une certaine robustesse asymptotique au test sur les tr\u00e8s grands \u00e9chantillons, la normalit\u00e9 stricte est un pr\u00e9requis absolu pour la validit\u00e9 exacte de la loi de Fisher sur des \u00e9chantillons de taille modeste ou restreinte.<\/li>\n<li><strong>Ind\u00e9pendance s\u00e9rielle des erreurs :<\/strong> Les perturbations doivent \u00eatre mutuellement ind\u00e9pendantes, garantissant l&rsquo;absence d&rsquo;autocorr\u00e9lation temporelle :<br \/>\n    <span class=\"arabpsy-math-display\" data-latex=\"E[\\varepsilon_t \\varepsilon_s] = 0 \\quad \\forall t \\neq s\">$$E[\\varepsilon_t \\varepsilon_s] = 0 \\quad \\forall t \\neq s$$<\/span><br \/>\n    La pr\u00e9sence d&rsquo;autocorr\u00e9lation positive comprime artificiellement la variance r\u00e9siduelle non contrainte, entra\u00eenant une inflation drastique de la statistique de test et une prolif\u00e9ration de rejets faussement positifs.<\/li>\n<li><strong>Taille minimale des sous-\u00e9chantillons :<\/strong> Chaque sous-p\u00e9riode doit comporter un nombre d&rsquo;observations strictement sup\u00e9rieur au nombre de param\u00e8tres \u00e0 estimer (<span class=\"arabpsy-math-inline\" data-latex=\"N_1 &gt; k\">$N_1 &gt; k$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"N_2 &gt; k\">$N_2 &gt; k$<\/span>), afin d&rsquo;\u00e9viter toute sous-d\u00e9termination matricielle et de garantir l&rsquo;inversibilit\u00e9 des matrices <span class=\"arabpsy-math-inline\" data-latex=\"(X_1&#039;X_1)\">$(X_1&rsquo;X_1)$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"(X_2&#039;X_2)\">$(X_2&rsquo;X_2)$<\/span>.<\/li>\n<\/ul>\n<h2>3. Configuration de l&rsquo;environnement de calcul statistique en Python<\/h2>\n<h3>3.1 S\u00e9lection et justification de la pile logicielle<\/h3>\n<p>La mise en \u0153uvre rigoureuse du test de Chow en langage Python s&rsquo;appuie sur une architecture logicielle compos\u00e9e des biblioth\u00e8ques fondamentales du calcul scientifique et de l&rsquo;\u00e9conom\u00e9trie appliqu\u00e9e. Contrairement aux langages monolithiques pr\u00e9configur\u00e9s, Python offre une granularit\u00e9 qui permet de ma\u00eetriser pr\u00e9cis\u00e9ment chaque \u00e9tape du flux de traitement matriciel et inf\u00e9rentiel.<\/p>\n<p>Le socle analytique repose sur quatre piliers biblioth\u00e9caires majeurs :<\/p>\n<ul>\n<li><a rel=\"noopener noreferrer\" href=\"https:\/\/pandas.pydata.org\/\"><strong>Pandas :<\/strong><\/a> Biblioth\u00e8que h\u00e9g\u00e9monique pour la manipulation et l&rsquo;ing\u00e9nierie des donn\u00e9es tabulaires et temporelles. Elle fournit la structure fondamentale de <code>DataFrame<\/code>, permettant un partitionnement s\u00e9quentiel rigoureux, une indexation chronologique pr\u00e9cise et une gestion contr\u00f4l\u00e9e des s\u00e9ries chronologiques.<\/li>\n<li><a rel=\"noopener noreferrer\" href=\"https:\/\/numpy.org\/\"><strong>NumPy :<\/strong><\/a> Fournit les primitives de calcul matriciel et vectoriel de bas niveau en langage C optimis\u00e9. Elle intervient dans la manipulation directe des tableaux multidimensionnels et dans l&rsquo;ex\u00e9cution efficace des op\u00e9rations d&rsquo;alg\u00e8bre lin\u00e9aire requises par l&rsquo;estimation des moindres carr\u00e9s.<\/li>\n<li><a rel=\"noopener noreferrer\" href=\"https:\/\/www.statsmodels.org\/\"><strong>Statsmodels :<\/strong><\/a> C\u0153ur battant de l&rsquo;\u00e9conom\u00e9trie computationnelle sous Python. Cette biblioth\u00e8que impl\u00e9mente l&rsquo;estimation par les Moindres Carr\u00e9s Ordinaires (classe <code>OLS<\/code>) avec un niveau d&rsquo;exhaustivit\u00e9 diagnostique \u00e9quivalent aux logiciels \u00e9conom\u00e9triques propri\u00e9taires, extrayant nativement les sommes de carr\u00e9s r\u00e9siduels, les matrices de covariance et les m\u00e9triques de libert\u00e9.<\/li>\n<li><a rel=\"noopener noreferrer\" href=\"https:\/\/scipy.org\/\"><strong>SciPy Stats :<\/strong><\/a> Sous-module sp\u00e9cialis\u00e9 de la suite SciPy d\u00e9di\u00e9 aux distributions de probabilit\u00e9s continues et discr\u00e8tes. Il permet de mobiliser les fonctions de r\u00e9partition et les fonctions de survie analytiques de la loi de Fisher-Snedecor pour le calcul exact des valeurs critiques et des <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>-valeurs associ\u00e9es aux statistiques de test.<\/li>\n<\/ul>\n<h3>3.2 Installation et initialisation du socle de travail<\/h3>\n<p>Pour garantir la reproductibilit\u00e9 absolue des calculs et pr\u00e9munir le syst\u00e8me contre d&rsquo;\u00e9ventuels conflits de d\u00e9pendances logicielles, il est vivement recommand\u00e9 d&rsquo;initialiser le projet au sein d&rsquo;un environnement virtuel d\u00e9di\u00e9, administr\u00e9 via l&rsquo;utilitaire standard <code>venv<\/code> ou le gestionnaire de paquets <code>conda<\/code>.<\/p>\n<p>L&rsquo;installation des biblioth\u00e8ques s&rsquo;op\u00e8re via la commande standard ex\u00e9cut\u00e9e dans le terminal syst\u00e8me :<\/p>\n<p><code>pip install numpy pandas statsmodels scipy matplotlib seaborn<\/code><\/p>\n<p>Une fois les paquets install\u00e9s au sein de l&rsquo;interpr\u00e9teur Python, l&rsquo;initialisation du script ou du carnet computationnel requiert l&rsquo;importation ordonn\u00e9e des modules selon les conventions d&rsquo;alias consacr\u00e9es par la communaut\u00e9 scientifique internationale :<\/p>\n<p>\nimport numpy as np<br \/>\nimport pandas as pd<br \/>\nimport statsmodels.api as sm<br \/>\nimport statsmodels.formula.api as smf<br \/>\nfrom scipy import stats<br \/>\nimport matplotlib.pyplot as plt<br \/>\nimport seaborn as sns\n<\/p>\n<p>Cette standardisation garantit la lisibilit\u00e9 et l&rsquo;interop\u00e9rabilit\u00e9 imm\u00e9diate du code source dans tout environnement de recherche ou de production analytique.<\/p>\n<h2>4. G\u00e9n\u00e9ration et structuration des donn\u00e9es exp\u00e9rimentales<\/h2>\n<h3>4.1 Cr\u00e9ation du jeu de donn\u00e9es synth\u00e9tique illustratif<\/h3>\n<p>Pour exposer la m\u00e9canique op\u00e9rationnelle du test de Chow avec une transparence math\u00e9matique absolue, il est m\u00e9thodologiquement pertinent de g\u00e9n\u00e9rer un jeu de donn\u00e9es synth\u00e9tique contr\u00f4l\u00e9 au sein duquel une rupture structurelle discr\u00e8te est explicitement inject\u00e9e. Cette approche par simulation permet de confronter le r\u00e9sultat du test \u00e0 une v\u00e9rit\u00e9 terrain parfaitement connue <em>a priori<\/em>.<\/p>\n<p>Consid\u00e9rons un processus temporel comportant <span class=\"arabpsy-math-inline\" data-latex=\"N = 200\">$N = 200$<\/span> observations s\u00e9quentielles, partitionn\u00e9 en deux p\u00e9riodes distinctes de <span class=\"arabpsy-math-inline\" data-latex=\"N_1 = 100\">$N_1 = 100$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"N_2 = 100\">$N_2 = 100$<\/span> unit\u00e9s temporelles. Le mod\u00e8le th\u00e9orique sous-jacent est formalis\u00e9 de la mani\u00e8re suivante :<\/p>\n<ul>\n<li><strong>R\u00e9gime 1 (<span class=\"arabpsy-math-inline\" data-latex=\"t in [1, 100]\">$t in [1, 100]$<\/span>) :<\/strong> <span class=\"arabpsy-math-inline\" data-latex=\"y_t = 15.0 + 2.5 x_t + \\varepsilon_t\">$y_t = 15.0 + 2.5 x_t + \\varepsilon_t$<\/span><\/li>\n<li><strong>R\u00e9gime 2 (<span class=\"arabpsy-math-inline\" data-latex=\"t in [101, 200]\">$t in [101, 200]$<\/span>) :<\/strong> <span class=\"arabpsy-math-inline\" data-latex=\"y_t = 35.0 + 0.8 x_t + \\varepsilon_t\">$y_t = 35.0 + 0.8 x_t + \\varepsilon_t$<\/span><\/li>\n<\/ul>\n<p>o\u00f9 la perturbation <span class=\"arabpsy-math-inline\" data-latex=\"\\varepsilon_t\">$\\varepsilon_t$<\/span> suit rigoureusement une distribution normale gaussienne de moyenne nulle et d&rsquo;\u00e9cart-type unitaire (<span class=\"arabpsy-math-inline\" data-latex=\"\\varepsilon_t \\sim \\mathcal{N}(0, 1.0)\">$\\varepsilon_t \\sim \\mathcal{N}(0, 1.0)$<\/span>), garantissant le respect strict du postulat d&rsquo;homosc\u00e9dasticit\u00e9. Dans cette configuration, la rupture structurelle affecte simultan\u00e9ment l&rsquo;ordonn\u00e9e \u00e0 l&rsquo;origine (qui subit une \u00e9l\u00e9vation de <span class=\"arabpsy-math-inline\" data-latex=\"+20.0\">$+20.0$<\/span> unit\u00e9s) et la pente marginale (qui fl\u00e9chit de <span class=\"arabpsy-math-inline\" data-latex=\"-1.7\">$-1.7$<\/span> unit\u00e9, passant de $2.5$ \u00e0 $0.8$).<\/p>\n<p>La g\u00e9n\u00e9ration programmatique sous Python s&rsquo;articule via le code conceptuel suivant :<\/p>\n<p>\nnp.random.seed(42)<br \/>\nn_observations = 200<br \/>\nrupture_index = 100<\/p>\n<p>x_data = np.linspace(0, 50, n_observations)<br \/>\nbruit_gaussien = np.random.normal(loc=0.0, scale=1.0, size=n_observations)<\/p>\n<p>y_data = np.empty(n_observations)<br \/>\ny_data[:rupture_index] = 15.0 + 2.5 * x_data[:rupture_index] + bruit_gaussien[:rupture_index]<br \/>\ny_data[rupture_index:] = 35.0 + 0.8 * x_data[rupture_index:] + bruit_gaussien[rupture_index:]<\/p>\n<p>df_experiment = pd.DataFrame({&lsquo;X&rsquo;: x_data, &lsquo;Y&rsquo;: y_data}, index=pd.date_range(start=&rsquo;2020-01-01&prime;, periods=n_observations, freq=&rsquo;W&rsquo;))\n<\/p>\n<p>L&rsquo;examen des cinq premi\u00e8res et des cinq derni\u00e8res lignes via les m\u00e9thodes <code>df_experiment.head()<\/code> et <code>df_experiment.tail()<\/code> confirme l&rsquo;alignement pr\u00e9cis des s\u00e9ries g\u00e9n\u00e9r\u00e9es.<\/p>\n<h3>4.2 V\u00e9rification de l&rsquo;int\u00e9grit\u00e9 et typage des variables<\/h3>\n<p>Avant d&rsquo;engager toute mod\u00e9lisation stochastique, une validation exhaustive de l&rsquo;int\u00e9grit\u00e9 structurelle des donn\u00e9es s&rsquo;av\u00e8re indispensable. Dans le cadre de donn\u00e9es empiriques r\u00e9elles, la pr\u00e9sence inopin\u00e9e de valeurs manquantes (valeurs <code>NaN<\/code> ou <code>null<\/code>) ou d&rsquo;aberrations de mesure fausserait le comptage des observations effectives et, par voie de cons\u00e9quence, invaliderait l&rsquo;exactitude des degr\u00e9s de libert\u00e9 du test.<\/p>\n<p>L&rsquo;inspection analytique s&rsquo;effectue au moyen des m\u00e9thodes standard de Pandas :<\/p>\n<p>\nprint(df_experiment.isnull().sum())<br \/>\nprint(df_experiment.dtypes)<br \/>\nprint(df_experiment.describe())\n<\/p>\n<p>Il est imp\u00e9ratif de s&rsquo;assurer que les variables explicatives et la variable d\u00e9pendante poss\u00e8dent un encodage num\u00e9rique continu, de type flottant 64 bits (<code>float64<\/code>). Par ailleurs, l&rsquo;indexation doit refl\u00e9ter rigoureusement l&rsquo;ordonnancement s\u00e9quentiel ou chronologique des observations pour que le partitionnement au point critique <span class=\"arabpsy-math-inline\" data-latex=\"T^*\">$T^*$<\/span> n&rsquo;alt\u00e8re pas la chronologie sous-jacente des donn\u00e9es.<\/p>\n<h2>5. Exploration visuelle et localisation empirique de la rupture<\/h2>\n<h3>5.1 Repr\u00e9sentation graphique \u00e9l\u00e9mentaire par nuage de points<\/h3>\n<p>L&rsquo;exploration graphique constitue une \u00e9tape liminaire d\u00e9cisive dans toute \u00e9tude de stabilit\u00e9 structurelle. Avant m\u00eame d&rsquo;appliquer le protocole formel de Chow, une inspection visuelle minutieuse permet d&rsquo;appr\u00e9cier la morphologie du nuage de points, d&rsquo;\u00e9valuer la plausibilit\u00e9 de l&rsquo;hypoth\u00e8se de lin\u00e9arit\u00e9 par morceaux et de corroborer l&rsquo;existence d&rsquo;une discontinuit\u00e9 majeure.<\/p>\n<p>\u00c0 l&rsquo;aide de la biblioth\u00e8que <code>matplotlib.pyplot<\/code>, la r\u00e9alisation d&rsquo;un diagramme de dispersion calibr\u00e9 selon les normes de publication acad\u00e9mique s&rsquo;ex\u00e9cute par la s\u00e9quence d&rsquo;instructions suivante :<\/p>\n<p>\nplt.figure(figsize=(10, 6))<br \/>\nplt.scatter(df_experiment[&lsquo;X&rsquo;], df_experiment[&lsquo;Y&rsquo;], color=&rsquo;#2c3e50&prime;, alpha=0.7, edgecolors=&rsquo;none&rsquo;, label=&rsquo;Observations empiriques&rsquo;)<br \/>\nplt.axvline(x=df_experiment[&lsquo;X&rsquo;].iloc[rupture_index], color=&rsquo;#e74c3c&rsquo;, linestyle=&rsquo;&#8211;&lsquo;, linewidth=2, label=&rsquo;Seuil de rupture pr\u00e9sum\u00e9 (t=100)&rsquo;)<br \/>\nplt.title(&lsquo;Diagramme de dispersion et localisation empirique de la discontinuit\u00e9&rsquo;, fontsize=14, fontweight=&rsquo;bold&rsquo;)<br \/>\nplt.xlabel(&lsquo;Variable explicative (X)&rsquo;, fontsize=12)<br \/>\nplt.ylabel(&lsquo;Variable d\u00e9pendante (Y)&rsquo;, fontsize=12)<br \/>\nplt.grid(True, linestyle=&rsquo;:&rsquo;, alpha=0.6)<br \/>\nplt.legend(frameon=True, facecolor=&rsquo;white&rsquo;, framealpha=0.9)<br \/>\nplt.tight_layout()<br \/>\nplt.show()\n<\/p>\n<p>L&rsquo;examen de cette projection met en relief un d\u00e9crochage visible de la dynamique d&rsquo;accumulation : le gradient initial tr\u00e8s prononc\u00e9 s&rsquo;infl\u00e9chit nettement au-del\u00e0 de l&rsquo;abscisse correspondant \u00e0 la centi\u00e8me observation, confirmant l&rsquo;int\u00e9r\u00eat d&rsquo;une analyse d&rsquo;instabilit\u00e9 structurelle.<\/p>\n<figure class=\"wpt-preserved-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/chow11.png\" alt=\"\" \/><\/figure>\n<h3>5.2 Superposition de tendances lin\u00e9aires pr\u00e9liminaires<\/h3>\n<p>Afin de rendre manifeste le contraste g\u00e9om\u00e9trique entre la mod\u00e9lisation contrainte et l&rsquo;ajustement fragment\u00e9, il est \u00e9clairant de superposer directement sur le nuage de points la droite de r\u00e9gression globale unique ainsi que les deux droites segment\u00e9es associ\u00e9es \u00e0 chaque sous-p\u00e9riode.<\/p>\n<p>Cette visualisation synth\u00e9tique illustre visuellement la nature de l&rsquo;erreur introduite par le mod\u00e8le contraint. Sur la premi\u00e8re moiti\u00e9 de l&rsquo;\u00e9chantillon, la droite de tendance globale sous-estime la pente v\u00e9ritable et sur\u00e9value syst\u00e9matiquement les valeurs de d\u00e9part, tandis que sur la seconde moiti\u00e9, elle tend \u00e0 aplatir artificiellement la trajectoire des points terminaux. Cette dichotomie g\u00e9om\u00e9trique illustre concr\u00e8tement pourquoi la somme des r\u00e9sidus globaux exc\u00e8de largement la somme cumul\u00e9e des r\u00e9sidus locaux.<\/p>\n<p>L&rsquo;observation simultan\u00e9e de deux droites segment\u00e9es aux pentes contrast\u00e9es ($2.5$ contre $0.8$) scelle l&rsquo;intuition statistique : le syst\u00e8me empirique ne peut \u00eatre valablement synth\u00e9tis\u00e9 par une droite unitaire sans violer gravement la structure intrins\u00e8que des donn\u00e9es.<\/p>\n<h2>6. Estimation des trois mod\u00e8les de r\u00e9gression sous Statsmodels<\/h2>\n<h3>6.1 Ajustement du mod\u00e8le contraint sur la s\u00e9rie globale<\/h3>\n<p>Le calcul de la statistique de Chow requiert l&rsquo;estimation rigoureuse de trois mod\u00e8les de r\u00e9gression lin\u00e9aire par les Moindres Carr\u00e9s Ordinaires via Statsmodels. La premi\u00e8re \u00e9tape consiste \u00e0 estimer le mod\u00e8le global contraint sur l&rsquo;ensemble des <span class=\"arabpsy-math-inline\" data-latex=\"N = 200\">$N = 200$<\/span> observations.<\/p>\n<p>Dans la biblioth\u00e8que Statsmodels, la matrice de conception <span class=\"arabpsy-math-inline\" data-latex=\"X\">$X$<\/span> n&rsquo;inclut pas automatiquement de vecteur unitaire pour repr\u00e9senter la constante d&rsquo;interception. Il est par cons\u00e9quent indispensable d&rsquo;invoquer la fonction <code>sm.add_constant()<\/code> pour incorporer explicitement l&rsquo;ordonn\u00e9e \u00e0 l&rsquo;origine dans le syst\u00e8me matriciel :<\/p>\n<p>\nX_global = sm.add_constant(df_experiment[&lsquo;X&rsquo;])<br \/>\ny_global = df_experiment[&lsquo;Y&rsquo;]<\/p>\n<p>modele_contraint = sm.OLS(y_global, X_global).fit()<br \/>\nscr_contraint = modele_contraint.ssr<\/p>\n<p>print(modele_contraint.summary())<br \/>\nprint(f\u00a0\u00bbSomme des Carr\u00e9s des R\u00e9sidus Contraints (SCR_c) : {scr_contraint:.4f}\u00a0\u00bb)\n<\/p>\n<p>L&rsquo;attribut <code>.ssr<\/code> (pour <em>Sum of Squared Residuals<\/em>) de l&rsquo;objet de r\u00e9sultats renvoie la valeur scalaire exacte de la somme des carr\u00e9s des r\u00e9sidus du mod\u00e8le global (<span class=\"arabpsy-math-inline\" data-latex=\"SCR_c\">$SCR_c$<\/span>). Ce r\u00e9sultat constitue la premi\u00e8re valeur fondamentale requise pour le num\u00e9rateur de la statistique de Chow.<\/p>\n<h3>6.2 Partitionnement et estimation des sous-mod\u00e8les temporels<\/h3>\n<p>La seconde \u00e9tape op\u00e9rationnelle exige la scission m\u00e9thodique du DataFrame en deux structures ind\u00e9pendantes, d\u00e9limit\u00e9es pr\u00e9cis\u00e9ment par l&rsquo;indice temporel de rupture <span class=\"arabpsy-math-inline\" data-latex=\"T^*\">$T^*$<\/span>. Une fois cette partition mat\u00e9rialis\u00e9e, une r\u00e9gression OLS distincte est ajust\u00e9e sur chaque sous-groupe :<\/p>\n<p>\ndf_regime1 = df_experiment.iloc[:rupture_index]<br \/>\ndf_regime2 = df_experiment.iloc[rupture_index:]<\/p>\n<p># Estimation sur le R\u00e9gime 1<br \/>\nX_1 = sm.add_constant(df_regime1[&lsquo;X&rsquo;])<br \/>\ny_1 = df_regime1[&lsquo;Y&rsquo;]<br \/>\nmodele_regime1 = sm.OLS(y_1, X_1).fit()<br \/>\nscr_1 = modele_regime1.ssr<\/p>\n<p># Estimation sur le R\u00e9gime 2<br \/>\nX_2 = sm.add_constant(df_regime2[&lsquo;X&rsquo;])<br \/>\ny_2 = df_regime2[&lsquo;Y&rsquo;]<br \/>\nmodele_regime2 = sm.OLS(y_2, X_2).fit()<br \/>\nscr_2 = modele_regime2.ssr<\/p>\n<p>print(f\u00a0\u00bbSCR R\u00e9gime 1 (SCR_1) : {scr_1:.4f}\u00a0\u00bb)<br \/>\nprint(f\u00a0\u00bbSCR R\u00e9gime 2 (SCR_2) : {scr_2:.4f}\u00a0\u00bb)\n<\/p>\n<p>Les m\u00e9triques r\u00e9siduelles obtenues r\u00e9v\u00e8lent imm\u00e9diatement une chute drastique de l&rsquo;erreur d&rsquo;ajustement. Alors que le mod\u00e8le contraint accumule une somme de carr\u00e9s d&rsquo;erreurs consid\u00e9rable due \u00e0 son incapacit\u00e9 \u00e0 pivoter au point critique, les deux sous-mod\u00e8les affichent des sommes r\u00e9siduelles extr\u00eamement faibles, conformes \u00e0 la variance r\u00e9siduelle du bruit gaussien unitaire inject\u00e9 lors de la simulation.<\/p>\n<h2>7. Calcul algorithmique de la statistique F du test de Chow<\/h2>\n<h3>7.1 Impl\u00e9mentation pas \u00e0 pas de l&rsquo;\u00e9quation de Chow<\/h3>\n<p>Disposant d\u00e9sormais des scalaires <span class=\"arabpsy-math-inline\" data-latex=\"SCR_c\">$SCR_c$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"SCR_1\">$SCR_1$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"SCR_2\">$SCR_2$<\/span>, il est possible de traduire directement la formule analytique de Gregory Chow sous forme de calculs vectoriels et scalaires en Python pur.<\/p>\n<p>D\u00e9finissons d&rsquo;abord avec une rigueur math\u00e9matique totale les composantes des degr\u00e9s de libert\u00e9. Soit <span class=\"arabpsy-math-inline\" data-latex=\"k = 2\">$k = 2$<\/span> le nombre total de param\u00e8tres estim\u00e9s par mod\u00e8le (la constante et le coefficient directeur associ\u00e9 \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"X\">$X$<\/span>). La taille de l&rsquo;\u00e9chantillon global est <span class=\"arabpsy-math-inline\" data-latex=\"N = 200\">$N = 200$<\/span>. Ainsi :<\/p>\n<ul>\n<li>Degr\u00e9s de libert\u00e9 du num\u00e9rateur : <span class=\"arabpsy-math-inline\" data-latex=\"df_1 = k = 2\">$df_1 = k = 2$<\/span><\/li>\n<li>Degr\u00e9s de libert\u00e9 du d\u00e9nominateur : <span class=\"arabpsy-math-inline\" data-latex=\"df_2 = N - 2k = 200 - (2 \\times 2) = 196\">$df_2 = N &#8211; 2k = 200 &#8211; (2 \\times 2) = 196$<\/span><\/li>\n<\/ul>\n<p>L&rsquo;algorithme de calcul se d\u00e9ploie pas \u00e0 pas comme suit :<\/p>\n<p>\nk_parametres = 2<br \/>\nn_total = len(df_experiment)<\/p>\n<p># Somme non contrainte des r\u00e9sidus<br \/>\nscr_non_contraint = scr_1 + scr_2<\/p>\n<p># Num\u00e9rateur : variation d&rsquo;erreur normalis\u00e9e par le nombre de contraintes<br \/>\nnumerateur = (scr_contraint &#8211; scr_non_contraint) \/ k_parametres<\/p>\n<p># D\u00e9nominateur : variance r\u00e9siduelle du mod\u00e8le non contraint<br \/>\ndegres_liberte_denominateur = n_total &#8211; (2 * k_parametres)<br \/>\ndenominateur = scr_non_contraint \/ degres_liberte_denominateur<\/p>\n<p># Statistique F de Chow<br \/>\nf_chow = numerateur \/ denominateur<br \/>\nprint(f\u00a0\u00bbStatistique F de Chow calcul\u00e9e : {f_chow:.4f}\u00a0\u00bb)\n<\/p>\n<p>Cette impl\u00e9mentation pas \u00e0 pas d\u00e9compose minutieusement l&rsquo;arbitrage op\u00e9r\u00e9 par le test : mesurer si le gain de pr\u00e9cision issu de la d\u00e9sagr\u00e9gation des r\u00e9gimes surpasse de mani\u00e8re \u00e9crasante la variance r\u00e9siduelle naturelle du syst\u00e8me.<\/p>\n<h3>7.2 Calcul de la probabilit\u00e9 critique et prise de d\u00e9cision<\/h3>\n<p>Une fois la statistique empirique <span class=\"arabpsy-math-inline\" data-latex=\"F_{Chow}\">$F_{Chow}$<\/span> obtenue, la phase finale de l&rsquo;inf\u00e9rence exige de confronter cette valeur empirique \u00e0 la loi th\u00e9orique de Fisher-Snedecor afin de calculer la <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>-valeur exacte associ\u00e9e au test.<\/p>\n<p>Pour d\u00e9terminer la probabilit\u00e9 d&rsquo;observer sous l&rsquo;hypoth\u00e8se nulle une statistique au moins aussi extr\u00eame que celle obtenue, nous utilisons la fonction de survie (<em>Survival Function<\/em>, not\u00e9e <code>sf<\/code>) du module <code>scipy.stats.f<\/code>. La fonction de survie est d\u00e9finie math\u00e9matiquement par <span class=\"arabpsy-math-inline\" data-latex=\"1 - F(x)\">$1 &#8211; F(x)$<\/span>, o\u00f9 <span class=\"arabpsy-math-inline\" data-latex=\"F(x)\">$F(x)$<\/span> est la fonction de r\u00e9partition cumulative ; elle garantit une pr\u00e9cision num\u00e9rique optimale, particuli\u00e8rement dans les queues de distribution extr\u00eames o\u00f9 l&rsquo;arrondi machine de <span class=\"arabpsy-math-inline\" data-latex=\"1 - cdf\">$1 &#8211; cdf$<\/span> peut introduire des pertes de pr\u00e9cision significatives :<\/p>\n<p>\nfrom scipy.stats import f<\/p>\n<p>p_valeur = f.sf(f_chow, dfn=k_parametres, dfd=degres_liberte_denominateur)<br \/>\nseuil_critique_95 = f.ppf(q=0.95, dfn=k_parametres, dfd=degres_liberte_denominateur)<\/p>\n<p>print(f\u00a0\u00bbValeur critique F th\u00e9orique (alpha=0.05) : {seuil_critique_95:.4f}\u00a0\u00bb)<br \/>\nprint(f\u00a0\u00bbP-valeur asymptotique exacte : {p_valeur:.4e}\u00a0\u00bb)\n<\/p>\n<p>La r\u00e8gle de d\u00e9cision statistique s&rsquo;applique de mani\u00e8re univoque :<\/p>\n<ul>\n<li>Si <span class=\"arabpsy-math-inline\" data-latex=\"F_{Chow} &gt; F_{critique}\">$F_{Chow} &gt; F_{critique}$<\/span> (ou de fa\u00e7on \u00e9quivalente si <span class=\"arabpsy-math-inline\" data-latex=\"p\\text{-valeur} &lt; \\alpha\">$p\\text{-valeur} &lt; \\alpha$<\/span>), l&#039;hypoth\u00e8se nulle <span class=\"arabpsy-math-inline\" data-latex=\"H_0\">$H_0$<\/span> d&#039;homog\u00e9n\u00e9it\u00e9 temporelle est formellement rejet\u00e9e. On conclut \u00e0 l&#039;existence d&#039;une rupture structurelle statistiquement significative \u00e0 la date <span class=\"arabpsy-math-inline\" data-latex=\"T^*\">$T^*$<\/span>.<\/li>\n<li>Si <span class=\"arabpsy-math-inline\" data-latex=\"F_{Chow} le F_{critique}\">$F_{Chow} le F_{critique}$<\/span> (ou <span class=\"arabpsy-math-inline\" data-latex=\"p\\text{-valeur} ge \\alpha\">$p\\text{-valeur} ge \\alpha$<\/span>), on \u00e9choue \u00e0 rejeter <span class=\"arabpsy-math-inline\" data-latex=\"H_0\">$H_0$<\/span>. Les variations observ\u00e9es entre les deux r\u00e9gimes sont jug\u00e9es compatibles avec les simples al\u00e9as de l&rsquo;\u00e9chantillonnage.<\/li>\n<\/ul>\n<p>Dans notre cas d&rsquo;\u00e9tude synth\u00e9tique, la statistique <span class=\"arabpsy-math-inline\" data-latex=\"F\">$F$<\/span> atteint un niveau spectaculaire (d\u00e9passant g\u00e9n\u00e9ralement plusieurs centaines ou milliers selon le tirage stochastique), et la <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>-valeur associ\u00e9e tend vers z\u00e9ro (<span class=\"arabpsy-math-inline\" data-latex=\"p &lt; 10^{-15}\">$p &lt; 10^{-15}$<\/span>), confirmant le rejet cat\u00e9gorique de l&#039;invariance param\u00e9trique.<\/p>\n<h2>8. Automatisation du test via une fonction Python g\u00e9n\u00e9rique et modulaire<\/h2>\n<h3>8.1 Architecture logicielle de la fonction personnalis\u00e9e<\/h3>\n<p>Pour d\u00e9ployer ce protocole au sein de cha\u00eenes de traitement de donn\u00e9es professionnelles ou d&rsquo;\u00e9tudes empiriques r\u00e9currentes, il est indispensable de factoriser cette suite d&rsquo;op\u00e9rations dans une fonction g\u00e9n\u00e9rique, modulaire, robuste et conforme aux standards de l&rsquo;ing\u00e9nierie logicielle scientifique.<\/p>\n<p>La conception d&rsquo;une fonction de haut niveau doit imp\u00e9rativement int\u00e9grer des gardes-fous d&rsquo;assertion logicielle pour pr\u00e9venir les erreurs d&rsquo;ex\u00e9cution : validation de l&rsquo;existence des colonnes dans le conteneur de donn\u00e9es, v\u00e9rification de la stricte positivit\u00e9 des degr\u00e9s de libert\u00e9 dans chaque segment, et contr\u00f4le de la compatibilit\u00e9 du seuil de coupure sp\u00e9cifi\u00e9. L&rsquo;impl\u00e9mentation ci-dessous illustre une architecture logicielle conforme aux recommandations du PEP 8 et du PEP 257 :<\/p>\n<p>\ndef test_de_chow(donnees: pd.DataFrame, var_dependante: str, vars_explicatives: list, point_rupture: int) -&gt; dict:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;\u00ab\u00a0\u00a0\u00bb\u00a0\u00bb<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;Ex\u00e9cute un test de rupture structurelle de Chow sur un mod\u00e8le de r\u00e9gression lin\u00e9aire.<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;Param\u00e8tres :<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&#8212;&#8212;&#8212;&#8211;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;donnees : pd.DataFrame<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tableau de donn\u00e9es contenant l&rsquo;ensemble des s\u00e9ries \u00e0 mod\u00e9liser.<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;var_dependante : str<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nom de la colonne cible (Y).<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;vars_explicatives : list<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Liste des noms de colonnes repr\u00e9sentant les pr\u00e9dicteurs (X).<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;point_rupture : int<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indice positionnel d\u00e9limitant la fin du premier r\u00e9gime temporel.<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;Retourne :<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&#8212;&#8212;&#8212;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;dict : Dictionnaire enrichi contenant les m\u00e9triques d&rsquo;ajustement, la statistique F,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;les degr\u00e9s de libert\u00e9, la p-valeur et la d\u00e9cision inf\u00e9rentielle.<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;\u00ab\u00a0\u00a0\u00bb\u00a0\u00bb<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;n_total = len(donnees)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;k_vars = len(vars_explicatives) + 1  # Inclusion de la constante<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;if point_rupture &lt;= k_vars or (n_total &#8211; point_rupture) &lt;= k_vars:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;raise ValueError(\u00ab\u00a0Sous-\u00e9chantillons trop restreints pour estimer le nombre de pr\u00e9dicteurs sp\u00e9cifi\u00e9.\u00a0\u00bb)<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;# Matrice globale<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;X_glob = sm.add_constant(donnees[vars_explicatives])<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;y_glob = donnees[var_dependante]<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;res_glob = sm.OLS(y_glob, X_glob).fit()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;scr_c = res_glob.ssr<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;# Matrice Premier R\u00e9gime<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;d1 = donnees.iloc[:point_rupture]<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;res_1 = sm.OLS(d1[var_dependante], sm.add_constant(d1[vars_explicatives])).fit()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;scr_1 = res_1.ssr<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;# Matrice Second R\u00e9gime<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;d2 = donnees.iloc[point_rupture:]<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;res_2 = sm.OLS(d2[var_dependante], sm.add_constant(d2[vars_explicatives])).fit()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;scr_2 = res_2.ssr<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;scr_nc = scr_1 + scr_2<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;df_num = k_vars<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;df_denom = n_total &#8211; (2 * k_vars)<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;stat_f = ((scr_c &#8211; scr_nc) \/ df_num) \/ (scr_nc \/ df_denom)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;p_val = stats.f.sf(stat_f, df_num, df_denom)<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;return {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lsquo;statistique_F&rsquo;: stat_f,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lsquo;p_valeur&rsquo;: p_val,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lsquo;degres_liberte_num&rsquo;: df_num,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lsquo;degres_liberte_denom&rsquo;: df_denom,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lsquo;scr_contraint&rsquo;: scr_c,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lsquo;scr_non_contraint&rsquo;: scr_nc,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lsquo;rupture_rejetee&rsquo;: bool(p_val &lt; 0.05)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;}\n<\/p>\n<p>Cette construction algorithmique modulaire encapsule l&rsquo;int\u00e9gralit\u00e9 du raisonnement alg\u00e9brique tout en garantissant une r\u00e9utilisation imm\u00e9diate sur n&rsquo;importe quelle configuration multidimensionnelle de r\u00e9gresseurs.<\/p>\n<h3>8.2 Formatage acad\u00e9mique et restitution des r\u00e9sultats<\/h3>\n<p>La formalisation des r\u00e9sultats obtenus doit r\u00e9pondre aux canons de rigueur impos\u00e9s par les comit\u00e9s de lecture scientifique et les normes acad\u00e9miques (telles que les pr\u00e9conisations de l&rsquo;American Psychological Association &#8211; APA). L&rsquo;int\u00e9gration d&rsquo;une fonction d&rsquo;affichage d\u00e9di\u00e9e permet de convertir le dictionnaire brut en un compte-rendu textuel rigoureusement document\u00e9 :<\/p>\n<p>\ndef afficher_rapport_chow(resultats: dict, seuil_significativite: float = 0.05) -&gt; None:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;\u00ab\u00a0\u00a0\u00bb\u00a0\u00bbAffiche une synth\u00e8se format\u00e9e des r\u00e9sultats du test de Chow.\u00a0\u00bb\u00a0\u00bb\u00a0\u00bb<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(\u00ab\u00a0=\u00a0\u00bb * 65)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(\u00a0\u00bb           RAPPORT D&rsquo;ANALYSE DE RUPTURE STRUCTURELLE\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(\u00a0\u00bb                       (TEST DE CHOW)\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(\u00ab\u00a0=\u00a0\u00bb * 65)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(f\u00a0\u00bbStatistique F de Fisher        : {resultats[&lsquo;statistique_F&rsquo;]:.4f}\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(f\u00a0\u00bbDegr\u00e9s de libert\u00e9              : F({resultats[&lsquo;degres_liberte_num&rsquo;]}, {resultats[&lsquo;degres_liberte_denom&rsquo;]})\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(f\u00a0\u00bbProbabilit\u00e9 critique (p-val)   : {resultats[&lsquo;p_valeur&rsquo;]:.4e}\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(f\u00a0\u00bbSomme des carr\u00e9s contrainte    : {resultats[&lsquo;scr_contraint&rsquo;]:.4f}\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(f\u00a0\u00bbSomme des carr\u00e9s partitionn\u00e9e  : {resultats[&lsquo;scr_non_contraint&rsquo;]:.4f}\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(\u00ab\u00a0&#8211;\u00a0\u00bb * 65)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;if resultats[&lsquo;p_valeur&rsquo;] &lt; seuil_significativite:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\u00a0\u00bbCONCLUSION : Rejet de H0 au seuil alpha = {seuil_significativite * 100:.1f}%.\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\u00ab\u00a0Pr\u00e9sence av\u00e9r\u00e9e d&rsquo;une rupture structurelle statistiquement significative.\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;else:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\u00a0\u00bbCONCLUSION : Non-rejet de H0 au seuil alpha = {seuil_significativite * 100:.1f}%.\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\u00ab\u00a0Absence de preuve statistique en faveur d&rsquo;un changement de r\u00e9gime.\u00a0\u00bb)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;print(\u00ab\u00a0=\u00a0\u00bb * 65)\n<\/p>\n<p>L&rsquo;ex\u00e9cution conjointe de ces modules conf\u00e8re une tra\u00e7abilit\u00e9 totale \u00e0 l&rsquo;analyse inf\u00e9rentielle, facilitant l&rsquo;incorporation directe des m\u00e9triques dans les rapports de recherche ou les m\u00e9moires d&rsquo;\u00e9conom\u00e9trie.<\/p>\n<h2>9. M\u00e9thode alternative par mod\u00e8le \u00e0 variables indicatrices et termes d&rsquo;interaction<\/h2>\n<h3>9.1 Sp\u00e9cification de l&rsquo;approche par r\u00e9gression unique augment\u00e9e<\/h3>\n<p>Bien que la m\u00e9thode scind\u00e9e originelle de Chow soit d&rsquo;une limpidit\u00e9 conceptuelle remarquable, il existe une formulation analytique strictement \u00e9quivalente fond\u00e9e sur l&rsquo;estimation d&rsquo;une r\u00e9gression unique augment\u00e9e par des variables muettes (<em>dummy variables<\/em>) et des termes d&rsquo;interaction multiplicative. Cette approche unifi\u00e9e, th\u00e9oris\u00e9e notamment par Damodar Gujarati, pr\u00e9sente des vertus analytiques sup\u00e9rieures en permettant de tester isol\u00e9ment les ruptures d&rsquo;ordonn\u00e9e \u00e0 l&rsquo;origine et les ruptures de pente au sein d&rsquo;une seule et m\u00eame matrice de covariance.<\/p>\n<p>Soit <span class=\"arabpsy-math-inline\" data-latex=\"D_t\">$D_t$<\/span> une variable indicatrice binaire marquant le changement de r\u00e9gime temporel, d\u00e9finie pour chaque observation <span class=\"arabpsy-math-inline\" data-latex=\"t\">$t$<\/span> par :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"D_t = \\begin{\\cases} 0 &amp;a\\mp; \\text{si } t le T^* \\quad (\\text{P\u00e9riode ant\u00e9rieure})  1 &amp;a\\mp; \\text{si } t &gt; T^* \\quad (\\text{P\u00e9riode post\u00e9rieure}) \\end{\\cases}\">$$D_t = \\begin{\\cases} 0 &#038;a\\mp; \\text{si } t le T^* \\quad (\\text{P\u00e9riode ant\u00e9rieure})  1 &#038;a\\mp; \\text{si } t &gt; T^* \\quad (\\text{P\u00e9riode post\u00e9rieure}) \\end{\\cases}$$<\/span><\/p>\n<p>Le mod\u00e8le de r\u00e9gression enrichi int\u00e9grant l&rsquo;interaction compl\u00e8te s&rsquo;\u00e9nonce ainsi :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"y_t = \\alpha_0 + \\alpha_1 D_t + \\beta_0 x_t + \\beta_1 (x_t \\times D_t) + \\varepsilon_t\">$$y_t = \\alpha_0 + \\alpha_1 D_t + \\beta_0 x_t + \\beta_1 (x_t \\times D_t) + \\varepsilon_t$$<\/span><\/p>\n<p>L&rsquo;interpr\u00e9tation structurelle des coefficients de cette \u00e9quation globale est imm\u00e9diate :<\/p>\n<ul>\n<li>Pour la premi\u00e8re p\u00e9riode (<span class=\"arabpsy-math-inline\" data-latex=\"D_t = 0\">$D_t = 0$<\/span>), le mod\u00e8le se r\u00e9duit \u00e0 : <span class=\"arabpsy-math-inline\" data-latex=\"y_t = \\alpha_0 + \\beta_0 x_t + \\varepsilon_t\">$y_t = \\alpha_0 + \\beta_0 x_t + \\varepsilon_t$<\/span>. La constante est <span class=\"arabpsy-math-inline\" data-latex=\"\\alpha_0\">$\\alpha_0$<\/span> et la pente est <span class=\"arabpsy-math-inline\" data-latex=\"\\beta_0\">$\\beta_0$<\/span>.<\/li>\n<li>Pour la seconde p\u00e9riode (<span class=\"arabpsy-math-inline\" data-latex=\"D_t = 1\">$D_t = 1$<\/span>), le mod\u00e8le devient : <span class=\"arabpsy-math-inline\" data-latex=\"y_t = (\\alpha_0 + \\alpha_1) + (\\beta_0 + \\beta_1) x_t + \\varepsilon_t\">$y_t = (\\alpha_0 + \\alpha_1) + (\\beta_0 + \\beta_1) x_t + \\varepsilon_t$<\/span>. La constante devient <span class=\"arabpsy-math-inline\" data-latex=\"(\\alpha_0 + \\alpha_1)\">$(\\alpha_0 + \\alpha_1)$<\/span> et la pente s&rsquo;\u00e9tablit \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"(\\beta_0 + \\beta_1)\">$(\\beta_0 + \\beta_1)$<\/span>.<\/li>\n<\/ul>\n<p>Dans ce cadre, <span class=\"arabpsy-math-inline\" data-latex=\"\\alpha_1\">$\\alpha_1$<\/span> mesure pr\u00e9cis\u00e9ment l&rsquo;\u00e9cart d&rsquo;ordonn\u00e9e \u00e0 l&rsquo;origine entre les deux r\u00e9gimes (le saut structurel), tandis que <span class=\"arabpsy-math-inline\" data-latex=\"\\beta_1\">$\\beta_1$<\/span> quantifie le diff\u00e9rentiel de pente (la rotation d&rsquo;\u00e9lasticit\u00e9). L&rsquo;hypoth\u00e8se nulle du test de Chow (<span class=\"arabpsy-math-inline\" data-latex=\"\\beta_1 = \\beta_2\">$\\beta_1 = \\beta_2$<\/span> dans la formulation originelle) \u00e9quivaut rigoureusement \u00e0 l&rsquo;hypoth\u00e8se conjointe de nullit\u00e9 des coefficients diff\u00e9rentiels :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"H_0 : \\alpha_1 = 0 \\quad \\text{et} \\quad \\beta_1 = 0\">$$H_0 : \\alpha_1 = 0 \\quad \\text{et} \\quad \\beta_1 = 0$$<\/span><\/p>\n<p>Cette hypoth\u00e8se conjointe de restrictions lin\u00e9aires se teste via un simple test de Wald ou un test <span class=\"arabpsy-math-inline\" data-latex=\"F\">$F$<\/span> restreint sur la r\u00e9gression unique augment\u00e9e.<\/p>\n<h3>9.2 Ex\u00e9cution et v\u00e9rification statistique sous Statsmodels<\/h3>\n<p>L&rsquo;impl\u00e9mentation de cette r\u00e9gression augment\u00e9e sous Python se r\u00e9v\u00e8le particuli\u00e8rement \u00e9l\u00e9gante gr\u00e2ce \u00e0 l&rsquo;interface de formule symbolique propos\u00e9e par <code>statsmodels.formula.api<\/code> (inspir\u00e9e de la syntaxe de Wilkinson-Rogers utilis\u00e9e dans le langage R) :<\/p>\n<p>\ndf_augmente = df_experiment.copy()<br \/>\ndf_augmente[&lsquo;D&rsquo;] = (df_augmente.index &gt;= df_augmente.index[rupture_index]).astype(int)<br \/>\ndf_augmente[&lsquo;X_D&rsquo;] = df_augmente[&lsquo;X&rsquo;] * df_augmente[&lsquo;D&rsquo;]<\/p>\n<p>modele_augmente = smf.ols(formula=&rsquo;Y ~ X + D + X_D&rsquo;, data=df_augmente).fit()<br \/>\nprint(modele_augmente.summary())<\/p>\n<p># Test d&rsquo;hypoth\u00e8se conjointe (Wald \/ F-test)<br \/>\nhypothese_conjointe = &lsquo;(D = 0), (X_D = 0)&rsquo;<br \/>\nf_test_resultat = modele_augmente.f_test(hypothese_conjointe)<\/p>\n<p>print(f\u00a0\u00bbStatistique F du test conjoint : {f_test_resultat.fvalue.item():.4f}\u00a0\u00bb)<br \/>\nprint(f\u00a0\u00bbP-valeur associ\u00e9e             : {f_test_resultat.pvalue.item():.4e}\u00a0\u00bb)\n<\/p>\n<p>La concordance num\u00e9rique entre le r\u00e9sultat issu de <code>f_test<\/code> sur le mod\u00e8le augment\u00e9 et la statistique <span class=\"arabpsy-math-inline\" data-latex=\"F_{Chow}\">$F_{Chow}$<\/span> obtenue via la m\u00e9thode des r\u00e9gressions partitionn\u00e9es de la section pr\u00e9c\u00e9dente est strictement parfaite (au niveau de pr\u00e9cision de la machine). L&rsquo;avantage additionnel majeur de cette seconde formulation r\u00e9side dans l&rsquo;examen direct des tests <span class=\"arabpsy-math-inline\" data-latex=\"t\">$t$<\/span> individuels associ\u00e9s aux variables <code>D<\/code> et <code>X_D<\/code> : ils permettent de discerner imm\u00e9diatement si la rupture globale observ\u00e9e est tir\u00e9e pr\u00e9f\u00e9rentiellement par l&rsquo;affaissement de la pente, par le d\u00e9placement de la constante, ou par les deux ph\u00e9nom\u00e8nes de concert.<\/p>\n<h2>10. Diagnostics post-estimation et contr\u00f4le des postulats d&rsquo;homosc\u00e9dasticit\u00e9<\/h2>\n<h3>10.1 \u00c9valuation de la variance r\u00e9siduelle entre sous-groupes<\/h3>\n<p>Comme d\u00e9montr\u00e9 lors de l&rsquo;expos\u00e9 des fondements math\u00e9matiques du test, la statistique de Fisher-Snedecor est conditionn\u00e9e par l&rsquo;\u00e9galit\u00e9 stricte des variances r\u00e9siduelles entre les r\u00e9gimes temporels (<span class=\"arabpsy-math-inline\" data-latex=\"\\sigma_1^2 = \\sigma_2^2\">$\\sigma_1^2 = \\sigma_2^2$<\/span>). Lorsque cette hypoth\u00e8se d&rsquo;homosc\u00e9dasticit\u00e9 inter-p\u00e9riodes est viol\u00e9e, le d\u00e9nominateur de Chow ne constitue plus un estimateur convergent de la variance sous-jacente, induisant un risque majeur de sur-rejet pathologique de l&rsquo;hypoth\u00e8se nulle.<\/p>\n<p>Pour pr\u00e9munir l&rsquo;analyse contre ce biais, il est imp\u00e9ratif d&rsquo;\u00e9valuer formellement l&rsquo;\u00e9galit\u00e9 des variances r\u00e9siduelles des deux sous-mod\u00e8les partitionn\u00e9s. Le test classique de Goldfeld-Quandt est sp\u00e9cifiquement destin\u00e9 \u00e0 comparer les variances des erreurs entre deux sous-\u00e9chantillons distincts. Dans Statsmodels, il s&rsquo;ex\u00e9cute ais\u00e9ment via la fonction d\u00e9di\u00e9e du sous-module diagnostique :<\/p>\n<p>\nfrom statsmodels.stats.diagnostic import het_goldfeldquandt, het_breuschpagan, het_white<\/p>\n<p>gq_stat, gq_pval, _ = het_goldfeldquandt(y=modele_contraint.model.endog, x=modele_contraint.model.exog, split=rupture_index)<br \/>\nprint(f\u00a0\u00bbTest de Goldfeld-Quandt &#8211; F: {gq_stat:.4f}, p-valeur: {gq_pval:.4f}\u00a0\u00bb)\n<\/p>\n<p>En compl\u00e9ment de la comparaison inter-groupes de Goldfeld-Quandt, l&rsquo;\u00e9valuation de l&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 conditionnelle au sein de la s\u00e9rie globale s&rsquo;op\u00e8re par le test de Breusch-Pagan ou par le test g\u00e9n\u00e9ral de White :<\/p>\n<p>\nbp_test = het_breuschpagan(modele_contraint.resid, modele_contraint.model.exog)<br \/>\nprint(f\u00a0\u00bbTest de Breusch-Pagan (Lagrange Multiplier p-val) : {bp_test[1]:.4e}\u00a0\u00bb)\n<\/p>\n<p>Si la <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>-valeur du test de Goldfeld-Quandt ou de Breusch-Pagan est significativement inf\u00e9rieure au seuil de 5 %, la pr\u00e9sence d&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 est av\u00e9r\u00e9e. Dans cette conjoncture, la statistique standard de Chow perd sa fiabilit\u00e9 distributionnelle, et l&rsquo;\u00e9conom\u00e8tre doit obligatoirement mobiliser des estimateurs robustes alternatifs.<\/p>\n<h3>10.2 Solutions m\u00e9thodologiques face aux violations des postulats<\/h3>\n<p>Face \u00e0 la pr\u00e9sence document\u00e9e d&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 structurelle entre les p\u00e9riodes, la d\u00e9marche acad\u00e9mique consiste \u00e0 abandonner le test de Fisher conventionnel au profit d&rsquo;un test de Wald asymptotique fond\u00e9 sur une matrice de variance-covariance robuste aux h\u00e9t\u00e9rosc\u00e9dasticit\u00e9s de type White-Huber (notamment les estimateurs sandwich HC2 ou HC3 recommand\u00e9s pour les \u00e9chantillons finis).<\/p>\n<p>Sous Statsmodels, cette proc\u00e9dure s&rsquo;articule directement sur le mod\u00e8le \u00e0 variables indicatrices en sp\u00e9cifiant le param\u00e8tre de covariance robuste lors de l&rsquo;ajustement :<\/p>\n<p>\n# Ajustement avec matrice de covariance robuste aux h\u00e9t\u00e9rosc\u00e9dasticit\u00e9s (HC3)<br \/>\nmodele_robuste = smf.ols(formula=&rsquo;Y ~ X + D + X_D&rsquo;, data=df_augmente).fit(cov_type=&rsquo;HC3&prime;)<\/p>\n<p># Ex\u00e9cution du test de Wald robuste pour l&rsquo;hypoth\u00e8se de stabilit\u00e9<br \/>\nwald_test_robuste = modele_robuste.f_test(&lsquo;(D = 0), (X_D = 0)&rsquo;)<br \/>\nprint(\u00ab\u00a0=\u00a0\u00bb * 60)<br \/>\nprint(\u00a0\u00bb        TEST DE STABILIT\u00c9 PARAM\u00c9TRIQUE ROBUSTE (HC3)\u00a0\u00bb)<br \/>\nprint(\u00ab\u00a0=\u00a0\u00bb * 60)<br \/>\nprint(f\u00a0\u00bbStatistique F robuste de Wald : {wald_test_robuste.fvalue.item():.4f}\u00a0\u00bb)<br \/>\nprint(f\u00a0\u00bbP-valeur corrig\u00e9e             : {wald_test_robuste.pvalue.item():.4e}\u00a0\u00bb)<br \/>\nprint(\u00ab\u00a0=\u00a0\u00bb * 60)\n<\/p>\n<p>L&rsquo;utilisation de la correction HC3 garantit que l&rsquo;in\u00e9galit\u00e9 des dispersions stochastiques entre les r\u00e9gimes ne vient pas gonfler artificiellement la statistique de test. Si le test de Wald robuste rejette toujours l&rsquo;hypoth\u00e8se de nullit\u00e9 conjointe au seuil critique, la conclusion d&rsquo;une rupture structurelle sur les param\u00e8tres de r\u00e9gression devient math\u00e9matiquement incontestable.<\/p>\n<p>Par ailleurs, en pr\u00e9sence de violations mod\u00e9r\u00e9es de la normalit\u00e9 des erreurs sur des \u00e9chantillons restreints, le recours \u00e0 un r\u00e9\u00e9chantillonnage par bootstrap semi-param\u00e9trique sur les r\u00e9sidus constitue une voie de recours \u00e9l\u00e9gante pour d\u00e9river la distribution empirique exacte de la statistique de Chow sans requ\u00e9rir l&rsquo;hypoth\u00e8se de gaussianit\u00e9 stricte.<\/p>\n<h2>11. Extensions avanc\u00e9es : points de rupture inconnus et ruptures multiples<\/h2>\n<h3>11.1 Limites de la fixation arbitraire du seuil temporel<\/h3>\n<p>Le talon d&rsquo;Achille fondamental du test classique de Chow r\u00e9side dans son caract\u00e8re strictement conditionnel : il exige la d\u00e9signation pr\u00e9alable, fixe et d\u00e9terministe de la date de rupture <span class=\"arabpsy-math-inline\" data-latex=\"T^*\">$T^*$<\/span>. Dans de nombreux contextes analytiques, cette date est choisie sur la base d&rsquo;un \u00e9v\u00e9nement institutionnel document\u00e9 (l&rsquo;adoption d&rsquo;une l\u00e9gislation, la survenue d&rsquo;un krach boursier, la date d&rsquo;une intervention m\u00e9dicale). N\u00e9anmoins, cette d\u00e9marche d\u00e9terministe pr\u00e9sente deux vuln\u00e9rabilit\u00e9s m\u00e9thodologiques majeures :<\/p>\n<ul>\n<li><strong>Le biais de confirmation post-hoc :<\/strong> Lorsqu&rsquo;un chercheur scrute visuellement les s\u00e9ries de donn\u00e9es, rep\u00e8re une inflexion apparente, puis pose son point de rupture exactement \u00e0 cette date pour tester sa significativit\u00e9 par le test de Chow, il commet un biais de s\u00e9lection d&rsquo;hypoth\u00e8se s\u00e9v\u00e8re. Le test de Chow n&rsquo;a pas \u00e9t\u00e9 con\u00e7u pour tester une rupture identifi\u00e9e de mani\u00e8re endog\u00e8ne par l&rsquo;observation des donn\u00e9es elles-m\u00eames.<\/li>\n<li><strong>L&rsquo;inflation drastique de l&rsquo;erreur de type I :<\/strong> L&rsquo;application r\u00e9p\u00e9t\u00e9e du test de Chow sur plusieurs dates candidates sans ajustement pour tests multiples conduit \u00e0 une distorsion statistique consid\u00e9rable. M\u00eame sur une s\u00e9rie parfaitement stable issue d&rsquo;un bruit blanc stationnaire, tester s\u00e9quentiellement l&rsquo;int\u00e9gralit\u00e9 des dates possibles maximise la probabilit\u00e9 d&rsquo;obtenir fortuitement une statistique <span class=\"arabpsy-math-inline\" data-latex=\"F\">$F$<\/span> hautement significative \u00e0 l&rsquo;un des points de la s\u00e9rie.<\/li>\n<\/ul>\n<p>Pour surmonter cette impasse, il est indispensable de traiter la date de rupture non plus comme une certitude exog\u00e8ne fix\u00e9e arbitrairement, mais comme un param\u00e8tre statistique inconnu devant \u00eatre estim\u00e9 de mani\u00e8re endog\u00e8ne par les donn\u00e9es.<\/p>\n<h3>11.2 Tests de Quandt et algorithmes de segmentation s\u00e9quentielle<\/h3>\n<p>Pour formaliser la d\u00e9tection de ruptures temporelles sans pr\u00e9juger de leur localisation exacte, Richard Quandt a introduit en 1960 le concept du test de ratio de vraisemblance s\u00e9quentiel, popularis\u00e9 par Donald Andrews en 1993 sous l&rsquo;appellation de test <em>Sup-Chow<\/em> ou test du <em>Quandt Likelihood Ratio<\/em> (QLR).<\/p>\n<p>Le protocole du test Sup-Chow consiste \u00e0 faire glisser s\u00e9quentiellement l&rsquo;indice de coupure candidate <span class=\"arabpsy-math-inline\" data-latex=\"t_k\">$t_k$<\/span> sur une fen\u00eatre centrale restreinte de l&rsquo;\u00e9chantillon, usuellement d\u00e9limit\u00e9e par un \u00e9lagage sym\u00e9trique (<em>trimming<\/em>) de <span class=\"arabpsy-math-inline\" data-latex=\"15%\">$15%$<\/span> \u00e0 chaque extr\u00e9mit\u00e9 :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"t_k in [0.15 N, 0.85 N]\">$$t_k in [0.15 N, 0.85 N]$$<\/span><\/p>\n<p>Pour chaque date candidate, un test de Chow standard est ex\u00e9cut\u00e9, produisant une s\u00e9rie chronologique de statistiques <span class=\"arabpsy-math-inline\" data-latex=\"{F(t_k)}\">${F(t_k)}$<\/span>. La statistique finale du test Sup-Chow correspond au supremum de cette s\u00e9rie :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"Sup\\text{-}F = \\max_{t_k in [0.15N, 0.85N]} F(t_k)\">$$Sup\\text{-}F = \\max_{t_k in [0.15N, 0.85N]} F(t_k)$$<\/span><\/p>\n<p>Puisque cette statistique correspond au maximum d&rsquo;un processus stochastique, elle ne suit plus une distribution de Fisher classique, mais converge vers une fonctionnelle de ponts browniens dont les valeurs critiques non standards ont \u00e9t\u00e9 tabul\u00e9es par Donald Andrews (1993, 2003).<\/p>\n<p>L&rsquo;impl\u00e9mentation de cette recherche exhaustive du point de rupture maximisant la statistique <span class=\"arabpsy-math-inline\" data-latex=\"F\">$F$<\/span> se programme de fa\u00e7on m\u00e9thodique en Python :<\/p>\n<p>\ntrimming = 0.15<br \/>\nidx_debut = int(n_observations * trimming)<br \/>\nidx_fin = int(n_observations * (1 &#8211; trimming))<\/p>\n<p>resultats_sup_f = []<\/p>\n<p>for t_candidat in range(idx_debut, idx_fin):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;d_chow = test_de_chow(df_experiment, &lsquo;Y&rsquo;, [&lsquo;X&rsquo;], point_rupture=t_candidat)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;resultats_sup_f.append((t_candidat, d_chow[&lsquo;statistique_F&rsquo;]))<\/p>\n<p>df_qlr = pd.DataFrame(resultats_sup_f, columns=[&lsquo;Index&rsquo;, &lsquo;F_Stat&rsquo;])<br \/>\nmax_rupture = df_qlr.loc[df_qlr[&lsquo;F_Stat&rsquo;].idxmax()]<\/p>\n<p>print(f\u00a0\u00bbPoint de rupture endog\u00e8ne estim\u00e9 : Indice {int(max_rupture[&lsquo;Index&rsquo;])}\u00a0\u00bb)<br \/>\nprint(f\u00a0\u00bbStatistique Sup-F maximale        : {max_rupture[&lsquo;F_Stat&rsquo;]:.4f}\u00a0\u00bb)\n<\/p>\n<p>Au-del\u00e0 de la d\u00e9tection d&rsquo;une rupture unitaire par le test de Quandt, l&rsquo;identification de points de rupture multiples simultan\u00e9s rel\u00e8ve des algorithmes de segmentation par programmation dynamique ou par p\u00e9nalisation de l&rsquo;\u00e9lagage (par exemple l&rsquo;algorithme PELT ou l&rsquo;approche canonique de Bai et Perron, 1998, 2003). Dans l&rsquo;\u00e9cosyst\u00e8me Python moderne, ces protocoles sophistiqu\u00e9s sont impl\u00e9ment\u00e9s avec une efficacit\u00e9 optimale par la biblioth\u00e8que sp\u00e9cialis\u00e9e <code>ruptures<\/code>, qui permet de localiser automatiquement un nombre arbitraire de mutations structurelles le long d&rsquo;un signal continu multidimensionnel.<\/p>\n<h2>12. Synth\u00e8se pratique, rapport de r\u00e9sultats et recommandations analytiques<\/h2>\n<h3>12.1 Protocole de r\u00e9daction acad\u00e9mique selon les normes standard<\/h3>\n<p>La transcription des r\u00e9sultats d&rsquo;un test de Chow au sein d&rsquo;un article de recherche, d&rsquo;une th\u00e8se de doctorat ou d&rsquo;un rapport d&rsquo;expertise industrielle ob\u00e9it \u00e0 des conventions r\u00e9dactionnelles formelles. L&rsquo;inf\u00e9rence ne peut se r\u00e9sumer \u00e0 une simple affirmation binaire, mais doit articuler la statistique de test, les degr\u00e9s de libert\u00e9, la probabilit\u00e9 critique, et la quantification concr\u00e8te de l&rsquo;\u00e9volution des coefficients de r\u00e9gression.<\/p>\n<p>Une r\u00e9daction exemplaire selon les standards acad\u00e9miques s&rsquo;\u00e9nonce selon le canevas suivant :<\/p>\n<p><em>\u00ab Afin d&rsquo;\u00e9valuer la constance param\u00e9trique de la relation entre la variable explicative <span class=\"arabpsy-math-inline\" data-latex=\"X\">$X$<\/span> et la variable d\u00e9pendante <span class=\"arabpsy-math-inline\" data-latex=\"Y\">$Y$<\/span>, un test de rupture structurelle de Chow a \u00e9t\u00e9 ex\u00e9cut\u00e9 au seuil temporel pr\u00e9d\u00e9termin\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"T^* = 100\">$T^* = 100$<\/span>. Les r\u00e9sultats mettent en \u00e9vidence une instabilit\u00e9 structurelle hautement significative de la fonction de r\u00e9gression, <span class=\"arabpsy-math-inline\" data-latex=\"F(2, 196) = 1428.53\">$F(2, 196) = 1428.53$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"p &lt; 0.001\">$p &lt; 0.001$<\/span>. L&#039;hypoth\u00e8se nulle d&#039;invariance des param\u00e8tres entre les deux sous-p\u00e9riodes est par cons\u00e9quent formellement rejet\u00e9e. L&#039;analyse d\u00e9taill\u00e9e des sous-mod\u00e8les indique une translation \u00e0 la hausse de l&#039;ordonn\u00e9e \u00e0 l&#039;origine, passant de $15.02$ (<span class=\"arabpsy-math-inline\" data-latex=\"\\pm 0.18\">$\\pm 0.18$<\/span>) au cours du r\u00e9gime initial \u00e0 $34.98$ (<span class=\"arabpsy-math-inline\" data-latex=\"\\pm 0.32\">$\\pm 0.32$<\/span>) au cours du second r\u00e9gime, conjugu\u00e9e \u00e0 une diminution substantielle de la sensibilit\u00e9 marginale, le coefficient de pente fl\u00e9chissant de $2.49$ (<span class=\"arabpsy-math-inline\" data-latex=\"t = 48.2\">$t = 48.2$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"p &lt; 0.001\">$p &lt; 0.001$<\/span>) \u00e0 $0.80$ (<span class=\"arabpsy-math-inline\" data-latex=\"t = 16.4\">$t = 16.4$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"p &lt; 0.001\">$p &lt; 0.001$<\/span>). \u00bb<\/em><\/p>\n<p>Sur le plan de la pr\u00e9sentation tabulaire, les publications de haut niveau privil\u00e9gient la disposition comparative standard illustr\u00e9e ci-apr\u00e8s :<\/p>\n<ul>\n<li><strong>Colonne 1 :<\/strong> Variables explicatives et constante (<span class=\"arabpsy-math-inline\" data-latex=\"X\">$X$<\/span>, Constante).<\/li>\n<li><strong>Colonne 2 :<\/strong> Mod\u00e8le global contraint (<span class=\"arabpsy-math-inline\" data-latex=\"N = 200\">$N = 200$<\/span>, coefficients, erreurs-types et <span class=\"arabpsy-math-inline\" data-latex=\"R^2\">$R^2$<\/span>).<\/li>\n<li><strong>Colonne 3 :<\/strong> R\u00e9gime ant\u00e9rieur \u00e0 la rupture (<span class=\"arabpsy-math-inline\" data-latex=\"t le 100\">$t le 100$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"N_1 = 100\">$N_1 = 100$<\/span>).<\/li>\n<li><strong>Colonne 4 :<\/strong> R\u00e9gime post\u00e9rieur \u00e0 la rupture (<span class=\"arabpsy-math-inline\" data-latex=\"t &gt; 100\">$t &gt; 100$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"N_2 = 100\">$N_2 = 100$<\/span>).<\/li>\n<li><strong>Bas de tableau :<\/strong> Statistique <span class=\"arabpsy-math-inline\" data-latex=\"F\">$F$<\/span> de Chow, degr\u00e9s de libert\u00e9 du num\u00e9rateur et du d\u00e9nominateur, <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>-valeur du test, et diagnostic d&rsquo;homosc\u00e9dasticit\u00e9 de Goldfeld-Quandt.<\/li>\n<\/ul>\n<h3>12.2 Arbre de d\u00e9cision pour l&rsquo;\u00e9valuation de la stabilit\u00e9 des mod\u00e8les<\/h3>\n<p>Pour guider le praticien de la donn\u00e9e et l&rsquo;\u00e9conom\u00e8tre \u00e0 travers le d\u00e9dale des choix m\u00e9thodologiques et des arbitrages distributionnels, l&rsquo;arbre de d\u00e9cision op\u00e9rationnel suivant synth\u00e9tise le protocole d&rsquo;analyse de rupture structurelle :<\/p>\n<ol>\n<li><strong>\u00c9tape 1 : Formulation contextuelle de la rupture<\/strong>\n<ul>\n<li><em>Le point d&rsquo;inflexion est-il justifi\u00e9 a priori par un choc exog\u00e8ne, une r\u00e9forme ou un \u00e9v\u00e9nement historique av\u00e9r\u00e9 ?<\/em>\n<ul>\n<li>Si <strong>OUI<\/strong> : Retenir cet indice temporel fixe <span class=\"arabpsy-math-inline\" data-latex=\"T^*\">$T^*$<\/span> pour le test de Chow conditionnel standard.<\/li>\n<li>Si <strong>NON<\/strong> (exploration endog\u00e8ne) : Bannir la s\u00e9lection arbitraire post-hoc. Mobiliser le test s\u00e9quentiel <em>Sup-Chow \/ QLR<\/em> d&rsquo;Andrews ou les algorithmes de la biblioth\u00e8que <code>ruptures<\/code> avec valeurs critiques tabul\u00e9es adapt\u00e9es.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u00c9tape 2 : V\u00e9rification de la configurabilit\u00e9 des donn\u00e9es<\/strong>\n<ul>\n<li>V\u00e9rifier que chaque sous-segment temporel dispose d&rsquo;une taille d&rsquo;\u00e9chantillon suffisante : <span class=\"arabpsy-math-inline\" data-latex=\"N_1 &gt; k\">$N_1 &gt; k$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"N_2 &gt; k\">$N_2 &gt; k$<\/span>.<\/li>\n<li>Inspecter l&rsquo;absence de colin\u00e9arit\u00e9 stricte au sein de chaque matrice de r\u00e9gression partitionn\u00e9e.<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u00c9tape 3 : Estimation et test pr\u00e9liminaire<\/strong>\n<ul>\n<li>Ajuster le mod\u00e8le contraint global et les deux sous-r\u00e9gressions sectorielles.<\/li>\n<li>Calculer les sommes de carr\u00e9s r\u00e9siduels <span class=\"arabpsy-math-inline\" data-latex=\"SCR_c\">$SCR_c$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"SCR_1\">$SCR_1$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"SCR_2\">$SCR_2$<\/span> et d\u00e9river la statistique <span class=\"arabpsy-math-inline\" data-latex=\"F_{Chow}\">$F_{Chow}$<\/span>.<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u00c9tape 4 : Contr\u00f4le imp\u00e9ratif des hypoth\u00e8ses stochastiques<\/strong>\n<ul>\n<li>Ex\u00e9cuter le test de Goldfeld-Quandt pour comparer les variances r\u00e9siduelles des deux sous-\u00e9chantillons.<\/li>\n<li><em>Les variances d&rsquo;erreur sont-elles statistiquement identiques (<span class=\"arabpsy-math-inline\" data-latex=\"\\sigma_1^2 = \\sigma_2^2\">$\\sigma_1^2 = \\sigma_2^2$<\/span>) ?<\/em>\n<ul>\n<li>Si <strong>OUI<\/strong> : Conclure directement \u00e0 partir de la <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>-valeur de la distribution <span class=\"arabpsy-math-inline\" data-latex=\"\\mathcal{F}(k, N - 2k)\">$\\mathcal{F}(k, N &#8211; 2k)$<\/span>.<\/li>\n<li>Si <strong>NON<\/strong> (h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 confirm\u00e9e) : Rejeter la statistique de Fisher standard. R\u00e9estimer le mod\u00e8le via la r\u00e9gression unique augment\u00e9e par variables indicatrices en int\u00e9grant une matrice de covariance robuste aux h\u00e9t\u00e9rosc\u00e9dasticit\u00e9s (estimateur sandwich <code>HC3<\/code>). Conclure par le test de Wald robuste.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u00c9tape 5 : Int\u00e9gration mod\u00e9lisatrice post-test<\/strong>\n<ul>\n<li>Si le test valide la rupture, proscrire l&rsquo;utilisation pr\u00e9dictive du mod\u00e8le global unitaire. Segmenter la mod\u00e9lisation future par r\u00e9gimes ind\u00e9pendants ou int\u00e9grer formellement des termes d&rsquo;interaction temporelle au sein de l&rsquo;\u00e9quation finale de d\u00e9ploiement.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>La rigueur m\u00e9thodologique impos\u00e9e par cet arbre de d\u00e9cision assure que les d\u00e9ductions tir\u00e9es des mod\u00e8les \u00e9conom\u00e9triques sous Python reposent sur des bases distributionnelles in\u00e9branlables, \u00e9liminant tant le risque de sur-rejet inh\u00e9rent \u00e0 l&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 non contr\u00f4l\u00e9e que le biais d&rsquo;omission r\u00e9sultant de l&rsquo;agr\u00e9gation forc\u00e9e de structures temporelles h\u00e9t\u00e9rog\u00e8nes.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Andrews, D. W. K. (1993). Tests for parameter instability and structural change with unknown change point. <em>Econometrica<\/em>, 61(4), 821\u2013856. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/2951764\">https:\/\/doi.org\/10.2307\/2951764<\/a><\/li>\n<li>Andrews, D. W. K. (2003). Tests for parameter instability and structural change with unknown change point: A corrigendum. <em>Econometrica<\/em>, 71(1), 395\u2013397. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1111\/1468-0262.00405\">https:\/\/doi.org\/10.1111\/1468-0262.00405<\/a><\/li>\n<li>Bai, J., &amp; Perron, P. (1998). Estimating and testing linear models with multiple structural changes. <em>Econometrica<\/em>, 66(1), 47\u201378. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/2998540\">https:\/\/doi.org\/10.2307\/2998540<\/a><\/li>\n<li>Bai, J., &amp; Perron, P. (2003). Computation and analysis of multiple structural change models. <em>Journal of Applied Econometrics<\/em>, 18(1), 1\u201322. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1002\/jae.659\">https:\/\/doi.org\/10.1002\/jae.659<\/a><\/li>\n<li>Chow, G. C. (1960). Tests of equality between sets of coefficients in two linear regressions. <em>Econometrica<\/em>, 28(3), 591\u2013605. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/1910133\">https:\/\/doi.org\/10.2307\/1910133<\/a><\/li>\n<li>Goldfeld, S. M., &amp; Quandt, R. E. (1965). Some tests for homoskedasticity. <em>Journal of the American Statistical Association<\/em>, 60(310), 539\u2013547. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/01621459.1965.10480811\">https:\/\/doi.org\/10.1080\/01621459.1965.10480811<\/a><\/li>\n<li>Greene, W. H. (2018). <em>Econometric analysis<\/em> (8e \u00e9d.). Pearson.<\/li>\n<li>Gujarati, D. N., &amp; Porter, D. C. (2009). <em>Basic econometrics<\/em> (5e \u00e9d.). McGraw-Hill Education.<\/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\u2013362. <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>McKinney, W. (2010). Data structures for statistical computing in Python. <em>Proceedings of the 9th Python in Science Conference<\/em>, 51\u201356. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.25080\/Majora-92bf1922-00a\">https:\/\/doi.org\/10.25080\/Majora-92bf1922-00a<\/a><\/li>\n<li>Quandt, R. E. (1960). Tests of the hypothesis that a linear regression system obeys two separate regimes. <em>Journal of the American Statistical Association<\/em>, 55(290), 324\u2013330. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/01621459.1960.10482067\">https:\/\/doi.org\/10.1080\/01621459.1960.10482067<\/a><\/li>\n<li>Seabold, S., &amp; Perktold, J. (2010). Statsmodels: Econometric and statistical modeling with Python. <em>Proceedings of the 9th Python in Science Conference<\/em>, 92\u201396. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.25080\/Majora-92bf1922-011\">https:\/\/doi.org\/10.25080\/Majora-92bf1922-011<\/a><\/li>\n<li>Truong, C., Runge, L., &amp; Oudre, L. (2020). Selective review of offline change point detection methods. <em>Signal Processing<\/em>, 167, 107299. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/j.sigpro.2019.107299\">https:\/\/doi.org\/10.1016\/j.sigpro.2019.107299<\/a><\/li>\n<li>Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., &#8230; &amp; SciPy 1.0 Contributors. (2020). SciPy 1.0: Fundamental algorithms for scientific computing in Python. <em>Nature Methods<\/em>, 17(3), 261\u2013272. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1038\/s41592-019-0686-2\">https:\/\/doi.org\/10.1038\/s41592-019-0686-2<\/a><\/li>\n<li>White, H. (1980). A heteroskedasticity-consistent covariance matrix estimator and a direct test for heteroskedasticity. <em>Econometrica<\/em>, 48(4), 817\u2013838. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/1912934\">https:\/\/doi.org\/10.2307\/1912934<\/a><\/li>\n<li>Wooldridge, J. M. (2020). <em>Introductory econometrics: A modern approach<\/em> (7e \u00e9d.). Cengage Learning.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour r\u00e9aliser le test de Chow en Python : th\u00e9orie math\u00e9matique, d\u00e9tection de ruptures structurelles et impl\u00e9mentation pas \u00e0 pas.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[2141,2465,2464,1838],"tags":[2468,1910,7970,2903,7969],"class_list":["post-7760","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-quantitative","category-programmation-python","category-science-des-donnees","category-statistiques","tag-python","tag-regression-lineaire","tag-rupture-structurelle","tag-statsmodels","tag-test-de-chow"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/7760","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=7760"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/7760\/revisions"}],"predecessor-version":[{"id":7762,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/7760\/revisions\/7762"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}