limiteddepkit 0.1.0a1__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 (190) hide show
  1. limiteddepkit-0.1.0a1/CHANGELOG.md +154 -0
  2. limiteddepkit-0.1.0a1/CITATION.cff +13 -0
  3. limiteddepkit-0.1.0a1/CONTRIBUTING.md +67 -0
  4. limiteddepkit-0.1.0a1/LICENSE +21 -0
  5. limiteddepkit-0.1.0a1/MANIFEST.in +17 -0
  6. limiteddepkit-0.1.0a1/PKG-INFO +1366 -0
  7. limiteddepkit-0.1.0a1/README.md +1315 -0
  8. limiteddepkit-0.1.0a1/RELEASING.md +57 -0
  9. limiteddepkit-0.1.0a1/SECURITY.md +21 -0
  10. limiteddepkit-0.1.0a1/docs/BINARY_MODELS.md +73 -0
  11. limiteddepkit-0.1.0a1/docs/CATEGORY_ORDER.md +38 -0
  12. limiteddepkit-0.1.0a1/docs/CENSORING_MODELS.md +109 -0
  13. limiteddepkit-0.1.0a1/docs/COUNT_MODELS.md +135 -0
  14. limiteddepkit-0.1.0a1/docs/DURATION_MODELS.md +97 -0
  15. limiteddepkit-0.1.0a1/docs/DYNAMIC_FIXED_EFFECTS_ORDINAL.md +152 -0
  16. limiteddepkit-0.1.0a1/docs/DYNAMIC_ORDINAL.md +34 -0
  17. limiteddepkit-0.1.0a1/docs/DYNAMIC_ORDINAL_VALIDATION.md +36 -0
  18. limiteddepkit-0.1.0a1/docs/ECOSYSTEM_COMPATIBILITY.md +35 -0
  19. limiteddepkit-0.1.0a1/docs/EXPERIMENTAL_MODELS.md +159 -0
  20. limiteddepkit-0.1.0a1/docs/FIXED_EFFECTS_ORDINAL.md +127 -0
  21. limiteddepkit-0.1.0a1/docs/ML_WORKFLOWS.md +593 -0
  22. limiteddepkit-0.1.0a1/docs/OPEN_DEVELOPMENT.md +59 -0
  23. limiteddepkit-0.1.0a1/docs/ORDINAL_MODELS.md +104 -0
  24. limiteddepkit-0.1.0a1/docs/PACKAGE_SCOPE.md +67 -0
  25. limiteddepkit-0.1.0a1/docs/PANEL_ORDINAL.md +75 -0
  26. limiteddepkit-0.1.0a1/docs/PUBLIC_DISCUSSION_DRAFTS.md +82 -0
  27. limiteddepkit-0.1.0a1/docs/README.md +82 -0
  28. limiteddepkit-0.1.0a1/docs/SMALL_SAMPLE_MODELS.md +103 -0
  29. limiteddepkit-0.1.0a1/docs/VALIDATION.md +327 -0
  30. limiteddepkit-0.1.0a1/pyproject.toml +93 -0
  31. limiteddepkit-0.1.0a1/setup.cfg +4 -0
  32. limiteddepkit-0.1.0a1/src/limiteddepkit/__init__.py +162 -0
  33. limiteddepkit-0.1.0a1/src/limiteddepkit/_continuous.py +354 -0
  34. limiteddepkit-0.1.0a1/src/limiteddepkit/_count_common.py +280 -0
  35. limiteddepkit-0.1.0a1/src/limiteddepkit/_duration.py +400 -0
  36. limiteddepkit-0.1.0a1/src/limiteddepkit/_irls.py +132 -0
  37. limiteddepkit-0.1.0a1/src/limiteddepkit/_small_sample.py +1108 -0
  38. limiteddepkit-0.1.0a1/src/limiteddepkit/binary.py +482 -0
  39. limiteddepkit-0.1.0a1/src/limiteddepkit/binary_probit.py +250 -0
  40. limiteddepkit-0.1.0a1/src/limiteddepkit/censored_quantile.py +449 -0
  41. limiteddepkit-0.1.0a1/src/limiteddepkit/censoring/__init__.py +14 -0
  42. limiteddepkit-0.1.0a1/src/limiteddepkit/conditional_logit.py +332 -0
  43. limiteddepkit-0.1.0a1/src/limiteddepkit/count/__init__.py +23 -0
  44. limiteddepkit-0.1.0a1/src/limiteddepkit/discrete_time_duration.py +335 -0
  45. limiteddepkit-0.1.0a1/src/limiteddepkit/duration/__init__.py +24 -0
  46. limiteddepkit-0.1.0a1/src/limiteddepkit/dynamic_fixed_effects_ordinal.py +626 -0
  47. limiteddepkit-0.1.0a1/src/limiteddepkit/dynamic_ordinal.py +437 -0
  48. limiteddepkit-0.1.0a1/src/limiteddepkit/experimental/__init__.py +102 -0
  49. limiteddepkit-0.1.0a1/src/limiteddepkit/experimental/small_sample.py +23 -0
  50. limiteddepkit-0.1.0a1/src/limiteddepkit/exponential_duration.py +282 -0
  51. limiteddepkit-0.1.0a1/src/limiteddepkit/fixed_effects_ordinal.py +951 -0
  52. limiteddepkit-0.1.0a1/src/limiteddepkit/gamma_duration.py +359 -0
  53. limiteddepkit-0.1.0a1/src/limiteddepkit/generalized_ordinal.py +810 -0
  54. limiteddepkit-0.1.0a1/src/limiteddepkit/hurdle_poisson.py +368 -0
  55. limiteddepkit-0.1.0a1/src/limiteddepkit/integrations/__init__.py +5 -0
  56. limiteddepkit-0.1.0a1/src/limiteddepkit/integrations/outputhub.py +197 -0
  57. limiteddepkit-0.1.0a1/src/limiteddepkit/interval_regression.py +248 -0
  58. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/__init__.py +190 -0
  59. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/adapter.py +430 -0
  60. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/bridges.py +394 -0
  61. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/calibration.py +402 -0
  62. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/compare.py +280 -0
  63. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/metrics.py +932 -0
  64. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/neural.py +718 -0
  65. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/split.py +718 -0
  66. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/survival.py +470 -0
  67. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/tuning.py +363 -0
  68. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/uncertainty.py +707 -0
  69. limiteddepkit-0.1.0a1/src/limiteddepkit/ml/validation.py +886 -0
  70. limiteddepkit-0.1.0a1/src/limiteddepkit/model_comparison.py +104 -0
  71. limiteddepkit-0.1.0a1/src/limiteddepkit/multinomial.py +344 -0
  72. limiteddepkit-0.1.0a1/src/limiteddepkit/negative_binomial.py +404 -0
  73. limiteddepkit-0.1.0a1/src/limiteddepkit/ordinal.py +799 -0
  74. limiteddepkit-0.1.0a1/src/limiteddepkit/panel/__init__.py +30 -0
  75. limiteddepkit-0.1.0a1/src/limiteddepkit/panel_ordinal.py +622 -0
  76. limiteddepkit-0.1.0a1/src/limiteddepkit/plotting.py +96 -0
  77. limiteddepkit-0.1.0a1/src/limiteddepkit/poisson.py +375 -0
  78. limiteddepkit-0.1.0a1/src/limiteddepkit/postestimation.py +170 -0
  79. limiteddepkit-0.1.0a1/src/limiteddepkit/sample_selection.py +294 -0
  80. limiteddepkit-0.1.0a1/src/limiteddepkit/sequential_logit.py +332 -0
  81. limiteddepkit-0.1.0a1/src/limiteddepkit/simulation.py +430 -0
  82. limiteddepkit-0.1.0a1/src/limiteddepkit/small_sample.py +11 -0
  83. limiteddepkit-0.1.0a1/src/limiteddepkit/tobit.py +229 -0
  84. limiteddepkit-0.1.0a1/src/limiteddepkit/truncated_regression.py +218 -0
  85. limiteddepkit-0.1.0a1/src/limiteddepkit/weibull_duration.py +374 -0
  86. limiteddepkit-0.1.0a1/src/limiteddepkit/zero_inflated_poisson.py +905 -0
  87. limiteddepkit-0.1.0a1/src/limiteddepkit.egg-info/PKG-INFO +1366 -0
  88. limiteddepkit-0.1.0a1/src/limiteddepkit.egg-info/SOURCES.txt +188 -0
  89. limiteddepkit-0.1.0a1/src/limiteddepkit.egg-info/dependency_links.txt +1 -0
  90. limiteddepkit-0.1.0a1/src/limiteddepkit.egg-info/requires.txt +34 -0
  91. limiteddepkit-0.1.0a1/src/limiteddepkit.egg-info/top_level.txt +1 -0
  92. limiteddepkit-0.1.0a1/tests/integration/test_outputhub.py +175 -0
  93. limiteddepkit-0.1.0a1/tests/test_api_surface.py +239 -0
  94. limiteddepkit-0.1.0a1/tests/test_binary_probit.py +112 -0
  95. limiteddepkit-0.1.0a1/tests/test_binary_response.py +185 -0
  96. limiteddepkit-0.1.0a1/tests/test_binary_stable_api.py +89 -0
  97. limiteddepkit-0.1.0a1/tests/test_category_order.py +220 -0
  98. limiteddepkit-0.1.0a1/tests/test_censored_quantile.py +91 -0
  99. limiteddepkit-0.1.0a1/tests/test_conditional_logit.py +135 -0
  100. limiteddepkit-0.1.0a1/tests/test_count_models.py +303 -0
  101. limiteddepkit-0.1.0a1/tests/test_discrete_time_duration.py +38 -0
  102. limiteddepkit-0.1.0a1/tests/test_duration_stable_api.py +410 -0
  103. limiteddepkit-0.1.0a1/tests/test_dynamic_fixed_effects_ordered_logit.py +269 -0
  104. limiteddepkit-0.1.0a1/tests/test_dynamic_ordered_logit.py +116 -0
  105. limiteddepkit-0.1.0a1/tests/test_ecosystem_contract.py +73 -0
  106. limiteddepkit-0.1.0a1/tests/test_exponential_duration.py +35 -0
  107. limiteddepkit-0.1.0a1/tests/test_firth_stable_api.py +136 -0
  108. limiteddepkit-0.1.0a1/tests/test_fixed_effects_ordered_logit.py +182 -0
  109. limiteddepkit-0.1.0a1/tests/test_fixed_effects_ordered_probit.py +197 -0
  110. limiteddepkit-0.1.0a1/tests/test_gamma_duration.py +70 -0
  111. limiteddepkit-0.1.0a1/tests/test_generalized_ordered_logit.py +285 -0
  112. limiteddepkit-0.1.0a1/tests/test_hurdle_poisson.py +142 -0
  113. limiteddepkit-0.1.0a1/tests/test_interval_regression.py +212 -0
  114. limiteddepkit-0.1.0a1/tests/test_ml_bridges.py +231 -0
  115. limiteddepkit-0.1.0a1/tests/test_ml_calibration.py +166 -0
  116. limiteddepkit-0.1.0a1/tests/test_ml_estimators_integration.py +418 -0
  117. limiteddepkit-0.1.0a1/tests/test_ml_metrics.py +454 -0
  118. limiteddepkit-0.1.0a1/tests/test_ml_neural.py +290 -0
  119. limiteddepkit-0.1.0a1/tests/test_ml_split.py +259 -0
  120. limiteddepkit-0.1.0a1/tests/test_ml_survival.py +226 -0
  121. limiteddepkit-0.1.0a1/tests/test_ml_tuning.py +187 -0
  122. limiteddepkit-0.1.0a1/tests/test_ml_uncertainty.py +329 -0
  123. limiteddepkit-0.1.0a1/tests/test_ml_validation.py +713 -0
  124. limiteddepkit-0.1.0a1/tests/test_multinomial_logit.py +113 -0
  125. limiteddepkit-0.1.0a1/tests/test_negative_binomial.py +26 -0
  126. limiteddepkit-0.1.0a1/tests/test_ordered_logit.py +270 -0
  127. limiteddepkit-0.1.0a1/tests/test_ordinal_plotting.py +106 -0
  128. limiteddepkit-0.1.0a1/tests/test_poisson.py +18 -0
  129. limiteddepkit-0.1.0a1/tests/test_r_parity_harness.py +272 -0
  130. limiteddepkit-0.1.0a1/tests/test_random_effects_ordered_logit.py +171 -0
  131. limiteddepkit-0.1.0a1/tests/test_random_effects_ordered_probit.py +188 -0
  132. limiteddepkit-0.1.0a1/tests/test_release_metadata.py +89 -0
  133. limiteddepkit-0.1.0a1/tests/test_sample_selection.py +44 -0
  134. limiteddepkit-0.1.0a1/tests/test_sequential_logit.py +109 -0
  135. limiteddepkit-0.1.0a1/tests/test_small_sample_estimators.py +214 -0
  136. limiteddepkit-0.1.0a1/tests/test_stata_parity_harness.py +669 -0
  137. limiteddepkit-0.1.0a1/tests/test_stata_parity_preparation_gates.py +146 -0
  138. limiteddepkit-0.1.0a1/tests/test_stata_preparation_security.py +71 -0
  139. limiteddepkit-0.1.0a1/tests/test_stata_stale_evidence_guard.py +125 -0
  140. limiteddepkit-0.1.0a1/tests/test_tobit.py +179 -0
  141. limiteddepkit-0.1.0a1/tests/test_truncated_regression.py +150 -0
  142. limiteddepkit-0.1.0a1/tests/test_weibull_duration.py +36 -0
  143. limiteddepkit-0.1.0a1/tests/test_zero_inflated_poisson.py +152 -0
  144. limiteddepkit-0.1.0a1/tests/validation/test_binary_response_statsmodels.py +70 -0
  145. limiteddepkit-0.1.0a1/tests/validation/test_censored_quantile_statsmodels.py +30 -0
  146. limiteddepkit-0.1.0a1/tests/validation/test_censoring_statsmodels.py +28 -0
  147. limiteddepkit-0.1.0a1/tests/validation/test_count_foundations_statsmodels.py +239 -0
  148. limiteddepkit-0.1.0a1/tests/validation/test_discrete_time_duration_statsmodels.py +47 -0
  149. limiteddepkit-0.1.0a1/tests/validation/test_dynamic_fixed_effects_ordered_logit_recovery.py +55 -0
  150. limiteddepkit-0.1.0a1/tests/validation/test_dynamic_fixed_effects_ordered_logit_statsmodels.py +79 -0
  151. limiteddepkit-0.1.0a1/tests/validation/test_dynamic_ordered_logit_numerics.py +116 -0
  152. limiteddepkit-0.1.0a1/tests/validation/test_dynamic_ordered_logit_recovery.py +109 -0
  153. limiteddepkit-0.1.0a1/tests/validation/test_experimental_choice_models_statsmodels.py +121 -0
  154. limiteddepkit-0.1.0a1/tests/validation/test_exponential_duration_statsmodels.py +42 -0
  155. limiteddepkit-0.1.0a1/tests/validation/test_firth_reference.py +34 -0
  156. limiteddepkit-0.1.0a1/tests/validation/test_fixed_effects_ordered_logit_statsmodels.py +53 -0
  157. limiteddepkit-0.1.0a1/tests/validation/test_fixed_effects_ordered_probit_statsmodels.py +54 -0
  158. limiteddepkit-0.1.0a1/tests/validation/test_flexible_ordinal_recovery.py +52 -0
  159. limiteddepkit-0.1.0a1/tests/validation/test_gamma_duration_scipy.py +46 -0
  160. limiteddepkit-0.1.0a1/tests/validation/test_ml_sklearn.py +523 -0
  161. limiteddepkit-0.1.0a1/tests/validation/test_negative_binomial_statsmodels.py +45 -0
  162. limiteddepkit-0.1.0a1/tests/validation/test_ordered_logit_statsmodels.py +73 -0
  163. limiteddepkit-0.1.0a1/tests/validation/test_poisson_statsmodels.py +47 -0
  164. limiteddepkit-0.1.0a1/tests/validation/test_random_effects_ordered_logit_numerics.py +103 -0
  165. limiteddepkit-0.1.0a1/tests/validation/test_random_effects_ordered_logit_recovery.py +81 -0
  166. limiteddepkit-0.1.0a1/tests/validation/test_random_effects_ordered_probit_recovery.py +75 -0
  167. limiteddepkit-0.1.0a1/tests/validation/test_sample_selection_recovery.py +65 -0
  168. limiteddepkit-0.1.0a1/tests/validation/test_two_part_poisson_statsmodels.py +360 -0
  169. limiteddepkit-0.1.0a1/tests/validation/test_weibull_duration_scipy.py +45 -0
  170. limiteddepkit-0.1.0a1/validation/PARITY_EVIDENCE.md +146 -0
  171. limiteddepkit-0.1.0a1/validation/promoted/README.md +178 -0
  172. limiteddepkit-0.1.0a1/validation/promoted/STATA.md +67 -0
  173. limiteddepkit-0.1.0a1/validation/promoted/compare_parity.py +779 -0
  174. limiteddepkit-0.1.0a1/validation/promoted/compare_stata.py +1323 -0
  175. limiteddepkit-0.1.0a1/validation/promoted/limiteddepkit_real_data.do +556 -0
  176. limiteddepkit-0.1.0a1/validation/promoted/prepare_real_data.py +1225 -0
  177. limiteddepkit-0.1.0a1/validation/promoted/run_parity.R +816 -0
  178. limiteddepkit-0.1.0a1/validation/r/README.md +304 -0
  179. limiteddepkit-0.1.0a1/validation/r/compare_parity.py +674 -0
  180. limiteddepkit-0.1.0a1/validation/r/flexible_models.R +519 -0
  181. limiteddepkit-0.1.0a1/validation/r/panel_models.R +452 -0
  182. limiteddepkit-0.1.0a1/validation/r/run_parity.R +665 -0
  183. limiteddepkit-0.1.0a1/validation/r/setup_dependencies.ps1 +89 -0
  184. limiteddepkit-0.1.0a1/validation/stata/README.md +591 -0
  185. limiteddepkit-0.1.0a1/validation/stata/compare_parity.py +1235 -0
  186. limiteddepkit-0.1.0a1/validation/stata/download_real_data.ps1 +57 -0
  187. limiteddepkit-0.1.0a1/validation/stata/limiteddepkit_parity.do +259 -0
  188. limiteddepkit-0.1.0a1/validation/stata/limiteddepkit_real_data.do +274 -0
  189. limiteddepkit-0.1.0a1/validation/stata/prepare_parity.py +645 -0
  190. limiteddepkit-0.1.0a1/validation/stata/prepare_real_data.py +852 -0
