U
    Ãmœd&  ã                ]   @   s¶  d Z ddlmZ ddlZddlmZ d˜dd„Zddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcg]Z	g Z
g Zg Zg Zg Zg Zg ZdddedfdgdhdiœZeee
eediœZd d!d8gd	ddJdOgdddddddddddddddd#d$d&d'd(d)d,d-d.d1d2d3d7d;d<d=d>d?d@dAdBdFdHdKdMdNdQdVg+dddd"d%d*d+d/d5d6d9d:dCdDdIdLdRdSdUgd
dddd0d4dGdPdTdWg
dEgdjœZd%gZedk edl  edm  e Ze	D ]�ZeeeƒZeednƒ�r e ej¡�r.doZnejdk�r@dpZndgZe ej¡�rXdoZnejdk�rjdpZndgZe e¡ e eefg ¡ e¡ �q d%dLdUgZ dqdr„ eds D ƒZ	dWgZ dUgZ d$dUgZ dtdr„ eD ƒZ	e!duk�r²dvZ"dwZ#dxZ$dyZ%dyZ&g Z'e(dƒD �]¸Z)ej*j+e%e&e$e# dz�Z,e -e,ej.j+d{d|e$de#  d}�f¡Z,e /e,¡Z0e,e,dk Z1dZ2e1Z3e4d~ƒ e4de$ƒ e	D �]@ZeeeƒZeek�r’e3Z+e2Z5ne,Z+dZ5e4d€ƒ e4d�e ƒ e+ 6¡ Z7e 8e+ 9¡ ¡Z:e+ ;¡ e+ <¡ fZ=ed‚k�re7dƒe:  e7dƒe:  fZ>e?ej@e+fe>že7e:d„œŽƒZAnèedk�r4e?ej@e+e7e:d„�ƒZAnÈed%k�rVe?ej@e+d…e7e:d„�ƒZAn¦edWk�rxe?ej@e+d†de:d„�ƒZAn„edk�rœe?ej@e+dyd‡ddd„�ƒZAn`eek�rÒe+ 6¡ Z7e 8e+ 9¡ ¡Z:e?ej@e+ddd„�ƒZAn*e+ 6¡ Z7e 8e+ 9¡ ¡Z:e?ej@e+e7e:d„�ƒZAe4dˆeAƒ eAdd‰… ZBeAd‰ ZCeAdŠ ZDe+eC eD ZEe FeEeeB¡\ZGZHe4d‹eGeHƒ dŒZIejJdeIeKe5ƒ  feAžeCeDd„œŽZLej*jMeLe%e&d��ZNe4dŽeIeLeNƒ e' eeGeHeBeCeDeLeNg¡ �qn�qúdd�lOmPZP eQe'ePdƒƒd��ZReR S¡  e4d‘eTeRƒƒ d’ZUddlVZVeVjW XeU¡�seV YeU¡ eZeRƒD ]œ\Z[Z\e\dd… \ZZGZHZBZCZDZLZNeeeƒZeek�rZe3Z+e2Z5d“Z]ne,Z+d”Z]dZ5e4d•eeGeHeNf ƒ ee+eeBeCeDe5d–� e ^eVjW _eUd—e"e]e[ef ¡¡ �qdS )™a…  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                 C   sò   t  ¡  t j| ddddd�\}}}tdd„ |D ƒƒ}	t|	ƒ tt  ¡ ƒ}
|	d |
d	< |j|f|ž||d
œŽ}|	|||	k< t j||ddd�}t	j
j|ddd�| }t j||ddd�}t  d¡ t  d¡ t  d|j||f ¡ t  d¡ t  ¡  d S )Né   r   Úgreenç      è?)ÚnormedZ	facecolorÚalphac                 S   s   g | ]}|  ¡ ‘qS © )Z
get_height)Ú.0Úpr	   r	   úm/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/sandbox/distributions/examples/matchdist.pyÚ
<listcomp>   s     zplothist.<locals>.<listcomp>gÍÌÌÌÌÌð?éÿÿÿÿ©ÚlocÚscalezr--)Z	linewidthé
   ©r   zb-ZSmartsZProbabilityz,$\mathrm{Testing: %s :}\ \mu=%f,\ \sigma=%f$T)ÚpltZfigureÚhistÚmaxÚprintÚlistZaxisZpdfZplotr   ÚtZxlabelZylabelÚtitleÚnameÚgridZdraw)ÚxÚdistfnÚargsr   r   ÚrightÚnZbinsZpatchesZ	maxheightZaxlimZytÚltZysZlsr	   r	   r   Úplothist   s     


