1# Stubs for statistics 2 3from decimal import Decimal 4from fractions import Fraction 5import sys 6from typing import Any, Iterable, List, Optional, SupportsFloat, Type, TypeVar, Union 7 8_T = TypeVar("_T") 9# Most functions in this module accept homogeneous collections of one of these types 10_Number = TypeVar('_Number', float, Decimal, Fraction) 11 12class StatisticsError(ValueError): ... 13 14if sys.version_info >= (3, 8): 15 def fmean(data: Iterable[SupportsFloat]) -> float: ... 16 def geometric_mean(data: Iterable[SupportsFloat]) -> float: ... 17def mean(data: Iterable[_Number]) -> _Number: ... 18if sys.version_info >= (3, 6): 19 def harmonic_mean(data: Iterable[_Number]) -> _Number: ... 20def median(data: Iterable[_Number]) -> _Number: ... 21def median_low(data: Iterable[_Number]) -> _Number: ... 22def median_high(data: Iterable[_Number]) -> _Number: ... 23def median_grouped(data: Iterable[_Number]) -> _Number: ... 24def mode(data: Iterable[_Number]) -> _Number: ... 25if sys.version_info >= (3, 8): 26 def multimode(data: Iterable[_T]) -> List[_T]: ... 27def pstdev(data: Iterable[_Number], mu: Optional[_Number] = ...) -> _Number: ... 28def pvariance(data: Iterable[_Number], mu: Optional[_Number] = ...) -> _Number: ... 29if sys.version_info >= (3, 8): 30 def quantiles(data: Iterable[_Number], *, n: int = ..., method: str = ...) -> List[_Number]: ... 31def stdev(data: Iterable[_Number], xbar: Optional[_Number] = ...) -> _Number: ... 32def variance(data: Iterable[_Number], xbar: Optional[_Number] = ...) -> _Number: ... 33 34if sys.version_info >= (3, 8): 35 class NormalDist: 36 def __init__(self, mu: float = ..., sigma: float = ...) -> None: ... 37 @property 38 def mean(self) -> float: ... 39 @property 40 def median(self) -> float: ... 41 @property 42 def mode(self) -> float: ... 43 @property 44 def stdev(self) -> float: ... 45 @property 46 def variance(self) -> float: ... 47 @classmethod 48 def from_samples(cls: Type[_T], data: Iterable[SupportsFloat]) -> _T: ... 49 def samples(self, n: int, *, seed: Optional[Any]) -> List[float]: ... 50 def pdf(self, x: float) -> float: ... 51 def cdf(self, x: float) -> float: ... 52 def inv_cdf(self, p: float) -> float: ... 53 def overlap(self, other: NormalDist) -> float: ... 54 def quantiles(self, n: int = ...) -> List[float]: ... 55 def __add__(self, x2: Union[float, NormalDist]) -> NormalDist: ... 56 def __sub__(self, x2: Union[float, NormalDist]) -> NormalDist: ... 57 def __mul__(self, x2: float) -> NormalDist: ... 58 def __truediv__(self, x2: float) -> NormalDist: ... 59 def __pos__(self) -> NormalDist: ... 60 def __neg__(self) -> NormalDist: ... 61 __radd__ = __add__ 62 def __rsub__(self, x2: Union[float, NormalDist]) -> NormalDist: ... 63 __rmul__ = __mul__ 64 def __hash__(self) -> int: ... 65