formative-ds 2.2.4__tar.gz → 2.2.5__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.
Files changed (298) hide show
  1. {formative_ds-2.2.4 → formative_ds-2.2.5}/PKG-INFO +1 -1
  2. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/_base.py +25 -0
  3. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/iv.py +2 -9
  4. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/matching.py +3 -20
  5. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/ols.py +3 -21
  6. {formative_ds-2.2.4 → formative_ds-2.2.5}/pyproject.toml +2 -2
  7. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/documentation_options.js +1 -1
  8. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/causal/benchmarks.html +2 -2
  9. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/causal/dag.html +2 -2
  10. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/causal/decisions.html +2 -2
  11. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/causal/estimands.html +2 -2
  12. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/causal/estimators.html +2 -2
  13. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/causal/introduction.html +2 -2
  14. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/causal/motivation.html +2 -2
  15. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/causal/refutations.html +2 -2
  16. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/causal/wizard.html +2 -2
  17. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/game/decision_rules.html +2 -2
  18. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/game/introduction.html +2 -2
  19. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/game/single_player.html +2 -2
  20. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/genindex.html +2 -2
  21. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/index.html +2 -2
  22. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/search.html +2 -2
  23. {formative_ds-2.2.4 → formative_ds-2.2.5}/uv.lock +1 -1
  24. {formative_ds-2.2.4 → formative_ds-2.2.5}/.gitattributes +0 -0
  25. {formative_ds-2.2.4 → formative_ds-2.2.5}/.github/workflows/ci.yml +0 -0
  26. {formative_ds-2.2.4 → formative_ds-2.2.5}/.github/workflows/publish.yml +0 -0
  27. {formative_ds-2.2.4 → formative_ds-2.2.5}/.gitignore +0 -0
  28. {formative_ds-2.2.4 → formative_ds-2.2.5}/CLAUDE.md +0 -0
  29. {formative_ds-2.2.4 → formative_ds-2.2.5}/LICENSE +0 -0
  30. {formative_ds-2.2.4 → formative_ds-2.2.5}/Makefile +0 -0
  31. {formative_ds-2.2.4 → formative_ds-2.2.5}/README.md +0 -0
  32. {formative_ds-2.2.4 → formative_ds-2.2.5}/TODO.md +0 -0
  33. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/_static/version_switcher.css +0 -0
  34. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/_static/version_switcher.js +0 -0
  35. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/causal/benchmarks.rst +0 -0
  36. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/causal/dag.rst +0 -0
  37. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/causal/decisions.rst +0 -0
  38. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/causal/estimands.rst +0 -0
  39. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/causal/estimators.rst +0 -0
  40. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/causal/introduction.rst +0 -0
  41. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/causal/motivation.rst +0 -0
  42. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/causal/refutations.rst +0 -0
  43. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/causal/wizard.rst +0 -0
  44. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/conf.py +0 -0
  45. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/design/policy_learning.md +0 -0
  46. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/game/decision_rules.rst +0 -0
  47. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/game/introduction.rst +0 -0
  48. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/game/single_player.rst +0 -0
  49. {formative_ds-2.2.4 → formative_ds-2.2.5}/docs/index.rst +0 -0
  50. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/decision/01_decision_basic.py +0 -0
  51. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/did/01_did_basic.py +0 -0
  52. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/iv/01_iv_basic.py +0 -0
  53. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/iv/02_iv_vs_ols_bias.py +0 -0
  54. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/iv/03_iv_with_observed_confounder.py +0 -0
  55. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/iv/04_iv_refutation.py +0 -0
  56. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/matching/01_basic_matching.py +0 -0
  57. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/matching/02_matching_vs_naive.py +0 -0
  58. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/matching/03_matching_refutation.py +0 -0
  59. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/ols/01_ols_basic.py +0 -0
  60. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/ols/02_ols_unobserved_confounder.py +0 -0
  61. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/ols/03_ols_multiple_confounders.py +0 -0
  62. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/rct/01_rct_basic.py +0 -0
  63. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/rdd/01_rdd_basic.py +0 -0
  64. {formative_ds-2.2.4 → formative_ds-2.2.5}/examples/rdd/02_rdd_positive_running_var.py +0 -0
  65. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/__init__.py +0 -0
  66. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/__init__.py +0 -0
  67. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/_assumptions.py +0 -0
  68. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/_exceptions.py +0 -0
  69. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/_explain.py +0 -0
  70. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/dag.py +0 -0
  71. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/decision.py +0 -0
  72. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/__init__.py +0 -0
  73. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/_cate.py +0 -0
  74. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/did.py +0 -0
  75. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/policy.py +0 -0
  76. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/rct.py +0 -0
  77. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/estimators/rdd.py +0 -0
  78. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/__init__.py +0 -0
  79. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/_check.py +0 -0
  80. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/cate.py +0 -0
  81. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/did.py +0 -0
  82. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/iv.py +0 -0
  83. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/matching.py +0 -0
  84. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/ols.py +0 -0
  85. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/policy.py +0 -0
  86. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/rct.py +0 -0
  87. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/causal/refutations/rdd.py +0 -0
  88. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/game/__init__.py +0 -0
  89. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/game/expected_value.py +0 -0
  90. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/game/hurwicz.py +0 -0
  91. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/game/laplace.py +0 -0
  92. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/game/maximax.py +0 -0
  93. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/game/maximin.py +0 -0
  94. {formative_ds-2.2.4 → formative_ds-2.2.5}/formative/game/minimax.py +0 -0
  95. {formative_ds-2.2.4 → formative_ds-2.2.5}/notebooks/card_krueger_benchmark.ipynb +0 -0
  96. {formative_ds-2.2.4 → formative_ds-2.2.5}/notebooks/lalonde_benchmark.ipynb +0 -0
  97. {formative_ds-2.2.4 → formative_ds-2.2.5}/scripts/snapshot_docs.py +0 -0
  98. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/causal/benchmarks.rst.txt +0 -0
  99. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/causal/dag.rst.txt +0 -0
  100. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/causal/decisions.rst.txt +0 -0
  101. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/causal/estimands.rst.txt +0 -0
  102. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/causal/estimators.rst.txt +0 -0
  103. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/causal/introduction.rst.txt +0 -0
  104. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/causal/motivation.rst.txt +0 -0
  105. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/causal/refutations.rst.txt +0 -0
  106. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/causal/wizard.rst.txt +0 -0
  107. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/game/decision_rules.rst.txt +0 -0
  108. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/game/introduction.rst.txt +0 -0
  109. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/game/single_player.rst.txt +0 -0
  110. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_sources/index.rst.txt +0 -0
  111. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  112. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/base-stemmer.js +0 -0
  113. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/basic.css +0 -0
  114. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/check-solid.svg +0 -0
  115. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/clipboard.min.js +0 -0
  116. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/copy-button.svg +0 -0
  117. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/copybutton.css +0 -0
  118. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/copybutton.js +0 -0
  119. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/copybutton_funcs.js +0 -0
  120. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/badge_only.css +0 -0
  121. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  122. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  123. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  124. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  125. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/fontawesome-webfont.eot +0 -0
  126. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/fontawesome-webfont.svg +0 -0
  127. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  128. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/fontawesome-webfont.woff +0 -0
  129. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  130. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/lato-bold-italic.woff +0 -0
  131. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  132. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/lato-bold.woff +0 -0
  133. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/lato-bold.woff2 +0 -0
  134. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/lato-normal-italic.woff +0 -0
  135. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  136. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/lato-normal.woff +0 -0
  137. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/fonts/lato-normal.woff2 +0 -0
  138. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/css/theme.css +0 -0
  139. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/doctools.js +0 -0
  140. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/documentation_options.js +0 -0
  141. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/english-stemmer.js +0 -0
  142. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/file.png +0 -0
  143. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-bold.eot +0 -0
  144. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-bold.ttf +0 -0
  145. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-bold.woff +0 -0
  146. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-bold.woff2 +0 -0
  147. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  148. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  149. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  150. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  151. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-italic.eot +0 -0
  152. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-italic.ttf +0 -0
  153. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-italic.woff +0 -0
  154. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-italic.woff2 +0 -0
  155. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-regular.eot +0 -0
  156. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-regular.ttf +0 -0
  157. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-regular.woff +0 -0
  158. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/Lato/lato-regular.woff2 +0 -0
  159. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  160. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  161. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  162. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  163. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  164. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  165. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  166. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  167. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/jquery.js +0 -0
  168. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/js/badge_only.js +0 -0
  169. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/js/theme.js +0 -0
  170. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/js/versions.js +0 -0
  171. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/language_data.js +0 -0
  172. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/minus.png +0 -0
  173. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/plus.png +0 -0
  174. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/pygments.css +0 -0
  175. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/searchtools.js +0 -0
  176. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/sphinx_highlight.js +0 -0
  177. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/version_switcher.css +0 -0
  178. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/_static/version_switcher.js +0 -0
  179. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/causal/benchmarks.html +0 -0
  180. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/causal/dag.html +0 -0
  181. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/causal/decisions.html +0 -0
  182. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/causal/estimands.html +0 -0
  183. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/causal/estimators.html +0 -0
  184. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/causal/introduction.html +0 -0
  185. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/causal/motivation.html +0 -0
  186. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/causal/refutations.html +0 -0
  187. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/causal/wizard.html +0 -0
  188. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/game/decision_rules.html +0 -0
  189. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/game/introduction.html +0 -0
  190. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/game/single_player.html +0 -0
  191. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/genindex.html +0 -0
  192. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/index.html +0 -0
  193. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/objects.inv +0 -0
  194. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/search.html +0 -0
  195. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.1/searchindex.js +0 -0
  196. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/causal/benchmarks.rst.txt +0 -0
  197. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/causal/dag.rst.txt +0 -0
  198. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/causal/decisions.rst.txt +0 -0
  199. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/causal/estimands.rst.txt +0 -0
  200. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/causal/estimators.rst.txt +0 -0
  201. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/causal/introduction.rst.txt +0 -0
  202. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/causal/motivation.rst.txt +0 -0
  203. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/causal/refutations.rst.txt +0 -0
  204. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/causal/wizard.rst.txt +0 -0
  205. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/game/decision_rules.rst.txt +0 -0
  206. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/game/introduction.rst.txt +0 -0
  207. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/game/single_player.rst.txt +0 -0
  208. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_sources/index.rst.txt +0 -0
  209. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  210. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/base-stemmer.js +0 -0
  211. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/basic.css +0 -0
  212. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/check-solid.svg +0 -0
  213. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/clipboard.min.js +0 -0
  214. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/copy-button.svg +0 -0
  215. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/copybutton.css +0 -0
  216. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/copybutton.js +0 -0
  217. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/copybutton_funcs.js +0 -0
  218. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/badge_only.css +0 -0
  219. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  220. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  221. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  222. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  223. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/fontawesome-webfont.eot +0 -0
  224. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/fontawesome-webfont.svg +0 -0
  225. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  226. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/fontawesome-webfont.woff +0 -0
  227. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  228. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/lato-bold-italic.woff +0 -0
  229. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  230. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/lato-bold.woff +0 -0
  231. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/lato-bold.woff2 +0 -0
  232. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/lato-normal-italic.woff +0 -0
  233. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  234. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/lato-normal.woff +0 -0
  235. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/fonts/lato-normal.woff2 +0 -0
  236. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/css/theme.css +0 -0
  237. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/doctools.js +0 -0
  238. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/english-stemmer.js +0 -0
  239. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/file.png +0 -0
  240. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-bold.eot +0 -0
  241. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-bold.ttf +0 -0
  242. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-bold.woff +0 -0
  243. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-bold.woff2 +0 -0
  244. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  245. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  246. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  247. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  248. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-italic.eot +0 -0
  249. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-italic.ttf +0 -0
  250. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-italic.woff +0 -0
  251. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-italic.woff2 +0 -0
  252. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-regular.eot +0 -0
  253. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-regular.ttf +0 -0
  254. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-regular.woff +0 -0
  255. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/Lato/lato-regular.woff2 +0 -0
  256. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  257. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  258. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  259. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  260. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  261. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  262. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  263. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  264. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/jquery.js +0 -0
  265. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/js/badge_only.js +0 -0
  266. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/js/theme.js +0 -0
  267. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/js/versions.js +0 -0
  268. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/language_data.js +0 -0
  269. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/minus.png +0 -0
  270. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/plus.png +0 -0
  271. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/pygments.css +0 -0
  272. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/searchtools.js +0 -0
  273. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/sphinx_highlight.js +0 -0
  274. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/version_switcher.css +0 -0
  275. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/_static/version_switcher.js +0 -0
  276. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/objects.inv +0 -0
  277. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/2.2/searchindex.js +0 -0
  278. {formative_ds-2.2.4 → formative_ds-2.2.5}/site/versions.json +0 -0
  279. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_cate.py +0 -0
  280. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_cate_refutation.py +0 -0
  281. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_dag.py +0 -0
  282. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_decision.py +0 -0
  283. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_did.py +0 -0
  284. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_did_refutation.py +0 -0
  285. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_game.py +0 -0
  286. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_iv.py +0 -0
  287. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_iv_refutation.py +0 -0
  288. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_matching.py +0 -0
  289. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_matching_refutation.py +0 -0
  290. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_ols.py +0 -0
  291. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_ols_refutation.py +0 -0
  292. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_policy.py +0 -0
  293. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_policy_refutation.py +0 -0
  294. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_rct.py +0 -0
  295. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_rct_refutation.py +0 -0
  296. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_rdd.py +0 -0
  297. {formative_ds-2.2.4 → formative_ds-2.2.5}/tests/test_rdd_refutation.py +0 -0
  298. {formative_ds-2.2.4 → formative_ds-2.2.5}/vercel.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: formative-ds
