a
    ˆù»ja¶  ã                   @   sº  d dl Z d dlZd dlmZ d dlmZmZ d dlZd dl	m
Z
 d dlmZ ddlmZ d dlmZ d dlmZ d d	lmZ g d
¢ZdZdZg d¢Zg d¢Zg d¢Zg d¢Zee edœZdhZddgZdd„ Zej j!ej  "deƒ ¡ej  "dddg¡dd„ ƒƒƒZ#d>dd„Z$dd „ Z%d!d"„ Z&d#d$„ Z'ej  "d%e
j(d&fe
j)d'fg¡d(d)„ ƒZ*d*d+„ Z+d,d-„ Z,d.d/„ Z-ej  "d0e-ƒ ¡d1d2„ ƒZ.d?d5d6„Z/G d7d8„ d8ƒZ0g d9¢Z1G d:d;„ d;ƒZ2G d<d=„ d=ƒZ3dS )@é    N)Úassert_allcloseÚassert_equal)Ústats©Údifferential_evolutioné   )Údistcont)ÚFitError)Údistdiscrete)Úgoodness_of_fit)éè  éˆ  i'  ç      Ð?ç      è?)Ú
gausshyperÚgenexponÚgengammaÚkappa4ÚksoneÚkstwoÚncfÚncx2Ú
truncexponÚtukeylambdaÚvonmisesÚlevy_stableÚ	trapezoidÚtruncweibull_minÚstudentized_range)ÚburrÚchiÚchi2ÚmielkeÚpearson3ÚgenhalflogisticÚrdistÚparetoÚpowerlawÚpowerlognormÚ
wrapcauchyÚrel_breitwigner)1ÚalphaÚ	betaprimer   Úburr12Zcauchyr    r!   ÚcrystalballÚdgammaÚdweibullÚfÚfatiguelifeÚfiskÚ
foldcauchyÚ
genextremer   ÚgenhyperbolicÚgennormÚ	genparetoZ
halfcauchyÚinvgammaÚ
invweibullÚ	jf_skew_tÚ	johnsonsuÚkappa3r   r   ZlevyZlevy_lr   Ú
loglaplaceÚlomaxr"   Únakagamir   Únctr   r&   r(   Ú	powernormr*   Z
skewcauchyÚtr   ÚtriangÚtruncparetor   r   r   )ÚargusÚexponpowÚ	exponweibr   r   r$   ÚhalfgennormÚgompertzÚ	johnsonsbr   Ú	kstwobignÚrecipinvgaussr   r   Úvonmises_line)ÚMMÚMLErE   Úerlangr6   c                  c   s$   t D ]\} }| tvr| |fV  qd S )N)r   Úskip_fit)ÚdistnameÚarg© rU   ú@E:\soccer\ml_env\Lib\site-packages\scipy/stats/tests/test_fit.pyÚcases_test_cont_fitV   s    rW   zdistname,argÚmethodrP   rO   c              	   C   s¾  | t | v rVzttjd ƒ }W n ty6   d}Y n0 |rVd|  }|d7 }t |¡ tt| ƒ}t	 
|ddgg¡}t	 t	 |t t	 |jd t¡g¡d¡}tD �]Ú}t	j d	¡ t	jd
d���L |j|d|iŽ}	|dkrì|jtv rìddi}
ni }
|j|	fd|i|
¤Ž}|dk�rTt |	¡}|j|fi |
¤Ž}d|j› d|› d|› �}t||d|d� |dk�rü| tv�rüd}t	 |	|	f¡}|d |…df  d9  < |d |…df  d9  < |jdd� tj|d�}|j|fi |
¤Ž}d|j› d|› d|› �}t||d|d� W d   ƒ n1 �s0    Y  || }t	 t	 |	 ¡ ¡t tg¡|d< t	  t	 !|¡¡�r`t"dƒ‚qžt	 #t	 |¡|k¡rž �qºqžd t$|ƒ }|d!t$|ƒ 7 }|d"t$|ƒ 7 }t"d#|j | ƒ‚d S )$NZSCIPY_XFAILTz$Fitting %s doesn't work reliably yetzH [Set environment variable SCIPY_XFAIL=1 to run this test nevertheless.]g        ç      ð?é   r   iÒ  Úignore)ÚallÚsizerP   ÚflocrX   zCDifferent results fitting uncensored data wrapped as CensoredData: z: est=z est1=g»½×Ùß|Û=)ÚrtolÚerr_msgé   ç®Gáz®ï?r   ç)\�Âõ(ð?©Úaxis)Úintervalz2Different results fitting interval-censored data: z est2=çš™™™™™©?éþÿÿÿznan returned in fitzparameter: %s
zestimated: %s
zdiff     : %s
zfit not very good in %s
)%Úfailing_fitsÚintÚosÚenvironÚ	ExceptionÚpytestÚxfailÚgetattrr   ÚnpZhstackÚmaxZvstackÚthresh_percentÚfullZnumargsÚ
thresh_minÚ	fit_sizesÚrandomÚseedÚerrstateÚrvsÚnameÚmle_use_floc0ÚfitZCensoredDatar   Úfail_interval_censoredZcolumn_stackÚsortÚabsÚmeanÚanyÚisnanÚAssertionErrorr\   Ústr)rS   rT   rX   ro   ÚmsgZdistfnZtrueargZdiffthresholdZfit_sizerz   ÚkwdsZestZdata1Zest1Znicrf   Zdata2Zest2ÚdiffÚtxtrU   rU   rV   Útest_cont_fit`   s~    


