U
    »mœdp‘  ã                x   @   s4  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 d
ddgZdZdZdddddddddddddddddd d!d"d#gZd$d%dd&d'd(dd)d*d+d,d-d.d/d0dd1d2d3d4d5d6d7d8ddd9d:d d;d<dd=dd>dd?dd@dAdBd!dCdd"dd#g/ZdDdEdFdddGdHdIdJddKdLdddMgZee edNœZdOd1gZdPdQ„ Zejjej  dReƒ ¡ej  dSdTdUg¡dVdW„ ƒƒƒZ!dždXdY„Z"dZd[„ Z#d\d]„ Z$d^d_„ Z%ej  d`e
j&dafe
j'dbfg¡dcdd„ ƒZ(dedf„ Z)dgdh„ Z*didj„ Z+ej  dke+ƒ ¡dldm„ ƒZ,dŸdpdq„Z-G drds„ dsƒZ.dtdudvdwdxdydzd{d|d{d}dvd{dvd~dd€d�d‚dƒd„d}dxd…d†d‡d…dˆd‰dwdŠd}dtd{d}dƒdvd†d‹dtd{dŒd�dƒd{dƒd‚dŽd�d†dŠd}d‚d}d�d†d‚d‹dŒd‘dvd„d’d‘d“d†d†d‚d”d‘d…d‹d‚dxd‰d•dvd‚d–d‚dŠd‚d‚d}d�d~d‹d”d•ddƒdƒdŠdˆd”d‡dŠdŒd—d�d|dŠdvd–d•d˜dˆd‹d”d‘dvdŒd�dˆdƒdvdxd˜d–d™gxZ/G dšd›„ d›ƒZ0G dœd�„ d�ƒZ1dS ) é    N)Úassert_allcloseÚassert_equal)Ústats©Údifferential_evolutioné   )Údistcont)ÚFitError)Údistdiscrete)Úgoodness_of_fitéè  éˆ  i'  ç      Ð?g      è?ÚburrÚchi2Ú
gausshyperÚgenexponÚgengammaÚkappa4ÚksoneÚkstwoÚmielkeÚncfÚncx2Úpearson3ÚpowerlognormÚ
truncexponÚtruncparetoÚtukeylambdaÚvonmisesÚlevy_stableÚ	trapezoidÚtruncweibull_minÚstudentized_rangeÚalphaÚ	betaprimeÚburr12ZcauchyÚchiÚcrystalballÚdgammaÚdweibullÚfÚfatiguelifeÚfiskÚ
foldcauchyÚ
genextremeÚgenhyperbolicÚgennormÚ	genparetoZ
halfcauchyÚinvgammaÚ
invweibullÚ	johnsonsuÚkappa3ZlevyZlevy_lÚ
loglaplaceÚlomaxÚnakagamiÚnctÚparetoÚ	powernormZ
skewcauchyÚtÚtriangÚargusÚexponpowÚ	exponweibÚgenhalflogisticÚhalfgennormÚgompertzÚ	johnsonsbÚ	kstwobignÚrecipinvgaussÚvonmises_line)ÚMMÚMLEÚerlangc                  c   s$   t D ]\} }| tkr| |fV  qd S )N)r   Úskip_fit)ÚdistnameÚarg© rO   úS/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/stats/tests/test_fit.pyÚcases_test_cont_fitI   s    rQ   zdistname,argÚmethodrJ   rI   c              
   C   sˆ  | t | krXzttjd ƒ }W n tk
r8   d}Y nX |rXd|  }|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��$ |j|d|iŽ}	|j|	|d�}
W 5 Q R X |
| }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Úsize©rR   éþÿÿÿ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ÚfitÚabsÚmeanÚanyÚisnanÚAssertionErrorrV   ÚstrÚname)rM   rN   rR   r`   ÚmsgZdistfnZtrueargZdiffthresholdZfit_sizerk   ZestÚdiffÚtxtrO   rO   rP   Útest_cont_fitS   sB    


ÿþÿ

rw   c                 C   s4   t t| ƒ}| |¡dd … }t|||d|  d� d S )NrY   z"poor mle fit of (loc, scale) in %s)ÚatolÚerr_msg)ra   r   rl   r   )rs   ÚdataZdesiredrx   ÚdÚactualrO   rO   rP   Ú_check_loc_scale_mle_fit„   s
    
ÿr}   c               
   C   sB   t  ddddddddg¡} td| ddgdƒ td| dd	gdƒ d S )
Ng)\�Âõ(ð?g{®Gázü?g®Gázþ?ç       @Úuniformg®Gáz®ï?çü©ñÒMbP?Úexpong¤p=
×£ç?)rb   Úarrayr}   )rz   rO   rO   rP   Ú"test_non_default_loc_scale_mle_fit‹   s    rƒ   c                  C   s:   ddddddddg} t jj| dd�}t|ddgdd� dS )zgh-6167r   rT   )ZflocrS   r€   ©rx   N)r   r�   rl   r   )rz   ZphatrO   rO   rP   Útest_expon_fit‘   s    r…   c               
   C   s^   t  t  d¡t  d¡g¡} d}tjt|d��( t t¡� t	j
 | ¡ W 5 Q R X W 5 Q R X d S )Né   é   z0Optimization converged to parameters that are...©Úmatch)rb   ZconcatenateZzerosZonesr_   Úraisesr	   ÚwarnsÚRuntimeWarningr   Úbetarl   )rz   ÚmessagerO   rO   rP   Útest_fit_error˜   s    ÿr�   zdist, params)ç      à?ç      @)é
   g333333Ó?rT   c                 C   sz   t j d¡}t| dƒr| j}n| j}| j|d|dœŽ}||f|žŽ  ¡  }|  ||¡}|  	||¡}t
||ƒ t
||ƒ d S )Niðgž:Úpdféd   ©rW   Úrandom_state)rb   rh   Údefault_rngÚhasattrZlogpdfZlogpmfrk   ÚsumÚnnlfZ_penalized_nnlfr   )ÚdistÚparamsÚrngZlogpxfÚxÚrefÚres1Úres2rO   rO   rP   Útest_nnlf_and_related_methods    s    

r¢   c               ,   c   sL  ddddddddh} 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/d0d1d2d3d4h,}d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOh}t tt ƒD ]�}|| ksÌt|tƒsìdP}tj|tjj|dQ�dR�V  q¶||k�rdS}tj|tjj	|dQ�dR�V  q¶||k�r@dT}tj|tjj
|dQ�dR�V  q¶|V  q¶d S )UNr?   Úfoldnormr   r"   r   r    r#   r   r&   rE   Úbradfordr-   r   r@   ÚrdistÚnorminvgaussr%   Úpowerlawr;   r5   r7   Ú
wrapcauchyÚweibull_maxÚarcsineÚbinomÚricer   r+   r4   r2   Únbinomr6   ÚlognormrC   r   r$   r=   r(   r,   r9   rF   rD   r*   r8   ÚinvgaussrG   r'   r.   r<   r1   Úrandintr/   Únchypergeom_fisherÚnchypergeom_walleniusr   r   r   r0   Úgeninvgaussr   Úskellamr   Ú	hypergeomÚ
nhypergeomÚzipfianr   Ú	truncnormr   r�   Ú
loguniformÚ
reciprocalr!   r:   r   Ú	betabinomrA   rB   r   r>   ztested separately©Úreason©Zmarksútoo slow (>= 0.25s)útoo slow (>= 1.0s))Údictr
   r   Ú
isinstancerr   r_   ÚparamÚmarkÚskipÚslowÚxslow)Úskip_basic_fitÚslow_basic_fitÚxslow_basic_fitr›   r½   rO   rO   rP   Úcases_test_fit_mle³   sª       ÿ
                              ÷
                  ù	

rË   c               7   c   sš  ddddddddd	d
dh} 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@dAdBh7}dCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^h}d_h}t tt ƒD ]º}|| ksòt|tƒ�sd`}tj|tjj|da�db�V  qÚ||k�r<dc}tj|tjj	|da�db�V  qÚ||k�rfdd}tj|tjj
|da�db�V  qÚ||k�rŽtj de¡}tj||db�V  qÚ|V  qÚd S )fNr    r#   r   Úskewnormr¦   r   r³   r   r0   r?   r   Zwaldr/   ZanglitZsemicircularrF   rª   Zgenlogisticr   r-   r   Z	exponnormZmaxwellr8   Zlaplace_asymmetricr®   r.   r2   r<   r7   r£   rG   r@   r¤   r©   rD   r*   r   Úweibull_minr5   Zloggammar6   r,   r;   r4   r$   rK   r)   r   r(   r9   r"   r=   rH   r>   r¨   Úgammar   r'   rE   rA   rB   r°   r¶   rµ   r»   r   rC   r3   r¯   r§   r&   r!   r   r+   r   r   r¥   rº   r¹   r%   r¬   r1   r   r¸   r   r:   r   r�   r   r   r·   r²   r±   r´   zFails. Oh well.r¼   r¾   r¿   rÀ   zignore::RuntimeWarning)rÁ   r
   r   rÂ   rr   r_   rÃ   rÄ   rÅ   rÆ   rÇ   Úfilterwarnings)rÈ   rÉ   rÊ   Zwarns_basic_fitr›   r½   rÄ   rO   rO   rP   Úcases_test_fit_mseØ   sÐ     ú                                      ó                   ú


