bossanova 0.1.0.dev9__tar.gz → 0.1.0.dev11__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.
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/.gitignore +1 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/PKG-INFO +27 -18
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/README.md +24 -17
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/builders/dataframes.py +46 -35
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/builders/results.py +8 -6
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/builders/state.py +24 -17
- bossanova-0.1.0.dev11/bossanova/internal/containers/schemas.py +587 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/structs/data.py +4 -4
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/structs/display.py +9 -9
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/structs/explore.py +3 -3
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/structs/formula.py +2 -2
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/structs/specs.py +2 -2
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/structs/state.py +32 -21
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/design/reference.py +40 -8
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/__init__.py +2 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/glmer.py +102 -55
- bossanova-0.1.0.dev11/bossanova/internal/maths/solvers/quadrature.py +272 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/common/factors.py +0 -59
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/compare/compare.py +10 -1
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/compare/cv.py +11 -9
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/compare/deviance.py +27 -14
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/compare/f_test.py +11 -9
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/compare/helpers.py +14 -6
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/compare/lrt_compare.py +37 -12
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/convergence.py +1 -1
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/diagnostics.py +43 -43
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/fit/__init__.py +1 -1
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/fit/glmer.py +14 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/fit/lmer.py +1 -67
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/asymptotic.py +15 -3
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/bootstrap.py +62 -1
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/mee.py +5 -3
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/profile.py +5 -3
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/__init__.py +12 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/compute.py +227 -33
- bossanova-0.1.0.dev11/bossanova/internal/operations/marginal/conditions.py +225 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/contrasts.py +148 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/emm.py +18 -1
- bossanova-0.1.0.dev11/bossanova/internal/operations/profile.py +8 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/glmer.py +0 -11
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/lmer.py +0 -10
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/dgp/glm.py +2 -17
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/varying.py +12 -11
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/cognition.py +132 -105
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/compare.py +2 -2
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/core.py +8 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/core_sizing.py +16 -4
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/core_viz.py +170 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/dag.py +110 -37
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/design.py +32 -24
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/fit.py +3 -3
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/fit_layers.py +6 -6
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/lattice.py +112 -28
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/mem.py +4 -4
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/params.py +2 -2
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/predict.py +32 -12
- bossanova-0.1.0.dev11/bossanova/internal/viz/profile.py +112 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/ranef.py +4 -2
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/resamples.py +4 -2
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/vif.py +84 -45
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/model/core.py +2 -6
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/pyproject.toml +3 -1
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/tests/bossanova_tests/hypothesis/README.md +3 -2
- bossanova-0.1.0.dev9/201b-ghct-05-models/README.md +0 -11
- bossanova-0.1.0.dev9/bossanova/internal/containers/schemas.py +0 -372
- bossanova-0.1.0.dev9/bossanova/internal/operations/profile.py +0 -61
- bossanova-0.1.0.dev9/bossanova/internal/viz/profile.py +0 -97
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/LICENSE +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/README.md +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/advertising.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/cake.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/chickweight.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/credit.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/gammas.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/mtcars.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/penguins.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/poker.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/sleep.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/titanic.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/titanic_test.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/data/titanic_train.csv +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/distributions/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/distributions/continuous.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/distributions/discrete.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/distributions/varying.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/expressions.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/builders/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/builders/data.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/builders/specs.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/structs/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/validators.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/backend/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/backend/dispatch.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/backend/jax.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/backend/numpy.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/backend/protocol.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/batching.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/config.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/convergence.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/design/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/design/coding.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/design/names.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/design/z_matrix.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/differentiation.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/distributions/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/distributions/algebra.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/distributions/base.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/distributions/core.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/distributions/derived.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/distributions/factories.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/distributions/plotting.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/distributions/probability.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/binomial.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/create.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/gamma.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/gaussian.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/links.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/poisson.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/response.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/schema.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/family/tdist.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/contrasts.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/diagnostics.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/estimation.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/hypothesis.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/information_criteria.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/profile.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/sandwich.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/satterthwaite.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/wald_variance.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/inference/welch.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/linalg/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/linalg/qr.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/linalg/sparse.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/linalg/svd.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/predict.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/rng.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/glm.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/heuristics.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/initialization.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/lambda_builder.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/lambda_sparse.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/lambda_template.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/lmer.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/optimize.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/solvers/pirls_sparse.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/tolerances.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/transforms.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/variance.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/maths/weights.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/bundle.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/common/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/common/classify.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/common/formula_utils.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/compare/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/compare/lrt.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/compare/refit.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/contrasts.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/fit/dispatch.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/fit/glm.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/fit/ols.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/fit/rank.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/design.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/encoding.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/evaluate.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/evaluate_newdata.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/evaluate_transforms.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/helpers.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/parse.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/parser/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/parser/expr.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/parser/parser.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/parser/scanner.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/parser/token.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/formula/random_effects.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/cv.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/permutation.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/prediction.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/resample_bundle.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/satterthwaite_emm.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/infer/simulation.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/explore.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/grid.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/inference.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/joint_tests.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/slopes.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/marginal/validation.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/predict.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/rendering/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/rendering/latex.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/common.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/core.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/glm.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/lm.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/lm_bca.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/lm_operators.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/mixed.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/results.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/resample/utils.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/dgp/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/dgp/generate.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/dgp/glmer.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/dgp/lm.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/dgp/lmer.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/harness.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/metrics.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/simulation/model_sim.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/operations/transforms.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/README.md +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/core_data.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/core_protocols.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/fit_builders.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/helpers.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/layout.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/relationships.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/viz/resid.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/model/__init__.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/model/summary.py +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/py.typed +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/tests/bossanova_benchmarks/bootstrap/data/README.md +0 -0
- {bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/tests/bossanova_benchmarks/insteval/data/README.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bossanova
|
|
3
|
-
Version: 0.1.0.
|
|
3
|
+
Version: 0.1.0.dev11
|
|
4
4
|
Summary: Bridging statistical cultures with some jazz
|
|
5
5
|
Author: Eshin Jolly
|
|
6
6
|
License-Expression: MIT
|
|
@@ -9,6 +9,8 @@ Keywords: analysis,multi-level-modeling,regression,statistics
|
|
|
9
9
|
Classifier: Intended Audience :: Science/Research
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
14
|
Requires-Python: >=3.11
|
|
13
15
|
Requires-Dist: attrs>=24.2.0
|
|
14
16
|
Requires-Dist: jax>=0.8.0
|
|
@@ -28,20 +30,16 @@ Description-Content-Type: text/markdown
|
|
|
28
30
|
|
|
29
31
|
Unified mixed-effects modeling in Python. JAX + NumPy backends. R/lme4 parity.
|
|
30
32
|
|
|
31
|
-
##
|
|
33
|
+
## Installation
|
|
32
34
|
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
+
```bash
|
|
36
|
+
uv add bossanova
|
|
37
|
+
```
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
or
|
|
37
40
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
m.params
|
|
41
|
-
|
|
42
|
-
# Explore marginal effects
|
|
43
|
-
m.explore("Days").infer()
|
|
44
|
-
m.effects
|
|
41
|
+
```bash
|
|
42
|
+
pip install bossanova
|
|
45
43
|
```
|
|
46
44
|
|
|
47
45
|
## Features
|
|
@@ -50,15 +48,26 @@ m.effects
|
|
|
50
48
|
- **R-style formulas** — `y ~ x + (1|group)`, `factor()`, `center()`, `scale()`
|
|
51
49
|
- **Multiple inference strategies** — asymptotic, bootstrap, permutation, cross-validation
|
|
52
50
|
- **Marginal effects** — `.explore()` for estimated marginal means, slopes, and contrasts
|
|
53
|
-
- **JAX acceleration** — automatic
|
|
51
|
+
- **JAX acceleration** — automatic acceleration when JAX is available, NumPy fallback
|
|
54
52
|
- **R parity** — matches lme4/emmeans within f64 tolerance
|
|
55
53
|
|
|
56
|
-
##
|
|
54
|
+
## Quick Example
|
|
57
55
|
|
|
58
|
-
```
|
|
59
|
-
|
|
56
|
+
```python
|
|
57
|
+
from bossanova import model, load_dataset
|
|
58
|
+
|
|
59
|
+
df = load_dataset("sleepstudy")
|
|
60
|
+
|
|
61
|
+
# Fit a mixed model
|
|
62
|
+
m = model("Reaction ~ Days + (1 + Days | Subject)", data=df).fit()
|
|
63
|
+
m.params
|
|
64
|
+
|
|
65
|
+
# Perform bootstrapped parameter inference
|
|
66
|
+
m.infer(how='boot')
|
|
67
|
+
|
|
68
|
+
# Explore marginal effects
|
|
69
|
+
m.explore("Days")
|
|
70
|
+
m.effects
|
|
60
71
|
```
|
|
61
72
|
|
|
62
|
-
## Documentation
|
|
63
73
|
|
|
64
|
-
See the [full documentation](https://bossanova.readthedocs.io/) for tutorials, API reference, and examples.
|
|
@@ -2,20 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Unified mixed-effects modeling in Python. JAX + NumPy backends. R/lme4 parity.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
```
|
|
8
|
-
|
|
7
|
+
```bash
|
|
8
|
+
uv add bossanova
|
|
9
|
+
```
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
or
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
m.params
|
|
15
|
-
|
|
16
|
-
# Explore marginal effects
|
|
17
|
-
m.explore("Days").infer()
|
|
18
|
-
m.effects
|
|
13
|
+
```bash
|
|
14
|
+
pip install bossanova
|
|
19
15
|
```
|
|
20
16
|
|
|
21
17
|
## Features
|
|
@@ -24,15 +20,26 @@ m.effects
|
|
|
24
20
|
- **R-style formulas** — `y ~ x + (1|group)`, `factor()`, `center()`, `scale()`
|
|
25
21
|
- **Multiple inference strategies** — asymptotic, bootstrap, permutation, cross-validation
|
|
26
22
|
- **Marginal effects** — `.explore()` for estimated marginal means, slopes, and contrasts
|
|
27
|
-
- **JAX acceleration** — automatic
|
|
23
|
+
- **JAX acceleration** — automatic acceleration when JAX is available, NumPy fallback
|
|
28
24
|
- **R parity** — matches lme4/emmeans within f64 tolerance
|
|
29
25
|
|
|
30
|
-
##
|
|
26
|
+
## Quick Example
|
|
31
27
|
|
|
32
|
-
```
|
|
33
|
-
|
|
28
|
+
```python
|
|
29
|
+
from bossanova import model, load_dataset
|
|
30
|
+
|
|
31
|
+
df = load_dataset("sleepstudy")
|
|
32
|
+
|
|
33
|
+
# Fit a mixed model
|
|
34
|
+
m = model("Reaction ~ Days + (1 + Days | Subject)", data=df).fit()
|
|
35
|
+
m.params
|
|
36
|
+
|
|
37
|
+
# Perform bootstrapped parameter inference
|
|
38
|
+
m.infer(how='boot')
|
|
39
|
+
|
|
40
|
+
# Explore marginal effects
|
|
41
|
+
m.explore("Days")
|
|
42
|
+
m.effects
|
|
34
43
|
```
|
|
35
44
|
|
|
36
|
-
## Documentation
|
|
37
45
|
|
|
38
|
-
See the [full documentation](https://bossanova.readthedocs.io/) for tutorials, API reference, and examples.
|
{bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/builders/dataframes.py
RENAMED
|
@@ -15,6 +15,13 @@ import polars as pl
|
|
|
15
15
|
from bossanova.internal.containers.builders.results import (
|
|
16
16
|
append_inference_columns,
|
|
17
17
|
)
|
|
18
|
+
from bossanova.internal.containers.schemas import (
|
|
19
|
+
Col,
|
|
20
|
+
ParamsAsymp,
|
|
21
|
+
ParamsBase,
|
|
22
|
+
ParamsCv,
|
|
23
|
+
VaryingCorrSchema,
|
|
24
|
+
)
|
|
18
25
|
|
|
19
26
|
if TYPE_CHECKING:
|
|
20
27
|
from bossanova.internal.containers.structs import (
|
|
@@ -60,21 +67,22 @@ def build_params_dataframe(
|
|
|
60
67
|
terms = list(bundle.X_names)
|
|
61
68
|
estimates = fit.coef.tolist()
|
|
62
69
|
|
|
63
|
-
data: dict[str, list] = {
|
|
70
|
+
data: dict[str, list] = {Col.TERM: terms, Col.ESTIMATE: estimates}
|
|
64
71
|
|
|
65
72
|
if params_inference is not None:
|
|
66
73
|
if params_inference.method == "cv":
|
|
67
|
-
data[
|
|
68
|
-
data[
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
data[Col.PRE] = params_inference.pre.tolist()
|
|
75
|
+
data[Col.PRE_SD] = params_inference.pre_sd.tolist()
|
|
76
|
+
return pl.DataFrame(data, schema=ParamsCv)
|
|
77
|
+
data[Col.SE] = params_inference.se.tolist()
|
|
78
|
+
data[Col.STATISTIC] = params_inference.statistic.tolist()
|
|
79
|
+
data[Col.DF] = params_inference.df.tolist()
|
|
80
|
+
data[Col.P_VALUE] = params_inference.p_value.tolist()
|
|
81
|
+
data[Col.CI_LOWER] = params_inference.ci_lower.tolist()
|
|
82
|
+
data[Col.CI_UPPER] = params_inference.ci_upper.tolist()
|
|
83
|
+
return pl.DataFrame(data, schema=ParamsAsymp)
|
|
76
84
|
|
|
77
|
-
return pl.DataFrame(data)
|
|
85
|
+
return pl.DataFrame(data, schema=ParamsBase)
|
|
78
86
|
|
|
79
87
|
|
|
80
88
|
def build_varying_offsets_dataframe(
|
|
@@ -99,11 +107,11 @@ def build_varying_offsets_dataframe(
|
|
|
99
107
|
if effect_name in varying_offsets.pi_lower:
|
|
100
108
|
result = result.with_columns(
|
|
101
109
|
pl.Series(
|
|
102
|
-
f"
|
|
110
|
+
f"{Col.PI_LOWER_PREFIX}{effect_name}",
|
|
103
111
|
varying_offsets.pi_lower[effect_name],
|
|
104
112
|
),
|
|
105
113
|
pl.Series(
|
|
106
|
-
f"
|
|
114
|
+
f"{Col.PI_UPPER_PREFIX}{effect_name}",
|
|
107
115
|
varying_offsets.pi_upper[effect_name],
|
|
108
116
|
),
|
|
109
117
|
)
|
|
@@ -159,15 +167,15 @@ def build_varying_spread_dataframe(
|
|
|
159
167
|
ci_upper_vals = []
|
|
160
168
|
ci_method_vals = []
|
|
161
169
|
|
|
162
|
-
for comp_name in result[
|
|
170
|
+
for comp_name in result[Col.COMPONENT].to_list():
|
|
163
171
|
ci_lower_vals.append(varying_spread.ci_lower.get(comp_name, float("nan")))
|
|
164
172
|
ci_upper_vals.append(varying_spread.ci_upper.get(comp_name, float("nan")))
|
|
165
173
|
ci_method_vals.append(varying_spread.ci_method or "")
|
|
166
174
|
|
|
167
175
|
result = result.with_columns(
|
|
168
|
-
pl.Series(
|
|
169
|
-
pl.Series(
|
|
170
|
-
pl.Series(
|
|
176
|
+
pl.Series(Col.CI_LOWER, ci_lower_vals),
|
|
177
|
+
pl.Series(Col.CI_UPPER, ci_upper_vals),
|
|
178
|
+
pl.Series(Col.CI_METHOD, ci_method_vals),
|
|
171
179
|
)
|
|
172
180
|
|
|
173
181
|
return result
|
|
@@ -214,11 +222,12 @@ def build_varying_corr_dataframe(
|
|
|
214
222
|
|
|
215
223
|
return pl.DataFrame(
|
|
216
224
|
{
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
}
|
|
225
|
+
Col.GROUP: groups,
|
|
226
|
+
Col.EFFECT1: effect1s,
|
|
227
|
+
Col.EFFECT2: effect2s,
|
|
228
|
+
Col.CORR: corrs,
|
|
229
|
+
},
|
|
230
|
+
schema=VaryingCorrSchema,
|
|
222
231
|
)
|
|
223
232
|
|
|
224
233
|
|
|
@@ -248,7 +257,7 @@ def build_effects_dataframe(mee: MeeState) -> pl.DataFrame:
|
|
|
248
257
|
columns.
|
|
249
258
|
"""
|
|
250
259
|
result = mee.grid.clone()
|
|
251
|
-
result = result.with_columns(pl.Series(
|
|
260
|
+
result = result.with_columns(pl.Series(Col.ESTIMATE, mee.estimate))
|
|
252
261
|
return append_inference_columns(result, mee)
|
|
253
262
|
|
|
254
263
|
|
|
@@ -262,15 +271,15 @@ def build_joint_test_dataframe(state: JointTestState) -> pl.DataFrame:
|
|
|
262
271
|
DataFrame with ``term``, ``df1``, optional ``df2``,
|
|
263
272
|
``f_ratio`` or ``Chisq``, and ``p_value`` columns.
|
|
264
273
|
"""
|
|
265
|
-
result = pl.DataFrame({
|
|
266
|
-
result = result.with_columns(pl.Series(
|
|
274
|
+
result = pl.DataFrame({Col.TERM: list(state.terms)})
|
|
275
|
+
result = result.with_columns(pl.Series(Col.DF1, state.df1))
|
|
267
276
|
|
|
268
277
|
if state.df2 is not None:
|
|
269
|
-
result = result.with_columns(pl.Series(
|
|
278
|
+
result = result.with_columns(pl.Series(Col.DF2, state.df2))
|
|
270
279
|
|
|
271
|
-
stat_name =
|
|
280
|
+
stat_name = Col.F_RATIO if state.test_type == "F" else Col.CHISQ
|
|
272
281
|
result = result.with_columns(pl.Series(stat_name, state.statistic))
|
|
273
|
-
result = result.with_columns(pl.Series(
|
|
282
|
+
result = result.with_columns(pl.Series(Col.P_VALUE, state.p_value))
|
|
274
283
|
|
|
275
284
|
return result
|
|
276
285
|
|
|
@@ -286,18 +295,18 @@ def build_predictions_dataframe(pred: PredictionState) -> pl.DataFrame:
|
|
|
286
295
|
DataFrame with ``fitted``, optional ``link``, inference columns,
|
|
287
296
|
and optional CV columns.
|
|
288
297
|
"""
|
|
289
|
-
data: dict[str, list] = {
|
|
298
|
+
data: dict[str, list] = {Col.FITTED: pred.fitted.tolist()}
|
|
290
299
|
if pred.link is not None:
|
|
291
|
-
data[
|
|
300
|
+
data[Col.LINK] = pred.link.tolist()
|
|
292
301
|
result = pl.DataFrame(data)
|
|
293
302
|
|
|
294
303
|
result = append_inference_columns(result, pred)
|
|
295
304
|
|
|
296
305
|
if pred.has_cv:
|
|
297
306
|
result = result.with_columns(
|
|
298
|
-
pl.Series(
|
|
299
|
-
pl.Series(
|
|
300
|
-
pl.Series(
|
|
307
|
+
pl.Series(Col.CV_FITTED, pred.cv_fitted),
|
|
308
|
+
pl.Series(Col.CV_RESIDUAL, pred.cv_residual),
|
|
309
|
+
pl.Series(Col.CV_FOLD, pred.cv_fold),
|
|
301
310
|
)
|
|
302
311
|
|
|
303
312
|
return result
|
|
@@ -321,9 +330,11 @@ def build_simulations_dataframe(
|
|
|
321
330
|
|
|
322
331
|
if sim_inference is not None:
|
|
323
332
|
if sim_inference.sim_mean is not None:
|
|
324
|
-
result = result.with_columns(
|
|
333
|
+
result = result.with_columns(
|
|
334
|
+
pl.Series(Col.SIM_MEAN, sim_inference.sim_mean)
|
|
335
|
+
)
|
|
325
336
|
if sim_inference.sim_sd is not None:
|
|
326
|
-
result = result.with_columns(pl.Series(
|
|
337
|
+
result = result.with_columns(pl.Series(Col.SIM_SD, sim_inference.sim_sd))
|
|
327
338
|
for q_name, q_values in sim_inference.sim_quantiles.items():
|
|
328
339
|
result = result.with_columns(pl.Series(q_name, q_values))
|
|
329
340
|
|
{bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/builders/results.py
RENAMED
|
@@ -10,18 +10,20 @@ from __future__ import annotations
|
|
|
10
10
|
|
|
11
11
|
import polars as pl
|
|
12
12
|
|
|
13
|
+
from bossanova.internal.containers.schemas import Col
|
|
14
|
+
|
|
13
15
|
__all__ = [
|
|
14
16
|
"append_inference_columns",
|
|
15
17
|
]
|
|
16
18
|
|
|
17
19
|
# Standard inference column names, in canonical display order.
|
|
18
20
|
_INFERENCE_COLS: tuple[str, ...] = (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
Col.SE,
|
|
22
|
+
Col.STATISTIC,
|
|
23
|
+
Col.DF,
|
|
24
|
+
Col.P_VALUE,
|
|
25
|
+
Col.CI_LOWER,
|
|
26
|
+
Col.CI_UPPER,
|
|
25
27
|
)
|
|
26
28
|
|
|
27
29
|
|
{bossanova-0.1.0.dev9 → bossanova-0.1.0.dev11}/bossanova/internal/containers/builders/state.py
RENAMED
|
@@ -6,6 +6,11 @@ from typing import TYPE_CHECKING
|
|
|
6
6
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
|
|
9
|
+
from bossanova.internal.containers.schemas import (
|
|
10
|
+
Col,
|
|
11
|
+
ResamplesBootSchema,
|
|
12
|
+
ResamplesPermSchema,
|
|
13
|
+
)
|
|
9
14
|
from bossanova.internal.containers.structs.state import (
|
|
10
15
|
CVState,
|
|
11
16
|
FitState,
|
|
@@ -708,16 +713,17 @@ def build_resamples_dataframe(rs: ResamplesState) -> pl.DataFrame:
|
|
|
708
713
|
|
|
709
714
|
return pl.DataFrame(
|
|
710
715
|
{
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
}
|
|
716
|
+
Col.TERM: names,
|
|
717
|
+
Col.OBSERVED: observed.tolist(),
|
|
718
|
+
Col.MEAN: means.tolist(),
|
|
719
|
+
Col.SE: ses.tolist(),
|
|
720
|
+
Col.CI_LOWER: ci_lower.tolist(),
|
|
721
|
+
Col.CI_UPPER: ci_upper.tolist(),
|
|
722
|
+
Col.N_RESAMPLES: [rs.n_resamples] * len(names),
|
|
723
|
+
Col.METHOD: [rs.method] * len(names),
|
|
724
|
+
Col.CONTEXT: [rs.context] * len(names),
|
|
725
|
+
},
|
|
726
|
+
schema=ResamplesBootSchema,
|
|
721
727
|
)
|
|
722
728
|
|
|
723
729
|
# Permutation: compute two-sided p-values
|
|
@@ -725,11 +731,12 @@ def build_resamples_dataframe(rs: ResamplesState) -> pl.DataFrame:
|
|
|
725
731
|
|
|
726
732
|
return pl.DataFrame(
|
|
727
733
|
{
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
}
|
|
734
|
+
Col.TERM: names,
|
|
735
|
+
Col.OBSERVED: observed.tolist(),
|
|
736
|
+
Col.P_VALUE: p_values.tolist(),
|
|
737
|
+
Col.N_RESAMPLES: [rs.n_resamples] * len(names),
|
|
738
|
+
Col.METHOD: [rs.method] * len(names),
|
|
739
|
+
Col.CONTEXT: [rs.context] * len(names),
|
|
740
|
+
},
|
|
741
|
+
schema=ResamplesPermSchema,
|
|
735
742
|
)
|