ÿþ



ÿÿÿÿÿÿ0ÿ

rŠ   c                 C   s4   t t| ƒ}| |¡dd … }t|||d|  d� d S )Nrh   z"poor mle fit of (loc, scale) in %s)Úatolr`   )rp   r   r}   r   )r{   ÚdataZdesiredr‹   ÚdÚactualrU   rU   rV   Ú_check_loc_scale_mle_fit­   s
    
ÿr�   c                  C   s6   t  g d¢¡} td| ddgdƒ td| ddgdƒ d S )N)rc   ç{®Gázü?r�   r�   ç®Gázþ?r‘   r‘   ç       @Úuniformrc   rb   çü©ñÒMbP?Úexpong¤p=
×£ç?)rq   Úarrayr�   )rŒ   rU   rU   rV   Ú"test_non_default_loc_scale_mle_fit´   s    r—   c                  C   s.   g d¢} t jj| dd�}t|ddgdd� dS )zgh-6167)r   r   r   r   rZ   rZ   rZ   rZ   r   )r^   rY   r”   ©r‹   N)r   r•   r}   r   )rŒ   ZphatrU   rU   rV   Útest_expon_fitº   s    r™   c               	   C   s†   t  t  d¡t  d¡g¡} d}tjt|d��F t t¡� t	j
 | ¡ W d   ƒ n1 sZ0    Y  W d   ƒ n1 sx0    Y  d S )Né   é   z0Optimization converged to parameters that are...©Úmatch)rq   ZconcatenateZzerosZonesrn   Úraisesr	   ÚwarnsÚRuntimeWarningr   Úbetar}   )rŒ   ÚmessagerU   rU   rV   Útest_fit_errorÁ   s    ÿr£   zdist, params)ç      à?ç      @)é
   ç333333Ó?rZ   c                 C   s|   t j d¡}t| dƒr| j}n| j}| j|d|dœŽ}||g|¢R Ž  ¡  }|  ||¡}|  	||¡}t
||ƒ t
||ƒ d S )Niðgž:Úpdféd   ©r]   Úrandom_state)rq   rw   Údefault_rngÚhasattrZlogpdfZlogpmfrz   ÚsumÚnnlfZ_penalized_nnlfr   )ÚdistÚparamsÚrngZlogpxfÚxÚrefÚres1Úres2rU   rU   rV   Útest_nnlf_and_related_methodsÉ   s    

r·   c                  c   s¶   h d£} h d£}h d£}t tt ƒD ]Œ}|| v s:t|tƒsZd}tj|tjj|d�d�V  q$||v r‚d}tj|tjj	|d�d�V  q$||v rªd}tj|tjj
|d�d�V  q$|V  q$d S )	N>	   r   rF   Úarcsiner   rE   r   Úfoldnormr   r   >-   r8   r    ÚnorminvgaussÚricer<   rJ   r;   rG   r“   Úinvgaussr@   r=   ÚbinomÚlognormrK   r#   r-   Úweibull_maxr&   rB   r)   ÚnbinomrL   Úrandintr7   r>   rI   r:   r0   r,   r+   r4   r3   ÚbradfordrC   r1   r%   r2   r   r'   r5   r?   r"   rM   r.   >   r   rA   Ú
loguniformÚnchypergeom_walleniusr   r   Ú	hypergeomÚ	truncnormÚ	betabinomr¡   ÚskellamÚ
reciprocalr   r   r6   r$   Ú
nhypergeomrH   rD   r   r(   ÚzipfianÚnchypergeom_fisherÚgeninvgaussr*   r   r   ztested separately©Úreason©Zmarksútoo slow (>= 0.25s)útoo slow (>= 1.0s))Údictr
   r   Ú
