pragmastat 3.1.6__tar.gz → 3.1.7__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 (25) hide show
  1. pragmastat-3.1.7/PKG-INFO +98 -0
  2. pragmastat-3.1.7/README.md +83 -0
  3. {pragmastat-3.1.6 → pragmastat-3.1.7}/pragmastat/__init__.py +1 -1
  4. pragmastat-3.1.7/pragmastat.egg-info/PKG-INFO +98 -0
  5. {pragmastat-3.1.6 → pragmastat-3.1.7}/pyproject.toml +1 -1
  6. pragmastat-3.1.6/PKG-INFO +0 -76
  7. pragmastat-3.1.6/README.md +0 -61
  8. pragmastat-3.1.6/pragmastat.egg-info/PKG-INFO +0 -76
  9. {pragmastat-3.1.6 → pragmastat-3.1.7}/LICENSE +0 -0
  10. {pragmastat-3.1.6 → pragmastat-3.1.7}/MANIFEST.in +0 -0
  11. {pragmastat-3.1.6 → pragmastat-3.1.7}/examples/demo.py +0 -0
  12. {pragmastat-3.1.6 → pragmastat-3.1.7}/pragmastat/estimators.py +0 -0
  13. {pragmastat-3.1.6 → pragmastat-3.1.7}/pragmastat/fast_center.py +0 -0
  14. {pragmastat-3.1.6 → pragmastat-3.1.7}/pragmastat/fast_spread.py +0 -0
  15. {pragmastat-3.1.6 → pragmastat-3.1.7}/pragmastat.egg-info/SOURCES.txt +0 -0
  16. {pragmastat-3.1.6 → pragmastat-3.1.7}/pragmastat.egg-info/dependency_links.txt +0 -0
  17. {pragmastat-3.1.6 → pragmastat-3.1.7}/pragmastat.egg-info/requires.txt +0 -0
  18. {pragmastat-3.1.6 → pragmastat-3.1.7}/pragmastat.egg-info/top_level.txt +0 -0
  19. {pragmastat-3.1.6 → pragmastat-3.1.7}/setup.cfg +0 -0
  20. {pragmastat-3.1.6 → pragmastat-3.1.7}/setup.py +0 -0
  21. {pragmastat-3.1.6 → pragmastat-3.1.7}/src/fast_center_c.c +0 -0
  22. {pragmastat-3.1.6 → pragmastat-3.1.7}/src/fast_spread_c.c +0 -0
  23. {pragmastat-3.1.6 → pragmastat-3.1.7}/tests/test_invariance.py +0 -0
  24. {pragmastat-3.1.6 → pragmastat-3.1.7}/tests/test_performance.py +0 -0
  25. {pragmastat-3.1.6 → pragmastat-3.1.7}/tests/test_reference.py +0 -0