rÐ   c                  c   s8   t tƒ ¡ D ]&\} }t| tƒr| dkr(q| |fV  qd S )N>   r#   rG   )rÁ   r   ÚitemsrÂ   rr   )rM   ÚshapesrO   rO   rP   Úcases_test_fitstart	  s    
ÿrÓ   zdistname, shapesc              	   C   s^   t t| ƒ}tj d¡}| d¡}tjddd�� | |¡}W 5 Q R X |j|d d… Ž sZt‚d S )NiV år’   rU   )ÚinvalidÚdividerY   )	ra   r   rb   rh   r—   rj   Z	_fitstartZ	_argcheckrq   )rM   rÒ   r›   r�   rz   ÚguessrO   rO   rP   Útest_fitstart  s    

r×   çH¯¼šò×z>rš   c           
      C   s>   t | |ƒ}|||ƒ}|||ƒ}	||	k s:tjj||	||d� d S )N)Úrtolrx   )ra   rb   Útestingr   )
r›   rz   Zparams1Zparams0rÙ   rx   Ú	nlff_nameZnlffZnlff1Znlff0rO   rO   rP   Úassert_nlff_less_or_close  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&ejj'd-d.„ ƒZ(d/d0„ Z)d1d2„ Z*d3S )4ÚTestFitl   »�Vaé   r�   r”   r•   ©r   r’   ©r   r   ©ÚnÚpçš™™™™™©?g{®Gáz„?)rx   rÙ   c                 O   s   t |ddi|—ŽS )Nri   r   r   )ÚselfÚargsÚkwdsrO   rO   rP   Úopt1  s    zTestFit.optc              	   C   s4   d}t jt|d�� t d| j| j¡ W 5 Q R X d S )Nz `dist` must be an instance of...rˆ   r’   )r_   rŠ   Ú
ValueErrorr   rl   rz   Úshape_bounds_a©rå   rŽ   rO   rO   rP   Útest_dist_iv4  s    zTestFit.test_dist_ivc              	   C   sÞ   d}t jt|d��  t | jdddgg| j¡ W 5 Q R X d}t jt|d��" t | jdddtjg| j¡ W 5 Q R X t jt|d��" t | jdddtj	g| j¡ W 5 Q R X t jt|d�� t | jddd	g| j¡ W 5 Q R X d S )
Nz'`data` must be exactly one-dimensional.rˆ   r   rT   é   z.All elements of `data` must be finite numbers.Ú1Ú2Ú3)
r_   rŠ   ré   r   rl   r›   rê   rb   ÚnanÚinfrë   rO   rO   rP   Útest_data_iv9  s    $&&zTestFit.test_data_ivc              	   C   sl  d}ddddœ}t jt|d�� t | j| j|¡ W 5 Q R X d}ddg}t jt|d�� t | j| j|¡ W 5 Q R X d	}dd
g}t jt|d�� t | j| j|¡ W 5 Q R X ddg}t jt|d�� t | j| j|¡ W 5 Q R X d}dg}t jt|d�� t | j| j|¡ W 5 Q R X d}ddddg}t jt|d�� t | j| j|¡ W 5 Q R X d}dddœ}t jt|d�� t | j| j|¡ W 5 Q R X d}ddg}t jt|d�� t | j| j|¡ W 5 Q R X d}ddg}t jt|d�� t | j| j|¡ W 5 Q R X d}t jt|d�� t | j| j¡ W 5 Q R X t	j
 t	j
