From ba4155c608ad6bb8b81baafff07dd4b66b4ca1a7 Mon Sep 17 00:00:00 2001 From: jsboige Date: Thu, 1 Oct 2026 20:40:18 +0200 Subject: [PATCH] Fix: Causal-Bridges -- interieurs repointes sur la numerotation courante (#17421) Titres md[0] des carnets 02-06 (ex-DoWhy-1..5) + erratum de renumerotation, renvois prose et labels de liens repoints sur les numeros courants. Markdown-only (exception C.2), editions textuelles chirurgicales dans le JSON brut (lecon notebook-edit-rawtext), diff 25 lignes sur 7 fichiers. See #18718 Co-Authored-By: Claude Sonnet 5.5 --- .../CausalBridges-01-Do-Calculus.ipynb | 2 +- ...salBridges-02-Dowhy-Estimand-Intervention.ipynb | 2 +- ...Bridges-03-Dowhy-Contrefactuel-Individuel.ipynb | 14 +++++++------- ...usalBridges-04-Dowhy-Decouverte-Structure.ipynb | 14 +++++++------- ...alBridges-05-Dowhy-Sensibilite-Confounder.ipynb | 8 ++++---- .../CausalBridges-06-Dowhy-Instrument-Faible.ipynb | 6 +++--- .../CausalBridges-08-Causal-Fairness.ipynb | 4 ++-- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-01-Do-Calculus.ipynb b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-01-Do-Calculus.ipynb index 9adb10c12c..8813bfd2ba 100644 --- a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-01-Do-Calculus.ipynb +++ b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-01-Do-Calculus.ipynb @@ -728,7 +728,7 @@ "| # | Design | Information disponible | Biais à dompter |\n", "|---|--------|------------------------|-----------------|\n", "| 1 | Observationnel, même population | $P(v)$ | **confondage** — neutralisé par backdoor (§4) |\n", - "| 2 | Expérimental sur $Z$ (plus accessible que $X$) | $P(v \\mid do(z))$ | **extrapolation d'intervention** — le cas instrumental (§5 de DoWhy-5) |\n", + "| 2 | Expérimental sur $Z$ (plus accessible que $X$) | $P(v \\mid do(z))$ | **extrapolation d'intervention** — le cas instrumental (§5 de CausalBridges-06) |\n", "| 3 | Essai randomisé, échantillon **non représentatif** | $P(v \\mid do(x), S{=}1)$ | **sélection** — l'essai dit vrai... de son échantillon |\n", "| 4 | Source expérimentale ≠ population cible | $P(v \\mid do(x))$ + $P(v \\mid S{=}s)$ | **transportabilité** — généraliser l'effet à la cible |\n", "\n", diff --git a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-02-Dowhy-Estimand-Intervention.ipynb b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-02-Dowhy-Estimand-Intervention.ipynb index 851a5bcab6..6f44606f64 100644 --- a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-02-Dowhy-Estimand-Intervention.ipynb +++ b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-02-Dowhy-Estimand-Intervention.ipynb @@ -5,7 +5,7 @@ "id": "edfa17c4", "metadata": {}, "source": [ - "# DoWhy-1 — Exiger un estimand : l'identification causale avant le chiffre\n", + "# CausalBridges-02 — Exiger un estimand : l'identification causale avant le chiffre\n\n> Renumerotation #17421 : ce carnet etait publie sous le nom DoWhy-1 ; les renvois internes de la serie citent desormais le numero courant.\n", "\n", "**Serie** : Inference causale avec DoWhy (Probas, Python)\n", "**Prerequis** : [PyMC-05-Causal-Inference](../../PyMC/PyMC-05-Causal-Inference.ipynb) (l'echelle de Pearl,\n", diff --git a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-03-Dowhy-Contrefactuel-Individuel.ipynb b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-03-Dowhy-Contrefactuel-Individuel.ipynb index ba1da399cb..a71010765c 100644 --- a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-03-Dowhy-Contrefactuel-Individuel.ipynb +++ b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-03-Dowhy-Contrefactuel-Individuel.ipynb @@ -14,13 +14,13 @@ "tags": [] }, "source": [ - "# DoWhy-2 — Le contrefactuel individuel : quand l'effet moyen cache tout\n", + "# CausalBridges-03 — Le contrefactuel individuel : quand l'effet moyen cache tout\n\n> Renumerotation #17421 : ce carnet etait publie sous le nom DoWhy-2 ; les renvois internes de la serie citent desormais le numero courant.\n", "\n", "**Série** : Inférence causale avec DoWhy (Probas, Python)\n", - "**Prérequis** : [DoWhy-1-Estimand-et-Intervention](CausalBridges-02-Dowhy-Estimand-Intervention.ipynb) \n", + "**Prérequis** : [CausalBridges-02-Estimand-et-Intervention](CausalBridges-02-Dowhy-Estimand-Intervention.ipynb) \n", "(l'estimand, le do-calcul, l'ATE) et [Do-Calculus-Bridge](CausalBridges-01-Do-Calculus.ipynb) (backdoor).\n", "\n", - "**Objet** : monter d'un cran sur l'échelle de Pearl. DoWhy-1 répondait a la question\n", + "**Objet** : monter d'un cran sur l'échelle de Pearl. CausalBridges-02 répondait a la question\n", "« *le traitement a-t-il un effet moyen ?* » (l'**ATE**). Ce notebook pose la question\n", "d'individu : « *que se serait-il passé pour CET étudiant, sans le traitement ?* » — le\n", "**contrefactuel individuel**.\n" @@ -55,7 +55,7 @@ "**en coûte 3**. En moyenne, cela fait zéro — et pourtant, personne n'est moyen.\n", "L'**ATE** est honnête mais aveugle : il faut descendre a l'échelle de l'individu.\n", "\n", - "Ce notebook fait ce que DoWhy-1 ne pouvait pas : utiliser la **structure du SCM\n", + "Ce notebook fait ce que CausalBridges-02 ne pouvait pas : utiliser la **structure du SCM\n", "appris** pour rejouer le monde d'un individu sous une autre intervention\n", "(abduction, action, prediction).\n" ] @@ -239,7 +239,7 @@ "et d'une famille de mécanismes, puis l'utilise pour **rejouer** le monde d'un\n", "individu sous une autre intervention.\n", "\n", - "| Rung (Pearl) | Question | DoWhy-1 | DoWhy-2 |\n", + "| Rung (Pearl) | Question | CausalBridges-02 | CausalBridges-03 |\n", "|---|---|---|---|\n", "| Rung 1 — observation | Que s'est-il passé (avec le traitement) ? | l'estimand | la pente naïve + OLS |\n", "| Rung 2 — intervention | Que se passerait-il si TOUS étaient traités ? | l'ATE, backdoor | l'ATE, décomposition |\n", @@ -776,7 +776,7 @@ "\n", "Le chiffre individuel est séduisant, il doit être **honnête**. Pour qu'il tienne :\n", "\n", - "1. **Le graphe causal est connu** (ici : toujours celui de DoWhy-1, `V -> {T, Y}`, `T -> Y`) ;\n", + "1. **Le graphe causal est connu** (ici : toujours celui de CausalBridges-02, `V -> {T, Y}`, `T -> Y`) ;\n", "2. **La famille de mécanismes est adéquate** : le bruit doit être additif et le\n", " regresseur capable de la vraie forme — polynomial degré 2 pour une interaction ;\n", "3. **L'abduction est exacte** : le bruit individuel est parfaitement déduit de\n", @@ -978,7 +978,7 @@ "**Verdict honnête** : le contrefactuel individuel est exact ici parce que le\n", "monde est connu, l'interaction polynomiale bien approchée et le bruit additive.\n", "Sur le terrain, exiger : graphe identifié, mécanismes diagnostiqués, sensibilité\n", - "de spécification. La suite de la série (DoWhy-3) apprendra a **découvrir** le\n", + "de spécification. La suite de la série (CausalBridges-04) apprendra a **découvrir** le\n", "graphe quand il est inconnu — la dernière carte non jouée ici.\n", "\n", "**Pour aller plus loin** : `dowhy_organs.py` (module canonique de ce notebook) —\n", diff --git a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-04-Dowhy-Decouverte-Structure.ipynb b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-04-Dowhy-Decouverte-Structure.ipynb index 678b039a2a..2cf58d2808 100644 --- a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-04-Dowhy-Decouverte-Structure.ipynb +++ b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-04-Dowhy-Decouverte-Structure.ipynb @@ -14,15 +14,15 @@ "tags": [] }, "source": [ - "# DoWhy-3 — La découverte de structure : le graphe qu'on n'a pas\n", + "# CausalBridges-04 — La découverte de structure : le graphe qu'on n'a pas\n\n> Renumerotation #17421 : ce carnet etait publie sous le nom DoWhy-3 ; les renvois internes de la serie citent desormais le numero courant.\n", "\n", - "DoWhy-1 (section 4, « le graphe assumé ») identifie, estime et réfute un effet **sur un graphe donné**. Mais d'où vient ce graphe ? D'une expertise métier — ou des données elles-mêmes. Ce notebook traite la question que DoWhy-1 laissait ouverte : **que peut-on retrouver du graphe causal depuis les données seules, et où s'arrête exactement ce que les données peuvent dire ?**\n", + "CausalBridges-02 (section 4, « le graphe assumé ») identifie, estime et réfute un effet **sur un graphe donné**. Mais d'où vient ce graphe ? D'une expertise métier — ou des données elles-mêmes. Ce notebook traite la question que CausalBridges-02 laissait ouverte : **que peut-on retrouver du graphe causal depuis les données seules, et où s'arrête exactement ce que les données peuvent dire ?**\n", "\n", "**Moteurs** : [`causal-learn`](https://causal-learn.readthedocs.io/) pour la découverte (PC, GES, DirectLiNGAM — réellement exécutés, règle F / SOTA-OK), [`dowhy`](https://www.pywhy.org/dowhy/) pour le retour à l'estimand. Kernel `coursia-ml-training`.\n", "\n", "**Plan** : 1. un monde DGP-connu — 2. PC (contraintes) — 3. GES (score) — 4. la classe d'équivalence — 5. LiNGAM (hypothèse fonctionnelle) — 6. l'échec honnête — 7. l'ambiguïté se propage à l'estimand — 8. exercices — 9. synthèse.\n", "\n", - "**Durée** : ~45 min. Prérequis : DoWhy-1 (estimand, backdoor), DAG, indépendance conditionnelle." + "**Durée** : ~45 min. Prérequis : CausalBridges-02 (estimand, backdoor), DAG, indépendance conditionnelle." ] }, { @@ -668,7 +668,7 @@ "\n", "Trois faits mesurés sur ces deux seeds : le DAG rendu est **faux** (arêtes parasites, orientations inversées — `Y → C` au lieu de `C → Y`), il est **complet** (aucune arête ambiguë qui signalerait un doute), et il est **instable** (deux seeds gaussiens rendent des graphes différents). DirectLiNGAM ne détecte pas la violation de sa propre hypothèse — il produit toujours un DAG.\n", "\n", - "Diagnostics praticiens : (1) le **kurtosis** des résidus (une valeur ≈ 0 dit que l'hypothèse non gaussienne n'est pas tenable) ; (2) l'**instabilité inter-seeds**. Le verdict « cette orientation est soutenable » vient du praticien, jamais de la librairie — c'est la leçon structurelle de la série (`NON_IDENTIFIABLE` dans DoWhy-5, CPDAG ambigu ici : chaque fois, l'honnêteté est un résultat, pas un échec)." + "Diagnostics praticiens : (1) le **kurtosis** des résidus (une valeur ≈ 0 dit que l'hypothèse non gaussienne n'est pas tenable) ; (2) l'**instabilité inter-seeds**. Le verdict « cette orientation est soutenable » vient du praticien, jamais de la librairie — c'est la leçon structurelle de la série (`NON_IDENTIFIABLE` dans CausalBridges-06, CPDAG ambigu ici : chaque fois, l'honnêteté est un résultat, pas un échec)." ] }, { @@ -687,7 +687,7 @@ "source": [ "## 7. L'ambiguïté se propage à l'estimand — le pont dowhy\n", "\n", - "DoWhy-1 identifie un estimand **sur un graphe**. Reprenons le CPDAG découvert en section 2 : ses 3 extensions valides sont 3 graphes causaux incompatibles. Sur les **mêmes données**, chacune mène à un ensemble d'ajustement différent — donc à un estimand différent. L'effet total vrai de `X` sur `Y` vaut `COEF_X_M · COEF_M_Y = 0.8`." + "CausalBridges-02 identifie un estimand **sur un graphe**. Reprenons le CPDAG découvert en section 2 : ses 3 extensions valides sont 3 graphes causaux incompatibles. Sur les **mêmes données**, chacune mène à un ensemble d'ajustement différent — donc à un estimand différent. L'effet total vrai de `X` sur `Y` vaut `COEF_X_M · COEF_M_Y = 0.8`." ] }, { @@ -756,7 +756,7 @@ "\n", "`0.81` en ajustant `{C}` (le DAG vrai), `0.22` en ajustant `{M}` (l'extension qui prend M pour parent de X — ajuster le médiateur écrase la part médiatisée), `1.05` sans rien ajuster (l'extension où X est racine — le confondeur n'est plus confondeur). **Aucune donnée supplémentaire, aucun `n` plus grand** ne tranche entre ces trois mondes gaussiens : le choix d'une extension est une **hypothèse causale assumée**, pas un réglage statistique.\n", "\n", - "C'est la chaîne complète de la série : **découverte** (ce notebook) → hypothèse de graphe (DoWhy-1 §4) → identification → estimation → réfutation. Chaque flèche de cette chaîne ne supprime jamais une ambiguïté : elle la convertit en hypothèse explicite." + "C'est la chaîne complète de la série : **découverte** (ce notebook) → hypothèse de graphe (CausalBridges-02 §4) → identification → estimation → réfutation. Chaque flèche de cette chaîne ne supprime jamais une ambiguïté : elle la convertit en hypothèse explicite." ] }, { @@ -968,7 +968,7 @@ "\n", "Les trois verdicts honnêtes du notebook : **CPDAG ambigu = un résultat** (l'ambiguïté est la borne exacte des données gaussiennes) ; **LiNGAM silencieux = un danger** (complétude n'est pas preuve — kurtosis et stabilité inter-seeds sont les gardes-fous) ; **ambiguïté du graphe = ambiguïté du chiffre** (le choix d'extension est causal, pas statistique).\n", "\n", - "**Dans la constellation** : DoWhy-1 (le graphe assumé et sa sensibilité), DoWhy-5 (`NON_IDENTIFIABLE` est un résultat), `CausalBridges-07-Quasi-Experimental.ipynb` (la pratique observationnelle). L'organe `dowhy_discovery_organs.py` reste importable pour tout consommateur tiers — c'est la contrainte d'architecture de la série (#13921 : module canonique, jamais de duplication cell-scoped)." + "**Dans la constellation** : CausalBridges-02 (le graphe assumé et sa sensibilité), CausalBridges-06 (`NON_IDENTIFIABLE` est un résultat), `CausalBridges-07-Quasi-Experimental.ipynb` (la pratique observationnelle). L'organe `dowhy_discovery_organs.py` reste importable pour tout consommateur tiers — c'est la contrainte d'architecture de la série (#13921 : module canonique, jamais de duplication cell-scoped)." ] } ], diff --git a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-05-Dowhy-Sensibilite-Confounder.ipynb b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-05-Dowhy-Sensibilite-Confounder.ipynb index 6f975677ca..c77550ef61 100644 --- a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-05-Dowhy-Sensibilite-Confounder.ipynb +++ b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-05-Dowhy-Sensibilite-Confounder.ipynb @@ -14,9 +14,9 @@ "tags": [] }, "source": [ - "# DoWhy-4 — Le confondeur non observé : sensibilité, pas certitude\n", + "# CausalBridges-05 — Le confondeur non observé : sensibilité, pas certitude\n\n> Renumerotation #17421 : ce carnet etait publie sous le nom DoWhy-4 ; les renvois internes de la serie citent desormais le numero courant.\n", "\n", - "DoWhy-1 exigeait un estimand **nommé** ; DoWhy-3 découvrait le graphe avec sa\n", + "CausalBridges-02 exigeait un estimand **nommé** ; CausalBridges-04 découvrait le graphe avec sa\n", "borne structurelle (le CPDAG ambigu). Il reste l'hypothèse qu'aucun graphe\n", "observé ne peut trancher : **l'absence de confondeur NON OBSERVÉ**. On ne\n", "peut ni la tester, ni la découvrir — on peut la **chiffrer**.\n", @@ -1580,8 +1580,8 @@ " étant réduit de moitié ; aucune analyse de sensibilité ne remplace la\n", " mesure du confondeur — elle dit combien elle coûte de l'ignorer.\n", "\n", - "Série DoWhy (retour au [README](README.md)) : DoWhy-1 l'estimand, DoWhy-2 le\n", - "contrefactuel, DoWhy-3 le graphe, **DoWhy-4 le confondeur caché**, DoWhy-5\n", + "Série Causal-Bridges (retour au [README](README.md)) : CausalBridges-02 l'estimand, CausalBridges-03 le\n", + "contrefactuel, CausalBridges-04 le graphe, **CausalBridges-05 le confondeur caché**, CausalBridges-06\n", "l'instrument faible.\n", "\n", "\n", diff --git a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-06-Dowhy-Instrument-Faible.ipynb b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-06-Dowhy-Instrument-Faible.ipynb index 84116189f1..757ea4dca7 100644 --- a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-06-Dowhy-Instrument-Faible.ipynb +++ b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-06-Dowhy-Instrument-Faible.ipynb @@ -5,11 +5,11 @@ "id": "768b91fc", "metadata": {}, "source": [ - "# DoWhy-5 — L'instrument faible : quand le pipeline IV rend un chiffre mais pas une cause\n", + "# CausalBridges-06 — L'instrument faible : quand le pipeline IV rend un chiffre mais pas une cause\n\n> Renumerotation #17421 : ce carnet etait publie sous le nom DoWhy-5 ; les renvois internes de la serie citent desormais le numero courant.\n", "\n", "**Série** : Inférence causale avec DoWhy (Probas, Python)\n", "\n", - "**Prérequis** : `DoWhy-1` (identification), `DoWhy-2` (contrefactuel individuel), cellule 40 de `CausalBridges-07-Quasi-Experimental.ipynb` (2SLS from scratch). Notions de MCO, $d$-séparation, **et une lecture préalable de la cellule 40 (instrument faible from scratch)** est utile pour voir ce que `dowhy` automatise.\n", + "**Prérequis** : `CausalBridges-02` (identification), `CausalBridges-03` (contrefactuel individuel), cellule 40 de `CausalBridges-07-Quasi-Experimental.ipynb` (2SLS from scratch). Notions de MCO, $d$-séparation, **et une lecture préalable de la cellule 40 (instrument faible from scratch)** est utile pour voir ce que `dowhy` automatise.\n", "\n", "**Durée** : ~45 min\n", "\n", @@ -584,7 +584,7 @@ "\n", "**Exercice 2 (F-stat vs n).** *Attendu* : F croît à peu près linéairement avec n à R² premier étage fixe — à force 0.05, R² = 0.0033 : F dépasse mécaniquement le seuil 10 pour n assez grand, *sans que l'instrument soit devenu meilleur*. Le seuil Staiger-Stock (F > 10) est une règle empirique calibrée sur le biais à n modéré, pas un théorème ; à n = 100 000, un F de 15 avec un R² de 0.003 reste un instrument dont la variation exogène est minuscule. *Anti-piège* : valider l'instrument sur le seul dépassement du seuil — rapporter le R² premier étage à côté du F, toujours.\n", "\n", - "**Exercice 3 (DAG incomplet).** *Attendu* : dowhy identifie *sous le graphe fourni* — retirez l'arête médiateur X→M→Y et l'estimand change de forme (effet total vs effet direct deviennent indiscernables), retirez un confondeur observé et le backdoor devient invalide sans erreur visible. Le verdict `NON_IDENTIFIABLE` est une *réponse* (le graphe donné ne suffit pas), pas un échec de calcul. *Anti-piège* : « corriger » en ajoutant des arêtes jusqu'à obtenir un estimé — l'identification est conditionnelle au DAG déclaré ; embellir le DAG pour obtenir un chiffre, c'est fabriquer la conclusion recherchée (le lien avec DoWhy-3 est direct : si le DAG n'est pas connu, il est *découvert et assumé*, jamais deviné au service du résultat)." + "**Exercice 3 (DAG incomplet).** *Attendu* : dowhy identifie *sous le graphe fourni* — retirez l'arête médiateur X→M→Y et l'estimand change de forme (effet total vs effet direct deviennent indiscernables), retirez un confondeur observé et le backdoor devient invalide sans erreur visible. Le verdict `NON_IDENTIFIABLE` est une *réponse* (le graphe donné ne suffit pas), pas un échec de calcul. *Anti-piège* : « corriger » en ajoutant des arêtes jusqu'à obtenir un estimé — l'identification est conditionnelle au DAG déclaré ; embellir le DAG pour obtenir un chiffre, c'est fabriquer la conclusion recherchée (le lien avec CausalBridges-04 est direct : si le DAG n'est pas connu, il est *découvert et assumé*, jamais deviné au service du résultat)." ] }, { diff --git a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-08-Causal-Fairness.ipynb b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-08-Causal-Fairness.ipynb index 50774540b9..b76a3c81a8 100644 --- a/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-08-Causal-Fairness.ipynb +++ b/MyIA.AI.Notebooks/Probas/DecisionTheory/Causal-Bridges/CausalBridges-08-Causal-Fairness.ipynb @@ -17,7 +17,7 @@ "# Causal-Fairness — Décomposer la discrimination : l'analyse d'équité causale\n", "\n", "**Série** : Inference causale avec DoWhy (Probas, Python)\n", - "**Prérequis** : [Do-Calculus-Bridge](CausalBridges-01-Do-Calculus.ipynb) (l'échelle de Pearl : observation < intervention < contrefactuel) et [DoWhy-1](CausalBridges-02-Dowhy-Estimand-Intervention.ipynb) (l'identification backdoor avec `dowhy`).\n", + "**Prérequis** : [Do-Calculus-Bridge](CausalBridges-01-Do-Calculus.ipynb) (l'échelle de Pearl : observation < intervention < contrefactuel) et [CausalBridges-02 (ex-DoWhy-1)](CausalBridges-02-Dowhy-Estimand-Intervention.ipynb) (l'identification backdoor avec `dowhy`).\n", "**Outil** : simulation Monte-Carlo à générateur connu + [`dowhy`](https://py-why.github.io/dowhy/) 0.14 pour l'identification pratique + [`pandas`](https://pandas.pydata.org/) sur le crédit allemand.\n", "**Cadre formel** : Plecko & Bareinboim, *Causal Fairness Analysis* (FnT Machine Learning R-90, 2024), chapitres 3-4.\n", "\n", @@ -1275,7 +1275,7 @@ " quatre-cinquièmes ; *Griggs v. Duke Power*, 401 U.S. 424 (1971) ;\n", "- **Dua & Graff**, UCI Machine Learning Repository — German Credit Data ;\n", "- Notebooks de la constellation : [Do-Calculus-Bridge](CausalBridges-01-Do-Calculus.ipynb) (échelle de Pearl),\n", - " [DoWhy-1](CausalBridges-02-Dowhy-Estimand-Intervention.ipynb) (identification backdoor),\n", + " [CausalBridges-02 (ex-DoWhy-1)](CausalBridges-02-Dowhy-Estimand-Intervention.ipynb) (identification backdoor),\n", " [Infer-5](../../Infer/Infer-5-Causal-Inference.ipynb) (médiation sur moteur .NET),\n", " [PyMC-05](../../PyMC/PyMC-05-Causal-Inference.ipynb) (inférence bayésienne de l'effet)." ]