3
- Version: 2.2.4
3
+ Version: 2.2.5
4
4
  Summary: A Python library for quantitative reasoning.
5
5
  Project-URL: Homepage, https://getformative.dev
6
6
  Project-URL: Documentation, https://docs.getformative.dev
@@ -1,6 +1,31 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from .._assumptions import Assumption
4
+ from .._exceptions import IdentificationError
5
+
6
+
7
+ def _backdoor_confounders(dag, treatment: str, outcome: str) -> set[str]:
8
+ """
9
+ Confounders under the backdoor criterion: common ancestors of treatment and
10
+ outcome that are not descendants of treatment (mediators or post-treatment
11
+ variables).
12
+ """
13
+ return (dag.ancestors(treatment) & dag.ancestors(outcome)) - dag.descendants(treatment)
14
+
15
+
16
+ def _missing_confounders_error(missing: set[str], treatment: str, outcome: str) -> IdentificationError:
17
+ """``IdentificationError`` for DAG-declared confounders absent from the dataframe."""
18
+ return IdentificationError(
19
+ f"\nDAG confounders not found in dataframe: {sorted(missing)}\n\n"
20
+ f"Your DAG declares these variables as confounders of '{treatment}' and\n"
21
+ f"'{outcome}', but they are absent from the dataframe and cannot be\n"
22
+ f"controlled for. Note: there may also be confounders not modelled in your\n"
23
+ f"DAG at all — formative cannot detect those.\n\n"
24
+ f"Consider:\n"
25
+ f" - Collecting data on {sorted(missing)} and adding it to the dataframe\n"
26
+ f" - IV estimation if you have a valid instrument for '{treatment}'\n"
27
+ f" - DiD or RD if a natural experiment is available"
28
+ )
4
29
 