r#   Znormr   ZanglitZarcsineÚbetaÚ	betaprimeZbradfordZburrZfiskZcauchyÚchiZchi2ZcosineZdgammaZdweibullÚerlangZexponZ	exponweibZexponpowZfatiguelifeZ
foldcauchyÚfZfoldnormZ	frechet_rZweibull_minZ	frechet_lZweibull_maxZgenlogisticZ	genparetoZgenexponZ
genextremeÚgammaZgengammaZgenhalflogisticZgompertzZgumbel_rZgumbel_lZ
halfcauchyÚhalflogisticZhalfnormZ	hypsecantZ
gausshyperZinvgammaZinvnormZ
invweibullZ	johnsonsbZ	johnsonsuZlaplaceZlevyZlevy_lZlogisticZloggammaZ
loglaplaceZlognormZgilbratZmaxwellZmielkeZnakagamiZncx2Zncfr   ZnctZparetoZlomaxZpowerlawZpowerlognormZ	powernormZrdistZrayleighÚ
reciprocalÚriceZrecipinvgaussZsemicircularZtriangZ
truncexponÚ	truncnormZtukeylambdaÚuniformZvonmisesZwaldZ
wrapcauchyZbinomZ	bernoulliZnbinomZgeomZ	hypergeomZlogserZpoissonZplanckZ	boltzmannÚrandintZzipfZdlaplaceÚunboundr    ÚleftÚfiniteÚother)©Úopenr5   ©Ú0r5   ©r5   r7   ©r2   r2   )Úothr:   )r8   r9   r6   r4   ©r7   r2   ©r2   r5   r6   r;   r<   Z_pdfr5   r7   c                 C   s   g | ]}|t kr|‘qS r	   ©Únot_good©r
   r(   r	   r	   r   r   �   s      r   r4   c                 C   s   g | ]}|t kr|‘qS r	   r=   r?   r	   r	   r   r   ’   s      Ú__main__Zrun_conv500_1_r   iô  r   )r   Úsizegš™™™™™Ù?g      @)r   r   rA   z2==================================================zsamplesize = z------------------------------ztarget = %s)r-   r%   r+   é   r   éûÿÿÿg      à?é   Úfitéþÿÿÿr   Úkstestgš™™™™™¹?r   z
crit, prob)Ú
itemgetter)Úkeyznumber of distributionsZmatchresultsÚrÚ z-%s ks-stat = %f, ks-pval = %f tail_prob = %f))r    z%s%s%02d_%s.png)r   )`Ú__doc__Zscipyr   ÚnumpyÚnpZmatplotlib.pyplotZpyplotr   r#   Z
targetdistr1   r    r2   r0   r3   ZcontdistZdiscreteZcategZcateg2Zright_incorrectZ	right_allÚdistnameÚgetattrr   ÚhasattrÚisinfÚaÚlowÚbÚhighÚappendÚ
setdefaultr>   Ú__name__ÚprefixZconvolr!   Zdgp_argZ	dgp_scaleÚresultsÚrangeÚir   ZrvsZrvs_origZhstackr*   ÚabsoluteZrvs_absZrvs_posZrightfactorZ	rvs_rightr   ZrindZmeanÚsmÚsqrtÚvarZsstdÚminr   ZssuppZpar0ÚtuplerE   Zpar_estZarg_estZloc_estZ	scale_estZ
rvs_normedrG   Zks_statZks_pvalZquantZppfÚfloatÚcritZsfZ	tail_probÚoperatorrH   ÚsortedZres_sortÚreverseÚlenZimagedirÚosÚpathÚexistsÚmakedirsÚ	enumerateÚiiZdiÚriZsavefigÚjoinr	   r	   r	   r   Ú<module>   s4  
%                                                                        î ÿ ÿ
                              ù
           ý
    ÿïÿ



$











$"	



ÿ