@@ -0,0 +1,154 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file. The
4
+ format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
5
+ the project intends to use [Semantic Versioning](https://semver.org/) after its
6
+ pre-release phase.
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+
12
+ - Stable parametric duration family at the package root and
13
+ `limiteddepkit.duration`: explicit geometric discrete duration plus
14
+ Exponential, Weibull, and Gamma likelihoods with right censoring, delayed
15
+ entry, integer-frequency weights, observed/robust/cluster covariance,
16
+ schema-safe survival/hazard/cumulative-hazard/quantile prediction, and
17
+ temporary experimental compatibility aliases.
18
+ - Stable BUC `FixedEffectsOrderedLogit` with exact conditional-likelihood
19
+ construction, entity-cluster composite covariance, Statsmodels parity, and
20
+ an explicit slopes-only identification contract. Added experimental
21
+ split-panel-jackknife `FixedEffectsOrderedProbit` with balanced-panel guards,
22
+ entity-bootstrap inference, known-entity diagnostic probabilities, and
23
+ unconditional likelihood parity.
24
+ - Experimental `DynamicFixedEffectsOrderedLogit` implementing the restricted
25
+ four-outcome-history MRV conditional composite likelihood with exact discrete
26
+ stayers, a known state cutoff, threshold normalization, entity-clustered
27
+ Godambe inference, path-odds/recovery tests, and constructed-sample Statsmodels
28
+ parity. It remains outside the stable root API and does not report category
29
+ probabilities.
30
+ - Stable `FirthBinaryLogit` at the package root and in `limiteddepkit.small_sample`,
31
+ with constrained profile penalized-likelihood confidence intervals, direct profile
32
+ diagnostics, exact separated-table checks, and independent `firthmodels` coefficient,
33
+ objective, and profile-bound parity. Experimental imports remain compatibility aliases;
34
+ ridge Binary/Ordered Logit remain provisional.
35
+ - Stable `limiteddepkit.count` family and package-root exports for exposure/offset
36
+ Poisson and NB2. The promoted contract adds exact integer-frequency and analytic
37
+ estimating-equation weights, observed-information/HC0/HC1/cluster covariance,
38
+ schema-safe indexed prediction, common fit diagnostics and information criteria,
39
+ Statsmodels parity, and temporary `limiteddepkit.experimental` compatibility aliases.
40
+ Zero-inflated and hurdle Poisson remain experimental.
41
+ - Stable `limiteddepkit.censoring` family and package-root exports for Gaussian Tobit,
42
+ truncated regression, and interval regression. The promoted contract adds left/right
43
+ Tobit and truncation rules, observed-information/robust/cluster covariance, common
44
+ latent-distribution post-estimation, reflection and cross-likelihood identities, and
45
+ temporary `limiteddepkit.experimental` compatibility aliases.
46
+ - Stable `RandomEffectsOrderedProbit` with the existing non-adaptive GHQ,
47
+ observed-information, population/conditional prediction, posterior random-effect,
48
+ posterior-prediction, simulation, and Output Hub contracts. Its conditional kernel is
49
+ checked against Statsmodels and its marginal probabilities against the exact normal-
50
+ convolution identity.
51
+ - Experimental `limiteddepkit.ml` workflow with dependency-light iid,
52
+ stratified, complete-group, and forward-panel splitters; binary, multinomial,
53
+ ordinal, grouped-choice, count, continuous, quantile, duration, and selection
54
+ scores; out-of-fold predictions; and validity-gated model comparison.
55
+ - Limited-data validation extensions: stratified complete-group splitting with an exact
56
+ MILP coverage fallback after greedy balancing, repeated splitters, fold-local
57
+ preprocessing, pooled/weighted OOF aggregation, paired fold differences,
58
+ observation/entity bootstrap intervals, and one-standard-error selection.
59
+ - Leakage-safe nested cross-validation for estimator and ridge-penalty selection.
60
+ - Held-out binary/ordinal calibration diagnostics with reliability tables, calibration
61
+ intercept/slope, and an explicit grouped Brier decomposition remainder.
62
+ - Training-fold reverse-Kaplan-Meier censoring estimates with IPCW concordance,
63
+ time-dependent and integrated Brier scores, and cumulative/dynamic AUC.
64
+ - Lazy optional bridges for scikit-learn, Statsmodels, and callback-driven external
65
+ estimators with explicit prediction semantics and no invented validity diagnostics.
66
+ - Experimental ridge Binary/Ordered Logit estimators, with shrinkage and aligned
67
+ Statsmodels/scikit-learn numerical evidence.
68
+ - Optional `[neural]` `ResidualBinaryMLP` advanced prediction challenger with an iid-only
69
+ internal validation split, conservative completion/stabilization diagnostics,
70
+ temperature scaling, and Monte Carlo dropout uncertainty output. All 21 neural tests
71
+ passed in an isolated Python 3.13/PyTorch 2.13.0 runtime, and an optional neural CI job
72
+ now maintains the path; no numerical-parity or inferential claim is made.
73
+ - Optional scikit-learn validation gates for matching prediction metrics,
74
+ deterministic splitter contracts, and end-to-end held-out Binary Logit
75
+ probabilities against Statsmodels and unpenalized scikit-learn.
76
+ - Pinned R 4.5.1 parity harness covering the eight previously certified binary and ordinal
77
+ families on both controlled and public-data fixtures, with canonical
78
+ covariance, fit, probability, metadata, report, and certificate exports.
79
+ - Committed cross-software evidence index recording the four completed parity
80
+ outcomes and exact manifest, report, and certificate digests.
81
+ - Separate promoted-family public-data application harness covering 12 stable
82
+ post-expansion fits. The 15 July 2026 Python/R run passed all 120/120
83
+ registered checks using seven industrial-package fits, three independent
84
+ likelihood or adjusted-score implementations, and two likelihood or
85
+ pseudo-sample identities. The applications use empirical observations except
86
+ for the official fictional `womenwage2` interval-regression software fixture;
87
+ the manual Stata comparison passed 140/140 required checks with an explicit
88
+ Gamma skip. This is application evidence,
89
+ not an extension of the older controlled certification or a universal
90
+ equality claim.
91
+
92
+ ### Changed
93
+
94
+ - Documented explicit new-entity, known-entity future, and conditional panel
95
+ prediction targets, including chronology and dynamic-lag leakage guards.
96
+ - Balanced stratified class remainders across folds so both total fold sizes and
97
+ within-class counts differ by at most one.
98
+ - Replaced the common Binary Logit and Poisson optimization paths with analytical,
99
+ damped Newton/IRLS steps plus BFGS fallbacks; finite-MLE separation safeguards and
100
+ reference-package parameter parity remain enforced.
101
+ - Clarified that stable Firth and experimental ridge estimators require `n > p` and full column
102
+ rank, and that native estimators require dense transformer output; sparse transformed
103
+ designs remain available only to downstream estimators that explicitly accept them.
104
+ - Completed both maintained Stata 17 parity tracks with `gologit2` 3.2.8; all
105
+ eight families pass all declared checks on the controlled and real-data
106
+ suites.
107
+ - Added Stata random-effect variance-to-standard-deviation canonicalization and
108
+ tightened pooled ordered-model reference optimization.
109
+
110
+ ## [0.1.0a1] - Release pending
111
+
112
+ ### Added
113
+
114
+ - Ordinal-model alpha covering pooled, flexible-slope, random-effects, and
115
+ dynamic random-effects ordinal estimators.
116
+ - Stable binary Logit and Probit with observed-information inference,
117
+ prediction, margins, marginal effects, and Statsmodels parity.
118
+ - Shared prediction, inference, margins, plotting, simulation, and optional
119
+ Output Hub workflows for supported ordinal results.
120
+ - Maintained numerical-reference, recovery, quadrature-convergence, and
121
+ invariance validation tests.
122
+ - Deterministic manual Stata parity harness for the stable binary and ordinal
123
+ estimators, including raw covariance and prediction exports.
124
+ - Separate hash-pinned Stata Press real-data application harness, with
125
+ provenance-preserving downloads, full fit/covariance exports, and
126
+ machine-readable comparison evidence.
127
+ - Independent, hash-pinned R parity workflows for the same eight models and
128
+ datasets.
129
+ - Experimental namespace for provisional non-ordinal model families.
130
+ - Experimental fixed-boundary censored quantile regression with multi-start
131
+ Powell check-loss fitting and opt-in pairs-bootstrap inference.
132
+ - Initial project governance, security, citation, and continuous-integration
133
+ files.
134
+
135
+ ### Changed
136
+
137
+ - Declared Python 3.10 as the minimum supported version.
138
+ - Limited the supported `0.1` alpha contract to the validated binary and
139
+ ordinal stacks.
140
+ - Corrected likelihood, inference, identification, and prediction
141
+ contracts across binary, choice, count, censoring, selection, and duration
142
+ families, with independent or exact-manual validation tests.
143
+
144
+ ### Removed
145
+
146
+ - Other provisional estimators from the stable top-level API.
147
+ - Linear 2SLS `TreatmentEffect` from the installed distribution because it is
148
+ outside the limited-dependent-variable scope.
149
+ - Iid `GaussianMixtureRegression` and the misleading historical
150
+ `SwitchingRegression` alias from the installed distribution; their source is
151
+ staged outside `src/` for migration to a mixture/regime package.
152
+
153
+ This alpha is frozen locally; external repository and PyPI publication remain
154
+ separate release operations.
@@ -0,0 +1,13 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use limiteddepkit in research, please cite the software and the exact version used."
3
+ type: software
4
+ title: "limiteddepkit: Limited-dependent-variable models for Python"
5
+ abstract: >-
6
+ A developing Python toolkit for limited-dependent-variable econometrics,
7
+ with stable binary, ordinal, Gaussian censoring, foundational count,
8
+ parametric duration, and selected panel estimators in its alpha release.
9
+ authors:
10
+ - family-names: Akanbi
11
+ given-names: "Oluwajuwon Mayomi"
12
+ version: 0.1.0a1
13
+ license: MIT
@@ -0,0 +1,67 @@
1
+ # Contributing to limiteddepkit
2
+
3
+ Thank you for helping improve `limiteddepkit`. The package is in an alpha phase with
4
+ binary, ordinal, Gaussian censoring, foundational count, and parametric duration cores,
5
+ so correctness evidence and explicit scope are more important than adding model names
6
+ quickly.
7
+
8
+ ## Development setup
9
+
10
+ Use Python 3.10 or newer and install the development dependencies from the
11
+ repository root:
12
+
13
+ ```bash
14
+ python -m pip install -e ".[dev]"
15
+ ```
16
+
17
+ Run the standard checks before submitting a change:
18
+
19
+ ```bash
20
+ python -m ruff check .
21
+ python -m pytest
22
+ python -m build
23
+ python -m twine check --strict dist/*
24
+ ```
25
+
26
+ Keep changes focused. Do not reformat or rewrite unrelated user work, and add
27
+ or update documentation whenever behavior or the public API changes.
28
+
29
+ ## Econometric changes
30
+
31
+ A new estimator is not ready for the supported API based on smoke tests alone.
32
+ A promotion proposal should include:
33
+
34
+ 1. the formal model, likelihood, parameterization, and identification
35
+ conditions;
36
+ 2. input validation and tests for expected failure modes;
37
+ 3. result-contract parity for prediction and inference where meaningful;
38
+ 4. comparison with an independent maintained implementation or published
39
+ benchmark;
40
+ 5. deterministic simulation-recovery evidence; and
41
+ 6. numerical-stability checks, including boundaries and poorly conditioned
42
+ designs.
43
+
44
+ New or materially unverified model families should begin in
45
+ `limiteddepkit.experimental`. Experimental status must be visible in imports
46
+ and documentation. Passing a focused numerical check may be reported as
47
+ evidence, but must not be described as stable promotion or broader certification.
48
+
49
+ For early design questions, parity reports, and adoption notes, use GitHub
50
+ Discussions before opening a narrow implementation issue. The public-development
51
+ expectations are summarized in [docs/OPEN_DEVELOPMENT.md](docs/OPEN_DEVELOPMENT.md).
52
+
53
+ ## Tests and style
54
+
55
+ - Put fast behavioral tests under `tests/`.
56
+ - Mark external-reference checks with `@pytest.mark.validation`.
57
+ - Mark recovery or Monte Carlo checks with `@pytest.mark.simulation`.
58
+ - Use deterministic random seeds and explain statistical tolerances.
59
+ - Keep public behavior compatible with Python 3.10.
60
+ - Follow the configured Ruff rules and 100-character line length.
61
+
62
+ ## Reporting bugs
63
+
64
+ Include a minimal reproducer, Python and dependency versions, the observed and
65
+ expected behavior, and any warnings or convergence information. Do not include
66
+ confidential data. For vulnerabilities, follow [SECURITY.md](SECURITY.md)
67
+ instead of opening a public issue.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Oluwajuwon Mayomi Akanbi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,17 @@
1
+ include CHANGELOG.md
2
+ include CITATION.cff
3
+ include CONTRIBUTING.md
4
+ include LICENSE
5
+ include README.md
6
+ include RELEASING.md
7
+ include SECURITY.md
8
+ include validation/PARITY_EVIDENCE.md
9
+ recursive-include docs *.md
10
+ recursive-include tests *.py
11
+ recursive-include validation/stata *.do *.md *.ps1 *.py
12
+ prune validation/stata/work
13
+ recursive-include validation/r *.R *.md *.ps1 *.py
14
+ prune validation/r/work
15
+ recursive-include validation/promoted *.R *.do *.md *.py
16
+ prune validation/promoted/work
17
+ prune _out_of_scope