o
    Eb                     @   s   d dl Z d dlZd dlmZ d dl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ee edZ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S )    N)assert_allclose)stats   )distcont)i  i  i'  g      ?g      ?)burrchi2
gausshypergenexpongengammakappa4ksonekstwomielkencfncx2Zpearson3powerlognorm
truncexpontukeylambdavonmiseslevy_stable	trapezoidstudentized_range)-ZalphaZ	betaprimer   Zburr12ZcauchyZchir   ZcrystalballZdgammaZdweibullfZfatiguelifeZfiskZ
foldcauchyZ
genextremer
   ZgenhyperbolicZgennormZ	genparetoZ
halfcauchyZinvgammaZ
invweibullZ	johnsonsuZkappa3r   r   ZlevyZlevy_lr   Z
loglaplaceZlomaxr   Znakagamir   Znctr   Zparetor   Z	powernormZ
skewcauchytr   Ztriangr   r   )ZargusZexponpowZ	exponweibr   r	   ZgenhalflogisticZhalfgennormZgompertzZ	johnsonsbr   Z	kstwobignZrecipinvgaussZskewnormr   r   Zvonmises_line)MMMLEZerlangc                  c   s&    t D ]\} }| tvr| |fV  qd S N)r   skip_fit)distnamearg r    </usr/lib/python3/dist-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitA   s   
r"   zdistname,argmethodr   r   c              	   C   s  | t | v r+z
ttjd  }W n ty   d}Y nw |r+d|  }|d7 }t| tt| }t	
|ddgg}t	t	|t t	|jd tgd}tD ]Z}t	jd	 t	jd
d |j|d|i}	|j|	|d}
W d    n1 sww   Y  |
| }t	t	|	 t tg|d< t	t	|
rtdt	t	||kr d S qOdt| }|dt|
 7 }|dt| 7 }td|j | )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)r#   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_percentZfullZnumargs
thresh_min	fit_sizesZrandomZseedZerrstatervsfitabsZmeananyZisnanAssertionErrorr'   strname)r   r   r#   r0   msgZdistfnZtrueargZdiffthresholdZfit_sizer7   ZestZdiffZtxtr    r    r!   test_cont_fitK   sH   


r?   c                 C   s4   t t| }||dd  }t|||d|  d d S )Nr)   z"poor mle fit of (loc, scale) in %s)atolerr_msg)r1   r   r8   r   )r=   dataZdesiredr@   dZactualr    r    r!   _check_loc_scale_mle_fit|   s
   

rD   c                  C   s6   t g d} td| ddgd td| ddgd d S )N))\(?{Gz?rF   rF   Gz?rG   rG   g       @ZuniformrE   gGz?MbP?expongp=
ף?)r2   ZarrayrD   )rB   r    r    r!   "test_non_default_loc_scale_mle_fit   s   rJ   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   r%   r%   r%   r%   r   )Zflocr$   rH   )r@   N)r   rI   r8   r   )rB   Zphatr    r    r!   test_expon_fit   s   rK   r   )r,   Znumpyr2   Znumpy.testingr   r/   Zscipyr   Ztest_continuous_basicr   r6   r4   r5   Zmle_failing_fitsZmm_failing_fitsZmm_slow_fitsr*   r   r"   ZmarkZslowZparametrizer?   rD   rJ   rK   r    r    r    r!   <module>   s.    

.