a
    /'a`u                     @   s  d dl Zd dl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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z  d dl!m"Z" d	Z#g d
Z$dgZ%g dZ&g dZ'g dg d dg Z(e&e'e( dZ)g dZ*g dg d dg Z+e*e'e+ dZ,e-g dZ.ej/g dddZ0e1e0Z2dd Z3ej45de3 ej45ddgdd Z6ej45de3 d d! Z7d"d# Z8d$d% Z9ej4j:ej45d&e9 d'd( Z;ej45d)e"d*d+ Z<d,d- Z=d.d/ Z>d0d1 Z?d2d3 Z@d4d5 ZAd6d7 ZBd8d9 ZCd:d; ZDd<d= ZEd>d? ZFd@dA ZGdBdC ZHdDdE ZIdFdG ZJdHdI ZKdJdK ZLdLdM ZMdNdO ZNdPdQ ZOdRdS ZPdTdU ZQdVdW ZRdXdY ZSdZd[ ZTd\d] ZUej45d^g d_ej45d`e"dadb ZVdcdd ZWdS )e    N)raises)IntegrationWarning)stats)betainc   )check_normalizationcheck_momentcheck_mean_expectcheck_var_expectcheck_skew_expectcheck_kurt_expectcheck_entropycheck_private_entropycheck_entropy_vect_scalecheck_edge_supportcheck_named_argscheck_random_state_propertycheck_meth_dtypecheck_ppf_dtypecheck_cmplx_derivcheck_picklingcheck_rvs_broadcastcheck_freezing)distcont   )kstwogenexponksonerecipinvgaussvonmiseskappa4vonmises_line
gausshypernorminvgaussgeninvgaussgenhyperbolicstudentized_range)exponpow	exponweibr"   r   halfgennormgompertz	johnsonsb	johnsonsur    r   r   	kstwobignmielkencfnctpowerlognorm	powernormr   	trapezoidr   r!   levy_stablerv_histogram_instancer&   )argusr'   r(   r"   r   Zgenhalflogisticr)   r*   r+   r    r-   r   skewnormr3   Z
truncexponr   r!   r&   )alpha	betaprimeZbradfordburrburr12cauchycrystalballffisk
foldcauchy
genextreme	genpareto
halfcauchyinvgammakappa3levylevy_l
loglaplacelomaxr.   nakagamir/   
skewcauchyttukeylambda
invweibull)r%   r,   r   r   r0   paretor2   r1   pearson3ZMLEMM)r:   r'   r(   r"   r   r)   r*   r+   r,   r    r   r   r-   r4   r.   r/   ncx2r1   r2   rdistr   r3   r   r!   r&   )r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   r.   rJ   r/   r0   rK   rL   rN   )r%   r,   r   r   rO   r2   r1   )+r6   Zbetar9   Zchichi2ZcosinedgammadweibullZerlangr>   gammar"   Zgengammar%   r$   ZgennormrB   r)   rD   r   r   r-   rG   ZloggammaZlogisticZ
loguniformZmaxwellrJ   r/   r0   rS   r#   rP   rT   
reciprocalricer7   rL   rM   r   r!   r5   r&   )r      r[      r\   r\      r]   r]   r]   r   r   r   r   r      r^   r^   r^      r_   r_      r`   	   r`   )Zbinsc                  c   s|   t d d  tt fg D ]^\} }| dkr,qq| tv rLtj| |tjjdV  q| tv rltj| |tjj	dV  q| |fV  qd S )Nr4   Zmarks)
r   histogram_test_instancetupledistslowpytestparammarkslow	distxslowxslow)distnamearg rn   Flib/python3.9/site-packages/scipy/stats/tests/test_continuous_basic.pycases_test_cont_basicw   s     rp   zdistname,argzsn, n_fit_samples)i     c              
   C   s
  | dkrt j| d ztt| }W n ty<   | }d} Y n0 tjd}|j|||d}|	 }|
 }|j| \}	}