5
30
 
6
31
  class _BaseResult:
@@ -7,7 +7,7 @@ from statsmodels.sandbox.regression.gmm import IV2SLS as _IV2SLS
7
7
 
8
8
  from .._assumptions import Assumption
9
9
  from ..dag import DAG
10
- from ._base import _StatsmodelsResult
10
+ from ._base import _backdoor_confounders, _StatsmodelsResult
11
11
 
12
12
  IV_ASSUMPTIONS: list[Assumption] = [
13
13
  Assumption("Relevance: the instrument strongly affects treatment", testable=True),
@@ -228,14 +228,7 @@ class IV2SLS:
228
228
  Unobserved confounders are handled by the instrument and are not flagged
229
229
  as errors — this is the primary use case for IV estimation.
230
230
  """
231
- dag = self._dag
232
- T, Y = self._treatment, self._outcome
233
-
234
- treatment_ancestors = dag.ancestors(T)
235
- outcome_ancestors = dag.ancestors(Y)
236
- treatment_descendants = dag.descendants(T)
237
-
238
- confounders = (treatment_ancestors & outcome_ancestors) - treatment_descendants
231
+ confounders = _backdoor_confounders(self._dag, self._treatment, self._outcome)
239
232
  confounders.discard(self._instrument)
240
233
 
241
234
  return {c for c in confounders if c in data_columns}
@@ -6,9 +6,8 @@ import statsmodels.api as sm
6
6
  import statsmodels.formula.api as smf
7
7
 
8
8
  from .._assumptions import Assumption
9
- from .._exceptions import IdentificationError
10
9
  from ..dag import DAG
11
- from ._base import _BaseResult
10
+ from ._base import _backdoor_confounders, _BaseResult, _missing_confounders_error
12
11
 
13
12
  MATCHING_ASSUMPTIONS: list[Assumption] = [
14
13
  Assumption("Conditional independence: no unobserved confounders given matched variables", testable=False),
@@ -283,14 +282,7 @@ class PropensityScoreMatching:
283
282
  raise ValueError("Treatment and outcome must be different variables.")
284
283
 
285
284
  def _identify(self, data_columns: set[str]) -> tuple[set[str], set[str]]:
286
- dag = self._dag
287
- T, Y = self._treatment, self._outcome
288
-
289
- treatment_ancestors = dag.ancestors(T)
290
- outcome_ancestors = dag.ancestors(Y)
291
- treatment_descendants = dag.descendants(T)
292
-
293
- confounders = (treatment_ancestors & outcome_ancestors) - treatment_descendants
285
+ confounders = _backdoor_confounders(self._dag, self._treatment, self._outcome)
294
286
  observed = {c for c in confounders if c in data_columns}
295
287
  missing = {c for c in confounders if c not in data_columns}
296
288
  return observed, missing
@@ -328,16 +320,7 @@ class PropensityScoreMatching:
328
320
  adjustment_set, missing = self._identify(data_columns)
329
321
 
330
322
  if missing:
331
- raise IdentificationError(
332
- f"\nDAG confounders not found in dataframe: {sorted(missing)}\n\n"
333
- f"Your DAG declares these variables as confounders of "
334
- f"'{self._treatment}' and '{self._outcome}', but they are "
335
- f"absent from the dataframe and cannot be controlled for.\n\n"
336
- f"Consider:\n"
337
- f" - Collecting data on {sorted(missing)} and adding it to the dataframe\n"
338
- f" - IV estimation if you have a valid instrument for '{self._treatment}'\n"
339
- f" - DiD or RD if a natural experiment is available"
340
- )
323
+ raise _missing_confounders_error(missing, self._treatment, self._outcome)
341
324
 
342
325
  T, Y = self._treatment, self._outcome
343
326
 
@@ -4,9 +4,8 @@ import pandas as pd
4
4
  import statsmodels.formula.api as smf
5
5
 
6
6
  from .._assumptions import Assumption
7
- from .._exceptions import IdentificationError
8
7
  from ..dag import DAG
9
- from ._base import _StatsmodelsResult
8
+ from ._base import _backdoor_confounders, _missing_confounders_error, _StatsmodelsResult
10
9
  from ._cate import (
11
10
  CATE_ASSUMPTIONS,
12
11
  _CATEResultMixin,
@@ -282,14 +281,7 @@ class OLSObservational:
282
281
  absent from the data. There may be additional unobserved confounders
283
282
  not represented in the DAG at all.
284
283
  """
285
- dag = self._dag
286
- T, Y = self._treatment, self._outcome
287
-
288
- treatment_ancestors = dag.ancestors(T)
289
- outcome_ancestors = dag.ancestors(Y)
290
- treatment_descendants = dag.descendants(T)
291
-
292
- confounders = (treatment_ancestors & outcome_ancestors) - treatment_descendants
284
+ confounders = _backdoor_confounders(self._dag, self._treatment, self._outcome)
293
285
 
294
286
  observed_confounders = {c for c in confounders if c in data_columns}
295
287
  dag_confounders_not_in_data = {c for c in confounders if c not in data_columns}
@@ -335,17 +327,7 @@ class OLSObservational:
335
327
  adjustment_set, dag_confounders_not_in_data = self._identify(data_columns)
336
328
 
337
329
  if dag_confounders_not_in_data:
338
- raise IdentificationError(
339
- f"\nDAG confounders not found in dataframe: {sorted(dag_confounders_not_in_data)}\n\n"
340
- f"Your DAG declares these variables as confounders of '{self._treatment}' and\n"
341
- f"'{self._outcome}', but they are absent from the dataframe and cannot be\n"
342
- f"controlled for. Note: there may also be confounders not modelled in your\n"
343
- f"DAG at all — formative cannot detect those.\n\n"
344
- f"Consider:\n"
345
- f" - Collecting data on {sorted(dag_confounders_not_in_data)} and adding it to the dataframe\n"
346
- f" - IV estimation if you have a valid instrument for '{self._treatment}'\n"
347
- f" - DiD or RD if a natural experiment is available"
348
- )
330
+ raise _missing_confounders_error(dag_confounders_not_in_data, self._treatment, self._outcome)
349
331
 
350
332
  unadjusted_result = smf.ols(f"{self._outcome} ~ {self._treatment}", data=data).fit()
351
333
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "formative-ds"
7
- version = "2.2.4"
7
+ version = "2.2.5"
8
8
  description = "A Python library for quantitative reasoning."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -48,7 +48,7 @@ docs = ["sphinx>=7,<10", "sphinx-rtd-theme>=2,<4", "sphinx-copybutton>=0.5,<0.6"
48
48
  packages = ["formative"]
49
49
 
50
50
  [tool.bumpversion]
51
- current_version = "2.2.4"
51
+ current_version = "2.2.5"
52
52
  commit = true
53
53
  tag = true
54
54
  tag_name = "v{new_version}"
@@ -1,5 +1,5 @@
1
1
  const DOCUMENTATION_OPTIONS = {
2
- VERSION: '2.2.3',
2
+ VERSION: '2.2.4',
3
3
  LANGUAGE: 'en',
4
4
  COLLAPSE_INDEX: false,
5
5
  BUILDER: 'html',
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Benchmarks &mdash; formative 2.2.3 documentation</title>
9
+ <title>Benchmarks &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/causal/benchmarks.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>DAG &mdash; formative 2.2.3 documentation</title>
9
+ <title>DAG &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/causal/dag.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Decisions &mdash; formative 2.2.3 documentation</title>
9
+ <title>Decisions &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/causal/decisions.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Estimands &mdash; formative 2.2.3 documentation</title>
9
+ <title>Estimands &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/causal/estimands.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Estimators &mdash; formative 2.2.3 documentation</title>
9
+ <title>Estimators &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/causal/estimators.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Introduction &mdash; formative 2.2.3 documentation</title>
9
+ <title>Introduction &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/causal/introduction.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Motivation &mdash; formative 2.2.3 documentation</title>
9
+ <title>Motivation &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/causal/motivation.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Refutations &mdash; formative 2.2.3 documentation</title>
9
+ <title>Refutations &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/causal/refutations.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Choosing an estimator &mdash; formative 2.2.3 documentation</title>
9
+ <title>Choosing an estimator &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/causal/wizard.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Decision rules &mdash; formative 2.2.3 documentation</title>
9
+ <title>Decision rules &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/game/decision_rules.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Introduction &mdash; formative 2.2.3 documentation</title>
9
+ <title>Introduction &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/game/introduction.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>Single-player &mdash; formative 2.2.3 documentation</title>
9
+ <title>Single-player &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/game/single_player.html" />
17
17
  <script src="../_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="../_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="../_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="../_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="../_static/clipboard.min.js?v=a7894cd8"></script>
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta charset="utf-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <title>Index &mdash; formative 2.2.3 documentation</title>
8
+ <title>Index &mdash; formative 2.2.4 documentation</title>
9
9
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
10
10
  <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=9edc463e" />
11
11
  <link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -15,7 +15,7 @@
15
15
  <link rel="canonical" href="https://docs.getformative.dev/genindex.html" />
16
16
  <script src="_static/jquery.js?v=5d32c60e"></script>
17
17
  <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
18
- <script src="_static/documentation_options.js?v=85e56e6b"></script>
18
+ <script src="_static/documentation_options.js?v=4e6cfea6"></script>
19
19
  <script src="_static/doctools.js?v=fd6eb6e6"></script>
20
20
  <script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
21
21
  <script src="_static/clipboard.min.js?v=a7894cd8"></script>
@@ -6,7 +6,7 @@
6
6
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
 
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
- <title>formative &mdash; formative 2.2.3 documentation</title>
9
+ <title>formative &mdash; formative 2.2.4 documentation</title>
10
10
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
11
11
  <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=9edc463e" />
12
12
  <link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
  <link rel="canonical" href="https://docs.getformative.dev/index.html" />
17
17
  <script src="_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="_static/clipboard.min.js?v=a7894cd8"></script>
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta charset="utf-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <title>Search &mdash; formative 2.2.3 documentation</title>
8
+ <title>Search &mdash; formative 2.2.4 documentation</title>
9
9
  <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
10
10
  <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=9edc463e" />
11
11
  <link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
@@ -16,7 +16,7 @@
16
16
 
17
17
  <script src="_static/jquery.js?v=5d32c60e"></script>
18
18
  <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19
- <script src="_static/documentation_options.js?v=85e56e6b"></script>
19
+ <script src="_static/documentation_options.js?v=4e6cfea6"></script>
20
20
  <script src="_static/doctools.js?v=fd6eb6e6"></script>
21
21
  <script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
22
22
  <script src="_static/clipboard.min.js?v=a7894cd8"></script>
@@ -603,7 +603,7 @@ wheels = [
603
603
 
604
604
  [[package]]
605
605
  name = "formative-ds"
606
- version = "2.2.4"
606
+ version = "2.2.5"
607
607
  source = { editable = "." }
608
608
  dependencies = [
609
609
  { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes