
    !g&                     
   d Z ddlmZ ddlZddlmZ dEdZg dZ	g Z
g Zg Zg Zg Zg Zg Zddd	d
ddZeee
eedZg dg dg dg dg ddgdZdgZed   ed   z   ed   z   ez   Ze	D ]  Z eee      Z eed      s ej2                  ej4                        rdZnej4                  dk(  rdZnd
Z ej2                  ej8                        rdZnej8                  dk(  rdZnd
Zej=                  e       ej?                  eefg       j=                  e        g dZ ed   D  cg c]	  } | e vs|  c} Z	dgZ dgZ ddgZ eD  cg c]	  } | e vs|  c} Z	e!d k(  rd!Z"d"Z#d#Z$d$Z%d$Z&g Z' e(d      D ]  Z)ejT                  jW                  e%e&e$e#z  %      Z, ejZ                  e,ej\                  jW                  d&d'e$de#z
  z  (      f      Z, ej^                  e,      Z0e,e,dkD     Z1dZ2e1Z3 e4d)        e4d*e$       e	D ]t  Z eee      Zeev re3Z+e2Z5ne,Z+dZ5 e4d+        e4d,ez         e+jm                         Z7 ejp                  e+js                               Z:e+jw                         e+jy                         fZ=ed-v r/e7d.e:z  z
  e7d.e:z  z   fZ> e? ej                  e+ge>e7e:d/      ZAned0k(  r e?ej                  e+e7e:/            ZAnedk(  r e?ej                  e+d1e7e:/            ZAnedk(  r e?ej                  e+d2de:/            ZAned3k(  r e?ej                  e+d$d4dd/            ZAneev rKe+jm                         Z7 ejp                  e+js                               Z: e?ej                  e+dd/            ZAnJe+jm                         Z7 ejp                  e+js                               Z: e?ej                  e+e7e:/            ZA e4d5eA       eAdd6 ZBeAd6   ZCeAd7   ZDe+eCz
  eDz  ZE ej                  eEeeB      \  ZGZH e4d8eGeH       d9ZI ej                  deI eKe5      z  z
  geAeCeDd/ZLejT                  j                  eLe%e&:      ZN e4d;eIeLeN       e'j=                  eeGeHeBeCeDeLeNg       w  dd<lOmPZP  eQe' ePd.      =      ZReRj                           e4d> eTeR             d?ZUddlVZVeVj                  j                  eU      s eVj                  eU        eZeR      D ]}  \  Z[Z\e\dd \  ZZGZHZBZCZDZLZN eee      Zeev re3Z+e2Z5d@Z]ne,Z+dAZ]dZ5 e4dBeeGeHeNfz          ee+eeBeCeDe5C        ej                  eVj                  j                  eUdDe"e]e[efz                yyc c} w c c} w )Fa  given a 1D sample of observation, find a matching distribution

* estimate maximum likelihood parameter for each distribution
* rank estimated distribution by Kolmogorov-Smirnov and Anderson-Darling
  test statistics

Author: Josef Pktd
License: Simplified BSD
original December 2008

TODO:

* refactor to result class
* split estimation by support, add option and choose automatically
*

    )statsN   c           	         t        j                          t        j                  | dddd      \  }}}t        |D 	cg c]  }	|	j	                          c}	      }
t        |
       t        t        j                               }|
dz  |d<    |j                  |g|||d}|
|||
kD  <   t        j                  ||d	d
      }t        j                  j                  |dd      |z  }t        j                  ||dd
      }t        j                  d       t        j                  d       t        j                  d|j                   d|dd|dd       t        j                   d       t        j"                          y c c}	w )N   r   green      ?)normed	facecoloralphag?locscalezr--)	linewidth
   r   zb-SmartsProbabilityz$\mathrm{Testing: z	 :}\ \mu=fz
,\ \sigma=$T)pltfigurehistmax
get_heightprintlistaxispdfplotr   txlabelylabeltitlenamegriddraw)xdistfnargsr   r   rightnbinspatchesp	maxheightaxlimytltyslss                   q/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/sandbox/distributions/examples/matchdist.pyplothistr7      s8   JJLxx2a7$OAtWW5Q\\^56I	)E$E"I 
T	7$	7s%	7BBr)|	$EQ	/B	dBR	)%	/B	$DA	.BJJxJJ}II$V[[MC7*USTIUVWX HHTNHHJ/ 6s   E?)]normr   anglitarcsinebeta	betaprimebradfordburrfiskcauchychichi2cosinedgammadweibullerlangexpon	exponweibexponpowfatiguelife
foldcauchyr   foldnorm	frechet_rweibull_min	frechet_lweibull_maxgenlogistic	genparetogenexpon
genextremegammagengammagenhalflogisticgompertzgumbel_rgumbel_l
halfcauchyhalflogistichalfnorm	hypsecant
gausshyperinvgammainvnorm
invweibull	johnsonsb	johnsonsulaplacelevylevy_llogisticloggamma
loglaplacelognormgilbratmaxwellmielkenakagamincx2ncfr!   nctparetolomaxpowerlawpowerlognorm	powernormrdistrayleigh
reciprocalricerecipinvgausssemicirculartriang
truncexpon	truncnormtukeylambdauniformvonmiseswald
wrapcauchybinom	bernoullinbinomgeom	hypergeomlogserpoissonplanck	boltzmannrandintzipfdlaplaceunboundr+   leftfiniteother)openr   0r   r   r   r   r   )othr   )rO   rP   rg   )r9   rC   rx   r}   )+r   r>   r?   rA   rB   rF   rG   rH   rI   rJ   rK   r   rL   rM   rN   rR   rS   rU   rV   rW   rX   r[   r\   r]   r`   ra   rb   rf   rj   rk   rl   rm   rn   ro   rp   rq   rt   rv   ry   r{   r|   r   r   )r@   rD   rE   rQ   rT   rY   rZ   r^   rd   re   rh   ri   r!   rr   rw   rz   r   r   r   )
r:   r;   r<   r=   r_   rc   ru   r~   r   r   rs   )r   r   r   r   r   r   r   r   rT   r   r   r   _pdfr   r   )rT   rz   r   r   r   r   rS   __main__run_conv500_1_r   i  r   )r   sizeg?g      @)r   r   r   z2==================================================zsamplesize = z------------------------------ztarget = %s)r   r<   rz      r   r8   g      ?r      fitr   kstestg?r   z
crit, prob)
itemgetter)keyznumber of distributionsmatchresultsr z-%s ks-stat = %f, ks-pval = %f tail_prob = %f))r+   z%s%s%02d_%s.png)r   )`__doc__scipyr   numpynpmatplotlib.pyplotpyplotr   r7   
targetdistr   r+   r   r   r   contdistdiscretecategcateg2right_incorrect	right_alldistnamegetattrr)   hasattrisinfalowbhighappend
setdefaultnot_good__name__prefixconvolr,   dgp_arg	dgp_scaleresultsrangeir!   rvsrvs_orighstackr\   absolutervs_absrvs_posrightfactor	rvs_rightr   rindmeansmsqrtvarsstdminr   ssupppar0tupler   par_estarg_estloc_est	scale_est
rvs_normedr   ks_statks_pvalquantppffloatcritsf	tail_proboperatorr   sortedres_sortreverselenimagedirospathexistsmakedirs	enumerateiidirisavefigjoin)r   s   0r6   <module>r      s^  "   JL
( 

	

"v!)	A u4!'e	= ;H?8L"#
,  .=!F?$;;fEW>XX	  9HU8$Fvf288FHHCXX]CC288FHHDXX]DD!#dB'..x8!9$ 4/0FAAX4EaF
><z"!7AQh%6a7
 z FFAGIG1X <b77;;wYAfH;E299hu'9'9'='=#SWXZ[\bZbWc'='def"++h'8A:&	foq!" 3	bHU8,F9$" &M-(*+B2773779%DWWY	*EAA1T6	"QtV),


3 G$ G2D GHV#

32D
 AB\)

3rbt
 DE\)

3sqt
 DES

3r"
 CDU"XXZrwwswwy)

311
 =>XXZrwwswwy)

32D
 AB %!crlGbkGIg+y0J+u||JxIGW(GW-E6::aeDk 11YQXYwiYD

4i
@I,tY7 NNHWgggiPTU^`ag3	b<bJ $gZ]3H	
#S]3H77>>(#H8$ Y2MOPQUJ''')Dx(y CDBCBD='956 	7 	VGGIdCBGGLL*;fbX=V*VWX!Yu  G
 8s   #	U&-U&	U+U+