fdg}t jt|d�� t | j| j|¡ W 5 Q R X 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...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`)r_   r‹   rŒ   r   rl   r›   rz   rŠ   ré   rb   rò   )rå   rŽ   Úshape_boundsÚboundsrO   rO   rP   Útest_bounds_ivF  sR    
zTestFit.test_bounds_ivc              	   C   sz  d}ddddœ}t jt|d�� tj| j| j| j|d� W 5 Q R X d}dd	d
œ}t jt	|d�� tj| j| j| j|d� W 5 Q R X ddg}t jt	|d�� tj| j| j| j|d� W 5 Q R X ddgg}t jt	|d�� tj| j| j| j|d� W 5 Q R X d}dg}t jt	|d�� tj| j| j| j|d� W 5 Q R X d}ddddg}t jt	|d�� tj| j| j| j|d� W 5 Q R X d}ddd
œ}t jt|d�� tj| j| j| j|d� W 5 Q R X d}dddg}t jt|d�� tj| j| j| j|d� W 5 Q R X d}ddd
œ}t jt|d�� tj| j| j| j|d� W 5 Q R X d}dddg}t jt|d�� tj| j| j| j|d� W 5 Q R X d S )Nz2Guesses provided for the following unrecognized...r   r�   éÿ   rõ   rˆ   )rÖ   z+Each element of `guess` must be a scalar...Úhirá   r+   rT   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...rí   é   z"Guess for parameter `n` rounded...g      @g      à¿z$Guess for parameter `loc` rounded...rÞ   z"Guess for parameter `p` clipped...z$Guess for parameter `loc` clipped...)
r_   r‹   rŒ   r   rl   r›   rz   Úshape_bounds_drŠ   ré   )rå   rŽ   rÖ   rO   rO   rP   Útest_guess_ivy  sL    "
""
"""
"
"
"
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 ¡ �(}| td¡ tj||||| jd�}W 5 Q R X dddœ}|| }t|||j|f| jd|i—Ž d S )Nr   rT   )Zdtypeg      $@rY   r   r   rô   )g¼‰Ø—²Òœ<r’   éÿÿÿÿZpmfFr•   r“   zoverflow encountered)rR   Ú	optimizerrš   Z_penalized_nlpsf)ÚmleÚmserÛ   )rÁ   r   r
   rb   rh   r—   ri   ra   r   r‚   ÚemptyÚlenZfloat64Úsignr   ÚlistÚfloorrk   ÚnptZsuppress_warningsÚfilterrŒ   rl   rè   rÜ   rœ   Útols)rå   Ú	dist_namerR   ÚNZ	dist_datar�   r›   rÒ   r÷   ÚlocÚscalerŸ   rz   ÚsupÚresZ
nlff_namesrÛ   rO   rO   rP   Úbasic_fit_test¨  s<    

ÿ
ÿzTestFit.basic_fit_testr
  c                 C   s   |   |d¡ d S )Nr   ©r  ©rå   r
  rO   rO   rP   Útest_basic_fit_mleÊ  s    zTestFit.test_basic_fit_mlec                 C   s   |   |d¡ d S )Nr  r  r  rO   rO   rP   Útest_basic_fit_mseÎ  s    zTestFit.test_basic_fit_msec                 C   sh   d}t j | j¡}tj}d}|j|||dœŽ}ddddœ}tj|||| jd�}t	|||j
|f| jŽ d S )Nr   )rS   r~   ç      @r•   ©çš™™™™™¹?r’   )r'   r  r  ©rÿ   )rb   rh   r—   ri   r   r?   rk   rl   rè   rÜ   rœ   r	  ©rå   r  r�   r›   rÒ   rz   rö   r  rO   rO   rP   Ú
test_argusÒ  s    zTestFit.test_argusc                 C   sh   d}t j | j¡}tj}d}|j|||dœŽ}ddddœ}tj|||| jd�}t	|||j
|f| jŽ d S )Nr   )gÕ)Çç;ÿ?r~   r  r•   r  )Úcr  r  r  )rb   rh   r—   ri   r   r£   rk   rl   rè   rÜ   rœ   r	  r  rO   rO   rP   Útest_foldnormà  s    zTestFit.test_foldnormc                 C   sf   d}t j | j¡}tj}d}|j|||dœŽ}dgd }tj|||| jd�}t	|||j
|f| jŽ d S )Nr   )gÍÌÌÌÌÌü?g333333@gffffff@gffffff@r•   r  rû   r  )rb   rh   r—   ri   r   r   rk   rl   rè   rÜ   rœ   r	  r  rO   rO   rP   Útest_truncparetoî  s    
zTestFit.test_truncparetoc                 C   sf   d}t j | j¡}tj}d}|j|||dœŽ}dgd }tj|||| jd�}t	|||j
|f| jŽ d S )Nr   )r‘   r   g      ü?r~   r  r•   r  rÞ   r  )rb   rh   r—   ri   r   r"   rk   rl   rè   rÜ   rœ   r	  r  rO   rO   rP   Útest_truncweibull_minü  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| jŽ tj}d\}}|j||||d�}tj||| j	d�}	t
|	j||ff| jŽ d S )	Nr   ©r’   çÍÌÌÌÌÌä?r   ©r  rW   r–   râ   r   é   r  )g¿ž¯Y.Ô?r   )rb   rh   r—   ri   r   r«   rk   r‚   rl   rè   r   rœ   r	  Z	bernoulli)
rå   r  r�   r›   râ   rã   r  rz   rö   r  rO   rO   rP   Útest_missing_shape_bounds
  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| jŽ d\}}|j|||d�}d}
d	|
i}tj|||| jd�}	t	|	j
||ff| jŽ tj}d
\}}|j||||d�}||
dœ}tj|||| jd�}	t	|	j
||ff| jŽ d S )Nr   )ç      ø?r   r!  )r   rÞ   r  r  )r   r‘   )r  rW   r–   r  ©r$  r‘   ©r  r  rW   r–   ©r  r  )rb   rh   r—   ri   r   Únormrk   rl   rè   r   rœ   r	  )rå   r  r�   r›   r  r  rz   Z
loc_boundsr÷   r  Zscale_boundsrO   rO   rP   Útest_fit_only_loc_scale  s*    
zTestFit.test_fit_only_loc_scalec                 C   sä   d}t j | j¡}tj}d\}}|j||||d�}t ||¡}t|j	df| j
Ž ||f||fdœ}t |||¡}t|j	||ff| j
Ž tj}d\}	}
}|j|	|
|||d�}dd	d
œ}tj|||| jd�}t|j	|	|
|ff| j
Ž d S )Nr   r%  r&  rà   r'  r  r!  )r   r"  )r   r   rá   r  )rb   rh   r—   ri   r   r(  rk   rl   r   rœ   r	  r«   rè   )rå   r  r�   r›   r  r  rz   r  r÷   râ   rã   rö   rO   rO   rP   Útest_everything_fixed<  s     

zTestFit.test_everything_fixedc           	      C   s|   d}t j | j¡}tj}d}|j|||dœŽ}| ¡ dks>t‚dddg}t 	|||¡}d}|j
 |¡sjt‚|jd	ksxt‚d S )
Nr   )rÞ   r�   r•   r   ©r   é   rà   )r�   r’   z3Optimization converged to parameter values that areF)rb   rh   r—   ri   r   r­   rk   Úminrq   rl   rŽ   Ú
startswithÚsuccess)	rå   r  r�   r›   rÒ   rz   r÷   r  rŽ   rO   rO   rP   Útest_failureU  s    
zTestFit.test_failurec                 C   s’   d}t j | j¡}tj}d}ddddg}|j|||dœŽ}tj|||| jd�}t j	|j
|f| jŽrft‚tj||||| jd	�}t|j
|f| jŽ d S )
NiÐ  )r"  é   é   r   )rT   éÈ   )gffffffæ?éF   )g333333ó?éx   rô   r•   r  )rÖ   rÿ   )rb   rh   r—   ri   r   r¶   rk   rl   rè   Úallcloserœ   r	  rq   r   )rå   r  r�   r›   rœ   r÷   rz   r  rO   rO   rP   Ú
test_guesse  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 )NrT   rû   )r   r   ©ç:Œ0âŽyE>r’   r'  r   ©r÷   rR   rí   r€   r„   r  gR¸…ëQ@)r   r�   rl   r   rœ   r  )rå   rz   r›   r÷   Zres_mleZres_mserO   rO   rP   Útest_mse_accuracy_1v  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ô   r8  r'  r  r:  r   rþ   r   g-Cëâ6?©rÙ   )
rb   rh   r—   r   r   rk   rl   Úsortr   rœ   )rå   r�   r›   râ   rz   r÷   r  rž   ÚaÚbrŸ   rO   rO   rP   Útest_mse_accuracy_2�  s    

zTestFit.test_mse_accuracy_2N)+Ú__name__Ú
__module__Ú__qualname__r   r«   r›   ri   rb   rh   r—   r�   rk   rz   rê   rü   rx   rÙ   r	  rè   rì   ró   rø   rý   r  r_   rÄ   ÚparametrizerË   r  rÐ   r  r  r  r  r  r#  r)  r*  r0  rÇ   r7  r;  rA  rO   rO   rO   rP   rÝ   &  s>   

3/"


rÝ   éA   é=   éQ   éX   éE   éY   é7   éT   éV   éG   éN   éC   é`   éB   éI   éK   é;   é?   éO   éL   éU   éW   éP   é@   éM   r4  é\   éZ   é:   éR   é6   é9   éJ   éD   éS   é]   é<   éH   c                   @   sd   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S )ÚTestGoodnessOfFitc              	   C   sô   t j}dddg}d}tjt|d�� tt  ¡ |ƒ W 5 Q R X d}tjt|d�� t|dddggƒ W 5 Q R X d}tjt|d�� t||dd	� W 5 Q R X d
}tjt|d�� t||dd� W 5 Q R X d}tjt|d�� t||dd� W 5 Q R X d S )Nr   rT   rí   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(  r_   rŠ   Ú	TypeErrorr   ré   )rå   r›   rž   rŽ   rO   rO   rP   Ú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 |Žj
dd�}t|j|jƒ t|j|jd	d
� d S )Nl   •H]VhŸ1 r   ©Zddofr'  Úks©Úknown_paramsrm  r–   ÚexactrX   ç{®Gázt?r„   )rb   rh   r—   Ú
examgradesrn   Ústdr   r   r(  ÚkstestÚcdfr   rm  Úpvalue©rå   r�   rž   rt  r  rŸ   rO   rO   rP   Útest_against_ks¹  s    
 ÿz!TestGoodnessOfFit.test_against_ksc                 C   sx   t j d¡}t}ttj|d|d�}t  |¡t j|dd�dœ}tj	|tjf |Žj
