U
    Kvf&  ã                ]   @   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€ƒ e4de ƒ 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dlOmPZP 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   Zgreenç      è?)ÚnormedZ	facecolorÚalphac                 S   s   g | ]}|  ¡ ‘qS © )Z
get_height)Ú.0Úpr   r   úX/tmp/pip-unpacked-wheel-2v6byqio/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)ÚpltÚfigureÚhistÚmaxÚprintÚlistZaxisZpdfZplotr   ÚtZxlabelZylabelÚtitleÚnameZ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dweibullZ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Ú
reciprocalZ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)©Úopenr2   ©Ú0r2   ©r2   r4   ©r/   r/   )Úothr7   )r5   r6   r3   r1   ©r4   r/   ©r/   r2   r3   r8   r9   Z_pdfr2   r4   c                 C   s   g | ]}|t kr|‘qS r   ©Únot_good©r	   r&   r   r   r   r      s      r   r1   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   r>   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   ZnumpyÚnpZmatplotlib.pyplotZpyplotr   r"   Z
targetdistr.   r   r/   r-   r0   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ÚtuplerB   Zpar_estZarg_estZloc_estZ	scale_estZ
rvs_normedrD   Zks_statZks_pvalZquantZppfÚfloatÚcritZsfZ	tail_probÚoperatorrE   ÚsortedZres_sortÚreverseÚlenZimagedirÚosÚpathÚexistsÚmakedirsÚ	enumerateÚiiZdiÚriZsavefigÚjoinr   r   r   r   Ú<module>   s4  
%                                                                        î ÿ ÿ
                              ù
           ý
    ÿïÿ



$











$"	



ÿ