pystatistics 4.6.1__tar.gz → 4.6.2__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.
- {pystatistics-4.6.1 → pystatistics-4.6.2}/CHANGELOG.md +88 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/PKG-INFO +21 -1
- {pystatistics-4.6.1 → pystatistics-4.6.2}/README.md +20 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pyproject.toml +1 -1
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/__init__.py +1 -1
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/__init__.py +15 -4
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_decomposition.py +4 -278
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_differencing.py +8 -5
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_ets_fit.py +268 -330
- pystatistics-4.6.2/pystatistics/timeseries/_ets_result.py +275 -0
- pystatistics-4.6.2/pystatistics/timeseries/_ets_select.py +406 -0
- pystatistics-4.6.2/pystatistics/timeseries/_loess.py +323 -0
- pystatistics-4.6.2/pystatistics/timeseries/_stl.py +354 -0
- pystatistics-4.6.2/pystatistics/timeseries/_stl_core.py +158 -0
- pystatistics-4.6.2/pystatistics/timeseries/_stl_robust.py +226 -0
- pystatistics-4.6.2/tests/fixtures/ets_r_reference.json +1 -0
- pystatistics-4.6.2/tests/fixtures/generate_ets_r_reference.R +72 -0
- pystatistics-4.6.2/tests/fixtures/generate_stl_r_reference.R +66 -0
- pystatistics-4.6.2/tests/fixtures/stl_r_reference.json +1 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/timeseries/test_acf_stationarity.py +24 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/timeseries/test_decomposition.py +61 -5
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/timeseries/test_ets.py +341 -10
- pystatistics-4.6.2/tests/timeseries/test_loess.py +167 -0
- pystatistics-4.6.2/tests/timeseries/test_stl_r_parity.py +151 -0
- pystatistics-4.6.2/tests/timeseries/test_stl_robust.py +113 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/.github/workflows/publish.yml +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/.github/workflows/trigger-docs-rebuild.yml +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/.gitignore +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/.release/CHECKLIST.md +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/.release/UNRELEASED.md +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/.release/release.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/LICENSE +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/benchmarks/mvnmle_bench.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/benchmarks/mvnmle_gpu_per_eval.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/DESIGN.md +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/GPU_NOTES.md +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/Makefile +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/ROADMAP.md +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/_static/custom.css +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/anova.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/conf.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/core.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/descriptive.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/gam.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/hypothesis.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/index.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/mixed.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/montecarlo.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/multinomial.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/multivariate.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/mvnmle.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/ordinal.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/regression.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/survival.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/docs/timeseries.rst +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/CONVENTIONS.md +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/_contrasts.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/_levene.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/_posthoc.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/_repeated.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/_ss.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/anova/solvers.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/capabilities.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/backend.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/device.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/linalg/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/linalg/batched.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/linalg/cholesky.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/linalg/determinant.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/linalg/qr.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/linalg/solve.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/linalg/svd.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/linalg/triangular.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/optimization/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/optimization/convergence.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/precision.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/timing.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/tolerances.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/compute/torch_interop.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/datasource.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/encoding.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/exceptions.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/protocols.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/result.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/core/validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/descriptive/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/descriptive/_missing.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/descriptive/_quantile_types.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/descriptive/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/descriptive/backends/cpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/descriptive/backends/gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/descriptive/design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/descriptive/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/descriptive/solvers.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_basis.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_basis_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_basis_cr.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_basis_tp.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_constraints.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_criteria.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_edf.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_gam.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_gradient.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_pirls.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_smooth.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/_smooth_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/gam/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/_design_factories.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/_p_adjust.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/_chisq_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/_fisher_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/_ks_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/_prop_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/_t_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/_var_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/_wilcox_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/cpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/backends/gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/hypothesis/solvers.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/_chain.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/_encode.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/_rng.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/_visit.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/_gpu_encode.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/_gpu_linreg.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/_gpu_logreg.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/_gpu_methods.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/_gpu_polr.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/_gpu_polyreg.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/_gpu_spd.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/cpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/backends/gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/datasets.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/_draw.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/_linreg.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/base.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/logreg.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/norm.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/pmm.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/polr.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/polyreg.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/methods/registry.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/pooling.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mice/solvers.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_deviance.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_glmm_optimizer.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_glmm_pirls.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_grm_cpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_optimizer.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_pls.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_pls_structured.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_random_effects.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_satterthwaite.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_struct_batched.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/_struct_sparse.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/backends/grm_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/grm.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/grm_solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mixed/solvers.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/_ci.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/_influence.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/backends/cpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/backends/gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/montecarlo/solvers.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multinomial/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multinomial/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multinomial/_likelihood.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multinomial/_solver.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multinomial/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multinomial/backends/gpu_likelihood.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multinomial/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multivariate/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multivariate/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multivariate/_factor.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multivariate/_pca.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multivariate/_rotation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multivariate/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multivariate/backends/gpu_pca.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/multivariate/backends/gpu_pca_randomized.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_degeneracy.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_monotone.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_objectives/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_objectives/_batched_cholesky.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_objectives/base.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_objectives/cpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_objectives/gpu_fp32.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_objectives/gpu_fp64.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_objectives/parameterizations.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/_utils.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/_direct.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/_em_batched.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/_em_batched_np.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/_em_batched_patterns.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/_em_batched_torch.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/_optimize.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/_squarem.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/cpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/em.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/backends/gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/datasets.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/mcar_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/patterns.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/mvnmle/solvers.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/ordinal/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/ordinal/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/ordinal/_information.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/ordinal/_likelihood.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/ordinal/_solver.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/ordinal/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/ordinal/backends/gpu_likelihood.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/ordinal/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/py.typed +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/_formatting.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/_glm.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/_inputs.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/_linear.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/_nb_theta.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/_penalty.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/backends/_irls_step.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/backends/cpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/backends/cpu_glm.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/backends/gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/backends/gpu_glm.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/families.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/solvers.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/regression/terms.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/_cox.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/_discrete.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/_km.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/_logrank.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/backends/cpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/backends/gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/survival/solvers.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_acf.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_arima_batch.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_arima_factored.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_arima_fit.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_arima_forecast.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_arima_kalman.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_arima_likelihood.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_arima_order.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_arima_solution.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_common.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_ets_forecast.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_ets_models.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_stationarity.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/_whittle.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/backends/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/backends/whittle_batch_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/pystatistics/timeseries/backends/whittle_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/conftest.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/test_contrasts.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/test_design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/test_factorial.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/test_levene.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/test_oneway.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/test_posthoc.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/test_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/anova/test_repeated_measures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/benchmark_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/conftest.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/core/test_backend.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/core/test_datasource.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/core/test_exceptions.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/core/test_qr_solve.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/core/test_repr_html.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/core/test_result.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/core/test_torch_interop.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/core/test_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/conftest.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/test_backend_convention.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/test_cor.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/test_cov.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/test_describe.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/test_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/test_missing.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/test_moments.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/test_quantile.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/descriptive/test_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_ancova_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_ancova_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_bonferroni_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_bonferroni_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_eta_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_eta_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_levene_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_levene_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_oneway_balanced_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_oneway_balanced_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_oneway_unbalanced_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_oneway_unbalanced_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_rm_mixed_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_rm_mixed_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_rm_within_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_rm_within_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_tukey_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_tukey_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_twoway_balanced_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_twoway_balanced_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_twoway_unbalanced_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/anova_twoway_unbalanced_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/basic_100x3.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/basic_100x3_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/basic_100x3_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/collinear_almost.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/collinear_almost_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/collinear_almost_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_basic_100x5.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_basic_100x5_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_basic_100x5_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_constant_column.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_constant_column_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_constant_column_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_extreme_values.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_extreme_values_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_extreme_values_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_large_1000x10.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_large_1000x10_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_large_1000x10_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_nan_columnwise.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_nan_columnwise_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_nan_columnwise_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_nan_scattered.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_nan_scattered_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_nan_scattered_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_negative_correlation.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_negative_correlation_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_negative_correlation_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_perfect_correlation.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_perfect_correlation_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_perfect_correlation_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_single_column.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_single_column_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_single_column_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_ties.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_ties_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/desc_ties_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/different_scales.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/different_scales_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/different_scales_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_anova_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_descriptive_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_glm_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_hypothesis_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_mixed_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_montecarlo_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_nb_autotheta_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_survival_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/generate_weights_offset_fixtures.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_balanced.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_balanced_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_balanced_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_basic.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_basic_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_basic_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_large.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_large_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_large_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_separated.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_separated_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_binomial_separated_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_gaussian_basic.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_gaussian_basic_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_gaussian_basic_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_gaussian_large.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_gaussian_large_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_gaussian_large_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_poisson_basic.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_poisson_basic_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_poisson_basic_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_poisson_large_counts.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_poisson_large_counts_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_poisson_large_counts_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_poisson_zeros.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_poisson_zeros_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/glm_poisson_zeros_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/high_noise.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/high_noise_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/high_noise_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_chisq_2x2_yates_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_chisq_2x2_yates_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_chisq_3x3_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_chisq_3x3_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_chisq_gof_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_chisq_gof_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_chisq_gof_unequal_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_chisq_gof_unequal_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_fisher_2x2_less_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_fisher_2x2_less_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_fisher_2x2_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_fisher_2x2_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_fisher_3x3_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_fisher_3x3_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_ks_onesample_norm_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_ks_onesample_norm_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_ks_twosample_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_ks_twosample_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_prop_onesample_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_prop_onesample_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_prop_twosample_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_prop_twosample_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_t_onesample_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_t_onesample_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_t_paired_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_t_paired_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_t_pooled_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_t_pooled_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_t_welch_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_t_welch_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_var_basic_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_var_basic_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_wilcox_ranksum_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_wilcox_ranksum_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_wilcox_signed_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/htest_wilcox_signed_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/ill_conditioned.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/ill_conditioned_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/ill_conditioned_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/large_coeffs.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/large_coeffs_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/large_coeffs_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_ci_90_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_ci_90_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_ci_normal_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_ci_normal_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_ci_skewed_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_ci_skewed_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_mean_balanced_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_mean_balanced_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_mean_ordinary_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_mean_ordinary_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_median_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_median_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_variance_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_boot_variance_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_perm_greater_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_perm_greater_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_perm_not_significant_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_perm_not_significant_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_perm_significant_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mc_perm_significant_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mixed/glmm_binomial.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mixed/glmm_poisson.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mixed/lmm_crossed.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mixed/lmm_intercept.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mixed/lmm_ml.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mixed/lmm_no_effect.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mixed/lmm_slope.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mixed/mixed_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/mixed/mixed_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/nb_autotheta_cases.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/nb_autotheta_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/near_square.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/near_square_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/near_square_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/no_intercept.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/no_intercept_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/no_intercept_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_anova_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_descriptive_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_glm_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_hypothesis_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_mixed_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_montecarlo_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_nb_autotheta_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_survival_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_r_weights_offset_validation.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/run_validation.sh +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/small_noise.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/small_noise_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/small_noise_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_cox_breslow_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_cox_breslow_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_cox_single_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_cox_single_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_cox_ties_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_cox_ties_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_cox_two_cov_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_cox_two_cov_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_basic_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_basic_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_heavy_cens_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_heavy_cens_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_loglog_ci_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_loglog_ci_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_no_cens_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_no_cens_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_plain_ci_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_plain_ci_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_ties_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_km_ties_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_lr_peto_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_lr_peto_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_lr_three_group_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_lr_three_group_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_lr_two_group_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/surv_lr_two_group_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/tall_skinny.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/tall_skinny_meta.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/tall_skinny_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/validate_against_r.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/weights_offset_cases.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/fixtures/weights_offset_r_results.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/gam/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/gam/test_gam.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/conftest.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_backend_convention.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_chisq_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_design_split.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_fisher_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_ks_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_p_adjust.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_prop_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_t_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_var_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/hypothesis/test_wilcox_test.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/references/generate_categorical_fixtures.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/references/generate_mice_fixtures.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/references/mice_categorical_data.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/references/mice_categorical_reference.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/references/mice_reference.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/references/mice_validation_complete.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/references/mice_validation_data.csv +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_categorical.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_datasets.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_design.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_gpu_glm_separation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_gpu_mps.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_gpu_polr_draw.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_gpu_polr_separation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_methods.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_mice.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_polr_ridge_characterization.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_pooling.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_r_validation_categorical.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_rng.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mice/test_visit.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/conftest.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_compute_se.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_conf_int.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_glmm.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_grm.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_lmm_crossed.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_lmm_extreme_ratio.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_lmm_intercept.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_lmm_nested.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_lmm_slope.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_pls.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_random_effects.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_satterthwaite.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_singular.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mixed/test_structured.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/conftest.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/test_backend_convention.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/test_batched_solver.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/test_boot_ci.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/test_bootstrap.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/test_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/test_influence.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/test_permutation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/montecarlo/test_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/multinomial/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/multinomial/test_conf_int.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/multinomial/test_multinom.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/multivariate/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/multivariate/test_multivariate.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/apple_em_reference.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/apple_reference.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/generate_em_fixtures.R +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/little_mcar_apple.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/little_mcar_complete.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/little_mcar_extreme.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/little_mcar_missvals.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/little_mcar_simple_mcar.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/little_mcar_summary.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/missvals_em_reference.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/missvals_reference.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/references/small_test_reference.json +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_backend_routing.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_degeneracy.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_em.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_gpu_batched_equiv.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_gpu_unpack_equiv.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_mcar.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_mlest.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_monotone.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_no_silent_fallback.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_optimize.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_pattern_codes_large_p.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/mvnmle/test_squarem.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/ordinal/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/ordinal/test_conf_int.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/ordinal/test_information.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/ordinal/test_ordinal.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/benchmark.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/benchmark.r +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/conftest.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_conf_int.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_fit.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_gamma_nb.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_glm.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_glm_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_glm_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_gpu_fp32_acceptance.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_gpu_mps_cg.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_gpu_se_ill_conditioned.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_ic_dispersion_r_match.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_irls_step.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_module_split.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_nb_autotheta_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_ridge.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_stress_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_terms.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_terms_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_weights_offset.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_weights_offset_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/regression/test_weights_offset_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/conftest.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_conf_int.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_coxph.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_discrete_conf_int.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_discrete_time.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_gpu.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_kaplan_meier.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_logrank.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_r_validation.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_uniform_accessors_and_errors.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/survival/test_warnings.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/test_code_quality.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/timeseries/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/tests/timeseries/test_arima.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/README.md +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/pyproject.toml +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/pystatsval/__init__.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/pystatsval/device.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/pystatsval/estimates.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/pystatsval/measure.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/pystatsval/record.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/pystatsval/rrunner.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/pystatsval/serialize.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/pystatsval/timing.py +0 -0
- {pystatistics-4.6.1 → pystatistics-4.6.2}/validation/tests/test_harness.py +0 -0
|
@@ -1,5 +1,93 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.6.2
|
|
4
|
+
|
|
5
|
+
STL decomposition rewritten to match R exactly and now as fast as R's
|
|
6
|
+
compiled implementation; ETS gains automatic model selection and R-matched
|
|
7
|
+
parameter estimation; `ndiffs` default aligned with R.
|
|
8
|
+
|
|
9
|
+
- **`stl()` returned a materially wrong decomposition on trending series —
|
|
10
|
+
fixed by a full rewrite.** On strongly trending data (e.g. the monthly CO2
|
|
11
|
+
benchmark) the previous implementation leaked much of the trend into the
|
|
12
|
+
seasonal component: the extracted "seasonal" had a range of ~83 where the
|
|
13
|
+
true seasonal amplitude is ~6, and the reported trend could *decrease* while
|
|
14
|
+
the data rose — the components always summed back to the data, so the error
|
|
15
|
+
was invisible without an external reference. `stl()` is now an exact
|
|
16
|
+
implementation of the STL procedure (Cleveland, Cleveland, McRae &
|
|
17
|
+
Terpenning, 1990) and reproduces R's `stats::stl` component-for-component:
|
|
18
|
+
across a reference suite (CO2, AirPassengers, monthly sunspots, lynx, Nile;
|
|
19
|
+
periodic, robust, custom-window, and partial-period variants) the largest
|
|
20
|
+
seasonal/trend/remainder difference vs R is below 1e-10.
|
|
21
|
+
- **`stl()` now exposes the full STL parameter set and uses R's defaults.**
|
|
22
|
+
New parameters: `seasonal_degree` (default 0, as in R — previously the
|
|
23
|
+
seasonal smoother was effectively degree 1), `trend_degree`,
|
|
24
|
+
`lowpass_window`, `lowpass_degree`, and the evaluation strides
|
|
25
|
+
`seasonal_jump` / `trend_jump` / `lowpass_jump` (R's `ceiling(window/10)`
|
|
26
|
+
defaults; set to 1 to evaluate the loess at every point instead of
|
|
27
|
+
interpolating). Behaviour changes: `seasonal_window` defaults to
|
|
28
|
+
`"periodic"` (R has no default and `"periodic"` is the standard published
|
|
29
|
+
choice); `robust=True` now runs R's iteration counts (1 inner, 15 outer
|
|
30
|
+
passes); the series must be longer than `2 * period` (R's rule); and window
|
|
31
|
+
spans must be odd integers >= 3 — even spans raise a `ValidationError`
|
|
32
|
+
where R silently rounds them up. The result's `info` now reports the
|
|
33
|
+
resolved windows/degrees/jumps and the final robustness weights.
|
|
34
|
+
- **`stl()` now matches R's speed.** The smoother is compiled with `numba`,
|
|
35
|
+
so it is as fast as R's Fortran `stats::stl` — non-robust decompositions
|
|
36
|
+
run faster than R and robust decompositions match it (previously it was
|
|
37
|
+
3-15x slower). Results are unchanged (still within 1e-10 of R). The
|
|
38
|
+
compiled kernel builds on first use in a session (a few seconds, once) and
|
|
39
|
+
is cached on disk for subsequent runs, the same one-time cost the ARIMA
|
|
40
|
+
routines already carry.
|
|
41
|
+
- **`ets()` now performs automatic model selection, matching
|
|
42
|
+
`forecast::ets`.** The model string accepts a `"Z"` wildcard per component
|
|
43
|
+
and defaults to `model="ZZZ"` (select everything), as in R. Candidates
|
|
44
|
+
consistent with the fixed letters are enumerated under R's rules (additive
|
|
45
|
+
error with multiplicative season excluded; multiplicative components
|
|
46
|
+
require strictly positive data; seasonal candidates need `2 <= period <=
|
|
47
|
+
24` and enough data), each is fitted, and the model minimising the new `ic`
|
|
48
|
+
parameter (`"aicc"` default, `"aic"`, `"bic"`) is returned. The full
|
|
49
|
+
candidate table, the criterion values, and any skipped candidates with
|
|
50
|
+
reasons are disclosed in `solution.info["selection"]`. Explicit requests
|
|
51
|
+
that cannot be honoured (e.g. `model="MZZ"` on data with zeros or
|
|
52
|
+
negatives, a seasonal letter with `period=1`) raise instead of being
|
|
53
|
+
silently adjusted. A fully specified model string (no `"Z"`) is always
|
|
54
|
+
fitted exactly as written. Note two consequences of the new default:
|
|
55
|
+
automatic AICc selection needs at least 5 observations (shorter series
|
|
56
|
+
raise with a suggested remedy — pick a concrete model or `ic="aic"`), and
|
|
57
|
+
`period` must now be a true integer (float periods raise a clear error
|
|
58
|
+
instead of crashing).
|
|
59
|
+
- **ETS parameter estimation aligned with `forecast::ets` (changes fitted
|
|
60
|
+
results).** The optimiser now searches R's parameter region exactly — the
|
|
61
|
+
smoothing parameters obey `beta <= alpha` and `gamma <= 1 - alpha`, the
|
|
62
|
+
damping `phi` is bounded to `[0.8, 0.98]`, and a seasonal model estimates
|
|
63
|
+
one fewer initial state (the last is fixed by the seasonal normalisation,
|
|
64
|
+
as in R). As a result the reported parameter count `k` for seasonal models
|
|
65
|
+
now matches R's, so AIC/AICc/BIC values line up with `forecast::ets`, and
|
|
66
|
+
fitted parameters/log-likelihoods for a given model can differ slightly
|
|
67
|
+
from earlier versions. Smoothing parameters fixed outside R's region now
|
|
68
|
+
raise a clear error instead of being quietly clamped. On automatic
|
|
69
|
+
selection the chosen model still occasionally differs from `forecast::ets`
|
|
70
|
+
on near-tied candidate tables, but now only because the two optimisers land
|
|
71
|
+
on different optima — in every such case the model this package selects
|
|
72
|
+
scores at least as well under R's own criterion; the disclosed candidate
|
|
73
|
+
table makes any selection auditable.
|
|
74
|
+
- **`ets()` no longer emits a spurious `RuntimeWarning` about overflow.** A
|
|
75
|
+
benign internal overflow warning could surface during fitting on some
|
|
76
|
+
series; the computation was always correct, and the warning is now gone.
|
|
77
|
+
Fitted results are unchanged.
|
|
78
|
+
- **`ndiffs()` now defaults to the KPSS test, matching `forecast::ndiffs`.**
|
|
79
|
+
KPSS and ADF have opposite null hypotheses and can recommend a different
|
|
80
|
+
number of differences on borderline series; pass `test="adf"` for the
|
|
81
|
+
previous behaviour. Both tests are numerically unchanged.
|
|
82
|
+
- **ETS log-likelihood reporting convention documented (no numeric
|
|
83
|
+
change).** `ets()` reports the full Gaussian log-likelihood; R's
|
|
84
|
+
`forecast::ets` prints Hyndman's concentrated form. The two differ by the
|
|
85
|
+
exact constant `0.5*n*[log(n/(2*pi)) - 1]` (e.g. 88.36 at n=100) with the
|
|
86
|
+
same parameter count, so AIC/AICc/BIC differences, model rankings, and
|
|
87
|
+
automatic selection are identical — only the printed numbers differ. The
|
|
88
|
+
convention is now stated on the result's `log_likelihood`/`aic`/`aicc`/
|
|
89
|
+
`bic` accessors.
|
|
90
|
+
|
|
3
91
|
## 4.6.1
|
|
4
92
|
|
|
5
93
|
Performance: faster automatic smoothing-parameter selection for Gaussian
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pystatistics
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.2
|
|
4
4
|
Summary: GPU-accelerated statistical computing for Python
|
|
5
5
|
Project-URL: Homepage, https://sgcx.org/technology/pystatistics/
|
|
6
6
|
Project-URL: Documentation, https://sgcx.org/docs/pystatistics/
|
|
@@ -418,6 +418,26 @@ pip install pystatistics[dev]
|
|
|
418
418
|
|
|
419
419
|
## What's New
|
|
420
420
|
|
|
421
|
+
### 4.6.2 — STL matches R exactly and runs as fast; ETS automatic model selection
|
|
422
|
+
|
|
423
|
+
`stl()` was rewritten after validation showed it leaking trend into the
|
|
424
|
+
seasonal component on trending series (on the monthly CO2 benchmark the old
|
|
425
|
+
"seasonal" had a range of ~83 where the truth is ~6). It is now an exact
|
|
426
|
+
implementation of the STL procedure and reproduces R's `stats::stl`
|
|
427
|
+
component-for-component (differences below 1e-10 across a reference suite
|
|
428
|
+
including robust fits), with the full STL parameter set exposed
|
|
429
|
+
(`seasonal_degree`, `trend_degree`, `lowpass_window`, jumps, and a
|
|
430
|
+
`"periodic"` default seasonal window). The smoother is compiled, so it now
|
|
431
|
+
runs as fast as R's Fortran implementation — faster for non-robust
|
|
432
|
+
decompositions, on par for robust ones. `ets()` now auto-selects its model
|
|
433
|
+
like `forecast::ets`: the new default `model="ZZZ"` tries every admissible
|
|
434
|
+
error/trend/season combination and returns the best by AICc, with the full
|
|
435
|
+
candidate table disclosed on the result; explicit component requests that
|
|
436
|
+
cannot be honoured raise instead of being silently adjusted. ETS parameter
|
|
437
|
+
estimation now matches R's parameter region as well, so fitted parameters
|
|
438
|
+
and information criteria (AIC/AICc/BIC) line up with `forecast::ets`.
|
|
439
|
+
`ndiffs()` now defaults to the KPSS test, matching `forecast::ndiffs`.
|
|
440
|
+
|
|
421
441
|
### 4.6.1 — faster multi-smooth Gaussian GAMs
|
|
422
442
|
|
|
423
443
|
`gam()` with the default Gaussian family now selects its smoothing parameters
|
|
@@ -371,6 +371,26 @@ pip install pystatistics[dev]
|
|
|
371
371
|
|
|
372
372
|
## What's New
|
|
373
373
|
|
|
374
|
+
### 4.6.2 — STL matches R exactly and runs as fast; ETS automatic model selection
|
|
375
|
+
|
|
376
|
+
`stl()` was rewritten after validation showed it leaking trend into the
|
|
377
|
+
seasonal component on trending series (on the monthly CO2 benchmark the old
|
|
378
|
+
"seasonal" had a range of ~83 where the truth is ~6). It is now an exact
|
|
379
|
+
implementation of the STL procedure and reproduces R's `stats::stl`
|
|
380
|
+
component-for-component (differences below 1e-10 across a reference suite
|
|
381
|
+
including robust fits), with the full STL parameter set exposed
|
|
382
|
+
(`seasonal_degree`, `trend_degree`, `lowpass_window`, jumps, and a
|
|
383
|
+
`"periodic"` default seasonal window). The smoother is compiled, so it now
|
|
384
|
+
runs as fast as R's Fortran implementation — faster for non-robust
|
|
385
|
+
decompositions, on par for robust ones. `ets()` now auto-selects its model
|
|
386
|
+
like `forecast::ets`: the new default `model="ZZZ"` tries every admissible
|
|
387
|
+
error/trend/season combination and returns the best by AICc, with the full
|
|
388
|
+
candidate table disclosed on the result; explicit component requests that
|
|
389
|
+
cannot be honoured raise instead of being silently adjusted. ETS parameter
|
|
390
|
+
estimation now matches R's parameter region as well, so fitted parameters
|
|
391
|
+
and information criteria (AIC/AICc/BIC) line up with `forecast::ets`.
|
|
392
|
+
`ndiffs()` now defaults to the KPSS test, matching `forecast::ndiffs`.
|
|
393
|
+
|
|
374
394
|
### 4.6.1 — faster multi-smooth Gaussian GAMs
|
|
375
395
|
|
|
376
396
|
`gam()` with the default Gaussian family now selects its smoothing parameters
|
|
@@ -13,13 +13,22 @@ Public API:
|
|
|
13
13
|
ndiffs(x) - Estimate differences for stationarity (matches R forecast::ndiffs)
|
|
14
14
|
adf_test(x) - Augmented Dickey-Fuller unit root test (matches R tseries::adf.test)
|
|
15
15
|
kpss_test(x) - KPSS stationarity test (matches R tseries::kpss.test)
|
|
16
|
-
ets(y) - Fit an ETS state space model (matches R forecast::ets
|
|
16
|
+
ets(y) - Fit an ETS state space model (matches R forecast::ets,
|
|
17
|
+
including "Z"-wildcard automatic selection; default
|
|
18
|
+
model="ZZZ". Reported log-likelihood/AIC use the full-
|
|
19
|
+
Gaussian convention — R's concentrated numbers differ by
|
|
20
|
+
a constant in n; model rankings/selection are identical.
|
|
21
|
+
See timeseries._ets_fit and ._ets_select docstrings.)
|
|
17
22
|
forecast_ets(f) - Forecast from a fitted ETS model
|
|
18
23
|
arima(y) - Fit an ARIMA model (matches R stats::arima)
|
|
19
24
|
forecast_arima(f, y) - Forecast from a fitted ARIMA model
|
|
20
25
|
auto_arima(y) - Automatic ARIMA order selection (matches R forecast::auto.arima)
|
|
21
26
|
decompose(x) - Classical time series decomposition (matches R stats::decompose)
|
|
22
|
-
stl(x) - STL decomposition (matches R stats::stl
|
|
27
|
+
stl(x) - STL decomposition (matches R stats::stl; identical parameters
|
|
28
|
+
reproduce R's components to floating-point noise. Interface
|
|
29
|
+
divergences, both deliberate: seasonal_window defaults to
|
|
30
|
+
"periodic" where R requires it explicitly, and even/short
|
|
31
|
+
loess spans raise instead of being silently rounded up.)
|
|
23
32
|
"""
|
|
24
33
|
|
|
25
34
|
from pystatistics.timeseries._acf import acf, pacf
|
|
@@ -28,7 +37,8 @@ from pystatistics.timeseries._stationarity import adf_test, kpss_test
|
|
|
28
37
|
from pystatistics.timeseries._common import (
|
|
29
38
|
ACFParams, ACFSolution, StationarityParams, StationaritySolution,
|
|
30
39
|
)
|
|
31
|
-
from pystatistics.timeseries._ets_fit import
|
|
40
|
+
from pystatistics.timeseries._ets_fit import ETSParams, ETSSolution
|
|
41
|
+
from pystatistics.timeseries._ets_select import ets
|
|
32
42
|
from pystatistics.timeseries._ets_forecast import forecast_ets, ETSForecast
|
|
33
43
|
from pystatistics.timeseries._ets_models import ETSSpec
|
|
34
44
|
from pystatistics.timeseries._arima_solution import ARIMAParams, ARIMASolution
|
|
@@ -41,8 +51,9 @@ from pystatistics.timeseries._arima_order import (
|
|
|
41
51
|
auto_arima, AutoARIMAParams, AutoARIMASolution,
|
|
42
52
|
)
|
|
43
53
|
from pystatistics.timeseries._decomposition import (
|
|
44
|
-
decompose,
|
|
54
|
+
decompose, DecompositionParams, DecompositionSolution,
|
|
45
55
|
)
|
|
56
|
+
from pystatistics.timeseries._stl import stl
|
|
46
57
|
|
|
47
58
|
__all__ = [
|
|
48
59
|
"acf",
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"""
|
|
2
|
-
|
|
2
|
+
Classical time series decomposition and shared decomposition results.
|
|
3
3
|
|
|
4
|
-
Provides decompose() matching R's stats::decompose()
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Provides decompose() matching R's stats::decompose() (centered moving
|
|
5
|
+
averages) plus the DecompositionParams/DecompositionSolution result
|
|
6
|
+
types shared with the STL implementation in ``_stl.py``.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
from __future__ import annotations
|
|
10
10
|
|
|
11
|
-
import math
|
|
12
11
|
from dataclasses import dataclass
|
|
13
12
|
|
|
14
13
|
import numpy as np
|
|
@@ -362,276 +361,3 @@ def decompose(
|
|
|
362
361
|
warnings=(),
|
|
363
362
|
)
|
|
364
363
|
)
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
# ---------------------------------------------------------------------------
|
|
368
|
-
# LOESS helper (simplified local regression)
|
|
369
|
-
# ---------------------------------------------------------------------------
|
|
370
|
-
|
|
371
|
-
def _tricube(d: NDArray) -> NDArray:
|
|
372
|
-
"""Tricube weight function: (1 - |d|^3)^3 for |d| < 1, else 0."""
|
|
373
|
-
w = np.zeros_like(d)
|
|
374
|
-
mask = np.abs(d) < 1.0
|
|
375
|
-
w[mask] = (1.0 - np.abs(d[mask]) ** 3) ** 3
|
|
376
|
-
return w
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
def _loess_smooth(
|
|
380
|
-
x_pos: NDArray,
|
|
381
|
-
y_vals: NDArray,
|
|
382
|
-
span: int,
|
|
383
|
-
degree: int = 1,
|
|
384
|
-
weights: NDArray | None = None,
|
|
385
|
-
) -> NDArray:
|
|
386
|
-
"""
|
|
387
|
-
Simplified LOESS smoothing for STL.
|
|
388
|
-
|
|
389
|
-
For each point, fits a weighted local polynomial of the given degree
|
|
390
|
-
using a tricube kernel with *span* nearest neighbours.
|
|
391
|
-
|
|
392
|
-
Parameters
|
|
393
|
-
----------
|
|
394
|
-
x_pos : NDArray
|
|
395
|
-
Positions (typically ``np.arange(len(y_vals))``).
|
|
396
|
-
y_vals : NDArray
|
|
397
|
-
Values to smooth.
|
|
398
|
-
span : int
|
|
399
|
-
Number of nearest neighbours (window width).
|
|
400
|
-
degree : int
|
|
401
|
-
Polynomial degree (0 or 1).
|
|
402
|
-
weights : NDArray or None
|
|
403
|
-
External robustness weights (multiplied with tricube weights).
|
|
404
|
-
|
|
405
|
-
Returns
|
|
406
|
-
-------
|
|
407
|
-
NDArray
|
|
408
|
-
Smoothed values at each position in *x_pos*.
|
|
409
|
-
"""
|
|
410
|
-
n = len(y_vals)
|
|
411
|
-
span = min(span, n)
|
|
412
|
-
smoothed = np.empty(n)
|
|
413
|
-
|
|
414
|
-
for i in range(n):
|
|
415
|
-
# Find span nearest neighbours
|
|
416
|
-
dists = np.abs(x_pos - x_pos[i])
|
|
417
|
-
idx = np.argsort(dists)[:span]
|
|
418
|
-
d_max = dists[idx[-1]]
|
|
419
|
-
if d_max == 0:
|
|
420
|
-
d_max = 1.0
|
|
421
|
-
|
|
422
|
-
w = _tricube(dists[idx] / d_max)
|
|
423
|
-
if weights is not None:
|
|
424
|
-
w = w * weights[idx]
|
|
425
|
-
|
|
426
|
-
xi = x_pos[idx]
|
|
427
|
-
yi = y_vals[idx]
|
|
428
|
-
|
|
429
|
-
if degree == 0 or np.sum(w) == 0:
|
|
430
|
-
total_w = np.sum(w)
|
|
431
|
-
smoothed[i] = np.sum(w * yi) / total_w if total_w > 0 else yi[0]
|
|
432
|
-
else:
|
|
433
|
-
# Weighted least squares: degree-1 polynomial
|
|
434
|
-
W = np.diag(w)
|
|
435
|
-
X = np.column_stack([np.ones(len(xi)), xi - x_pos[i]])
|
|
436
|
-
try:
|
|
437
|
-
XtW = X.T @ W
|
|
438
|
-
beta = np.linalg.solve(XtW @ X, XtW @ yi)
|
|
439
|
-
smoothed[i] = beta[0]
|
|
440
|
-
except np.linalg.LinAlgError:
|
|
441
|
-
smoothed[i] = np.average(yi, weights=w) if np.sum(w) > 0 else yi[0]
|
|
442
|
-
|
|
443
|
-
return smoothed
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
# ---------------------------------------------------------------------------
|
|
447
|
-
# Low-pass filter for STL
|
|
448
|
-
# ---------------------------------------------------------------------------
|
|
449
|
-
|
|
450
|
-
def _low_pass_filter(x: NDArray, period: int) -> NDArray:
|
|
451
|
-
"""
|
|
452
|
-
Low-pass filter used in STL inner loop.
|
|
453
|
-
|
|
454
|
-
Applies three successive moving averages of lengths *period*, *period*,
|
|
455
|
-
and 3, matching the original STL specification.
|
|
456
|
-
|
|
457
|
-
Parameters
|
|
458
|
-
----------
|
|
459
|
-
x : NDArray
|
|
460
|
-
Input series.
|
|
461
|
-
period : int
|
|
462
|
-
Seasonal period.
|
|
463
|
-
|
|
464
|
-
Returns
|
|
465
|
-
-------
|
|
466
|
-
NDArray
|
|
467
|
-
Filtered series (same length, NaN-padded edges trimmed via LOESS).
|
|
468
|
-
"""
|
|
469
|
-
# MA of length period
|
|
470
|
-
k1 = np.ones(period) / period
|
|
471
|
-
s1 = np.convolve(x, k1, mode="same")
|
|
472
|
-
# MA of length period again
|
|
473
|
-
s2 = np.convolve(s1, k1, mode="same")
|
|
474
|
-
# MA of length 3
|
|
475
|
-
k3 = np.ones(3) / 3.0
|
|
476
|
-
s3 = np.convolve(s2, k3, mode="same")
|
|
477
|
-
return s3
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
# ---------------------------------------------------------------------------
|
|
481
|
-
# STL decomposition
|
|
482
|
-
# ---------------------------------------------------------------------------
|
|
483
|
-
|
|
484
|
-
def _next_odd(v: int) -> int:
|
|
485
|
-
"""Return *v* if odd, else *v* + 1."""
|
|
486
|
-
return v if v % 2 == 1 else v + 1
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
def stl(
|
|
490
|
-
x: ArrayLike,
|
|
491
|
-
period: int,
|
|
492
|
-
*,
|
|
493
|
-
seasonal_window: int | None = None,
|
|
494
|
-
trend_window: int | None = None,
|
|
495
|
-
robust: bool = False,
|
|
496
|
-
n_outer: int = 0,
|
|
497
|
-
n_inner: int = 2,
|
|
498
|
-
) -> DecompositionSolution:
|
|
499
|
-
"""
|
|
500
|
-
Seasonal and Trend decomposition using LOESS (STL).
|
|
501
|
-
|
|
502
|
-
Simplified implementation of Cleveland et al. (1990), matching
|
|
503
|
-
R's ``stats::stl()`` in spirit.
|
|
504
|
-
|
|
505
|
-
Parameters
|
|
506
|
-
----------
|
|
507
|
-
x : ArrayLike
|
|
508
|
-
Time series (1-D). Length must be >= 2 * *period*.
|
|
509
|
-
period : int
|
|
510
|
-
Seasonal period (>= 2).
|
|
511
|
-
seasonal_window : int or None
|
|
512
|
-
LOESS window width for seasonal extraction. Must be odd and >= 7.
|
|
513
|
-
Default: next odd >= ``period + 1``, but at least 7.
|
|
514
|
-
trend_window : int or None
|
|
515
|
-
LOESS window width for trend extraction. Must be odd.
|
|
516
|
-
Default: next odd >= ``ceil(1.5 * period / (1 - 1.5 / s_window)) + 1``.
|
|
517
|
-
robust : bool
|
|
518
|
-
If True, sets *n_outer* = 1 if it is 0, enabling robustness weights.
|
|
519
|
-
n_outer : int
|
|
520
|
-
Number of outer (robustness) iterations (>= 0).
|
|
521
|
-
n_inner : int
|
|
522
|
-
Number of inner iterations (>= 1).
|
|
523
|
-
|
|
524
|
-
Returns
|
|
525
|
-
-------
|
|
526
|
-
DecompositionSolution
|
|
527
|
-
|
|
528
|
-
Raises
|
|
529
|
-
------
|
|
530
|
-
ValidationError
|
|
531
|
-
On invalid inputs.
|
|
532
|
-
"""
|
|
533
|
-
arr = _validate_series(x)
|
|
534
|
-
_validate_decompose_inputs(arr, period, "additive")
|
|
535
|
-
|
|
536
|
-
n = len(arr)
|
|
537
|
-
|
|
538
|
-
# Default seasonal window
|
|
539
|
-
if seasonal_window is None:
|
|
540
|
-
seasonal_window = _next_odd(max(7, period + 1))
|
|
541
|
-
else:
|
|
542
|
-
if seasonal_window < 7:
|
|
543
|
-
raise ValidationError(
|
|
544
|
-
f"seasonal_window: must be >= 7, got {seasonal_window}"
|
|
545
|
-
)
|
|
546
|
-
if seasonal_window % 2 == 0:
|
|
547
|
-
raise ValidationError(
|
|
548
|
-
f"seasonal_window: must be odd, got {seasonal_window}"
|
|
549
|
-
)
|
|
550
|
-
|
|
551
|
-
# Default trend window
|
|
552
|
-
if trend_window is None:
|
|
553
|
-
denom = 1.0 - 1.5 / seasonal_window
|
|
554
|
-
trend_window = _next_odd(
|
|
555
|
-
max(3, int(math.ceil(1.5 * period / denom)) + 1)
|
|
556
|
-
)
|
|
557
|
-
else:
|
|
558
|
-
if trend_window % 2 == 0:
|
|
559
|
-
raise ValidationError(
|
|
560
|
-
f"trend_window: must be odd, got {trend_window}"
|
|
561
|
-
)
|
|
562
|
-
|
|
563
|
-
if n_inner < 1:
|
|
564
|
-
raise ValidationError(f"n_inner: must be >= 1, got {n_inner}")
|
|
565
|
-
|
|
566
|
-
if robust and n_outer == 0:
|
|
567
|
-
n_outer = 1
|
|
568
|
-
|
|
569
|
-
# Initialise components
|
|
570
|
-
trend = np.zeros(n)
|
|
571
|
-
seasonal = np.zeros(n)
|
|
572
|
-
rob_weights = np.ones(n)
|
|
573
|
-
x_pos_full = np.arange(n, dtype=float)
|
|
574
|
-
|
|
575
|
-
total_outer = max(1, n_outer + 1)
|
|
576
|
-
|
|
577
|
-
for _outer in range(total_outer):
|
|
578
|
-
for _inner in range(n_inner):
|
|
579
|
-
# Step 1: Detrending
|
|
580
|
-
detrended = arr - trend
|
|
581
|
-
|
|
582
|
-
# Step 2: Cycle-subseries smoothing
|
|
583
|
-
smoothed_seasonal = np.empty(n)
|
|
584
|
-
for pos in range(period):
|
|
585
|
-
indices = np.arange(pos, n, period)
|
|
586
|
-
sub_y = detrended[indices]
|
|
587
|
-
sub_x = np.arange(len(sub_y), dtype=float)
|
|
588
|
-
sub_w = rob_weights[indices]
|
|
589
|
-
sub_smooth = _loess_smooth(
|
|
590
|
-
sub_x, sub_y, span=seasonal_window, degree=1, weights=sub_w,
|
|
591
|
-
)
|
|
592
|
-
smoothed_seasonal[indices] = sub_smooth
|
|
593
|
-
|
|
594
|
-
# Step 3: Low-pass filter on smoothed seasonal
|
|
595
|
-
lp = _low_pass_filter(smoothed_seasonal, period)
|
|
596
|
-
|
|
597
|
-
# Step 4: Seasonal = smoothed - low-pass
|
|
598
|
-
seasonal = smoothed_seasonal - lp
|
|
599
|
-
|
|
600
|
-
# Step 5: De-seasonalise
|
|
601
|
-
deseasoned = arr - seasonal
|
|
602
|
-
|
|
603
|
-
# Step 6: Trend via LOESS on deseasoned series
|
|
604
|
-
trend = _loess_smooth(
|
|
605
|
-
x_pos_full, deseasoned, span=trend_window,
|
|
606
|
-
degree=1, weights=rob_weights,
|
|
607
|
-
)
|
|
608
|
-
|
|
609
|
-
# Outer loop: compute robustness weights
|
|
610
|
-
if _outer < total_outer - 1 and n_outer > 0:
|
|
611
|
-
residual = arr - trend - seasonal
|
|
612
|
-
h = 6.0 * np.median(np.abs(residual))
|
|
613
|
-
if h > 0:
|
|
614
|
-
u = np.abs(residual) / h
|
|
615
|
-
rob_weights = _tricube(u)
|
|
616
|
-
else:
|
|
617
|
-
rob_weights = np.ones(n)
|
|
618
|
-
|
|
619
|
-
residual = arr - trend - seasonal
|
|
620
|
-
|
|
621
|
-
return DecompositionSolution(
|
|
622
|
-
_result=Result(
|
|
623
|
-
params=DecompositionParams(
|
|
624
|
-
observed=arr,
|
|
625
|
-
trend=trend,
|
|
626
|
-
seasonal=seasonal,
|
|
627
|
-
residual=residual,
|
|
628
|
-
period=period,
|
|
629
|
-
type="additive",
|
|
630
|
-
method="stl",
|
|
631
|
-
),
|
|
632
|
-
info={"method": "stl", "type": "additive", "robust": robust},
|
|
633
|
-
timing=None,
|
|
634
|
-
backend_name="cpu",
|
|
635
|
-
warnings=(),
|
|
636
|
-
)
|
|
637
|
-
)
|
|
@@ -81,23 +81,26 @@ def diff(
|
|
|
81
81
|
def ndiffs(
|
|
82
82
|
x: ArrayLike,
|
|
83
83
|
*,
|
|
84
|
-
test: str = "
|
|
84
|
+
test: str = "kpss",
|
|
85
85
|
alpha: float = 0.05,
|
|
86
86
|
max_d: int = 2,
|
|
87
87
|
) -> int:
|
|
88
88
|
"""
|
|
89
89
|
Estimate the number of differences needed for stationarity.
|
|
90
90
|
|
|
91
|
-
Matches R's forecast::ndiffs()
|
|
92
|
-
stationarity until either the test indicates
|
|
93
|
-
is reached.
|
|
91
|
+
Matches R's forecast::ndiffs(), including its default test. Repeatedly
|
|
92
|
+
differences and tests for stationarity until either the test indicates
|
|
93
|
+
stationarity or max_d is reached.
|
|
94
94
|
|
|
95
95
|
Parameters
|
|
96
96
|
----------
|
|
97
97
|
x : ArrayLike
|
|
98
98
|
Time series.
|
|
99
99
|
test : str
|
|
100
|
-
Stationarity test to use: '
|
|
100
|
+
Stationarity test to use: 'kpss' (default, matching R
|
|
101
|
+
forecast::ndiffs) or 'adf'. The two tests have opposite null
|
|
102
|
+
hypotheses (KPSS: stationary; ADF: unit root) and can recommend
|
|
103
|
+
different d on borderline series.
|
|
101
104
|
alpha : float
|
|
102
105
|
Significance level for the test.
|
|
103
106
|
max_d : int
|