a
    /'a                     @   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   9lib/python3.9/site-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitA   s    r!   zdistname,argmethodr   r   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. |j|d|i}	|j|	|d}
W d    n1 s0    Y  |
| }t	t	|	 t tg|d< t	t	|
r<tdqt	t	||kr qqd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)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"   r/   msgZdistfnZtrueargZdiffthresholdZfit_sizer6   ZestZdiffZtxtr   r   r    test_cont_fitK   sB    


,

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)r0   r   r7   r   )r<   dataZdesiredr?   dZactualr   r   r    _check_loc_scale_mle_fit|   s
    
rC   c                  C   s6   t g d} td| ddgd td| ddgd d S )N))\(?{Gz?rE   rE   Gz?rF   rF   g       @ZuniformrD   gGz?MbP?expongp=
ף?)r1   ZarrayrC   )rA   r   r   r    "test_non_default_loc_scale_mle_fit   s    rI   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#   rG   )r?   N)r   rH   r7   r   )rA   Zphatr   r   r    test_expon_fit   s    rJ   )N)r+   Znumpyr1   Znumpy.testingr   r.   Zscipyr   Ztest_continuous_basicr   r5   r3   r4   Zmle_failing_fitsZmm_failing_fitsZmm_slow_fitsr)   r   r!   ZmarkZslowZparametrizer>   rC   rI   rJ   r   r   r   r    <module>   s,   
.
