U
    md&                  ]   @   s  d Z ddlmZ ddlZddlmZ dd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rdvZ"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re3Z+e2Z5ne,Z+dZ5e4d e4de  e+6 Z7e8e+9 Z:e+; e+< fZ=edkre7de:  e7de:  fZ>e?ej@e+fe>e7e:dZAnedkr4e?ej@e+e7e:dZAned%krVe?ej@e+de7e:dZAnedWkrxe?ej@e+dde:dZAnedkre?ej@e+dyddddZAn`eekre+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ZAe4deA eAdd ZBeAd ZCeAd ZDe+eC eD ZEeFeEeeB\ZGZHe4deGeH dZIejJdeIeKe5  feAeCeDdZLej*jMeLe%e&dZNe4deIeLeN e'eeGeHeBeCeDeLeNg qnqddlOmPZP eQe'ePddZReRS  e4deTeR dZUddlVZVeVjWXeUseVYeU eZeRD ]\Z[Z\e\dd \ZZGZHZBZCZDZLZNeeeZeekrZe3Z+e2Z5dZ]ne,Z+dZ]dZ5e4deeGeHeNf  ee+eeBeCeDe5d e^eVjW_eUde"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      ?   fitr   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  
%                                                                          
                              
           
    



$











$"	