isinstancer…   rn   ÚparamÚmarkÚskipÚslowÚxslow)Úskip_basic_fitÚslow_basic_fitÚxslow_basic_fitr°   rÏ   rU   rU   rV   Úcases_test_fit_mleÜ   s    
rÝ   c                  c   sâ   h d£} h d£}h d£}dh}t tt ƒD ]²}|| v s@t|tƒs`d}tj|tjj|d�d�V  q*||v rˆd}tj|tjj	|d�d�V  q*||v r°d	}tj|tjj
|d�d�V  q*||v rÖtj d
¡}tj||d�V  q*|V  q*d S )N>   rº   r   r   Úskewnormr   r6   r   rÍ   r   r   r   >9   r/   r8   r    r<   rQ   rJ   r;   Zlaplace_asymmetricrG   r!   r“   Úgammar@   r=   r¾   ZloggammarK   Zanglitr¿   r&   rÅ   rB   r)   rL   rÁ   rÇ   Úweibull_minr>   r¸   r:   Zmaxwellr0   r$   r+   rH   rÊ   r4   rD   Zwaldr3   Z	exponnormrÂ   ZsemicircularrC   r   rN   Zgenlogisticr2   r   rE   r5   r?   r"   r   r¹   rM   r.   >   r»   r   rA   r¼   rÃ   rÄ   r#   r   r-   rÆ   r7   r¡   rI   rÉ   r   r,   r9   r   r(   r1   r%   rË   rÌ   r'   r*   r   r   rÈ   zFails. Oh well.rÎ   rÐ   rÑ   rÒ   zignore::RuntimeWarning)rÓ   r
   r   rÔ   r…   rn   rÕ   rÖ   r×   rØ   rÙ   Úfilterwarnings)rÚ   rÛ   rÜ   Zwarns_basic_fitr°   rÏ   rÖ   rU   rU   rV   Úcases_test_fit_mse	  s$    	râ   c                  c   s8   t tƒ ¡ D ]&\} }t| tƒr| dv r(q| |fV  qd S )N>   r   rM   )rÓ   r   ÚitemsrÔ   r…   )rS   ÚshapesrU   rU   rV   Úcases_test_fitstartE  s    
ÿrå   zdistname, shapesc                 C   sr   t t| ƒ}tj d¡}| d¡}tjddd�� | |¡}W d   ƒ n1 sN0    Y  |j|d d… Ž snJ ‚d S )NiV år¦   r[   )ÚinvalidÚdividerh   )rp   r   rq   rw   r¬   ry   Z	_fitstartZ	_argcheck)rS   rä   r°   r²   rŒ   ÚguessrU   rU   rV   Útest_fitstartM  s    

(ré   çH¯¼šò×z>r¯   c           
      C   s>   t | |ƒ}|||ƒ}|||ƒ}	||	k s:tjj||	||d� d S )N)r_   r‹   )rp   rq   Útestingr   )
r°   rŒ   Zparams1Zparams0r_   r‹   Ú	nlff_nameZnlffZnlff1Znlff0rU   rU   rV   Úassert_nlff_less_or_closeY  s
    


rí   c                   @   s"  e Zd ZejZdZej 	e¡Z
ejjddde
d�ZddgZdddœZd	Zd
ZeedœZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej deƒ ¡dd„ ƒZej deƒ ¡dd„ ƒZdd„ Zdd „ Z d!d"„ Z!d#d$„ Z"d%d&„ Z#d'd(„ Z$d)d*„ Z%d+d,„ Z&d-d.„ Z'ejj(d/d0„ ƒZ)d1d2„ Z*d3d4„ Z+d5S )6ÚTestFitl   »�Vaé   r¤   r©   rª   ©r   r¦   ©r   r   ©ÚnÚprg   ç{®Gáz„?)r‹   r_   c                 O   s   t |ddi|¤ŽS )Nrx   r   r   )ÚselfÚargsr‡   rU   rU   rV   Úoptm  s    zTestFit.optc                 C   sH   d}t jt|d��" t d| j| j¡ W d   ƒ n1 s:0    Y  d S )Nz `dist` must be an instance of...rœ   r¦   )rn   rž   Ú
ValueErrorr   r}   rŒ   Úshape_bounds_a©rö   r¢   rU   rU   rV   Útest_dist_ivp  s    zTestFit.test_dist_ivc                 C   s,  d}t jt|d��( t | jg d¢g| j¡ W d   ƒ n1 s@0    Y  d}t jt|d��, t | jdddtjg| j¡ W d   ƒ n1 sŽ0    Y  t jt|d��, t | jdddtj	g| j¡ W d   ƒ n1 sØ0    Y  t jt|d��& t | jg d¢| j¡ W d   ƒ n1 �s0    Y  d S )	Nz'`data` must be exactly one-dimensional.rœ   ©r   rZ   é   z.All elements of `data` must be finite numbers.r   rZ   rþ   )Ú1Ú2Ú3)
rn   rž   rù   r   r}   r°   rú   rq   ÚnanÚinfrû   rU   rU   rV   Útest_data_ivu  s    6::zTestFit.test_data_ivc                 C   sT  d}ddddœ}t jt|d��" t | j| j|¡ W d   ƒ n1 sF0    Y  d}ddg}t jt|d��" t | j| j|¡ W d   ƒ n1 s’0    Y  d	}dd
g}t jt|d��" t | j| j|¡ W d   ƒ n1 sÞ0    Y  ddg}t jt|d��" t | j| j|¡ W d   ƒ n1 �s(0    Y  d}dg}t jt|d��" t | j| j|¡ W d   ƒ n1 �st0    Y  d}g d¢}t jt|d��" t | j| j|¡ W d   ƒ n1 �sÂ0    Y  d}dddœ}t jt|d��" t | j| j|¡ W d   ƒ n1 �s0    Y  d}ddg}t jt|d��" t | j| j|¡ W d   ƒ n1 �s`0    Y  d}ddg}t jt|d��" t | j| j|¡ W d   ƒ n1 �s®0    Y  d}t jt|d��  t | j| j¡ W d   ƒ n1 �sò0    Y  t	j
 t	j
