cleverly 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cleverly-0.2.0 → cleverly-0.2.1}/.github/actions/setup-env/action.yml +18 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/.github/workflows/ci.yml +36 -9
- {cleverly-0.2.0 → cleverly-0.2.1}/CLAUDE.md +3 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/PKG-INFO +75 -122
- cleverly-0.2.1/README.md +193 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/estimands.md +2 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/index.md +1 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/interventions.md +2 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/learners.md +23 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/methods.md +1 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/object-index.rst +40 -0
- cleverly-0.2.1/docs/api/plotting.md +48 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/results-assessment.md +11 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/sensitivity-validation.md +5 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/architecture-invariants.md +14 -4
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/contributing.md +10 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/example-notebooks.md +2 -2
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/method-benchmarking.md +46 -0
- cleverly-0.2.1/docs/development/release-notes-0.2.1.md +115 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/releases.md +2 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/testing-strategy.md +2 -1
- cleverly-0.2.1/docs/examples/collaborative-tmle.ipynb +1478 -0
- cleverly-0.2.1/docs/examples/conditional-effects.ipynb +1044 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/cross-fitting.ipynb +96 -80
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/discharge-to-readmission.ipynb +95 -76
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/index.md +13 -3
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/longitudinal-survival.ipynb +103 -105
- cleverly-0.2.1/docs/examples/msm-projections.ipynb +1670 -0
- cleverly-0.2.1/docs/examples/plots.ipynb +1175 -0
- cleverly-0.2.1/docs/examples/point-treatment-tmle.ipynb +1551 -0
- cleverly-0.2.1/docs/examples/survey-nonresponse.ipynb +1452 -0
- cleverly-0.2.1/docs/examples/twins-causal-inference.ipynb +1792 -0
- cleverly-0.2.1/docs/examples/weekly-outcomes.ipynb +1466 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/getting-started/installation.md +2 -2
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/references.md +62 -12
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/roadmap.md +156 -43
- cleverly-0.2.1/docs/technical-reference/conditional-effects.md +634 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/evidence.md +19 -2
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/hard-stop-review.md +4 -4
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/index.md +6 -3
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/longitudinal-tmle.md +72 -4
- cleverly-0.2.1/docs/technical-reference/method-evidence/conditional-projection.md +229 -0
- cleverly-0.2.1/docs/technical-reference/method-evidence/eliminated-competing-events.md +204 -0
- cleverly-0.2.1/docs/technical-reference/method-evidence/ep-assessment.md +170 -0
- cleverly-0.2.1/docs/technical-reference/method-evidence/ep-cate.md +324 -0
- cleverly-0.2.1/docs/technical-reference/method-evidence/ep-crr.md +249 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/index.md +7 -0
- cleverly-0.2.1/docs/technical-reference/method-evidence/learned-rule-ep.md +377 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/long-horizon-categorical-longitudinal-tmle.md +135 -24
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/long-horizon-longitudinal-tmle.md +114 -22
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/long-horizon-sequentially-doubly-robust-estimation.md +196 -23
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/red-cells.md +5 -3
- cleverly-0.2.1/docs/technical-reference/method-evidence/targeting-curves.md +235 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/validation-grid.md +10 -3
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/natural-extension-verdicts.md +8 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/point-treatment-tmle.md +106 -6
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/scope-and-refusals.md +22 -2
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/validation-methods.md +7 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/user-guide/capabilities.md +6 -4
- cleverly-0.2.1/docs/user-guide/conditional-effects.md +274 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/user-guide/estimands.md +47 -2
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/user-guide/index.md +1 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/user-guide/longitudinal.md +1 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/user-guide/methods-learners.md +8 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/user-guide/results-assessment.md +9 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/workflow.md +3 -2
- {cleverly-0.2.0 → cleverly-0.2.1}/pyproject.toml +20 -15
- {cleverly-0.2.0 → cleverly-0.2.1}/scripts/smoke_backend.py +14 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/__init__.py +4 -0
- cleverly-0.2.1/src/cleverly/_curve_assessment.py +935 -0
- cleverly-0.2.1/src/cleverly/_summary/_balance.py +234 -0
- cleverly-0.2.1/src/cleverly/_summary/_effect_curve.py +306 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_summary/_estimates.py +10 -3
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_summary/_setup.py +19 -8
- cleverly-0.2.1/src/cleverly/_summary/_targeting.py +232 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_summary/vocabulary.py +290 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_support.py +41 -8
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_support_rows.py +287 -2
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_typing.py +9 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_version.py +1 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/assessment.py +311 -1
- cleverly-0.2.1/src/cleverly/bases.py +1724 -0
- cleverly-0.2.1/src/cleverly/effect_curves.py +866 -0
- cleverly-0.2.1/src/cleverly/effect_modification.py +665 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/_nuisance.py +5 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/_option_support.py +23 -2
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/_point_summary.py +2 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/base.py +300 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/ctmle.py +44 -0
- cleverly-0.2.1/src/cleverly/estimators/ep.py +1381 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/serialize.py +5 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/targeting.py +29 -4
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/tmle.py +135 -7
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/fluctuation/submodel.py +170 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/bootstrap.py +48 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/influence.py +98 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/_rule_learners.py +280 -16
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/learned.py +431 -25
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/_threads.py +41 -3
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/parametric.py +26 -10
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/super_learner.py +39 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/__init__.py +3 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/_summary.py +56 -5
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/baselines.py +22 -5
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/data.py +142 -5
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/estimator.py +174 -20
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/frequency.py +4 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/panel.py +6 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/pooled_hazards.py +8 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/sdr.py +4 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/sequential.py +243 -52
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/structural.py +4 -0
- cleverly-0.2.1/src/cleverly/longitudinal/weights.py +287 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/methods.py +168 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/msm.py +209 -0
- cleverly-0.2.1/src/cleverly/plotting/__init__.py +63 -0
- cleverly-0.2.1/src/cleverly/plotting/_confounding.py +1381 -0
- cleverly-0.2.1/src/cleverly/plotting/_core.py +1620 -0
- cleverly-0.2.1/src/cleverly/plotting/_curves.py +2454 -0
- cleverly-0.2.1/src/cleverly/plotting/_diagnostics.py +1529 -0
- cleverly-0.2.1/src/cleverly/plotting/_forest.py +630 -0
- cleverly-0.2.1/src/cleverly/plotting/_overlap.py +322 -0
- cleverly-0.2.1/src/cleverly/plotting/_sensitivity.py +571 -0
- cleverly-0.2.1/src/cleverly/plotting/_strips.py +143 -0
- cleverly-0.2.1/src/cleverly/plotting/_targeting.py +326 -0
- cleverly-0.2.1/src/cleverly/plotting/_truth.py +210 -0
- cleverly-0.2.1/src/cleverly/plotting/_weights.py +776 -0
- cleverly-0.2.1/src/cleverly/plotting/_zipper.py +258 -0
- cleverly-0.2.1/src/cleverly/plotting/palette-validation.txt +11 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/__init__.py +4 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_objects.py +145 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_simulated_confounding_common.py +1 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_simulated_confounding_longitudinal.py +17 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_simulated_confounding_request.py +10 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_summaries.py +9 -1
- cleverly-0.2.1/src/cleverly/sensitivity/balance.py +558 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/evalue.py +12 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/marginal.py +42 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/missingness.py +1 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/omitted_variable.py +20 -2
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/positivity.py +4 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/simulated_confounding.py +60 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/study.py +811 -29
- cleverly-0.2.1/src/cleverly/targeting_curves.py +1682 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/targets/__init__.py +2 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/targets/base.py +16 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/targets/builtin.py +99 -1
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_interpretation.py +2 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/longitudinal.py +117 -41
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/nuisance.py +74 -3
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/refute.py +19 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/simulation.py +63 -1
- cleverly-0.2.1/uv.lock +3723 -0
- cleverly-0.2.0/README.md +0 -240
- cleverly-0.2.0/docs/examples/collaborative-tmle.ipynb +0 -1458
- cleverly-0.2.0/docs/examples/msm-projections.ipynb +0 -1654
- cleverly-0.2.0/docs/examples/point-treatment-tmle.ipynb +0 -1517
- cleverly-0.2.0/docs/examples/survey-nonresponse.ipynb +0 -1441
- cleverly-0.2.0/docs/examples/twins-causal-inference.ipynb +0 -1782
- cleverly-0.2.0/docs/examples/weekly-outcomes.ipynb +0 -1446
- cleverly-0.2.0/uv.lock +0 -3107
- {cleverly-0.2.0 → cleverly-0.2.1}/.codex/config.toml +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/.gitattributes +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/.github/pull_request_template.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/.github/workflows/cancel-closed-pr-runs.yml +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/.github/workflows/pages.yml +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/.github/workflows/publish.yml +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/.gitignore +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/AGENTS.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/CONTRIBUTING.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/LICENSE +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/README.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/_static/custom.css +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/_static/custom.js +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/_templates/autosummary/class.rst +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/datasets.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/exceptions.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/api/study-design.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/conf.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/index.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/pull-requests.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/release-notes-0.1.2.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/release-notes-0.1.3.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/release-notes-0.1.4.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/release-notes-0.1.5.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/release-notes-0.1.6.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/release-notes-0.1.7.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/release-notes-0.2.0.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/release-notes-template.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/development/writing-for-readers.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/interventions.ipynb +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/model-based-over-time.ipynb +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/population-impact.ipynb +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/randomized-pilot.ipynb +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/schedules-and-intensity.ipynb +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/sequential-offers.ipynb +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/sequential-pricing.ipynb +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/examples/treatment-rules.ipynb +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/getting-started/index.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/getting-started/quickstart.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/index.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/adaptive-iptw.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/collaborative-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/cv-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/dr-tmle/diagnostics.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/dr-tmle/index.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/dr-tmle/nuisance-conditions.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/dr-tmle/supported-estimands.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/dr-tmle/targeting.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/dr-tmle/theorem.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/dr-tmle/validation-programme.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/inference.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/adaptive-iptw-pairing.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/adaptive-iptw.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/c-tmle-candidate-sequences.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/calibration-slope-warning.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/canonical-dr-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/canonical-point-treatment-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/categorical-incremental.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/clustered-cross-fitted-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/clustered-few-cluster-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/clustered-point-treatment-cv-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/clustered-unequal-cv-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/continuous-modified-treatment-policies.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/controlled-direct-effect-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/cross-fitted-categorical-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/cross-fitted-competing-risk-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/cross-fitted-end-of-study-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/cross-fitted-longitudinal-msm-projection.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/cross-fitted-point-treatment-survival.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/cross-fitted-survival-curve-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/cross-fitted-weighted-end-of-study-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ctmle-derivative.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/default-simultaneous-bands.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/deterministic-point-treatment-regimes.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/dr-tmle-foldwise.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/dr-tmle-one-inconsistent-nuisance.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/evalue-limit-coverage.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/few-cluster-cross-fitted-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/fold-evaluated-point-treatment-cv-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/fold-evaluated-strata.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/fold-targeted-point-treatment-cv-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/full-refit-bootstrap-and-derived-contrasts.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/how-to-read.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/incremental-propensity-interventions.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/known-mechanism-dr-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/known-node-mechanisms-ltmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/known-treatment-mechanism.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-regimen-ltmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-arms.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-compositions.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-contrast.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-cvtmle-boundary.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-cvtmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-in-sample.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-intermediate.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-learners.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-optimal-value.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-split-mean.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-stacked.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-rule-strata.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/learned-weighted-point-treatment-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/longitudinal-incremental-interventions-dropout.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/longitudinal-incremental-interventions.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/longitudinal-modified-treatment-policies.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/marginal-bound-limit-coverage.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/missing-outcome-attributable-effects-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/mtp-boundaries.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/mtp-pricing.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/mtp-tuning.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/multi-arm-dr-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/observational-missing-data-dr-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/omitted-variable-bound-plugin-standard-error.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/omitted-variable-bound-standard-error.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ordinary-categorical-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ordinary-competing-risk-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ordinary-end-of-study-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ordinary-longitudinal-msm-projection.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ordinary-missing-outcome-natural-course-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ordinary-missing-outcome-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ordinary-multi-arm-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ordinary-survival-curve-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ordinary-weighted-end-of-study-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/outcome-adaptive-multi-arm-c-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/outcome-adaptive-per-arm-c-tmle-parametric-crossfit.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/outcome-adaptive-per-arm-c-tmle-parametric-extensions.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/outcome-adaptive-per-arm-c-tmle-parametric.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/outcome-adaptive-per-arm-c-tmle-strata-missing.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/outcome-adaptive-per-arm-c-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/outcome-adaptive-point-treatment-c-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/ovb-limit-coverage.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/parametric-gformula.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/point-modified-treatment-policies.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/point-survival-curve-crossfit.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/point-survival-curve.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/point-survival-hazard.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/point-treatment-msm-projection.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/point-treatment-survival-policies.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/point-treatment-survival.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/randomized-missing-outcome-dr-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/randomized-multi-arm-missing-outcome-dr-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/refuter-calibration-band.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/refuter-calibration-longitudinal.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/refuter-calibration-point.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/repeated-cross-fitted-longitudinal.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/repeated-cross-fitting.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/repeated-outcome-ipsi.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/repeated-outcome-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/repeated-outcome-sdr.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/selector-based-multi-arm-c-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/selector-based-point-treatment-c-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/sequential-baselines.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/sequentially-doubly-robust-estimation.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/stacked-arm-indexed-missing-outcome-cvtmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/stacked-missing-outcome-natural-course-cvtmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/stacked-point-treatment-cv-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/stochastic-categorical-longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/stochastic-point-treatment-regimes.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/stratified-dr-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/stratified-incremental-msm.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/stratified-msm-identity.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/stratified-point-treatment-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/structural-nested-mean.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/survival-node-bounds.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/vector-modified-treatment-policies.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/method-evidence/weighted-point-treatment-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/msm-projections.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/parametric-gformula.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/sequential-baselines.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/technical-reference/structural-dynamic-effects.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/docs/user-guide/data-design.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/noxfile.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/cross-cutting/collaborative-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/editor-brief.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/collaborative-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/cross-fitting.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/dr-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/interventions.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/longitudinal-survival.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/msm-projections.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/point-treatment-tmle-cross-cutting.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/point-treatment-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/survey-nonresponse.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/findings/twins-causal-inference.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N1.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N10.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N2.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N3.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N4.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N5.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N6.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N7.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N8.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-N9.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-S1.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-S2.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-S3.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-S4.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-S5.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-S6.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate-final.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate1-findings.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/gates/gate2-plan.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/investigations/iv-n3.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/investigations/sn-step9.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/learner-experiment.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/ledger.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/plan.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/analyze.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/analyze.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/mechanism.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/mechanism.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/mechanism.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/nb.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/probe_crossfit.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/probe_crossfit.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/sweep_0_300.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/sweep_44_46.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle/sweep_test.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-final/crossfit_check.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-final/crossfit_check.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-final/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-final/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-final/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-final/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-final/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-final/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-final/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-oat/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-oat/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-oat/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-oat/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-refuters/probe.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/collaborative-tmle-refuters/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-final/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-final/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-final/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-final/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-final/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-final/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-final/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-refutation/main_generated.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-refutation/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cross-fitting-refutation/team.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cv-tmle-scale/new-law-seed0.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cv-tmle-scale/old-law-seed0.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/cv-tmle-scale/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/discharge-to-readmission/probe.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/discharge-to-readmission/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-final/remainder.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-final/remainder.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-final/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-final/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-final/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-final/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-final/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-final/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-final/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-known/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-known/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/dr-tmle-known/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/sweep_binary.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/sweep_binary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/sweep_binary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/sweep_dose.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/sweep_dose.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/sweep_dose.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/sweep_dose_n4.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/interventions-final/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/fold_check.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/fold_check.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/introspect.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/oracle_rows.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/probe_ic.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/probe_ic.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/probe_ic.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/se_spread.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/summarize_extra.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/summarize_ic.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/summary_extra.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/iv-n3/summary_ic.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/analyze.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/analyze2.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/feats.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/rows_strong.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/run.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/run.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/run2.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/run2.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/strong_truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/strong_truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/summary.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/summary_strong.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/timing.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/timing.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/truth_mc.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/learner-exp/truth_mc.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/censored_competing.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/censored_competing.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/seed52.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/seed52.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-final/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-final/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-final/sweep-confirm.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-final/sweep-confirm.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-final/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-final/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-final/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-final/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-final/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-refuters/probe.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-survival-refuters/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/probes.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/probes.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/seed41.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/seed41.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/truth_and_mechanism.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle/truth_and_mechanism.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle-final/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle-final/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle-final/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle-final/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle-final/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle-final/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/longitudinal-tmle-final/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/model-based-over-time/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/model-based-over-time/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/model-based-over-time/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections/probe_n.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections/probe_n12000.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections/sweep61.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections-final/shortfall.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections-final/shortfall.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections-final/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections-final/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections-final/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections-final/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/msm-projections-final/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-final/plugin.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-final/plugin.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-final/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-final/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-final/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-final/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-final/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-final/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-final/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-refuters/generated.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-refuters/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/point-treatment-tmle-refuters/standard.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/randomized-pilot/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/randomized-pilot/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/randomized-pilot/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/schedules-and-intensity/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/schedules-and-intensity/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/schedules-and-intensity/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/bias_check.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/bias_check.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/bias_check.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/bias_check_summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/logged_branch_check.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/logged_branch_check.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/summarize_bias.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-offers/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/placebo.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/placebo.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/revenue_learner.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/revenue_learner.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sequential-pricing/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-bounded/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-bounded/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-bounded/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-refute/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-refute/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step6/probe-s1000.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step6/probe-s1000.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step6/probe-s2000.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step6/probe-s2000.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step6/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step6/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step6/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/boxcal-check.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/explore.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/oracle-4000.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/oracle-4000.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/oracle.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/probe-n16000.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/probe-n2000.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/probe-n4000.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/probe-n4000b.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/summary-n4000b.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/sn-step9/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/boxcal.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/boxcal.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/boxcal_5000.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/nb.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/sens.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/sens.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/shift71.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/shift71.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/sweep200.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/sweep300.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/sweep71.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/sweep_1000.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/sweep_1200.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/sweep_71.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse/useci.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse-final/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse-final/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse-final/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse-final/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse-final/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse-final/truth.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/survey-nonresponse-final/truth.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/treatment-rules/probe.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/treatment-rules/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-birth-weight/common.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-birth-weight/generated_outcome_400.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-birth-weight/generated_outcome_400.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-birth-weight/sensitivity_all.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-birth-weight/sensitivity_all.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/arxiv.pdf.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/covar_desc.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/covar_type.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/data_check.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/data_check.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/g_range.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/g_range.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/gap_probe.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/gap_probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/ltmle_sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/ltmle_sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/ltmle_sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/nb.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/nips.pdf.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep2.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep3.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep_11.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep_18.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep_5.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep_5_part.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep_a.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep_all.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep_b.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep_c.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference/point_sweep_part0.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/common.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/ltmle-sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/ltmle-sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/ltmle_sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/summarize.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/sweep-current.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/sweep-current.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/sweep-shallow.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/sweep-shallow.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/twins-causal-inference-final/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-collaborative-tmle/test.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-collaborative-tmle/v_1000_1400.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-collaborative-tmle/vanalyze.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-collaborative-tmle/vanalyze.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-collaborative-tmle/vsweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-collaborative-tmle/vsweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-survival/elim_cens.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-survival/functional.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-survival/nb.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-survival/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-survival/sweep_2000.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-survival/sweep_53.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-survival/sweep_v.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-tmle/nb.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-tmle/probe.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-longitudinal-tmle/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-msm-projections/fitted12000.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-msm-projections/fitted3000.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-msm-projections/fitted_12000_4001_4151.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-msm-projections/fitted_3000_2001_2301.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-msm-projections/oracle12000.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-msm-projections/oracle3000.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-msm-projections/oracle_12000_3001_3201.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-msm-projections/oracle_3000_2001_2301.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-msm-projections/v.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-survey-nonresponse/death.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-survey-nonresponse/nb.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-survey-nonresponse/tg.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-survey-nonresponse/tg_n.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-survey-nonresponse/tg_seeds.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-survey-nonresponse/useci.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/common.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/gap_probe2.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/nb.txt +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/sens.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/sens_11.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/sens_5.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/sens_g.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/sens_g2.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/sweep_gap.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/sweep_gap.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/sweep_gap_2026.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/two_cov.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/verify-twins-causal-inference/two_cov.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/weekly-outcomes/sweep.csv +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/weekly-outcomes/sweep.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/probes/weekly-outcomes/sweep.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/progress.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/refusal-inventory.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/sibling-sweep.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/study-impact.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/collaborative-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/cross-fitting.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/dr-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/interventions.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/longitudinal-survival.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/longitudinal-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/msm-projections.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/point-treatment-tmle.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/survey-nonresponse.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/notebook-review/verification/twins-causal-inference.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/prs-253-264/253-258.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/prs-253-264/259-263.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/prs-253-264/264.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/prs-253-264/README.md +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/drdr_analyze.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/drdr_sim.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/drdr_summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/drift_attribution.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/drift_attribution.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/hgb_diagnosis.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/hgb_diagnosis.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/lra_analyze.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/lra_mar_sim.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/lra_recheck.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/lra_recheck.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/lra_summary.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/pool_se_ratio.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/rm40b_pilot.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm40/rm40b_pilot.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm41/probe.log +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/reviews/rm41/probe.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/scripts/check_distribution.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/scripts/check_release.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/scripts/execute_notebook.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/scripts/render_for_reader_review.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_assessment_cache.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_assessment_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_declarations.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_inference_status.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_refusal.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_saved_version.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_summary/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_summary/_cells.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_summary/_data.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_summary/_learners.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_summary/_render.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_truncation_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/_warnings.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/data/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/data/_weight_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/data/causal_data.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/data/known_mechanism.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/data/treatment_covariates.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/data/validate.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/data/weighting.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/longitudinal.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/navigation.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/offers.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/pilot.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/population_impact.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/pricing.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/readmission.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/recovery.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/schedules.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/survival_point.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/synthetic.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/treatment_rules.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/datasets/weekly_orders.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/_ctmle_derivative.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/_mechanism_fit.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/_method_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/_oat_stack.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/_strata.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/_tuned_policies.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/composite.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/direct_effect.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/drtmle.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/iptw.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/estimators/reduced.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/exceptions.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/fluctuation/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/fluctuation/_score.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/fluctuation/iterative.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/fluctuation/mechanism.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/fluctuation/one_step.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/fluctuation/reduced.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/_sparse_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/_summaries.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/cluster.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/delta.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/multiplier.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/results.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/inference/sparse.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/_support_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/base.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/incremental.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/joint_density.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/policy.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/support.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/interventions/tuning.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/_ensemble_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/_fitting.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/_l1_logistic.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/crossfit.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/density.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/density_ratio.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/glm.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/library.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/learners/screeners.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/_gformula_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/_record_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/_structural_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/gformula.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/hazard.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/ipsi.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/learned.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/msm.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/ratio_trim.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/longitudinal/regimen.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/protocol.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/provenance.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/py.typed +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_derived.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_mechanism_stack.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_outcome_moments.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_parameters.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_positivity_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_second_order.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_simulated_confounding_fixed.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_simulated_confounding_incremental.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/sensitivity/_simulated_confounding_learned.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/targets/population_intervention.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/bounds.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/frames.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/memory.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/memos.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/parallel.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/phases.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/random.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/records.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/utils/text.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/__init__.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_band_placebo.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_failures.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_longitudinal_plasmode.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_longitudinal_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_markov_placebo.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_nuisance_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_point_generated.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_readings.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_refute_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_score_summary.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_seeds.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/_structural_refute.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/drtmle.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/outcome_processes.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/validation/score.py +0 -0
- {cleverly-0.2.0 → cleverly-0.2.1}/src/cleverly/variable_importance.py +0 -0
|
@@ -11,6 +11,13 @@ inputs:
|
|
|
11
11
|
description: Which optional-dependency group to install; "dev" for anything running pytest.
|
|
12
12
|
required: false
|
|
13
13
|
default: dev
|
|
14
|
+
resolution:
|
|
15
|
+
description: >-
|
|
16
|
+
"locked" installs the versions in `uv.lock`. "latest" resolves the newest releases the
|
|
17
|
+
`pyproject.toml` floors allow, so CI sees a new numpy, scipy or scikit-learn the day it
|
|
18
|
+
ships rather than at the next lock refresh.
|
|
19
|
+
required: false
|
|
20
|
+
default: locked
|
|
14
21
|
packages:
|
|
15
22
|
description: >-
|
|
16
23
|
Further requirements to install after the locked project, space-separated.
|
|
@@ -46,7 +53,17 @@ runs:
|
|
|
46
53
|
env:
|
|
47
54
|
PYTHON_VERSION: ${{ inputs.python-version }}
|
|
48
55
|
|
|
49
|
-
-
|
|
56
|
+
- if: ${{ inputs.resolution == 'locked' }}
|
|
57
|
+
run: uv sync --locked --extra "${EXTRA}"
|
|
58
|
+
shell: bash
|
|
59
|
+
env:
|
|
60
|
+
EXTRA: ${{ inputs.extra }}
|
|
61
|
+
|
|
62
|
+
# `--upgrade` re-resolves in the runner's checkout and leaves the committed lock alone.
|
|
63
|
+
- if: ${{ inputs.resolution == 'latest' }}
|
|
64
|
+
run: |
|
|
65
|
+
uv sync --upgrade --extra "${EXTRA}"
|
|
66
|
+
uv pip list
|
|
50
67
|
shell: bash
|
|
51
68
|
env:
|
|
52
69
|
EXTRA: ${{ inputs.extra }}
|
|
@@ -74,9 +74,17 @@ jobs:
|
|
|
74
74
|
- uses: actions/checkout@v4
|
|
75
75
|
# The matrix version is threaded through to `uv venv --python`; without that, every
|
|
76
76
|
# row of the matrix would install into `/usr`'s interpreter and exercise the same one.
|
|
77
|
+
#
|
|
78
|
+
# 3.11 and 3.12 install the locked versions. 3.13 installs the newest releases the
|
|
79
|
+
# floors allow (Eric, 2026-11-06: let library versions move, and pin only when a release
|
|
80
|
+
# breaks a method). A red here that the locked rows do not share is a new release
|
|
81
|
+
# changing behaviour: fix the code, or add an upper bound in `pyproject.toml` with the
|
|
82
|
+
# failure named beside it. It never runs `test_method_evidence.py`, so last-digit
|
|
83
|
+
# rounding in a published table cannot turn it red.
|
|
77
84
|
- uses: ./.github/actions/setup-env
|
|
78
85
|
with:
|
|
79
86
|
python-version: ${{ matrix.python-version }}
|
|
87
|
+
resolution: ${{ matrix.python-version == '3.13' && 'latest' || 'locked' }}
|
|
80
88
|
# `-n auto` resolves through psutil, else `os.cpu_count()` -- neither of which reads a
|
|
81
89
|
# container's CFS quota, so on a quota-limited runner it asks for the *host's* cores.
|
|
82
90
|
# `tests.parallel` goes through joblib/loky, which does read it.
|
|
@@ -117,16 +125,23 @@ jobs:
|
|
|
117
125
|
|
|
118
126
|
# The all-study property differential and its clause binding (RM39b2 rev 3 section 8). Every
|
|
119
127
|
# committed study's property rows are perturbed and summarized by the study's own code, and
|
|
120
|
-
# the declared failure-accounting rules must give the same verdicts.
|
|
121
|
-
#
|
|
122
|
-
#
|
|
123
|
-
#
|
|
124
|
-
#
|
|
125
|
-
#
|
|
126
|
-
#
|
|
128
|
+
# the declared failure-accounting rules must give the same verdicts. It runs here (the R3-2
|
|
129
|
+
# fallback) and never as a sample. On one four-core runner it reached 2 hours 8 minutes
|
|
130
|
+
# (about 30,700 CPU-seconds, 9,858 cases, November 2026), so it is split into four parts on
|
|
131
|
+
# four runners. `PROPERTY_DIFFERENTIAL_PART` selects a part, and `property_differential.parts`
|
|
132
|
+
# assigns each worker group to exactly one part, balanced by estimated work, so the four
|
|
133
|
+
# parts run every case between them. Each part has 90 minutes. The fast tier checks that the
|
|
134
|
+
# parametrization lists every committed study. The job always reports, so it can be a required
|
|
135
|
+
# check: on a pull request that touches none of the paths below its steps are skipped, and
|
|
136
|
+
# `property-differential-verdict` reports the parts as one check named `property-differential`.
|
|
127
137
|
property-differential:
|
|
138
|
+
name: property-differential (part ${{ matrix.part }} of 4)
|
|
128
139
|
runs-on: ubuntu-latest
|
|
129
|
-
timeout-minutes:
|
|
140
|
+
timeout-minutes: 90
|
|
141
|
+
strategy:
|
|
142
|
+
fail-fast: false
|
|
143
|
+
matrix:
|
|
144
|
+
part: [1, 2, 3, 4]
|
|
130
145
|
steps:
|
|
131
146
|
- uses: actions/checkout@v4
|
|
132
147
|
with:
|
|
@@ -155,8 +170,20 @@ jobs:
|
|
|
155
170
|
- name: Size the worker pool from the cores this job may actually use
|
|
156
171
|
if: steps.scope.outputs.run == 'true'
|
|
157
172
|
run: echo "PYTEST_XDIST_AUTO_NUM_WORKERS=$(python -m tests.parallel --workers)" >> "$GITHUB_ENV"
|
|
173
|
+
# `--durations` names the slowest cases, so a part that grows shows where.
|
|
158
174
|
- if: steps.scope.outputs.run == 'true'
|
|
159
|
-
|
|
175
|
+
env:
|
|
176
|
+
PROPERTY_DIFFERENTIAL_PART: ${{ matrix.part }}/${{ strategy.job-total }}
|
|
177
|
+
run: pytest -q -n auto --dist loadgroup --durations=20 tests/canonical/property_differential.py
|
|
178
|
+
# One check for branch protection: green only when every part of the differential succeeded.
|
|
179
|
+
property-differential-verdict:
|
|
180
|
+
name: property-differential
|
|
181
|
+
if: always()
|
|
182
|
+
needs: property-differential
|
|
183
|
+
runs-on: ubuntu-latest
|
|
184
|
+
steps:
|
|
185
|
+
- name: Every part of the differential passed
|
|
186
|
+
run: test "${{ needs.property-differential.result }}" = success
|
|
160
187
|
|
|
161
188
|
# One backend at a time, which the `tests` job above cannot check: it installs `.[dev]`,
|
|
162
189
|
# which pulls pandas *and* polars, so the single-backend and neither-installed branches of
|
|
@@ -63,6 +63,9 @@ objects, or `CausalStudy` objects, and not for the public API.
|
|
|
63
63
|
result-neutral edit in `tests/canonical/provenance-revisions.md` rather than rewriting a
|
|
64
64
|
recorded hash, which would leave the manifest describing bytes that never ran.
|
|
65
65
|
`docs/development/method-benchmarking.md` says how to tell the two kinds of change apart.
|
|
66
|
+
- Libraries are not pinned aggressively; versions float. A test must tolerate rounding changes
|
|
67
|
+
from library versions and fail only on a real change. Pin a version only when a release breaks
|
|
68
|
+
a method. `docs/development/contributing.md` states the policy.
|
|
66
69
|
- Ruff and mypy are pinned once in `pyproject.toml`'s `dev` extra, which resolves to
|
|
67
70
|
`cleverly[all]` plus tooling. For a new extra, follow
|
|
68
71
|
[Add an optional dependency](docs/development/contributing.md#add-an-optional-dependency).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: cleverly
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: A Python toolbox for causal studies based on targeted maximum likelihood estimation (TMLE).
|
|
5
5
|
Project-URL: Homepage, https://esbraun.github.io/cleverly-tmle/
|
|
6
6
|
Project-URL: Documentation, https://esbraun.github.io/cleverly-tmle/
|
|
@@ -31,32 +31,32 @@ Requires-Dist: matplotlib>=3.7; extra == 'all'
|
|
|
31
31
|
Requires-Dist: pandas>=1.5; extra == 'all'
|
|
32
32
|
Requires-Dist: polars>=0.20; extra == 'all'
|
|
33
33
|
Provides-Extra: dev
|
|
34
|
-
Requires-Dist: build
|
|
34
|
+
Requires-Dist: build>=1.2; extra == 'dev'
|
|
35
35
|
Requires-Dist: ipykernel>=6.29; extra == 'dev'
|
|
36
36
|
Requires-Dist: matplotlib>=3.7; extra == 'dev'
|
|
37
37
|
Requires-Dist: mypy==1.19.1; extra == 'dev'
|
|
38
|
-
Requires-Dist: nbclient
|
|
39
|
-
Requires-Dist: nbformat
|
|
38
|
+
Requires-Dist: nbclient>=0.10; extra == 'dev'
|
|
39
|
+
Requires-Dist: nbformat>=5.10; extra == 'dev'
|
|
40
40
|
Requires-Dist: nox>=2024.3; extra == 'dev'
|
|
41
|
-
Requires-Dist: numpydoc
|
|
41
|
+
Requires-Dist: numpydoc>=1.10; extra == 'dev'
|
|
42
42
|
Requires-Dist: pandas>=1.5; extra == 'dev'
|
|
43
43
|
Requires-Dist: polars>=0.20; extra == 'dev'
|
|
44
44
|
Requires-Dist: pyarrow>=15; extra == 'dev'
|
|
45
45
|
Requires-Dist: pytest-xdist>=3.5; extra == 'dev'
|
|
46
46
|
Requires-Dist: pytest>=7.4; extra == 'dev'
|
|
47
47
|
Requires-Dist: ruff==0.16.1; extra == 'dev'
|
|
48
|
-
Requires-Dist: twine
|
|
48
|
+
Requires-Dist: twine>=7; extra == 'dev'
|
|
49
49
|
Provides-Extra: docs
|
|
50
50
|
Requires-Dist: matplotlib>=3.7; extra == 'docs'
|
|
51
|
-
Requires-Dist: myst-nb
|
|
52
|
-
Requires-Dist: myst-parser
|
|
53
|
-
Requires-Dist: numpydoc
|
|
51
|
+
Requires-Dist: myst-nb>=1.2; extra == 'docs'
|
|
52
|
+
Requires-Dist: myst-parser>=4.0; extra == 'docs'
|
|
53
|
+
Requires-Dist: numpydoc>=1.10; extra == 'docs'
|
|
54
54
|
Requires-Dist: pandas>=1.5; extra == 'docs'
|
|
55
55
|
Requires-Dist: polars>=0.20; extra == 'docs'
|
|
56
|
-
Requires-Dist: pydata-sphinx-theme
|
|
57
|
-
Requires-Dist: sphinx-copybutton
|
|
58
|
-
Requires-Dist: sphinx-design
|
|
59
|
-
Requires-Dist: sphinx
|
|
56
|
+
Requires-Dist: pydata-sphinx-theme>=0.16; extra == 'docs'
|
|
57
|
+
Requires-Dist: sphinx-copybutton>=0.5; extra == 'docs'
|
|
58
|
+
Requires-Dist: sphinx-design>=0.6; extra == 'docs'
|
|
59
|
+
Requires-Dist: sphinx>=8.1; extra == 'docs'
|
|
60
60
|
Provides-Extra: pandas
|
|
61
61
|
Requires-Dist: pandas>=1.5; extra == 'pandas'
|
|
62
62
|
Provides-Extra: plot
|
|
@@ -65,6 +65,8 @@ Provides-Extra: polars
|
|
|
65
65
|
Requires-Dist: polars>=0.20; extra == 'polars'
|
|
66
66
|
Description-Content-Type: text/markdown
|
|
67
67
|
|
|
68
|
+
<p align="center"><em>It is named for TMLE's clever covariate. Even the jokes in this toolbox are targeted.</em></p>
|
|
69
|
+
|
|
68
70
|
# cleverly
|
|
69
71
|
|
|
70
72
|
[](https://pypi.org/project/cleverly/)
|
|
@@ -72,82 +74,51 @@ Description-Content-Type: text/markdown
|
|
|
72
74
|
[](https://github.com/esbraun/cleverly-tmle/actions/workflows/ci.yml)
|
|
73
75
|
[](https://github.com/esbraun/cleverly-tmle/blob/main/LICENSE)
|
|
74
76
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
data where nobody assigned it at random. It answers questions such as "did the program lower
|
|
81
|
-
readmissions?", "what would sales be if every customer got the discount?", or "which patients
|
|
82
|
-
should get the offer?", and it reports each answer with a confidence interval.
|
|
83
|
-
|
|
84
|
-
In such data, a plain comparison of treated and untreated people mixes the treatment's effect with
|
|
85
|
-
differences in who got it. Those differences come from confounders: variables, such as age or
|
|
86
|
-
prior risk, that affect both who gets the treatment and the outcome. `cleverly` adjusts for the
|
|
87
|
-
confounders you recorded. Before it fits anything, it writes down what must be true for the
|
|
88
|
-
answer to count as a causal effect, such as "no important confounder is missing". After the fit,
|
|
89
|
-
it checks the models and asks how strong a missing confounder would have to be to change the
|
|
90
|
-
answer.
|
|
77
|
+
`cleverly` estimates what a treatment, an offer, or a policy did, from data where nobody assigned
|
|
78
|
+
it at random, with a confidence interval for each answer. It adjusts for the confounders you
|
|
79
|
+
recorded, mostly with targeted maximum likelihood estimation (TMLE). Afterward it checks how
|
|
80
|
+
strong a missing confounder would have to be to change the result. Read the **[documentation](https://esbraun.github.io/cleverly-tmle/)**, or start with a
|
|
81
|
+
[complete analysis](https://esbraun.github.io/cleverly-tmle/examples/point-treatment-tmle.html).
|
|
91
82
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
model, which predicts who got the treatment. When the outcome model is imperfect, its estimate of
|
|
95
|
-
the effect is biased. A correction step uses the treatment model to remove that bias. Either model
|
|
96
|
-
can be any scikit-learn-compatible estimator, including gradient boosting or a stack of several
|
|
97
|
-
models.
|
|
98
|
-
|
|
99
|
-
*The name comes from TMLE's "clever covariate", the variable that drives that correction step.
|
|
100
|
-
Even the jokes in this library are targeted.*
|
|
101
|
-
|
|
102
|
-
> **Versions:** releases use `0.2.N` versions, and the public API can still change between them,
|
|
103
|
-
> so pin a version for reproducible work.
|
|
83
|
+
> Releases use `0.2.N` versions, and the public API can still change between them. Pin a version
|
|
84
|
+
> for reproducible work.
|
|
104
85
|
|
|
105
86
|
## Key features
|
|
106
87
|
|
|
107
|
-
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
- Out-of-fold model fitting
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
- Checks after the fit: an overlap check of whether similar people received each option, attempts
|
|
119
|
-
to break the result (for example, shuffling the treatment, so the estimate should be about
|
|
120
|
-
zero), and sensitivity analyses for a missing confounder.
|
|
88
|
+
- One-time treatments: average effects for everyone, the treated, or the untreated, as a
|
|
89
|
+
difference, risk ratio, or odds ratio, with missing outcomes and treatments handled.
|
|
90
|
+
- Effects that vary with baseline columns such as age: declared curves with intervals, or a
|
|
91
|
+
flexible curve (the EP learner) without them.
|
|
92
|
+
- Policies: treating by a rule, following a learned rule, raising the chance of treatment, or
|
|
93
|
+
shifting a dose.
|
|
94
|
+
- Treatments over time, including time until an event with competing events such as death.
|
|
95
|
+
- Out-of-fold model fitting for flexible machine-learning models, with sampling weights and
|
|
96
|
+
clustered data.
|
|
97
|
+
- Checks after the fit: overlap, attempts to break the result, and sensitivity to a missing
|
|
98
|
+
confounder.
|
|
121
99
|
- Refusals instead of approximations: a request the library cannot answer correctly fails before
|
|
122
100
|
any model is fit, and the error says why.
|
|
123
|
-
- Other estimators
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
- pandas, polars, Arrow-backed pandas, and `pyarrow.Table` inputs, through
|
|
101
|
+
- Other estimators for comparison or special cases, such as collaborative TMLE and the parametric
|
|
102
|
+
g-formula.
|
|
103
|
+
- pandas, polars, and `pyarrow.Table` inputs, through
|
|
127
104
|
[narwhals](https://narwhals-dev.github.io/narwhals/).
|
|
128
105
|
|
|
129
106
|
The [technical reference](https://esbraun.github.io/cleverly-tmle/technical-reference/) lists every
|
|
130
|
-
method
|
|
107
|
+
method with its source papers and evidence.
|
|
131
108
|
|
|
132
109
|
## Install
|
|
133
110
|
|
|
134
111
|
```bash
|
|
135
|
-
python -m pip install cleverly
|
|
112
|
+
python -m pip install cleverly # Python 3.11 or newer
|
|
113
|
+
python -m pip install "cleverly[all]" # adds pandas, polars, and plotting
|
|
136
114
|
```
|
|
137
115
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
python -m pip install "cleverly[all]"
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
Other scikit-learn-compatible models, such as XGBoost or LightGBM, work once you install them
|
|
145
|
-
yourself. The [installation guide](https://esbraun.github.io/cleverly-tmle/getting-started/installation.html)
|
|
146
|
-
covers development installs and version pinning.
|
|
116
|
+
The [installation guide](https://esbraun.github.io/cleverly-tmle/getting-started/installation.html)
|
|
117
|
+
covers other learners, development installs, and version pinning.
|
|
147
118
|
|
|
148
119
|
## Quick start
|
|
149
120
|
|
|
150
|
-
|
|
121
|
+
Simulated data with a true average effect of 1.5:
|
|
151
122
|
|
|
152
123
|
```python
|
|
153
124
|
import numpy as np
|
|
@@ -188,8 +159,7 @@ print(result["ate"].ci, "population ATE:", truth["ate"])
|
|
|
188
159
|
print(result.assess().summary())
|
|
189
160
|
```
|
|
190
161
|
|
|
191
|
-
The estimate
|
|
192
|
-
to 1.603, which contains the true 1.5:
|
|
162
|
+
The estimate is 1.513 with a 95% interval from 1.422 to 1.603, which contains the truth:
|
|
193
163
|
|
|
194
164
|
```text
|
|
195
165
|
Effect estimate (TMLE)
|
|
@@ -207,35 +177,25 @@ ate 1.513 0.046 [1.422, 1.603] <0.0001
|
|
|
207
177
|
==============================================================================
|
|
208
178
|
```
|
|
209
179
|
|
|
210
|
-
The
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
the overlap condition holds.
|
|
224
|
-
|
|
225
|
-
The final assessment reports that no check needs attention. Its E-value says that a missing
|
|
226
|
-
confounder would need a risk ratio of 3.52 with both the treatment and the outcome, beyond the
|
|
227
|
-
recorded confounders, to explain the effect away. The larger that number, the stronger a hidden
|
|
228
|
-
confounder must be to overturn the answer.
|
|
229
|
-
|
|
230
|
-
To choose a different estimator, call `effect.available_methods()`, which lists the methods that
|
|
231
|
-
can answer the question and says why the others cannot. The
|
|
180
|
+
The question summary lists the conditions the answer rests on: a well-defined treatment, no
|
|
181
|
+
interference between people, no missing confounder, and overlap (every kind of person had some
|
|
182
|
+
chance of each treatment). The data cannot confirm the first three.
|
|
183
|
+
|
|
184
|
+
The two models here match how the data were simulated, so `cross_fit=False` is safe. On your own
|
|
185
|
+
data, use flexible models and keep the default out-of-fold fitting; a continuous outcome then needs
|
|
186
|
+
`Targeting(q_bounds=(lower, upper))`. The
|
|
187
|
+
[full quickstart](https://esbraun.github.io/cleverly-tmle/getting-started/quickstart.html)
|
|
188
|
+
explains the settings. The assessment's E-value of 3.52 means a missing confounder would need a
|
|
189
|
+
risk ratio of 3.52 with both treatment and outcome to explain the effect away.
|
|
190
|
+
|
|
191
|
+
`effect.available_methods()` lists the estimators that can answer the question and why the others
|
|
192
|
+
cannot; the
|
|
232
193
|
[methods and learners guide](https://esbraun.github.io/cleverly-tmle/user-guide/methods-learners.html)
|
|
233
|
-
shows how to configure
|
|
194
|
+
shows how to configure them.
|
|
234
195
|
|
|
235
196
|
## Examples
|
|
236
197
|
|
|
237
|
-
Each example
|
|
238
|
-
which uses real birth records.
|
|
198
|
+
Each example uses simulated data with a known answer, except the last (real birth records).
|
|
239
199
|
|
|
240
200
|
- [One treatment, one outcome](https://esbraun.github.io/cleverly-tmle/examples/point-treatment-tmle.html):
|
|
241
201
|
why a simple treated-versus-untreated comparison misleads, and what happens when a model is wrong.
|
|
@@ -253,22 +213,18 @@ which uses real birth records.
|
|
|
253
213
|
- [Smoking and twins' birth weight](https://esbraun.github.io/cleverly-tmle/examples/twins-causal-inference.html):
|
|
254
214
|
a full analysis of real records, where no true answer is known.
|
|
255
215
|
|
|
256
|
-
The [examples index](https://esbraun.github.io/cleverly-tmle/examples/)
|
|
257
|
-
the problem each one solves.
|
|
216
|
+
The [examples index](https://esbraun.github.io/cleverly-tmle/examples/) lists them all.
|
|
258
217
|
|
|
259
218
|
## How cleverly is tested
|
|
260
219
|
|
|
261
|
-
More than 100 registered simulation studies check the shipped methods on data
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
Many methods have no such package, and their studies rely on the known truth and on the behavior
|
|
267
|
-
the method's theory predicts. For a few methods the comparison with another package has not run
|
|
268
|
-
yet, and their pages say so. `cleverly` marks a result experimental when no study covers its
|
|
220
|
+
More than 100 registered simulation studies check the shipped methods on data with a known answer:
|
|
221
|
+
whether estimates center on the truth and 95% intervals cover it as often as they should. Where
|
|
222
|
+
an established package computes the same quantity (R `tmle`, `tmle3`, `ltmle`, `lmtp`, `drtmle`,
|
|
223
|
+
`ctmle`, `survtmle`; Python zEpid and EconML), the study compares answers too. Some comparisons
|
|
224
|
+
have not run yet, and those pages say so. A result is marked experimental when no study covers its
|
|
269
225
|
setup. The
|
|
270
226
|
[validation grid](https://esbraun.github.io/cleverly-tmle/technical-reference/method-evidence/validation-grid.html)
|
|
271
|
-
lists every study
|
|
227
|
+
lists every study.
|
|
272
228
|
|
|
273
229
|
## Documentation
|
|
274
230
|
|
|
@@ -286,22 +242,19 @@ lists every study and its results.
|
|
|
286
242
|
|
|
287
243
|
## Contributing
|
|
288
244
|
|
|
289
|
-
|
|
290
|
-
[issue tracker](https://github.com/esbraun/cleverly-tmle/issues).
|
|
291
|
-
[CONTRIBUTING.md](https://github.com/esbraun/cleverly-tmle/blob/main/CONTRIBUTING.md)
|
|
292
|
-
|
|
245
|
+
Report bugs and questions on the
|
|
246
|
+
[issue tracker](https://github.com/esbraun/cleverly-tmle/issues). See
|
|
247
|
+
[CONTRIBUTING.md](https://github.com/esbraun/cleverly-tmle/blob/main/CONTRIBUTING.md) for setup,
|
|
248
|
+
checks, and commit style.
|
|
293
249
|
|
|
294
250
|
## Citing
|
|
295
251
|
|
|
296
|
-
There is no DOI yet. Cite the version or
|
|
297
|
-
|
|
298
|
-
[references page](https://esbraun.github.io/cleverly-tmle/references.html) list.
|
|
252
|
+
There is no DOI yet. Cite the version or commit you used and the method papers listed in the
|
|
253
|
+
[technical reference](https://esbraun.github.io/cleverly-tmle/technical-reference/).
|
|
299
254
|
|
|
300
255
|
## License
|
|
301
256
|
|
|
302
|
-
|
|
303
|
-
[
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
because they call reference R packages in the same process and one of those packages is AGPL-3.
|
|
307
|
-
No published distribution includes them, so an installed copy of `cleverly` is MIT alone.
|
|
257
|
+
MIT. The R comparison runners under `tests/canonical/` are
|
|
258
|
+
[GPL-3.0](https://github.com/esbraun/cleverly-tmle/blob/main/tests/canonical/LICENSE) because they
|
|
259
|
+
call AGPL-3 R packages in-process; they are not distributed, so an installed `cleverly` is MIT
|
|
260
|
+
alone.
|
cleverly-0.2.1/README.md
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
<p align="center"><em>It is named for TMLE's clever covariate. Even the jokes in this toolbox are targeted.</em></p>
|
|
2
|
+
|
|
3
|
+
# cleverly
|
|
4
|
+
|
|
5
|
+
[](https://pypi.org/project/cleverly/)
|
|
6
|
+
[](https://www.python.org/)
|
|
7
|
+
[](https://github.com/esbraun/cleverly-tmle/actions/workflows/ci.yml)
|
|
8
|
+
[](https://github.com/esbraun/cleverly-tmle/blob/main/LICENSE)
|
|
9
|
+
|
|
10
|
+
`cleverly` estimates what a treatment, an offer, or a policy did, from data where nobody assigned
|
|
11
|
+
it at random, with a confidence interval for each answer. It adjusts for the confounders you
|
|
12
|
+
recorded, mostly with targeted maximum likelihood estimation (TMLE). Afterward it checks how
|
|
13
|
+
strong a missing confounder would have to be to change the result. Read the **[documentation](https://esbraun.github.io/cleverly-tmle/)**, or start with a
|
|
14
|
+
[complete analysis](https://esbraun.github.io/cleverly-tmle/examples/point-treatment-tmle.html).
|
|
15
|
+
|
|
16
|
+
> Releases use `0.2.N` versions, and the public API can still change between them. Pin a version
|
|
17
|
+
> for reproducible work.
|
|
18
|
+
|
|
19
|
+
## Key features
|
|
20
|
+
|
|
21
|
+
- One-time treatments: average effects for everyone, the treated, or the untreated, as a
|
|
22
|
+
difference, risk ratio, or odds ratio, with missing outcomes and treatments handled.
|
|
23
|
+
- Effects that vary with baseline columns such as age: declared curves with intervals, or a
|
|
24
|
+
flexible curve (the EP learner) without them.
|
|
25
|
+
- Policies: treating by a rule, following a learned rule, raising the chance of treatment, or
|
|
26
|
+
shifting a dose.
|
|
27
|
+
- Treatments over time, including time until an event with competing events such as death.
|
|
28
|
+
- Out-of-fold model fitting for flexible machine-learning models, with sampling weights and
|
|
29
|
+
clustered data.
|
|
30
|
+
- Checks after the fit: overlap, attempts to break the result, and sensitivity to a missing
|
|
31
|
+
confounder.
|
|
32
|
+
- Refusals instead of approximations: a request the library cannot answer correctly fails before
|
|
33
|
+
any model is fit, and the error says why.
|
|
34
|
+
- Other estimators for comparison or special cases, such as collaborative TMLE and the parametric
|
|
35
|
+
g-formula.
|
|
36
|
+
- pandas, polars, and `pyarrow.Table` inputs, through
|
|
37
|
+
[narwhals](https://narwhals-dev.github.io/narwhals/).
|
|
38
|
+
|
|
39
|
+
The [technical reference](https://esbraun.github.io/cleverly-tmle/technical-reference/) lists every
|
|
40
|
+
method with its source papers and evidence.
|
|
41
|
+
|
|
42
|
+
## Install
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
python -m pip install cleverly # Python 3.11 or newer
|
|
46
|
+
python -m pip install "cleverly[all]" # adds pandas, polars, and plotting
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The [installation guide](https://esbraun.github.io/cleverly-tmle/getting-started/installation.html)
|
|
50
|
+
covers other learners, development installs, and version pinning.
|
|
51
|
+
|
|
52
|
+
## Quick start
|
|
53
|
+
|
|
54
|
+
Simulated data with a true average effect of 1.5:
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
import numpy as np
|
|
58
|
+
from sklearn.linear_model import LinearRegression, LogisticRegression
|
|
59
|
+
from cleverly import ATE, CausalStudy, PointTreatment
|
|
60
|
+
from cleverly.datasets import make_linear_ate
|
|
61
|
+
|
|
62
|
+
frame, truth = make_linear_ate(n=2_000, seed=7)
|
|
63
|
+
|
|
64
|
+
# 1. Describe the data: the outcome, the treatment, and the confounders to adjust for.
|
|
65
|
+
study = CausalStudy(
|
|
66
|
+
frame,
|
|
67
|
+
design=PointTreatment(
|
|
68
|
+
outcome="Y",
|
|
69
|
+
treatment="A",
|
|
70
|
+
adjustment=("W1", "W2", "W3", "W4"),
|
|
71
|
+
),
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
# 2. Name the question: the average effect of A = 1 compared with A = 0 (ATE).
|
|
75
|
+
# The summary lists the conditions the answer rests on and the methods that can fit it.
|
|
76
|
+
effect = study.identify(ATE(reference=0))
|
|
77
|
+
print(effect.summary())
|
|
78
|
+
|
|
79
|
+
# 3. Fit the outcome model and the treatment model, then apply the correction step.
|
|
80
|
+
result = effect.estimate(
|
|
81
|
+
outcome_learner=LinearRegression(),
|
|
82
|
+
# An unpenalized logistic regression, which matches how the data were simulated.
|
|
83
|
+
treatment_learner=LogisticRegression(C=np.inf, max_iter=1000),
|
|
84
|
+
cross_fit=False,
|
|
85
|
+
random_state=7,
|
|
86
|
+
)
|
|
87
|
+
print(result.summary())
|
|
88
|
+
# The truth is known only because the data are simulated.
|
|
89
|
+
print(result["ate"].ci, "population ATE:", truth["ate"])
|
|
90
|
+
|
|
91
|
+
# 4. Check the fit and how sensitive the answer is to a missing confounder.
|
|
92
|
+
print(result.assess().summary())
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The estimate is 1.513 with a 95% interval from 1.422 to 1.603, which contains the truth:
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
Effect estimate (TMLE)
|
|
99
|
+
==============================================================================
|
|
100
|
+
Question: average effect of A on Rows: 2,000
|
|
101
|
+
Y (1 compared with 0) Treated share: 0.506
|
|
102
|
+
Outcome: Y (continuous) Out-of-fold predictions: no
|
|
103
|
+
Adjusted for: W1, W2, W3, W4 Outcome model: linear regression
|
|
104
|
+
Method: targeted maximum Treatment model: logistic regression
|
|
105
|
+
likelihood (TMLE) Probability limits: [0.01471, 0.9853]
|
|
106
|
+
==============================================================================
|
|
107
|
+
estimate std. error 95% CI p-value
|
|
108
|
+
------------------------------------------------------------------------------
|
|
109
|
+
ate 1.513 0.046 [1.422, 1.603] <0.0001
|
|
110
|
+
==============================================================================
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The question summary lists the conditions the answer rests on: a well-defined treatment, no
|
|
114
|
+
interference between people, no missing confounder, and overlap (every kind of person had some
|
|
115
|
+
chance of each treatment). The data cannot confirm the first three.
|
|
116
|
+
|
|
117
|
+
The two models here match how the data were simulated, so `cross_fit=False` is safe. On your own
|
|
118
|
+
data, use flexible models and keep the default out-of-fold fitting; a continuous outcome then needs
|
|
119
|
+
`Targeting(q_bounds=(lower, upper))`. The
|
|
120
|
+
[full quickstart](https://esbraun.github.io/cleverly-tmle/getting-started/quickstart.html)
|
|
121
|
+
explains the settings. The assessment's E-value of 3.52 means a missing confounder would need a
|
|
122
|
+
risk ratio of 3.52 with both treatment and outcome to explain the effect away.
|
|
123
|
+
|
|
124
|
+
`effect.available_methods()` lists the estimators that can answer the question and why the others
|
|
125
|
+
cannot; the
|
|
126
|
+
[methods and learners guide](https://esbraun.github.io/cleverly-tmle/user-guide/methods-learners.html)
|
|
127
|
+
shows how to configure them.
|
|
128
|
+
|
|
129
|
+
## Examples
|
|
130
|
+
|
|
131
|
+
Each example uses simulated data with a known answer, except the last (real birth records).
|
|
132
|
+
|
|
133
|
+
- [One treatment, one outcome](https://esbraun.github.io/cleverly-tmle/examples/point-treatment-tmle.html):
|
|
134
|
+
why a simple treated-versus-untreated comparison misleads, and what happens when a model is wrong.
|
|
135
|
+
- [Flexible models and shared teams](https://esbraun.github.io/cleverly-tmle/examples/cross-fitting.html):
|
|
136
|
+
gradient boosting, out-of-fold predictions, and patients whose results move together.
|
|
137
|
+
- [Three offer policies](https://esbraun.github.io/cleverly-tmle/examples/interventions.html):
|
|
138
|
+
offering a program only to high-risk patients, raising each patient's chance of an offer, or
|
|
139
|
+
raising how much each patient gets.
|
|
140
|
+
- [Who should get the offer](https://esbraun.github.io/cleverly-tmle/examples/treatment-rules.html):
|
|
141
|
+
learning a treatment rule and scoring it on patients it was not learned from.
|
|
142
|
+
- [Readmission when death can come first](https://esbraun.github.io/cleverly-tmle/examples/longitudinal-survival.html):
|
|
143
|
+
time until an event, with a competing event and dropout.
|
|
144
|
+
- [Weekly offer policies](https://esbraun.github.io/cleverly-tmle/examples/sequential-offers.html):
|
|
145
|
+
a treatment repeated every week, where earlier offers change later behavior.
|
|
146
|
+
- [Smoking and twins' birth weight](https://esbraun.github.io/cleverly-tmle/examples/twins-causal-inference.html):
|
|
147
|
+
a full analysis of real records, where no true answer is known.
|
|
148
|
+
|
|
149
|
+
The [examples index](https://esbraun.github.io/cleverly-tmle/examples/) lists them all.
|
|
150
|
+
|
|
151
|
+
## How cleverly is tested
|
|
152
|
+
|
|
153
|
+
More than 100 registered simulation studies check the shipped methods on data with a known answer:
|
|
154
|
+
whether estimates center on the truth and 95% intervals cover it as often as they should. Where
|
|
155
|
+
an established package computes the same quantity (R `tmle`, `tmle3`, `ltmle`, `lmtp`, `drtmle`,
|
|
156
|
+
`ctmle`, `survtmle`; Python zEpid and EconML), the study compares answers too. Some comparisons
|
|
157
|
+
have not run yet, and those pages say so. A result is marked experimental when no study covers its
|
|
158
|
+
setup. The
|
|
159
|
+
[validation grid](https://esbraun.github.io/cleverly-tmle/technical-reference/method-evidence/validation-grid.html)
|
|
160
|
+
lists every study.
|
|
161
|
+
|
|
162
|
+
## Documentation
|
|
163
|
+
|
|
164
|
+
- [Getting started](https://esbraun.github.io/cleverly-tmle/getting-started/): install, a first
|
|
165
|
+
fit, and how to read a result.
|
|
166
|
+
- [Workflow](https://esbraun.github.io/cleverly-tmle/workflow.html): one analysis from the
|
|
167
|
+
question to the report.
|
|
168
|
+
- [User guide](https://esbraun.github.io/cleverly-tmle/user-guide/): data, questions, models,
|
|
169
|
+
methods, treatments over time, results, and refusals.
|
|
170
|
+
- [Examples](https://esbraun.github.io/cleverly-tmle/examples/): complete analyses to adapt.
|
|
171
|
+
- [Technical reference](https://esbraun.github.io/cleverly-tmle/technical-reference/): for
|
|
172
|
+
statisticians, the exact quantities, conditions, papers, and evidence behind each method.
|
|
173
|
+
- [Python API](https://esbraun.github.io/cleverly-tmle/api/): every public object and its
|
|
174
|
+
signature.
|
|
175
|
+
|
|
176
|
+
## Contributing
|
|
177
|
+
|
|
178
|
+
Report bugs and questions on the
|
|
179
|
+
[issue tracker](https://github.com/esbraun/cleverly-tmle/issues). See
|
|
180
|
+
[CONTRIBUTING.md](https://github.com/esbraun/cleverly-tmle/blob/main/CONTRIBUTING.md) for setup,
|
|
181
|
+
checks, and commit style.
|
|
182
|
+
|
|
183
|
+
## Citing
|
|
184
|
+
|
|
185
|
+
There is no DOI yet. Cite the version or commit you used and the method papers listed in the
|
|
186
|
+
[technical reference](https://esbraun.github.io/cleverly-tmle/technical-reference/).
|
|
187
|
+
|
|
188
|
+
## License
|
|
189
|
+
|
|
190
|
+
MIT. The R comparison runners under `tests/canonical/` are
|
|
191
|
+
[GPL-3.0](https://github.com/esbraun/cleverly-tmle/blob/main/tests/canonical/LICENSE) because they
|
|
192
|
+
call AGPL-3 R packages in-process; they are not distributed, so an installed `cleverly` is MIT
|
|
193
|
+
alone.
|