csv-stats 0.2.1__tar.gz → 0.4.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.
- csv_stats-0.4.2/.gitignore +8 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/PKG-INFO +55 -1
- {csv_stats-0.2.1 → csv_stats-0.4.2}/README.md +52 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/pyproject.toml +9 -2
- csv_stats-0.4.2/src/csvstats/__init__.py +1 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/core.py +49 -1
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/descriptive.py +10 -3
- csv_stats-0.4.2/src/csvstats/lmm.py +858 -0
- csv_stats-0.4.2/src/csvstats/lmm_fit.py +540 -0
- csv_stats-0.4.2/src/csvstats/lmm_formula.py +259 -0
- csv_stats-0.4.2/tests/_lmm_oracle.py +239 -0
- csv_stats-0.4.2/tests/reference/README.md +107 -0
- csv_stats-0.4.2/tests/reference/check_lmm_optimum.R +57 -0
- csv_stats-0.4.2/tests/reference/datasets/B2B2W2_complete_n17_icc50_effect_unit_intercept.csv +35 -0
- csv_stats-0.4.2/tests/reference/datasets/B2B2W2_mcar15_n17_icc50_effect_unit_intercept.csv +30 -0
- csv_stats-0.4.2/tests/reference/datasets/B2B2W2_monotone15_n17_icc50_effect_unit_intercept.csv +32 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_complete_n12_icc50_effect_unit_intercept.csv +37 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_complete_n17_icc50_effect_unit_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_complete_n17_icc50_null_unit_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_complete_n40_icc50_effect_unit_intercept.csv +121 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_complete_n6_icc50_effect_unit_intercept.csv +19 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_level_missing_one_group_n17_icc50_effect_unit_intercept.csv +49 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_mcar05_n17_icc50_effect_unit_intercept.csv +49 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_mcar15_n17_icc50_effect_unit_intercept.csv +44 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_mcar30_n17_icc50_effect_unit_intercept.csv +38 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_monotone15_n12_icc50_effect_unit_intercept.csv +35 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_monotone15_n17_icc50_effect_unit_intercept.csv +47 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_monotone15_n40_icc50_effect_unit_intercept.csv +114 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_monotone15_n6_icc50_effect_unit_intercept.csv +18 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_monotone40_n17_icc50_effect_unit_intercept.csv +41 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_monotone40_n17_icc50_null_unit_intercept.csv +39 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_singletons_n17_icc50_effect_unit_intercept.csv +46 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_sparse_cell_n17_icc50_effect_unit_intercept.csv +46 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_unequal_groups_n17_icc50_effect_unit_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/B2W3_unequal_reps_n17_icc50_effect_unit_intercept.csv +136 -0
- csv_stats-0.4.2/tests/reference/datasets/B2rep_complete_n17_icc50_effect_unit_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/B2rep_unequal_reps_n17_icc50_effect_unit_intercept.csv +44 -0
- csv_stats-0.4.2/tests/reference/datasets/B3W2_complete_n17_icc50_effect_unit_intercept.csv +35 -0
- csv_stats-0.4.2/tests/reference/datasets/B3W2_mcar15_n17_icc50_effect_unit_intercept.csv +30 -0
- csv_stats-0.4.2/tests/reference/datasets/B3W2_monotone15_n17_icc50_effect_unit_intercept.csv +32 -0
- csv_stats-0.4.2/tests/reference/datasets/LABELS_complete_n17_icc50_effect_unit_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/LABELS_monotone15_n17_icc50_effect_unit_intercept.csv +46 -0
- csv_stats-0.4.2/tests/reference/datasets/W2_complete_n17_icc50_effect_unit_intercept.csv +35 -0
- csv_stats-0.4.2/tests/reference/datasets/W2_mcar05_n17_icc50_effect_unit_intercept.csv +33 -0
- csv_stats-0.4.2/tests/reference/datasets/W2_mcar15_n17_icc50_effect_unit_intercept.csv +30 -0
- csv_stats-0.4.2/tests/reference/datasets/W2_mcar30_n17_icc50_effect_unit_intercept.csv +26 -0
- csv_stats-0.4.2/tests/reference/datasets/W2_monotone15_n17_icc50_effect_unit_intercept.csv +32 -0
- csv_stats-0.4.2/tests/reference/datasets/W2_monotone40_n17_icc50_effect_unit_intercept.csv +28 -0
- csv_stats-0.4.2/tests/reference/datasets/W2_singletons_n17_icc50_effect_unit_intercept.csv +32 -0
- csv_stats-0.4.2/tests/reference/datasets/W2_sparse_cell_n17_icc50_effect_unit_intercept.csv +20 -0
- csv_stats-0.4.2/tests/reference/datasets/W2_unequal_reps_n17_icc50_effect_unit_intercept.csv +87 -0
- csv_stats-0.4.2/tests/reference/datasets/W2xW3_complete_n17_icc50_effect_unit_intercept.csv +103 -0
- csv_stats-0.4.2/tests/reference/datasets/W2xW3_complete_n17_icc50_null_unit_intercept.csv +103 -0
- csv_stats-0.4.2/tests/reference/datasets/W2xW3_mcar15_n17_icc50_effect_unit_intercept.csv +88 -0
- csv_stats-0.4.2/tests/reference/datasets/W2xW3_monotone15_n17_icc50_effect_unit_intercept.csv +95 -0
- csv_stats-0.4.2/tests/reference/datasets/W2xW3_monotone40_n17_icc50_effect_unit_intercept.csv +87 -0
- csv_stats-0.4.2/tests/reference/datasets/W2xW3_monotone40_n17_icc50_null_unit_intercept.csv +85 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_complete_n12_icc50_effect_unit_intercept.csv +37 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_complete_n17_icc0_effect_unit_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_complete_n17_icc10_effect_unit_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_complete_n17_icc50_effect_large_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_complete_n17_icc50_effect_small_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_complete_n17_icc50_effect_unit_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_complete_n17_icc80_effect_unit_intercept.csv +52 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_complete_n40_icc50_effect_unit_intercept.csv +121 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_complete_n6_icc50_effect_unit_intercept.csv +19 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_mcar05_n17_icc50_effect_unit_intercept.csv +49 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_mcar15_n17_icc0_effect_unit_intercept.csv +44 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_mcar15_n17_icc10_effect_unit_intercept.csv +44 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_mcar15_n17_icc50_effect_large_intercept.csv +44 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_mcar15_n17_icc50_effect_small_intercept.csv +44 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_mcar15_n17_icc50_effect_unit_intercept.csv +44 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_mcar15_n17_icc80_effect_unit_intercept.csv +44 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_mcar30_n17_icc50_effect_unit_intercept.csv +37 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_monotone15_n12_icc50_effect_unit_intercept.csv +35 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_monotone15_n17_icc50_effect_unit_intercept.csv +47 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_monotone15_n40_icc50_effect_unit_intercept.csv +113 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_monotone15_n6_icc50_effect_unit_intercept.csv +17 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_monotone40_n17_icc50_effect_unit_intercept.csv +42 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_singletons_n17_icc50_effect_unit_intercept.csv +46 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_sparse_cell_n17_icc50_effect_unit_intercept.csv +37 -0
- csv_stats-0.4.2/tests/reference/datasets/W3_unequal_reps_n17_icc50_effect_unit_intercept.csv +126 -0
- csv_stats-0.4.2/tests/reference/datasets/W3rep_complete_n17_icc50_effect_unit_intercept.csv +154 -0
- csv_stats-0.4.2/tests/reference/datasets/W3rep_complete_n17_icc50_effect_unit_slopes.csv +154 -0
- csv_stats-0.4.2/tests/reference/datasets/W3rep_mcar15_n17_icc50_effect_unit_intercept.csv +130 -0
- csv_stats-0.4.2/tests/reference/datasets/W3rep_mcar15_n17_icc50_effect_unit_slopes.csv +130 -0
- csv_stats-0.4.2/tests/reference/datasets/W3rep_monotone15_n17_icc50_effect_unit_intercept.csv +142 -0
- csv_stats-0.4.2/tests/reference/datasets/W7_complete_n17_icc50_effect_unit_intercept.csv +120 -0
- csv_stats-0.4.2/tests/reference/datasets/W7_mcar15_n17_icc50_effect_unit_intercept.csv +102 -0
- csv_stats-0.4.2/tests/reference/datasets/W7_monotone15_n17_icc50_effect_unit_intercept.csv +110 -0
- csv_stats-0.4.2/tests/reference/lmm_reference_common.R +144 -0
- csv_stats-0.4.2/tests/reference/make_lmm_reference.R +314 -0
- csv_stats-0.4.2/tests/reference/make_lmm_scenarios.R +622 -0
- csv_stats-0.4.2/tests/reference/results/B2B2W2_complete_n17_icc50_effect_unit_intercept.json +596 -0
- csv_stats-0.4.2/tests/reference/results/B2B2W2_mcar15_n17_icc50_effect_unit_intercept.json +596 -0
- csv_stats-0.4.2/tests/reference/results/B2B2W2_monotone15_n17_icc50_effect_unit_intercept.json +596 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_complete_n12_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_complete_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_complete_n17_icc50_null_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_complete_n40_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_complete_n6_icc50_effect_unit_intercept.json +399 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_level_missing_one_group_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_mcar05_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_mcar15_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_mcar30_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_monotone15_n12_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_monotone15_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_monotone15_n40_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_monotone15_n6_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_monotone40_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_monotone40_n17_icc50_null_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_singletons_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_sparse_cell_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_unequal_groups_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2W3_unequal_reps_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B2rep_complete_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/B2rep_unequal_reps_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/B3W2_complete_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B3W2_mcar15_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/B3W2_monotone15_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/LABELS_complete_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/LABELS_monotone15_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/W2_complete_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/W2_mcar05_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/W2_mcar15_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/W2_mcar30_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/W2_monotone15_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/W2_monotone40_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/W2_singletons_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/W2_sparse_cell_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/W2_unequal_reps_n17_icc50_effect_unit_intercept.json +132 -0
- csv_stats-0.4.2/tests/reference/results/W2xW3_complete_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/W2xW3_complete_n17_icc50_null_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/W2xW3_mcar15_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/W2xW3_monotone15_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/W2xW3_monotone40_n17_icc50_effect_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/W2xW3_monotone40_n17_icc50_null_unit_intercept.json +395 -0
- csv_stats-0.4.2/tests/reference/results/W3_complete_n12_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_complete_n17_icc0_effect_unit_intercept.json +185 -0
- csv_stats-0.4.2/tests/reference/results/W3_complete_n17_icc10_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_complete_n17_icc50_effect_large_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_complete_n17_icc50_effect_small_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_complete_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_complete_n17_icc80_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_complete_n40_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_complete_n6_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_mcar05_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_mcar15_n17_icc0_effect_unit_intercept.json +185 -0
- csv_stats-0.4.2/tests/reference/results/W3_mcar15_n17_icc10_effect_unit_intercept.json +185 -0
- csv_stats-0.4.2/tests/reference/results/W3_mcar15_n17_icc50_effect_large_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_mcar15_n17_icc50_effect_small_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_mcar15_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_mcar15_n17_icc80_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_mcar30_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_monotone15_n12_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_monotone15_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_monotone15_n40_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_monotone15_n6_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_monotone40_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_singletons_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_sparse_cell_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3_unequal_reps_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3rep_complete_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3rep_complete_n17_icc50_effect_unit_slopes.json +199 -0
- csv_stats-0.4.2/tests/reference/results/W3rep_mcar15_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W3rep_mcar15_n17_icc50_effect_unit_slopes.json +195 -0
- csv_stats-0.4.2/tests/reference/results/W3rep_monotone15_n17_icc50_effect_unit_intercept.json +181 -0
- csv_stats-0.4.2/tests/reference/results/W7_complete_n17_icc50_effect_unit_intercept.json +577 -0
- csv_stats-0.4.2/tests/reference/results/W7_mcar15_n17_icc50_effect_unit_intercept.json +577 -0
- csv_stats-0.4.2/tests/reference/results/W7_monotone15_n17_icc50_effect_unit_intercept.json +577 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_001.csv +231 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_002.csv +221 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_003.csv +157 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_004.csv +96 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_005.csv +79 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_006.csv +84 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_007.csv +163 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_008.csv +161 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_009.csv +682 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_010.csv +58 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_011.csv +21 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_012.csv +17 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_013.csv +43 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_014.csv +239 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_015.csv +160 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_016.csv +490 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_017.csv +139 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_018.csv +417 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_019.csv +109 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_020.csv +647 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_021.csv +138 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_022.csv +75 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_023.csv +103 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_024.csv +228 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_025.csv +88 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_001.csv +226 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_002.csv +267 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_003.csv +85 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_004.csv +76 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_005.csv +475 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_006.csv +317 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_007.csv +195 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_008.csv +246 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_009.csv +242 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_010.csv +237 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_011.csv +21 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_012.csv +32 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_013.csv +40 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_014.csv +425 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_015.csv +169 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_016.csv +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_017.csv +145 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_018.csv +577 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_019.csv +118 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_020.csv +98 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_021.csv +113 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_022.csv +249 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_023.csv +161 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_024.csv +108 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/CROSSED_SLOPES_025.csv +417 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_001.csv +193 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_002.csv +187 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_003.csv +40 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_004.csv +121 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_005.csv +224 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_006.csv +127 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_007.csv +118 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_008.csv +178 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_009.csv +363 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_010.csv +126 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_011.csv +25 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_012.csv +21 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_013.csv +18 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_014.csv +45 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_015.csv +114 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_016.csv +35 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_017.csv +115 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_018.csv +83 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_019.csv +190 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_020.csv +27 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_021.csv +60 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_022.csv +37 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_023.csv +63 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_024.csv +142 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/NESTED_025.csv +141 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_001.csv +137 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_002.csv +473 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_003.csv +97 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_004.csv +191 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_005.csv +104 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_006.csv +541 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_007.csv +209 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_008.csv +45 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_009.csv +74 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_010.csv +257 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_011.csv +61 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_012.csv +61 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_013.csv +50 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_014.csv +25 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_015.csv +86 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_016.csv +34 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_017.csv +222 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_018.csv +111 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_019.csv +196 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_020.csv +76 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_021.csv +113 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_022.csv +89 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_023.csv +63 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_024.csv +109 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIF_025.csv +53 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_001.csv +79 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_002.csv +246 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_003.csv +85 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_004.csv +243 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_005.csv +169 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_006.csv +102 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_007.csv +289 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_008.csv +76 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_009.csv +165 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_010.csv +43 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_011.csv +37 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_012.csv +24 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_013.csv +12 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_014.csv +84 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_015.csv +36 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_016.csv +61 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_017.csv +38 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_018.csv +80 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_019.csv +85 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_020.csv +93 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_021.csv +159 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_022.csv +61 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_023.csv +200 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_024.csv +92 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_025.csv +58 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_001.csv +271 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_002.csv +133 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_003.csv +211 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_004.csv +487 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_005.csv +697 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_006.csv +298 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_007.csv +91 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_008.csv +65 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_009.csv +271 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_010.csv +116 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_011.csv +46 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_012.csv +61 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_013.csv +97 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_014.csv +130 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_015.csv +164 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_016.csv +191 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_017.csv +179 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_018.csv +257 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_019.csv +90 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_020.csv +205 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_021.csv +103 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_022.csv +213 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_023.csv +153 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_024.csv +163 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_FACTOR_025.csv +172 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_001.csv +61 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_002.csv +28 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_003.csv +79 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_004.csv +154 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_005.csv +95 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_006.csv +225 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_007.csv +92 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_008.csv +173 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_009.csv +26 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_010.csv +154 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_011.csv +29 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_012.csv +36 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_013.csv +19 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_014.csv +30 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_015.csv +70 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_016.csv +106 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_017.csv +116 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_018.csv +205 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_019.csv +39 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_020.csv +105 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_021.csv +37 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_022.csv +217 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_023.csv +44 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_024.csv +226 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RIS_UNCORR_025.csv +153 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_001.csv +89 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_002.csv +133 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_003.csv +213 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_004.csv +61 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_005.csv +30 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_006.csv +88 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_007.csv +154 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_008.csv +129 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_009.csv +122 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_010.csv +40 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_011.csv +13 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_012.csv +45 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_013.csv +70 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_014.csv +197 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_015.csv +76 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_016.csv +236 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_017.csv +19 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_018.csv +40 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_019.csv +86 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_020.csv +70 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_021.csv +49 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_022.csv +120 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_023.csv +259 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_024.csv +70 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RI_025.csv +246 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_001.csv +91 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_002.csv +205 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_003.csv +187 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_004.csv +257 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_005.csv +154 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_006.csv +561 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_007.csv +141 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_008.csv +329 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_009.csv +271 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_010.csv +177 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_011.csv +44 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_012.csv +38 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_013.csv +39 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_014.csv +72 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_015.csv +74 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_016.csv +121 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_017.csv +239 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_018.csv +336 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_019.csv +532 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_020.csv +108 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_021.csv +244 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_022.csv +100 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_023.csv +313 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_024.csv +91 -0
- csv_stats-0.4.2/tests/reference/scenarios/datasets/RM_025.csv +73 -0
- csv_stats-0.4.2/tests/reference/scenarios/manifest.csv +226 -0
- csv_stats-0.4.2/tests/reference/scenarios/ours_check.json +122 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_001.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_002.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_003.json +298 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_004.json +304 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_005.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_006.json +329 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_007.json +256 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_008.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_009.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_010.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_011.json +304 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_012.json +300 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_013.json +304 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_014.json +298 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_015.json +323 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_016.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_017.json +323 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_018.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_019.json +329 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_020.json +323 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_021.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_022.json +250 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_023.json +323 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_024.json +298 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_025.json +298 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_001.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_002.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_003.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_004.json +371 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_005.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_006.json +367 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_007.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_008.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_009.json +367 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_010.json +367 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_011.json +367 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_012.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_013.json +367 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_014.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_015.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_016.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_017.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_018.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_019.json +367 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_020.json +367 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_021.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_022.json +363 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_023.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_024.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/CROSSED_SLOPES_025.json +361 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_001.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_002.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_003.json +300 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_004.json +304 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_005.json +389 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_006.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_007.json +636 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_008.json +632 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_009.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_010.json +298 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_011.json +310 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_012.json +636 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_013.json +298 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_014.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_015.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_016.json +300 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_017.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_018.json +304 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_019.json +350 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_020.json +385 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_021.json +298 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_022.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_023.json +632 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_024.json +298 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/NESTED_025.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_001.json +339 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_002.json +333 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_003.json +333 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_004.json +333 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_005.json +490 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_006.json +339 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_007.json +496 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_008.json +494 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_009.json +500 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_010.json +496 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_011.json +333 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_012.json +496 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_013.json +496 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_014.json +496 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_015.json +333 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_016.json +333 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_017.json +490 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_018.json +490 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_019.json +339 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_020.json +496 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_021.json +333 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_022.json +339 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_023.json +337 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_024.json +490 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIF_025.json +496 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_001.json +426 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_002.json +308 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_003.json +424 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_004.json +426 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_005.json +420 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_006.json +426 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_007.json +308 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_008.json +426 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_009.json +314 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_010.json +314 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_011.json +426 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_012.json +426 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_013.json +314 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_014.json +52 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_015.json +52 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_016.json +314 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_017.json +426 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_018.json +320 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_019.json +337 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_020.json +426 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_021.json +320 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_022.json +420 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_023.json +420 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_024.json +314 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_025.json +420 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_001.json +857 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_002.json +500 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_003.json +502 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_004.json +857 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_005.json +857 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_006.json +863 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_007.json +857 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_008.json +857 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_009.json +506 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_010.json +857 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_011.json +857 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_012.json +506 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_013.json +851 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_014.json +857 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_015.json +506 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_016.json +857 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_017.json +851 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_018.json +506 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_019.json +672 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_020.json +506 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_021.json +851 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_022.json +851 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_023.json +500 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_024.json +853 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_FACTOR_025.json +512 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_001.json +407 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_002.json +401 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_003.json +289 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_004.json +295 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_005.json +289 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_006.json +289 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_007.json +295 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_008.json +293 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_009.json +295 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_010.json +295 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_011.json +407 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_012.json +407 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_013.json +289 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_014.json +401 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_015.json +291 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_016.json +295 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_017.json +407 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_018.json +407 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_019.json +318 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_020.json +407 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_021.json +407 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_022.json +407 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_023.json +401 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_024.json +295 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RIS_UNCORR_025.json +407 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_001.json +222 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_002.json +382 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_003.json +222 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_004.json +276 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_005.json +228 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_006.json +228 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_007.json +276 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_008.json +222 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_009.json +602 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_010.json +270 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_011.json +228 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_012.json +602 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_013.json +602 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_014.json +355 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_015.json +605 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_016.json +602 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_017.json +388 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_018.json +270 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_019.json +232 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_020.json +222 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_021.json +222 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_022.json +355 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_023.json +355 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_024.json +388 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RI_025.json +355 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_001.json +632 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_002.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_003.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_004.json +389 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_005.json +389 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_006.json +389 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_007.json +389 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_008.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_009.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_010.json +385 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_011.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_012.json +389 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_013.json +636 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_014.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_015.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_016.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_017.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_018.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_019.json +454 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_020.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_021.json +630 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_022.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_023.json +632 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_024.json +383 -0
- csv_stats-0.4.2/tests/reference/scenarios/results/RM_025.json +383 -0
- csv_stats-0.4.2/tests/reference/write_ours_check.py +27 -0
- csv_stats-0.4.2/tests/test_assumption_checks.py +38 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/tests/test_descriptive.py +7 -2
- csv_stats-0.4.2/tests/test_lmm.py +159 -0
- csv_stats-0.4.2/tests/test_lmm_fit.py +278 -0
- csv_stats-0.4.2/tests/test_lmm_formula.py +122 -0
- csv_stats-0.4.2/tests/test_lmm_invariants.py +171 -0
- csv_stats-0.4.2/tests/test_lmm_pairwise_covariates.py +75 -0
- csv_stats-0.4.2/tests/test_lmm_reference.py +222 -0
- csv_stats-0.4.2/tests/test_lmm_scenarios.py +514 -0
- csv_stats-0.4.2/tests/test_lmm_type3.py +115 -0
- csv_stats-0.2.1/.gitignore +0 -5
- csv_stats-0.2.1/src/csvstats/__init__.py +0 -1
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/anova.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/ttest.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/utils/__init__.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/utils/load_data.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/utils/plot_data.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/utils/plot_helper.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/utils/run_all_columns.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/utils/save_stats.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/utils/summary_stats.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/src/csvstats/utils/test_assumptions.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/tests/test_anova1way.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/tests/test_anova2way.py +0 -0
- {csv_stats-0.2.1 → csv_stats-0.4.2}/tests/test_core.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: csv-stats
|
|
3
|
-
Version: 0.2
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: A Python package for the life sciences to conduct hypothesis testing from CSV files.
|
|
5
5
|
Project-URL: Homepage, https://github.com/mtillman14/csv-stats
|
|
6
6
|
Project-URL: Documentation, https://github.com/mtillman14/csv-stats
|
|
@@ -20,6 +20,7 @@ Requires-Dist: pandas>=1.5
|
|
|
20
20
|
Requires-Dist: scipy>=1.7
|
|
21
21
|
Provides-Extra: dev
|
|
22
22
|
Requires-Dist: matplotlib>=3.6; extra == 'dev'
|
|
23
|
+
Requires-Dist: patsy>=0.5; extra == 'dev'
|
|
23
24
|
Requires-Dist: pingouin>=0.6.0; extra == 'dev'
|
|
24
25
|
Requires-Dist: pytest; extra == 'dev'
|
|
25
26
|
Requires-Dist: reportlab>=4.4.4; extra == 'dev'
|
|
@@ -27,6 +28,7 @@ Requires-Dist: seaborn>=0.13; extra == 'dev'
|
|
|
27
28
|
Requires-Dist: statsmodels>=0.14.5; extra == 'dev'
|
|
28
29
|
Provides-Extra: full
|
|
29
30
|
Requires-Dist: matplotlib>=3.6; extra == 'full'
|
|
31
|
+
Requires-Dist: patsy>=0.5; extra == 'full'
|
|
30
32
|
Requires-Dist: pingouin>=0.6.0; extra == 'full'
|
|
31
33
|
Requires-Dist: reportlab>=4.4.4; extra == 'full'
|
|
32
34
|
Requires-Dist: seaborn>=0.13; extra == 'full'
|
|
@@ -55,6 +57,58 @@ ci_interval([4.1, 5.0, 6.2]) # (low, high); also a seaborn errorbar= calla
|
|
|
55
57
|
ci_half_width(sd=1.2, n=5) # t(0.975, 4) * 1.2 / sqrt(5)
|
|
56
58
|
```
|
|
57
59
|
|
|
60
|
+
## Linear mixed models (0.4.1)
|
|
61
|
+
`csvstats.lmm` uses every observation: a subject missing some within-subject
|
|
62
|
+
levels is kept, not dropped (a repeated-measures ANOVA or paired t-test would
|
|
63
|
+
have to drop it). REML, sum-to-zero coding. The random effects default to an
|
|
64
|
+
intercept per subject. `random=` takes any lme4-style structure:
|
|
65
|
+
- random slopes, correlated or uncorrelated (`||`)
|
|
66
|
+
- crossed groupings, e.g. subject + item
|
|
67
|
+
- nested and interaction groupings, e.g. `site:subject`
|
|
68
|
+
|
|
69
|
+
Numeric `covariates=` are crossed with the factors. Term tests are type III,
|
|
70
|
+
as in lmerTest and SAS. So a factor crossed with a covariate is tested at
|
|
71
|
+
covariate = 0, and a `type3_at_covariate_zero` warning says so. Centre the
|
|
72
|
+
covariate to test the factor at the covariate's mean.
|
|
73
|
+
|
|
74
|
+
`csvstats.lmm_formula` reads and writes the lme4 spelling of these models
|
|
75
|
+
(`parse("y ~ group * time * x + (1 + x | subject)")`, `render(...)`), with
|
|
76
|
+
errors that point at the offending character. It accepts what `lmm` can fit:
|
|
77
|
+
the fixed part is ONE crossing (`a * b * x`, or `1`), and random terms are
|
|
78
|
+
`(… | g)`, `(… || g)`, `a:b` and `a/b`. A model with no more observations
|
|
79
|
+
than random effects is refused before fitting, as lme4 does.
|
|
80
|
+
|
|
81
|
+
`lmm_pairwise` takes the same `covariates=` and compares levels with each
|
|
82
|
+
covariate at its mean (emmeans' reference grid), or at the value you give
|
|
83
|
+
in `covariates_at={"age": 65}`. The record's `details["covariates_at"]`
|
|
84
|
+
states the value used. So with a covariate, `lmm`'s F for a factor (at 0)
|
|
85
|
+
and `lmm_pairwise`'s contrasts (at the mean) answer different questions,
|
|
86
|
+
exactly as lmerTest's anova and emmeans do in R.
|
|
87
|
+
|
|
88
|
+
The fit is checked against lme4 on 225 sampled scenarios over 9
|
|
89
|
+
random-effect structures (tests/reference/scenarios). That covers the
|
|
90
|
+
criterion itself at fixed θ, the estimates, θ and the Satterthwaite df.
|
|
91
|
+
Tests use **Satterthwaite** degrees of freedom, as R's lmerTest does: t(df) per
|
|
92
|
+
coefficient, a type-III F(q, ddf) per term, and t(df) per pairwise contrast. The
|
|
93
|
+
pairwise contrasts come from the full model (emmeans-style). Everything is checked
|
|
94
|
+
against lme4 / lmerTest / emmeans on 75 reference datasets (tests/reference).
|
|
95
|
+
If a df cannot be computed, the Wald test is reported, labelled `df_method: "wald"`.
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
from csvstats.lmm import lmm, lmm_pairwise
|
|
99
|
+
from csvstats.core import assumption_checks
|
|
100
|
+
|
|
101
|
+
lmm(df, "step_length", within=["session", "speed"], subject="subject") # one F(q, ddf) per term
|
|
102
|
+
lmm_pairwise(df, "step_length", within=["session", "speed"], subject="subject", factor="session",
|
|
103
|
+
levels={"session": ["post", "pre"]}) # post − pre within each speed, t(df)
|
|
104
|
+
assumption_checks(df, "step_length", within=["session"], subject="subject") # Shapiro–Wilk on residuals (+ Levene)
|
|
105
|
+
|
|
106
|
+
# Random slopes and crossed effects: y ~ cond * x + (1 + x | subject) + (1 | item)
|
|
107
|
+
lmm(df, "rt", within=["cond"], subject="subject", covariates=["x"],
|
|
108
|
+
random=[{"group": "subject", "terms": ["(Intercept)", "x"]},
|
|
109
|
+
{"group": "item"}])
|
|
110
|
+
```
|
|
111
|
+
|
|
58
112
|
## Examples
|
|
59
113
|
All code examples below use the following constants:
|
|
60
114
|
```python
|
|
@@ -20,6 +20,58 @@ ci_interval([4.1, 5.0, 6.2]) # (low, high); also a seaborn errorbar= calla
|
|
|
20
20
|
ci_half_width(sd=1.2, n=5) # t(0.975, 4) * 1.2 / sqrt(5)
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
## Linear mixed models (0.4.1)
|
|
24
|
+
`csvstats.lmm` uses every observation: a subject missing some within-subject
|
|
25
|
+
levels is kept, not dropped (a repeated-measures ANOVA or paired t-test would
|
|
26
|
+
have to drop it). REML, sum-to-zero coding. The random effects default to an
|
|
27
|
+
intercept per subject. `random=` takes any lme4-style structure:
|
|
28
|
+
- random slopes, correlated or uncorrelated (`||`)
|
|
29
|
+
- crossed groupings, e.g. subject + item
|
|
30
|
+
- nested and interaction groupings, e.g. `site:subject`
|
|
31
|
+
|
|
32
|
+
Numeric `covariates=` are crossed with the factors. Term tests are type III,
|
|
33
|
+
as in lmerTest and SAS. So a factor crossed with a covariate is tested at
|
|
34
|
+
covariate = 0, and a `type3_at_covariate_zero` warning says so. Centre the
|
|
35
|
+
covariate to test the factor at the covariate's mean.
|
|
36
|
+
|
|
37
|
+
`csvstats.lmm_formula` reads and writes the lme4 spelling of these models
|
|
38
|
+
(`parse("y ~ group * time * x + (1 + x | subject)")`, `render(...)`), with
|
|
39
|
+
errors that point at the offending character. It accepts what `lmm` can fit:
|
|
40
|
+
the fixed part is ONE crossing (`a * b * x`, or `1`), and random terms are
|
|
41
|
+
`(… | g)`, `(… || g)`, `a:b` and `a/b`. A model with no more observations
|
|
42
|
+
than random effects is refused before fitting, as lme4 does.
|
|
43
|
+
|
|
44
|
+
`lmm_pairwise` takes the same `covariates=` and compares levels with each
|
|
45
|
+
covariate at its mean (emmeans' reference grid), or at the value you give
|
|
46
|
+
in `covariates_at={"age": 65}`. The record's `details["covariates_at"]`
|
|
47
|
+
states the value used. So with a covariate, `lmm`'s F for a factor (at 0)
|
|
48
|
+
and `lmm_pairwise`'s contrasts (at the mean) answer different questions,
|
|
49
|
+
exactly as lmerTest's anova and emmeans do in R.
|
|
50
|
+
|
|
51
|
+
The fit is checked against lme4 on 225 sampled scenarios over 9
|
|
52
|
+
random-effect structures (tests/reference/scenarios). That covers the
|
|
53
|
+
criterion itself at fixed θ, the estimates, θ and the Satterthwaite df.
|
|
54
|
+
Tests use **Satterthwaite** degrees of freedom, as R's lmerTest does: t(df) per
|
|
55
|
+
coefficient, a type-III F(q, ddf) per term, and t(df) per pairwise contrast. The
|
|
56
|
+
pairwise contrasts come from the full model (emmeans-style). Everything is checked
|
|
57
|
+
against lme4 / lmerTest / emmeans on 75 reference datasets (tests/reference).
|
|
58
|
+
If a df cannot be computed, the Wald test is reported, labelled `df_method: "wald"`.
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
from csvstats.lmm import lmm, lmm_pairwise
|
|
62
|
+
from csvstats.core import assumption_checks
|
|
63
|
+
|
|
64
|
+
lmm(df, "step_length", within=["session", "speed"], subject="subject") # one F(q, ddf) per term
|
|
65
|
+
lmm_pairwise(df, "step_length", within=["session", "speed"], subject="subject", factor="session",
|
|
66
|
+
levels={"session": ["post", "pre"]}) # post − pre within each speed, t(df)
|
|
67
|
+
assumption_checks(df, "step_length", within=["session"], subject="subject") # Shapiro–Wilk on residuals (+ Levene)
|
|
68
|
+
|
|
69
|
+
# Random slopes and crossed effects: y ~ cond * x + (1 + x | subject) + (1 | item)
|
|
70
|
+
lmm(df, "rt", within=["cond"], subject="subject", covariates=["x"],
|
|
71
|
+
random=[{"group": "subject", "terms": ["(Intercept)", "x"]},
|
|
72
|
+
{"group": "item"}])
|
|
73
|
+
```
|
|
74
|
+
|
|
23
75
|
## Examples
|
|
24
76
|
All code examples below use the following constants:
|
|
25
77
|
```python
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "csv-stats"
|
|
7
|
-
version = "0.2
|
|
7
|
+
version = "0.4.2"
|
|
8
8
|
description = "A Python package for the life sciences to conduct hypothesis testing from CSV files."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
@@ -35,6 +35,7 @@ dependencies = [
|
|
|
35
35
|
full = [
|
|
36
36
|
"pingouin>=0.6.0",
|
|
37
37
|
"statsmodels>=0.14.5",
|
|
38
|
+
"patsy>=0.5", # csvstats.lmm builds its design matrices with patsy
|
|
38
39
|
"reportlab>=4.4.4",
|
|
39
40
|
"matplotlib>=3.6",
|
|
40
41
|
"seaborn>=0.13",
|
|
@@ -60,4 +61,10 @@ packages = ["src/csvstats"]
|
|
|
60
61
|
only-include = ["src/csvstats", "tests", "README.md"]
|
|
61
62
|
|
|
62
63
|
[tool.hatch.build]
|
|
63
|
-
ignore-vcs = true
|
|
64
|
+
ignore-vcs = true
|
|
65
|
+
|
|
66
|
+
# Collect only tests/. A bare `pytest` also walked src/, where the library
|
|
67
|
+
# module utils/test_assumptions.py (functions named test_*) was collected as
|
|
68
|
+
# tests and errored for missing fixtures.
|
|
69
|
+
[tool.pytest.ini_options]
|
|
70
|
+
testpaths = ["tests"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.2"
|
|
@@ -166,10 +166,17 @@ class _Prepared:
|
|
|
166
166
|
factors: list[str],
|
|
167
167
|
subject: str | None,
|
|
168
168
|
levels: dict[str, list[Any]] | None,
|
|
169
|
+
extra: Sequence[str] = (),
|
|
169
170
|
) -> None:
|
|
171
|
+
"""``extra``: further columns a test reads (an LMM's covariates,
|
|
172
|
+
random-effect groups and slopes), carried along; a row missing one
|
|
173
|
+
is dropped like a row missing the dv."""
|
|
170
174
|
if not isinstance(data, pd.DataFrame):
|
|
171
175
|
raise ValueError(f"data must be a pandas DataFrame, got {type(data).__name__}")
|
|
172
176
|
needed = [dv, *factors, *([subject] if subject else [])]
|
|
177
|
+
# dict.fromkeys: a column named twice (a covariate that is also a
|
|
178
|
+
# random slope) must be selected once, or frame[c] is a DataFrame
|
|
179
|
+
needed += [c for c in dict.fromkeys(extra) if c not in needed]
|
|
173
180
|
missing = [c for c in needed if c not in data.columns]
|
|
174
181
|
if missing:
|
|
175
182
|
raise ValueError(f"column(s) {missing!r} are not in the data")
|
|
@@ -182,9 +189,13 @@ class _Prepared:
|
|
|
182
189
|
bad = frame[dv].isna() | frame[factors].isna().any(axis=1)
|
|
183
190
|
if subject:
|
|
184
191
|
bad |= frame[subject].isna()
|
|
192
|
+
carried = [c for c in dict.fromkeys(extra) if c not in (dv, subject, *factors)]
|
|
193
|
+
if carried:
|
|
194
|
+
bad |= frame[carried].isna().any(axis=1)
|
|
185
195
|
if bad.any():
|
|
186
196
|
self.excluded_detail.append(
|
|
187
|
-
{"rows": int(bad.sum()), "reason": f"missing {dv} or a factor/subject value"
|
|
197
|
+
{"rows": int(bad.sum()), "reason": f"missing {dv} or a factor/subject value"
|
|
198
|
+
+ (f" or one of {carried}" if carried else "")}
|
|
188
199
|
)
|
|
189
200
|
self.warnings.append(
|
|
190
201
|
{"code": "rows_dropped_missing", "message": f"{int(bad.sum())} row(s) with a missing value dropped"}
|
|
@@ -334,6 +345,43 @@ def _levene(groups: list[np.ndarray], alpha: float) -> dict[str, Any]:
|
|
|
334
345
|
return {"name": "homogeneity_of_variance", "test": "levene", "scope": "groups", "statistic": _num(w), "p": _num(p), "violated": bool(p < alpha)}
|
|
335
346
|
|
|
336
347
|
|
|
348
|
+
def assumption_checks(
|
|
349
|
+
data: pd.DataFrame,
|
|
350
|
+
dv: str,
|
|
351
|
+
*,
|
|
352
|
+
between: Sequence[str] = (),
|
|
353
|
+
within: Sequence[str] = (),
|
|
354
|
+
subject: str | None = None,
|
|
355
|
+
levels: dict[str, list[Any]] | None = None,
|
|
356
|
+
alpha: float = 0.05,
|
|
357
|
+
) -> dict[str, Any]:
|
|
358
|
+
"""The checks a caller uses to RECOMMEND a test, before running one.
|
|
359
|
+
|
|
360
|
+
Normality (Shapiro–Wilk) of the residuals the parametric model would have:
|
|
361
|
+
``y − cell mean`` for between-only designs, and additionally centred on
|
|
362
|
+
each subject's mean when there is a within factor (every observation is
|
|
363
|
+
used; nobody is dropped). Homogeneity of variance (Levene, median-centred)
|
|
364
|
+
across the between cells, when there are any.
|
|
365
|
+
|
|
366
|
+
Returns ``{"assumptions": [...], "n": ...}``. Pre-testing assumptions to
|
|
367
|
+
choose a test is debated; callers should show this as evidence for a
|
|
368
|
+
recommendation the user can override, never as a silent switch.
|
|
369
|
+
"""
|
|
370
|
+
between, within = list(between), list(within)
|
|
371
|
+
factors = [*between, *within]
|
|
372
|
+
prep = _Prepared(data, dv, factors, subject if within else None, levels)
|
|
373
|
+
frame = prep.frame
|
|
374
|
+
y = frame[dv].astype(float)
|
|
375
|
+
resid = y - (frame.groupby(factors)[dv].transform("mean") if factors else y.mean())
|
|
376
|
+
if within and subject:
|
|
377
|
+
resid = resid - frame.groupby(subject)[dv].transform("mean") + y.mean()
|
|
378
|
+
checks = [_shapiro(resid.to_numpy(float), "residuals", alpha)]
|
|
379
|
+
if between:
|
|
380
|
+
groups = [g[dv].to_numpy(float) for _, g in frame.groupby(between)]
|
|
381
|
+
checks.append(_levene(groups, alpha))
|
|
382
|
+
return {"assumptions": checks, "n": prep.n_record()}
|
|
383
|
+
|
|
384
|
+
|
|
337
385
|
def _flag_violations(assumptions: list[dict], warnings: list[dict]) -> None:
|
|
338
386
|
for a in assumptions:
|
|
339
387
|
if a.get("violated"):
|
|
@@ -6,9 +6,13 @@ shape statistic gets it from here. That includes csv-stats' own test results
|
|
|
6
6
|
(StatStudio descriptives). So an error bar on a figure and the number in a
|
|
7
7
|
table cannot disagree.
|
|
8
8
|
|
|
9
|
-
Light on purpose: this module
|
|
9
|
+
Light on purpose: importing this module loads numpy and pandas only (never
|
|
10
10
|
pingouin, statsmodels, matplotlib or reportlab), so a plotting package can
|
|
11
|
-
depend on it cheaply.
|
|
11
|
+
depend on it cheaply. scipy is imported inside the two functions that need
|
|
12
|
+
it (:func:`t_critical`, :func:`summarize`): ``scipy.stats`` alone cost 2 s of
|
|
13
|
+
scistackplot's 4 s first import on Windows (2026-10-20), paid on every Plot
|
|
14
|
+
Studio open even when no figure draws an interval. ``tests/test_descriptive.py``
|
|
15
|
+
guards both.
|
|
12
16
|
|
|
13
17
|
Conventions (each one is a decision, stated once):
|
|
14
18
|
|
|
@@ -34,7 +38,6 @@ from typing import Any, Literal
|
|
|
34
38
|
|
|
35
39
|
import numpy as np
|
|
36
40
|
import pandas as pd
|
|
37
|
-
from scipy import stats
|
|
38
41
|
|
|
39
42
|
#: Divisor offset of the sample SD (and variance): ``n - SD_DDOF``.
|
|
40
43
|
SD_DDOF = 1
|
|
@@ -61,6 +64,8 @@ def t_critical(n: Any, level: float = CI_LEVEL) -> Any:
|
|
|
61
64
|
NaN where ``n < 2``. Accepts a scalar, numpy array or pandas Series
|
|
62
65
|
(index kept) and returns the same kind.
|
|
63
66
|
"""
|
|
67
|
+
from scipy import stats # lazy: see the module docstring
|
|
68
|
+
|
|
64
69
|
counts = np.asarray(n, dtype=float)
|
|
65
70
|
upper = 1.0 - (1.0 - level) / 2.0
|
|
66
71
|
with np.errstate(invalid="ignore"):
|
|
@@ -126,6 +131,8 @@ def summarize(values: Any, level: float = CI_LEVEL) -> dict[str, float]:
|
|
|
126
131
|
``cv`` (SD / mean) is NaN when the mean is 0. Skewness needs 3 values and
|
|
127
132
|
kurtosis 4; with fewer they are NaN.
|
|
128
133
|
"""
|
|
134
|
+
from scipy import stats # lazy: see the module docstring
|
|
135
|
+
|
|
129
136
|
raw = pd.Series(values, dtype=float)
|
|
130
137
|
clean = raw.dropna()
|
|
131
138
|
n = int(len(clean))
|