DaSPi 2.4.0__tar.gz → 2.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. {daspi-2.4.0 → daspi-2.4.1}/PKG-INFO +1 -1
  2. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/precast.py +60 -29
  3. {daspi-2.4.0 → daspi-2.4.1}/pyproject.toml +1 -1
  4. {daspi-2.4.0 → daspi-2.4.1}/LICENSE +0 -0
  5. {daspi-2.4.0 → daspi-2.4.1}/README.md +0 -0
  6. {daspi-2.4.0 → daspi-2.4.1}/daspi/__init__.py +0 -0
  7. {daspi-2.4.0 → daspi-2.4.1}/daspi/_typing.py +0 -0
  8. {daspi-2.4.0 → daspi-2.4.1}/daspi/_version.py +0 -0
  9. {daspi-2.4.0 → daspi-2.4.1}/daspi/anova/__init__.py +0 -0
  10. {daspi-2.4.0 → daspi-2.4.1}/daspi/anova/convert.py +0 -0
  11. {daspi-2.4.0 → daspi-2.4.1}/daspi/anova/model.py +0 -0
  12. {daspi-2.4.0 → daspi-2.4.1}/daspi/anova/tables.py +0 -0
  13. {daspi-2.4.0 → daspi-2.4.1}/daspi/config.py +0 -0
  14. {daspi-2.4.0 → daspi-2.4.1}/daspi/constants.py +0 -0
  15. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/__init__.py +0 -0
  16. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/ancova.csv +0 -0
  17. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/anova.csv +0 -0
  18. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/anova2.csv +0 -0
  19. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/anova2_unbalanced.csv +0 -0
  20. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/anova3.csv +0 -0
  21. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/anova3_unbalanced.csv +0 -0
  22. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/carpet_full-factorial.csv +0 -0
  23. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/covariate.csv +0 -0
  24. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/drop_card.csv +0 -0
  25. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/eeprom_full-factorial.csv +0 -0
  26. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/eeprom_partial-factorial.csv +0 -0
  27. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/grnr_adjustment.csv +0 -0
  28. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/grnr_layer_thickness.csv +0 -0
  29. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/grnr_spc.csv +0 -0
  30. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/iris.csv +0 -0
  31. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/mpg.csv +0 -0
  32. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/painkillers-dissolution.csv +0 -0
  33. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/partial_factorial.csv +0 -0
  34. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/penguins.csv +0 -0
  35. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/process_capability.mpx +0 -0
  36. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/salt_sticks.csv +0 -0
  37. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/shoe-sole.csv +0 -0
  38. {daspi-2.4.0 → daspi-2.4.1}/daspi/datasets/tips.csv +0 -0
  39. {daspi-2.4.0 → daspi-2.4.1}/daspi/doe/__init__.py +0 -0
  40. {daspi-2.4.0 → daspi-2.4.1}/daspi/doe/build.py +0 -0
  41. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/__init__.py +0 -0
  42. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/appearance.py +0 -0
  43. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/chart.py +0 -0
  44. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/classify.py +0 -0
  45. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/facets.py +0 -0
  46. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/plotter.py +0 -0
  47. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/styles/daspi-dark.mplstyle +0 -0
  48. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/styles/daspi.mplstyle +0 -0
  49. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/styles/ggplot2.mplstyle +0 -0
  50. {daspi-2.4.0 → daspi-2.4.1}/daspi/plotlib/styles/seaborn.mplstyle +0 -0
  51. {daspi-2.4.0 → daspi-2.4.1}/daspi/requirements.txt +0 -0
  52. {daspi-2.4.0 → daspi-2.4.1}/daspi/statistics/__init__.py +0 -0
  53. {daspi-2.4.0 → daspi-2.4.1}/daspi/statistics/confidence.py +0 -0
  54. {daspi-2.4.0 → daspi-2.4.1}/daspi/statistics/estimation.py +0 -0
  55. {daspi-2.4.0 → daspi-2.4.1}/daspi/statistics/hypothesis.py +0 -0
  56. {daspi-2.4.0 → daspi-2.4.1}/daspi/statistics/montecarlo.py +0 -0
  57. {daspi-2.4.0 → daspi-2.4.1}/daspi/strings.py +0 -0
  58. {daspi-2.4.0 → daspi-2.4.1}/tests/ANOVA_SS_Fehler.mpx +0 -0
  59. {daspi-2.4.0 → daspi-2.4.1}/tests/ANOVA_SS_Fehler.mpx.bak +0 -0
  60. {daspi-2.4.0 → daspi-2.4.1}/tests/GageRnR.mpx +0 -0
  61. {daspi-2.4.0 → daspi-2.4.1}/tests/GageRnR.mpx.bak +0 -0
  62. {daspi-2.4.0 → daspi-2.4.1}/tests/__init__.py +0 -0
  63. {daspi-2.4.0 → daspi-2.4.1}/tests/anova_convert_test.py +0 -0
  64. {daspi-2.4.0 → daspi-2.4.1}/tests/anova_model_test.py +0 -0
  65. {daspi-2.4.0 → daspi-2.4.1}/tests/anova_tables_test.py +0 -0
  66. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_alignments_basic.png +0 -0
  67. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_all_alignments.png +0 -0
  68. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_angles_basic.png +0 -0
  69. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_callable_formatters.png +0 -0
  70. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_combined_all_features.png +0 -0
  71. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_extreme_angles.png +0 -0
  72. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_formatters_basic.png +0 -0
  73. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_formatters_scientific.png +0 -0
  74. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_multivariate_formatting.png +0 -0
  75. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_orientation_mapping.png +0 -0
  76. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Formatting_Features_Test_percentage_formatter.png +0 -0
  77. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_comparison_with_violin.png +0 -0
  78. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_custom_color.png +0 -0
  79. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_custom_width.png +0 -0
  80. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_joint_chart_mixed_plots.png +0 -0
  81. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_multivariate_chart_facets.png +0 -0
  82. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_resolution_high.png +0 -0
  83. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_single_chart_horizontal.png +0 -0
  84. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_single_chart_no_fade.png +0 -0
  85. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_single_chart_no_fill.png +0 -0
  86. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_single_chart_simple.png +0 -0
  87. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/GaussianKDEContourUnivariate_single_chart_with_hue.png +0 -0
  88. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/JointChart_bar_stacking.png +0 -0
  89. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/JointChart_kdes_kde-mean.png +0 -0
  90. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/JointChart_kdes_mixed-kde.png +0 -0
  91. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/JointChart_pareto_marked.png +0 -0
  92. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/JointChart_probability_dists-prob.png +0 -0
  93. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/JointChart_probability_norm-prob.png +0 -0
  94. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/JointChart_regression_kde.png +0 -0
  95. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/MultivariateChart_full-stripes.png +0 -0
  96. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/MultivariateChart_full.png +0 -0
  97. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_bivariate-univariate-charts_contour-mean-test.png +0 -0
  98. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_bivariate-univariate-charts_mean-test.png +0 -0
  99. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_bivariate-univariate-charts_simple.png +0 -0
  100. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_bivariate-univariate-charts_smoothed.png +0 -0
  101. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_bivariate-univariate-charts_user.png +0 -0
  102. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_gage_rnr_model_basic.png +0 -0
  103. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_gage_study_model_basic.png +0 -0
  104. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_pair_comparison_charts_basic.png +0 -0
  105. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_parameter_relevance_charts_basic.png +0 -0
  106. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_process-capabity-analysis-charts_hue.png +0 -0
  107. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/Precasts_residual_charts_basic.png +0 -0
  108. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_KDE-cumulative_multiple.png +0 -0
  109. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_KDE-cumulative_simple.png +0 -0
  110. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_KDE_multiple.png +0 -0
  111. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_KDE_ridge.png +0 -0
  112. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_KDE_simple.png +0 -0
  113. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_beeswarm_multiple.png +0 -0
  114. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_beeswarm_simple.png +0 -0
  115. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_blandaltman_simple.png +0 -0
  116. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_blandaltman_user.png +0 -0
  117. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_box_fill.png +0 -0
  118. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_box_multiple.png +0 -0
  119. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_box_simple.png +0 -0
  120. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_categorical-float-features_simple.png +0 -0
  121. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_errorbar_mean-test.png +0 -0
  122. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_errorbar_sem.png +0 -0
  123. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_errorbar_std-test.png +0 -0
  124. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_errorbar_var-test.png +0 -0
  125. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_fitted-density_cdf-multiple.png +0 -0
  126. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_fitted-density_pdf-data.png +0 -0
  127. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_fitted-density_pdf-norm.png +0 -0
  128. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_jitter_multiple.png +0 -0
  129. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_jitter_simple.png +0 -0
  130. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_line_hue.png +0 -0
  131. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_line_hue_size.png +0 -0
  132. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_pareto-threshold_simple.png +0 -0
  133. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_pareto_simple.png +0 -0
  134. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_pareto_transposed.png +0 -0
  135. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_quantiles_multiple.png +0 -0
  136. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_quantiles_simple.png +0 -0
  137. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_full.png +0 -0
  138. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_hue-shape.png +0 -0
  139. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_hue-size.png +0 -0
  140. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_hue.png +0 -0
  141. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_shape.png +0 -0
  142. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_simple-stripes-65ci.png +0 -0
  143. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_simple-stripes-99ci.png +0 -0
  144. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_simple-stripes.png +0 -0
  145. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_simple.png +0 -0
  146. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_size-shape.png +0 -0
  147. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_size.png +0 -0
  148. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_scatter_transposed.png +0 -0
  149. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_violin_mono.png +0 -0
  150. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_violin_multiple.png +0 -0
  151. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_violin_simple.png +0 -0
  152. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_violine-contour_simple.png +0 -0
  153. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_violine_mono.png +0 -0
  154. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_violine_multiple.png +0 -0
  155. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/SingleChart_violine_simple.png +0 -0
  156. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/_debug_kde_bottom_crop.png +0 -0
  157. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/_debug_violin_bottom_crop.png +0 -0
  158. {daspi-2.4.0 → daspi-2.4.1}/tests/charts/_debug_violin_top_crop.png +0 -0
  159. {daspi-2.4.0 → daspi-2.4.1}/tests/config_test.py +0 -0
  160. {daspi-2.4.0 → daspi-2.4.1}/tests/data/anova3_result.csv +0 -0
  161. {daspi-2.4.0 → daspi-2.4.1}/tests/data/dists_10-samples.csv +0 -0
  162. {daspi-2.4.0 → daspi-2.4.1}/tests/data/dists_25-samples.csv +0 -0
  163. {daspi-2.4.0 → daspi-2.4.1}/tests/data/gage_rnr.csv +0 -0
  164. {daspi-2.4.0 → daspi-2.4.1}/tests/data/gage_study.csv +0 -0
  165. {daspi-2.4.0 → daspi-2.4.1}/tests/data/generate_dists.py +0 -0
  166. {daspi-2.4.0 → daspi-2.4.1}/tests/data/grnr_d-optimal.csv +0 -0
  167. {daspi-2.4.0 → daspi-2.4.1}/tests/data/uncertainties.csv +0 -0
  168. {daspi-2.4.0 → daspi-2.4.1}/tests/doe_build_test.py +0 -0
  169. {daspi-2.4.0 → daspi-2.4.1}/tests/plotlib_appearance_test.py +0 -0
  170. {daspi-2.4.0 → daspi-2.4.1}/tests/plotlib_chart_test.py +0 -0
  171. {daspi-2.4.0 → daspi-2.4.1}/tests/plotlib_classify_test.py +0 -0
  172. {daspi-2.4.0 → daspi-2.4.1}/tests/plotlib_facets_test.py +0 -0
  173. {daspi-2.4.0 → daspi-2.4.1}/tests/plotlib_plotter_test.py +0 -0
  174. {daspi-2.4.0 → daspi-2.4.1}/tests/plotlib_templates_test.py +0 -0
  175. {daspi-2.4.0 → daspi-2.4.1}/tests/plotlib_visual_test.py +0 -0
  176. {daspi-2.4.0 → daspi-2.4.1}/tests/r2_pred.mpx +0 -0
  177. {daspi-2.4.0 → daspi-2.4.1}/tests/r2_pred.mpx.bak +0 -0
  178. {daspi-2.4.0 → daspi-2.4.1}/tests/statistics_confidence_test.py +0 -0
  179. {daspi-2.4.0 → daspi-2.4.1}/tests/statistics_estimation_test.py +0 -0
  180. {daspi-2.4.0 → daspi-2.4.1}/tests/statistics_hypothesis_test.py +0 -0
  181. {daspi-2.4.0 → daspi-2.4.1}/tests/statistics_montecarlo_test.py +0 -0
  182. {daspi-2.4.0 → daspi-2.4.1}/tests/strings_test.py +0 -0
  183. {daspi-2.4.0 → daspi-2.4.1}/tests/test_full_factorial_design_builder.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: DaSPi