dd�}t|j|jƒ t|jd	d
d� d S )Nl   ¤8<*}p~ rr  ©rm  r–   r   rq  r'  ru  rX   g¨5Í;NÑ¡?rv  r„   )rb   rh   r—   rw  r   r   r(  rn   rx  ry  rz  r   rm  r{  )rå   r�   rž   r  rt  rŸ   rO   rO   rP   Útest_against_lillieforsÃ  s    z)TestGoodnessOfFit.test_against_lillieforsc                 C   sx   t j d¡}t}t  |¡t j|dd�dœ}ttj||d|d�}t 	|tjf |Žj
¡}t|j|jƒ t|j|jdd� d S )	Nl   vj!$Ó'C r   rq  r'  Zcvmrs  rv  r„   )rb   rh   r—   rw  rn   rx  r   r   r(  Zcramervonmisesrz  r   rm  r{  r|  rO   rO   rP   Ú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'  Úadrs  gV-²�ï@rä   rv  r„   ©
rb   rh   r—   Zaranger   r   r(  r   rm  r{  ©rå   r�   rž   rt  r  rO   rO   rP   Ú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‚  rs  gu“Ví?r  rv  r„   rƒ  r„  rO   rO   rP   Ú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‚  rs  g¬Zd;@gš™™™™™™?rv  r„   rƒ  r„  rO   rO   rP   Útest_against_anderson_case_2ì  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   rT   r”   r&  r‚  r~  gÙÎ÷Sãá?g333333Ã?rv  r„   )rb   rh   r—   r   rÌ   rk   r   r(  r   rm  r{  )rå   r�   rž   r  rO   rO   rP   Útest_against_anderson_case_3÷  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�   r$  r'  r   r•   r‚  r~  Úgumbel_r)r›   r   r”   rv  r„   )rb   rh   r—   r   r/   rk   r   r‰  Zandersonr   rm  Zcritical_valuesr{  Zsignificance_level)rå   r�   rž   r  rŸ   rO   rO   rP   Útest_against_anderson_gumbel_r  s    ÿ ÿ
ÿz0TestGoodnessOfFit.test_against_anderson_gumbel_rc           	   	   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¡rtt‚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àt‚t j|j|jdd�røt‚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Œt‚d S )Nl   ÏzøV8½t g˜}¡-Àr   rT   é2   r&  r  gÍÌÌÌÌÌ*@r  gö(\�Âu+@r  g33333³+À)rn  Úguessed_paramsÚ
fit_paramsrt  r–   r9  r=  )r  r  )rb   rh   r—   r   rÌ   rk   r   rÍ   r6  Z
fit_resultrœ   r  rq   r   r  r  Znull_distribution)	rå   r�   rž   rŒ  r�  rt  r    r¡   Zres3rO   rO   rP   Útest_params_effects  s^    ÿ
 ý
 ý ÿ
 ÿ


 ýz%TestGoodnessOfFit.test_params_effectsN)rB  rC  rD  rp  r}  r  r€  r…  r†  r‡  rˆ  r_   rÄ   rÆ   rŠ  rŽ  rO   rO   rO   rP   rk  Ÿ  s   
	


