
    -hh              
          % / S Qr SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSK	J
r
JrJr  SSKJrJr  SSKJrJrJrJrJrJrJrJrJr  SSKJrJrJrJrJrJrJrJ r J!r!J"r"  SS	K#J$r$  SS
K%J&r&  SSK'J(r(J)r)J*r*  \" S5      r+\r, " S S\-5      r.S r/SaS jr0S r1S r2S r3S r4SbS jr5SSSSS.S\6\7   4S jjr8S\9S\9S\94S jr:S\Rv                  Rx                  -  S -   r=\9\>S!'   S\9S\9S\74S" jr?S\9S\9S\4S# jr@S$ rASaS% jrBS& rCSaS' jrDS( rES) rFS* rGScS+ jrHS, rIS- rJSdSS/.S0 jjrKS1S2S3.S4 jrLSaS5 jrMSaS6 jrNSaS7 jrOSaS8 jrPS9 rQS:\7S;\7S\74S< jrRS= rSS>S?.S@ jrT\)" SASB5      rUSSC.SD jrVSE rW SSFKXJWrW   " SG SH5      rZSeSI jr[SJ r\\[" \\SK SL SM9r]SN r^\[" \^SO SP SM9r_\Z" 5       R                  SQ SR SS ST \]\_SU SV SW.	ra\aS.   \aSX'   \aSY   \aSZ'   \aS[   \aS\'   \aS]   \aS^'   SdSS_.S` jjrbg! \Y a     N|f = f)f)
NormalDistStatisticsErrorcorrelation
covariancefmeangeometric_meanharmonic_meankde
kde_randomlinear_regressionmeanmedianmedian_groupedmedian_high
median_lowmode	multimodepstdev	pvariance	quantilesstdevvariance    NFraction)Decimal)countgroupbyrepeat)bisect_leftbisect_right)	hypotsqrtfabsexperftaulogfsumsumprod)
isfiniteisinfpicossintancoshasinatanacos)reduce)
itemgetter)Counter
namedtupledefaultdict       @c                       \ rS rSrSrg)r       N)__name__
__module____qualname____firstlineno____static_attributes__r<       3/opt/python-3.13.8/usr/lib/python3.13/statistics.pyr   r      s    rB   r   c                 r   Sn[        5       nUR                  n0 nUR                  n[        U [        5       H9  u  pgU" U5        [        [        U5       H  u  pUS-  nU" U	S5      U-   XI'   M     M;     S U;   a  US    n
O [        S UR                  5        5       5      n
[        [        U[        5      nXU4$ )Nr      c              3   <   #    U  H  u  p[        X!5      v   M     g 7fNr   .0dns      rC   	<genexpr>_sum.<locals>.<genexpr>   s     @/?tqHQNN/?   )setaddgetr   typemap_exact_ratiosumitemsr4   _coerceint)datar   types	types_addpartialspartials_gettypvaluesrK   rJ   totalTs               rC   _sumrb      s    @ EEE		IH<<LtT*#f-DAQJE&q!,q0HK . +
 x  @x~~/?@@ws#AerB   c                   ^^ Tb  [        UU4S jU  5       5      u  p#nX#TU4$ Sn[        5       nUR                  n[        [        5      n[        [        5      n[        U [        5       HH  u  pU" U	5        [        [        U
5       H'  u  nmUS-  nUT==   U-  ss'   UT==   X-  -  ss'   M)     MJ     U(       d  [        S5      =nmO^S U;   a  US    =nmOP[        S UR                  5        5       5      n[        S UR                  5        5       5      nXM-  X-  -
  U-  nX-  m[        [        U[        5      nX#TU4$ )Nc              3   6   >#    U  H  oT-
  =mT-  v   M     g 7frG   r<   )rI   xcrJ   s     rC   rL   _ss.<locals>.<genexpr>   s     <t!q5jaA-ts   r   rE   c              3   <   #    U  H  u  p[        X!5      v   M     g 7frG   r   rH   s      rC   rL   rg      s     @,?DA!,?rN   c              3   B   #    U  H  u  p[        X!U-  5      v   M     g 7frG   r   rH   s      rC   rL   rg      s      D/Ctq(1c""/Cs   )rb   rO   rP   r8   rX   r   rR   rS   rT   r   rU   rV   r4   rW   )rY   rf   ra   ssdr   rZ   r[   sx_partialssxx_partialsr^   r_   rK   sxsxxrJ   s    `            @rC   _ssro      sA    	}<t<<5!!EEE		Ic"Ks#LtT*#f-DAqQJENaNOqu$O . + 1+a		 d##a @K,=,=,?@@D|/A/A/CDD {RW$-Jws#AAurB   c                 p     U R                  5       $ ! [         a    [        R                  " U 5      s $ f = frG   )	is_finiteAttributeErrormathr*   )re   s    rC   	_isfinitert      s1     {{}  }}Q s     55c                    XL a  U $ U[         L d	  U[        L a  U $ U [         L a  U$ [        X5      (       a  U$ [        X5      (       a  U $ [        U [         5      (       a  U$ [        U[         5      (       a  U $ [        U [        5      (       a  [        U[        5      (       a  U$ [        U [        5      (       a  [        U[        5      (       a  U $ Sn[        X R                  UR                  4-  5      e)Nz"don't know how to coerce %s and %s)rX   bool
issubclassr   float	TypeErrorr=   )ra   Smsgs      rC   rW   rW     s     	vqCx19axCx(!(!(!S1H!S1H!X:a#7#7!U
1h 7 7
.C
C::qzz22
33rB   c                     U R                  5       $ ! [         a     O[        [        4 a    U S 4s $ f = f U R                  U R
                  4$ ! [         a%    S[        U 5      R                   S3n[        U5      ef = f)Nzcan't convert type 'z' to numerator/denominator)	as_integer_ratiorr   OverflowError
ValueError	numeratordenominatorrR   r=   ry   )re   r{   s     rC   rT   rT   #  s    <!!## :&  4yQ]]++ $T!W%5%5$66PQns    
444A /A?c                     [        U 5      UL a  U $ [        U[        5      (       a  U R                  S:w  a  [        n U" U 5      $ ! [
         a>    [        U[        5      (       a'  U" U R                  5      U" U R                  5      -  s $ e f = fNrE   )rR   rw   rX   r   rx   ry   r   r   )valuera   s     rC   _convertr   Q  s    E{a !Se//14x a!!U__%%*;*;(<<<	s   A ABBc              #   H   #    U  H  nUS:  a  [        U5      eUv   M     g 7f)Nr   )r   )r_   errmsgre   s      rC   	_fail_negr   c  s&     q5!&)) s    "FaveragerE   )keyreversetiesstartreturnc               J   US:w  a  [        SU< 35      eUb  [        X5      n [        [        U [	        5       5      US9nUS-
  nS/[        U5      -  n[        U[        S5      S9 H8  u  p[        U	5      n
[        U
5      nXkS-   S-  -   nU
 H	  u  pXU'   M     Xk-  nM:     U$ )Nr   zUnknown tie resolution method: )r   rE   r   )r      )	r   rS   sortedzipr   lenr   r5   list)rY   r   r   r   r   val_posiresult_ggroupsizerankr   orig_poss                  rC   _rankr   k  s    J y:4(CDD
3~Suw'9G	AS3w<FZ]3Q5z1H>!$OE#8  %		 4 MrB   rK   mc                 L    [         R                  " X-  5      nX"U-  U-  U :g  -  $ rG   )rs   isqrt)rK   r   as      rC   _integer_sqrt_of_frac_rtor     s)     	

16A!A
rB   r      _sqrt_bit_widthc                     U R                  5       UR                  5       -
  [        -
  S-  nUS:  a  [        XSU-  -  5      U-  nSnX4-  $ [        U SU-  -  U5      nSU* -  nX4-  $ )Nr   r   rE   )
bit_lengthr   r   )rK   r   qr   r   s        rC   _float_sqrt_of_fracr     s|     
!,,.	(?	:q@AAv-aa!e<A	 "" .a26k1=	A2g""rB   c                    U S::  a  U (       d  [        S5      $ U * U* p[        U 5      [        U5      -  R                  5       nUR                  5       u  p4UR                  5       nUR                  5       u  pgSU -  XG-  S-  -  XU-  Xs-  -   S-  -  :  a  U$ UR	                  5       nUR                  5       u  pSU -  XJ-  S-  -  XU	-  X-  -   S-  -  :  a  U$ U$ )Nr   z0.0   r   )r   r"   r}   	next_plus
next_minus)rK   r   rootnrdrplusnpdpminusnmdms              rC   _decimal_sqrt_of_fracr     s    
 	Av5>!rA21AJ#))+D""$FB>>D""$FB1uzAB 222OOE##%FB1uzAB 222KrB   c                 \    [        U 5      u  pnUS:  a  [        S5      e[        X#-  U5      $ )NrE   z%mean requires at least one data point)rb   r   r   )rY   ra   r`   rK   s       rC   r   r     s3      t*KAa1uEFFEIq!!rB   c                 ~  ^ Uc.   [        U 5      m[        U 5      nT(       d  [        S5      eUT-  $ [	        U[
        [        45      (       d  [        U5      n [        X5      n[        U5      nU(       d  [        S5      eXE-  $ ! [         a    SmU4S jnU" U 5      n  Nf = f! [         a    [        S5      ef = f)Nr   c              3   >   >#    [        U SS9 H
  u  mnUv   M     g 7f)NrE   r   )	enumerate)iterablere   rK   s     rC   r   fmean.<locals>.count  s      %ha8DAqG 9s   z&fmean requires at least one data pointz(data and weights must be the same lengthzsum of weights must be non-zero)	r   ry   r(   r   
isinstancer   tupler)   r   )rY   weightsr   r`   numdenrK   s         @rC   r   r     s     		D	A T
!"JKKqyge}--w-Jd$ w-C?@@9+  	A ;D	   JHIIJs   B B& B#"B#&B<c                 J  ^^ SmSmUU4S jn[        [        [        U" U 5      5      5      nT(       d  [        S5      e[        R
                  " U5      (       a  [        R                  $ T(       a&  U[        R                  :X  a  [        R                  $ S$ [        UT-  5      $ )Nr   Fc              3      >#    [        U SS9 HA  u  mnUS:  d  [        R                  " U5      (       a  Uv   M-  US:X  a  SmM7  [        SU5      e   g 7f)NrE   r           TzNo negative inputs allowed)r   rs   isnanr   )r   re   
found_zerorK   s     rC   count_positive&geometric_mean.<locals>.count_positive"  sM     ha0DAq3w$**Q--c!
%&BAFF 1s   AAzMust have a non-empty datasetr   )	r(   rS   r'   r   rs   r   naninfr$   )rY   r   r`   r   rK   s      @@rC   r   r     s     	
AJG S../0E=>>zz%xx DHH,txx5#5uqy>rB   c                    [        U 5      U L a  [        U 5      n Sn[        U 5      nUS:  a  [        S5      eUS:X  aK  UcH  U S   n[	        U[
        R                  [        45      (       a  US:  a  [        U5      eU$ [        S5      eUc  [        SU5      nUnOQ[        U5      UL a  [        U5      n[        U5      U:w  a  [        S5      e[        S [        X5       5       5      u  pen [        X5      n [        S [        X5       5       5      u  pxn	US::  a  [        S	5      e[        XX-  U5      $ ! [         a     gf = f)
Nz.harmonic mean does not support negative valuesrE   z.harmonic_mean requires at least one data pointr   zunsupported typez*Number of weights does not match data sizec              3   $   #    U  H  ov   M     g 7frG   r<   )rI   ws     rC   rL    harmonic_mean.<locals>.<genexpr>b  s      G,Fq,Fs   c              3   @   #    U  H  u  pU(       a  X-  OS v   M     g7f)r   Nr<   )rI   r   re   s      rC   rL   r   e  s     P=OTQquq0=Os   zWeighted sum must be positive)iterr   r   r   r   numbersRealr   ry   r   rb   r   r   ZeroDivisionErrorr   )
rY   r   r   rK   re   sum_weightsr   ra   r`   r   s
             rC   r   r   5  sD   . DzTDz=FD	A1uNOO	
aGOGa',,0111u%f--H.//A,=G#7mGw<1!"NOO  GIg,F GG&PS=OPP% z=>>K'++	  s   -)D5 5
EEc                     [        U 5      n [        U 5      nUS:X  a  [        S5      eUS-  S:X  a  XS-     $ US-  nXS-
     X   -   S-  $ Nr   no median for empty datar   rE   r   r   r   )rY   rK   r   s      rC   r   r   m  sa     $<DD	AAv8991uzF|FUdg%**rB   c                     [        U 5      n [        U 5      nUS:X  a  [        S5      eUS-  S:X  a  XS-     $ XS-  S-
     $ r   r   rY   rK   s     rC   r   r     sQ     $<DD	AAv8991uzF|FQJrB   c                 ^    [        U 5      n [        U 5      nUS:X  a  [        S5      eXS-     $ )Nr   r   r   r   r   s     rC   r   r     s5     $<DD	AAv899Q<rB   c                 $   [        U 5      n [        U 5      nU(       d  [        S5      eXS-     n[        X5      n[	        XUS9n [        U5      n[        U5      nX1S-  -
  nUnXT-
  nXaUS-  U-
  -  U-  -   $ ! [         a    [        S5      ef = f)Nr   r   )loz$Value cannot be converted to a floatr9   )r   r   r   r   r    rx   r   ry   )	rY   intervalrK   re   r   jLcffs	            rC   r   r     s    V $<DD	A899 	!VA 	DAT#AA?!H 	
sNA	
B	A1q52:&***  A>@@As   A9 9Bc                     [        [        U 5      5      R                  S5      n US   S   $ ! [         a    [	        S5      S ef = f)NrE   r   zno mode for empty data)r6   r   most_common
IndexErrorr   )rY   pairss     rC   r   r     sP    . DJ++A.EBQx{ B67TABs	   - Ac                     [        [        U 5      5      nU(       d  / $ [        UR                  5       5      nUR	                  5        VVs/ s H  u  p4XB:X  d  M  UPM     snn$ s  snnf rG   )r6   r   maxr_   rV   )rY   countsmaxcountr   r   s        rC   r   r     sO     T$Z F	6==?#H&,llnJnle8IEnJJJs   
A#A#normal)
cumulativec                  ^ ^^^^	^
^^^^^ [        T 5      mT(       d  [        S5      e[        T S   [        [        45      (       d  [        S5      eTS::  a  [        ST< 35      eU==S:X  a  O	=S:X  a  O  O.    [        S[        -  5      m[        S5      mU4S	 jmU4S
 jmS nO=S:X  a
    S mS mS nO=S:X  a"    S[        -  m
S[        -  mU
4S jmU4S jmS nO==S:X  a  O	=S:X  a  O  O    S mS mSnO=S:X  a
    S mS mSnO==S:X  a  O	=S:X  a  O  O    S mS mSnOc==S:X  a  O	=S:X  a  O  O    S  mS! mSnOG=S":X  a
    S# mS$ mSnO7S%:X  a"  [        S&-  m
[        S-  mU
U4S' jmU4S( jmSnO [        S)U< 35      eUc  UU U4S* jnUU U4S+ jnO&[        T 5      mTU-  m	UU	U UUU4S, jnUU	U UUU4S- jnU(       a  S.T< S/U< 3Ul	        U$ S0T< S/U< 3Ul	        U$ )1NEmpty data sequencer   )Data sequence must contain ints or floatsr   $Bandwidth h must be positive, not h=r   gaussr   c                 ,   > [        SU -  U -  5      T-  $ )N      ࿩r$   )tsqrt2pis    rC   <lambda>kde.<locals>.<lambda>  s    #dQhl+g5rB   c                 ,   > SS[        U T-  5      -   -  $ N      ?      ?)r%   )r   sqrt2s    rC   r   r     s    #s1u9~!56rB   logisticc                 $    SS[        U 5      -   -  $ r   r0   r   s    rC   r   r     s    #tAw/rB   c                 *    SS[        U 5      S-   -  -
  $ Nr   r   r  s    rC   r   r     s    #s1v| 44rB   sigmoidrE   c                     > T[        U 5      -  $ rG   r  )r   c1s    rC   r   r     s    "tAw,rB   c                 2   > T[        [        U 5      5      -  $ rG   )r2   r$   r   c2s    rC   r   r     s    "tCF|+rB   rectangularuniformc                     gNr   r<   r  s    rC   r   r     s    #rB   c                     SU -  S-   $ r  r<   r  s    rC   r   r     s    #'C-rB   r   
triangularc                     S[        U 5      -
  $ r  absr  s    rC   r   r     s    #A,rB   c                 ,    X -  U S:  a  SOS-  U -   S-   $ )Nr   r   r   r<   r  s    rC   r   r     s    !#CT:Q>DrB   	parabolicepanechnikovc                     SSX -  -
  -  $ )N      ?r   r<   r  s    rC   r   r     s    #qu-rB   c                 $    SU S-  -  SU -  -   S-   $ )Ng      пr   r  r   r<   r  s    rC   r   r     s    $A+a/#5rB   quarticbiweightc                     SSX -  -
  S-  -  $ N      ?r   r   r<   r  s    rC   r   r         %3;1"44rB   c                 6    SU S-  -  SU S-  -  -
  SU -  -   S-   $ Ng      ?   g      ?r   r   r   r<   r  s    rC   r   r     s'    $A+ad
2UQY>DrB   	triweightc                     SSX -  -
  S-  -  $ N     ?r   r   r<   r  s    rC   r   r     r!  rB   c                 B    SSU S-  -  SU S-  -  -   U S-  -
  U -   -  S-   $ Nr(  g$I$I¿   g333333?r$  r   r   r<   r  s    rC   r   r     s1    %419s1a4x#7!Q$#>#BCcIrB   cosiner   c                 &   > T[        TU -  5      -  $ rG   )r-   )r   r	  r  s    rC   r   r     s    "s26{*rB   c                 ,   > S[        TU -  5      -  S-   $ r  r.   r  s    rC   r   r     s    #BF+c1rB   Unknown kernel name: c                 V   >^  [        T5      n[        UUU 4S jT 5       5      UT-  -  $ )Nc              3   @   >#    U  H  nT" TU-
  T-  5      v   M     g 7frG   r<   rI   x_iKhre   s     rC   rL   #kde.<locals>.pdf.<locals>.<genexpr>  !     84Cq!c'Q''4   r   rU   )re   rK   r5  rY   r6  s   ` rC   pdfkde.<locals>.pdf  s&    D	A8488AEBBrB   c                 P   >^  [        T5      n[        UUU 4S jT 5       5      U-  $ )Nc              3   @   >#    U  H  nT" TU-
  T-  5      v   M     g 7frG   r<   rI   r4  Wr6  re   s     rC   rL   #kde.<locals>.cdf.<locals>.<genexpr>  r8  r9  r:  )re   rK   r@  rY   r6  s   ` rC   cdfkde.<locals>.cdf  s"    D	A84881<<rB   c                    >^  [        T5      T:w  a  [        T5      m	[        T5      m[        T	T T-
  5      n[        T	T T-   5      nT	X n[	        UUU 4S jU 5       5      TT-  -  $ )Nc              3   @   >#    U  H  nT" TU-
  T-  5      v   M     g 7frG   r<   r3  s     rC   rL   r7    s!     =9Cq!c'Q''9r9  r   r   r   r    rU   )
re   r   r   	supportedr5  	bandwidthrY   r6  rK   samples
   `   rC   r;  r<    sc    4yA~IFA	M2AVQ]3AqI=9==QGGrB   c                    >^  [        T5      T:w  a  [        T5      m	[        T5      m[        T	T T-
  5      n[        T	T T-   5      nT	X n[	        UUU 4S jU 5       U5      T-  $ )Nc              3   @   >#    U  H  nT" TU-
  T-  5      v   M     g 7frG   r<   r?  s     rC   rL   rA    s!     >IS1s7a-((Ir9  rF  )
re   r   r   rG  r@  rH  rY   r6  rK   rI  s
   `   rC   rB  rC    sa    4yA~IFA	M2AVQ]3AqI>I>BQFFrB   zCDF estimate with h= and kernel=zPDF estimate with h=)
r   r   r   rX   rx   ry   r"   r,   r   __doc__)rY   r6  kernelr   supportr;  rB  r5  r@  rH  r	  r  rK   rI  r   r   s   ``     @@@@@@@@@rC   r	   r	   (  s   H 	D	A344d1gU|,,CDDCx E1&IJJ
X1r6lGGE5A6AG/A4AGRBRB&A+AG&]Y&A'AG&ADAG)[>)-A5AG#Y#4ADAG4AIAGaBaB*A1AG!$9&"DEE	C	= 	= K		H 	H	G 	G -1&f[A
 .1&f[A
rB   r   	exclusive)rK   methodc                @   US:  a  [        S5      e[        U 5      n [        U 5      nUS:  a  US:X  a  XS-
  -  $ [        S5      eUS:X  aT  US-
  n/ n[        SU5       H;  n[	        Xd-  U5      u  pxX   X-
  -  XS-      U-  -   U-  n	UR                  U	5        M=     U$ US:X  ak  US-   n/ n[        SU5       HR  nXd-  U-  nUS:  a  SOXsS-
  :  a  US-
  OUnXd-  Xq-  -
  nXS-
     X-
  -  X   U-  -   U-  n	UR                  U	5        MT     U$ [        SU< 35      e)NrE   zn must be at least 1r   z!must have at least one data point	inclusiverP  Unknown method: )r   r   r   rangedivmodappendr   )
rY   rK   rQ  ldr   r   r   r   deltainterpolateds
             rC   r   r   !  s\     	1u455$<D	TB	Av7q5>!ABBFq!AaeQ'HA Gqy1DQK%4GG1LLMM,'  Fq!A
AUqD1aAC!#IE QK195%G1LLMM,'  
'z2
33rB   c                 b    [        X5      u  p#pEUS:  a  [        S5      e[        X5S-
  -  U5      $ )Nr   z*variance requires at least two data pointsrE   ro   r   r   )rY   xbarra   ssrf   rK   s         rC   r   r   W  s8    L d/KA11uJKKBa%L!$$rB   c                 \    [        X5      u  p#pEUS:  a  [        S5      e[        X5-  U5      $ )NrE   z*pvariance requires at least one data pointr\  )rY   mura   r^  rf   rK   s         rC   r   r     s4    F d-KA11uJKKBFArB   c                     [        X5      u  p#pEUS:  a  [        S5      eX5S-
  -  n[        U[        5      (       a   [	        UR
                  UR                  5      $ [        UR
                  UR                  5      $ Nr   z'stdev requires at least two data pointsrE   ro   r   rw   r   r   r   r   r   )rY   r]  ra   r^  rf   rK   msss          rC   r   r     sf     d/KA11uGHH
A,C!W$S]]COODDs}}coo>>rB   c                     [        X5      u  p#pEUS:  a  [        S5      eX5-  n[        U[        5      (       a   [	        UR
                  UR                  5      $ [        UR
                  UR                  5      $ )NrE   z'pstdev requires at least one data pointrc  )rY   r`  ra   r^  rf   rK   rd  s          rC   r   r     sb     d-KA11uGHH
&C!W$S]]COODDs}}coo>>rB   c                 
   [        U 5      u  pp4US:  a  [        S5      eX$S-
  -  n [        U5      [        UR                  UR
                  5      4$ ! [         a%    [        U5      [        U5      [        U5      -  4s $ f = frb  )ro   r   rx   r   r   r   rr   )rY   ra   r^  r]  rK   rd  s         rC   _mean_stdevrg    s|    YNA41uGHH
A,C4T{/sOOO 4T{E$K%)3334s   *A ,BBre   yc                 T   [        X-  5      n[        U5      (       dG  [        U5      (       a5  [        U 5      (       d%  [        U5      (       d  Sn[        X0-  X1-  5      U-  $ U$ U(       d%  U (       a  U(       a  Sn[        X0-  X1-  5      U-  $ U$ [	        X4X* 45      nX$SU-  -  -   $ )Ng      g      ar9   )r"   r*   r+   	_sqrtprodr)   )re   rh  r6  scalerJ   s        rC   rj  rj    s    QUAA;;88E!HHU1XXEUY	2U:: EUY	2U:: 	B AC!G}rB   c                   ^^ [        U 5      n[        U5      U:w  a  [        S5      eUS:  a  [        S5      e[        U 5      U-  m[        U5      U-  m[        U4S jU  5       U4S jU 5       5      nX2S-
  -  $ )NzDcovariance requires that both inputs have same number of data pointsr   z,covariance requires at least two data pointsc              3   ,   >#    U  H	  oT-
  v   M     g 7frG   r<   )rI   xir]  s     rC   rL   covariance.<locals>.<genexpr>  s     )q9q   c              3   ,   >#    U  H	  oT-
  v   M     g 7frG   r<   rI   yiybars     rC   rL   ro    s     +B"Irp  rE   )r   r   r(   r)   )re   rh  rK   sxyr]  rt  s       @@rC   r   r     sv    " 	AA
1v{dee1uLMM7Q;D7Q;D
)q)+B+B
CCa%=rB   linear)rQ  c                  [        U 5      n[        U5      U:w  a  [        S5      eUS:  a  [        S5      eUS;  a  [        SU< 35      eUS:X  a  US-
  S-  n[        XS	9n [        XS	9nOD[	        U 5      U-  n[	        U5      U-  nU  Vs/ s H  owU-
  PM	     n nU Vs/ s H  oU-
  PM	     nn[        X5      n	[        X 5      n
[        X5      n U	[        X5      -  $ s  snf s  snf ! [         a    [        S
5      ef = f)NzEcorrelation requires that both inputs have same number of data pointsr   z-correlation requires at least two data points>   rv  rankedrT  rx  rE   r   r   z&at least one of the inputs is constant)r   r   r   r   r(   r)   rj  r   )re   rh  rQ  rK   r   r]  rt  rn  rs  ru  rn   syys               rC   r   r     s   . 	AA
1v{eff1uMNN))+F:677Q"!!!!Aw{Aw{!"#2$Y#!"#2$Y#
!-C
!-C
!-CHYs((( $#  HFGGHs   C!!C&C+ +DLinearRegressionslope	intercept)proportionalc                 ^
 [        U 5      n[        U5      U:w  a  [        S5      eUS:  a  [        S5      eU(       d<  [        U 5      U-  n[        U5      U-  m
U  Vs/ s H  oUU-
  PM	     n nU
4S jU 5       n[        X5      S-   n[        X 5      n Xg-  nU(       a  SOT
UW-  -
  n	[        XS9$ s  snf ! [         a    [        S5      ef = f)NzKlinear regression requires that both inputs have same number of data pointsr   z3linear regression requires at least two data pointsc              3   ,   >#    U  H	  oT-
  v   M     g 7frG   r<   rr  s     rC   rL   $linear_regression.<locals>.<genexpr>w  s     #2$Yrp  r   zx is constantr{  )r   r   r(   r)   r   rz  )re   rh  r~  rK   r]  rn  ru  rn   r|  r}  rt  s             @rC   r   r   H  s    L 	AA
1v{kll1uSTTAw{Aw{!"#2$Y###
!-#
C
!-C/	 $)<I%== $  /o../s   B3B8 8Cc                    U S-
  n[        U5      S::  am  SX3-  -
  nSU-  S-   U-  S-   U-  S-   U-  S-   U-  S	-   U-  S
-   U-  S-   U-  nSU-  S-   U-  S-   U-  S-   U-  S-   U-  S-   U-  S-   U-  S-   nXV-  nXU-  -   $ US::  a  U OSU -
  n[        [        U5      * 5      nUS::  a^  US-
  nSU-  S-   U-  S-   U-  S-   U-  S-   U-  S-   U-  S-   U-  S-   nSU-  S -   U-  S!-   U-  S"-   U-  S#-   U-  S$-   U-  S%-   U-  S-   nO]US-
  nS&U-  S'-   U-  S(-   U-  S)-   U-  S*-   U-  S+-   U-  S,-   U-  S--   nS.U-  S/-   U-  S0-   U-  S1-   U-  S2-   U-  S3-   U-  S4-   U-  S-   nXV-  nUS:  a  U* nXU-  -   $ )5Nr   g333333?gQ?g^}o)@gE.kR@g Ul@g*u>l@gN@g"]Ξ@gnC`@gu@giK~j@gv|E@gd|1@gfRr@gu.2@g~y@gn8(E@r   r   g      @g?g鬷ZaI?ggElD?g7\?guSS?g=.@gj%b@gHw@gjRe?g9dh?>g('߿A?g~z ?g@3?gɅ3?g3fRx?gIFl @gt>g*Yn>gESB\T?gN;A+?gUR1?gEF?gPn@g&>@gi<g@F>gtcI,\>gŝI?g*F2v?gC4?gO1?)r#   r"   r'   )pr`  sigmar   rr   r   re   s           rC   _normal_dist_inv_cdfr    s    	
CAAw%qu0140145601456 11 566 1	1 56	6
 11
 566 11 566 11 566 1140145601456 11 566 1	1 56	6
 11
 566 11 566  IY#X37Ac!fWACxG1A51256712567 22 677 2	2 67	7
 22
 677 22 677 22 2A51256712567 22 677 2	2 67	7
 22
 677 22 677  G1A51256712567 22 677 2	2 67	7
 22
 677 22 677 22 3Q61256712567 22 677 2	2 67	7
 22
 677 22 677  		A3wBUrB   )r  c                      \ rS rSrSSS.rS!S jr\S 5       rSS.S	 jrS
 r	S r
S rS"S jrS rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS rS rS rS rS rS r\rS r\rS rS rS r S r!S  r"Sr#g)#r   i  z(Arithmetic mean of a normal distributionz+Standard deviation of a normal distribution_mu_sigmac                 f    US:  a  [        S5      e[        U5      U l        [        U5      U l        g )Nr   zsigma must be non-negative)r   rx   r  r  )selfr`  r  s      rC   __init__NormalDist.__init__  s+    3;!">??9ElrB   c                     U " [        U5      6 $ rG   )rg  )clsrY   s     rC   from_samplesNormalDist.from_samples  s     K%&&rB   Nseedc                    Uc  [         R                   O[         R                  " U5      R                   n[        nU R                  nU R                  n[        S U5       Vs/ s H  ot" U" 5       XV5      PM     sn$ s  snf rG   )randomRandomr  r  r  r   )r  rK   r  rndinv_cdfr`  r  r   s           rC   samplesNormalDist.samples  s^    #|fmmt1D1K1K&XX39$?C?ar)?CCCs    A:c                     U R                   U R                   -  nU(       d  [        S5      eXR                  -
  n[        X3-  SU-  -  5      [	        [
        U-  5      -  $ )Nz$pdf() not defined when sigma is zerog       )r  r   r  r$   r"   r&   )r  re   r   diffs       rC   r;  NormalDist.pdf  sR    ;;,!"HII88|4;$/23d3>6JJJrB   c                     U R                   (       d  [        S5      eSS[        XR                  -
  U R                   [        -  -  5      -   -  $ )Nz$cdf() not defined when sigma is zeror   r   )r  r   r%   r  _SQRT2r  re   s     rC   rB  NormalDist.cdf  s>    {{!"HIIcCXX$++2F GHHIIrB   c                 p    US::  d  US:  a  [        S5      e[        XR                  U R                  5      $ )Nr   r   z$p must be in the range 0.0 < p < 1.0)r   r  r  r  )r  r  s     rC   r  NormalDist.inv_cdf  s2     8qCx!"HII#Axx==rB   c                 f    [        SU5       Vs/ s H  o R                  X!-  5      PM     sn$ s  snf r   )rU  r  )r  rK   r   s      rC   r   NormalDist.quantiles  s+     .31a[9[QU#[999s   .c           	      4   [        U[        5      (       d  [        S5      eXp2UR                  UR                  4UR                  UR                  4:  a  X2p2UR
                  UR
                  pTU(       a  U(       d  [        S5      eXT-
  n[        UR                  UR                  -
  5      nU(       d%  S[        USUR                  -  [        -  -  5      -
  $ UR                  U-  UR                  U-  -
  nUR                  UR                  -  [        Xw-  U[        XT-  5      -  -   5      -  n	X-   U-  n
X-
  U-  nS[        UR                  U
5      UR                  U
5      -
  5      [        UR                  U5      UR                  U5      -
  5      -   -
  $ )Nz$Expected another NormalDist instancez(overlap() not defined when sigma is zeror   r9   )r   r   ry   r  r  r   r   r#   r%   r  r"   r'   rB  )r  otherXYX_varY_vardvr   r   bx1x2s               rC   overlapNormalDist.overlap  sN     %,,BCC1HHaee!%%00qzz1::uE!"LMM]!%%!%%- R3>F#:;<<<EEEMAEEEM)HHqxx$rwc%-6H1H'H"IIer\er\d1559quuRy01DrQUU2Y9N4OOPPrB   c                 p    U R                   (       d  [        S5      eXR                  -
  U R                   -  $ )Nz'zscore() not defined when sigma is zero)r  r   r  r  s     rC   zscoreNormalDist.zscore=  s,     {{!"KLLHH++rB   c                     U R                   $ rG   r  r  s    rC   r   NormalDist.meanH       xxrB   c                     U R                   $ rG   r  r  s    rC   r   NormalDist.medianM  r  rB   c                     U R                   $ rG   r  r  s    rC   r   NormalDist.modeR  s     xxrB   c                     U R                   $ rG   r  r  s    rC   r   NormalDist.stdev[  s     {{rB   c                 4    U R                   U R                   -  $ rG   r  r  s    rC   r   NormalDist.variance`  s     {{T[[((rB   c                     [        U[        5      (       aA  [        U R                  UR                  -   [        U R                  UR                  5      5      $ [        U R                  U-   U R                  5      $ rG   r   r   r  r!   r  r  r  s     rC   __add__NormalDist.__add__e  R     b*%%bffrvvouRYY		/JKK"&&2+ryy11rB   c                     [        U[        5      (       aA  [        U R                  UR                  -
  [        U R                  UR                  5      5      $ [        U R                  U-
  U R                  5      $ rG   r  r  s     rC   __sub__NormalDist.__sub__s  r  rB   c                 `    [        U R                  U-  U R                  [        U5      -  5      $ rG   r   r  r  r#   r  s     rC   __mul__NormalDist.__mul__  &     "&&2+ryy48';<<rB   c                 `    [        U R                  U-  U R                  [        U5      -  5      $ rG   r  r  s     rC   __truediv__NormalDist.__truediv__  r  rB   c                 B    [        U R                  U R                  5      $ rG   r   r  r  r  s    rC   __pos__NormalDist.__pos__  s    "&&")),,rB   c                 D    [        U R                  * U R                  5      $ rG   r  r  s    rC   __neg__NormalDist.__neg__  s    266'299--rB   c                     X-
  * $ rG   r<   r  s     rC   __rsub__NormalDist.__rsub__  s    zrB   c                     [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ rG   )r   r   NotImplementedr  r  r  s     rC   __eq__NormalDist.__eq__  s:    "j))!!vv:BII$::rB   c                 D    [        U R                  U R                  45      $ rG   )hashr  r  r  s    rC   __hash__NormalDist.__hash__  s    TXXt{{+,,rB   c                 j    [        U 5      R                   SU R                  < SU R                  < S3$ )Nz(mu=z, sigma=))rR   r=   r  r  r  s    rC   __repr__NormalDist.__repr__  s.    t*%%&d488,ht{{oQOOrB   c                 2    U R                   U R                  4$ rG   r  r  s    rC   __getstate__NormalDist.__getstate__  s    xx$$rB   c                 "    Uu  U l         U l        g rG   r  )r  states     rC   __setstate__NormalDist.__setstate__  s     %$+rB   )r   r   )r   )$r=   r>   r?   r@   	__slots__r  classmethodr  r  r;  rB  r  r   r  r  propertyr   r   r   r   r   r  r  r  r  r  r  __radd__r  __rmul__r  r  r  r  r  rA   r<   rB   rC   r   r     s    :?I
# ' ' "& DKJ>	: QD	,         ) )22==-. H H;-P%&rB   r   c                     ^ ^^^ UU UU4S jnU$ )Nc                    > T" U 5      n[        T" U5      U -
  =n5      T:  a)  XT" U5      -  -  n[        T" U5      U -
  =n5      T:  a  M)  U$ rG   r  )rh  re   r  r   f_inv_estimatef_prime	tolerances      rC   f_inv_newton_raphson.<locals>.f_inv  sY    1!A$("$#i/
""A !A$("$#i/rB   r<   )r  r   r  r  r  s   ```` rC   _newton_raphsonr    s      LrB   c                     U S::  a  SU 4OSSU -
  4u  pSU -  S-  S-
  nU Ss=:  a  S:  a  O  X!-  $ US[        S	U -  S
-   5      -  -  nX!-  $ )Nr   r         r9   g鼹A?gMbp?gV-?gMp^v?g$2h@g_@r/  r  signre   s      rC   _quartic_invcdf_estimater    sk    s(sAhsQwGD	q_$s*AEE8O 	
[3{Q1AABBB8OrB   c                 6    SU S-  -  SU S-  -  -
  SU -  -   S-   $ r#  r<   r  s    rC   r   r     s'    $A+ad
*UQY6<rB   c                     SSX -  -
  S-  -  $ r  r<   r  s    rC   r   r         qu 22rB   )r  r   r  c                 F    U S::  a  SU 4OSSU -
  4u  pSU -  S-  S-
  nX!-  $ )Nr   r   r  r9   gc?r<   r  s      rC   _triweight_invcdf_estimater	    s8    s(sAhsQwGD	q''#-A8OrB   c                 B    SSU S-  -  SU S-  -  -   U S-  -
  U -   -  S-   $ r*  r<   r  s    rC   r   r     s1    %419s1a4x/!Q$6:;cArB   c                     SSX -  -
  S-  -  $ r'  r<   r  s    rC   r   r     r  rB   c                 $    [        U SU -
  -  5      $ r   )r'   r  s    rC   r   r     s    #a1q5k*rB   c                 >    [        [        U [        -  S-  5      5      $ )Nr   )r'   r/   r,   r  s    rC   r   r     s    SR]+rB   c                     SU -  S-
  $ Nr   rE   r<   r  s    rC   r   r     s    QqS1WrB   c                 P    S[        [        SU -  S-
  5      [        -   S-  5      -  $ )Nr   rE   r   )r-   r3   r,   r  s    rC   r   r     s$    1sD1QK"$4#9::rB   c                 X    U S:  a  [        SU -  5      S-
  $ S[        SSU -  -
  5      -
  $ )Nr   r   rE   )r"   r  s    rC   r   r     s/    QWD1IMK!d1qs7m:KKrB   c                 8    S[        SU -  S-
  5      -  [        -  $ r  )r1   r,   r  s    rC   r   r     s    D1qM)B.rB   )	r   r  r  r  r  r  r%  r  r,  r   r  r  r  r  r  r  r  c                  ^ ^^^^	 [        T 5      nU(       d  [        S5      e[        T S   [        [        45      (       d  [        S5      eTS::  a  [        ST< 35      e[        R                  U5      mTc  [        SU< 35      e[        R                  U5      nUR                  m	UR                  mUU UUU	4S jnST< S	U< 3Ul        U$ )
Nr   r   r   r   r   r0  c                  6   > T " T5      TT" T" 5       5      -  -   $ rG   r<   )choicerY   r6  kernel_invcdfr  s   rC   randkde_random.<locals>.rand
  s    d|a-"9999rB   zRandom KDE selection with h=rL  )r   r   r   rX   rx   ry   _kernel_invcdfsrQ   _randomr  r  r  rM  )
rY   r6  rN  r  rK   prngr  r  r  r  s
   ``     @@@rC   r
   r
     s    $ 	D	A344d1gU|,,CDDCx E1&IJJ#''/M 5fZ@AA>>$D[[F[[F: : 3v]6+FDLKrB   rG   )znegative value)r   )r   )g-q=)c__all__rs   r   r  sys	fractionsr   decimalr   	itertoolsr   r   r   bisectr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   	functoolsr4   operatorr5   collectionsr6   r7   r8   r  r  r   r   rb   ro   rt   rW   rT   r   r   r   rx   r   rX   r   
float_infomant_digr   __annotations__r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   rg  rj  r   r   rz  r   r  _statisticsImportErrorr   r  r  _quartic_invcdfr	  _triweight_invcdfr  r  r
   r<   rB   rC   <module>r-     s  hT2    
   , , , E E E K K K   8 8	c
	j 	3l&R 4>+\$ IQ 34PU; 3l    3>>222Q6 6
#3 
#3 
#5 
#S S W <",!H F5,p+0 ,&E+PB<K(Q Qr ; -4l)%X&R?$?$
4 5 U :8 $, -H` 02HI  05 7>zGV	0
\& \&B "-<24

 $/A24  l""*+$:"K.
 +84 ,];	 "1+"> -i8
 ) )i  		s   .G( (G10G1