t|||	|
|||| d  t|||  t|||  t|||  t|||  t|||  t|||  t|||  t|||  d}| dkrt|j||| n| dkr,t| ||| d	}|j|j|j|j|jg}d
d
dddd}|| d}| dkrtd}n| dkrd}t||||| t|| t|| t|| | dvrt|||  |j dkrt!|| |j"j#tj$j#kr| dkrt%||tj$ t&' >}|(t)d |(t)d |(t*d t+|| W d    n1 sT0    Y  t,|| t-|| t.||| t/|| | t0vrt1|| | dkrt2|||  dD ]N}| t3| vrt4|||d | | | t5| vrt6|||d | | qd S )N	truncnormreasonr5   i )sizerandom_statezsample mean test{Gz?r$   )r   r   g            ?333333?      @)Zweibull_maxrG   rO   rM   r5         ?rN   r   r   )r\   )r-   r   r   r   z The occurrence of roundoff errorzExtremely bad integrandzinvalid valuerQ   )7rf   xfailgetattrr   	TypeErrornprandomRandomStatervsZmeanvarcheck_sample_meanvar_check_cdf_ppfcheck_sf_isf	check_pdfcheck_pdf_logpdfcheck_pdf_logpdf_at_endpointscheck_cdf_logcdfcheck_sf_logsfcheck_ppf_broadcastcheck_distribution_rvscdfpdflogpdflogcdflogsfgetr   r   r   r   r   numargscheck_vecentropy	__class___entropyZrv_continuousr   nptsuppress_warningsfilterr   RuntimeWarningr   check_retrieving_supportr   r   r   fails_cmplxr   check_ppf_privateskip_fit_testcheck_fit_argsskip_fit_fix_testcheck_fit_args_fix)rl   rm   snZn_fit_samplesdistfnrngr   smsvmvr8   Zlocscale_defaultsZmethsZspec_xxsupmethodrn   rn   ro   test_cont_basic   s    










*





r   c                 C   sv   zt t| }W n ty(   | }d} Y n0 t|j| s>J t|j|ddisXJ t|j|dd isrJ d S )Nr5   ru   rn   )r~   r   r   r   Zisscalarr   )rl   rm   r   rn   rn   ro   test_rvs_scalar   s    
r   c                   C   s   t tjd d S )N)r{   皙?)r   r   r4   rn   rn   rn   ro   &test_levy_stable_random_state_property   s    r   c               
   c   s   t dg} t ddg}td d  tt fg D ]\}}|dkr@q.|dkrpd}tj||dddtjj|ddV  q.|| v}||v}||||d	fV  |r|s.tj||dddtjjdV  q.d S )
Nr   r/   r4   r&   zstudentized_range is far too slow for this test and it is redundant with test_distributions::TestStudentizedRange::test_moment_against_mpTrs   rb   F)	setr   rc   rd   rf   rg   rh   rk   r}   )Zfail_normalizationZfail_higherrl   rm   msgZcond1Zcond2rn   rn   ro   cases_test_moments   s$    
 r   z3distname,arg,normalization_ok,higher_ok,is_xfailingc                 C   s   zt t| }W n ty(   | }d} Y n0 t }|td |rN|t |j|ddi\}}}	}
|rvt|||  |rt||||  t	|||||	|  t
|||||  t|||||
|  t|||||  t|||||  W d    n1 s0    Y  d S )Nr5   z9The integral is probably divergent, or slowly convergent.ZmomentsZmvsk)r~   r   r   r   r   r   r   r   r	   r   r
   r   check_loc_scaler   )rl   rm   Znormalization_okZ	higher_okZis_xfailingr   r   r   r   skrn   rn   ro   test_moments  s*    


r   zdist,shape_argsc                 C   s   | dv rt d | dv }tt| }td}td}|j}g }ddg}t|D ]B}	|	d fd|	d   }
|	||	 t|
  |
d	|	d  qR|||g t|| |||d
 d S )N)r"   r   r&   ztoo slow)r6   r9   rV   rW   Z	exponnormr%   r$   r4   r0   r#   rZ   r7   Zsemicircularr[   )r\   r   r\   r]   r|   r   d)rf   skipr~   r   r   zerosonesr   rangeappendinsertextendr   )distZ
