modeltrees 0.1.0__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.
- modeltrees-0.1.0/.gitignore +30 -0
- modeltrees-0.1.0/CHANGELOG.md +37 -0
- modeltrees-0.1.0/CITATION.cff +42 -0
- modeltrees-0.1.0/LICENSE +674 -0
- modeltrees-0.1.0/PKG-INFO +374 -0
- modeltrees-0.1.0/README.md +346 -0
- modeltrees-0.1.0/THIRD_PARTY_NOTICES.md +126 -0
- modeltrees-0.1.0/pyproject.toml +82 -0
- modeltrees-0.1.0/scripts/smoke_wheel.py +87 -0
- modeltrees-0.1.0/src/modeltrees/__init__.py +74 -0
- modeltrees-0.1.0/src/modeltrees/_api.py +1351 -0
- modeltrees-0.1.0/src/modeltrees/_design.py +505 -0
- modeltrees-0.1.0/src/modeltrees/_formula.py +329 -0
- modeltrees-0.1.0/src/modeltrees/_frame.py +260 -0
- modeltrees-0.1.0/src/modeltrees/_hansen_table.py +637 -0
- modeltrees-0.1.0/src/modeltrees/_loglik.py +37 -0
- modeltrees-0.1.0/src/modeltrees/_parallel.py +237 -0
- modeltrees-0.1.0/src/modeltrees/_predict.py +361 -0
- modeltrees-0.1.0/src/modeltrees/_reference.py +29 -0
- modeltrees-0.1.0/src/modeltrees/_report.py +393 -0
- modeltrees-0.1.0/src/modeltrees/_response.py +114 -0
- modeltrees-0.1.0/src/modeltrees/_vcov.py +223 -0
- modeltrees-0.1.0/src/modeltrees/errors.py +62 -0
- modeltrees-0.1.0/src/modeltrees/instability.py +385 -0
- modeltrees-0.1.0/src/modeltrees/models/__init__.py +38 -0
- modeltrees-0.1.0/src/modeltrees/models/_common.py +52 -0
- modeltrees-0.1.0/src/modeltrees/models/_qr.py +232 -0
- modeltrees-0.1.0/src/modeltrees/models/families.py +423 -0
- modeltrees-0.1.0/src/modeltrees/models/glm.py +215 -0
- modeltrees-0.1.0/src/modeltrees/models/glm_fit.py +482 -0
- modeltrees-0.1.0/src/modeltrees/models/lm.py +236 -0
- modeltrees-0.1.0/src/modeltrees/models/lm_fit.py +113 -0
- modeltrees-0.1.0/src/modeltrees/models/multinom.py +453 -0
- modeltrees-0.1.0/src/modeltrees/models/negbin.py +482 -0
- modeltrees-0.1.0/src/modeltrees/models/safelogit.py +256 -0
- modeltrees-0.1.0/src/modeltrees/node_model.py +219 -0
- modeltrees-0.1.0/src/modeltrees/pruning.py +75 -0
- modeltrees-0.1.0/src/modeltrees/pvalues.py +215 -0
- modeltrees-0.1.0/src/modeltrees/py.typed +0 -0
- modeltrees-0.1.0/src/modeltrees/split_search.py +582 -0
- modeltrees-0.1.0/src/modeltrees/tree.py +609 -0
- modeltrees-0.1.0/tests/blind_compare.py +770 -0
- modeltrees-0.1.0/tests/conftest.py +12 -0
- modeltrees-0.1.0/tests/fixture_frames.py +113 -0
- modeltrees-0.1.0/tests/fixtures/README.md +1011 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/README.md +189 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/cases/blind_03_lm.json +69 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/cases/blind_13_glm.json +69 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/cases/blind_22_glm.json +71 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/cases/blind_29_negbin.json +84 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/cases/blind_36_negbin.json +76 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/cases/blind_43_safelogit.json +89 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/cases/blind_47_safelogit.json +91 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/cases/blind_52_multinom.json +70 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/cases/blind_60_multinom.json +75 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_03_lm.csv +2954 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_03_lm.schema.json +46 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_13_glm.csv +1016 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_13_glm.schema.json +42 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_22_glm.csv +875 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_22_glm.schema.json +46 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_29_negbin.csv +413 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_29_negbin.schema.json +54 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_36_negbin.csv +962 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_36_negbin.schema.json +45 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_43_safelogit.csv +829 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_43_safelogit.schema.json +51 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_47_safelogit.csv +786 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_47_safelogit.schema.json +52 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_52_multinom.csv +622 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_52_multinom.schema.json +43 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_60_multinom.csv +779 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/data/blind_60_multinom.schema.json +43 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/trees/blind_03_lm.json +15598 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/trees/blind_13_glm.json +13442 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/trees/blind_22_glm.json +5106 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/trees/blind_29_negbin.json +1714 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/trees/blind_36_negbin.json +12865 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/trees/blind_43_safelogit.json +1604 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/trees/blind_47_safelogit.json +1552 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/trees/blind_52_multinom.json +3389 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/trees/blind_60_multinom.json +2613 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/vcov/blind_03_lm.json +395 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/vcov/blind_13_glm.json +1839 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/vcov/blind_22_glm.json +584 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/vcov/blind_43_safelogit.json +46 -0
- modeltrees-0.1.0/tests/fixtures/blind_cases/vcov/blind_52_multinom.json +281 -0
- modeltrees-0.1.0/tests/fixtures/cluster_trees/sim_cluster_models_glmtree_poisson_cluster.json +1868 -0
- modeltrees-0.1.0/tests/fixtures/cluster_trees/sim_cluster_models_multinom_cluster.json +1888 -0
- modeltrees-0.1.0/tests/fixtures/cluster_trees/sim_cluster_models_negbin_cluster.json +1893 -0
- modeltrees-0.1.0/tests/fixtures/cluster_trees/sim_cluster_models_safelogit_cluster.json +1894 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_binomial_logit.csv +301 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_binomial_logit.schema.json +28 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_binomial_near_separation.csv +101 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_binomial_near_separation.schema.json +24 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_binomial_not_converged.csv +101 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_binomial_not_converged.schema.json +24 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_binomial_proportions_weighted.csv +121 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_binomial_proportions_weighted.schema.json +28 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_gaussian_identity.csv +151 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_gaussian_identity.schema.json +28 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_gaussian_rank_deficient.csv +101 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_gaussian_rank_deficient.schema.json +32 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_gaussian_weighted.csv +151 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_gaussian_weighted.schema.json +32 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_log.csv +201 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_log.schema.json +28 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_start.csv +201 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_start.schema.json +24 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_step_halving.csv +41 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_step_halving.schema.json +24 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_step_halving_maxit.csv +41 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_step_halving_maxit.schema.json +24 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_zeros.csv +201 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_zeros.schema.json +24 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_zeros_offset_weighted.csv +201 -0
- modeltrees-0.1.0/tests/fixtures/data/glm_poisson_zeros_offset_weighted.schema.json +36 -0
- modeltrees-0.1.0/tests/fixtures/data/quine.csv +147 -0
- modeltrees-0.1.0/tests/fixtures/data/quine.schema.json +36 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_binomial.csv +801 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_binomial.schema.json +46 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_cluster.csv +814 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_cluster.schema.json +54 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_cluster_few.csv +740 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_cluster_few.schema.json +36 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_cluster_models.csv +831 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_cluster_models.schema.json +63 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_diabetes_like.csv +769 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_diabetes_like.schema.json +49 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_factor.csv +601 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_factor.schema.json +50 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_logical.csv +501 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_logical.schema.json +36 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_logical_numeric.csv +501 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_logical_numeric.schema.json +36 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_na.csv +501 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_na.schema.json +38 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_ordered.csv +701 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_formula_ordered.schema.json +34 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_gaussian.csv +601 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_gaussian.schema.json +59 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_gaussian_nonzero_w0.csv +544 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_gaussian_nonzero_w0.schema.json +61 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_multinom.csv +901 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_multinom.schema.json +52 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_multinom_noref.csv +601 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_multinom_noref.schema.json +34 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_negbin.csv +601 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_negbin.schema.json +57 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_poisson.csv +801 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_poisson.schema.json +50 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_separation.csv +501 -0
- modeltrees-0.1.0/tests/fixtures/data/sim_separation.schema.json +41 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/quine_negbin_intercept.json +687 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/quine_negbin_intercept_deviance.json +675 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_multinom_cluster.json +2028 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_multinom_noref_onesplit.json +7971 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_multinom_nosplit.json +1026 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_multinom_onesplit.json +2024 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_negbin_cluster.json +1433 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_negbin_nosplit.json +727 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_negbin_onesplit.json +1429 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_negbin_theta_only.json +727 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_negbin_weights.json +3284 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_separation_safelogit.json +1445 -0
- modeltrees-0.1.0/tests/fixtures/extension_trees/sim_separation_safelogit_plain.json +1230 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_factor_glmtree_binomial_factor.json +1471 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_factor_glmtree_poisson_onepart.json +1461 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_factor_lmtree_factor.json +1463 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_factor_lmtree_noint.json +1462 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_factor_lmtree_onepart.json +1455 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_logical_lmtree_logical.json +1253 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_logical_lmtree_logical_noint.json +1253 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_logical_lmtree_logical_split.json +56 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_logical_numeric_lmtree_split.json +1250 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_na_lmtree_weights.json +3003 -0
- modeltrees-0.1.0/tests/fixtures/formula_trees/sim_formula_ordered_lmtree.json +2097 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_binomial_logit.json +355 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_binomial_near_separation.json +155 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_binomial_not_converged.json +155 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_binomial_proportions_weighted.json +175 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_gaussian_identity.json +361 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_gaussian_rank_deficient.json +261 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_gaussian_weighted.json +361 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_poisson_log.json +255 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_poisson_start.json +255 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_poisson_step_halving.json +95 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_poisson_step_halving_maxit.json +98 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_poisson_zeros.json +255 -0
- modeltrees-0.1.0/tests/fixtures/glm/glm_poisson_zeros_offset_weighted.json +255 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/multinom_absent_class.json +705 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/multinom_full.json +1861 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/multinom_reference_absent.json +696 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/multinom_single_class.json +347 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/multinom_start.json +1861 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/multinom_weights_zero.json +1861 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/negbin_quine_deviance.json +200 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/negbin_quine_eth_a_intercept.json +201 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/negbin_quine_full.json +355 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/negbin_sim_offset_weights.json +621 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/negbin_sim_start.json +1263 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/safelogit_complete.json +171 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/safelogit_constant.json +180 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/safelogit_none.json +586 -0
- modeltrees-0.1.0/tests/fixtures/node_fits/safelogit_quasi.json +751 -0
- modeltrees-0.1.0/tests/fixtures/predict/sim_binomial_glmtree_multisplit.json +340 -0
- modeltrees-0.1.0/tests/fixtures/predict/sim_gaussian_lmtree_weights.json +1932 -0
- modeltrees-0.1.0/tests/fixtures/predict/sim_poisson_glmtree_multisplit.json +452 -0
- modeltrees-0.1.0/tests/fixtures/pvalues.json +5185 -0
- modeltrees-0.1.0/tests/fixtures/thesis_quine_crosscheck.json +68 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_binomial_glmtree_aic_pruned.json +3350 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_binomial_glmtree_multisplit.json +2404 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_binomial_glmtree_multisplit_norestart.json +2404 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_binomial_glmtree_nosplit.json +918 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_binomial_glmtree_onesplit.json +1804 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_cluster_few_lmtree_cluster.json +1667 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_cluster_glmtree_binomial_cluster.json +2473 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_cluster_glmtree_binomial_cluster_weights.json +2643 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_cluster_glmtree_binomial_nocluster.json +3526 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_cluster_lmtree_cluster.json +1828 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_cluster_lmtree_cluster_weights.json +3366 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_cluster_lmtree_nocluster.json +3961 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_diabetes_like_glmtree_binomial.json +2080 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_diabetes_like_glmtree_binomial_aic.json +2937 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_diabetes_like_glmtree_binomial_aic_nodfsplit.json +3527 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_diabetes_like_glmtree_binomial_bic.json +2077 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_glmtree_gaussian_multisplit.json +2184 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_glmtree_gaussian_weights.json +4578 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_glmtree_gaussian_weights_nocaseweights.json +2184 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_intercept_only.json +1398 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_multisplit.json +2178 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_nosplit.json +712 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_numsplit_center.json +1398 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_onesplit.json +1398 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_trim_count.json +1398 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_weights.json +4444 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_weights_nocaseweights.json +2178 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_zero_weights.json +699 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_gaussian_lmtree_zero_weights_deleted.json +4405 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_poisson_glmtree_multisplit.json +2343 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_poisson_glmtree_nosplit.json +918 -0
- modeltrees-0.1.0/tests/fixtures/trees/sim_poisson_glmtree_weights.json +3706 -0
- modeltrees-0.1.0/tests/fixtures/vcovcl/sim_cluster_few_lmtree_cluster.json +337 -0
- modeltrees-0.1.0/tests/fixtures/vcovcl/sim_cluster_glmtree_binomial_cluster.json +577 -0
- modeltrees-0.1.0/tests/fixtures/vcovcl/sim_cluster_lmtree_cluster.json +293 -0
- modeltrees-0.1.0/tests/fixtures/vcovcl/sim_cluster_models_glmtree_poisson_cluster.json +293 -0
- modeltrees-0.1.0/tests/fixtures/vcovcl/sim_cluster_models_multinom_cluster.json +337 -0
- modeltrees-0.1.0/tests/fixtures/vcovcl/sim_cluster_models_negbin_cluster.json +293 -0
- modeltrees-0.1.0/tests/fixtures/vcovcl/sim_cluster_models_safelogit_cluster.json +293 -0
- modeltrees-0.1.0/tests/fixtures_io.py +44 -0
- modeltrees-0.1.0/tests/grown_trees.py +103 -0
- modeltrees-0.1.0/tests/slow.py +51 -0
- modeltrees-0.1.0/tests/test_api_fixtures.py +470 -0
- modeltrees-0.1.0/tests/test_blind_cases.py +353 -0
- modeltrees-0.1.0/tests/test_design.py +550 -0
- modeltrees-0.1.0/tests/test_design_fixtures.py +129 -0
- modeltrees-0.1.0/tests/test_encoding.py +75 -0
- modeltrees-0.1.0/tests/test_entry_points.py +261 -0
- modeltrees-0.1.0/tests/test_errors.py +102 -0
- modeltrees-0.1.0/tests/test_failures.py +388 -0
- modeltrees-0.1.0/tests/test_fast_paths.py +713 -0
- modeltrees-0.1.0/tests/test_formula.py +146 -0
- modeltrees-0.1.0/tests/test_formula_fixtures.py +544 -0
- modeltrees-0.1.0/tests/test_frame.py +244 -0
- modeltrees-0.1.0/tests/test_glm_fit.py +383 -0
- modeltrees-0.1.0/tests/test_hessians.py +887 -0
- modeltrees-0.1.0/tests/test_imports.py +98 -0
- modeltrees-0.1.0/tests/test_instability.py +869 -0
- modeltrees-0.1.0/tests/test_model_protocols.py +309 -0
- modeltrees-0.1.0/tests/test_model_tree.py +175 -0
- modeltrees-0.1.0/tests/test_multinom.py +880 -0
- modeltrees-0.1.0/tests/test_negbin.py +596 -0
- modeltrees-0.1.0/tests/test_node_models.py +356 -0
- modeltrees-0.1.0/tests/test_parallel.py +436 -0
- modeltrees-0.1.0/tests/test_predict.py +303 -0
- modeltrees-0.1.0/tests/test_predict_fixtures.py +205 -0
- modeltrees-0.1.0/tests/test_pvalues.py +219 -0
- modeltrees-0.1.0/tests/test_readme.py +37 -0
- modeltrees-0.1.0/tests/test_report.py +140 -0
- modeltrees-0.1.0/tests/test_response.py +153 -0
- modeltrees-0.1.0/tests/test_safelogit.py +489 -0
- modeltrees-0.1.0/tests/test_tree.py +742 -0
- modeltrees-0.1.0/tests/test_tree_vcov.py +401 -0
- modeltrees-0.1.0/tests/test_vcov.py +285 -0
- modeltrees-0.1.0/tests/test_vcov_fixtures.py +575 -0
- modeltrees-0.1.0/tests/tree_fixtures.py +92 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
.venv/
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
.ruff_cache/
|
|
7
|
+
.mypy_cache/
|
|
8
|
+
.coverage
|
|
9
|
+
htmlcov/
|
|
10
|
+
dist/
|
|
11
|
+
build/
|
|
12
|
+
*.egg-info/
|
|
13
|
+
|
|
14
|
+
# R
|
|
15
|
+
.Rhistory
|
|
16
|
+
.RData
|
|
17
|
+
.Rproj.user/
|
|
18
|
+
r/renv/library/
|
|
19
|
+
r/renv/staging/
|
|
20
|
+
r/renv/local/
|
|
21
|
+
|
|
22
|
+
# Project
|
|
23
|
+
reference/
|
|
24
|
+
notes/
|
|
25
|
+
|
|
26
|
+
# Editors and OS
|
|
27
|
+
.idea/
|
|
28
|
+
.vscode/
|
|
29
|
+
.DS_Store
|
|
30
|
+
.env
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes are listed here. Versions follow 0.x semantics: names in
|
|
4
|
+
`modeltrees.__all__` and `modeltrees.models` may still change in a minor release
|
|
5
|
+
(docs/api-design.md, section 8.4). A change that alters a grown tree gets an
|
|
6
|
+
entry in docs/decisions.md.
|
|
7
|
+
|
|
8
|
+
## 0.1.0 (2026-10-22)
|
|
9
|
+
|
|
10
|
+
First release.
|
|
11
|
+
|
|
12
|
+
- Model-based recursive partitioning ported from R's partykit 1.3-0: the
|
|
13
|
+
parameter instability tests with partykit's supLM p-values and chi-squared
|
|
14
|
+
factor tests, Bonferroni and Sidak adjustment, binary split search for
|
|
15
|
+
numeric, ordered and nominal partitioning variables, `minsize`, `maxdepth`,
|
|
16
|
+
`trim`, `restart`, `caseweights` and `numsplit`, and AIC and BIC post-pruning.
|
|
17
|
+
- Entry points `lmtree`, `glmtree` (gaussian, binomial and poisson with
|
|
18
|
+
canonical links), `negbintree`, `safelogittree`, `multinomtree`, and `mob` for
|
|
19
|
+
arrays and custom node models.
|
|
20
|
+
- Ports of R's `glm.fit`, `lm.fit`, `lm.wfit` and the LINPACK `dqrdc2` QR, and
|
|
21
|
+
of MASS's `glm.nb` and `theta.ml`.
|
|
22
|
+
- Negative binomial node model following Rusch (2012), with the log-likelihood
|
|
23
|
+
(default) or deviance split objective.
|
|
24
|
+
- Safe logit and multinomial logit node models, this project's own provisional
|
|
25
|
+
designs (docs/extensions-spec.md).
|
|
26
|
+
- Formula interface (`y ~ x1 + x2 | z1 + z2`) on any eager dataframe that
|
|
27
|
+
narwhals supports, or on a dict of arrays; levels, kinds and missing-data
|
|
28
|
+
handling as in docs/api-design.md.
|
|
29
|
+
- `cluster` for the instability tests, and cluster-robust leaf covariances
|
|
30
|
+
(`ModelTree.vcov`, HC0 and HC1 with `cadjust`) checked against
|
|
31
|
+
`sandwich::vcovCL`.
|
|
32
|
+
- `predict` with types `node`, `link`, `response`, `prob` and `class`;
|
|
33
|
+
`coef_table`, `summary`, `loglik`, `aic`, `bic` and a printed tree.
|
|
34
|
+
- Parallel split search with `n_jobs`, giving results identical to the serial
|
|
35
|
+
search under single-threaded BLAS.
|
|
36
|
+
- `modeltrees.reference_path()`, which runs the exact reference implementation
|
|
37
|
+
that the faster paths are tested against.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: >-
|
|
3
|
+
If you use modeltrees, please cite the software and the publications
|
|
4
|
+
whose methods it implements: Zeileis, Hothorn and Hornik (2008) for
|
|
5
|
+
model-based recursive partitioning, and Rusch (2012) when you use the
|
|
6
|
+
negative binomial model.
|
|
7
|
+
title: modeltrees
|
|
8
|
+
abstract: >-
|
|
9
|
+
Model-based recursive partitioning (MOB) in Python, ported from R's
|
|
10
|
+
partykit, with negative binomial, safe logit and multinomial node models.
|
|
11
|
+
type: software
|
|
12
|
+
version: 0.1.0
|
|
13
|
+
license: GPL-3.0-only
|
|
14
|
+
authors:
|
|
15
|
+
- alias: BNM
|
|
16
|
+
references:
|
|
17
|
+
- type: article
|
|
18
|
+
title: Model-Based Recursive Partitioning
|
|
19
|
+
authors:
|
|
20
|
+
- family-names: Zeileis
|
|
21
|
+
given-names: Achim
|
|
22
|
+
- family-names: Hothorn
|
|
23
|
+
given-names: Torsten
|
|
24
|
+
- family-names: Hornik
|
|
25
|
+
given-names: Kurt
|
|
26
|
+
journal: Journal of Computational and Graphical Statistics
|
|
27
|
+
volume: 17
|
|
28
|
+
issue: 2
|
|
29
|
+
start: 492
|
|
30
|
+
end: 514
|
|
31
|
+
year: 2008
|
|
32
|
+
doi: 10.1198/106186008X319331
|
|
33
|
+
- type: thesis
|
|
34
|
+
title: Recursive Partitioning of Models of a Generalized Linear Model Type
|
|
35
|
+
authors:
|
|
36
|
+
- family-names: Rusch
|
|
37
|
+
given-names: Thomas
|
|
38
|
+
thesis-type: Doctoral thesis
|
|
39
|
+
institution:
|
|
40
|
+
name: WU Vienna
|
|
41
|
+
year: 2012
|
|
42
|
+
doi: 10.57938/f43bea09-fe60-44fb-a995-ba63733c8c69
|