fdg}t jt|d��" t | j| j|¡ W d   ƒ n1 �sF0    Y  d S )Nz1Bounds provided for the following unrecognized...rð   rñ   ©r   r¦   ©ró   rô   rÿ   rœ   z6Each element of a `bounds` sequence must be a tuple...)r   r¦   rþ   z6Each element of `bounds` must be a tuple specifying...)r   r   r¤   r   r   z7A `bounds` sequence must contain at least 2 elements...z;A `bounds` sequence may not contain more than 3 elements...)rð   rð   rð   rð   z.There are no values for `p` on the interval...)r   r   rò   z.There are no values for `n` on the interval...)r¦   r   z6There are no integer values for `n` on the interval...)gffffffö?gš™™™™™ù?z0The intersection of user-provided bounds for `n`)rn   rŸ   r    r   r}   r°   rŒ   rž   rù   rq   r  )rö   r¢   Úshape_boundsÚboundsrU   rU   rV   Útest_bounds_iv‚  sR    000222
2220zTestFit.test_bounds_ivc                 C   sH  d}ddddœ}t jt|d��( tj| j| j| j|d� W d   ƒ n1 sL0    Y  d}dd	d
œ}t jt	|d��( tj| j| j| j|d� W d   ƒ n1 s 0    Y  ddg}t jt	|d��( tj| j| j| j|d� W d   ƒ n1 sî0    Y  ddgg}t jt	|d��( tj| j| j| j|d� W d   ƒ n1 �s@0    Y  d}dg}t jt	|d��( tj| j| j| j|d� W d   ƒ n1 �s’0    Y  d}g d¢}t jt	|d��( tj| j| j| j|d� W d   ƒ n1 �sæ0    Y  d}ddd
œ}t jt|d��( tj| j| j| j|d� W d   ƒ n1 �s<0    Y  d}g d¢}t jt|d��( tj| j| j| j|d� W d   ƒ n1 �s�0    Y  d}ddd
œ}t jt|d��( tj| j| j| j|d� W d   ƒ n1 �sæ0    Y  d}g d¢}t jt|d��( tj| j| j| j|d� W d   ƒ n1 �s:0    Y  d S )Nz2Guesses provided for the following unrecognized...r   r¤   éÿ   r  rœ   )rè   z+Each element of `guess` must be a scalar...Úhirò   r1   rZ   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   rZ   rþ   é   zCGuess for parameter `n` rounded.*|Guess for parameter `p` clipped.*g      @g      à¿z$Guess for parameter `loc` rounded...)rï   r¤   r¤   z"Guess for parameter `p` clipped...rï   z$Guess for parameter `loc` clipped...)rï   r¤   r   )
rn   rŸ   r    r   r}   r°   rŒ   Úshape_bounds_drž   rù   )rö   r¢   rè   rU   rU   rV   Útest_guess_ivµ  sL    6
66
888
88
8zTestFit.test_guess_ivc                 C   s¸  d}t tt ƒ}tj | j¡}tt|ƒ}t 	|| ¡}tj
t|ƒd dftjd�}|dt |¡  |d d…df< |dt |¡  |d d…df< d|d< d	|d
< |j|d Ž }	|j|d
 Ž }
t|| ƒ|	|
g }t|ddƒ�r|d d
… }t |	¡|d
< |j|||dœŽ}|d d
… }t|ddƒ�r4|j|||dœŽ}t ¡ �2}| td¡ tj||||| jd�}W d   ƒ n1 �sv0    Y  dddœ}|| }t|||j|fi | j¤d|i¤Ž d S )Nr   rZ   )Zdtypeg      $@rh   r   r   r  )g¼‰Ø—²Òœ<r¦   éÿÿÿÿZpmfFrª   r¨   zoverflow encountered)rX   Ú	optimizerr¯   Z_penalized_nlpsf)ÚmleÚmserì   )rÓ   r   r
   rq   rw   r¬   rx   rp   r   r–   ÚemptyÚlenZfloat64Úsignr“   ÚlistÚfloorrz   ÚnptZsuppress_warningsÚfilterr    r}   rø   rí   r±   Útols)rö   Ú	dist_namerX   ÚNZ	dist_datar²   r°   rä   r  ÚlocÚscaler´   rŒ   ÚsupÚresZ
nlff_namesrì   rU   rU   rV   Úbasic_fit_testä  s<    

ÿ&
ÿzTestFit.basic_fit_testr  c                 C   s   |   |d¡ d S )Nr  ©r!  ©rö   r  rU   rU   rV   Útest_basic_fit_mle  s    zTestFit.test_basic_fit_mlec                 C   s   |   |d¡ d S )Nr  r"  r#  rU   rU   rV   Útest_basic_fit_mse
  s    zTestFit.test_basic_fit_msec                 C   sj   d}t j | j¡}tj}d}|j|||dœŽ}dddœ}tj|||| jd�}t	|||j
