{ "cells": [ { "cell_type": "markdown", "id": "title", "metadata": {}, "source": [ "# Maternal smoking and twin infant mortality\n", "\n", "This notebook analyzes real birth records. It asks a perinatal question, defines the effect that\n", "answers it, and estimates that effect with targeted maximum likelihood estimation (TMLE). It then\n", "checks what the data can check, and states what they cannot.\n", "\n", "## The situation\n", "\n", "A perinatal epidemiologist plans a smoking-cessation program for women who carry twins. The\n", "program needs the number of infant deaths that smoking causes among twins of smoking mothers. The\n", "data are US birth certificates of same-sex twin pairs born alive in 1989–1991. The National Center\n", "for Health Statistics (NCHS) linked each birth to any infant death before the first birthday.\n", "\n", "| element | in this analysis |\n", "| --- | --- |\n", "| unit | one twin pair. The mother's smoking and her recorded background apply to both twins |\n", "| treatment A | tobacco use during the pregnancy, as the birth certificate records it |\n", "| outcome Y | the share of the two twins who die before their first birthday: 0, 0.5, or 1 |\n", "| covariates C | background and medical history recorded on the certificate, listed below the graph |\n", "| time order | most of C exists before the pregnancy. A occurs during the pregnancy. The twins are born, and Y follows over one year |\n", "| observed | A, C, and Y for each pair |\n", "| counterfactual | Y⁰, the share of the twins who would die if the mother did not smoke. It is observed only for the pairs with A = 0 |\n", "\n", "Every pair has two children, so the mean of Y over pairs equals the first-year risk per child. The\n", "analysis reports risks per child. It treats the pair as the unit, because the twins share A and C\n", "and their outcomes are dependent.\n", "\n", "## The causal graph\n", "\n", "```text\n", " C ─────────────┬──────────────┐\n", " │ │ │\n", " ▼ ▼ ▼\n", " A ──────────▶ M ─────────▶ Y\n", " │ ▲ ▲\n", " │ U ─────────────┤\n", " └─────────────────────────────┘\n", "```\n", "\n", "| node | what it represents | role |\n", "| --- | --- | --- |\n", "| C | the covariates in the next table | confounders |\n", "| A | tobacco use during the pregnancy | treatment |\n", "| M | gestational age and birth weight of each twin, and complications of this pregnancy | mediators |\n", "| U | unmeasured causes of preterm birth and low birth weight, such as birth defects | common cause of M and Y |\n", "| Y | the share of the twins who die in the first year | outcome |\n", "\n", "| group of C | variables | timing |\n", "| --- | --- | --- |\n", "| mother | age, education, race, Hispanic origin, birthplace region, marital status | before the pregnancy |\n", "| father | age, education | before the pregnancy |\n", "| place and time | residence region, birth year | before the pregnancy |\n", "| pregnancy history | total birth order, a previous preterm or small infant, a previous infant over 4,000 g | before the pregnancy |\n", "| medical history | chronic hypertension; diabetes; lung, heart, or kidney disease | mostly before the pregnancy. The diabetes and lung items can include conditions that start in the pregnancy |\n", "| behavior | alcohol use in the pregnancy | during the pregnancy |\n", "\n", "| arrow or absent arrow | what it asserts |\n", "| --- | --- |\n", "| C → A | background and medical history change the chance that a mother smokes. Section 3 shows this for marital status and education |\n", "| C → Y | the same factors change infant mortality |\n", "| C → M | chronic conditions and maternal age can change gestation and fetal growth |\n", "| A → M | smoking lowers birth weight and can shorten gestation |\n", "| M → Y | preterm birth and low birth weight raise mortality |\n", "| A → Y | smoking can affect mortality through paths outside M |\n", "| U → M, U → Y | causes such as birth defects lower birth weight and raise mortality |\n", "| no U → A | the unmeasured causes of low birth weight do not cause smoking |\n", "| no A → C | smoking does not change any variable of C. Section 10 checks the three items for which this is doubtful |\n", "| no other arrow into both A and Y | C contains every common cause of smoking and mortality. This is the main judgment of the analysis |\n", "\n", "C blocks every back-door path from A to Y, so adjustment for C identifies the total effect of A.\n", "Adjustment for M would remove the part of the effect that passes through M. It would also open\n", "the path A → M ← U → Y, because M is a collider on that path. Section 7 shows the consequence in\n", "the data. Smoking can itself cause some birth defects. The collider argument concerns the causes of\n", "U that smoking does not affect.\n", "\n", "The analysis treats alcohol use as a marker of shared behavioral causes, which is a judgment. If\n", "smoking changes alcohol use, diabetes, or lung disease in the pregnancy, adjustment for them\n", "removes part of the effect. The analysis omits prenatal care, because care during the pregnancy\n", "can be a confounder or a mediator.\n", "\n", "The graph leaves three points open. It has no censoring node, because the linked file records\n", "every death before the first birthday. It does not draw two selections. The cohort holds only\n", "pregnancies that end in two live births, and the source removed the pairs with equal birth\n", "weights, which is a selection on M. If smoking changes fetal survival or birth weight, these\n", "selections can bias the effect, and these data cannot measure the bias." ] }, { "cell_type": "markdown", "id": "plan", "metadata": {}, "source": [ "## The question and the estimand\n", "\n", "**Question.** Among twin pregnancies in which the mother smoked, how much higher was the\n", "first-year mortality of the twins than it would have been if she had not smoked?\n", "\n", "| element | definition |\n", "| --- | --- |\n", "| target population | same-sex twin pairs born alive in the US in 1989–1991 to smoking mothers, in a residence state and year that collected the tobacco item |\n", "| intervention | no tobacco use during the pregnancy, against the observed smoking |\n", "| counterfactual outcome | Y⁰, the share of the twins who would die with no smoking |\n", "| estimand | the average treatment effect on the treated, ATT = E[Y \\| A = 1] − E[Y⁰ \\| A = 1] |\n", "\n", "The ATT answers the program's question, because a cessation program acts on mothers who smoke.\n", "The average treatment effect (ATE) would also average over non-smoking mothers. For them,\n", "\"smoke\" is not an intervention that anyone proposes. The crude difference\n", "E[Y | A = 1] − E[Y | A = 0] replaces E[Y⁰ | A = 1] with the risk of the non-smoking pairs. That\n", "replacement is valid only if the two groups have the same risk without smoking. Section 3 shows\n", "that they do not.\n", "\n", "| assumption | statement | how it can be assessed |\n", "| --- | --- | --- |\n", "| no unmeasured confounding | Y⁰ is independent of A given C | scientific judgment. Section 9 measures how strong a missed confounder must be to change the answer |\n", "| consistency | Y = Y⁰ for the pairs with A = 0 | scientific judgment. \"No smoking\" has several real versions, such as never smoking or quitting early |\n", "| correct exposure record | the certificate records smoking correctly | scientific judgment. The data contain no second measure of smoking |\n", "| no effect of A on C | smoking does not change a variable of C | scientific judgment. Section 10 refits without the three doubtful items |\n", "| positivity | P(A = 0 \\| C) > 0 for the background of every smoking mother | partly checkable. Section 8 reads the fitted propensity |\n", "| independent units | the outcomes of different pairs are independent | scientific judgment. The analysis does not need independence of the two twins |\n", "| selection | the restrictions to live-born pairs, to unequal birth weights, and to a stated smoking status do not bias the effect | scientific judgment. Section 2 counts only the state-year and missing-item exclusions, because the source contains no other pairs |\n", "\n", "## Why this method\n", "\n", "TMLE estimates the ATT from two nuisance models. The outcome regression is E(Y | A, C). The\n", "propensity is P(A = 1 | C). TMLE fits both. It then updates the outcome regression so that the\n", "estimate solves the efficient influence-curve equation of the ATT. Each method choice below\n", "follows from a feature of this problem.\n", "\n", "| feature of the problem | method choice |\n", "| --- | --- |\n", "| 18 covariates, most of them categorical, with unknown interactions | a Super Learner for each nuisance: a main-terms logistic model and a gradient-boosting model, weighted by cross-validation |\n", "| the boosting model adapts to the data | cross-fitting over three folds. Each nuisance prediction comes from models fit on the other folds, so the analysis needs no Donsker condition on the learners. The product of the two nuisance errors must still shrink faster than n^(-1/2) |\n", "| the outcome is a share in [0, 1] | a logistic fluctuation with `q_bounds=(0, 1)`, which keeps every estimate in the outcome's range |\n", "| either nuisance model can be wrong | the estimate is consistent if either nuisance model is consistent |\n", "| the outcome is rare, so the outcome model explains little | the estimator then behaves close to inverse-probability weighting, and the propensity drives its precision |\n", "| the target is the ATT | the update weights a non-smoking pair by g/(1 − g), with g its propensity. Overlap is needed only where the smoking mothers are |\n", "| the pair is the unit | one row per pair, so the influence-curve standard error needs no cluster correction |\n", "\n", "| term | meaning |\n", "| --- | --- |\n", "| nuisance | a model that the estimate needs and the question does not ask about |\n", "| propensity g(C) | P(A = 1 \\| C), the probability that the mother smokes given her background |\n", "| targeting | the update of the outcome regression that removes the first-order bias of the plug-in estimate |\n", "| influence curve | the contribution of each pair to the estimate. Its variance gives the standard error |\n", "| Super Learner | a weighted combination of candidate learners, with weights from cross-validation |" ] }, { "cell_type": "markdown", "id": "setup-heading", "metadata": {}, "source": [ "## 1. Setup\n", "\n", "The data step downloads three CSV files, so the notebook needs a network connection." ] }, { "cell_type": "code", "execution_count": 1, "id": "setup", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:17:47.391245Z", "iopub.status.busy": "2026-10-16T01:17:47.391028Z", "iopub.status.idle": "2026-10-16T01:17:50.127182Z", "shell.execute_reply": "2026-10-16T01:17:50.126217Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "python 3.13.16\n", "cleverly 0.1.3\n", "numpy 2.5.4 | pandas 3.0.6 | scikit-learn 1.9.1\n" ] } ], "source": [ "import platform\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import sklearn\n", "from sklearn.ensemble import HistGradientBoostingClassifier, HistGradientBoostingRegressor\n", "from sklearn.linear_model import LogisticRegression\n", "\n", "import cleverly\n", "from cleverly import (\n", " ATT,\n", " CausalStudy,\n", " CrossFitting,\n", " Inference,\n", " ModelSpec,\n", " PointTreatment,\n", " Runtime,\n", " StudyProtocol,\n", " SuperLearner,\n", " Targeting,\n", " TMLEMethod,\n", ")\n", "from cleverly.learners import GLM\n", "\n", "SEED = 2026\n", "pd.set_option(\"display.width\", 120)\n", "print(\"python\", platform.python_version())\n", "print(\"cleverly\", cleverly.__version__)\n", "print(\"numpy\", np.__version__, \"| pandas\", pd.__version__, \"| scikit-learn\", sklearn.__version__)" ] }, { "cell_type": "markdown", "id": "setup-reading", "metadata": {}, "source": [ "**What this output tells you.** The stored outputs came from these versions. Another version can\n", "print other numbers." ] }, { "cell_type": "markdown", "id": "data-heading", "metadata": {}, "source": [ "## 2. Build the cohort\n", "\n", "The files come from the TWINS extraction of\n", "[Louizos et al. (2017)](../references.md#the-twins-example), pinned to one commit of the CEVAE\n", "repository. That extraction holds the same-sex twin pairs of the NCHS linked files for 1989–1991,\n", "without the pairs with equal birth weights. NCHS collected the data. NCHS is not responsible for\n", "this analysis or its conclusions. The [references](../references.md#the-twins-example) give the\n", "data-use rules.\n", "\n", "Some states did not collect the tobacco item in some years. The NCHS guides name them:\n", "California, Indiana, New York, and South Dakota in all three years, Oklahoma in 1989 and 1990, and\n", "Louisiana and Nebraska in 1989. The code keeps a state-year when at most half of its pairs lack\n", "the item. It then drops the pairs whose item is not stated.\n", "\n", "The code keeps the variables of C at their recorded levels, and it pools sparse levels with their\n", "neighbors. A missing categorical value becomes the level \"not recorded\". The seven medical\n", "risk-factor items are missing together, so one indicator, `risk_factors_recorded`, marks those\n", "pairs." ] }, { "cell_type": "code", "execution_count": 2, "id": "load-data", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:17:50.129281Z", "iopub.status.busy": "2026-10-16T01:17:50.128612Z", "iopub.status.idle": "2026-10-16T01:17:52.261955Z", "shell.execute_reply": "2026-10-16T01:17:52.255734Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pairs in the source file: 71,345\n", "pairs in state-years without the item: 16,739\n", "pairs with the item not stated: 2,732\n", "eligible pairs: 51,874\n", "pairs with smoking recorded: 0.1628\n", "first-year mortality per child: 0.0361\n", "adjustment variables: 18\n", "\n", "excluded state-years: residence-state code, birth years, pairs\n", " 5 1989, 1990, 1991 8,536\n", " 15 1989, 1990, 1991 1,535\n", " 19 1989 464\n", " 28 1989 188\n", " 33 1989, 1990, 1991 5,315\n", " 37 1989, 1990 489\n", " 42 1989, 1990, 1991 209\n", " 52 1991 1\n", " 55 1989 2\n" ] } ], "source": [ "COMMIT = \"9081f863e24ce21bd34c8d6a41bf0edc7d1b65dd\"\n", "BASE_URL = f\"https://raw.githubusercontent.com/AMLab-Amsterdam/CEVAE/{COMMIT}/datasets/TWINS\"\n", "raw = {\n", " name: pd.read_csv(f\"{BASE_URL}/twin_pairs_{name}_3years_samesex.csv\")\n", " for name in (\"X\", \"T\", \"Y\")\n", "}\n", "X, T, Y = raw[\"X\"], raw[\"T\"], raw[\"Y\"]\n", "assert len(X) == len(T) == len(Y)\n", "\n", "# Some residence states did not collect the tobacco item in some years. Keep the state-years\n", "# that did: in those, at most half of the pairs lack the item.\n", "state_year = [X[\"brstate\"], X[\"data_year\"]]\n", "missing_share = X[\"tobacco\"].isna().groupby(state_year).transform(\"mean\")\n", "reporting_state = missing_share <= 0.5\n", "eligible = reporting_state & X[\"tobacco\"].notna()\n", "\n", "\n", "def category(column, merge=None):\n", " \"\"\"A covariate as string levels. Missing values form the level \"not recorded\".\"\"\"\n", " values = X.loc[eligible, column].map(lambda value: merge.get(value, value) if merge else value)\n", " labels = values.map(lambda value: \"not recorded\" if pd.isna(value) else str(int(value)))\n", " return labels.to_numpy()\n", "\n", "\n", "source = X.loc[eligible]\n", "# The seven medical risk-factor items are missing together, so one indicator records that.\n", "risk_items = [\"diabetes\", \"chyper\", \"lung\", \"cardiac\", \"renal\", \"preterm\", \"pre4000\"]\n", "risk_missing = source[risk_items].isna()\n", "assert risk_missing.eq(risk_missing[\"diabetes\"], axis=0).all(axis=None)\n", "risk = source[risk_items].fillna(0).astype(float)\n", "\n", "pairs = pd.DataFrame(\n", " {\n", " \"smoked\": source[\"tobacco\"].astype(int).to_numpy(),\n", " \"death_share\": (Y.loc[eligible, \"mort_0\"] + Y.loc[eligible, \"mort_1\"]).to_numpy() / 2,\n", " # Sparse levels are pooled with their neighbours.\n", " \"mother_age\": category(\"mager8\", {1: 2, 8: 7}),\n", " \"mother_education\": category(\"meduc6\"),\n", " \"father_education\": category(\"feduc6\"),\n", " \"father_age\": category(\"dfageq\"),\n", " \"mother_race\": category(\"mrace\", dict.fromkeys(range(4, 10), 3)),\n", " \"mother_hispanic\": category(\"ormoth\", dict.fromkeys(range(2, 6), 1)),\n", " \"mother_birth_region\": category(\"mplbir_reg\"),\n", " \"residence_region\": category(\"brstate_reg\"),\n", " \"birth_year\": category(\"data_year\"),\n", " \"birth_order\": category(\"dtotord_min\", dict.fromkeys(range(6, 40), 5)),\n", " \"married\": source[\"dmar\"].astype(float).to_numpy(),\n", " \"alcohol\": category(\"alcohol\"),\n", " \"risk_factors_recorded\": 1.0 - risk_missing[\"diabetes\"].astype(float).to_numpy(),\n", " \"diabetes\": risk[\"diabetes\"].to_numpy(),\n", " \"chronic_hypertension\": risk[\"chyper\"].to_numpy(),\n", " \"lung_heart_kidney_disease\": risk[[\"lung\", \"cardiac\", \"renal\"]].max(axis=1).to_numpy(),\n", " \"previous_preterm_or_small\": risk[\"preterm\"].to_numpy(),\n", " \"previous_infant_over_4000g\": risk[\"pre4000\"].to_numpy(),\n", " }\n", ")\n", "ADJUSTMENT = tuple(column for column in pairs.columns if column not in (\"smoked\", \"death_share\"))\n", "\n", "print(f\"pairs in the source file: {len(X):,}\")\n", "print(f\"pairs in state-years without the item: {(~reporting_state).sum():,}\")\n", "print(f\"pairs with the item not stated: {(reporting_state & X['tobacco'].isna()).sum():,}\")\n", "print(f\"eligible pairs: {len(pairs):,}\")\n", "print(f\"pairs with smoking recorded: {pairs['smoked'].mean():.4f}\")\n", "print(f\"first-year mortality per child: {pairs['death_share'].mean():.4f}\")\n", "print(f\"adjustment variables: {len(ADJUSTMENT)}\")\n", "print()\n", "print(\"excluded state-years: residence-state code, birth years, pairs\")\n", "excluded = X.loc[~reporting_state].groupby(\"brstate\")\n", "for code, group in excluded:\n", " years = \", \".join(str(1900 + year) for year in sorted(group[\"data_year\"].unique()))\n", " print(f\" {code:>2} {years:<16} {len(group):>5,}\")" ] }, { "cell_type": "markdown", "id": "load-data-reading", "metadata": {}, "source": [ "**What this output tells you.** The source file holds 71,345 pairs. The state-years without the\n", "item hold 16,739 pairs. Their residence-state codes are the states that the guides name:\n", "5 (California), 15 (Indiana), 19 (Louisiana), 28 (Nebraska), 33 (New York), 37 (Oklahoma), and\n", "42 (South Dakota). Code 52 holds 1 pair in 1991, and code 55 holds 2 pairs in 1989.\n", "\n", "In the kept state-years, 2,732 pairs have no stated smoking status. The cohort holds 51,874 pairs.\n", "Smoking is recorded for a share of 0.1628 of them. The first-year mortality is 0.0361 per child.\n", "\n", "The estimate therefore describes the twin births of the reporting states and years. It assumes\n", "that the removal of the pairs with no stated smoking status does not bias the effect." ] }, { "cell_type": "markdown", "id": "association-heading", "metadata": {}, "source": [ "## 3. The crude association, and why it is confounded\n", "\n", "The crude difference uses the non-smoking pairs to stand in for E[Y⁰ | A = 1]. A covariate of C\n", "biases that stand-in when two conditions hold: its distribution differs between the groups, and it\n", "predicts mortality without smoking. The code computes the crude difference with a Wald interval\n", "over pairs. For four covariates, it then prints the share in each group and the risk of the\n", "non-smoking pairs with and without the covariate." ] }, { "cell_type": "code", "execution_count": 3, "id": "association", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:17:52.264259Z", "iopub.status.busy": "2026-10-16T01:17:52.264051Z", "iopub.status.idle": "2026-10-16T01:17:52.375259Z", "shell.execute_reply": "2026-10-16T01:17:52.374298Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "risk, children of smoking mothers: 0.0427\n", "risk, children of non-smoking mothers: 0.0348\n", "crude difference: 0.0078, 95% CI [0.0038, 0.0119]\n", "\n", " share, smoking share, non-smoking risk if present, non-smoking risk if absent, non-smoking\n", "unmarried 0.4053 0.2165 0.0588 0.0282\n", "mother_education 1-2 0.3216 0.1460 0.0521 0.0319\n", "birth_order 4+ 0.2853 0.1674 0.0324 0.0353\n", "alcohol use 0.1017 0.0119 0.0350 0.0348\n" ] } ], "source": [ "smoker = pairs[\"smoked\"] == 1\n", "risk_smoked = pairs.loc[smoker, \"death_share\"].mean()\n", "risk_not = pairs.loc[~smoker, \"death_share\"].mean()\n", "crude = risk_smoked - risk_not\n", "# Pairs are the independent units, so the standard error uses the pair-level outcome.\n", "crude_se = np.sqrt(\n", " pairs.loc[smoker, \"death_share\"].var() / smoker.sum()\n", " + pairs.loc[~smoker, \"death_share\"].var() / (~smoker).sum()\n", ")\n", "print(f\"risk, children of smoking mothers: {risk_smoked:.4f}\")\n", "print(f\"risk, children of non-smoking mothers: {risk_not:.4f}\")\n", "crude_ci = (crude - 1.96 * crude_se, crude + 1.96 * crude_se)\n", "print(f\"crude difference: {crude:.4f}, 95% CI [{crude_ci[0]:.4f}, {crude_ci[1]:.4f}]\")\n", "print()\n", "factors = {\n", " \"unmarried\": pairs[\"married\"] == 0,\n", " \"mother_education 1-2\": pairs[\"mother_education\"].isin([\"1\", \"2\"]),\n", " \"birth_order 4+\": pairs[\"birth_order\"].isin([\"4\", \"5\"]),\n", " \"alcohol use\": pairs[\"alcohol\"] == \"1\",\n", "}\n", "non_smoking = pairs.loc[~smoker]\n", "imbalance = pd.DataFrame(\n", " {\n", " \"share, smoking\": {name: mask[smoker].mean() for name, mask in factors.items()},\n", " \"share, non-smoking\": {name: mask[~smoker].mean() for name, mask in factors.items()},\n", " \"risk if present, non-smoking\": {\n", " name: non_smoking.loc[mask[~smoker], \"death_share\"].mean()\n", " for name, mask in factors.items()\n", " },\n", " \"risk if absent, non-smoking\": {\n", " name: non_smoking.loc[~mask[~smoker], \"death_share\"].mean()\n", " for name, mask in factors.items()\n", " },\n", " }\n", ")\n", "print(imbalance.round(4).to_string())" ] }, { "cell_type": "markdown", "id": "association-reading", "metadata": {}, "source": [ "**What this output tells you.** The risk is 0.0427 for the children of smoking mothers and 0.0348\n", "for the others. The crude difference is 0.0078, with a 95% interval of [0.0038, 0.0119].\n", "\n", "| covariate | share, smoking | share, non-smoking | risk, non-smoking, with it | risk, non-smoking, without it | direction of crude bias |\n", "| --- | --- | --- | --- | --- | --- |\n", "| unmarried | 0.4053 | 0.2165 | 0.0588 | 0.0282 | upward: both conditions hold |\n", "| mother's education in the two lowest categories | 0.3216 | 0.1460 | 0.0521 | 0.0319 | upward: both conditions hold |\n", "| total birth order 4 or higher | 0.2853 | 0.1674 | 0.0324 | 0.0353 | downward: more common with smoking, and the risk is lower with it |\n", "| alcohol use | 0.1017 | 0.0119 | 0.0350 | 0.0348 | none visible. Few non-smoking mothers report alcohol use, so their risk is imprecise |\n", "\n", "Unmarried mothers and mothers with less education smoke more often. Without smoking, their twins\n", "also die more often. These two covariates therefore make the crude difference larger than the\n", "ATT. Birth order acts in the other direction, with a smaller risk difference. The net bias needs\n", "an analysis that adjusts for all of C together." ] }, { "cell_type": "markdown", "id": "protocol-heading", "metadata": {}, "source": [ "## 4. Write the protocol\n", "\n", "A `StudyProtocol` records the design before any model runs. Every result fitted from the study\n", "stores its fingerprint." ] }, { "cell_type": "code", "execution_count": 4, "id": "protocol", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:17:52.377121Z", "iopub.status.busy": "2026-10-16T01:17:52.376599Z", "iopub.status.idle": "2026-10-16T01:17:52.381999Z", "shell.execute_reply": "2026-10-16T01:17:52.381128Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "causal study protocol: schema 1; 59fee493706efdcb\n", "target population: Same-sex twin pairs born alive in the US in 1989-1991, to mothers resident in a state that collected the tobacco item in the year of birth\n", "eligibility: ['Both twins born alive, with unequal birth weights (the source removed equal pairs)', 'The residence state collected the tobacco item in the year of birth', 'Tobacco use stated for this pregnancy']\n", "time zero: Birth of the twins; smoking status refers to the pregnancy before it\n", "treatment strategies: ['Smoking during pregnancy, as recorded', 'No smoking during pregnancy']\n", "treatment versions: ['Any recorded tobacco use, at any amount and in any trimester', 'No tobacco use at any time in the pregnancy']\n", "outcome: Share of the two twins who die before their first birthday\n", "horizon: First year after birth\n", "intercurrent-event handling: ['None: the linked file records every first-year death']\n", "interference unit: Twin pair\n", "assumption rationale: ['Exchangeability: pre-pregnancy background and chronic conditions are adjusted; unmeasured behaviour and environment can still confound', 'Consistency: no smoking has several real versions, such as never smoking or quitting', 'Positivity: checked on the fitted propensity of the smoking pairs', 'Selection: the cohort is restricted to live-born twin pairs, which smoking can affect']\n" ] } ], "source": [ "protocol = StudyProtocol(\n", " target_population=(\n", " \"Same-sex twin pairs born alive in the US in 1989-1991, to mothers resident in a state \"\n", " \"that collected the tobacco item in the year of birth\"\n", " ),\n", " eligibility=(\n", " \"Both twins born alive, with unequal birth weights (the source removed equal pairs)\",\n", " \"The residence state collected the tobacco item in the year of birth\",\n", " \"Tobacco use stated for this pregnancy\",\n", " ),\n", " time_zero=\"Birth of the twins; smoking status refers to the pregnancy before it\",\n", " treatment_strategies=(\"Smoking during pregnancy, as recorded\", \"No smoking during pregnancy\"),\n", " treatment_versions=(\n", " \"Any recorded tobacco use, at any amount and in any trimester\",\n", " \"No tobacco use at any time in the pregnancy\",\n", " ),\n", " outcome=\"Share of the two twins who die before their first birthday\",\n", " horizon=\"First year after birth\",\n", " intercurrent_event_handling=(\"None: the linked file records every first-year death\",),\n", " interference_unit=\"Twin pair\",\n", " assumption_rationale=(\n", " \"Exchangeability: pre-pregnancy background and chronic conditions are adjusted; \"\n", " \"unmeasured behaviour and environment can still confound\",\n", " \"Consistency: no smoking has several real versions, such as never smoking or quitting\",\n", " \"Positivity: checked on the fitted propensity of the smoking pairs\",\n", " \"Selection: the cohort is restricted to live-born twin pairs, which smoking can affect\",\n", " ),\n", ")\n", "print(\"\\n\".join(protocol.summary_lines()))" ] }, { "cell_type": "markdown", "id": "protocol-reading", "metadata": {}, "source": [ "**What this output tells you.** The first line gives the fingerprint `59fee493706efdcb`. The other\n", "lines record the population, the eligibility rules of section 2, and the two strategies. The\n", "`treatment versions` line states that \"no smoking\" means no tobacco use at any time in the\n", "pregnancy. The `assumption rationale` line records the four judgments of the plan." ] }, { "cell_type": "markdown", "id": "identify-heading", "metadata": {}, "source": [ "## 5. Identify the ATT\n", "\n", "The design names the outcome, the treatment, and the adjustment set C. It declares no cluster,\n", "because each row is a pair." ] }, { "cell_type": "code", "execution_count": 5, "id": "identify", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:17:52.383630Z", "iopub.status.busy": "2026-10-16T01:17:52.383134Z", "iopub.status.idle": "2026-10-16T01:17:52.984076Z", "shell.execute_reply": "2026-10-16T01:17:52.982990Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "average treatment effect among units receiving each comparison arm\n", "identified by explicit-adjustment: E_{W | smoked=a}[E(death_share | smoked=a, W) - E(death_share | smoked=0, W)] for a in [1]\n", "adjustment/history: ['mother_age', 'mother_education', 'father_education', 'father_age', 'mother_race', 'mother_hispanic', 'mother_birth_region', 'residence_region', 'birth_year', 'birth_order', 'married', 'alcohol', 'risk_factors_recorded', 'diabetes', 'chronic_hypertension', 'lung_heart_kidney_disease', 'previous_preterm_or_small', 'previous_infant_over_4000g']\n", "required nuisances: ['outcome_regression', 'treatment_mechanism']\n", "assumptions:\n", " - consistency: Y = Y^a when A = a\n", " - no interference: one unit's potential outcome does not depend on other units' treatment assignments\n", " - no unmeasured confounding: Y^a is independent of A given W\n", " - positivity for the reference arm within each comparison population: P(smoked = 0 | W) > 0 wherever P(smoked = a | W) > 0, for every comparison arm a\n", " - the conditioning event has positive probability: P(smoked = a) > 0 for every comparison arm a\n", "causal study protocol: schema 1; 59fee493706efdcb\n" ] } ], "source": [ "study = CausalStudy(\n", " pairs,\n", " design=PointTreatment(outcome=\"death_share\", treatment=\"smoked\", adjustment=ADJUSTMENT),\n", " protocol=protocol,\n", ")\n", "att_effect = study.identify(ATT(reference=0))\n", "print(att_effect.summary(protocol=\"fingerprint\"))" ] }, { "cell_type": "markdown", "id": "identify-reading", "metadata": {}, "source": [ "**What this output tells you.** The first line names the estimand: the effect among the units that\n", "received the comparison arm. The second line is the identifying formula. It averages\n", "E(Y | A = 1, C) − E(Y | A = 0, C) over the covariates of the smoking pairs. The adjustment list\n", "holds the 18 variables of C. The assumptions are the library's generic list. The plan states which\n", "of them need scientific judgment." ] }, { "cell_type": "markdown", "id": "fit-heading", "metadata": {}, "source": [ "## 6. Estimate the ATT\n", "\n", "The method uses the choices of the plan. The outcome learner combines a quasi-binomial generalized\n", "linear model (`GLM(family=\"binomial\")`, a logistic model for a share) and a gradient-boosting\n", "model with a Poisson loss. The treatment learner combines a logistic model and a gradient-boosting\n", "classifier. Both boosting models are regularized and limited in depth. The classifier stops early\n", "on a validation split." ] }, { "cell_type": "code", "execution_count": 6, "id": "att-fit", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:17:52.986139Z", "iopub.status.busy": "2026-10-16T01:17:52.985428Z", "iopub.status.idle": "2026-10-16T01:18:19.923902Z", "shell.execute_reply": "2026-10-16T01:18:19.922951Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Targeted maximum likelihood estimation\n", "======================================\n", "n = 51874; covariates = 60; P(A=1) = 0.1628\n", "causal estimand: average treatment effect among units receiving each comparison arm\n", "identification: explicit-adjustment; E_{W | smoked=a}[E(death_share | smoked=a, W) - E(death_share | smoked=0, W)] for a in [1]\n", "required nuisances: outcome_regression, treatment_mechanism\n", "identification assumptions: consistency: Y = Y^a when A = a; no interference: one unit's potential outcome does not depend on other units' treatment assignments; no unmeasured confounding: Y^a is independent of A given W; positivity for the reference arm within each comparison population: P(smoked = 0 | W) > 0 wherever P(smoked = a | W) > 0, for every comparison arm a; the conditioning event has positive probability: P(smoked = a) > 0 for every comparison arm a\n", "causal study protocol: schema 1; 59fee493706efdcb\n", "outcome family: gaussian; fluctuation: logistic (iterative)\n", "stacked CV-TMLE (Levy): nuisances cross-fitted over 3 folds; targeting: pooled\n", "propensity truncated to [0.002022, 0.998]; ATT/ATC to [0.025, 0.975]\n", "data 90266a93ad1c74e7 | folds 2e17bcad9ec0a91b | cleverly 0.1.3 | 2026-10-16T01:18:19+00:00\n", "\n", "estimand psi std_err 95% CI p_value\n", "-------- --------- -------- ----------------------- -------\n", "att 0.0014499 0.002637 [-0.0037179, 0.0066176] 0.5824 \n", "\n", "observed risk, smoking pairs: 0.0427\n", "estimated risk had they not smoked: 0.0412\n", "risk, non-smoking pairs: 0.0348\n", "ATT: 0.0014, 95% CI [-0.0037, 0.0066]\n", "crude difference: 0.0078\n", "deaths caused among 16,888 children: 24, 95% CI [-63, 112]\n", "initial outcome predictions: 0.0099 to 0.4709\n" ] } ], "source": [ "def outcome_library():\n", " return SuperLearner(\n", " library=[\n", " (\"quasi-binomial GLM\", GLM(family=\"binomial\")),\n", " (\n", " \"boosting\",\n", " HistGradientBoostingRegressor(\n", " loss=\"poisson\",\n", " max_depth=3,\n", " learning_rate=0.05,\n", " max_iter=300,\n", " l2_regularization=1.0,\n", " random_state=SEED,\n", " ),\n", " ),\n", " ],\n", " task=\"regression\",\n", " n_folds=3,\n", " random_state=SEED,\n", " n_jobs=1,\n", " )\n", "\n", "\n", "def treatment_library():\n", " return SuperLearner(\n", " library=[\n", " (\"logistic\", LogisticRegression(max_iter=3_000, random_state=SEED)),\n", " (\n", " \"boosting\",\n", " HistGradientBoostingClassifier(\n", " max_depth=6,\n", " learning_rate=0.05,\n", " max_iter=2_000,\n", " l2_regularization=1.0,\n", " early_stopping=True,\n", " random_state=SEED,\n", " ),\n", " ),\n", " ],\n", " task=\"classification\",\n", " n_folds=3,\n", " random_state=SEED,\n", " n_jobs=1,\n", " )\n", "\n", "\n", "method = TMLEMethod(\n", " models=ModelSpec(outcome_learner=outcome_library(), treatment_learner=treatment_library()),\n", " cross_fitting=CrossFitting(n_folds=3, learner_folds=3),\n", " targeting=Targeting(q_bounds=(0.0, 1.0)),\n", " inference=Inference(alpha=0.05),\n", " runtime=Runtime(random_state=SEED, n_jobs=1),\n", ")\n", "result = att_effect.estimate(method=method)\n", "att = result[\"att\"]\n", "print(result.summary(protocol=\"fingerprint\"))\n", "print()\n", "print(f\"observed risk, smoking pairs: {risk_smoked:.4f}\")\n", "print(f\"estimated risk had they not smoked: {risk_smoked - att.psi:.4f}\")\n", "print(f\"risk, non-smoking pairs: {risk_not:.4f}\")\n", "print(f\"ATT: {att.psi:.4f}, 95% CI [{att.ci[0]:.4f}, {att.ci[1]:.4f}]\")\n", "print(f\"crude difference: {crude:.4f}\")\n", "# The ATT is a risk per child, so the count of deaths scales it by the children of smoking pairs.\n", "children_exposed = 2 * int(smoker.sum())\n", "deaths = [children_exposed * value for value in (att.psi, *att.ci)]\n", "print(\n", " f\"deaths caused among {children_exposed:,} children: {deaths[0]:.0f}, \"\n", " f\"95% CI [{deaths[1]:.0f}, {deaths[2]:.0f}]\"\n", ")\n", "initial = np.concatenate(list(result.nuisance.outcome.arms.values()))\n", "print(f\"initial outcome predictions: {initial.min():.4f} to {initial.max():.4f}\")" ] }, { "cell_type": "markdown", "id": "att-fit-reading", "metadata": {}, "source": [ "**What this output tells you.** The line `stacked CV-TMLE (Levy)` confirms three-fold\n", "cross-fitting. The line `outcome family: gaussian` means that the library treats the share as a\n", "continuous outcome, because the share takes the value 0.5. With the declared range [0, 1] and the\n", "logistic fluctuation, the fit is TMLE for a bounded continuous outcome. The initial outcome\n", "predictions lie between 0.0099 and 0.4709, inside that range. The ATT is 0.0014, with a 95%\n", "influence-curve interval of [-0.0037, 0.0066].\n", "\n", "| quantity | value | source |\n", "| --- | --- | --- |\n", "| observed risk, smoking pairs | 0.0427 | E[Y \\| A = 1], from the data |\n", "| estimated risk had they not smoked | 0.0412 | E[Y⁰ \\| A = 1], the observed risk minus the ATT |\n", "| risk, non-smoking pairs | 0.0348 | E[Y \\| A = 0], the crude stand-in |\n", "| ATT | 0.0014 | the adjusted estimate |\n", "| crude difference | 0.0078 | section 3 |\n", "\n", "The 16,888 children of smoking pairs give the ATT a count scale. The estimate is 24 deaths caused\n", "by smoking, with a 95% interval from -63 to 112.\n", "\n", "The crude difference and the ATT share the observed risk of the smoking pairs. They differ only\n", "in the comparison risk. Adjustment for C moves that risk from 0.0348 to 0.0412. The ATT compares\n", "smoking mothers with non-smoking mothers of the same recorded background. The gap between 0.0078\n", "and 0.0014 estimates the confounding by C. Its direction is the one that section 3 predicts, and\n", "its size is uncertain, because both numbers carry sampling error." ] }, { "cell_type": "markdown", "id": "paradox-heading", "metadata": {}, "source": [ "## 7. Why the adjustment set stops before birth weight\n", "\n", "Birth weight predicts infant mortality strongly, so adjustment for it can seem natural. The graph\n", "says that it is wrong for this question. Birth weight is a mediator (A → M), so adjustment for it\n", "removes part of the effect. It is also a collider on A → M ← U → Y. Within a birth-weight band, a\n", "low weight in a non-smoking pregnancy points more often to another cause, such as a birth defect,\n", "and that cause raises mortality.\n", "[Hernández-Díaz, Schisterman and Hernán (2006)](../references.md#the-twins-example) give this\n", "explanation of the \"birth-weight paradox\" in their Figure 3.\n", "\n", "The code tabulates the first-year risk of each child by birth-weight band and smoking. These are\n", "stratum-specific associations. They do not estimate an effect of smoking, and no estimator fit\n", "within the bands would target the ATT." ] }, { "cell_type": "code", "execution_count": 7, "id": "birth-weight-paradox", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:18:19.925912Z", "iopub.status.busy": "2026-10-16T01:18:19.925305Z", "iopub.status.idle": "2026-10-16T01:18:20.220705Z", "shell.execute_reply": "2026-10-16T01:18:20.219805Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "share under 2500 g: non-smoking 0.4972, smoking 0.6457\n", "\n", " risk, non-smoking risk, smoking children, non-smoking children, smoking\n", "band \n", "under 1500 g 0.3050 0.2607 7970 2106\n", "1500-1999 g 0.0213 0.0217 10221 3086\n", "2000-2499 g 0.0082 0.0119 24994 5713\n", "2500-2999 g 0.0046 0.0065 28369 4479\n", "3000 g or more 0.0027 0.0053 15306 1504\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "children = pd.DataFrame(\n", " {\n", " \"smoked\": np.tile(pairs[\"smoked\"].to_numpy(), 2),\n", " \"birth_weight_g\": np.concatenate(\n", " [T.loc[eligible, f\"dbirwt_{twin}\"].to_numpy() for twin in (0, 1)]\n", " ),\n", " \"died\": np.concatenate([Y.loc[eligible, f\"mort_{twin}\"].to_numpy() for twin in (0, 1)]),\n", " }\n", ")\n", "BANDS = [0, 1_500, 2_000, 2_500, 3_000, 10_000]\n", "BAND_LABELS = [\"under 1500 g\", \"1500-1999 g\", \"2000-2499 g\", \"2500-2999 g\", \"3000 g or more\"]\n", "children[\"band\"] = pd.cut(children[\"birth_weight_g\"], BANDS, right=False, labels=BAND_LABELS)\n", "by_band = children.pivot_table(\n", " index=\"band\", columns=\"smoked\", values=\"died\", aggfunc=[\"mean\", \"size\"], observed=True\n", ")\n", "by_band.columns = [\n", " \"risk, non-smoking\",\n", " \"risk, smoking\",\n", " \"children, non-smoking\",\n", " \"children, smoking\",\n", "]\n", "low_weight = children.groupby(\"smoked\")[\"birth_weight_g\"].apply(\n", " lambda weight: (weight < 2_500).mean()\n", ")\n", "print(f\"share under 2500 g: non-smoking {low_weight.loc[0]:.4f}, smoking {low_weight.loc[1]:.4f}\")\n", "print()\n", "print(by_band.round(4).to_string())\n", "\n", "fig, ax = plt.subplots(figsize=(8, 4))\n", "for column, color in ((\"risk, non-smoking\", \"#4c78a8\"), (\"risk, smoking\", \"#e45756\")):\n", " ax.plot(BAND_LABELS, by_band[column], marker=\"o\", color=color, label=column)\n", "ax.set_yscale(\"log\")\n", "ax.set_ylabel(\"First-year mortality (log scale)\")\n", "ax.set_title(\"Within birth-weight bands, the smoking contrast changes sign\")\n", "ax.legend()\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "id": "paradox-reading", "metadata": {}, "source": [ "**What this output tells you.** In this table, a share of 0.6457 of the children of smoking\n", "mothers weigh under 2,500 g, against 0.4972 of the others. That difference agrees with the arrow\n", "A → M, although it is not adjusted for C. Within the bands, the contrast changes sign. Under\n", "1,500 g the risk is 0.2607 with smoking and 0.3050 without it. At 3,000 g or more it is 0.0053\n", "with smoking and 0.0027 without it. The figure shows the two curves on a log scale.\n", "\n", "An analysis that adjusts for birth weight could conclude that smoking protects the lightest twins.\n", "The graph gives one explanation: collider bias on A → M ← U → Y. The table counts children, not\n", "pairs, and it has no intervals. It therefore supports no inference about the size of either\n", "contrast. The ATT of section 6 does not condition on M." ] }, { "cell_type": "markdown", "id": "assessment-heading", "metadata": {}, "source": [ "## 8. Check the fit\n", "\n", "`result.assess()` runs the validation, diagnostic, and sensitivity checks that need no refit. The\n", "code prints the status of each check that ran, the nuisance report, and the score check. These\n", "checks describe the fitted models. They cannot detect a missing confounder or an ill-defined\n", "intervention." ] }, { "cell_type": "code", "execution_count": 8, "id": "assessment", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:18:20.226111Z", "iopub.status.busy": "2026-10-16T01:18:20.225905Z", "iopub.status.idle": "2026-10-16T01:18:20.431227Z", "shell.execute_reply": "2026-10-16T01:18:20.430174Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " surface check status\n", " validation score_equations passed\n", " validation support warning\n", " validation nuisance_models warning\n", "diagnostics truncation_curve deferred\n", "diagnostics refute deferred\n", "sensitivity omitted_confounding warning\n", "sensitivity robustness_value completed\n", "sensitivity elements completed\n", "sensitivity benchmark deferred\n", "sensitivity simulated_confounding deferred\n", "sensitivity contour completed\n", "sensitivity evalue completed\n", "needs attention: ('support', 'nuisance_models', 'omitted_confounding')\n", "\n", "Nuisance model diagnostics\n", "----------------------------------------\n", "model auc brier log_loss r2 mse cal_slope cal_se reg_slope\n", "---------- ------ ------ -------- ------ ------ --------- ------ ---------\n", "propensity 0.7987 0.1107 0.3588 - - 1.0731 0.0138 - \n", "outcome - - - 0.0138 0.0272 - - 1.0345 \n", "Calibration slope: logistic recalibration of the out-of-fold predictions with one intercept per fold.\n", "A finding needs the 95.0% interval to lie above 0 and exclude 1, a Bonferroni level over 1 tested model(s).\n", "\n", "propensity: super learner weights logistic=0.366, boosting=0.634\n", "\n", "outcome: super learner weights quasi-binomial GLM=0.555, boosting=0.445\n", "\n", "VERDICT:\n", " - propensity: the out-of-fold predictions are more moderate than the observed rates (calibration slope 1.07, 95.0% interval 1.05 to 1.10, AUC 0.799, largest untruncated inverse weight 193). Review the learner before you change the model\n", " - the outcome model explains little variance (R^2 0.014); the estimate is close to inverse-probability weighting and will be correspondingly noisy\n", "\n", "score equation att: passed=True; |score| / threshold = 0.0000\n" ] } ], "source": [ "assessment = result.assess(random_state=SEED)\n", "ledger = assessment.to_frame()\n", "ran = ledger[~ledger[\"status\"].isin([\"unavailable\", \"not_applicable\"])]\n", "print(ran[[\"surface\", \"check\", \"status\"]].to_string(index=False))\n", "print(\"needs attention:\", tuple(item.name for item in assessment.attention))\n", "print()\n", "print(assessment.report(\"nuisance_models\").summary())\n", "print()\n", "scores = assessment.report(\"score_equations\").to_frame()\n", "lines = [\n", " f\"score equation {row.name}: passed={row.passed}; |score| / threshold = {row.ratio:.4f}\"\n", " for row in scores.itertuples()\n", "]\n", "# The report can list one equation in more than one row. Print each distinct line once.\n", "print(\"\\n\".join(dict.fromkeys(lines)))" ] }, { "cell_type": "markdown", "id": "assessment-reading", "metadata": {}, "source": [ "**What this output tells you.** The score equation of the ATT `passed`, so the targeting step\n", "solved it. Three checks need attention.\n", "\n", "| check | what it reports | reading |\n", "| --- | --- | --- |\n", "| `nuisance_models` | a propensity calibration slope of 1.07, with an interval from 1.05 to 1.10, and an outcome R² of 0.014 | a slope above 1 means that the out-of-fold propensities are slightly too moderate. The low R² is expected for a rare outcome. The estimate then relies mostly on the propensity, so the calibration of the propensity matters |\n", "| `support` | 12.89% of the pairs are clipped at the ATT bound | the next cell shows that this clipping does not move the estimate |\n", "| `omitted_confounding` | a bound at the default strengths | section 9 reads the bound at strengths calibrated against observed covariates |\n", "\n", "The propensity flag is a prompt to review the learner. It is not a finding that the estimate is\n", "wrong. The boosting model has a weight of 0.634 in the propensity Super Learner." ] }, { "cell_type": "code", "execution_count": 9, "id": "overlap", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:18:20.432683Z", "iopub.status.busy": "2026-10-16T01:18:20.432436Z", "iopub.status.idle": "2026-10-16T01:18:20.996742Z", "shell.execute_reply": "2026-10-16T01:18:20.995639Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Positivity / overlap diagnostics\n", "--------------------------------\n", "n = 51874; propensity truncated to [0.002022, 0.998]\n", "\n", "g(W) quantile 0% 1% 5% 25% 50% 75% 95% 99% 100% \n", "------------- ------ ------ ------ ------ ------ ------ ------ ------ ------\n", "overall 0.0035 0.0111 0.0167 0.0506 0.1208 0.2191 0.4778 0.7398 0.9537\n", "treated 0.0052 0.0228 0.0615 0.1601 0.2642 0.4261 0.7450 0.8803 0.9537\n", "control 0.0035 0.0107 0.0160 0.0412 0.1010 0.1844 0.3781 0.5631 0.9305\n", "\n", "arm n effective n ESS / n top 1% weight top 5% weight\n", "------- ----- ----------- ------- ------------- -------------\n", "treated 8444 2983.8 0.353 0.106 0.278 \n", "control 43430 40480.9 0.932 0.028 0.089 \n", "\n", "threshold P(g < t) P(g > 1-t)\n", "--------- -------- ----------\n", "0.01 0.0064 0.0000 \n", "0.025 0.1289 0.0000 \n", "0.05 0.2479 0.0000 \n", "0.1 0.4329 0.0008 \n", "\n", "truncated: 0 unit(s) (0.00%); most extreme untruncated g(W) = 0.0035072\n", "\n", "group equation target rows Kish-equivalent rows Kish / target Kish / total top 1% load top 5% load max |w h| zero load g bound clipped \n", "----- -------- ----------- -------------------- ------------- ------------ ----------- ----------- --------- --------- -------------- -------------\n", "att h_att 51874/51874 19449.7 0.375 0.375 0.066 0.191 82.21 0 [0.025, 0.975] 6686 (12.89%)\n", "(absolute residual-multiplier load from the fitted equation; Kish values describe residual-multiplier concentration, not residual contributions or estimator information, influence, or precision; target rows are score-mask rows and include structural zeros)\n", "max |clever covariate| (att): 82.21\n", "\n", "VERDICT: truncation is carrying this estimate. 12.9% of units were clipped at group 'att''s treatment-mechanism bound [0.025, 0.975], so the fitted score used bounded rather than fitted mechanism values for those units. Treat the estimate as sensitive to this finite-sample regularisation. The bound does not change the requested estimand. Check truncation_curve() before drawing conclusions. The narrowest arm has a Kish-equivalent weight count of 35% of its nominal rows. This is concentration, not estimator information, and no threshold is applied because none is derived. Absolute-load concentration is greatest for group 'att', equation 'h_att': 19449.7 Kish-equivalent rows out of 51874 score-mask rows (37%; 37% of 51874 total rows). This is a descriptive residual-multiplier concentration index. It excludes the residual and is not estimator effective sample size, information, actual influence, precision, or a positivity test.\n", "largest fitted propensity: 0.9537\n", "pairs below the lower ATT bound 0.025: non-smoking 6,581, smoking 105\n", "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " bound truncated_fraction psi ci_lower ci_upper\n", " 0.002 0.00000 0.00144 -0.00373 0.00660\n", " 0.005 0.00012 0.00144 -0.00373 0.00660\n", " 0.010 0.00640 0.00144 -0.00373 0.00660\n", " 0.025 0.12889 0.00145 -0.00372 0.00662\n", " 0.050 0.24789 0.00150 -0.00367 0.00667\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAGGCAYAAADmRxfNAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcNJJREFUeJzt3XdUFOf7NvCLulSlCwoEsaCIioq99957SSxfY4qpamKJiT3G2KMpmhhLEo3R2FvsiSh2xY5YEBERRDpSZO/3D1/m50qVXWDB63POnuPMPPPMPcOAc+88xUBEBERERERERFowLO4AiIiIiIio5GNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQVQKiQj++ecfPHnypLhDoWwkJCRg7969SE9PL+5QiHJ04MABREZGFncYRFSCMLEgKmE6duwIExOTbD9jx44FAJw4cQKdOnXCtGnTlP0ePnyIqKgojboePXqk8wcHPz8/DB06VKd1ljbfffcdunTpgh07dgB4ngjeu3cPCQkJOql/0aJFMDExQUZGhk7qK6hp06bBxsamWGMoSjt27ICJiQmCgoKKO5RcBQYGwsTEBPv378+1TIcOHTBx4sQijCxvaWlpuHfvHlJSUl5536dPn+LevXt49uxZIURGRABgXNwBENGrUavVKF++PGbOnJllm5eXF4DnD/eLFy9Gly5dlG09evSAh4cHNm3apKwbNGgQzMzMsHfvXp3Fl5GRAbVarbP6SqPhw4fD3Nwc7du3BwAkJyfDw8MDy5cvV5JDbYiIXjw8qdXqYk9uipK+XPf8ePbsGUQkx+01atTA0qVL0bZt2yKMKm+XL1+Gn58fDh48+Mqx7d+/H7169cKNGzeUv5VEpFtMLIhKIDs7OwwfPjzH7SqVCp988onWx3n27BkMDAxgZGSUa7mUlBSYmZkV6BiZD58mJiZ5xpKcnIwyZcporE9LS4OpqWm+jpWamgqVSpXncfJzzvmpLyMjA+np6VmujaurK8aNG5evmHVBm59PXkQE6enp+foZ5CeOtLQ0GBoawtg45/+e8ntMtVqN+Pj4Ar81yU+8r3K/vCw5ORkWFha5lhERxMXFZTmHmJgY2Nra5rpvfu73nBgbG+Ojjz7Suv6C3nuZzQTz+rvwMhFBYmIirK2tX/mY+VXQ2IheB2wKRVQKRUdHw9raGmvXrsX169dhbW2N8+fPY+vWrbC2tsYHH3wAa2trHDt2DAcOHIC1tbVGIhIYGIiWLVvC2toalpaWaNeuHS5fvpzlOAsWLICHhwfMzc1RqVIlHD58OM/YIiMjYW1tjS1btmDs2LGwtLSEtbU1WrRogatXr2qU9fLywrRp0zBp0iQ4Ojqib9++yra9e/eiTp06sLS0hK2tLfr27Yvw8PBs91++fDlsbW1hYWGBmjVrZvuG5vLly2jVqhXKlCkDCwsLtGnTBoGBgRplHBwcsGzZMnzxxRdwc3ODhYUF/Pz8spS7du0aOnToAAsLC+WYhw4dUrZv27YN1tbWuHPnDlauXIly5coBAMaNGwdra2vs27cPV69ehbW1NVauXJkl1tGjR8PNzQ1paWm5Xutbt26hYcOGsLCwgKOjI95//308ffoUwPPmctbW1ti4cWOW/fr164dq1arl+uYpIiIC/fr1g52dHSwtLVGnTh3s2rUr27JXrlyBr68vzM3N4ezsjAkTJmTpX3Lw4EHUrVsX5ubmMDMzQ6tWrXDjxg2NMg8fPkSfPn2Un6Wvr2+W5jwtWrTAu+++i/nz58PZ2RnNmzeHWq1GlSpVMHjw4Cyx/fHHH7C2tsbp06cBPE8Gv/zyS+W+Ll++PL799tssbyJu376Ndu3awdraGhYWFnjrrbfy/HlkWrRoEVxdXWFpaQlLS0v873//Q3JyssY5vPPOO1i5ciVcXFxga2uLgQMHAgCWLVsGDw8P2NnZoVKlSggICNCoOyMjA7NmzULFihVhZmYGDw8PTJ06Nc/+PNeuXYO7uzsGDRqEjIwMpKamwtraGj/88INSxtraGitWrMDnn3+OChUqwMLCAo0aNcrye5uamopPP/0U5cqVg4WFBerWrYtr167Bw8MDc+fOzTWO48ePo1GjRrCwsICZmRmaNGmCCxcuAADGjx+P5s2bAwC6deum/A4BQFRUFN566y1YW1ujTJkysLW1xcSJE5W3MoMHD8agQYMAAHXr1oW1tTVSU1MRHh6e7e/Bvn37YG1trfF3L7fYiOj/EyIqUdq1aye+vr65lnn8+LEAkF9++UXi4+Nl165dUrlyZWnatKns2rVLzp8/L7t27ZKaNWtK3bp1ZdeuXXLp0iUREbl06ZKYmZlJ+/btZfPmzfLnn3+Kn5+f2NraysOHD5VjTJs2TQDIe++9Jzt37pRFixaJu7u7lCtXTgYNGpRjbBEREQJAatasKW3atJFNmzbJ2rVrxdvbW6ysrOT+/ftKWVdXV3F3d5cWLVrIzz//LAcOHBARkb/++ksMDAykb9++smXLFlm5cqV4enqKs7OzxMTEaOzv4+Mj1apVkzVr1sjmzZulQ4cOYmBgIPv371fKXb16VczNzZV4Nm7cKA0aNJCyZcvKgwcPlHJmZmZSvXp16devn2zbtk1+/PFHcXR0lMqVK0taWpqIiKSkpEiFChWkfv36smHDBtm9e7d07NhRzMzM5N69eyIisnnzZgEgt27dkrt378qmTZsEgLz77ruya9cuefTokYiI1KlTR5o2bapx/RITE8XKykrGjh2b4zVesGCBABBvb2+ZOHGi7N69W2bNmiUqlUq6du0qIiJqtVo8PT2V5UxRUVFiYmIiX3zxRY71x8XFSfny5cXDw0NWrlwpW7Zskf79+wsAWb9+vVJu6tSpYmpqKlWrVpWvvvpKdu/eLVOnThVjY2MZOnSoUi44OFjMzMykR48esmvXLtmwYYPUqlVLPDw8lOsaGxsr5cuXF29vb1m7dq1s27ZNevXqJYaGhnLixAmlLj8/P3Fzc5O6devKjz/+KDt27BARkc8//1xUKpXG/SEi0qFDB/Hy8lKWhwwZIlZWVjJ37lzZu3evTJ06VUxMTGTy5MlKmejoaLG3txdPT0/55ZdfZMuWLdKtWzfx8vISAHLjxo0cr90vv/wihoaGMmnSJDly5IgsXbpUrK2tZdSoURrnUKNGDRk2bJjs3btXvvrqK1GpVDJixAhp3Lix7Ny5U3766SepWLGiuLu7y7Nnz5R9hw8fLsbGxjJ16lTZtWuXzJgxQ1QqlfTt21cpc/HiRQEg+/btExGRoKAgcXZ2lg4dOkhKSoqIPL+PAciSJUuU/QBI9erVZfDgwbJt2zZZvny52NnZibe3t0YMffv2FRMTE5k2bZrs3r1bvvzyS6latapYWFjI9OnTc7w24eHhYm1tLe3bt5etW7fK5s2bpUGDBuLk5CQJCQly5coVWbx4sQCQ2bNny65duyQpKUnS09PF19dXbGxsZPr06bJr1y4ZN26cAJD58+eLiMiZM2fkiy++EADy448/yq5duyQjI0PCwsIEgPz+++8asezatUsAyMWLF/MVGxE9x8SCqIRp166duLi4yDfffJPlk/kQ9mJikcnPz0/69eunUVerVq2kU6dOGuu6du0q9evXl4yMDGVdbGysODg4yIcffigizx+sLC0t5Z133tHYd8eOHQIgX4mFl5eXpKenK+sfP34sVlZW8t577ynrXF1dxdvbWzkvEZH09HRxd3eXjh07ilqtVtaHhYWJmZmZfPbZZxr7m5mZSXh4uLLu2bNn4uvrK/Xr11fW9ezZU+rWravxcBQXFydOTk4a8ZiZmUn9+vU1jrtmzRoBIIGBgSIicu7cOQEgf//9t1ImISFBNm7cKLGxsSKimViIPE8WAMjy5cs1rtWyZcsEgNy+fVtZ9/vvvwsAOXfuXI7XODOxmDZtmsb6X375RQDI8ePHRURk1qxZYmxsLJGRkUqZ5cuXCwAJDg7Osf4pU6aIiYmJhISEaKzv0aOHVKhQQVJTU0XkeWIBQBYvXpwlPgMDA7l8+bKIiKxatSrLed69e1d2796t1PXFF1+Io6OjREdHK2XUarU0aNBAmjdvrqzz8/MTFxeXLA97169fFwDy888/K+sePnwoRkZGMm/ePBF5/vAJQHbu3Kmx7+zZs8XY2FhJ+CZNmiQmJiZKoigikpGRIX5+fnkmFv3795cqVaporDt27JicPn1a4xw8PT017sfRo0cLAAkLC1PWbdiwQQBIUFCQiDy/9wwMDOS7777TqH/t2rUCQI4ePSoimonF7du3pUKFCtKmTRtJTk5W9skpsXjxWouI/PTTTxoxnD59Ott7OfOezC2x+Pvvv7Pc2+Hh4bJ9+3YltrNnzwoAOXjwoFImLS1Ntm7dqtzXmRo3bixt27ZVlrdt25bl55PfxCI/sRGRCJtCEZVAjx8/xvLly7N8tB2+VERw5MgRtG7dGsHBwQgKCkJQUBAiIiJQv359XLx4EQBw4cIFJCUlYeTIkRr7d+vWLc9235mGDBmi0Y7e3t4e3bt3x/HjxzXKNW/eXKMt8+3btxEaGoq3334bBgYGyvoKFSqge/fuGk2OAKB9+/ZwcXFRlo2MjPDmm2/i3Llzysgyhw8fRuvWrXHr1i3lnB8+fIiGDRsq55ypdevWGsetV68eAODevXsAAA8PD1hZWWH69OnYunUrkpKSYGVlhQEDBqBs2bL5ujYvXiOVSoX169cr63777TfUqlULdevWzXP/t956S2P5zTffhLGxsXKNhw8fDrVardEM5LfffkPLli1RuXLlHOs9fPgwOnbsiDfeeENj/TvvvIMHDx5kGRXp5ThGjhwJEVGa8fj4+AAA3nvvPRw9ehTp6enw8PBAly5dlH4Uhw4dQuPGjREVFaX8jG7evIlmzZpl+Rk1aNAAVlZWGuuqVauGJk2a4Pfff1fWbdiwQbkumcewtLRE5cqVlWMEBQWhTp06ePbsGa5cuQIA8Pf3R9u2beHu7q7UZWhomK/R0GrWrIng4GBMmDAB169fBwA0a9YM9evX1yhXq1YtjX4bzs7OsLS0RIUKFZR1rq6uAKCM9nbkyBEYGBjgf//7n0ZdQ4YMgbW1dZamiiEhIWjTpg08PT2xc+dOmJub5xl/69atNZZfvv8z760RI0ZolMu8xrmpXr06jIyM8Omnn+LAgQNITU2Fi4sLevTokWtsJiYm6NWrF5o0aYKnT5/i6tWr2L59O+Li4nD79u08j5sfBY2N6HXDxIKoBKpRowbu37+f5ZNXR9C8REREIDk5Gd9++y2qVaum8dm7dy+Cg4MB/N9DROaDTSYDAwOUL18+X8d68QEpk7u7O+7evaux7uUOkpltql9+qAUAT0/PLA8SOR1HrVYjNDQUUVFRSEhIwMKFC7Oc886dO5VzzvTyNc6ML7M/gp2dnTKMbJ8+fWBjY4PWrVtj9+7dWS9CHuzs7NCzZ0/lYTgiIgIHDx7M8uCYk5fP3dTUFOXKlVOusZubG9q1a6fUHxwcjFOnTmHUqFG51nvnzp0crz8AjZ+BmZkZ7OzsspyXpaWlEkeDBg2watUqXL9+Ha1bt4aNjQ369Omj0X79zp072LFjR5af0aJFi5CQkIBHjx4pZXPqVDtq1Cj8999/CA0NBQD8/vvv6NKli5J43rlzB0lJSahevbrGMbp27apcH+D5/f/yvQ9k/X3IzmeffYaPPvoIK1asgLe3N5ydnfHRRx9lmXMmu87rLya02S3fuXMHjo6OWe5RY2NjuLu7Z/ndeP/993H//n2o1ep8d0TO6/4PDQ2FjY0NLC0tNco5OTnl2iEfeP7wvn79ety/fx8dOnSAjY0NunXrlqUfSXa2b9+O+vXrw8rKCj4+Pvjggw80+q1oS5vYiF4nTCyISGFvbw8jIyPMnj0bERERWT6ZnZQzOxs/fvw4Sx3ZrctOTvs6Ozvnul/msbOb/C+7/XOL0dnZGba2tjAxMcH06dOzPeeXO6bmR+vWrXHp0iXcvn0bK1asQHx8PLp164YjR468cl0jR45EUFAQzp07h40bN8LIyCjf84S8fO4igujoaI1rNHLkSJw6dQq3b9/G+vXrYW1trdFJPjvlypXL8foD0Kg/JSUFSUlJGuWePn2KpKQkjXKjRo3CvXv3EBgYiFmzZuH8+fNo3rw5Hjx4AOD5g+mgQYOy/RlFRETA0dExz+sxYMAAWFhYYMOGDQgKCsL58+c1kignJyfY2Njg4cOH2R4j81v3cuXKFfjeNzMzw9KlSxEVFYWjR49i6NChWLVqlcbQ0AVVrlw5xMbGZjuMbHa/G6NGjcLOnTsREBCgs1HKXF1dERcXl+Wh/vHjx/kainfAgAG4c+cOrl69ivnz5+PmzZto1aoVbt68meM+gYGB6NOnD9zc3LB//34kJibi/v376NixY77jfnmgguw64hckNqLXDRMLotdIdqP8vLjO1NQU3t7eCAgIQLly5TQ+d+7cUYaW9PHxgYGBQZZRgM6fP6/xzXFu9uzZo7Gcnp6Offv2oVatWrnu5+XlBQsLC+WtQKa0tDTs3btXaZqR6ejRo8pISJl27tyJN954A2XKlIGxsTF8fHxyPOf8DmWbKSYmBrt27UJGRgY8PT0xatQoHDhwAAYGBnkmFtn9fDp06ABXV1fs2LEDO3fuRM+ePWFvb5+vWF6+xgcPHkRKSorGNe7VqxdsbW2V+gcNGpTl2+aX1a1bFwcOHMhyXbdt2wYzMzN4e3vnGkfmfZMZx4MHD5RrVKtWLYwbNw6rV69GUlISTp06BQCoU6cOTp06BVtbW42fUUREBNRqNQwN8/7vzNraGv3798fOnTuxfft2ODk5KW8jMo8RGxuLsLAwjWOo1Wo8evRI+ba+Zs2aOHr0KBITE3M9z+wEBgbiwoULMDMzQ8uWLbFw4UJ88MEHOHXqVJYE7FXVrVsXqamp+OeffzTWnzp1Co8ePcryu9GvXz906dIF06dPx/Lly7Fu3Tqtjg8AjRo1gohg9erVGuvXrl2b576PHj1SRmzz9vbGBx98gI0bNyItLQ3+/v4aZV/8XTlx4gTUajV+/fVXtG3bVrl/Xx5VLLt9nZycYGRkhFu3bmmUOXfuXIFjI3qtFWsPDyJ6Za86KlSmHj16iLu7uwQHB0tcXJyIPB8Bx8nJSW7cuKGsy+ykOGXKFImKipInT54onYg///xzpb7BgweLpaWl/PXXX5KcnCyBgYFSu3ZtKVOmTL46b5cpU0amTp0qT548kbCwMBk6dKgAkFOnTillXV1d5YMPPshSx/Tp08XY2Fh+/PFHiY+Pl5CQEOnXr58YGxvL9evXNfYvU6aM9O3bV+7fvy8xMTEya9YsASA//PCDUm779u0CQCZOnCiRkZESExMjP/zwgxgYGMi4ceOUcmZmZlk6n964cUMAyLZt2zTqmjRpkkRHR0t4eLjMmTNHAMjWrVtFJGvnbRGRsmXLSo8ePeTBgwfy9OlTjWN88cUX4uXlJSYmJrJ3794cr22mBQsWiKGhoVSqVEn27dsnKSkpcuLECfHw8JDq1atrdAoWERk7dqzUqFFDDAwMJCAgIM/6b968KSYmJtKzZ0+5e/euxMfHy88//yympqYydepUpVzmqFBVqlSRo0ePSkpKihw5ckScnZ2lQYMGSrkZM2YIAFm9erUkJSXJzZs3ZeTIkWJkZKRcoxs3boiJiYkMGDBAQkJCJCkpSbZv3y4WFhbSoUMHpa7sBil40bFjx8TQ0FBq1KghEyZM0NiWkZEhvr6+UrVqVfH395fU1FQJDAyUevXqiZWVldLJ/dq1a2JkZCTdunWTkJAQiYuLk3nz5om9vX2enbcbN24sTk5OcurUKUlNTZWAgADx9fXVGJkqu3OYOnWqWFlZaazz9/cXAOLv7y8i/9eZ3dXVVf777z9JSUmRgIAAqVy5stSoUUP5ub88KpRarZZu3bqJubm5nD9/XkRy7rz9zTffaMTwcl0iIr169RJjY2P59NNP5bfffpNPP/1UateuLcbGxrl23l66dKkAkGXLlkl8fLzcuXNHPvzwQzEwMFDiCg8PFwDy8ccfS0REhDx79kwOHjyojAAVFxcnCQkJMnPmTDEyMhIPDw+l/syO5XPnzpWIiAhlfbNmzcTW1la2b98uYWFhsm7dOqlcubJG5+38xEZEHBWKqMQpaGJx/PhxsbW1FQDKUJ/nzp0TBwcHASA9e/ZUyv74449ibm4uAMTAwEAMDAxk2LBhGg+80dHR0rFjR6WMoaGhLFy4UJo1a5avxGLp0qXi6+srBgYGAkBUKpVGvCI5JxZpaWkybtw4JTYA4ujoKLt3786y//vvvy8DBgxQ4gQgEyZMyPJwvWLFCrGwsNA458GDB2uM+JKfxEKtVsu4cePEyMhIOZ6JiYlMmjRJ2Se7xGLZsmVibGycZeQikefDsQKQChUqZIk7OwsWLBAzMzPZv3+/WFpaKnFUr15dI/HKlDnSTrVq1fKsO9O+ffvEyclJ43p98sknyihOIs8fhp2dneXvv/8WlUqlxFGnTh25e/euUi45OVl69OghAMTQ0FAASNmyZeXXX3/NckxnZ2eNn2Xz5s01HhLzSixERKpUqSIA5OrVq1m2hYaGSosWLTSOUb58eWWo40wbN24US0tLpVyVKlXkjz/+yDOxuHHjhvLQmnmuVatWlQsXLuR6DvlJLESej3L0cvwNGzaUO3fuKGWySwZiYmKkUqVK4uHhIdHR0VolFqmpqTJp0iSpXLmyWFlZSZs2beTOnTvZ/v68KC0tTQYPHqxxbSwtLbOMcvXRRx8JAAEgx44dExGRd955RwAov3ft2rWTd955RyOxUKvV0q9fP2XfzHvwypUrys8EgNSqVUv5WWYmFvmNjeh1ZyCSTWNMItJb4eHhyMjIgJubW45l1Go17t69C0dHR42ZqhMTE3H9+nWUK1dOGdEmKSkJ169fh4ODAzw8PJSySUlJuHTpEmJiYuDj46MxAk4mEVFGUvL29oanpycePHgAY2NjpS/Eyx49egRnZ2esWbMGQ4cORUBAANLS0lCvXr0sswuHhITAysoKDg4O2dYVFRWFCxcuwNbWFrVq1coyC7Cbmxt69eqFZcuW4fz584iIiECdOnU0Rol6UeY5P3nyBD4+Plk6KN+5cwe2trYaI1+lp6cjNDRUGbUn04MHD3Dp0iWYmJigZs2aGtcjKSkJERERcHd31+g0++jRI9y7dw+VK1fW6PD89OlTODg44NNPP8Xs2bOzjf1FsbGxePLkCTw9PREVFYUzZ87AxcUFNWvWzLYDbUxMDBwcHDBv3jxMmDAhz/ozpaamKvdInTp1svRzePLkCeLj4+Hh4YGHDx/i/PnzcHd3h7e3d7YzVd+8eRNBQUEoW7YsfH19s8yyDjxv8nbt2jWEhoaicuXKWZpdhYWFwdjYONe+OpGRkUhMTFQ6m2fn7t27uHr1Kuzs7FC/fv1sOzcnJCQoTWYaN24MtVqN8PDwLD/Xl6nVapw5cwYRERFwdXWFr6+vxvXI7hyePHmC2NhYjZhTUlLw4MEDVKhQQWN2axHB7du3ERQUhCpVqqBKlSoaHb3T0tJw//59uLi4aHTGjomJwZMnT+Do6KhMPufg4KCMZnb79m3Y29tr/J7mVNfLUlNTYWlpiblz5+Kzzz7LsRzw/Pfs2rVrsLKyQu3atbMdae7evXuIjIyEt7e3RtOnoKAg1K5dGx4eHnj8+DGSkpKy/B4HBwcjPj4ePj4+yt+MZ8+eISgoCNbW1nB3d1eurZubm0ZzyPzERvQ6Y2JBREXqxcRi+PDhhXqsFxOLkmzZsmX49NNPcfPmzVwfhgtq1qxZmDNnDu7du5djQkiUHykpKZg4cSIaNWqkMdP577//jjfffBMHDhxAu3btijFCIipMuY/9RkRExWbz5s2YOXMmrl+/jg8++EDnScXq1auxaNEiXLt2DV9++SWTCtKaqakpQkNDsWzZMqxZswZVq1bFnTt3sG/fPnTv3h1t27Yt7hCJqBBxVCgiKlIWFhaYMGECatSoUejHeuedd0r0g4yxsTFatGiBVatWYdGiRTqv38zMDK1atcL69esxffp0nddPrx9DQ0Ns2bIFf/31FypUqIC7d+/C2dkZf/zxB7Zu3Zpl7g0iKl3YFIqIiIiIiLTGNxZERERERKQ1JhZERERERKS1UtN5O3OYP2tra7bhJCIiIiLSARFBQkICypcvD0PD3N9JlJrEIjw8PNdx/YmIiIiIqGDu378PV1fXXMuUmsTC2toawPOTzm5SJSIiIiIiejXx8fFwc3NTnrVzU2oSi8zmT2XKlGFiQURERESkQ/npasDO20REREREpDUmFkREREREpDUmFkREREREpLVS08eCiIiISN9kZGQgPT29uMMgypGJiQmMjIx0UhcTCyIiIiIdExFEREQgNja2uEMhypONjQ2cnZ21nguOiQURERGRjmUmFU5OTrCwsODkvaSXRATJycmIjIwEALi4uGhVHxMLIiIiIh3KyMhQkgp7e/viDocoV+bm5gCAyMhIODk5adUsip23iYiIiHQos0+FhYVFMUdClD+Z96q2/YGYWBAREREVAjZ/opJCV/cqEwsiIiIiItKaXiYWarW6uEMgIiIiIqJXoFedtxcuXIgffvgBoaGhaNCgAZYtW4a6desWd1j51n2ZP6ISUnVSl6O1Cjs/bKaTuoiIiIiICpveJBaLFy/GkiVL8PPPP8PFxQULFixA586dERQUBBsbm+IOL1+iElIREZ9S3GEQERERERU5vUgs0tPTMX/+fPz2229o27YtAGDlypX4+OOPcefOnWzfWqSmpiI19f/eDsTHxxdZvHkxNACcrM0KtG9kQgrUouOAiIiIqNjpsmVDfrEFRPYOHTqE3bt3Y9GiRdlub9iwIbp27YqvvvqqiCPLn9WrV2P27Nm4evUqzMwK9sxZGPQisThz5gzS0tLQqlUrnD59Gjdv3kSDBg2wcuXKHPeZO3cuZsyYUYRR5p+TtRlOTmlboH0bfX2Ibz2IiIhKIbZs0B8hISE4cOBAjtuHDx+OmjVrFmFEr8bPzw+jR4/Wq6QC0JPO2/fv34eTkxMGDBiAoUOHYvny5fDx8cGCBQty3Gfy5MmIi4tTPvfv3y/CiImIiIgKxtAAcC5jVqgfwwKMHpqYmKg8Tz158gRXr17Fs2fPspQTEQQHByM0NDTLtvv37yMxMREigmvXrikzOufX48ePcf78eURHR2usDwkJQXJyMpKTk3H+/HlloB+1Wo3z58/j7t272dYXGxuLS5cuabRyyUloaCgePXoEAOjZs6eSWMTHx+PBgwcAnk8id/369WwHGkpPT8fly5cRFRUFALh9+zbS0tKyPVZYWBji4+ORmpqKS5cu4cmTJ9mWe/bsGS5fvox79+5prK9YsSKGDBmiLGceKz4+HufOndOI6erVq7hx4wZEiqBJjOiBZcuWCQD59NNPRa1Wi4jI9u3bxcjISK5evZqvOuLi4gSAxMXFFWaouWo456C8MXGXNJxzsFjrICIiouLz9OlTuXbtmjx9+lRjfVH+H1+QY/3555/i4+MjU6ZMEUdHRwEgNWrUkMjISKXMqVOnpGLFimJlZSVmZmbi6+srQUFBynZfX1/55ptvpHLlylK2bFkxMjKSb7/9Nl/H/+STT8TExEQ8PDzExMREvv/+e2Wbq6urfP311+Lo6CgWFhZSo0YNCQ4OFjc3N3FwcBADAwOZP3++Uj45OVmGDx8uhoaGYm9vL+bm5rJ8+XJl+y+//CI+Pj7K8o8//igODg4SGBgoIiLNmjWTBQsWiIjITz/9JE2bNpWxY8eKg4ODAJB69epJfHy8sv/27dvFxsZGbGxsxMLCQn766ScBIFeuXMn2XBs1aiTTpk0TDw8PcXR0FAMDA3nnnXckPT1dKTNp0iSxsLAQJycnMTQ0lL59+yrb//zzT/Hw8FDKGhsby1dffSWmpqZSs2ZNERE5c+aMuLu7i6Ojo5QpU0Zq166tEfOLcrpnRV7tGVsv3liUL18ehoaGmDFjhjJBR48ePVCtWjUcOXKkmKMjIiIiej0EBwejQoUKiIyMxM2bNxEdHY0lS5YAAJKSktC7d28MHDgQsbGxiI2NRe3atTFw4ECNb/D/+OMPHDt2DFFRUfjyyy/xxRdf5PiNfKZTp05h2bJluHDhAu7evYtjx45h27ZtSEn5v6ZjAQEBCAoKwqNHj2BiYoL69etj27ZtiIqKwpw5c/Dll18iIyMDADB79mwEBAQgJCQEjx8/xs6dO/HZZ5/h33//zXLs1atXY+rUqdi/fz9q1aqVbXxnz55F48aNERUVhStXriA4OBg//fQTACAiIgJDhgzB9OnT8eTJE0RERGDz5s15XuvFixfjzz//RGRkJC5fvoxt27Zh1apVAIBbt25h79692LNnDx49eoS7d+9iz5492L17d471nThxAg8fPsSlS5cAAJ999hnatm2LR48eISoqCr6+vti3b1+ecWlDLxKLKlWqQK1WZ5lG/OnTp1CpVMUUFREREdHrxczMDO+//z6A589nvXv3xtWrVwEAe/bsQXp6OmbOnAkjIyOoVCosWbIE165dw5kzZ5Q6hgwZAmdnZ5iYmOCjjz5CRkYGbt68CQDYsWMHli5dqny2bdsG4HnzqoyMDFy5cgVqtRoNGzbE/v37NfoQ9O/fH7a2trCyskL37t3h4+OjDPAzdOhQpKSkIDw8HADwyy+/4Msvv4SbmxsAoG3bthg0aBB++eUXjfP9448/MGHCBOzbtw916tTJ8bo4Oztj6NChAIAaNWqga9euynXZunUrypcvj48//hgGBgawtrbGzJkz87zWgwYNQsOGDZU6x44di99//x0AULlyZVy8eBEtW7YEABgaGqJcuXIIDAzMsb7x48fDzs5OWRYRhIeHIyIiAqamplizZg369++fZ1za0IvEombNmmjSpAnGjx+vtOVbsmQJHj58iPbt2xdzdERERESvB1tbW43lcuXKKf0Tbt26hapVq8LExETZbmNjA1dXVwQHB2dbh62tLUxNTZU6Ll++jKNHjyqfzG/XGzVqhOnTp2PMmDFwcHBAnz594O/vrxGLhYWF8m8jIyNYWVkpy5lfRKvVaiQmJiIyMhI+Pj4a+9esWVMjzlu3bmHUqFEoX748vL29C3xd7t69Cy8vL43tVapUybU+AKhatarGcvXq1XHnzh0Az5OC5cuXo2PHjrCyskKDBg2QmJiY5Uv4F1lbW2ssL1++HI8fP4arqyt8fX0xZ84cjTdAhUEvEgsA+PnnnxEQEABHR0eUL18e06ZNw5o1a/DGG28Ud2hERERErz1HR8csTZpEBE+ePIGTk1O+6vjiiy+wdetW5fPicK7Tpk1DZGQkdu7cibJly6J169a4devWK8dpaWkJc3PzLLE+fvxYI05LS0ucPXsW6enpGDNmzCsfJ5OLiwvCwsI01mW+OcnNyx3Uo6Ki4OjoCOD5G5cJEyZg9OjRCA8PR3h4eK5vVLLj4+ODs2fP4s6dOxg7dix++OEHfPrpp69Ux6vSm8TC29sbgYGB2LNnD9avX4/79+9jwIABxR0WEREREQFo2bIlgoODceLECWXdpk2boFar4efnp1Xdx48fx1dffQWVSoWmTZti/vz5EBHlG/xXYWBggNatWyv9FYDnI179+eefynxpwPOEoGbNmtiyZQu2bduGpUuXFij2jh074sqVK0qzroyMDMydOzfP/TZt2oSnT58CeD7607p169C8eXMAQFBQEOrXr4/+/fujTJkyiIuLw8WLF/MdU0ZGBiZOnIgLFy7gjTfewNtvv41u3bohKCjolc/vVejFPBaZVCoVGjduXNxhEBERERWayIQUNPr6UKEfQ9eqVKmCadOmoUuXLhgyZAhSU1OxceNGLFu2TKNtf0HY2tpiyZIlOHfuHGrUqIG9e/eiWrVqaNasYJP7LVy4EK1bt0aHDh1Qu3Zt7N69GxUqVMB7772Xpay3tzdWrVqFYcOGoU6dOmjRosUrHcvb2xuLFy/GoEGD4OnpidjYWIwaNSrP/SpWrIgmTZqgffv2+O+///Dw4UNMmTIFANC7d28sWbIEgwcPhoeHBw4cOAB7e/t8x2RkZISwsDD06NED/fv3x8OHD7F161asWbPmlc7tVelVYkFERERU2qkFejlRXp06dbLMNN2pUyfUrl1bWZ46dSpatmyJgwcPwtTUFP7+/vD19VW2f/bZZ1kmlps/fz4qV66c67EzW66sX78e0dHR+PDDDzFs2DClX8X06dM14ng5LmtrayxZskRJcKpVq4ZLly5h48aNCA0NxRdffIFBgwbByMgIwPM+HRMnTlT2HzhwIAAo81V89NFHqFSpEgCgSZMmWfov9O7dG0lJScryBx98gAEDBuDSpUtwd3eHnZ0d5syZoxwvO127doWPjw/27duHIUOGYOjQoUry0LRpUwQEBGDTpk2wsbHB+vXrcfPmTWX7yz+rhQsXomLFihr1r127Fps2bcLZs2dRrVo1BAQEvHJzqldlIFIUs2UUvvj4eJQtWxZxcXEoU6ZMscSQOWu2cxntZ97Wpg4iIiIqPikpKbh79y4qVqyoMapR92X+iErIe6I2XXK0VmHnhwX71p/yJzk5GTNmzMDHH3+M8uXLAwB+//13vP3224iPj9fo7J6pcePGGDRoED7++OOiDjdbOd2zwKs9Y/ONBREREVER4AN+6WRmZobIyEjUrFkTrVq1wp07d3D16lUsXbo026SiNGNiQURERERUQIaGhli9ejVCQkJw4sQJiAiaNWuW68im3333HZydnYswyqLBxIKIiIiISEseHh7w8PDIV9n69esXbjDFRG+GmyUiIiIiopKLiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNE+QRERERFYUVLYHEyKI9ppUT8M6/RXtMHbl79y4qVKgAU1PT4g4lW0lJSYiJiYGrq2txh6I3mFjoqciEFDT6+lCB93e0VmHnh810GBERERFpJTESSAgv7ij0xty5c3HlyhX88ccfWbY9ffoUXl5emD17Nj7//PNiiC5vEyZMwO7duxEaGlrcoegNJhZ6Si1ARHxKcYdBREREumZgCFg5F+4xEiMAURfuMbSUnJyM+Pj4bLeZm5vjyJEjqFGjRhFHlX9fffUV3n777eIOQ68wsdAzjtYqrfaPTEiBWnQUDBEREemelTMw/nrhHmNh9QK9HUlOTsb27dvx8OFD1K5dG23btgUAiAh+/fVX9O7dGydPnsStW7fQp08fuLq64uzZszh8+DA8PT3Rt29fGBgYKPXFxMTg4MGDiIyMRKNGjVCvXr1cj/3nn3+icePGqF69OkJDQ1GhQgXY2NjgzJkzSEpKQo0aNbBv3z6kpaWhV69esLe316jj6NGjCAwMhLe3Nxo2bIhNmzZh+PDhMDbO+si7fv16tGrVCqGhoTh58iSq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jYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpjYkFERERERFpzbi4A6DCEZmQgkZfH9KqDkdrFXZ+2ExHERERERFRacbEopRSCxARn1LcYRARERHRa4KJRSnjaK3Suo7IhBSoRQfBEBEREdFrg4lFKaOLpkuNvj7Etx1ERERE9ErYeZuIiIiIiLTGxIKIiIiIiLTGxIKIiIiIiLTGxIKIiIiIiLTGxIKIiIiIiLSml4nF4sWL0b17d4SFhRV3KERERERElA96l1gEBgZi0qRJ2LVrF5KSkoo7HCIiIiIiyge9msdCrVZjzJgx+OCDD7Bo0aLiDue1F5mQgkZfHyrw/o7WKp3Mq0FERERE+k+vEovly5cjMTEREydOzDOxSE1NRWpqqrIcHx9f2OG9dtQCTpRHRERERPmiN4lFWFgYvvrqK+zZswcqlSrP8nPnzsWMGTOKILLXj6N13tc/N5EJKVCLjoIhIiIiohJBbxKLsWPHYujQoWjSpAni4uLyLD958mSMGzdOWY6Pj4ebm1thhvja0Lb5UqOvD/FNBxEREdFrRi8Si7///htnz57Fb7/9lu99VCpVvt5sEBERERFR4dOLxGLu3LnIyMhAx44dAQDPnj0DAAwcOBBjxozB+++/X5zhERERERFRHvQisZg9e7ZG86f4+HicPXsWb731Fpo146hCRERERET6Ti8Si06dOmksR0dHY8yYMejatSu8vLyKKSoiIiIiIsovvZsgDwAsLS3x008/oVy5csUdChERERER5YNevLF4mZmZGd55553iDoOIiIiIiPJJL99YEBERERFRycLEgoiIiIiItMbEgoiIiIiItMbEgoiIiIiItMbEgoiIiIiItKZVYvH48WP8+OOPiI2N1VE4RERERERUEmmVWKjVasyZMwcuLi4YMmQIDh48CLVaravYiIiIiIiohNAqsXByckJoaCh27doFlUqFPn36wNPTE9OnT0dISIiOQiQiIiIiIn2ndR8LQ0NDtG3bFqtXr8ajR48wf/583L59G97e3mjXrh02b96siziJiIiIiEiP6bTzdmBgIPz9/XHs2DE4ODigYsWK+OSTT9C9e3eIiC4PRUREREREesRY2wqCg4Pxxx9/4Pfff0dYWBh69eqFFStWoH379jA0NERycjI8PT1x7tw5+Pn56SJmIiIiIiLSM1olFqGhoahatSrq1q2LTz75BEOGDIGdnZ1GGQsLC7z11ltITU3VKlAiIiIiItJfWiUWdnZ2uHjxImrXrp1ruW+//VabwxARERERkZ7TerjZf//9N9ttu3fvxt69e7WpnoiIiIiISgitEouYmBjMmjUr222//fYbTp8+rU31RERERERUQhS4KZSXlxdiYmIQHR0NFxcXjW1Pnz5FamoqJk6cqHWARERERESk/wqcWCxevBgPHjzA+PHj8dNPP2lsMzIygq+vL1xdXbUOkEquyIQUNPr6kFZ1OFqrsPPDZjqKiIiIiIgKS4ETiy5duiA+Ph7p6eno2bOnLmOiUkItQER8SnGHQURERERFoECJxapVq1CvXj1UrVoV9vb22LhxY7blfH194eXlpVWAVPI4Wqu0riMyIQVqzqlIREREVGIUKLGYP38+hg0bhpEjR2LSpEk5lpsyZQoTi9eQLpouNfr6EN92EBEREZUgBUosLl26BFNTUwDA3bt3dRoQERERERGVPAUabjYzqciUnJys/PvmzZvYvXs3EhMTtYuMiIiIiIhKDK3msQCAH374AV27dgUA+Pv7o0aNGujVqxf8/PyYXBARERERvSa0SiyePHmCTz75BPPmzQMALFmyBMOGDUNkZCTMzc3x22+/6SRIIiIiIiLSbwUebhYA7t+/D2dnZzRo0AAigqNHj2LLli2wtbVF586dcf36dV3FSUREREREekyrxMLd3R0RERG4cOECbt68ibS0NDRo0ADA8w7eDRs21EmQRERERESk37RKLGxtbfHpp5/Cz88ParUa06dPh5mZGaZPn47//vsP3333na7iJCIiIiIiPaZVYgEA8+bNw8CBA5GRkYH69esDADp37oxBgwbB09NT6wDp9RaZkIJGXx/Sqg5Ha5VO5tYgIiIiopxpnVgAQN26dTWW2QSKdEUt4ER5RERERCWA1olFQkICVqxYgatXryIlRfMBcOjQoejWrZu2h6DXkKO1Sus6IhNSoBYdBENEREREedIqsVCr1Wjbti1u3LiBrl27wtnZWWO7paWlVsHR60sXTZcafX2IbzuIiIiIiohWicWtW7dw5swZXLx4EbVr19ZVTEREREREVMJoNUGevb097OzsmFQQEREREb3mtE4shg0bxhm2iYiIiIhec1olFhERETh37hzGjBmDN954A3Xq1NH4rFu37pXqExHcu3cPwcHBUKvV2oRGRERERERFSKs+FlZWVnjzzTfx5ptvZrv9VZpInT9/Hm+99RZu3LgBIyMjlC9fHhs2bECjRo20CZGIiIiIiIqA1onFO++8o3UQarUaPXv2RN++ffHvv//CyMgIH330EQYOHIh79+5pXT8RERERERUurZpCZdqwYQMGDBiA2rVrIzY2FgcOHMC///6b7/0TExPxySefYObMmbC3t4eNjQ0+/PBDhIaGIjo6Ott9UlNTER8fr/EhIiIiIqLioXViMWnSJIwZMwbW1tYICgpCRkYGbty4gU6dOuHWrVv5qqNMmTIYP348ypQpA+D5G4w9e/agVq1asLe3z3afuXPnomzZssrHzc1N21MhIiIiIqIC0iqxiIuLw+LFi3HmzBmsWrUKJiYmAIAPP/wQHTt2xPr161+5zr59+8LFxQW7du3Czp07cyw3efJkxMXFKZ/79+8X+DyIiIiIiEg7WiUW9+/fh62tLapVq5Zlm7e3N2JjY1+5zp49e+Ljjz9GSkoK5s2bh2fPnmVbTqVSoUyZMhofIiIiIiIqHlolFlWqVEFsbCwuXbqksT4jIwP79u0r0MR5b731FqZMmYJjx45hw4YN2LRpkzYhEhERERFREdAqsVCpVJg1axbatGmD6dOnIz09HT/88AOaNGkCEcHgwYPzVc/ly5cxdepUiIiyzsbGBs7OzoiKitImRCIiIiIiKgJaDTcLAJ999hlq1KiBlStXonLlyjh48CA6d+6MCRMmwNTUNF912NjYYPHixUhLS8O7774LQ0NDrFmzBnfv3kXHjh21DZGIiIiIiAqZ1okFAHTp0gVdunQp8P5ubm7Ytm0bPvzwQ8yfPx8AUKlSJfz999/w8vLSRYhERERERFSItEos1Go19u3bh6tXryIiIgKenp7w8/NDw4YNX7mu9u3b48aNG4iOjkZGRgacnJy0CY2IiIiIiIpQgftYXL58GfXq1cPAgQOxZcsW3Lp1C7/88guaNm2KPn364MmTJwWq197enkkFEREREVEJU6DE4unTp+jXrx+qV6+OkJAQBAQEYPv27bhw4QIuX76Me/fu4YMPPtB1rEREREREpKcKlFj89ddfUKvVWL16dZaZsatXr44///wTmzdvxs2bN3USJBERERER6bcCJRaXLl1CmzZtoFKpst1epUoVeHl54fLly1oFR0REREREJUOBEovw8HC4ubnlWqZixYq4d+9egYIiIiIiIqKSpcCdtw0MDHLdbmRkpDHhHRERERERlV4FHm72m2++wfLly3PcHhMTg2bNmhW0eiIiIiIiKkEKlFiMGTMG7dq1y7NcgwYNClI9kU5FJqSg0deHCry/o7UKOz9kkkxERESUmwIlFq1bt0br1q11HQtRoVALEBGfUtxhEBEREZVqWs28TaTPHK2zH7UsvyITUqBmNyEiIiKifGFiQaWWts2Xrs+oCxt1DIzSACw0001QBWXlBLzzb/HGQERERJQLJhZEObCXGDgZPHm+kFC8sRARERHpOyYWpJ9WtAQSI3VTl5bf9mfAEEbWzrqJ5VUlRgCiLp5jExEREb0CJhaknxIjgYTw4o4CABANGziNv148B19YXW+uAxEREVFumFiQfjMwBKwK+LaA3/YTERERFRkmFqTfrJyBgr4t4Lf9REREREXGsLgDICIiIiKiko9vLKj0S4x4/vbiFdkjVvexEBEREZVSTCyo9BN1gZpEGRVCKERERESlFRMLKr2snLTaPTIhBRkCxBraQruaiIiIiEo/JhZUemk5U3WPrw8hIj4FzmXMcFJHIRERERGVVuy8TUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWmNiQUREREREWuPM20QlQWIEsLC6dnVYOWk9GzkRERFRTphYEOUhMiEFjb4+pFUdjtYq7PywWcErEDWQEK5VDERERESFiYkFUR7UAkTEpxTPwa2ctK8jMeJ5YkJERERUiJhYEOXA0VqldR2RCSlQixYV6KLp0sLqfNtBREREhY6JBeneipZAYqR2dSRG6CYWLWjVdOn/a/T1oeJ720FERERUhPQqsbhw4QK2bduG1NRUdOjQAW3atCnukKggEiP5DTkRERHRa0Zvhptdv349mjZtirCwMNy7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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(assessment.report(\"support\").summary())\n", "g_hat = result.nuisance.propensity.arm(1.0)\n", "print(f\"largest fitted propensity: {g_hat.max():.4f}\")\n", "print(\n", " f\"pairs below the lower ATT bound 0.025: non-smoking {(g_hat[~smoker] < 0.025).sum():,}, \"\n", " f\"smoking {(g_hat[smoker] < 0.025).sum():,}\"\n", ")\n", "print()\n", "curve = result.diagnostics.truncation_curve(bounds=(0.002, 0.005, 0.01, 0.025, 0.05))\n", "print(\n", " curve[[\"bound\", \"truncated_fraction\", \"psi\", \"ci_lower\", \"ci_upper\"]]\n", " .round(5)\n", " .to_string(index=False)\n", ")\n", "\n", "fig, ax = plt.subplots(figsize=(8, 4))\n", "bins = np.linspace(0, 1, 41)\n", "ax.hist(\n", " g_hat[~smoker], bins=bins, density=True, histtype=\"step\", linewidth=2, label=\"non-smoking pairs\"\n", ")\n", "ax.hist(g_hat[smoker], bins=bins, density=True, histtype=\"step\", linewidth=2, label=\"smoking pairs\")\n", "ax.set_xlabel(\"Out-of-fold estimated P(smoked = 1 | W)\")\n", "ax.set_ylabel(\"Density\")\n", "ax.set_title(\"Fitted propensity by observed smoking status\")\n", "ax.legend()\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "id": "overlap-reading", "metadata": {}, "source": [ "**What this output tells you.** The ATT needs non-smoking pairs at the background of each smoking\n", "pair. The largest fitted propensity is 0.9537, below the upper bound 0.975. The non-smoking pairs\n", "thin out at high propensities. Their 99% quantile is 0.5631, while 5% of the smoking pairs lie\n", "above 0.7450. The histogram shows the same pattern.\n", "\n", "The lower ATT bound 0.025 clips 6,686 pairs: 6,581 non-smoking and 105 smoking. A non-smoking pair\n", "enters the update with the weight g/(1 − g), so these pairs carry little weight. The truncation\n", "curve repeats the targeting step at five bounds. The estimate moves from 0.00144 to 0.00150 across\n", "them. The bound therefore does not carry the estimate, although the support summary warns that it\n", "might.\n", "\n", "The `Kish / target` value of 0.375 shows that the load of the ATT update concentrates on a\n", "minority of the pairs. The library reports this value as a description, not as a measure of\n", "precision. These values describe the fitted propensity model. They do not show the overlap of the\n", "true assignment mechanism." ] }, { "cell_type": "markdown", "id": "sensitivity-heading", "metadata": {}, "source": [ "## 9. Sensitivity to unmeasured confounding\n", "\n", "The no-unmeasured-confounding assumption cannot be tested. The omitted-variable bound of\n", "[Chernozhukov, Cinelli, Newey, Sharma and Syrgkanis (2026)](../references.md#sensitivity-analysis)\n", "states how far a confounder of a given strength could move the estimate. Its strength `cf_y` is\n", "the share of the residual outcome variation that the confounder explains. Its strength `cf_d`\n", "measures how much the confounder adds to the weights of the ATT. The worst-case alignment is\n", "ρ = 1.\n", "[Omitted-variable bounds](../technical-reference/validation-methods.md#omitted-variable-bounds-robustness-value-benchmark-and-contours)\n", "defines each quantity.\n", "\n", "The code first calibrates the strengths. It refits without mother's education and marital\n", "status, the two confounders that section 3 identifies, and it reports their implied strengths. It\n", "then reads the bound at the benchmark strengths and at three larger values of `cf_y`." ] }, { "cell_type": "code", "execution_count": 10, "id": "sensitivity", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:18:20.998684Z", "iopub.status.busy": "2026-10-16T01:18:20.998151Z", "iopub.status.idle": "2026-10-16T01:18:46.432026Z", "shell.execute_reply": "2026-10-16T01:18:46.431045Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Benchmark for 'att' against ['mother_education', 'married']\n", "------------------------------------------------\n", "quantity with covariates without \n", "-------- --------------- ---------\n", "estimate 0.0014499 0.0022752\n", "sigma^2 0.02722 0.027227 \n", "nu^2 11.079 10.214 \n", "\n", "implied cf_y = 0.0003, cf_d = 0.0848, rho = 0.3355\n", "the estimate moved by +0.00082531 when these covariates were dropped\n", "\n", "cf_d from the benchmark: 0.0848; rho = 1\n", " cf_y bias bound bias-adjusted lower bias-adjusted upper 95% lower 95% upper\n", "0.0003 0.00268 -0.00123 0.00413 -0.00556 0.00847\n", "0.0010 0.00528 -0.00384 0.00673 -0.00817 0.01108\n", "0.0050 0.01182 -0.01037 0.01327 -0.01471 0.01762\n", "0.0100 0.01671 -0.01526 0.01816 -0.01962 0.02254\n" ] } ], "source": [ "benchmark = result.sensitivity.benchmark(\n", " covariates=(\"mother_education\", \"married\"), estimand=\"att\", random_state=SEED\n", ")\n", "print(benchmark.summary())\n", "print()\n", "rows = []\n", "for cf_y in (benchmark.cf_y, 0.001, 0.005, 0.01):\n", " if cf_y == benchmark.cf_y:\n", " # The benchmark record supplies its own gains as cf_y and cf_d. rho stays 1.\n", " bound = result.sensitivity.omitted_confounding(estimand=\"att\", benchmark=benchmark)\n", " else:\n", " bound = result.sensitivity.omitted_confounding(\n", " estimand=\"att\", cf_y=cf_y, cf_d=benchmark.cf_d, rho=1.0\n", " )\n", " rows.append(\n", " {\n", " \"cf_y\": round(cf_y, 4),\n", " \"bias bound\": bound.bias,\n", " \"bias-adjusted lower\": bound.lower,\n", " \"bias-adjusted upper\": bound.upper,\n", " \"95% lower\": bound.ci_lower,\n", " \"95% upper\": bound.ci_upper,\n", " }\n", " )\n", "print(f\"cf_d from the benchmark: {benchmark.cf_d:.4f}; rho = 1\")\n", "print(pd.DataFrame(rows).round(5).to_string(index=False))" ] }, { "cell_type": "markdown", "id": "sensitivity-reading", "metadata": {}, "source": [ "**What this output tells you.** Without education and marital status, the estimate moves from\n", "0.0014499 to 0.0022752, a change of +0.00082531. The two covariates imply `cf_y = 0.0003`,\n", "`cf_d = 0.0848`, and ρ = 0.3355. The refit keeps the father's education and the other covariates,\n", "which partly stand in for the two dropped ones. The implied strengths therefore measure what the\n", "two covariates add beyond the other covariates.\n", "\n", "The outcome-side strength is small because the outcome is rare. The outcome model has an R² of\n", "0.014, so chance explains most of the outcome variation.\n", "\n", "| `cf_y` | bias bound | bound with 95% confidence |\n", "| --- | --- | --- |\n", "| 0.0003 (the benchmark) | 0.00268 | [-0.00556, 0.00847] |\n", "| 0.0010 | 0.00528 | [-0.00817, 0.01108] |\n", "| 0.0050 | 0.01182 | [-0.01471, 0.01762] |\n", "| 0.0100 | 0.01671 | [-0.01962, 0.02254] |\n", "\n", "Each row uses the benchmark `cf_d` and ρ = 1. The benchmark implies ρ = 0.3355, so ρ = 1 is\n", "conservative. At the benchmark strengths, the bias bound 0.00268 already exceeds the estimate. The\n", "upper end 0.00847 also exceeds the crude difference 0.0078. A missing confounder as strong as\n", "education and marital status could therefore hide an ATT as large as the crude difference. The\n", "bound also assumes a consistently estimated propensity, and the calibration flag of section 8\n", "qualifies that." ] }, { "cell_type": "markdown", "id": "over-adjustment-heading", "metadata": {}, "source": [ "## 10. A check for over-adjustment\n", "\n", "Three items of C can change during the pregnancy: alcohol use, diabetes, and lung, heart, or\n", "kidney disease. The certificate does not say whether they began before the pregnancy. If smoking\n", "affects one of them, adjustment for it removes part of the effect. The code refits the ATT without\n", "the three items and prints both estimates." ] }, { "cell_type": "code", "execution_count": 11, "id": "over-adjustment", "metadata": { "execution": { "iopub.execute_input": "2026-10-16T01:18:46.434055Z", "iopub.status.busy": "2026-10-16T01:18:46.433409Z", "iopub.status.idle": "2026-10-16T01:19:11.427411Z", "shell.execute_reply": "2026-10-16T01:19:11.426520Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ATT with the three items: 0.0014\n", "ATT without the three items: 0.0022\n", "standard error of the ATT: 0.0026\n" ] } ], "source": [ "# Three items of C can change during the pregnancy, so smoking could affect them.\n", "possibly_affected = (\"alcohol\", \"diabetes\", \"lung_heart_kidney_disease\")\n", "without = result.sensitivity.benchmark(\n", " covariates=possibly_affected, estimand=\"att\", random_state=SEED\n", ")\n", "print(f\"ATT with the three items: {without.psi_long:.4f}\")\n", "print(f\"ATT without the three items: {without.psi_short:.4f}\")\n", "print(f\"standard error of the ATT: {att.std_error:.4f}\")" ] }, { "cell_type": "markdown", "id": "over-adjustment-reading", "metadata": {}, "source": [ "**What this output tells you.** Without the three items, the estimate moves from 0.0014 to\n", "0.0022. The change is about a third of the standard error 0.0026. Its direction agrees with\n", "over-adjustment, and it also agrees with confounding by the three items. The data cannot separate\n", "these two explanations. Both estimates are small against their sampling error, so the choice does\n", "not change the reading of section 6." ] }, { "cell_type": "markdown", "id": "method-evidence", "metadata": {}, "source": [ "## Method evidence\n", "\n", "The fit on this page uses observed data, so no true value is known. The registered study in\n", "the table measures the estimator over repeated draws of a synthetic law. The study page gives\n", "its law, its nuisance models, and the result of each cell.\n", "\n", "| fit on this page | registered study | law of the study |\n", "| --- | --- | --- |\n", "| Section 6, the ATT | [Stacked point-treatment CV-TMLE](../technical-reference/method-evidence/stacked-point-treatment-cv-tmle.md) | a synthetic law with a bounded continuous outcome |\n", "\n", "No registered study covers this Super Learner, three folds, a rare outcome, or 51,874 pairs.\n", "\n", "The [technical entry](../technical-reference/cv-tmle.md#validation-issues-special-to-this-method) lists the evidence and the limits of the method." ] }, { "cell_type": "markdown", "id": "interpret", "metadata": {}, "source": [ "## What the analysis answers\n", "\n", "**The estimate.** Among same-sex twin pairs born alive in 1989–1991 to smoking mothers, in the\n", "reporting states and years, the first-year risk is 0.0427 per child as observed. The estimated\n", "risk had the mothers not smoked is 0.0412. The ATT is 0.0014, with a 95% interval of\n", "[-0.0037, 0.0066]. Among the 16,888 children of smoking pairs, that is 24 deaths, with a 95%\n", "interval from -63 to 112. The interval is an influence-curve Wald interval, with the pair as the\n", "unit.\n", "\n", "**What supports it.** The targeting step solved its score equation. The estimate does not depend\n", "on the propensity bound. The estimator meets its coverage check on a simpler law.\n", "\n", "**What remains unverified.** The graph and the choice of C are judgments. No unmeasured\n", "confounding, a correct record of smoking, no effect of smoking on C, and harmless selections are\n", "also judgments. Section 9 shows that a missing confounder as strong as education and marital\n", "status could hide an ATT as large as the crude difference.\n", "\n", "**What the analysis does not support.**\n", "\n", "- It does not show that smoking is harmless to twins. The interval includes effects up to 0.0066,\n", " and the sensitivity bound admits larger ones.\n", "- It does not estimate the effect for singletons, for other years, or for the states that did not\n", " collect the item.\n", "- It does not support an effect estimate within birth-weight bands. Section 7 shows why such\n", " estimates mislead.\n", "- The gap between the crude difference and the ATT comes from one data set. It does not measure\n", " the confounding bias of other data sets." ] }, { "cell_type": "markdown", "id": "where-next", "metadata": {}, "source": [ "## Where to go next\n", "\n", "[Point-treatment TMLE](point-treatment-tmle.ipynb) teaches the same estimator on a synthetic law\n", "with a known answer. [CV-TMLE and cross-fitting](cross-fitting.ipynb) shows why the nuisance\n", "predictions come from other folds. [Results assessment](../user-guide/results-assessment.md)\n", "describes each check of section 8." ] } ], "metadata": { "cleverly_execution": { "command": [ "python", "scripts/execute_notebook.py", "docs/examples/twins-causal-inference.ipynb" ], "gated": { "code_source_sha256": "f5e3c406b08bcd69a7498a9786ad2dc2c229ef9e21149a1eeaf5b19a7d0dfa9c", "execution_payload_sha256": "02f9ebd03ecffb7201941cf3e583b3feda68dc7fc7b26134e806b7d6ad597a1f" }, "recorded": { "cleverly_commit": "4cea0d1ad32abd00580cd9f3a27d84a8c294db5f", "cleverly_version": "0.1.3", "cleverly_worktree_clean": false, "dependency_lock_sha256": "2e4f7ad3264ff9b35cf7588e5c93a0e20fc5c0852092ac1da365491543836682", "generator_files": [ "scripts/execute_notebook.py", "tests/notebooks.py" ], "generator_sha256": "f247771ab390b23e7e092d7eb35794e241c2ac84fc0526695df1cee1fc457a83", "package_source_sha256": "5fce085883c189351f5a0d142b216264208c189d01a46bb372a5e8fc68eed390" }, "schema_version": 5 }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.16" } }, "nbformat": 4, "nbformat_minor": 5 }