o ?OgŨ@s gdZddlZddlZddlZddlmZddlmZddlm Z m Z ddl m Z m Z ddlmZmZmZmZmZmZmZmZddlmZdd lmZmZGd d d eZd d ZddZddZddZ ddZ!ddZ"ddZ#dNddZ$ddZ%dd Z&d!d"Z'dOd#d$Z(d%d&Z)d'd(Z*d)d*Z+dPd,d-Z,d.d/Z-d0d1Z.d2d3d4d5d6Z/dOd7d8Z0dOd9d:Z1dOd;d<Z2dOd=d>Z3dOd?d@Z4dAdBZ5dCdDZ6edEdFZ7dGdHZ8dIdJZ9zddKl:m9Z9Wn e;yYnwGdLdMdMZz_sum..) getintrtype_coercemap _exact_ratiosumitems) datacountpartialsZ partials_getTtypvaluesr3r2totalr+r+r,_sums   rEcCs(z|WStyt|YSwr/)Z is_finiteAttributeErrormathZisfinite)xr+r+r, _isfinites   rIcCs ||ur|S|tus|tur|S|tur|St||r|St||r%|St|tr,|St|tr3|St|tr?t|tr?|St|trKt|trK|Sd}t||j|jf)Nz"don't know how to coerce %s and %s)r7bool issubclassrfloat TypeErrorr()rASmsgr+r+r,r9s  r9c Cst z|WStyYnttfy|dfYSwz|j|jfWSty9dt|jd}t|w)Nzcan't convert type 'z' to numerator/denominator) as_integer_ratiorF OverflowError ValueError numerator denominatorr8r(rM)rHrOr+r+r,r;s    r;cCsh t||ur |St|tr|jdkrt}z||WSty3t|tr2||j||jYSw)Nr-)r8rKr7rTrLrMrrS)valuerAr+r+r,_converts    rVcCs, t||}|t|kr|||kr|Str/)rlenrR)arHir+r+r, _find_lteqs  rZcCs< t|||d}|t|dkr||d|kr|dSt)N)lor-)rrWrR)rXlrHrYr+r+r, _find_rteq"s  r]negative valueccs( |D] }|dkrt||VqdS)Nr)r)rCerrmsgrHr+r+r, _fail_neg*sr`cCsJ t||ur t|}t|}|dkrtdt|\}}}t|||S)Nr-z%mean requires at least one data point)iterlistrWrrErV)r>r3rArDr?r+r+r,r 4s r csj zt|Wntydfdd}t||}Ynwt|}z|WSty4tddw)Nrc3s"t|ddD]\}|VqdS)Nr-)start) enumerate)iterablerHr3r+r,r?\szfmean..countz&fmean requires at least one data point)rWrMr$ZeroDivisionErrorr)r>r?rDr+rfr,rNs       rcCs0 z tttt|WStytddw)NzGgeometric mean requires a non-empty dataset containing positive numbers)r rr:r#rRr)r>r+r+r,ris  rc Cs4 t||ur t|}d}t|}|dkrtd|dkr;|dur;|d}t|tjtfr7|dkr5t||Std|durGt d|}|}n#t||urQt|}t||kr[tdt ddt ||D\}}}zt ||}t d dt ||D\}}} Wn t yYdSw|dkrtd t|||S) Nz.harmonic mean does not support negative valuesr-z.harmonic_mean requires at least one data pointrzunsupported typez*Number of weights does not match data sizecss|]}|VqdSr/r+)r1wr+r+r,r4sz harmonic_mean..css$|] \}}|r ||ndVqdS)rNr+)r1rhrHr+r+r,r4"zWeighted sum must be positive)rarbrWr isinstancenumbersZRealrrMrrEr`ziprgrV) r>Zweightsr_r3rHZ sum_weights_rArDr?r+r+r,r|s>     " rcCsZ t|}t|}|dkrtd|ddkr||dS|d}||d||dSNrno median for empty datar-sortedrWr)r>r3rYr+r+r,r s   r cCsJ t|}t|}|dkrtd|ddkr||dS||ddSrnrqr>r3r+r+r,r s   r cCs. t|}t|}|dkrtd||dS)Nrrorprqrsr+r+r,r s   r r-c Cs t|}t|}|dkrtd|dkr|dS||d}||fD]}t|ttfr2td|q#z||d}WntyNt|t|d}Ynwt||}t |||}|}||d} |||d|| S)Nrror-rpzexpected number but got %r) rrrWrrjstrbytesrMrLrZr]) r>Zintervalr3rHobjLl1l2Zcffr+r+r,r s,       r cCs< tt|d}z|ddWStytddw)Nr-rzno mode for empty data)r&ra most_common IndexErrorr)r>Zpairsr+r+r,r,s  rcCsB tt|}tt|tdddgf\}}tttd|S)Nr-)keyr)r&rar{nextrr%rbr:)r>ZcountsZmaxcountZ mode_itemsr+r+r,rJs r exclusive)r3methodc Cs> |dkr tdt|}t|}|dkrtd|dkrM|d}g}td|D]"}t|||\}}||||||d||} || q(|S|dkr|d}g}td|D]9}|||}|dkrjdn ||dkrt|dn|}||||}||d||||||} || q\|Std|)Nr-zn must be at least 1rpz"must have at least two data pointsZ inclusiverzUnknown method: )rrrrWrangedivmodappendrR) r>r3rZldmresultrYjZdeltaZ interpolatedr+r+r,rs4$  $$ rc s durtfdd|D\}}}||fSt|\}}}||\}}t}tt|D]\}} ||| |} | |} || | | | 7<q.d|vrW|d}||fStdd|D}||fS)Nc3|] }|dVqdS)rpNr+)r1rHcr+r,r4z_ss..csr.r/rr0r+r+r,r4r5)rErPr&r:r;r<r=) r>rrArDr?Zmean_nZmean_dr@r3r2Zdiff_nZdiff_dr+rr,_sss rcCsN t||ur t|}t|}|dkrtdt||\}}t||d|S)Nrpz*variance requires at least two data pointsr-rarbrWrrrV)r>xbarr3rAssr+r+r,rs %rcCsJ t||ur t|}t|}|dkrtdt||\}}t|||S)Nr-z*pvariance requires at least one data pointr)r>mur3rArr+r+r,rs "rcC4 t||}z|WStyt|YSwr/)rrrFrG)r>rvarr+r+r,r0   rcCrr/)rrrFrG)r>rrr+r+r,rCrrcsp t|}t||krtd|dkrtdt||t||tfddt||D}||dS)NzDcovariance requires that both inputs have same number of data pointsrpz,covariance requires at least two data pointsc3$|] \}}||VqdSr/r+r1xiyirybarr+r,r4urizcovariance..r-)rWrr$rl)rHyr3sxyr+rr,r]s    rcs t|}t||krtd|dkrtdt||t||tfddt||D}tfdd|D}tfdd|D}z |t||WSty\tdw) NzEcorrelation requires that both inputs have same number of data pointsrpz-correlation requires at least two data pointsc3rr/r+rrr+r,r4rizcorrelation..c3r@Nr+r1rrr+r,r4rc3rrr+)r1r)rr+r,r4rz&at least one of the inputs is constant)rWrr$rlrrg)rHrr3rsxxZsyyr+rr,rys     rLinearRegressionslope interceptcs t|}t||krtd|dkrtdt||t||tfddt||D}tfdd|D}z||}Wn tyNtdw|}t||dS) NzKlinear regression requires that both inputs have same number of data pointsrpz3linear regression requires at least two data pointsc3rr/r+rrr+r,r4riz$linear_regression..c3rrr+rrr+r,r4rz x is constantr)rWrr$rlrgr)rHrr3rrrrr+rr,rs"       rcCs|d}t|dkrXd||}d|d|d|d|d|d |d |d |}d |d |d|d|d|d|d|d}||}|||S|dkr^|nd|}tt| }|dkr|d}d|d|d|d|d|d|d|d}d|d |d!|d"|d#|d$|d%|d}n@|d}d&|d'|d(|d)|d*|d+|d,|d-}d.|d/|d0|d1|d2|d3|d4|d}||}|dkr| }|||S)5N?g333333?gQ?g^}o)@gE.kR@g Ul@g*u>l@gN@g"]Ξ@gnC`@gu @giK~j@gv|E@gd|1@gfRr@gu.2@g~y@gn8(E@?g@g?g鬷ZaI?ggElD?g7\?guSS?g=. @gj%b@gHw@gjRe?g9dh? >g('߿A?g~z ?g@3?gɅ3?g3fRx?gIFl@gt>g*Yn>gESB\T?gN;A+?gUR1?gEF?gPn@g&>@gigtcI,\>gŝI?g*F2v?gC4?gO1?)rrr#)prsigmaqrZnumZdenrHr+r+r,_normal_dist_inv_cdfsd     r)rc@seZdZ dddZd=ddZedd Zd d d d ZddZddZ ddZ d>ddZ ddZ ddZ eddZeddZedd Zed!d"Zed#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0ZeZd1d2ZeZd3d4Zd5d6Zd7d8Zd9d:Z d;d<Z!d S)?rz(Arithmetic mean of a normal distributionz+Standard deviation of a normal distribution_mu_sigmarrcCs* |dkr tdt||_t||_dS)Nrzsigma must be non-negative)rrLrr)selfrrr+r+r,__init__%s  zNormalDist.__init__cCs0 t|ttfs t|}t|}||t||Sr/)rjrbtuplerr)clsr>rr+r+r, from_samples,s zNormalDist.from_samplesN)seedcsD |durtjnt|j|j|jfddt|DS)Ncsg|]}qSr+r+r1rYgaussrrr+r, 8sz&NormalDist.samples..)randomrZRandomrrr)rr3rr+rr,samples4szNormalDist.samplescCs> |jd}|s tdt||jdd|tt|S)Nrz$pdf() not defined when sigma is zerog)rrr rrr")rrHrr+r+r,pdf:s  &zNormalDist.pdfcCs4 |jstdddt||j|jtdS)Nz$cdf() not defined when sigma is zerorrr)rrr!rrrrHr+r+r,cdfAs$zNormalDist.cdfcCs< |dks |dkr td|jdkrtdt||j|jS)Nrrz$p must be in the range 0.0 < p < 1.0z-cdf() not defined when sigma at or below zero)rrrr)rrr+r+r,inv_cdfGs   zNormalDist.inv_cdfrcs fddtdDS)Ncsg|] }|qSr+)rrr3rr+r,r`sz(NormalDist.quantiles..r-)r)rr3r+rr,rWszNormalDist.quantilesc Cs  t|ts td||}}|j|jf|j|jfkr ||}}|j|j}}|r+|s/td||}t|j|j}|sLdt|d|jt dS|j||j|}|j|jt |d|t ||} || |} || |} dt| | | | t| | | | S)Nz$Expected another NormalDist instancez(overlap() not defined when sigma is zerorr) rjrrMrrrrrr!rr#r) rotherXYZX_varZY_varZdvZdmrXbx1x2r+r+r,overlapbs$   (  4zNormalDist.overlapcCs |jstd||j|jS)Nz'zscore() not defined when sigma is zero)rrrrr+r+r,zscoreszNormalDist.zscorecC |jSr/rrr+r+r,r zNormalDist.meancCrr/rrr+r+r,r rzNormalDist.mediancCrr/rrr+r+r,rszNormalDist.modecCrr/rrr+r+r,rrzNormalDist.stdevcCs |jdS)Nrrrr+r+r,rs zNormalDist.variancecCs: t|trt|j|jt|j|jSt|j||jSr/rjrrrrrrr+r+r,__add__ zNormalDist.__add__cCs: t|trt|j|jt|j|jSt|j||jSr/rrr+r+r,__sub__rzNormalDist.__sub__cCs t|j||jt|Sr/rrrrrr+r+r,__mul__zNormalDist.__mul__cCs t|j||jt|Sr/rrr+r+r, __truediv__rzNormalDist.__truediv__cCs t|j|jSr/rrrrr+r+r,__pos__szNormalDist.__pos__cCs t|j |jSr/rrr+r+r,__neg__zNormalDist.__neg__cCs || Sr/r+rr+r+r,__rsub__s zNormalDist.__rsub__cCs( t|tstS|j|jko|j|jkSr/)rjrNotImplementedrrrr+r+r,__eq__s zNormalDist.__eq__cCs t|j|jfSr/)hashrrrr+r+r,__hash__rzNormalDist.__hash__cCs t|jd|jd|jdS)Nz(mu=z, sigma=))r8r(rrrr+r+r,__repr__s zNormalDist.__repr__cCs |j|jfSr/rrr+r+r, __getstate__s zNormalDist.__getstate__cCs|\|_|_dSr/r)rstater+r+r, __setstate__szNormalDist.__setstate__)rr)r)"r(r)r* __slots__r classmethodrrrrrrrrpropertyr r rrrrrrrrr__radd__r__rmul__rrrrrr+r+r+r,rsN    "      r)r^r/)r-)=__all__rGrkrZ fractionsrdecimalr itertoolsrrZbisectrrrrrr r!r"r#r$operatorr% collectionsr&r'rRrrErIr9r;rVrZr]r`r rrrr r r r rrrrrrrrrrrrrZ _statistics ImportErrorrr+r+r+r,s`j  ( 4   8 77 8  / ,  !-K