2 from _typeshed import SupportsLessThanT
3 from decimal import Decimal
4 from fractions import Fraction
5 from typing import Any, Hashable, Iterable, NamedTuple, Sequence, SupportsFloat, Type, TypeVar, Union
8 # Most functions in this module accept homogeneous collections of one of these types
9 _Number = Union[float, Decimal, Fraction]
10 _NumberT = TypeVar("_NumberT", float, Decimal, Fraction)
12 # Used in mode, multimode
13 _HashableT = TypeVar("_HashableT", bound=Hashable)
15 class StatisticsError(ValueError): ...
17 if sys.version_info >= (3, 8):
18 def fmean(data: Iterable[SupportsFloat]) -> float: ...
19 def geometric_mean(data: Iterable[SupportsFloat]) -> float: ...
21 def mean(data: Iterable[_NumberT]) -> _NumberT: ...
23 if sys.version_info >= (3, 10):
24 def harmonic_mean(data: Iterable[_NumberT], weights: Iterable[_Number] | None = ...) -> _NumberT: ...
27 def harmonic_mean(data: Iterable[_NumberT]) -> _NumberT: ...
29 def median(data: Iterable[_NumberT]) -> _NumberT: ...
30 def median_low(data: Iterable[SupportsLessThanT]) -> SupportsLessThanT: ...
31 def median_high(data: Iterable[SupportsLessThanT]) -> SupportsLessThanT: ...
32 def median_grouped(data: Iterable[_NumberT], interval: _NumberT = ...) -> _NumberT: ...
33 def mode(data: Iterable[_HashableT]) -> _HashableT: ...
35 if sys.version_info >= (3, 8):
36 def multimode(data: Iterable[_HashableT]) -> list[_HashableT]: ...
38 def pstdev(data: Iterable[_NumberT], mu: _NumberT | None = ...) -> _NumberT: ...
39 def pvariance(data: Iterable[_NumberT], mu: _NumberT | None = ...) -> _NumberT: ...
41 if sys.version_info >= (3, 8):
42 def quantiles(data: Iterable[_NumberT], *, n: int = ..., method: str = ...) -> list[_NumberT]: ...
44 def stdev(data: Iterable[_NumberT], xbar: _NumberT | None = ...) -> _NumberT: ...
45 def variance(data: Iterable[_NumberT], xbar: _NumberT | None = ...) -> _NumberT: ...
47 if sys.version_info >= (3, 8):
49 def __init__(self, mu: float = ..., sigma: float = ...) -> None: ...
51 def mean(self) -> float: ...
53 def median(self) -> float: ...
55 def mode(self) -> float: ...
57 def stdev(self) -> float: ...
59 def variance(self) -> float: ...
61 def from_samples(cls: Type[_T], data: Iterable[SupportsFloat]) -> _T: ...
62 def samples(self, n: int, *, seed: Any | None = ...) -> list[float]: ...
63 def pdf(self, x: float) -> float: ...
64 def cdf(self, x: float) -> float: ...
65 def inv_cdf(self, p: float) -> float: ...
66 def overlap(self, other: NormalDist) -> float: ...
67 def quantiles(self, n: int = ...) -> list[float]: ...
68 if sys.version_info >= (3, 9):
69 def zscore(self, x: float) -> float: ...
70 def __add__(self, x2: float | NormalDist) -> NormalDist: ...
71 def __sub__(self, x2: float | NormalDist) -> NormalDist: ...
72 def __mul__(self, x2: float) -> NormalDist: ...
73 def __truediv__(self, x2: float) -> NormalDist: ...
74 def __pos__(self) -> NormalDist: ...
75 def __neg__(self) -> NormalDist: ...
77 def __rsub__(self, x2: float | NormalDist) -> NormalDist: ...
79 def __hash__(self) -> int: ...
81 if sys.version_info >= (3, 10):
82 def correlation(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ...
83 def covariance(__x: Sequence[_Number], __y: Sequence[_Number]) -> float: ...
84 class LinearRegression(NamedTuple):
87 def linear_regression(__regressor: Sequence[_Number], __dependent_variable: Sequence[_Number]) -> LinearRegression: ...