@@ -0,0 +1,98 @@
1
+ Metadata-Version: 2.4
2
+ Name: pragmastat
3
+ Version: 3.1.7
4
+ Summary: Pragmastat: Pragmatic Statistical Toolkit
5
+ Author: Andrey Akinshin
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://pragmastat.dev
8
+ Project-URL: Repository, https://github.com/AndreyAkinshin/pragmastat
9
+ Project-URL: DOI, https://doi.org/10.5281/zenodo.17236778
10
+ Requires-Python: >=3.8
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: numpy>=1.20
14
+ Dynamic: license-file
15
+
16
+ # Pragmastat
17
+
18
+ A Python implementation of 'Pragmastat: Pragmatic Statistical Toolkit' - robust summary estimators designed for real-world data analysis.
19
+ Online manual: https://pragmastat.dev
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ pip install pragmastat
25
+ ```
26
+
27
+ ## Demo
28
+
29
+ ```python
30
+ from pragmastat import center, spread, rel_spread, shift, ratio, avg_spread, disparity
31
+
32
+ x = [0, 2, 4, 6, 8]
33
+ print(center(x)) # 4
34
+ print(center([v + 10 for v in x])) # 14
35
+ print(center([v * 3 for v in x])) # 12
36
+
37
+ print(spread(x)) # 4
38
+ print(spread([v + 10 for v in x])) # 4
39
+ print(spread([v * 2 for v in x])) # 8
40
+
41
+ print(rel_spread(x)) # 1
42
+ print(rel_spread([v * 5 for v in x])) # 1
43
+
44
+ y = [10, 12, 14, 16, 18]
45
+ print(shift(x, y)) # -10
46
+ print(shift(x, x)) # 0
47
+ print(shift([v + 7 for v in x], [v + 3 for v in y])) # -6
48
+ print(shift([v * 2 for v in x], [v * 2 for v in y])) # -20
49
+ print(shift(y, x)) # 10
50
+
51
+ x = [1, 2, 4, 8, 16]
52
+ y = [2, 4, 8, 16, 32]
53
+ print(ratio(x, y)) # 0.5
54
+ print(ratio(x, x)) # 1
55
+ print(ratio([v * 2 for v in x], [v * 5 for v in y])) # 0.2
56
+
57
+ x = [0, 3, 6, 9, 12]
58
+ y = [0, 2, 4, 6, 8]
59
+ print(spread(x)) # 6
60
+ print(spread(y)) # 4
61
+
62
+ print(avg_spread(x, y)) # 5
63
+ print(avg_spread(x, x)) # 6
64
+ print(avg_spread([v * 2 for v in x], [v * 3 for v in x])) # 15
65
+ print(avg_spread(y, x)) # 5
66
+ print(avg_spread([v * 2 for v in x], [v * 2 for v in y])) # 10
67
+
68
+ print(shift(x, y)) # 2
69
+ print(avg_spread(x, y)) # 5
70
+
71
+ print(disparity(x, y)) # 0.4
72
+ print(disparity([v + 5 for v in x], [v + 5 for v in y])) # 0.4
73
+ print(disparity([v * 2 for v in x], [v * 2 for v in y])) # 0.4
74
+ print(disparity(y, x)) # -0.4
75
+ ```
76
+
77
+ ## The MIT License
78
+
79
+ Copyright (c) 2025 Andrey Akinshin
80
+
81
+ Permission is hereby granted, free of charge, to any person obtaining
82
+ a copy of this software and associated documentation files (the
83
+ "Software"), to deal in the Software without restriction, including
84
+ without limitation the rights to use, copy, modify, merge, publish,
85
+ distribute, sublicense, and/or sell copies of the Software, and to
86
+ permit persons to whom the Software is furnished to do so, subject to
87
+ the following conditions:
88
+
89
+ The above copyright notice and this permission notice shall be
90
+ included in all copies or substantial portions of the Software.
91
+
92
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
93
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
94
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
95
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
96
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
97
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
98
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,83 @@
1
+ # Pragmastat
2
+
3
+ A Python implementation of 'Pragmastat: Pragmatic Statistical Toolkit' - robust summary estimators designed for real-world data analysis.
4
+ Online manual: https://pragmastat.dev
5
+
6
+ ## Installation
7
+
8
+ ```bash
9
+ pip install pragmastat
10
+ ```
11
+
12
+ ## Demo
13
+
14
+ ```python
15
+ from pragmastat import center, spread, rel_spread, shift, ratio, avg_spread, disparity
16
+
17
+ x = [0, 2, 4, 6, 8]
18
+ print(center(x)) # 4
19
+ print(center([v + 10 for v in x])) # 14
20
+ print(center([v * 3 for v in x])) # 12
21
+
22
+ print(spread(x)) # 4
23
+ print(spread([v + 10 for v in x])) # 4
24
+ print(spread([v * 2 for v in x])) # 8
25
+
26
+ print(rel_spread(x)) # 1
27
+ print(rel_spread([v * 5 for v in x])) # 1
28
+
29
+ y = [10, 12, 14, 16, 18]
30
+ print(shift(x, y)) # -10
31
+ print(shift(x, x)) # 0
32
+ print(shift([v + 7 for v in x], [v + 3 for v in y])) # -6
33
+ print(shift([v * 2 for v in x], [v * 2 for v in y])) # -20
34
+ print(shift(y, x)) # 10
35
+
36
+ x = [1, 2, 4, 8, 16]
37
+ y = [2, 4, 8, 16, 32]
38
+ print(ratio(x, y)) # 0.5
39
+ print(ratio(x, x)) # 1
40
+ print(ratio([v * 2 for v in x], [v * 5 for v in y])) # 0.2
41
+
42
+ x = [0, 3, 6, 9, 12]
43
+ y = [0, 2, 4, 6, 8]
44
+ print(spread(x)) # 6
45
+ print(spread(y)) # 4
46
+
47
+ print(avg_spread(x, y)) # 5
48
+ print(avg_spread(x, x)) # 6
49
+ print(avg_spread([v * 2 for v in x], [v * 3 for v in x])) # 15
50
+ print(avg_spread(y, x)) # 5
51
+ print(avg_spread([v * 2 for v in x], [v * 2 for v in y])) # 10
52
+
53
+ print(shift(x, y)) # 2
54
+ print(avg_spread(x, y)) # 5
55
+
56
+ print(disparity(x, y)) # 0.4
57
+ print(disparity([v + 5 for v in x], [v + 5 for v in y])) # 0.4
58
+ print(disparity([v * 2 for v in x], [v * 2 for v in y])) # 0.4
59
+ print(disparity(y, x)) # -0.4
60
+ ```
61
+
62
+ ## The MIT License
63
+
64
+ Copyright (c) 2025 Andrey Akinshin
65
+
66
+ Permission is hereby granted, free of charge, to any person obtaining
67
+ a copy of this software and associated documentation files (the
68
+ "Software"), to deal in the Software without restriction, including
69
+ without limitation the rights to use, copy, modify, merge, publish,
70
+ distribute, sublicense, and/or sell copies of the Software, and to
71
+ permit persons to whom the Software is furnished to do so, subject to
72
+ the following conditions:
73
+
74
+ The above copyright notice and this permission notice shall be
75
+ included in all copies or substantial portions of the Software.
76
+
77
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
78
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
79
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
80
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
81
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
82
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
83
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -18,4 +18,4 @@ __all__ = [
18
18
  'disparity'
19
19
  ]
20
20
 
21
- __version__ = '3.1.6'
21
+ __version__ = '3.1.7'
@@ -0,0 +1,98 @@
1
+ Metadata-Version: 2.4
2
+ Name: pragmastat
3
+ Version: 3.1.7
4
+ Summary: Pragmastat: Pragmatic Statistical Toolkit
5
+ Author: Andrey Akinshin
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://pragmastat.dev
8
+ Project-URL: Repository, https://github.com/AndreyAkinshin/pragmastat
9
+ Project-URL: DOI, https://doi.org/10.5281/zenodo.17236778
10
+ Requires-Python: >=3.8
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: numpy>=1.20
14
+ Dynamic: license-file
15
+
16
+ # Pragmastat
17
+
18
+ A Python implementation of 'Pragmastat: Pragmatic Statistical Toolkit' - robust summary estimators designed for real-world data analysis.
19
+ Online manual: https://pragmastat.dev
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ pip install pragmastat
25
+ ```
26
+
27
+ ## Demo
28
+
29
+ ```python
30
+ from pragmastat import center, spread, rel_spread, shift, ratio, avg_spread, disparity
31
+
32
+ x = [0, 2, 4, 6, 8]
33
+ print(center(x)) # 4
34
+ print(center([v + 10 for v in x])) # 14
35
+ print(center([v * 3 for v in x])) # 12
36
+
37
+ print(spread(x)) # 4
38
+ print(spread([v + 10 for v in x])) # 4
39
+ print(spread([v * 2 for v in x])) # 8
40
+
41
+ print(rel_spread(x)) # 1
42
+ print(rel_spread([v * 5 for v in x])) # 1
43
+
44
+ y = [10, 12, 14, 16, 18]
45
+ print(shift(x, y)) # -10
46
+ print(shift(x, x)) # 0
47
+ print(shift([v + 7 for v in x], [v + 3 for v in y])) # -6
48
+ print(shift([v * 2 for v in x], [v * 2 for v in y])) # -20
49
+ print(shift(y, x)) # 10
50
+
51
+ x = [1, 2, 4, 8, 16]
52
+ y = [2, 4, 8, 16, 32]
53
+ print(ratio(x, y)) # 0.5
54
+ print(ratio(x, x)) # 1
55
+ print(ratio([v * 2 for v in x], [v * 5 for v in y])) # 0.2
56
+
57
+ x = [0, 3, 6, 9, 12]
58
+ y = [0, 2, 4, 6, 8]
59
+ print(spread(x)) # 6
60
+ print(spread(y)) # 4
61
+
62
+ print(avg_spread(x, y)) # 5
63
+ print(avg_spread(x, x)) # 6
64
+ print(avg_spread([v * 2 for v in x], [v * 3 for v in x])) # 15
65
+ print(avg_spread(y, x)) # 5
66
+ print(avg_spread([v * 2 for v in x], [v * 2 for v in y])) # 10
67
+
68
+ print(shift(x, y)) # 2
69
+ print(avg_spread(x, y)) # 5
70
+
71
+ print(disparity(x, y)) # 0.4
72
+ print(disparity([v + 5 for v in x], [v + 5 for v in y])) # 0.4
73
+ print(disparity([v * 2 for v in x], [v * 2 for v in y])) # 0.4
74
+ print(disparity(y, x)) # -0.4
75
+ ```
76
+
77
+ ## The MIT License
78
+
79
+ Copyright (c) 2025 Andrey Akinshin
80
+
81
+ Permission is hereby granted, free of charge, to any person obtaining
82
+ a copy of this software and associated documentation files (the
83
+ "Software"), to deal in the Software without restriction, including
84
+ without limitation the rights to use, copy, modify, merge, publish,
85
+ distribute, sublicense, and/or sell copies of the Software, and to
86
+ permit persons to whom the Software is furnished to do so, subject to
87
+ the following conditions:
88
+
89
+ The above copyright notice and this permission notice shall be
90
+ included in all copies or substantial portions of the Software.
91
+
92
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
93
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
94
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
95
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
96
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
97
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
98
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pragmastat"
3
- version = "3.1.6"
3
+ version = "3.1.7"
4
4
  description = "Pragmastat: Pragmatic Statistical Toolkit"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.8"