|fi | j¤Ž d S )Nr   )rY   r’   rª   ©çš™™™™™¹?r¦   ©r  r  ©r  )rq   rw   r¬   rx   r   r¸   rz   r}   rø   rí   r±   r  ©rö   r  r²   r°   rä   rŒ   r  r   rU   rU   rV   Útest_arcsine  s    
zTestFit.test_arcsinec                 C   sl   d}t j | j¡}tj}d}|j|||dœŽ}ddddœ}tj|||| jd�}t	|||j
|fi | j¤Ž d S )Nr   )rY   r’   ç      @rª   r&  )r    r  r  r)  )rq   rw   r¬   rx   r   rF   rz   r}   rø   rí   r±   r  r*  rU   rU   rV   Ú
test_argus  s    zTestFit.test_argusc                 C   sl   d}t j | j¡}tj}d}|j|||dœŽ}ddddœ}tj|||| jd�}t	|||j
|fi | j¤Ž d S )Nr   )gÕ)Çç;ÿ?r’   r,  rª   r&  )Úcr  r  r)  )rq   rw   r¬   rx   r   r¹   rz   r}   rø   rí   r±   r  r*  rU   rU   rV   Útest_foldnorm)  s    zTestFit.test_foldnormc                 C   sj   d}t j | j¡}tj}d}|j|||dœŽ}dgd }tj|||| jd�}t	|||j
|fi | j¤Ž d S )Nr   )gÍÌÌÌÌÌü?g333333@gffffff@gffffff@rª   r&  r  r)  )rq   rw   r¬   rx   r   rE   rz   r}   rø   rí   r±   r  r*  rU   rU   rV   Útest_truncpareto7  s    
zTestFit.test_truncparetoc                 C   sj   d}t j | j¡}tj}d}|j|||dœŽ}dgd }tj|||| jd�}t	|||j
|fi | j¤Ž d S )Nr   )r¥   r   g      ü?r’   r,  rª   r&  rï   r)  )rq   rw   r¬   rx   r   r   rz   r}   rø   rí   r±   r  r*  rU   rU   rV   Útest_truncweibull_minE  s    
zTestFit.test_truncweibull_minc           
      C   sÈ   d}t j | j¡}tj}d\}}}|j|||||d�}dt  ddg¡i}tj|||| j	d�}	t
|	j|||ffi | j¤Ž tj}d\}}|j||||d�}tj||| j	d�}	t
|	j||ffi | j¤Ž d S )	Nr   ©r¦   çÍÌÌÌÌÌä?r   ©r  r]   r«   ró   r   é   r)  )g¿ž¯Y.Ô?r   )rq   rw   r¬   rx   r   r½   rz   r–   r}   rø   r   r±   r  Z	bernoulli)
rö   r  r²   r°   ró   rô   r  rŒ   r  r   rU   rU   rV   Útest_missing_shape_boundsS  s    
z!TestFit.test_missing_shape_boundsc                 C   s  d}t j | j¡}tj}d\}}|j|||d�}d}d|i}tj|||| jd�}	t	|	j
||ffi | j¤Ž d\}}|j|||d�}d	}
d
|
i}tj|||| jd�}	t	|	j
||ffi | j¤Ž tj}d\}}|j||||d�}||
dœ}tj|||| jd�}	t	|	j
||ffi | j¤Ž d S )Nr   )ç      ø?r   r4  )r   rï   r  r)  )r   r¥   )r  r]   r«   )rõ   rï   r  ©r7  r¥   ©r  r  r]   r«   r(  )rq   rw   r¬   rx   r   Únormrz   r}   rø   r   r±   r  )rö   r  r²   r°   r  r  rŒ   Z
loc_boundsr  r   Zscale_boundsrU   rU   rV   Útest_fit_only_loc_scaleh  s*    
zTestFit.test_fit_only_loc_scalec                 C   sð   d}t j | j¡}tj}d\}}|j||||d�}t ||¡}t|j	dfi | j
¤Ž ||f||fdœ}t |||¡}t|j	||ffi | j
¤Ž tj}d\}	}
}|j|	|
|||d�}dd	d
œ}tj|||| jd�}t|j	|	|
|ffi | j
¤Ž d S )Nr   r8  r9  rñ   r(  r2  r4  )r   r5  )r3  r3  rò   r)  )rq   rw   r¬   rx   r   r:  rz   r}   r   r±   r  r½   rø   )rö   r  r²   r°   r  r  rŒ   r   r  ró   rô   r  rU   rU   rV   Útest_everything_fixed…  s     

zTestFit.test_everything_fixedc           	      C   sz   d}t j | j¡}tj}d}|j|||dœŽ}| ¡ dks>J ‚g d¢}t |||¡}d}|j	 
|¡shJ ‚|jdu svJ ‚d S )Nr   )rï   r¤   rª   r   )©r   é   rñ   )r¤   r¦   z3Optimization converged to parameter values that areF)rq   rw   r¬   rx   r   rÀ   rz   Úminr}   r¢   Ú
startswithÚsuccess)	rö   r  r²   r°   rä   rŒ   r  r   r¢   rU   rU   rV   Útest_failurež  s    zTestFit.test_failurec                 C   s”   d}t j d¡}tj}d}g d¢}|j|||dœŽ}tj|||| jd�}t j|j	|fi | j
¤ŽrdJ ‚tj||||| jd�}t|j	|fi | j
¤Ž d S )NiÐ  l   18§%)r5  é   é   r   ))rZ   éÈ   )çffffffæ?éF   )g333333ó?éx   r  rª   r)  )rè   r  )rq   rw   r¬   r   rÊ   rz   r}   rø   Úallcloser±   r  r   )rö   r  r²   r°   r±   r  rŒ   r   rU   rU   rV   Ú
test_guess®  s    zTestFit.test_guessc                 C   sd   ddg}t j}dddœ}t j|||dd�}t|jjdd	d
� t j|||dd�}t|jjdd	d
� d S )NrZ   r  )r   r   ©ç:Œ0âŽyE>r¦   r(  r  ©r  rX   rþ   r”   r˜   r  gR¸…ëQ@)r   r•   r}   r   r±   r  )rö   rŒ   r°   r  Zres_mleZres_mserU   rU   rV   Útest_mse_accuracy_1À  s    
zTestFit.test_mse_accuracy_1c                 C   s¨   t j d¡}tj}d}|ddƒj||d�}dddœ}tj|||d	d
�}t  |¡}||d  |d  |d  }||d  |d  |d  }	||	| f}
t|j	|
dd� d S )Nl   4gûcävÐD r¦   rþ   é   rª   r  rK  r(  r  rM  r   r  r   ç-Cëâ6?©r_   )
rq   rw   r¬   r   r“   rz   r}   r   r   r±   )rö   r²   r°   ró   rŒ   r  r   r³   ÚaÚbr´   rU   rU   rV   Útest_mse_accuracy_2Ë  s    