shape_argsZ
shape_onlyZdistfunclocscalenargsZallargsZbshaper   Zshprn   rn   ro   test_rvs_broadcast/  s    



r   c                  C   st  t jd} tjjt dd| d}t |}t	t 
|dkd tjjdt d| d}t |}t	t 
|dkd tjjt dt d| d}t |}t	t 
|dkd tjjt dgdggt d| d}t | }t	t 
|dkd tttjjddgddggddgddggd tttjjg dddd tttjjg d	g d
dgdggd d S )N{   r   r   )r   r   rv   r   z0All the values are equal, but they shouldn't be!)r[   r\   r]   r   )r[   r[   )r   r   r   r   )r   r   r   r   r[   )r]   )r   r   r   r   Znormr   r   Zdiffr   assert_allr   arrayZravelassert_raises
ValueErrorrX   )r   valsr   rn   rn   ro   test_rvs_gh2069_regressionU  s,    


r   c                  C   s   t j} t| ddtjd t| ddtjd t| dtj dd t| dtj dd t| ddtjd t| ddtjd t| dtj dd t| dtj dd t| dtj dd d S )Nr   r   gA?g|N?)r   rr   r   assert_almost_equalr   r   infZ_cdf)Ztnrn   rn   ro   test_nomodify_gh9900_regressionr  s    r   c                  C   s   t g d} t g d}dd t| |D }ttjd| || dd t| |D }ttjd| || dd t| |D }ttj| | || d	d t| |D }ttj|| || d S )
N)r   r[   r\   r]   r   r^   )r`      r       r   0   c                 S   s    g | ]\}}t jd ||qS )r_   r   rY   r   .0_aZ_brn   rn   ro   
<listcomp>      z4test_broadcast_gh9990_regression.<locals>.<listcomp>r_   c                 S   s    g | ]\}}t jd ||qS r|   r   r   rn   rn   ro   r     r   r   c                 S   s    g | ]\}}t j|||qS rn   r   r   rn   rn   ro   r     r   c                 S   s    g | ]\}}t j|||qS rn   r   r   rn   rn   ro   r     r   )r   r   zipr   assert_array_almost_equalr   rY   r   )abansrn   rn   ro    test_broadcast_gh9990_regression  s    r   c                   C   sB   t jjtg ddtg d d tjtg ddd d S )N)      @       @      ?rx   )g      @rz   g      @r   )r   r   r   r   )r   rr   r   r   r   r   rn   rn   rn   ro    test_broadcast_gh7933_regression  s    r   c                  C   sb   t jddd } t jt d t df }dd t| |D }tj| |t j}t	|| d S )Nr[   y             @Y@2   3   c                 S   s"   g | ]\}}t j||tjqS rn   )r   rr   r   r   r   )r   Z_xr   rn   rn   ro   r     r   z*test_gh2002_regression.<locals>.<listcomp>)
r   Zr_r   r   r   rr   r   r   r   r   )r   r   Zexpectedr   rn   rn   ro   test_gh2002_regression  s
    r   c                  C   s(   d} t jdt| g| d gg d S )Ng(\@r{   )r   rA   ppfr   r   )crn   rn   ro   test_gh1320_regression  s    r   c                  C   s   t jd g d} ddt d d  }ddt d d  }tttjtjj| dd\}}t	j
||d	d
 t	j
|| |d	d
 d S )Ni  )r   r   r   r   r   皙?r[   r\   r   rR   r   r]   )decimal)r   r   Zseedsqrtsupertyper   Zuniformfitr   r   )r   r   r   r   r   rn   rn   ro   test_method_of_moments  s     r   c                 C   s2   t |rt|||| t |r.t||| d S N)r   isfinitecheck_sample_meancheck_sample_var)r   rm   r   r   r   r   r   r   rn   rn   ro   r     s    

r   c                 C   sr   |d }|d | t | }| | t|d|   }td| d||||   }t|dkd|||| f  d S )Nr   r   r{   rw   z'mean fail, t,prob = %f, %f, m, sm=%f,%f)floatr   r   r   r   r   )r   r   nZpopmeandfZsvarrL   Zprobrn   rn   ro   r     s    
r   c                 C   sL   |d }|d |  | }t jj||d }t|dkd|||| f  d S )Nr   r[   rw   z(var fail, t, pval = %f, %f, v, sv=%f, %f)r   ZdistributionsrU   sfr   r   )r   r   Zpopvarr   rU   pvalrn   rn   ro   r     s    
r   c                 C   s>   g d}t j| j| j|g|R  g|R  |t|d d d S )N)gMbP?r{   g+?z - cdf-ppf roundtripr   err_msg)r   r   r   r   DECIMAL)r   rm   r   valuesrn   rn   ro   r     s    "r   c                 C   s|   t j| j| jg dg|R  g|R  g dt|d d t j| jddgg|R  d| jddgg|R   t|d d d S )Nr   r{   ?z - sf-isf roundtripr   r   r  r   z - cdf-sf relationship)r   r   r   isfr   r   )r   rm   r   rn   rn   ro   r     s    &
r   c                 C   s   | j dg|R  }d}| j|g|R  }|dk s8|dkrR|d }| j|g|R  }| j|| g|R  | j|| g|R   | d }|d7 }tj||t|d d S )	Nr{   gư>g-C6?g     @r   r   z - cdf-pdf relationshipr   )r   r   r   r   r   r   )r   rm   r   medianZepsZpdfvZcdfdiffrn   rn   ro   r     s    r   c                 C   s   t g d}| j|g|R  }|t | }| j|g|R  }| j|g|R  }||dkt |@  }|t | }|d7 }tjt ||d|d d S )N)r   ry   皙?r{   333333?ffffff?皙?r    - logpdf-log(pdf) relationshipr_   r   )	r   r   r   r   r   r   r   r   log)r   argsr   pointsr   r   r   rn   rn   ro   r     s    r   c           	      C   s   t ddg}| j|g|R  }|t | }t }g d}|D ]}|jt|d qD| j|g|R  }| j	|g|R  }||dkt |@  }|t | }|d7 }tj
t ||d|d W d    n1 s0    Y  d S )Nr   r   )z)divide by zero encountered in true_dividez!divide by zero encountered in logz#divide by zero encountered in powerz invalid value encountered in addz%invalid value encountered in subtractz%invalid value encountered in multiplycategorymessager	  r_   r   )r   r   r   r   r   r   r   r   r   r   r   r
  )	r   r  r   r  r   r   Zsuppress_messsagesr   r   rn   rn   ro   r   "  s    
r   c                 C   s   t g d}| j|g|R  }|t | }| j|g|R  }| j|g|R  }||dk }|t | }|d7 }tjt ||d|d d S )N)	g        r   ry   r  r{   r  r  r  r   r   z - logsf-log(sf) relationshipr_   r   )	r   r   r   r   r   r   r   r   r
  )r   r  r   r  r   r   r   rn   rn   ro   r   =  s    r   c                 C   s   t g d}| j|g|R  }|t | }| j|g|R  }| j|g|R  }||dk }|t | }|d7 }tjt ||d|d d S )N)	r   r   ry   r  r{   r  r  r  r   r   z - logcdf-log(cdf) relationshipr_   r   )	r   r   r   r   r   r   r   r   r
  )r   r  r   r  r   r   r   rn   rn   ro   r   J  s    r   c                    sj   d g   }|r" fdd|D }| j dg|R  }| j dg|R  }|d7 }tj||g  d|d d S )Nr   c                    s   g | ]}t |g  qS rn   )r   r   )r   _Znum_repeatsrn   ro   r   \  r   z'check_ppf_broadcast.<locals>.<listcomp>r{   z - ppf multipler_   r   )r   r   r   )r   rm   r   r  r  Zmediansrn   r  ro   r   W  s    r   c                 C   st   t j|| |dd\}}||k rpt j| | |dd\}}t||kdt| d t| d t| d t|  d S )Ni  )r  NzD = z	; pval = z
; alpha = z
args = )r   Zkstestr   r   str)r   r  r8   r   Dr   rn   rn   ro   r   d  s     r   c                 C   s   t | j| | j|  d S r   )r   Zassert_equalZ
vecentropyr   )r   r  rn   rn   ro   r   w  s    r   c           	      C   sJ   d\}}| j |||d\}}t|| | | t|| | | d S )N)      $@r  r   r   )r   r   assert_allclose)	r   rm   r   r   r   r   r   ZmtZvtrn   rn   ro   r   {  s    r   c                 C   s>   | j tg dg|R  }ttt| |d  d S )Nr  zppf private is nan)Z_ppfr   r   r   r   anyZisnan)r   rm   r   Zppfsrn   rn   ro   r     s    r   c                 C   sH   d\}}| j | }| j |||d}tt|| | t| d S )N)r   r[   r  )Zsupportr   r   r   r   )r   r  r   r   ZsuppZsupp_loc_scalern   rn   ro   r     s    
r   c              	   C   s   t jddr t J}|jtdd |jtdd | j||d}| j|d|d}W d    n1 sf0    Y  W d    n1 s0    Y  tt|d	t| k tt|d	t| k d S )
Nignorer   !The shape parameter of the erlangr  zfloating point number truncatedr   Zpowell)Z	optimizerr   r[   	r   Zerrstater   r   r   r   r   r   len)r   rm   r   r   r   r   vals2rn   rn   ro   r     s    Lr   c           
   	   C   s  t jdd t }|jtdd | j|d|d}| j|d|d}tt|d	t| k t|d
 dk t|d dk tt|d	t| k t|dkr| j||d |d}tt|d	t| k t|d |d k t|dkrD| j||d |d}tt|d	t| k t|d |d k t|d	kr| j||d	 |d}	tt|	d	t| k t|	d	 |d	 k W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr  r  r  r  r   )Zflocr   r   )Zfscaler   r[   r   r   )Zf0r   )f1r   )f2r   r  )
r   rm   r   r   r   r   r  Zvals3Zvals4Zvals5rn   rn   ro   r     s,    r   r   )r   r   r   r   r   r   r   r  zdistname, argsc           	         s   t t|}t ||  |dkr0| dr0ddg}nddg}dd |D }d	dg}d
dg} |g|R ||d}tj| fddt|g|||R  D ddd d S )NrN   r
  rx   r[   r   r   c                 S   s   g | ]}|gd  qS )r[   rn   )r   r   rn   rn   ro   r     r   z+test_methods_with_lists.<locals>.<listcomp>r   r   g)\(?r  c                    s   g | ]} | qS rn   rn   )r   r   r>   rn   ro   r     r   g+=gvIh%,=)ZrtolZatol)r~   r   
startswithr   r  r   )	r   rl   r  r   r   Zshape2r   r   resultrn   r!  ro   test_methods_with_lists  s    


$r$  c                  C   s>   t jddd} t| tsJ t jdd}t|ts:J d S )Nr   r   r]   r`   )r   r:   Zmoment
isinstancer   r?   )Zvals0Zvals1rn   rn   ro   (test_burr_fisk_moment_gh13234_regression  s    r&  )XZnumpyr   Znumpy.testingZtestingr   rf   r   r   Zscipy.integrater   Zscipyr   Zscipy.specialr   Zcommon_testsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zscipy.stats._distr_paramsr   r   re   rj   Zskip_fit_test_mleZslow_fit_test_mmZfail_fit_test_mmr   Zskip_fit_fix_test_mleZfail_fit_fix_test_mmr   r   r   Z	histogramZ_hZrv_histogramrc   rp   rh   Zparametrizer   r   r   r   ri   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$  r&  rn   rn   rn   ro   <module>   s   P			
	

[

%