pragmastat-3.1.6/PKG-INFO DELETED
@@ -1,76 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: pragmastat
3
- Version: 3.1.6
4
- Summary: Pragmastat: Pragmatic Statistical Toolkit
5
- Author: Andrey Akinshin
6
- License-Expression: MIT
7
- Project-URL: Homepage, https://pragmastat.dev
8
- Project-URL: Repository, https://github.com/AndreyAkinshin/pragmastat
9
- Project-URL: DOI, https://doi.org/10.5281/zenodo.17236778
10
- Requires-Python: >=3.8
11
- Description-Content-Type: text/markdown
12
- License-File: LICENSE
13
- Requires-Dist: numpy>=1.20
14
- Dynamic: license-file
15
-
16
- # Pragmastat Python Implementation
17
-
18
- [![DOI](https://zenodo.org/badge/doi/10.5281/zenodo.17236778.svg)](https://doi.org/10.5281/zenodo.17236778)
19
-
20
- A Python implementation of the Pragmastat statistical toolkit, providing robust statistical estimators for reliable analysis of real-world data.
21
-
22
- ## Installation
23
-
24
- ```bash
25
- pip install pragmastat
26
- ```
27
-
28
- ## Requirements
29
-
30
- - Python >= 3.8
31
- - NumPy >= 1.20
32
-
33
- ## Usage
34
-
35
- ```python
36
- from pragmastat import center, spread, rel_spread, shift, ratio, avg_spread, disparity
37
-
38
- # Basic estimators
39
- x = [1, 2, 3, 4, 5]
40
- print(f"Center: {center(x)}")
41
- print(f"Spread: {spread(x)}")
42
- print(f"RelSpread: {rel_spread(x)}")
43
-
44
- # Comparison estimators
45
- y = [3, 4, 5, 6, 7]
46
- print(f"Shift: {shift(x, y)}")
47
- print(f"Ratio: {ratio(x, y)}")
48
- print(f"AvgSpread: {avg_spread(x, y)}")
49
- print(f"Disparity: {disparity(x, y)}")
50
- ```
51
-
52
- ## Estimators
53
-
54
- ### Single-sample estimators
55
-
56
- - `center(x)`: Hodges-Lehmann estimator - median of all pairwise averages
57
- - `spread(x)`: Shamos estimator - median of all pairwise absolute differences
58
- - `rel_spread(x)`: Relative spread - spread divided by absolute center
59
-
60
- ### Two-sample estimators
61
-
62
- - `shift(x, y)`: Hodges-Lehmann shift estimator - median of all pairwise differences
63
- - `ratio(x, y)`: Median of all pairwise ratios
64
- - `avg_spread(x, y)`: Weighted average of spreads
65
- - `disparity(x, y)`: Normalized shift - shift divided by average spread
66
-
67
- ## Features
68
-
69
- - Robust to outliers
70
- - Supports both Python lists and NumPy arrays
71
- - Type hints with numpy.typing
72
- - Efficient vectorized NumPy operations
73
-
74
- ## License
75
-
76
- MIT
@@ -1,61 +0,0 @@
1
- # Pragmastat Python Implementation
2
-
3
- [![DOI](https://zenodo.org/badge/doi/10.5281/zenodo.17236778.svg)](https://doi.org/10.5281/zenodo.17236778)
4
-
5
- A Python implementation of the Pragmastat statistical toolkit, providing robust statistical estimators for reliable analysis of real-world data.
6
-
7
- ## Installation
8
-
9
- ```bash
10
- pip install pragmastat
11
- ```
12
-
13
- ## Requirements
14
-
15
- - Python >= 3.8
16
- - NumPy >= 1.20
17
-
18
- ## Usage
19
-
20
- ```python
21
- from pragmastat import center, spread, rel_spread, shift, ratio, avg_spread, disparity
22
-
23
- # Basic estimators
24
- x = [1, 2, 3, 4, 5]
25
- print(f"Center: {center(x)}")
26
- print(f"Spread: {spread(x)}")
27
- print(f"RelSpread: {rel_spread(x)}")
28
-
29
- # Comparison estimators
30
- y = [3, 4, 5, 6, 7]
31
- print(f"Shift: {shift(x, y)}")
32
- print(f"Ratio: {ratio(x, y)}")
33
- print(f"AvgSpread: {avg_spread(x, y)}")
34
- print(f"Disparity: {disparity(x, y)}")
35
- ```
36
-
37
- ## Estimators
38
-
39
- ### Single-sample estimators
40
-
41
- - `center(x)`: Hodges-Lehmann estimator - median of all pairwise averages
42
- - `spread(x)`: Shamos estimator - median of all pairwise absolute differences
43
- - `rel_spread(x)`: Relative spread - spread divided by absolute center
44
-
45
- ### Two-sample estimators
46
-
47
- - `shift(x, y)`: Hodges-Lehmann shift estimator - median of all pairwise differences
48
- - `ratio(x, y)`: Median of all pairwise ratios
49
- - `avg_spread(x, y)`: Weighted average of spreads
50
- - `disparity(x, y)`: Normalized shift - shift divided by average spread
51
-
52
- ## Features
53
-
54
- - Robust to outliers
55
- - Supports both Python lists and NumPy arrays
56
- - Type hints with numpy.typing
57
- - Efficient vectorized NumPy operations
58
-
59
- ## License
60
-
61
- MIT
@@ -1,76 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: pragmastat
3
- Version: 3.1.6
4
- Summary: Pragmastat: Pragmatic Statistical Toolkit
5
- Author: Andrey Akinshin
6
- License-Expression: MIT
7
- Project-URL: Homepage, https://pragmastat.dev
8
- Project-URL: Repository, https://github.com/AndreyAkinshin/pragmastat
9
- Project-URL: DOI, https://doi.org/10.5281/zenodo.17236778
10
- Requires-Python: >=3.8
11
- Description-Content-Type: text/markdown
12
- License-File: LICENSE
13
- Requires-Dist: numpy>=1.20
14
- Dynamic: license-file
15
-
16
- # Pragmastat Python Implementation
17
-
18
- [![DOI](https://zenodo.org/badge/doi/10.5281/zenodo.17236778.svg)](https://doi.org/10.5281/zenodo.17236778)
19
-
20
- A Python implementation of the Pragmastat statistical toolkit, providing robust statistical estimators for reliable analysis of real-world data.
21
-
22
- ## Installation
23
-
24
- ```bash
25
- pip install pragmastat
26
- ```
27
-
28
- ## Requirements
29
-
30
- - Python >= 3.8
31
- - NumPy >= 1.20
32
-
33
- ## Usage
34
-
35
- ```python
36
- from pragmastat import center, spread, rel_spread, shift, ratio, avg_spread, disparity
37
-
38
- # Basic estimators
39
- x = [1, 2, 3, 4, 5]
40
- print(f"Center: {center(x)}")
41
- print(f"Spread: {spread(x)}")
42
- print(f"RelSpread: {rel_spread(x)}")
43
-
44
- # Comparison estimators
45
- y = [3, 4, 5, 6, 7]
46
- print(f"Shift: {shift(x, y)}")
47
- print(f"Ratio: {ratio(x, y)}")
48
- print(f"AvgSpread: {avg_spread(x, y)}")
49
- print(f"Disparity: {disparity(x, y)}")
50
- ```
51
-
52
- ## Estimators
53
-
54
- ### Single-sample estimators
55
-
56
- - `center(x)`: Hodges-Lehmann estimator - median of all pairwise averages
57
- - `spread(x)`: Shamos estimator - median of all pairwise absolute differences
58
- - `rel_spread(x)`: Relative spread - spread divided by absolute center
59
-
60
- ### Two-sample estimators
61
-
62
- - `shift(x, y)`: Hodges-Lehmann shift estimator - median of all pairwise differences
63
- - `ratio(x, y)`: Median of all pairwise ratios
64
- - `avg_spread(x, y)`: Weighted average of spreads
65
- - `disparity(x, y)`: Normalized shift - shift divided by average spread
66
-
67
- ## Features
68
-
69
- - Robust to outliers
70
- - Supports both Python lists and NumPy arrays
71
- - Type hints with numpy.typing
72
- - Efficient vectorized NumPy operations
73
-
74
- ## License
75
-
76
- MIT
File without changes
File without changes
File without changes
File without changes
File without changes