zTestFit.test_mse_accuracy_2N),Ú__name__Ú
__module__Ú__qualname__r   r½   r°   rx   rq   rw   r¬   r²   rz   rŒ   rú   r  r‹   r_   r  rø   rü   r  r	  r  r!  rn   rÖ   ÚparametrizerÝ   r$  râ   r%  r+  r-  r/  r0  r1  r6  r;  r<  rB  rÙ   rJ  rN  rT  rU   rU   rU   rV   rî   b  s@   

3/"


rî   )xéA   é=   éQ   éX   éE   éY   é7   éT   éV   r`  éG   r[  r`  r[  éN   éC   é`   éB   éI   éK   é;   rb  r]  é?   éO   éL   rj  éU   éW   r\  éP   rb  rY  r`  rb  rh  r[  rk  é@   rY  r`  éM   rG  rh  r`  rh  rg  é\   éZ   rk  ro  rb  rg  rb  é:   rk  rg  rp  rq  éR   r[  ri  é6   ru  é9   rk  rk  rg  éJ   ru  rj  rp  rg  r]  rn  éD   r[  rg  éS   rg  ro  rg  rg  rb  rf  rc  rp  rx  ry  rd  rh  rh  ro  rm  rx  rl  ro  rq  é]   rG  ra  ro  r[  rz  ry  é<   rm  rp  rx  ru  r[  rq  rf  rm  rh  r[  r]  r|  rz  éH   c                   @   sÒ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
ejjdd„ ƒZdd„ Zdd„ Zej ddg d¢fdg d¢fdg d¢fg¡dd„ ƒZejjej dg d ¢¡d!d"„ ƒƒZd#d$„ Zd%d&„ Zd'S )(ÚTestGoodnessOfFitc                 C   sX  t j}g d¢}d}tjt|d�� tt  ¡ |ƒ W d   ƒ n1 sD0    Y  d}tjt|d��  t|g d¢gƒ W d   ƒ n1 s†0    Y  d}tjt|d�� t||dd� W d   ƒ n1 sÆ0    Y  d}tjt|d�� t||d	d
� W d   ƒ n1 �s0    Y  d}tjt|d�� t||dd� W d   ƒ n1 �sJ0    Y  d S )Nrý   z.`dist` must be a \(non-frozen\) instance of...rœ   z2`data` must be a one-dimensional array of numbers.z`statistic` must be one of...Úmm)Ú	statisticz"`n_mc_samples` must be an integer.g     D�@)Ún_mc_samplesz"'herring' cannot be used to seed aZherring)r«   )r   r:  rn   rž   Ú	TypeErrorr   rù   )rö   r°   r³   r¢   rU   rU   rV   Útest_gof_ivë  s"    ,.,.zTestGoodnessOfFit.test_gof_ivc                 C   s€   t j d¡}t}t  |¡t j|dd�dœ}ttj||d|d�}tj	|tjf i |¤Žj
dd�}t|j|jƒ t|j|jd	d
� d S )Nl   •H]VhŸ1 r   ©Zddofr(  Úks©Úknown_paramsr€  r«   Úexact©rX   ç{®Gázt?r˜   )rq   rw   r¬   Ú
examgradesr�   Ústdr   r   r:  ÚkstestÚcdfr   r€  Úpvalue©rö   r²   r³   r‡  r   r´   rU   rU   rV   Útest_against_ks  s    
ÿz!TestGoodnessOfFit.test_against_ksc                 C   s|   t j d¡}t}ttj|d|d�}t  |¡t j|dd�dœ}tj	|tjf i |¤Žj
dd�}t|j|jƒ t|jd	d
d� d S )Nl   ¤8<*}p~ r…  ©r€  r«   r   r„  r(  rˆ  r‰  g¨5Í;NÑ¡?rŠ  r˜   )rq   rw   r¬   r‹  r   r   r:  r�   rŒ  r�  rŽ  r   r€  r�  ©rö   r²   r³   r   r‡  r´   rU   rU   rV   Útest_against_lilliefors  s    z)TestGoodnessOfFit.test_against_lillieforsc                 C   s|   t j d¡}t}t  |¡t j|dd�dœ}ttj||d|d�}t 	|tjf i |¤Žj
¡}t|j|jƒ t|j|jdd� d S )	Nl   vj!$Ó'C r   r„  r(  Zcvmr†  rŠ  r˜   )rq   rw   r¬   r‹  r�   rŒ  r   r   r:  ZcramervonmisesrŽ  r   r€  r�  r�  rU   rU   rV   Útest_against_cvm  s    
ÿz"TestGoodnessOfFit.test_against_cvmc                 C   sV   t j d¡}t  dd¡}dddœ}ttj||d|d�}t|jd	ƒ t|j	d
dd� d S )Nl   jHJE›Ù3 r   ée   g…F6‚F@r>  r(  Úadr†  gV-²�ï@rg   rŠ  r˜   ©
rq   rw   r¬   Zaranger   r   r:  r   r€  r�  ©rö   r²   r³   r‡  r   rU   rU   rV   Útest_against_anderson_case_0   s    

ÿz.TestGoodnessOfFit.test_against_anderson_case_0c                 C   sT   t j d¡}t  dd¡}ddi}ttj||d|d�}t|jdƒ t|j	d	d
d� d S )Nl   H'èb4:“/ r   r–  r  gó‡{Uõ=@r—  r†  gu“Ví?r'  rŠ  r˜   r˜  r™  rU   rU   rV   Útest_against_anderson_case_1+  s    
ÿz.TestGoodnessOfFit.test_against_anderson_case_1c                 C   sT   t j d¡}t  dd¡}ddi}ttj||d|d�}t|jdƒ t|j	d	d
d� d S )Nl   £P�^Qq­Pr   r–  r  g�÷fë´HF@r—  r†  g¬Zd;@çš™™™™™™?rŠ  r˜   r˜  r™  rU   rU   rV   Útest_against_anderson_case_26  s    
ÿz.TestGoodnessOfFit.test_against_anderson_case_2c                 C   sT   t j d¡}tjjdddd|d�}ttj|d|d�}t|j	d	ƒ t|j
d
dd� d S )Nl   ÞiÖ·Uën gáBQ_ *÷?r   rZ   r©   r9  r—  r’  gÙÎ÷Sãá?g333333Ã?rŠ  r˜   )rq   rw   r¬   r   rÞ   rz   r   r:  r   r€  r�  )rö   r²   r³   r   rU   rU   rV   Útest_against_anderson_case_3A  s    ÿz.TestGoodnessOfFit.test_against_anderson_case_3c                 C   sv   t j d¡}tjdddd�jd|d�}ttj|d|d	�}tj|d
d�}t	|j
|jd ƒ t	|j|jd d dd� d S )Nl   /‚JGÏ gQûä8’ª?r¤   r7  r(  r   rª   r—  r’  Úgumbel_r)r°   r   r©   rŠ  r˜   )rq   rw   r¬   r   r5   rz   r   rŸ  Zandersonr   r€  Zcritical_valuesr�  Zsignificance_level)rö   r²   r³   r   r´   rU   rU   rV   Útest_against_anderson_gumbel_rK  s    ÿÿ
ÿz0TestGoodnessOfFit.test_against_anderson_gumbel_rc                 C   s„   t j d¡}g d¢}dddœ}tjtj||d|d�}t|jdd	d
� d|j  k rZdk s`n J ‚t|jddd� t|jddd� d S )Nl   ËfKW7/ßz )rO  r   éüÿÿÿé   rh   rï   r   r   r   r(  Úfillibenr†  gG=D£;ˆï?rP  r˜   r   çÍÌÌÌÌÌì?gF8‹§yˆï?gñhãˆµøô>rQ  gffffffì?çü©ñÒMb`?)	rq   rw   r¬   r   r   r:  r   r€  r�  )rö   r²   Úyr‡  r   rU   rU   rV   Útest_against_filliben_normW  s    
ÿ	z,TestGoodnessOfFit.test_against_filliben_normc                 C   sf   t j d¡}|jdddd�}tjtj|d|d�}dd	d
œ}tjtj||d|d�}t|j|jdd� d S )Nl   1gDùF¦3 r¦   r¤   r©   )r  r  r]   r£  r’  r   r   r(  r†  gVçž¯Ò<rQ  )	rq   rw   r¬   Únormalr   r   r:  r   r€  r“  rU   rU   rV   Útest_filliben_propertyn  s    
ÿ
ÿz(TestGoodnessOfFit.test_filliben_propertyÚcaseé   )gV-²í?g–C‹lçûí?çffffffî?g-²�ï§î?g¶óýÔxéî?é2   )gã¥›Ä °î?gáz®Gáî?g´Èv¾Ÿï?çÝ$�•Cï?g1¬Zdï?é_   )r®  g‡ÙÎ÷Sï?gÛù~j¼tï?gZd;ßO�ï?gÙÎ÷Sã¥ï?c           	      C   sp   t j d¡}|\}}| |¡}dddœ}tjtj||d|d�}t  g d¢¡}t |j|d ¡}t	||d	d
� d S )Nl   ý+ó^8r   r   r(  r£  r†  )rŠ  rõ   rœ  rg   r'  r©   r¥  r˜   )
rq   rw   r¬   r   r   r:  r–   ZscoreatpercentileÚnull_distributionr   )	rö   rª  r²   ró   r´   r³   r‡  r   ZpercentilesrU   rU   rV   Ú test_against_filliben_norm_tabley  s    

