process-improve 1.22.0__tar.gz → 1.22.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.
- {process_improve-1.22.0 → process_improve-1.22.2}/PKG-INFO +1 -1
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/batch/features.py +6 -6
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/batch/plotting.py +3 -3
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/batch/tools.py +2 -2
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/bivariate/methods.py +6 -5
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/optimization.py +3 -1
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/monitoring/control_charts.py +12 -8
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/multivariate/methods.py +12 -7
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/multivariate/plots.py +2 -1
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/regression/methods.py +8 -2
- {process_improve-1.22.0 → process_improve-1.22.2}/pyproject.toml +1 -1
- {process_improve-1.22.0 → process_improve-1.22.2}/README.md +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/batch/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/batch/alignment_helpers.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/batch/data_input.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/batch/preprocessing.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/bivariate/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/bivariate/tools.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/batch/batch-fake-data.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/batch/details.txt +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/batch/dryer.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/batch/nylon.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/experiments/boilingpot.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/experiments/test_doe1.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/monitoring/batch-yield-and-purity.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/monitoring/rubber-colour.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/C.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/Hotellings_T2_A3.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/Hotellings_T2_A6.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/LDPE.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/P.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/R.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/T.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/U.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/W.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/Yhat_A6.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/dtu-pectin/NOTICE +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/dtu-pectin/extraction1.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/dtu-pectin/extraction2.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/dtu-pectin/extraction3.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/dtu-pectin/ftir1.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/dtu-pectin/ftir2.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/dtu-pectin/ftir3.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/kamyr.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tablet-spectra.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/SOURCE +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group1.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group2.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group3.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group4.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group5.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/process_conditions.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group1.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group2.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group3.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group4.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/properties_Group5.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/tpls-pyphi/quality_indicators.csv +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/analysis.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/augment.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/datasets.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_factorial.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_mixture.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_optimal.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_response_surface.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_screening.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_utils.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/evaluate.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/factor.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/api.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/data/concepts.yaml +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/data/decision_rules.yaml +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/data/design_types.yaml +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/data/diagnostics.yaml +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/engine.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/models.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/models.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/optimal.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/simulations.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/strategy/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/strategy/budget.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/strategy/domain_templates.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/strategy/engine.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/strategy/models.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/structures.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/tools.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/api.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/cube_plot.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/design_quality.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/diagnostics.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/effects.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/optimization_plots.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/registry.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/significance.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/square_plot.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/plots/surfaces.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/mcp_server.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/monitoring/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/monitoring/metrics.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/monitoring/tools.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/multivariate/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/multivariate/tools.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/Example notebook.ipynb +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/Tablets.xlsx +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/batch/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/batch/alignment-and-pca-example.ipynb +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/batch/batch-optimization.ipynb +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/batch/batch_llm.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/batch/batch_llm_multivariate.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/batch/batch_music.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/batch/demo-multiplots.ipynb +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/experiments/case-studies.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/least-squares-modelling/Misguided-reliance-on-R2-alone.ipynb +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/multivariate/pca_example.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/regression/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/regression/tools.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/simulation/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/simulation/model.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/simulation/tools.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/tool_safety.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/tool_spec.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/univariate/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/univariate/metrics.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/univariate/tools.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/adapters/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/adapters/base.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/adapters/echarts_adapter.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/adapters/plotly_adapter.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/charts/__init__.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/charts/boxplot.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/colors.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/spec.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/themes.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/tools.py +0 -0
- {process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: process-improve
|
|
3
|
-
Version: 1.22.
|
|
3
|
+
Version: 1.22.2
|
|
4
4
|
Summary: Designed Experiments; Latent Variables (PCA, PLS, multivariate methods with missing data); Process Monitoring; Batch data analysis.
|
|
5
5
|
Keywords: Designed Experiments,Latent Variables,PCA,PLS,Multivariate Data Analysis,Batch data analysis
|
|
6
6
|
Author: Kevin Dunn
|
|
@@ -448,12 +448,12 @@ def f_count(
|
|
|
448
448
|
"""
|
|
449
449
|
Feature: count.
|
|
450
450
|
|
|
451
|
-
The
|
|
451
|
+
The number of non-missing observations for each tag, for the given tags
|
|
452
452
|
in ``tags``, for each unique batch in the ``batch_col`` indicator column,
|
|
453
453
|
and within each unique phase, per batch, of the ``phase_col`` column.
|
|
454
454
|
|
|
455
|
-
|
|
456
|
-
|
|
455
|
+
For data without internal gaps this count equals the 1-based index of the
|
|
456
|
+
final row, so it can also be used as that index for other calculations.
|
|
457
457
|
|
|
458
458
|
See also: f_sum, f_last
|
|
459
459
|
"""
|
|
@@ -659,10 +659,10 @@ def f_elbow( # noqa: PLR0913
|
|
|
659
659
|
elbow_index = np.nan
|
|
660
660
|
|
|
661
661
|
if only_index:
|
|
662
|
-
output.loc[batch_id
|
|
662
|
+
output.loc[batch_id, tag] = elbow_index
|
|
663
663
|
elif np.isnan(elbow_index):
|
|
664
|
-
output.loc[batch_id
|
|
664
|
+
output.loc[batch_id, tag] = np.nan
|
|
665
665
|
else:
|
|
666
|
-
output.loc[batch_id
|
|
666
|
+
output.loc[batch_id, tag] = x_vals[elbow_index]
|
|
667
667
|
|
|
668
668
|
return output.rename(columns=dict(zip(tags, f_names, strict=False)))
|
|
@@ -237,7 +237,7 @@ def colours_per_batch_id(
|
|
|
237
237
|
Return a colour to use for each trace in the plot. A dictionary: keys are batch ids, and
|
|
238
238
|
the value is a colour and line width setting for Plotly.
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
use_default_colour: bool
|
|
241
241
|
If True, then the default colour is used (grey: 0.5, 0.5, 0.5)
|
|
242
242
|
"""
|
|
243
243
|
if colour_map is None:
|
|
@@ -558,8 +558,8 @@ def plot_multitags( # noqa: PLR0912, PLR0913, PLR0915
|
|
|
558
558
|
method="animate",
|
|
559
559
|
args=[
|
|
560
560
|
# https://plotly.com/python/animations/
|
|
561
|
-
# Note the None is in a list
|
|
562
|
-
[
|
|
561
|
+
# Note the None is in a list.
|
|
562
|
+
[None],
|
|
563
563
|
dict(
|
|
564
564
|
frame=dict(duration=0, redraw=False),
|
|
565
565
|
transition=dict(duration=0),
|
|
@@ -53,7 +53,7 @@ _TIME_FEATURE_MAP = {
|
|
|
53
53
|
"etc. for each batch and each measurement tag. "
|
|
54
54
|
"The result is a feature matrix with one row per batch, suitable for multivariate "
|
|
55
55
|
"analysis (e.g. PCA on batch data). "
|
|
56
|
-
"Available features: 'mean', 'median', 'std', 'iqr', '
|
|
56
|
+
"Available features: 'mean', 'median', 'std', 'iqr', 'sum', "
|
|
57
57
|
"'min', 'max', 'last', 'count'. "
|
|
58
58
|
"Time-dependent features (require time_column): 'area', 'slope'."
|
|
59
59
|
),
|
|
@@ -76,7 +76,7 @@ _TIME_FEATURE_MAP = {
|
|
|
76
76
|
"items": {
|
|
77
77
|
"type": "string",
|
|
78
78
|
"enum": [
|
|
79
|
-
"mean", "median", "std", "iqr",
|
|
79
|
+
"mean", "median", "std", "iqr",
|
|
80
80
|
"sum", "min", "max", "last", "count", "area", "slope",
|
|
81
81
|
],
|
|
82
82
|
},
|
|
@@ -16,13 +16,14 @@ def find_elbow_point(x: np.ndarray, y: np.ndarray, max_iter: int = 41) -> int |
|
|
|
16
16
|
Find the elbow point when plotting numeric entries in `x` vs numeric values in list `y`.
|
|
17
17
|
|
|
18
18
|
Return the index into the vectors `x` and `y` [the vectors must have the same length], where
|
|
19
|
-
the elbow point occurs.
|
|
19
|
+
the elbow point occurs. Returns -1 if every value in `x` or `y` is missing.
|
|
20
20
|
|
|
21
21
|
Using a robust linear fit, sorts the samples in X (independent variable)
|
|
22
|
-
and takes
|
|
23
|
-
linear regressions
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
and takes the first 5 samples from the left, and the last 5 from the right,
|
|
23
|
+
then fits two linear regressions and computes the intersection of the two
|
|
24
|
+
fitted lines. The window size is then grown over `max_iter` (default 41)
|
|
25
|
+
evenly spaced steps, via `numpy.linspace`, up to roughly half the data,
|
|
26
|
+
accumulating one intersection point per step.
|
|
26
27
|
|
|
27
28
|
The elbow is taken as the data point whose (x, y) location is closest to
|
|
28
29
|
the median of the accumulated intersection points; the median location is
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/optimization.py
RENAMED
|
@@ -359,7 +359,9 @@ def _steepest_path( # noqa: PLR0913
|
|
|
359
359
|
step_size : float
|
|
360
360
|
Step magnitude in coded units (default 0.5).
|
|
361
361
|
n_steps : int
|
|
362
|
-
Number of steps to
|
|
362
|
+
Number of steps to take away from the design centre (default 10).
|
|
363
|
+
The returned ``steps`` list has ``n_steps + 1`` entries because it
|
|
364
|
+
also includes step 0 at the centre.
|
|
363
365
|
direction : str
|
|
364
366
|
``"ascent"`` or ``"descent"``.
|
|
365
367
|
factor_ranges : dict or None
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/monitoring/control_charts.py
RENAMED
|
@@ -84,13 +84,17 @@ class ControlChart:
|
|
|
84
84
|
"""
|
|
85
85
|
Find for a given vector `y`, the control chart target and limits.
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
min(20, max(10, np.ceil(0.10 * N))))
|
|
87
|
+
Works for both the Holt-Winters ('hw') and 'xbar.no.subgroup' variants.
|
|
89
88
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
For the Holt-Winters variant, when there are fewer than
|
|
90
|
+
|
|
91
|
+
min(20, max(10, np.ceil(0.10 * N)))
|
|
92
|
+
|
|
93
|
+
measurements (where N is the length of the input vector), the target and
|
|
94
|
+
standard deviation are estimated directly from the data and any provided
|
|
95
|
+
`target` / `s` are ignored for that small-sample case.
|
|
96
|
+
Otherwise, if `target` and `s` are numeric, those values are used;
|
|
97
|
+
if not, they are estimated.
|
|
94
98
|
"""
|
|
95
99
|
self._given_target = target
|
|
96
100
|
self._given_s = s
|
|
@@ -149,8 +153,8 @@ class ControlChart:
|
|
|
149
153
|
def _xbar_no_subgroup_fit(self) -> None:
|
|
150
154
|
"""
|
|
151
155
|
Fit the control chart from the data samples, assuming each sample is its own subgroup.
|
|
152
|
-
|
|
153
|
-
calculated.
|
|
156
|
+
The `style` attribute ('regular' | 'robust') switches how the average and standard
|
|
157
|
+
deviation are calculated.
|
|
154
158
|
|
|
155
159
|
Control chart limits assume the data are normally distributed and independent. In
|
|
156
160
|
particular, this last assumption can have consequences if not actually met. Limits may be
|
|
@@ -2972,17 +2972,22 @@ class TPLS(RegressorMixin, BaseEstimator):
|
|
|
2972
2972
|
max_iter : int, optional
|
|
2973
2973
|
The maximum number of iterations for the TPLS algorithm. Default is 500.
|
|
2974
2974
|
|
|
2975
|
+
skip_f_matrix_preprocessing : bool, optional
|
|
2976
|
+
If True, the F (formula) matrices are used as-is, skipping the internal
|
|
2977
|
+
centering and scaling of the F block. Default is False.
|
|
2978
|
+
|
|
2975
2979
|
Notes
|
|
2976
2980
|
-----
|
|
2977
|
-
The input ``X`` is a dictionary with
|
|
2981
|
+
The input ``X`` passed to :meth:`fit` and :meth:`predict` is a dictionary with 3 keys:
|
|
2978
2982
|
|
|
2979
|
-
- ``D``: Database of DataFrames (properties in columns, materials in rows).
|
|
2980
|
-
``D = {"Group A": df_props_a, "Group B": df_props_b, ...}``
|
|
2981
2983
|
- ``F``: Formula matrices (rows = blends, columns = materials).
|
|
2982
2984
|
``F = {"Group A": df_formulas_a, "Group B": df_formulas_b, ...}``
|
|
2983
2985
|
- ``Z``: Process conditions - one row per blend, one column per condition.
|
|
2984
2986
|
- ``Y``: Product quality indicators - one row per blend, one column per indicator.
|
|
2985
2987
|
|
|
2988
|
+
The ``D`` matrix (database of material properties) is supplied once at
|
|
2989
|
+
construction via the ``d_matrix`` argument; it is not part of ``X``.
|
|
2990
|
+
|
|
2986
2991
|
Attributes
|
|
2987
2992
|
----------
|
|
2988
2993
|
n_samples : int
|
|
@@ -3014,8 +3019,8 @@ class TPLS(RegressorMixin, BaseEstimator):
|
|
|
3014
3019
|
>>> }
|
|
3015
3020
|
>>> process_conditions = {"Conditions": pd.DataFrame(rng.standard_normal((n_formulas, n_conditions)))}
|
|
3016
3021
|
>>> quality_indicators = {"Quality": pd.DataFrame(rng.standard_normal((n_formulas, n_outputs)))}
|
|
3017
|
-
>>> all_data = {"Z": process_conditions, "
|
|
3018
|
-
>>> estimator = TPLS(n_components=4)
|
|
3022
|
+
>>> all_data = {"Z": process_conditions, "F": formulas, "Y": quality_indicators}
|
|
3023
|
+
>>> estimator = TPLS(n_components=4, d_matrix=properties)
|
|
3019
3024
|
>>> estimator.fit(all_data)
|
|
3020
3025
|
"""
|
|
3021
3026
|
|
|
@@ -3063,7 +3068,7 @@ class TPLS(RegressorMixin, BaseEstimator):
|
|
|
3063
3068
|
|
|
3064
3069
|
Parameters
|
|
3065
3070
|
----------
|
|
3066
|
-
X : {dictionary of dataframes}, keys that must be present: "
|
|
3071
|
+
X : {dictionary of dataframes}, keys that must be present: "F", "Z", and "Y"
|
|
3067
3072
|
The training input samples. See documentation in the class definition for more information on each matrix.
|
|
3068
3073
|
|
|
3069
3074
|
Returns
|
|
@@ -3238,7 +3243,7 @@ class TPLS(RegressorMixin, BaseEstimator):
|
|
|
3238
3243
|
|
|
3239
3244
|
# Testing/inference phase:
|
|
3240
3245
|
new_data = {"Z": ..., "F": ...} # you need at least the F block for a new prediction. "Z" is optional.
|
|
3241
|
-
predictions = estimator.predict(
|
|
3246
|
+
predictions = estimator.predict(new_data)
|
|
3242
3247
|
|
|
3243
3248
|
Parameters
|
|
3244
3249
|
----------
|
|
@@ -29,7 +29,8 @@ def plot_pre_checks(model: BaseEstimator, pc_horiz: int, pc_vert: int, pc_depth:
|
|
|
29
29
|
f"The model has {n_components} components. Ensure that 1 <= pc_vert<={n_components}."
|
|
30
30
|
)
|
|
31
31
|
assert -1 <= pc_depth <= n_components, (
|
|
32
|
-
f"The model has {n_components} components. Ensure that 1
|
|
32
|
+
f"The model has {n_components} components. Ensure that pc_depth is -1 (no depth axis) "
|
|
33
|
+
f"or 1 <= pc_depth <= {n_components}."
|
|
33
34
|
)
|
|
34
35
|
assert len({pc_horiz, pc_vert, pc_depth}) == 3, "Specify distinct components for each axis"
|
|
35
36
|
|
|
@@ -85,17 +85,23 @@ def robust_regression( # noqa: PLR0913, PLR0915
|
|
|
85
85
|
|
|
86
86
|
Returns a dictionary of outputs with these keys::
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
N: the number of observations used to fit the model
|
|
89
|
+
coefficients: a length-1 list containing the regression slope
|
|
89
90
|
intercept: returned if fit_intercept==True, otherwise 0
|
|
90
|
-
standard_errors: a
|
|
91
|
+
standard_errors: a length-1 list containing the standard error of the slope
|
|
91
92
|
standard_error_intercept: standard error for the intercept (np.nan if fit_intercept=False)
|
|
92
93
|
R2: the R^2 value
|
|
93
94
|
SE: the model's standard error
|
|
95
|
+
x_ssq: the sum of squares of (x - mean(x))
|
|
96
|
+
k: the number of model parameters (2 if fit_intercept else 1)
|
|
94
97
|
fitted_values: the N predicted values, one per row in y
|
|
95
98
|
residuals: the N residuals
|
|
96
99
|
t_value: the t-values for the standard errors
|
|
97
100
|
conf_intervals: K rows x 2 columns (lower, upper) confidence intervals
|
|
101
|
+
conf_interval_intercept: (lower, upper) confidence interval for the intercept
|
|
98
102
|
pi_range: prediction intervals above and below, over the range of data
|
|
103
|
+
leverage: the hat-matrix diagonal (leverage) for each observation
|
|
104
|
+
influence: Cook-style influence values for each observation
|
|
99
105
|
"""
|
|
100
106
|
|
|
101
107
|
out: dict[str, Any] = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "process-improve"
|
|
3
|
-
version = "1.22.
|
|
3
|
+
version = "1.22.2"
|
|
4
4
|
description = 'Designed Experiments; Latent Variables (PCA, PLS, multivariate methods with missing data); Process Monitoring; Batch data analysis.'
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/batch/alignment_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/batch/batch-fake-data.csv
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/batch/details.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/experiments/test_doe1.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/C.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/P.csv
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/R.csv
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/T.csv
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/U.csv
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/LDPE/W.csv
RENAMED
|
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
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/datasets/multivariate/kamyr.csv
RENAMED
|
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
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_factorial.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_mixture.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_optimal.py
RENAMED
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_screening.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/designs_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/__init__.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/engine.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/knowledge/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/simulations.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/strategy/__init__.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/strategy/budget.py
RENAMED
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/strategy/engine.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/strategy/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/experiments/visualization/api.py
RENAMED
|
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
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/notebooks_examples/Tablets.xlsx
RENAMED
|
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
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/adapters/__init__.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/adapters/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/charts/__init__.py
RENAMED
|
File without changes
|
{process_improve-1.22.0 → process_improve-1.22.2}/process_improve/visualization/charts/boxplot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|