rk  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
�}z6dd l}d}tj	t
|d�� |jdd� W 5 Q R X W nB ttfk
rÀ   d}tj	t|d�� |jdd� W 5 Q R X Y nX d S )Nl   ‘u!u°\xD r   r   r”   r•   c                     s   t | |dˆ i—ŽS )Nri   r   )ræ   Úkwargs©r�   rO   rP   rÿ   E  s    z-TestFitResult.test_plot_iv.<locals>.optimizerr+  rà   r  z!`plot_type` must be one of \{'...rˆ   Úllama)Z	plot_typez2matplotlib must be installed to use method `plot`.)rb   rh   r—   r   r(  rk   rl   Ú
matplotlibr_   rŠ   ré   ZplotÚModuleNotFoundErrorÚImportError)rå   rz   rÿ   r÷   r  r“  rŽ   rO   r‘  rP   Útest_plot_ivA  s    zTestFitResult.test_plot_ivN)rB  rC  rD  r–  rO   rO   rO   rP   r�  @  s   r�  )N)rØ   r   rš   )2r\   Únumpyrb   Znumpy.testingrÚ   r  r   r   r_   Zscipyr   Zscipy.optimizer   Ztest_continuous_basicr   Z!scipy.stats._distn_infrastructurer	   Zscipy.stats._distr_paramsr
   Zscipy.statsr   rg   rd   rf   Zmle_failing_fitsZmm_failing_fitsZmm_slow_fitsrZ   rL   rQ   rÄ   rÆ   rE  rw   r}   rƒ   r…   r�   r(  r«   r¢   rË   rÐ   rÓ   r×   rÜ   rÝ   rw  rk  r�  rO   rO   rO   rP   Ú<module>   sÊ  
ë                                ÷
       ýþ
.
ÿÿ
%1
  ÿ
	  q                                                                                                  ù
 "