ÿz2TestGoodnessOfFit.test_against_filliben_norm_table))rï   gì„ü´¥î?g;ßO�—nÞ?)rO  g¢ØÇ„‡î?gà-� Ø?)rC  g-€hC/î?g\ AñcÌÍ?c                 C   sZ   |\}}}t j d¡}|j|d�}tjtj|d|d�}t|j|dd� t|j	|dd� d S )	Nl   ìvªT¨V�_ )r]   r£  r’  rP  rQ  g¸…ëQ¸Ž?r˜   )
rq   rw   r¬   r¨  r   r   Zrayleighr   r€  r�  )rö   rª  ró   Zref_statisticZ
ref_pvaluer²   r³   r   rU   rU   rV   Útest_against_ppccˆ  s    
ÿz#TestGoodnessOfFit.test_against_ppccc           	   	   C   s�  t j d¡}tjjdddd|d�}ddi}d	d
i}ddi}t j d¡}ttj|d||||d�}t  |j	j
jd¡rtJ ‚t|j	j
jd
ƒ t|j	j
jdƒ ddi}t j d¡}ttj|d||||d�}t j|j	j
j|j	j
jdd�ràJ ‚t j|j|jdd�røJ ‚t|j	j
jd
ƒ t|j	j
jdƒ dd
dœ}t j d¡}ttj|d||||d�}t|j	j
jdƒ t|j	j
jd
ƒ t|j	j
jdƒ t  |j|j¡�rŒJ ‚d S )Nì   ÏzøV8½t g˜}¡-Àr   rZ   r­  r9  r.  gÍÌÌÌÌÌ*@r  gö(\�Âu+@r  g33333³+À)r�  Úguessed_paramsÚ
fit_paramsr‡  r«   rL  rQ  )r.  r  )rq   rw   r¬   r   rÞ   rz   r   rà   rI  Z
fit_resultr±   r.  r   r  r  r°  )	rö   r²   r³   r´  rµ  r‡  rµ   r¶   Zres3rU   rU   rV   Útest_params_effects›  sT    ÿ
ý
ý
ÿ
ÿ


ýz%TestGoodnessOfFit.test_params_effectsc                 C   sn   dd„ }t j d¡}tjjd|d�}ttj|dddœ||d	�}g d
¢}g d¢}t  |j|¡}t	||dd� d S )Nc                S   s<   t j||d�}|  |¡}t j||ddd�}t j|d |d�S )Nrd   r   r   )re   ÚprependÚappendrZ   )rq   r   rŽ  rˆ   r®   )r°   rŒ   re   r³   r¦  r�   rU   rU   rV   Ú	greenwoodØ  s    
z:TestGoodnessOfFit.test_custom_statistic.<locals>.greenwoodr³  rï   rª   r   r   r(  r†  )rõ   rg   r'  gš™™™™™É?r§   gš™™™™™Ù?r¤   g333333ã?rF  gš™™™™™é?r¤  r¬  rb   )g¬ãø¡ÒˆÇ?gxµÜ™	†É?g&¤à)äÊ?gW>ËóàîÌ?gãûâR•¶Î?gEÕ¯t><Ð?gí¸áwÓ-Ñ?gLÆ1’=BÒ?gŠ­ i‰•Ó?g1³Ïc”gÕ?gV(Òýœ‚Ø?gŽ?QÙ°¦Û?g­hsœÛ„á?rŠ  r˜   )
rq   rw   r¬   r   r•   rz   r   Zquantiler°  r   )rö   r¹  r²   rŒ   Úresultrô   Zexact_quantilesZsimulated_quantilesrU   rU   rV   Útest_custom_statisticÍ  s    	þz'TestGoodnessOfFit.test_custom_statisticN)rU  rV  rW  rƒ  r‘  r”  r•  rš  r›  r�  rž  rn   rÖ   rØ   r   r§  r©  rX  r±  r²  r¶  r»  rU   rU   rU   rV   r~  é  s,   
	




þ
2r~  c                   @   s   e Zd Zdd„ ZdS )ÚTestFitResultc                    sø   t j d¡‰ tjjdddˆ d�}‡ fdd„}dd	g}tjtj|||d
�}zJdd l}d}tj	t
|d�� |jdd� W d   ƒ n1 s†0    Y  W n` ttfyò   t j d¡sîd}tj	t|d�� |jdd� W d   ƒ n1 sä0    Y  Y n0 d S )Nl   ‘u!u°\xD r   r   r©   rª   c                     s   t | i |¤dˆ i¤ŽS )Nrx   r   )r÷   Úkwargs©r²   rU   rV   r  ò  s    z-TestFitResult.test_plot_iv.<locals>.optimizerr=  rñ   r)  z!`plot_type` must be one of \{'...rœ   Úllama)Z	plot_typez
2.0.0.dev0z2matplotlib must be installed to use method `plot`.)rq   rw   r¬   r   r:  rz   r}   Ú
matplotlibrn   rž   rù   ZplotÚModuleNotFoundErrorÚImportErrorÚ__version__r@  )rö   rŒ   r  r  r   rÀ  r¢   rU   r¾  rV   Útest_plot_ivî  s    .zTestFitResult.test_plot_ivN)rU  rV  rW  rÄ  rU   rU   rU   rV   r¼  í  s   r¼  )N)rê   r   r¯   )4rk   Únumpyrq   Znumpy.testingrë   r  r   r   rn   Zscipyr   Zscipy.optimizer   Ztest_continuous_basicr   Z!scipy.stats._distn_infrastructurer	   Zscipy.stats._distr_paramsr
   Zscipy.statsr   rv   rs   ru   Zmle_failing_fitsr|   Zmm_failing_fitsZmm_slow_fitsri   r~   rR   rW   rÖ   rØ   rX  rŠ   r�   r—   r™   r£   r:  r½   r·   rÝ   râ   rå   ré   rí   rî   r‹  r~  r¼  rU   rU   rU   rV   Ú<module>   sl   þ
J
ÿÿ
-<
  ÿ
	    
  