3
- Version: 2.4.0
3
+ Version: 2.4.1
4
4
  Summary: Visualize and analyze your data with DaSPi. This package is designed for users who want to find relevant influencing factors in processes and validate improvements.
5
5
  Author-Email: Reto Jäggli <reto@jaeggli.email>
6
6
  License: MIT
@@ -64,10 +64,15 @@ from matplotlib.ticker import PercentFormatter
64
64
  from pandas.core.frame import DataFrame
65
65
  from scipy.stats._distn_infrastructure import rv_continuous
66
66
 
67
- from .._typing import EstimationStrategy
68
67
  from ..anova import GageRnRModel, GageStudyModel, LinearModel
69
68
  from ..constants import ANOVA, CATEGORY, COLOR, DEFAULT, DIST
70
- from ..statistics import UNBOUNDED, ProcessEstimator, SpecLimits
69
+ from ..statistics import (
70
+ UNBOUNDED,
71
+ DistributionEstimator,
72
+ ProcessEstimator,
73
+ SpecLimits,
74
+ ensure_generic,
75
+ )
71
76
  from ..strings import STR
72
77
  from .chart import JointChart, check_label_order
73
78
  from .plotter import (
@@ -884,28 +889,35 @@ class ProcessCapabilityAnalysisCharts(JointChart):
884
889
  The specification limits for the process capability analysis.
885
890
  hue : str, optional
886
891
  The hue variable for the chart, by default ''.
892
+ strategy : {'norm', 'fit', 'data'}, optional
893
+ Which strategy should be used to determine the control
894
+ limits (process spread). Note that `'eval'` is not supported
895
+ here: each hue group could independently evaluate a different
896
+ strategy, which would make the chart panel inconsistent.
897
+ - `norm`: it is assumed that the data is subject to normal
898
+ distribution. The variation tolerance is then calculated as
899
+ agreement * standard deviation. `dist` must be `'norm'` in
900
+ this case.
901
+ - `fit`: the process spread is calculated from `dist`, fitted
902
+ to the process data (the same `dist` is used for the
903
+ Probability plot and the capability indices, so both stay
904
+ consistent).
905
+ - `data`: the quantiles for the process variation tolerance
906
+ are read directly from the data (no distribution is fitted
907
+ for the control limits). A representative `dist` is searched
908
+ once among `possible_dists` on the pooled data, purely to
909
+ give the Probability plot a common reference distribution
910
+ for every hue group.
911
+ by default 'norm'
887
912
  dist : scipy stats rv_continuous, optional
888
- The probability distribution use for creating feature data
889
- (the theoretical values). Default is 'norm'.
913
+ The probability distribution to use for creating feature data
914
+ (the theoretical values) and, if `strategy='fit'`, for
915
+ calculating the control limits. Ignored (auto-determined) if
916
+ `strategy='data'`. Default is 'norm'.
890
917
  error_values : tuple of float, optional
891
918
  If the process data may contain coded values for measurement
892
919
  errors or similar, they can be specified here,
893
920
  by default [].
894
- strategy : {'eval', 'fit', 'norm', 'data'}, optional
895
- Which strategy should be used to determine the control
896
- limits (process spread):
897
- - `eval`: The strategy is determined according to the given
898
- evaluate function. If none is given, the internal `evaluate`
899
- method is used.
900
- - `fit`: First, the distribution that best represents the
901
- process data is searched for and then the agreed process
902
- spread is calculated
903
- - norm: it is assumed that the data is subject to normal
904
- distribution. The variation tolerance is then calculated as
905
- agreement * standard deviation
906
- - data: The quantiles for the process variation tolerance
907
- are read directly from the data.
908
- by default 'norm'
909
921
  agreement : float or int, optional
910
922
  Specify the tolerated process variation for which the
911
923
  control limits are to be calculated.
@@ -919,8 +931,9 @@ class ProcessCapabilityAnalysisCharts(JointChart):
919
931
  spread, e.g. 0.9973 (which corresponds to ~ 6 σ)
920
932
  by default 6
921
933
  possible_dists : tuple of strings or rv_continous, optional
922
- Distributions to which the data may be subject. Only
923
- continuous distributions of scipy.stats are allowed,
934
+ Distributions to which the data may be subject, only used to
935
+ search for a representative `dist` when `strategy='data'`.
936
+ Only continuous distributions of scipy.stats are allowed,
924
937
  by default DIST.COMMON
925
938
  stretch_figsize : bool | float | tuple[float, float], optional
926
939
  If True, the height and width of the figure are stretched based
@@ -965,8 +978,10 @@ class ProcessCapabilityAnalysisCharts(JointChart):
965
978
  """The specification limits for the process capability analysis."""
966
979
 
967
980
  dist: rv_continuous | str
968
- """The probability distribution use for creating feature data
969
- (the theoretical values)."""
981
+ """The probability distribution used for creating feature data
982
+ (the theoretical values). For `strategy='data'` this is the
983
+ distribution found by searching `possible_dists` on the pooled
984
+ data, not a user-provided value."""
970
985
 
971
986
  kw_estim: dict[str, Any]
972
987
  """Keyword arguments for the ProcessEstimator instances used for
@@ -982,25 +997,41 @@ class ProcessCapabilityAnalysisCharts(JointChart):
982
997
  *,
983
998
  spec_limits: SpecLimits,
984
999
  hue: str = '',
1000
+ strategy: Literal['norm', 'fit', 'data'] = 'norm',
985
1001
  dist: rv_continuous | str = 'norm',
986
1002
  error_values: tuple[float, ...] = (),
987
- strategy: EstimationStrategy = 'norm',
988
1003
  agreement: float | int = 6, # noqa: PYI041
989
1004
  possible_dists: tuple[str | rv_continuous, ...] = DIST.COMMON,
990
1005
  stretch_figsize: bool | float | tuple[float, float] = False,
991
1006
  ) -> None:
992
1007
  assert not spec_limits.both_unbounded, (
993
1008
  'At least one specification limit must not be None')
994
-
1009
+ assert strategy in ('norm', 'fit', 'data'), (
1010
+ f"strategy must be 'norm', 'fit' or 'data', got {strategy!r}. "
1011
+ "'eval' is not supported here: each hue group could evaluate "
1012
+ "a different strategy, making the chart panel inconsistent.")
1013
+ if strategy == 'norm':
1014
+ assert ensure_generic(dist) is ensure_generic('norm'), (
1015
+ f"dist must be 'norm' when strategy='norm', got {dist!r}: "
1016
+ "the control limits are calculated assuming a normal "
1017
+ "distribution.")
1018
+
995
1019
  self.spec_limits = spec_limits
996
- self.dist = dist
1020
+ self.n_groups = source.groupby(hue).ngroups if hue else 1
1021
+ filtered = source[~source[target].isin(error_values)]
1022
+
1023
+ if strategy == 'data':
1024
+ self.dist = DistributionEstimator(
1025
+ filtered[target], possible_dists=possible_dists).dist
1026
+ else:
1027
+ self.dist = dist
1028
+
997
1029
  self.kw_estim = {
998
1030
  'error_values': error_values,
999
1031
  'strategy': strategy,
1000
1032
  'agreement': agreement,
1001
- 'possible_dists': possible_dists}
1002
- self.n_groups = source.groupby(hue).ngroups if hue else 1
1003
- filtered = source[~source[target].isin(error_values)]
1033
+ 'possible_dists': (
1034
+ possible_dists if strategy == 'data' else (self.dist,))}
1004
1035
  super().__init__(
1005
1036
  source=(filtered, filtered, filtered, source, source),
1006
1037
  target=target,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "DaSPi"
3
- version = "2.4.0"
3
+ version = "2.4.1"
4
4
  description = "Visualize and analyze your data with DaSPi. This package is designed for users who want to find relevant influencing factors in processes and validate improvements."
5
5
  authors = [
6
6
  { name = "Reto Jäggli", email = "reto@jaeggli.email" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes