B
    0d                @   sp
  d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZmZmZmZmZmZ ddlZddlmZ ddlZddlZddlmZ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# ddl$m%Z% dd
l&m'Z' ddl(Zddl)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z: ej;j<dkZ=ejdkoze> dkZ?ddgZ@d|ddZAdd ZBdd ZCdd ZDdd ZEd d! ZFd"d# ZGd$d% ZHejIJd&d'd(d)d*d+d,gd-d. ZKd/d0 ZLd1d2 ZMejIJd3d4d5d6d7d8d9d:d;d<d=d>d?d@dAgdBdC ZNG dDdE dEZOG dFdG dGZPG dHdI dIZQG dJdK dKZRG dLdM dMZSG dNdO dOZTG dPdQ dQZUG dRdS dSZVG dTdU dUZWG dVdW dWZXG dXdY dYZYG dZd[ d[ZZG d\d] d]Z[G d^d_ d_Z\G d`da daZ]G dbdc dcZ^G ddde deZ_G dfdg dgZ`G dhdi diZaG djdk dkZbG dldm dmZcG dndo doZdG dpdq dqZeG drds dsZfG dtdu duZgG dvdw dwZhG dxdy dyZiG dzd{ d{ZjG d|d} d}ZkG d~d dZlG dd dZmG dd dZnG dd dZoG dd dZpdd Zqdd Zrdd ZsG dd dZtG dd dZuG dd dZvG dd dZwG dd dZxG dd dZyG dd dZzG dd dZ{G dd dZ|G dd dZ}G dd dZ~G dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZdd ZG dd dZG dd dZG dd dZG dd dZG dd dZG ddÄ dÃZG ddń dŃZG ddǄ dǃZG ddɄ dɃZG dd˄ d˃ZG dd̈́ d̓ZG ddτ dσZG ddф dуZG ddӄ dӃZG ddՄ dՃZG ddׄ d׃Zddل Zddۄ Zdd݄ Zdd߄ ZejIje=dddd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d Zdd Zdd Zdd Zdd	 Zd
d ZejIJddeddgfdeddgfdeddgfdeddgfgdd Zdd Zdd Zdd  Zd!d" Zd#d$ ZG d%d& d&e%jZG d'd( d(e%jZG d)d* d*e%jZG d+d, d,e%jZG d-d. d.ZG d/d0 d0ZejIje=d1dd2d3 Zd4d5 Zd6d7 Zd8d9 ZÐd:d; ZĐd<d= ZŐd>d? ZƐd@dA ZǐdBdC ZȐdDdE ZɐdFdG ZʐdHdI ZːdJdK Z̐dLdM ZejIJdNdOdOdPdQdRdSgfdTdUdPdQdRdSgfdVdWddOdXdTdYgfgdZd[ Zΐd\d] ZG d^d_ d_ZАd`da ZG dbdc dcZG ddde deZG dfdg dgZԐdhdi ZejIJdje2e/ dkdl Z֐dmdn ZejIJdodpdqgdrds ZejIJdtdudvdwgdxdy Zِdzd{ ZdS (}  z!
Test functions for stats module
    N)	assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_allcloseassert_assert_warnsassert_array_lesssuppress_warnings)raises)	typecodesarray)rec_append_fields)special)check_random_state)IntegrationWarningquad	trapezoidcumulative_trapezoid)
argsreduce)xlogy	polygammaentr)distcontinvdistcont   )distdiscreteinvdistdiscrete)FitDataError
_argus_phi)rootfmin)productdarwinx86_64tukeylambdapearson3c             C   s*   |d krd| |f }t t| ||d d S )Nz%s does not have attribute %s)msg)r   hasattr)abr'    r+   V/var/www/html/venv/lib/python3.7/site-packages/scipy/stats/tests/test_distributions.py_assert_hasattr3   s    r-   c               C   s   t tjjd d S )NZf_gen)r-   scipystatsdistributionsr+   r+   r+   r,   test_api_regression9   s    r1   c             C   s8   t j| ||d}t||||dtj |   d S )N)locscale   )r/   vonmisesr   pdfnumpypi)kLsxvmr+   r+   r,   check_vonmises_pdf_periodic>   s    r>   c             C   s@   t j| ||d}t||d ||dtj |  d  d S )N)r2   r3   r   r4   )r/   r5   r   cdfr7   r8   )r9   r:   r;   r<   r=   r+   r+   r,   check_vonmises_cdf_periodicC   s    r@   c              C   sf   t tjjj} dd tD }dd tD }dddddg}|| | }t td	d
 |}| |ksbtd S )Nc             S   s   g | ]}|d  qS )r   r+   ).0distr+   r+   r,   
<listcomp>J   s    z0test_distributions_submodule.<locals>.<listcomp>c             S   s   g | ]}|d  qS )r   r+   )rA   rB   r+   r+   r,   rC   K   s    rv_discreterv_continuousrv_histogramentropytrapzc             S   s   t | d S )N<)str
startswith)r;   r+   r+   r,   <lambda>R       z.test_distributions_submodule.<locals>.<lambda>)	setr.   r/   r0   __all__r   r   filterAssertionError)actualZ
continuousZdiscreteotherexpectedr+   r+   r,   test_distributions_submoduleH   s    rU   c              C   s   xzdD ]r} xlddt jddgD ]X}t| dd| t| dd| t| dd| t| dd| t| dd| t| dd| qW qW d S )N)g?r   e   r   r   
   d   )r7   r8   r>   r@   )r9   r<   r+   r+   r,   test_vonmises_pdf_periodicW   s    
rY   c               C   s&   t tjjtj  t tjjtj d S )N)r   r/   Zvonmises_liner)   npr8   r*   r+   r+   r+   r,   test_vonmises_line_supportc   s    r[   c              C   s   t d} t| dd d S )Ni   r   g      ?)r/   r5   r   r?   )r=   r+   r+   r,   test_vonmises_numericalh   s    
r\   zx, kappa, expected_pdf)g?g{Gz?g|65?)g?g      9@g?U?)g?i   g"?)g       @g{Gz?gDfI?)g       @g      9@g1<)g       @i   g        c             C   s    t j| |}t||dd d S )NgV瞯<)rtol)r/   r5   r6   r   )r<   kappaexpected_pdfr6   r+   r+   r,   test_vonmises_pdfw   s    r`   c             K   sZ   | j |f|}tt| | j |f|}|||}|||}||ksVtj||ddsVtdS )aS  
    This utility function checks that the log-likelihood (computed by
    func) of the result computed using dist.fit() is less than or equal
    to the result computed using the generic fit method.  Because of
    normal numerical imprecision, the "equality" check is made using
    `np.allclose` with a relative tolerance of 1e-15.
    gV瞯<)r]   N)fitsupertyperZ   allcloserQ   )rB   datafunckwdsZmle_analyticalZnumerical_optZll_mle_analyticalZll_numerical_optr+   r+   r,   _assert_less_or_close_loglike   s    

rh   c          	   C   s2  ddg}| j r4t| j d}|dddgd | 7 }tt|tt|}ddd	g}tjt	d
d | j
|f| W d Q R X tjt	dd | 
tjg W d Q R X tjt	dd | 
tjg W d Q R X tjtdd | j
|dd W d Q R X tjtdd$ | j
|fdgt|d    W d Q R X d S )Nflocfscale,f0f1f2r   r4      z3All parameters fixed. There is nothing to optimize.)matchz#The data contains non-finite valueszUnknown keyword arguments:)Zextra_keywordzToo many positional arguments.)shapeslensplitdictziprZ   arangepytestr   RuntimeErrorra   naninf	TypeError)rB   paramZnshapesZ	all_fixedre   r+   r+   r,   assert_fit_warnings   s&    



r}   rB   alpha	betaprimefatiguelifeinvgammainvgauss
invweibullZ	johnsonsblevylevy_llognormZgilbratZpowerlognormrayleighZwaldc             C   s   t t}||  }tt| } t| j| jf| d t| j| jf| t	j
  t| j| jf| d t| j| jf| t	j
  dS )zgh-6235r   N)rt   r   getattrr/   r   r6   r)   r   logpdfrZ   rz   r*   )rB   dctargsr+   r+   r,   test_support   s    
r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestRandIntc             C   s   t jd d S )Ni  )rZ   randomseed)selfr+   r+   r,   setup_method   s    zTestRandInt.setup_methodc             C   s   t jjdddd}tt|dk t|dk@  tt|dk t jjdddd}tt|dk t|jj	t
d k t jdd}t|dk|dk @  tt|tjtt|d	 t ddd
}t|jj	t
d k d S )N      rX   )size)r4   2   
AllInteger   .   )r'   ro   )r/   randintrvsr   r7   allrr   shapedtypecharr   
isinstanceZ
ScalarTypereprrc   )r   valsvalr+   r+   r,   test_rvs   s     zTestRandInt.test_rvsc             C   sF   t jdd }t |dk|dk @ dd}tj|dd}t|| d S )Nr   $   r   r   g{Gz?)r7   r_wherer/   r   pmfr   )r   r9   outr   r+   r+   r,   test_pdf   s    zTestRandInt.test_pdfc             C   sd   t ddd}t|}t|dk|dkgd|d d d	 gd}tj|dd}t||d
d d S )Nr   r   rX   r   r   g      ?g      @r   g      9@   )decimal)	rZ   linspacer7   floorselectr/   r   r?   r   )r   r<   r9   r   r   r+   r+   r,   test_cdf   s
    
*zTestRandInt.test_cdfN)__name__
__module____qualname__r   r   r   r   r+   r+   r+   r,   r      s   r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )	TestBinomc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r      s    zTestBinom.setup_methodc             C   s   t jjdddd}tt|dkt|dk@  tt|dk t|jjt	d k t jdd}tt
|t t ddd}tt
|tj t|jjt	d k d S )NrW   g      ?)r4   r   )r   r   r   ro   )r/   binomr   r   r7   r   r   r   r   r   r   intndarray)r   r   r   r+   r+   r,   r      s     zTestBinom.test_rvsc             C   sD   t jddd}t jddd}t|dddd t|dddd d S )NrX   r   r   g      ?gV瞯<)r]   atol)r/   r   r   r   )r   vals1vals2r+   r+   r,   test_pmf   s    zTestBinom.test_pmfc             C   s~   t dd}tdddg}tt|| }| }t|| t dd}| }t|d t dd}| }t|d d S )Nr4   g      ?g      ?g        g      ?)	r/   r   rZ   r   sumr   rG   r   r   )r   r*   
expected_p
expected_hhr+   r+   r,   test_entropy   s    

zTestBinom.test_entropyc          	   C   sT   t  B t dt ttjddd d ttjddd d W d Q R X d S )Nerrorr4   r   )np)	warningscatch_warningssimplefilterRuntimeWarningr   r/   r   meanstd)r   r+   r+   r,   test_warns_p0  s    
zTestBinom.test_warns_p0N)r   r   r   r   r   r   r   r   r+   r+   r+   r,   r      s
   r   c               @   s   e Zd Zdd ZdS )TestArcsinec             C   s&   t jddg}t|tjtjg d S )Nr   r   )r/   Zarcsiner6   r   rZ   rz   )r   r   r+   r+   r,   test_endpoints  s    zTestArcsine.test_endpointsN)r   r   r   r   r+   r+   r+   r,   r   	  s   r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestBernoullic             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestBernoulli.setup_methodc             C   s   t jjddd}tt|dkt|dk@  tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k d S )Ng      ?)r4   r   )r   r   r   r   ro   )r/   	bernoullir   r   r7   r   r   r   r   r   r   r   r   )r   r   r   r+   r+   r,   r     s     zTestBernoulli.test_rvsc             C   st   t d}dtd dtd  }| }t|| t d}| }t|d t d}| }t|d d S )Ng      ?g      пg      ?g        g      ?)r/   r   rZ   logrG   r   r   )r   r*   r   r   r+   r+   r,   r   !  s    




zTestBernoulli.test_entropyN)r   r   r   r   r   r   r+   r+   r+   r,   r     s   r   c               @   s   e Zd Zdd ZdS )TestBradfordc             C   s:   d}t dd}tj||}tj||}t|| d S )Ng?i)rZ   logspacer/   Zbradfordr?   ppfr   )r   cr<   qxxr+   r+   r,   test_cdf_ppf3  s
    zTestBradford.test_cdf_ppfN)r   r   r   r   r+   r+   r+   r,   r   1  s   r   c               @   s    e Zd ZdZdd Zdd ZdS )TestChignT9;c             C   s"   t jdd}t|| jdd d S )NrW      gV瞯<)r]   )r/   chisfr   CHI_SF_10_4)r   r;   r+   r+   r,   test_sfA  s    zTestChi.test_sfc             C   s"   t j| jd}t|ddd d S )Nr   rW   gV瞯<)r]   )r/   r   isfr   r   )r   r<   r+   r+   r,   test_isfE  s    zTestChi.test_isfN)r   r   r   r   r   r   r+   r+   r+   r,   r   ;  s   r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )
TestNBinomc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r   K  s    zTestNBinom.setup_methodc             C   s   t jjdddd}tt|dk tt|dk t|jjt	d k t jdd}tt
|t t ddd}tt
|tj t|jjt	d k d S )NrW   g      ?)r4   r   )r   r   r   ro   )r/   nbinomr   r   r7   r   r   r   r   r   r   r   r   )r   r   r   r+   r+   r,   r   N  s    zTestNBinom.test_rvsc             C   sH   t ttjdddtjddd tjjddd}t|d d S )Ni  i  gp=
ף?r   r   )	r   rZ   expr/   r   logpmfr   r.   r   )r   r   r+   r+   r,   r   Y  s    zTestNBinom.test_pmfN)r   r   r   r   r   r   r+   r+   r+   r,   r   J  s   r   c               @   st   e Zd Zdd Zejjdd Zejjdd Zejjdd Z	ejjd	d
 Z
dd Zdd Zdd Zdd ZdS )TestGenInvGaussc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r   c  s    zTestGenInvGauss.setup_methodc             C   s:   t dd}t |jddd|j\}}t|dkd d S )Ngffffff@g      ?i  i  )r   random_stateg?T)r/   geninvgausskstestr   r?   r   )r   gig_r   r+   r+   r,   test_rvs_with_mode_shiftf  s    z(TestGenInvGauss.test_rvs_with_mode_shiftc             C   s:   t dd}t |jddd|j\}}t|dkd d S )Ng?g      ?i  i  )r   r   g?T)r/   r   r   r   r?   r   )r   r   r   r   r+   r+   r,   test_rvs_without_mode_shiftm  s    z+TestGenInvGauss.test_rvs_without_mode_shiftc             C   s:   t dd}t |jddd|j\}}t|dkd d S )Ng?g?i  i  )r   r   g?T)r/   r   r   r   r?   r   )r   r   r   r   r+   r+   r,   test_rvs_new_methodt  s    z#TestGenInvGauss.test_rvs_new_methodc             C   s<   dd }t |ddd t |ddd t |ddd d S )Nc             S   s0   t | |}|jddd}t ||jd dkS )Ni  i  )r   r   r   g?)r/   r   r   r   r?   )r   r*   r   r   r+   r+   r,   my_ks_check}  s    z4TestGenInvGauss.test_rvs_p_zero.<locals>.my_ks_checkr   g?Tg?g      ?)r   )r   r   r+   r+   r,   test_rvs_p_zero{  s    zTestGenInvGauss.test_rvs_p_zeroc             C   s6   t tddjddddtddjddd  d S )Ng      r4   rW   i  )r   r   r   g      ?)r   r/   r   r   )r   r+   r+   r,   test_rvs_negative_p  s    z#TestGenInvGauss.test_rvs_negative_pc             C   s   t jjddddd}tt j|ddgdd dkd	 d
tddd }}t jj|dd| |d}t|t 	|| t jj
|dd| |d}t|t 	|
| d S )Ni  g      r   i  )r   r   r*   r   r   )r   g333333?TrX   g{Gz?rW   )r   r*   r3   )r/   r   r   r   r   rZ   r   r6   r   r   r?   )r   Zigmur<   Zpdf_igZcdf_igr+   r+   r,   test_invgauss  s     zTestGenInvGauss.test_invgaussc             C   sF   t ddddddddd	d
g
}t ddd}t|tj|dd d S )Ng;g8y8?g\}Z?ghܲ<?g&Khdd?g7!L?g	Cf?g_诱?g>0|?gRq?g{Gz?r   rW   g      ?r   )rZ   r   r   r   r/   r   r6   )r   vals_Rr<   r+   r+   r,   
test_pdf_R  s    
zTestGenInvGauss.test_pdf_Rc             C   s0   t tjdddd t tjdddd d S )Nr   g      ?g    >Ar   r4   )r   r/   r   r6   )r   r+   r+   r,   test_pdf_zero  s    zTestGenInvGauss.test_pdf_zeroN)r   r   r   r   rw   markslowr   r   r   r   r   r   r   r   r+   r+   r+   r,   r   b  s   r   c               @   sT   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
dd ZdS )TestGenHyperbolicc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestGenHyperbolic.setup_methodc       
      C   s|   t ddddddddd	d
g
}d\}}}d\}}||| || f}tj|||d}t ddd}	t||	|ddd d S )NgF^T=g{X'=gNunƢsy>g7!t?gɫzI?g̸?g?gq6.?gmPZz?g:PgN?)r4   r4   r   )g      ?g      ?)r2   r3   irW   r   gvIh%<=)r   r]   )rZ   r   r/   genhyperbolicr   r   r6   )
r   r   lmbdar~   betar   deltar   ghr<   r+   r+   r,   
test_pdf_r  s    
zTestGenHyperbolic.test_pdf_rc       
      C   s|   t ddddddddd	d
g
}d\}}}d\}}||| || f}tj|||d}t ddd}	t||	|ddd d S )Ng=R0W<=gEB=g#Nb>g_PG>g! 1Or?gUM?g u./?gfy?gl5\?gkV?)r4   r4   r   )g      ?g      ?)r2   r3   irW   r   gư>)r   r]   )rZ   r   r/   r   r   r   r?   )
r   r   r   r~   r   r   r   r   r   r<   r+   r+   r,   
test_cdf_r  s    
zTestGenHyperbolic.test_cdf_rc                s`   ddddg}d\}}}d\|| | f  fddt d	d
D }t||ddd d S )Ng@쐧@g@쐧 @g܊B@gvGăi@)r4   r4   r   )g      ?g      ?c                s$   g | ]}t j d |qS ))r2   r3   )r/   r   moment)rA   i)r   r   r   r+   r,   rC     s   z4TestGenHyperbolic.test_moments_r.<locals>.<listcomp>r   r   r   gvIh%<=)r   r]   )ranger   )r   r   r   r~   r   Zvals_usr+   )r   r   r   r,   test_moments_r  s    	
z TestGenHyperbolic.test_moments_rc       
      C   sd   d\}}}d\}}||| || f}t j|||d}t |jddd|j\}}	t|	dkd d S )	N)r4   r4   r   )g      ?g      ?)r2   r3   i  i  )r   r   g?T)r/   r   r   r   r?   r   )
r   r   r~   r   r   r   r   r   r   r   r+   r+   r,   r     s    
zTestGenHyperbolic.test_rvsc       	      C   s   t ddd}t |dt t jj d }}dt | }}| d ||f}tj|||d}t |	d|	dd	d d t j
f }t||tj||dd
d d S )Nr   r   rW   r4   r   )r2   r3   g{Gz?gGz?r   gư>)r   r]   )rZ   r   float_powerfinfofloat32epssqrtr/   r   r   newaxisr   r6   t)	r   dfr~   r   r   r   r   r   r<   r+   r+   r,   
test_pdf_t  s     (zTestGenHyperbolic.test_pdf_tc       	      C   s   dt t jjd  }}}d\}}|||f}tj|||d}t |d|ddd d t jf }t	|
|tj
|ddd	 d S )
Ng      r   )r   r   )r2   r3   g{Gz?gGz?r   gư>)r   r]   )rZ   r  r  r  r/   r   r   r   r  r   r6   cauchy)	r   r   r~   r   r   r   r   r   r<   r+   r+   r,   test_pdf_cauchy  s    
(z!TestGenHyperbolic.test_pdf_cauchyc       	      C   s   t ddd}t t jj}d\}}}||| || f}tj|||d}t dddd d t jf }t|	|tj
j	||ddd	d
d d S )NirW   )r   r   r   )r2   r3   i   r   r   r   gdy=)r   r]   )rZ   r   r  r  r  r/   r   r  r   r6   laplace)	r   r2   r   r   r~   r   r   r   r<   r+   r+   r,   test_pdf_laplace!  s    
z"TestGenHyperbolic.test_pdf_laplacec       	   	   C   s   t dddt dddt dtd t dddt dddf\}}}}d	}||| || f}tj|||d
}t |d|ddd d t jf }t|	|tj
j	|||||dddd d S )Nr   r  rW   r      irX   g      )r2   r3   g{Gz?gGz?r   )r)   r*   r2   r3   gvIh%<=)r   r]   )rZ   r   r  r   r/   r   r   r  r   r6   norminvgauss)	r   r~   r   r   r   r   r   r   r<   r+   r+   r,   test_pdf_norminvgauss6  s    (z'TestGenHyperbolic.test_pdf_norminvgaussN)r   r   r   r   r   r   r  r   r
  r  r  r  r+   r+   r+   r,   r     s   r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestNormInvGaussc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r   N  s    zTestNormInvGauss.setup_methodc             C   sL   t dddddg}t dddd	d
g}tjj|ddd}t||dd d S )Ngp~٧>g @X>g}e?g{)߳?gwH?ir      r   r   g      ?)r)   r*   g&.>)r   )rZ   r   r/   r  r?   r   )r   Zr_cdfx_testvals_cdfr+   r+   r,   
test_cdf_RQ  s
    

zTestNormInvGauss.test_cdf_Rc             C   sL   t dddddg}t dddd	d
g}tjj|ddd}t||dd d S )Ngp϶>g\H55$?geСt&?go NiH?g]u>ir  r   r  r   r   g      ?)r)   r*   g&.>)r   )rZ   r   r/   r  r6   r   )r   Zr_pdfr  Zvals_pdfr+   r+   r,   r   ]  s
    

zTestNormInvGauss.test_pdf_Rc             C   s   d\}}t |d |d  }|| |d |d  d| |t |  ddd|d  |d    | f}t|tjj||dd d S )	N)r   g      ?r4   ro   g      @r   r   mvsk)moments)rZ   r  r   r/   r  )r   r)   r*   gammaZv_statsr+   r+   r,   
test_statse  s
    ("zTestNormInvGauss.test_statsc             C   sB   d\}}t dddg}tj|||}t|tj||| d S )N)r   g      ?gMbP?g      ?g+?)rZ   r   r/   r  r   r   r?   )r   r)   r*   r  r   r+   r+   r,   test_ppfl  s    zTestNormInvGauss.test_ppfN)r   r   r   r   r  r   r  r  r+   r+   r+   r,   r  M  s
   r  c               @   sL   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
dS )TestGeomc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r   t  s    zTestGeom.setup_methodc             C   s   t jjddd}tt|dk tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k d S )Ng      ?)r4   r   )r   r   r   ro   )r/   geomr   r   r7   r   r   r   r   r   r   r   r   )r   r   r   r+   r+   r,   r   w  s    zTestGeom.test_rvsc             C   s(   t jdddgd}t|dddg d S )Nr   r4   ro   g      ?g      ?g      ?)r/   r   r   r   )r   r   r+   r+   r,   r     s    zTestGeom.test_pmfc             C   sZ   t tjdddgd}tjdddgd}t||ddd tjdd}t|d d S )	Nr   r4   ro   g      ?gV瞯<r   )r]   r   g        )rZ   r   r/   r   r   r   r   r   )r   r   r   r   r+   r+   r,   test_logpmf  s
    zTestGeom.test_logpmfc             C   sR   t jdddgd}t jdddgd}tdddg}t|| t|d|  d S )Nr   r4   ro   g      ?g      ?g      ?)r/   r   r?   r   r   r   )r   r   vals_sfrT   r+   r+   r,   test_cdf_sf  s
    
zTestGeom.test_cdf_sfc             C   s\   t jdddgd}t jdddgd}tdddg}t|t| t|t|  d S )Nr   r4   ro   g      ?g      ?g      ?)	r/   r   logcdflogsfr   r   rZ   r   log1p)r   r   r"  rT   r+   r+   r,   test_logcdf_logsf  s
    zTestGeom.test_logcdf_logsfc             C   s0   t jdddgd}tdddg}t|| d S )Ng      ?g      ?g      ?g      ?g       @g      @)r/   r   r   r   r   )r   r   rT   r+   r+   r,   r    s    zTestGeom.test_ppfc             C   s   t tjddddd d S )Ng#B;g      ?g+=)r   )r   r/   r   r   )r   r+   r+   r,   test_ppf_underflow  s    zTestGeom.test_ppf_underflowN)r   r   r   r   r   r   r!  r#  r'  r  r(  r+   r+   r+   r,   r  s  s   
r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )
TestPlanckc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestPlanck.setup_methodc             C   s0   t jdddgd}tdddg}t|| d S )Nr   r4   ro   g      @g|dy?g8'\>ggrU!>)r/   planckr   r   r   )r   r   rT   r+   r+   r,   r     s
    zTestPlanck.test_sfc             C   s0   t jdddgd}tdddg}t|| d S )Ng     @@g     @@g     p@g    P.g    h>g    TF)r/   r*  r%  r   r   )r   r   rT   r+   r+   r,   
test_logsf  s    zTestPlanck.test_logsfN)r   r   r   r   r   r+  r+   r+   r+   r,   r)    s   r)  c               @   s   e Zd Zdd Zdd ZdS )TestGennormc             C   s2   dddg}t j|d}t j|}t|| d S )Nr   r4   ro   )r/   gennormr6   r  r   )r   pointspdf1pdf2r+   r+   r,   test_laplace  s    
zTestGennorm.test_laplacec             C   s6   dddg}t j|d}t jj|dd}t|| d S )Nr   r4   ro   g;f?)r3   )r/   r-  r6   normr   )r   r.  r/  r0  r+   r+   r,   	test_norm  s    
zTestGennorm.test_normN)r   r   r   r1  r3  r+   r+   r+   r,   r,    s   r,  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestHalfgennormc             C   s2   dddg}t j|d}t j|}t|| d S )Nr   r4   ro   )r/   halfgennormr6   exponr   )r   r.  r/  r0  r+   r+   r,   
test_expon  s    
zTestHalfgennorm.test_exponc             C   s6   dddg}t j|d}t jj|dd}t|| d S )Nr   r4   ro   g;f?)r3   )r/   r5  r6   Zhalfnormr   )r   r.  r/  r0  r+   r+   r,   test_halfnorm  s    
zTestHalfgennorm.test_halfnormc             C   s8   dddg}t j|d}t j|d}t|d|  d S )Nr   r4   ro   g
(?)r/   r5  r6   r-  r   )r   r.  r/  r0  r+   r+   r,   test_gennorm  s    
zTestHalfgennorm.test_gennormN)r   r   r   r7  r8  r9  r+   r+   r+   r,   r4    s   r4  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestLaplaceasymmetricc             C   s8   t dddg}tj|d}tj|}t|| d S )Nr   r4   ro   )rZ   r   r/   laplace_asymmetricr6   r  r   )r   r.  r/  r0  r+   r+   r,   r1    s    z"TestLaplaceasymmetric.test_laplacec             C   sN   t dddg}d}d| }tj||}tj||d  |}t|| d S )Nr   r4   ro   )rZ   r   r/   r;  r6   r   )r   r.  r^   Zkapinvr/  r0  r+   r+   r,   test_asymmetric_laplace_pdf  s    z1TestLaplaceasymmetric.test_asymmetric_laplace_pdfc          	   C   s   t t d t dg}d}tj||}tj||}tj||}t ddg}t ddg}t dd	g}tj||}	|}
tj	||}|}t
t ||||	|ft ||||
|f d S )
N   rW   r4   g?gMbp?g?gV-?g?gMb`?)rZ   r   r   r/   r;  r6   r?   r   r   r   r   concatenate)r   r.  r^   r/  Zcdf1Zsf1r0  Zcdf2Zsf2Zppf1Zppf2Zisf1Zisf2r+   r+   r,   !test_asymmetric_laplace_log_10_16  s    z7TestLaplaceasymmetric.test_asymmetric_laplace_log_10_16N)r   r   r   r1  r<  r?  r+   r+   r+   r,   r:    s   	r:  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dZ
ejddd Zdd Zdd Zdd Zdd ZdS )TestTruncnormc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestTruncnorm.setup_methodc          	   C   sT   t jjdddddddgdd	d
gd dd}ttjddd
ddtjg}t|| d S )Ng      r   g-C6?g      ?gH.?r   r4   g      g      ?ro      )r2   r3   gfO?gl@r   )r/   	truncnormr   rZ   r   ry   r   )r   r   rT   r+   r+   r,   test_ppf_ticket1131  s    z!TestTruncnorm.test_ppf_ticket1131c          	   C   sT   t jjdddddddgdd	d
gd dd}ttjddd
ddtjg}t|| d S )Ng      r   g-C6?g      ?gH.?r   r4   g      g      ?ro   rA  )r2   r3   r   gl@gfO?)r/   rB  r   rZ   r   ry   r   )r   r   rT   r+   r+   r,   test_isf_ticket1131  s    z!TestTruncnorm.test_isf_ticket1131c             C   s   d\}}t jj||dddd}t||   k oD|   k oD|k n   d\}}t jj||dddd}t||   k o|   k o|k n   d S )N)iir   r   rW   )r   )rW      )r/   rB  r   r   minmax)r   lowhighr<   r+   r+   r,   test_gh_2477_small_values  s    .z'TestTruncnorm.test_gh_2477_small_valuesc             C   sF  d\}}t jj||dddd}t||   koD|   koD|kn  t|||gf d\}}t jj||dddd}t||   k o|   k o|k n   d\}}t jj||dddd}t||   k o|   k o|k n   d\}}t jj||dddd}t||   k o:|   k o:|k n   d S )	N)rX   rV   r   r   rW   )r   )i  i  )i'  i'  )ii)r/   rB  r   r   rF  rG  rJ   )r   rH  rI  r<   r+   r+   r,   test_gh_2477_large_values  s    <..z'TestTruncnorm.test_gh_2477_large_valuesc             C   s  xddgddggD ]\}}t t j ||t jg}|| d }tj|||}tj|||}tj|||}t ddddg}t ddd	d	g}	t dd
ddg}
|dk rt ddd
dg}
t|| t||	 t||
 tt 	|
d |
d  |d  t dddg}tj
|||}t |t |d |g}t|| |dk r|ttj|||d ttj|||d n,ttj|||d ttj|||d tj|||}tt 	||
d  |d d  qW d S )Nro   r   r   g       @r   r   g      ?g        gd._MT
@gBKg?r4   g      ?gĖy	@gdv*?g,mj%V?g      ?)rZ   r   rz   r/   rB  r?   r   r6   r   r   r   sign)r   rH  rI  xvalsxmidcdfssfspdfsexpected_cdfsexpected_sfsexpected_pdfspvalsppfsexpected_ppfsr6   r+   r+   r,   test_gh_9403_nontail_values0  s>    





z)TestTruncnorm.test_gh_9403_nontail_valuesc             C   s  xddgddggD ]\}}t t j ||t jg}|| d }tj|||}tj|||}tj|||}t ddddg}t ddd	d	g}	t dd
ddg}
|dk rt ddd
dg}
t|| t||	 t||
 tt 	|
d |
d  |d  t dddg}tj
|||}t |t |d |g}t|| tj|||}t|| |dk rttj|||d ttj|||d n,ttj|||d ttj|||d tj|||}tt 	||
d  |d d  t ||d}|d d d  }ttj|||tj|| | d d d  ttj|||tj|| | d d d  ttj|||tj|| | d d d  qW d S )N'   (   iig       @r   r   g      ?g        gpGC@gFf<r4   g      ?gEC@g i?gspXio)>g      ?rE  r  )rZ   r   rz   r/   rB  r?   r   r6   r   r   r   rM  r   )r   rH  rI  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  r6   Zxvals2r+   r+   r,   test_gh_9403_medium_tail_valuesS  sT    







   z-TestTruncnorm.test_gh_9403_medium_tail_valuesrA  c             C   s^   |d d \}}}}t jj ||dd\}	}
}}t|	| t|
| t|||d t|| d S )Nr   r  )r  )r   )r/   rB  r   )r   r)   r*   rT   	decimal_sZm0Zv0s0Zk0mvr;   r9   r+   r+   r,   _test_moments_one_range  s    

z%TestTruncnorm._test_moments_one_rangez&reduced accuracy with 32bit platforms.c             C   s,  |  ddddddg |  ddddddg |  dd	dd
ddg |  ddddddg |  dtjddddg |  tj dddddg |  dd	ddddg |  ddddddg |  ddddd d!g |  d"d#d$d%d&d'g | j dd(d)d*d+d,gd-d. |  d/d0d1d2d3d4g |  d5d6d7d2d8d4g d S )9Nir   r   r   g        irW   rL  ro   gMFmz%?gſr4   ghI}?gHNMgQ63E?gnl$A?gv1"D?g<8L?gQ63Egv1"Dr  gU*?g bn?gnA?g!c3TXʿgU*ҿgnAigH$7"g͢xr?gN8`gp=#K@iigif3g6oRf?gg+15|@igo=gqXS?gCØsgm@   )r]  iigGCg&SԍuE?gygnw@rZ  r[  gGC@gy?)ra  rZ   rz   )r   r+   r+   r,   test_moments  sV    	








zTestTruncnorm.test_momentsc             C   s0   t jj dtjdd\}}t|d t|d d S )Nr   mv)r  g e3E?g:&A?)r/   rB  rZ   rz   r   )r   r_  r`  r+   r+   r,   test_9902_moments  s    
zTestTruncnorm.test_9902_momentsc             C   sP   d\}}t jj||dddd}t||   k oD|   k oD|k n   d S )N)rW   r   r   r   rW   )r   )r/   rB  r   r   rF  rG  )r   rH  rI  r<   r+   r+   r,   test_gh_1489_trac_962_rvs  s    z'TestTruncnorm.test_gh_1489_trac_962_rvsc             C   s   ddt j dt j t j dddddg}dddt jddddd	t jt jg}tjj||dt|fd
}t |dt|fkszttt 	||j
ddk tt 	|jdd|k d S )NirW   r  ir[  rE  r   i-   )r   r   )Zaxis)rZ   rz   r/   rB  r   rr   r   rQ   r   r   rF  rG  )r   rH  rI  r<   r+   r+   r,   test_gh_11299_rvs  s    & zTestTruncnorm.test_gh_11299_rvsc             C   s*   t tjdr&tjjdddtj d d S )Ndefault_rngir  r   )r   r   )r(   rZ   r   r/   rB  r   rj  )r   r+   r+   r,   test_rvs_Generator  s    z TestTruncnorm.test_rvs_GeneratorN)rA  )r   r   r   r   rC  rD  rJ  rK  rY  r\  ra  rw   r   Zxfail_on_32bitrd  rf  rg  ri  rk  r+   r+   r+   r,   r@    s   
#/
8
r@  c               @   s,   e Zd Zejddddddgdd Zd	S )
TestGenLogisticzx, expected)ig4`n)ig4	ncg)r   gX
=)rX   gh@X)i  gh<c             C   s$   d}t j||}t||dd d S )Ng      ?gvIh%<=)r]   )r/   Zgenlogisticr   r   )r   r<   rT   r   logpr+   r+   r,   test_logpdf  s    zTestGenLogistic.test_logpdfN)r   r   r   rw   r   parametrizern  r+   r+   r+   r,   rl    s
   
rl  c               @   sT   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
dd ZdS )TestHypergeomc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestHypergeom.setup_methodc             C   s   t jjddddd}tt|dkt|dk@  tt|dk t|jjt	d k t jddd}tt
|t t dddd}tt
|tj t|jjt	d k d S )Nr  rW   ro   )r4   r   )r   r   r   )r/   	hypergeomr   r   r7   r   r   r   r   r   r   r   r   )r   r   r   r+   r+   r,   r     s    zTestHypergeom.test_rvsc             C   s6   d}d}d}|}|}t jd|||}t|dd d S )Ni	  r   i  r4   gkㅒP?rE  )r/   rq  r   r   )r   Mr   NZtotZgoodZhgpmfr+   r+   r,   test_precision  s    zTestHypergeom.test_precisionc             C   sl   t tjdddddd t tjdddddd t tjdddddd t tjdddddd d S )Nr   r4   r   g      ?rE  g        )r   r/   rq  r   )r   r+   r+   r,   	test_args  s    zTestHypergeom.test_argsc             C   s.   t dtjdddd  ko"dkn   d S )Nr   r   io i  if0  g      ?)r   r/   rq  r?   )r   r+   r+   r,   test_cdf_above_one  s    z TestHypergeom.test_cdf_above_onec          	      s   d dt ddddddd	gd
 }d fdd|D }t dddddddg}t||ddd ddddg}tj|   d}ddddg}t||ddd d S )Ng    +@g     @ro   gffffff@g333333@r   gffffff@g@r   g     @g     @c                s"   g | ]}t j   |qS r+   )r/   rq  r   )rA   Zeaten)orangespearsquantiler+   r,   rC     s   z1TestHypergeom.test_precision2.<locals>.<listcomp>r   gpR(g㘍R2gJޱ p9g?Mf=g
G?r   gƠ>)r   r]   g     @g     @g     @g     @g)9g"1)rZ   r   r   r/   rq  r   )r   Zfruits_eatenresrT   Z	quantilesres2Z	expected2r+   )rw  rx  ry  r,   test_precision2  s    zTestHypergeom.test_precision2c             C   sd   t ddd}| }tddg}tt|| }t|| t ddd}| }t|d d S )Nr   r   g      ?g      ?g        )	r/   rq  rG   rZ   r   r   r   r   r   )r   hgr   r   r   r+   r+   r,   r   &  s    
zTestHypergeom.test_entropyc             C   sl   d}d}d}d}t j||||}d}t||dd d}d	}d
}d}t j||||}d}t||dd d S )Ng     @g    cAg    .Ag     j@goro   )r   r   i@  iX  i,  g_7	j$r   )r/   rq  r%  r   )r   r9   rr  r   rs  resultrT   r+   r+   r,   r+  2  s    zTestHypergeom.test_logsfc             C   s   d}d}d}d}t j||||}d}t||dd d}d	}d
}d}t j||||}d}t||dd d}d	}d}d}t j||||}d}t||dd tdddg}d	}d
}d}t j||||}tdd}t||dd d S )Nr   g    cAg    .Ag     j@g)\Uro   )r   r[  i@  r   i,  g*@Vr   }      i  gר)r/   rq  r$  r   rZ   r   full)r   r9   rr  r   rs  r~  rT   r+   r+   r,   test_logcdfJ  s8    zTestHypergeom.test_logcdfN)r   r   r   r   r   rt  ru  rv  r|  r   r+  r  r+   r+   r+   r,   rp    s   
	rp  c               @   s6   e Zd Zejdddgdd Zdd Zdd	 Zd
S )TestLoggammazx, c, sf)r   g      ?gQOu3;)rc  rX   g\Z{0c             C   s<   t j||}t||dd t j||}t||dd d S )Ng-q=)r]   )r/   loggammar   r   r   )r   r<   r   r   r;   yr+   r+   r,   test_sf_isf  s    zTestLoggamma.test_sf_isfc             C   s    t jdd}t|ddd d S )Nir4   g     @g+=)r]   )r/   r  r   r   )r   lpr+   r+   r,   rn    s    zTestLoggamma.test_logpdfc             C   sr   t ddddddddd	d
dddddgdd}x<|D ]4\}}}}}tjj|dd}t|||||gdd q6W d S )Ng      ?g"~jg46<@g oŏg      @g      ?g	h"lxgQ?gZd;g333333@g      (@g{/L@g??gгYҿgh|?5?r  r   Zmsvk)r  r   )r   )rZ   r   reshaper/   r  r   )r   tabler   r   varskewZkurtcomputedr+   r+   r,   r    s    

zTestLoggamma.test_statsN)	r   r   r   rw   r   ro  r  rn  r  r+   r+   r+   r,   r  y  s   
r  c               @   st   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dejdgdd Zej	
dejdgdd ZdS )TestLogisticc             C   s2   t dd}tj|}tj|}t|| d S )Nir  )rZ   r   r/   logisticr?   r   r   )r   r<   r  r   r+   r+   r,   r     s    zTestLogistic.test_cdf_ppfc             C   s2   t dd}tj|}tj|}t|| d S )Nir  )rZ   r   r/   r  r   r   r   )r   r<   r  r   r+   r+   r,   r    s    zTestLogistic.test_sf_isfc             C   s4   d}d}t tjd| | t tj|| d S )Ng      <gg|EA@r   )r   r/   r  r   r   )r   r   Zdesiredr+   r+   r,   test_extreme_values  s    z TestLogistic.test_extreme_valuesc             C   s.   t jdddg}dddg}t||dd d S )	Nir   rW   gm\  .g9B.gO& $gvIh%<=)r]   )r/   r  r   r   )r   rm  rT   r+   r+   r,   test_logpdf_basic  s
    zTestLogistic.test_logpdf_basicc             C   s"   t jddg}t|ddg d S )Ni   i)r/   r  r   r   )r   rm  r+   r+   r,   test_logpdf_extreme_values  s    z'TestLogistic.test_logpdf_extreme_valueszloc_rvs,scale_rvsr4   c             C   sR   t jjd||d}dd }t|t j||fdj}t j|}t||dd d S )NrX   )r   r2   r3   c             S   s   | \}}t |}tt|| | dt|| |   |d  }t|| | t|| | d t|| | d   | }||fS )Nr   r4   )rr   rZ   r   r   )inputre   r)   r*   r   x1x2r+   r+   r,   rf     s    " z#TestLogistic.test_fit.<locals>.func)r   gKH9)r   )r/   r  r   r    	_fitstartr<   ra   r   )r   loc_rvs	scale_rvsre   rf   Zexpected_solutionZ
fit_methodr+   r+   r,   test_fit  s    
zTestLogistic.test_fitc             C   sH   t jjd||d}|t j|fg}t j|i d }tt j|| d S )NrX   )r   r2   r3   r   )r/   r  r   r  _reduce_funcrh   )r   r  r  re   r   rf   r+   r+   r,   test_fit_comp_optimizer  s    z$TestLogistic.test_fit_comp_optimizerN)r   r   r   r   r  r  r  r  rw   r   ro  rZ   r   randr  r  r+   r+   r+   r,   r    s    r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestLogserc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestLogser.setup_methodc             C   s   t jjddd}tt|dk tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k d S )Ng      ?)r4   r   )r   r   r   ro   )r/   logserr   r   r7   r   r   r   r   r   r   r   r   )r   r   r   r+   r+   r,   r     s    zTestLogser.test_rvsc             C   s   t jdd}t|d d S )Nr   g#B;g&Y3)r/   r  r   r   )r   r_  r+   r+   r,   test_pmf_small_p  s    zTestLogser.test_pmf_small_pc             C   s   t jd}t|d d S )Ng:0yE>gW  ?)r/   r  r   r   )r   r_  r+   r+   r,   test_mean_small_p  s    zTestLogser.test_mean_small_pN)r   r   r   r   r   r  r  r+   r+   r+   r,   r    s   r  c               @   sp   e Zd Zdd Zejdejej	gejde
jdgdd Zejdejd	fej	d
fgdd ZdS )TestGumbel_r_lc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestGumbel_r_l.setup_methodrB   zloc_rvs,scale_rvsr4   c             C   s@   |j d||d}|||fg}||i d }t||| d S )NrX   )r   r2   r3   r   )r   r  r  rh   )r   rB   r  r  re   r   rf   r+   r+   r,   r    s    z&TestGumbel_r_l.test_fit_comp_optimizerz	dist, sgnr   r  c             C   sL   |t ddddddddg }||\}}t||d  t|ddd d S )Nro   gW  @g   @g3qtw>gư>)r]   )rZ   r   ra   r   )r   rB   Zsgnzr2   r3   r+   r+   r,   r    s    zTestGumbel_r_l.test_fitN)r   r   r   r   rw   r   ro  r/   gumbel_rgumbel_lrZ   r   r  r  r  r+   r+   r+   r,   r    s
   "r  c               @   s   e Zd Zdd Zdd Zejdejdddgejd	d
dgejdddgdd Z	ejdejdddgejd	d
dgejdddgdd Z
dd ZdS )
TestParetoc          	   C   s  t   t dt tjjddd\}}}}t|tj t|tj t|tj	 t|tj	 tjjddd\}}}}t|tj t|tj t|tj	 t|tj	 tjjddd\}}}}t|d t|tj t|tj	 t|tj	 tjjddd\}}}}t|d t|tj t|tj	 t|tj	 tjjd	dd\}}}}t
|d
 t
|d t|tj	 t|tj	 tjjddd\}}}}t
|d t
|d t|tj	 t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t|tj	 tjjddd\}}}}t
|d t
|d t
|dtd  t
|d W d Q R X d S )Nr   g      ?r  )r  g      ?g      ?g      @g       @g      @g?grq@g      ?g      @gffffff?gK~?g      2@g۶m۶m?g      @gUUUUUU?gqq?g      $@g      @g%I$I?gQ?gUUUUUU@grq?g88Nb@)r   r   r   r   r/   paretor   rZ   rz   ry   r   r  )r   r_  r`  r;   r9   r+   r+   r,   r  )  s^    











zTestPareto.test_statsc             C   s:   d}d}d}t jj||d|d}|| | }t|| d S )Ng    eAr4   g      ?r   )r2   r3   )r/   r  r   r   )r   r<   r*   r3   r   rT   r+   r+   r,   r   e  s    zTestPareto.test_sfz2ignore:invalid value encountered in double_scalars	rvs_shaper   r4   rvs_locr   	rvs_scaler   c             C   s  t jjd|||d}t jj|dddd }t jj|dddd }t jj|dddd }||  krt|  krtdkszn tt jjd|||d d}t jj|dd	\}}	}
t|
d |  t|d
d
t|d  t	t
|d | d     t|	d d S )NrX   )r   r*   r3   r2   r   gp=
ף?)ri   rl   )ri   fix_b)ri   fbr4   )ri   r   )r/   r  r   ra   rQ   r   rF  rr   rZ   r   r   )r   r  r  r  re   Zshape_mle_analytical1Zshape_mle_analytical2Zshape_mle_analytical3Zshape_mle_aZ	loc_mle_aZscale_mle_ar+   r+   r,   r  m  s    
zTestPareto.test_fitc             C   s   t jjd|||d}|t j|fg}t j|i d }tt j|||d tt j||dd tt j||ddd tt j||d|d d	 d S )
NrX   )r   r*   r3   r2   r   )ri   r   r   )ri   rl   r4   )ri   rj   )r/   r  r   r  r  rh   )r   r  r  r  re   r   rf   r+   r+   r,   test_fit_MLE_comp_optimzer  s    z%TestPareto.test_fit_MLE_comp_optimzerc             C   sD   t tj tttjjdddgdd tttjjdddgddd d S )Nr   r4   ro   )ri   r   )ri   rj   )r}   r/   r  assert_raisesr   ra   )r   r+   r+   r,   test_fit_warnings  s    
zTestPareto.test_fit_warningsN)r   r   r   r  r   rw   r   filterwarningsro  r  r  r  r+   r+   r+   r,   r  (  s   <
 
 r  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
dd Zejddddddgfdddded ejgfdddded  d!gfd"d#d$dd%gfgd&d' Zd(d) Zd*S )+TestGenparetoc             C   sp   x>dD ]6}t |}tj|\}}t|d tt | qW t d}tj|\}}t||gddg d S )N)g      ?g        g        g       g      ?)	rZ   asarrayr/   	genpareto_get_supportr   r   isposinfr   )r   r   r)   r*   r+   r+   r,   test_ab  s    



zTestGenpareto.test_abc             C   s   t jdd}tddd}t||t j| t||t j| t||t j| tddd}t|	|t j	| d S )Ng        )r   r   g      $@r   g      ?rW   )
r/   r  rZ   r   r   r6   r6  r?   r   r   )r   rvr<   r   r+   r+   r,   test_c0  s    zTestGenpareto.test_c0c             C   s   t jdd}tddd}t||t j| t||t j| t||t j| tddd}t|	|t j	| t|
d	d d S )
Ng      )r   r   g      $@r   g        g      ?rW   r   )r/   r  rZ   r   r   r6   uniformr?   r   r   r   )r   r  r<   r   r+   r+   r,   test_cm1  s    zTestGenpareto.test_cm1c             C   s   t jdd}t|tj|tjgddg tt|	tj t jdd}t|tj|tjgddg tt|	tj t jdd}t|tj|tjgddg tt|	tj d S )Ng?)r   g        g      ?g      )
r/   r  r   r6   rZ   rz   r?   r   isneginfr   )r   r  r+   r+   r,   
test_x_inf  s    """zTestGenpareto.test_x_infc             C   s   t ddd}xdD ]|}tj||}x,dD ]$}tj||| }t||dd q,W tj||}x,dD ]$}tj||| }t||dd qhW qW d S )	Nr   rW   r   )r   r  )g+=g+g-q=)r   )g+=g+=)rZ   r   r/   r  r6   r   r?   )r   r<   r   Zpdf0dcZpdfcZcdf0Zcdfcr+   r+   r,   test_c_continuity  s    


zTestGenpareto.test_c_continuityc          	   C   s   t jt jddddt jdddddd	t jdddd f }xHd
D ]@}tj||}x,dD ]$}tj||| }t||dd qXW q@W d S )Ng-q=g{Gz?g?)baser   r   F)endpointg      ?)g        g      )g+=g+)r   )rZ   r   r   r   r/   r  r   r   )r   r   r   Zppf0r  Zppfcr+   r+   r,   test_c_continuity_ppf  s    

z#TestGenpareto.test_c_continuity_ppfc          	   C   s   t jt jddddt jdddddd	t jdddd f }xHd
D ]@}tj||}x,dD ]$}tj||| }t||dd qXW q@W d S )Ng-q=g{Gz?g?)r  r   r   F)r  g      ?)g        g      )g+=g+)r   )rZ   r   r   r   r/   r  r   r   )r   r   r   Zisf0r  Zisfcr+   r+   r,   test_c_continuity_isf  s    

z#TestGenpareto.test_c_continuity_isfc          	   C   sn   t jt jddddt jdddddd	t jdddd f }x.d
D ]&}ttjtj||||dd q@W d S )Ng-q=g{Gz?g?)r  r   r   F)r  g      ?)g:0yE>gC]r2gV瞯<gV瞯ҼgV瞯<)r   )	rZ   r   r   r   r   r/   r  r?   r   )r   r   r   r+   r+   r,   test_cdf_ppf_roundtrip  s    
z$TestGenpareto.test_cdf_ppf_roundtripc             C   s    t jdddd}t|d d S )Ng    _Bg{Gz?r   r   gpEȜ)r/   r  r%  r   )r   rm  r+   r+   r,   r+    s    zTestGenpareto.test_logsfzc, expected_statsr   r   r4   rc  g      ?gUUUUUU?gqq@rW   gqq?g      ?g$I$	?grq?rA  gll0@r  g      ?gUUUUUU?g333333c             C   s$   t jj |dd}t||ddd d S )Nr  )r  gvIh%<=gV瞯<)r]   r   )r/   r  r   )r   r   expected_statsr~  r+   r+   r,   r    s    zTestGenpareto.test_statsc             C   s   t jd}t|ddd d S )Ng:0yE>gvǼ
  ?gvIh%<=)r]   )r/   r  r  r   )r   r`  r+   r+   r,   test_var  s    zTestGenpareto.test_varN)r   r   r   r  r  r  r  r  r  r  r  r+  rw   r   ro  rZ   r  ry   r  r  r+   r+   r+   r,   r    s    

	r  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S )TestPearson3c             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r   $  s    zTestPearson3.setup_methodc             C   s   t jjddd}tt|dk t|jjtd k t jd}tt	|t
 t dd}tt	|tj t|jjtd k tt|dk d S )Ng?)r4   r   )r   ZAllFloatg      ?ro   )r/   r&   r   r   r7   r   r   r   r   r   floatr   rr   )r   r   r   r+   r+   r,   r   '  s    zTestPearson3.test_rvsc          	   C   s   t jddddg}t|tdddgdd	 t jd
d}t|tdgdd	 t jd
ddddgd}t|tdddddgdd	 d S )Nr4   g        g?g?gtT?g+q?g?gư>)r   rL  gND}i?rb  r  r   r   gj?gdC?gs?g'M?)r/   r&   r6   r   rZ   r   )r   r   r+   r+   r,   r   2  s    zTestPearson3.test_pdfc             C   s   t jddddg}t|tdddgdd	 t jd
d}t|dgdd	 t jd
ddddgd}t|dddddgdd	 d S )Nr4   g        g?g?grE?gTp]0?g~?gư>)r   rL  g E&"J?rb  r  r   r   giZ*J?gh+8w?gcK?g|<x6?gG?)r/   r&   r?   r   rZ   r   )r   r   r+   r+   r,   r   <  s    
zTestPearson3.test_cdfc                sD   ddddg}dd t j|} fdd|D }t|| d S )NrL  r  r   g      ?ic                s$   g | ]}t t|j d  qS )r   )r   r/   r&   r6   )rA   r  )neg_infx_evalr+   r,   rC   M  s   z<TestPearson3.test_negative_cdf_bug_11186.<locals>.<listcomp>)r/   r&   r?   r   )r   ZskewsrP  Zint_pdfsr+   )r  r  r,   test_negative_cdf_bug_11186F  s    z(TestPearson3.test_negative_cdf_bug_11186c             C   sP   t jdd}t|d tt|t t jdd}t|d tt|t d S )Nr   r4   r   gư>)r/   r&   r   r   rc   r  )r   r   r+   r+   r,   test_return_array_bug_11746Q  s    

z(TestPearson3.test_return_array_bug_11746N)	r   r   r   r   r   r   r   r  r  r+   r+   r+   r,   r  #  s   

r  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S )
TestKappa4c             C   sL   ddddg}d}x6dD ].}t j|||}t j|| }t|| qW d S )Ng        g?g?g      ?g      ?)
gffffffg      g      gɿgg?g?g      ?g      ?gffffff?)r/   kappa4r?   r  r   )r   r<   r   r9   r   	vals_compr+   r+   r,   test_cdf_genpareto^  s    
zTestKappa4.test_cdf_genparetoc             C   sL   t ddd}d}t ddd}tj|||}tj||}t|| d S )Nr  r   rW   g        rL  ro   )rZ   r   r/   r  r?   
genextremer   )r   r<   r   r9   r   r  r+   r+   r,   test_cdf_genextremei  s    zTestKappa4.test_cdf_genextremec             C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr   rW   g      ?g        )rZ   r   r/   r  r?   r6  r   )r   r<   r   r9   r   r  r+   r+   r,   test_cdf_exponr  s    zTestKappa4.test_cdf_exponc             C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr  r   rW   g        )rZ   r   r/   r  r?   r  r   )r   r<   r   r9   r   r  r+   r+   r,   test_cdf_gumbel_r{  s    zTestKappa4.test_cdf_gumbel_rc             C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr  r   rW   g      g        )rZ   r   r/   r  r?   r  r   )r   r<   r   r9   r   r  r+   r+   r,   test_cdf_logistic  s    zTestKappa4.test_cdf_logisticc             C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr  r   rW   g      ?)rZ   r   r/   r  r?   r  r   )r   r<   r   r9   r   r  r+   r+   r,   test_cdf_uniform  s    zTestKappa4.test_cdf_uniformc             C   s   t dd d S )Nr   r4   )r/   r  )r   r+   r+   r,   test_integers_ctor  s    zTestKappa4.test_integers_ctorN)
r   r   r   r  r  r  r  r  r  r  r+   r+   r+   r,   r  ]  s   					r  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestPoissonc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestPoisson.setup_methodc             C   sB   t d}tjdddg|}d|d |d d g}t|| d S )Nr4   r   r   g      ?r   )rZ   r   r/   poissonr   r   )r   Zln2r   rT   r+   r+   r,   test_pmf_basic  s    
zTestPoisson.test_pmf_basicc             C   sD   t jdddgd}dddg}t|| t jdd}t|d d S )Nr   r   r4   gffffff?)r   r   )r/   r  r   r   intervalr   )r   r   rT   r  r+   r+   r,   test_mu0  s
    

zTestPoisson.test_mu0c             C   s   t jjddd}tt|dk tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k d S )Ng      ?)r4   r   )r   r   r   ro   )r/   r  r   r   r7   r   r   r   r   r   r   r   r   )r   r   r   r+   r+   r,   r     s    zTestPoisson.test_rvsc             C   s   d}t jj |dd}t|||td| d| g tdddg}t jj |dd}||tjddtd gtjdd	gf}t|| d S )
Ng      0@r  )r  g      ?g        g       @r   r4   g      ?)r/   r  r   rZ   r  r   rz   )r   r   r~  rT   r+   r+   r,   r    s     &zTestPoisson.test_statsN)r   r   r   r   r  r  r   r  r+   r+   r+   r,   r    s
   	r  c               @   sl   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
dd Zdd Zdd Zdd ZdS )	TestKSTwoc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestKSTwo.setup_methodc             C   s   xdD ]}t dd| d| ddd|  dg}d| | }tj|d }|dkr^t |nd}t dd|| ddtjd|  t	dd|  ddg}tj
||}t|| qW d S )N)r   r4   ro   rW   rX   i  r   g      ?r   g      ?r4   g        )rZ   r   r.   r   gammalnr   r/   ksoner   rG  kstwor?   r   )r   r   r<   v1lgelgrT   r  r+   r+   r,   r     s    
&zTestKSTwo.test_cdfc             C   s   t ddd}xdD ]}t dd| d| ddd|  dg}d| | }tj|d }|dkrlt |nd}t ddd||  dtj	d| t
d| ddg}tj	||}t|| qW d S )Nr   r   rE  )r   r4   ro   rW   rX   i  g      ?g      ?r4   )rZ   r   r   r.   r   r  r   r/   r  r   rF  r  r   )r   r<   r   r  r  r  rT   r"  r+   r+   r,   r     s    
&
zTestKSTwo.test_sfc             C   sh   t ddddd  }ddddd	d
g}x<|D ]4}|t | }tj||}t |}t|d q,W d S )Nr   r4   rE  r   r   rX      i  i  i  g:0yE>)rZ   r   r  r/   r  r?   diffr	   )r   r<   nsZ_xxnprobsZdiffsr+   r+   r,   test_cdf_sqrtn  s    

zTestKSTwo.test_cdf_sqrtnc             C   sJ   t ddd}x6dD ].}tj||}tj||}t|d|  qW d S )Nr   r   rE  )r   r4   ro   rW   rX   i  )rZ   r   r/   r  r?   r   r   )r   r<   r   r  r"  r+   r+   r,   r#    s
    
zTestKSTwo.test_cdf_sfc             C   sX   t ddd}xDdD ]<}|t | }tj||}tj||}t|d|  qW d S )Nr   r   rE  )r   r4   ro   rW   rX   i  )rZ   r   r  r/   r  r?   r   r   )r   r<   r   r  r  r"  r+   r+   r,   test_cdf_sf_sqrtn  s    
zTestKSTwo.test_cdf_sf_sqrtnc             C   sr   t ddd}x^dD ]V}||d| k }tj||}d|k |dk @ }tj||}t|| || dd qW d S )	Nr   r   rE  )r   r4   ro   rW   rX   i  g      ?gGz?g-C6?)r]   )rZ   r   r/   r  r?   r   r   )r   r<   r   r  r  condr   r+   r+   r,   test_ppf_of_cdf	  s    
zTestKSTwo.test_ppf_of_cdfc             C   sr   t ddd}x^dD ]V}||d| k }tj||}d|k |dk @ }tj||}t|| || dd qW d S )	Nr   r   rE  )r   r4   ro   rW   rX   i  g      ?g      ?g-C6?)r]   )rZ   r   r/   r  r   r   r   )r   r<   r   r  Zvals_isfr  r   r+   r+   r,   test_isf_of_sf  s    
zTestKSTwo.test_isf_of_sfc             C   sx   t ddd}xddD ]\}|t | |d| k }tj||}d|k |dk @ }tj||}t|| ||  qW d S )Nr   r   rE  )r   r4   ro   rW   rX   i  g      ?g      ?)rZ   r   r  r/   r  r?   r   r   )r   r<   r   r  r  r  r   r+   r+   r,   test_ppf_of_cdf_sqrtn  s    
zTestKSTwo.test_ppf_of_cdf_sqrtnc             C   sx   t ddd}xddD ]\}|t | |d| k }tj||}d|k |dk @ }tj||}t|| ||  qW d S )Nr   r   rE  )r   r4   ro   rW   rX   i  g      ?gffffff?)rZ   r   r  r/   r  r   r   r   )r   r<   r   r  r"  r  r   r+   r+   r,   test_isf_of_sf_sqrtn%  s    
zTestKSTwo.test_isf_of_sf_sqrtnc             C   sN   t ddddd  }x2dD ]*}tj||}tj||}t|| qW d S )Nr   r   rE  )r   r4   ro   rW   rX   i  )rZ   r   r/   r  r   r?   r   )r   r  r   r  r  r+   r+   r,   r  /  s
    
zTestKSTwo.test_ppfc             C   s   ddddddg}t ddd	d
ddg}t ddddddgddddddgddddddgdd d!d"d#d$gd%d&d'd(d)d*gd+d,d-d.d/d0gg}xVt|D ]J\}}|t d t t jd |  }tj||}t	||| d1d2 qW d S )3NrW   r   rX   r  i  i  g      ?gUUUUUU?g      ?r   r4   ro   gRT>gr	?gK5
?gn
"5?gU
?gk?g&6#>gb
E>gI5?g\?g;?g%1?g6>gL>g<?g䓀^?gO|6$?g qO?g}+: >gwQ9>gH{?g]qv(?g)~/v?gmJ?gV27J=gGk(>gWX?gY?g{0`?gZ
H?g_R=g4>g̪?gT_@?g<e?g2?gh㈵>)r]   )
rZ   r   	enumerater   r  r8   r/   r  r?   r   )r   r  ratiosrT   idxr   r<   r  r+   r+   r,   test_simard_lecuyer_table16  s&    "z$TestKSTwo.test_simard_lecuyer_table1N)r   r   r   r   r   r   r  r#  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s   
		
r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestZipfc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r   Y  s    zTestZipf.setup_methodc             C   s   t jjddd}tt|dk tt|dk t|jjt	d k t jd}tt
|t t dd}tt
|tj t|jjt	d k d S )Ng      ?)r4   r   )r   r   r   ro   )r/   zipfr   r   r7   r   r   r   r   r   r   r   r   )r   r   r   r+   r+   r,   r   \  s    zTestZipf.test_rvsc             C   s\   t jj dd\}}tt| t|tj t jj ddd\}}tt||g   d S )Ngffffff@)r)   g333333@sk)r)   r  )r/   r  r   rZ   isfiniter   rz   r   )r   r_  r`  r;   r9   r+   r+   r,   rd  g  s
    zTestZipf.test_momentsN)r   r   r   r   r   rd  r+   r+   r+   r,   r  X  s   r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestDLaplacec             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r   r  s    zTestDLaplace.setup_methodc             C   s   t jjddd}tt|dk t|jjtd k t jd}tt	|t
 t dd}tt	|tj t|jjtd k tt jdd k	 d S )Ng      ?)r4   r   )r   r   ro   g?)r/   dlaplacer   r   r7   r   r   r   r   r   r   r   )r   r   r   r+   r+   r,   r   u  s    zTestDLaplace.test_rvsc             C   s   d}t |}| d\}}}}d}t| |d }||}	t|	|d  t|	|d   }
}t||fd t||f|
||
d  d fd	d
d d S )Ng      ?r  %   r   r4   r   )r   r   g      @g+=g:0yE>)r   r]   )r/   r  rZ   rv   r   r   r   r   )r   r)   dlr_  r`  r;   r9   rs  r   ppm2Zm4r+   r+   r,   r    s    

&zTestDLaplace.test_statsc             C   sF   t d}t|}|d\}}}}t||fd t||fd d S )Ng       @r  )g        g        )g      @g      
@)rZ   r   r/   r  r   r   )r   r)   r  r_  r`  r;   r9   r+   r+   r,   test_stats2  s
    

zTestDLaplace.test_stats2N)r   r   r   r   r   r  r  r+   r+   r+   r,   r  q  s   r  c                   s   e Zd Zdd Zejddej	dd gdd Z
ejddej	dd g fd	d
Zdd Zdd Zdd Z  ZS )TestInvgaussc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestInvgauss.setup_methodzrvs_mu,rvs_loc,rvs_scale)r4   r   r   ro   rW   c             C   sF  t jjd|||d}t jj||d\}}}|| }t|}t|t|d |d   }	||	 }
t|
|ddd t|	|ddd t	|| t jjd|||d}t jj||d |d d\}}}t	|d | t	|d | t jj|d	d
d }t jj|d	dd }t jj|d	dd }||  kr<|  kr<d	ksBn t
d S )NrX   )r   r   r2   r3   )ri   r  gV瞯<)r   r]   r   )ri   rj   gp=
ף?)fmur   )Zfix_mu)rl   )r/   r   r   ra   rZ   r   rr   r   r   r   rQ   )r   rvs_mur  r  re   r   r2   r3   Zmu_temp	scale_mleZmu_mleZ
shape_mle1Z
shape_mle2Z
shape_mle3r+   r+   r,   r    s(    





zTestInvgauss.test_fitc       
         s  t jjd|||d}ttt jt jj}||}t j|}t|| ||ddd}t jj|ddd}t|| |t j|fg}t j|i d }	t	t j||	|d t
||d  dkstt	t j||	|d d t	t j||	dd t	t j||	|t
jdd d d S )	NrX   )r   r   r2   r3   r   r4   )ri   r  r   )ri   )ri   rj   )r/   r   r   rb   rc   ra   r   r  r  rh   rZ   r   rQ   r   r  )
r   r  r  r  re   Z	super_fitZsuper_fittedZinvgauss_fitr   rf   )	__class__r+   r,   r    s$    




z'TestInvgauss.test_fit_MLE_comp_optimzerc          	   C   s:   t tj tt tjjdddgdd W d Q R X d S )Nr   r4   ro   )ri   )r}   r/   r   rw   r   r   ra   )r   r+   r+   r,   test_fit_raise_errors  s    
z"TestInvgauss.test_fit_raise_errorsc             C   s   dddddg}dddddg}t jjd|d}t|| t jjd	d
d}t|d t jjdd
d}t|d t jdd}t|d t jdd}t|d d S )Ng4wT;?gjdV&}?g{i\0>gDV_h?gqacX?r   g?)r   gMbP?g?gfFn   gr^:g9̗?g-C6?gx_;:g!?gٷ
??)r/   r   r?   r   r   r   )r   r   rT   rR   Z
cdf_actualZ	sf_actualr+   r+   r,   r#    s    



zTestInvgauss.test_cdf_sfc             C   sh   t jjddd}t|d t jdd}t|d t jjddd}t|d t jdd}t|d	 d S )
Ng-C6?g?)r   giJ.r  gr^ߺgMbP?gpgFgpQ^L)r/   r   r$  r   r%  )r   r$  r%  r+   r+   r,   r'  	  s    	


zTestInvgauss.test_logcdf_logsf)r   r   r   r   rw   r   ro  rZ   r   r  r  r  r  r#  r'  __classcell__r+   r+   )r   r,   r    s   "'#r  c                   s   e Zd Zejdddddgejdddddgd	d
 Zejddddg fddZdd Zdd Z	dd Z
dd Z  ZS )TestLaplacer  r  r   r   r4   r  ro   rW   c             C   sL  t jjd||d}t|}tt|| t| }t j|\}}t	||ddd t	||ddd t jj||d\}}t	||ddd t jj||d\}}t	|| |d }tt|| t| }t jj||d\}}t
|| t jj||d\}}t
|| ttt jj|||d ttt jjtjg ttt jjtjg d S )	NrX   )r   r2   r3   gV瞯<)r   r]   )ri   )rj   r4   )ri   rj   )r/   r  r   rZ   medianr   absrr   ra   r   r   r  rx   ry   rz   )r   r  r  re   Zloc_mler  r2   r3   r+   r+   r,   r    s(    



zTestLaplace.test_fitzrvs_scale,rvs_loc)rW   r  )r   rW   )g?g      ?c                s   t jjd||d}dd }t j|\}}ttt jt j|\}}||||}	||||}
|	|
k s|tj|	|
ddds|td S )Ni  )r   r2   r3   c          	   S   s8   dt | td|  d| tt||     S )Nr  r4   r   )rr   rZ   r   r   r  )r2   r3   re   r+   r+   r,   llQ  s    z2TestLaplace.test_fit_MLE_comp_optimzer.<locals>.llgV瞯<)r   r]   )	r/   r  r   ra   rb   rc   rZ   rd   rQ   )r   r  r  re   r  r2   r3   Zloc_optZ	scale_optZll_mleZll_opt)r   r+   r,   r  J  s    
z&TestLaplace.test_fit_MLE_comp_optimzerc             C   sb   t ddddddg}tjj|dd\}}t|dd	d	d
 tjj|dd\}}t|dd	d	d
 d S )Ng      ?g      @g      @g       @g      ,@rc  )ri   r   gV瞯<)r   r]   )rj   )rZ   r   r/   r  ra   r   )r   re   r2   r3   r+   r+   r,   test_fit_simple_non_random_data_  s
    z+TestLaplace.test_fit_simple_non_random_datac             C   sl   d}t j| }|dkstt j|}|dks6tt j|}|dksNtt j| }|dkshtd S )Ni  g        g      ?)r/   r  r?   rQ   r   )r   r<   p0p1r+   r+   r,   test_sf_cdf_extremesh  s    z TestLaplace.test_sf_cdf_extremesc             C   s.   d}t j|}t|t| d dd d S )Nr  r4   gvIh%<=)r]   )r/   r  r   r   rZ   r   )r   r<   r   r+   r+   r,   r   }  s    zTestLaplace.test_sfc             C   s.   d}t j|}t|td|  dd d S )Ng}:r4   gvIh%<=)r]   )r/   r  r   r   rZ   r   )r   r   r<   r+   r+   r,   r     s    zTestLaplace.test_isf)r   r   r   rw   r   ro  r  r  r  r  r   r   r  r+   r+   )r   r,   r    s    ,
	r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestInvGammac          	   C   s   t   t dt tjjddd}ddddg}t|| d	d
dg}tjj|dd}dddgtjddgtj	ddgtj	tj	dgf}x t
||D ]\}}t|| qW W d Q R X d S )Nr   g(\O3@r  )r)   r  g~?gCX&?g*7gS?gBqFq @g?g@gffffff@g      $@gEy?gў3oz?g^Yb?g,r?gOD@g2*Z@gFN8@)r   r   r   r   r/   r   r   rZ   rz   ry   ru   r   )r   r  rT   r)   r<   r  r+   r+   r,   test_invgamma_inf_gh_1866  s    




z&TestInvGamma.test_invgamma_inf_gh_1866c             C   s6   t dd}tj|d}tj|d}t|| d S )Ngr   r   )rZ   r   r/   r   r?   r   r   )r   r<   r  r   r+   r+   r,   r     s    zTestInvGamma.test_cdf_ppfc             C   sR   t jdkrtdd}ntdd}tj|d}tj|d}t||dd d S )Nl        r4   rX      r   g      ?)r]   )	sysmaxsizerZ   r   r/   r   r   r   r   )r   r<   r  r   r+   r+   r,   r    s    
zTestInvGamma.test_sf_isfN)r   r   r   r  r   r  r+   r+   r+   r,   r    s   r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestFc             C   s^   t jddgg}x$|D ]\}}}|j|jf| }qW dd |D }dd |D }t|| d S )N)r4   r   g      ?c             S   s$   g | ]\}}}|j |jf| qS r+   )r6   r)   )rA   _f_argsr   r+   r+   r,   rC     s    z(TestF.test_endpoints.<locals>.<listcomp>c             S   s   g | ]\}}}|qS r+   r+   )rA   r  r  	_correct_r+   r+   r,   rC     s    )r/   fr6   r)   r   )r   re   r  r  Z_correctanscorrectr+   r+   r,   r     s    zTestF.test_endpointsc             C   sX   t jj dddd\}}}}tt| tt| tt| tt|  d S )NrE  g      @r  )r  )r/   r  r   rZ   r  )r   r_  r`  r;   r9   r+   r+   r,   test_f_moments  s
    zTestF.test_f_momentsc          	   C   sD   t  2 t dt tjjdgd ddddgdd W d Q R X d S )	Nr   rE  r   r4   rc  r  r  )dfndfdr  )r   r   r   r   r/   r  )r   r+   r+   r,   test_moments_warnings  s    
zTestF.test_moments_warningsc             C   sD  t dgdgg}t ddg}tjj||dd\}}}}||d  gd }t|| d|d  || d  | |d d  |d  }t|| d| | d t d|d   |d	 t ||| d    }	t||	 d|d
| d  || d  |d |d d    }
||d	  |d  || d  }|
| }t|| d S )Nro   rE  r   r  )r  r  r  r4   r   r  rc  r      )rZ   r   r/   r  r   r  )r   r  r  r_  r`  r;   r9   r  Zv2s2Zk2numZk2denZk2r+   r+   r,   test_stats_broadcast  s    
0
  
 zTestF.test_stats_broadcastN)r   r   r   r   r  r  r  r+   r+   r+   r,   r    s   
r  c               C   s   t tjddgddg d S )Nr   rc  g?g?)r   r/   r  r   r+   r+   r+   r,   test_rvgeneric_std  s    r  c               C   s   t tjjdddtjtjtjtjf t tjjddddtjtjtjf t tjjddddtjtjtjf t tjjdddddtjtjf t tjjd	d
dtjtjf t tjjdd
ddtjf t tjjdd
ddtjf t tjjdd
dd d S )Nr   r  )r	  r  g)\(?g        r4   gGz @g     i@ro   r  gGz@r   g
ףp=
@)g        gq    @)r   r/   r  rZ   rz   ry   r+   r+   r+   r,   test_moments_t  s    r   c              C   s2   ddddg} ddddg}t tj| |d	d
 d S )Nr   r4      rX   g?@gTM]?ggY?gU?gvIh%<=)r]   )r   r/   r  rG   )r	  rT   r+   r+   r,   test_t_entropy  s    r"  c               @   sl   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
dd Zdd Zdd Zdd ZdS )TestRvDiscretec             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestRvDiscrete.setup_methodc             C   s   ddddddg}ddd	dddg}d
}t jd||fd}|j|d}tt|tj x:t||D ],\}}ttt	||kt
| | dk  q^W | }tt|t d S )Nr  r   r   r4   ro   r   g        g333333?g?i  sample)namevalues)r   g?)r/   rD   r   r   r   r7   r   ru   r  r   r  r   )r   ZstatesZprobabilitysamplesrr<   r;   r   r+   r+   r,   r     s    (zTestRvDiscrete.test_rvsc             C   sz   t dddg}tjdddg|fd}tt|| }| }t|| tjdddgdddgfd}| }t|d	 d S )
Ng      ?g?g333333?r   r   r4   )r&  g      ?g        )	rZ   r   r/   rD   r   r   rG   r   r   )r   rV  r   r   r   r+   r+   r,   r   	  s    
zTestRvDiscrete.test_entropyc             C   sX   dddg}dddg}t j||fd}dd	gd
dgg}t||ddgddggdd d S )Nr   r4   r   g      ?g333333?g?)r&  g      ?g      @g      @g        g+=)r   )r/   rD   r   r   )r   xkpkr  r<   r+   r+   r,   r   	  s    



zTestRvDiscrete.test_pmfc                s   dddg}dddg}t j||fd dd	d
dddddg}ddddddddg}t ||dd t fdd|D |dd d S )Nr   r4   r   g      ?g333333?g?)r&  rb  g      ?g?g      ?g       @g      @r   r   g?g+=)r   c                s   g | ]}  |qS r+   )r?   )rA   r   )r  r+   r,   rC   ,	  s    z+TestRvDiscrete.test_cdf.<locals>.<listcomp>)r/   rD   r   r?   )r   r)  r*  Zx_valuesrT   r+   )r  r,   r   "	  s    

zTestRvDiscrete.test_cdfc                sx   dddg}dddg}t j||fd ddd	d
ddg}ddddddg}t ||dd t fdd|D |dd d S )Nr   r4   r   g      ?g333333?g?)r&  g?g333333?g?g?g      ?g+=)r   c                s   g | ]}  |qS r+   )r   )rA   r   )r  r+   r,   rC   9	  s    z+TestRvDiscrete.test_ppf.<locals>.<listcomp>)r/   rD   r   r   )r   r)  r*  Zq_valuesrT   r+   )r  r,   r  /	  s    

zTestRvDiscrete.test_ppfc             C   sZ   dddddgdddddgf}t j|d	}t|||jd d
 d |jdd   d S )Nr   r4   r   rA  r  g?g?g333333?)r&  r  g:0yE>)r/   rD   r   r   r?   r)  )r   r   r  r+   r+   r,   test_cdf_ppf_next<	  s    z TestRvDiscrete.test_cdf_ppf_nextc             C   sl   t dd}t ddddgddddgddddgg}tj||fd}t| t |j	|j
 dd d S )	Nr   )ro   r   g?g333333?g?)r&  g+=)r   )rZ   rv   r  r   r/   rD   r   expectr   r)  r*  )r   r)  r*  r  r+   r+   r,   test_multidimensionD	  s    
z"TestRvDiscrete.test_multidimensionc             C   s   dddg}ddg}t ttjft||fd dddg}t ttjft||fd dddg}dddg}t ttjft||fd ddddd	g}d
d
d
d
dg}t ttjft||fd d S )Nr   r4   ro   g      ?)r&  g333333?gffffffr   r   g333333?gɿ)r  
ValueErrorr/   rD   rt   )r   r)  r*  r+   r+   r,   test_bad_inputM	  s    



zTestRvDiscrete.test_bad_inputc             C   s   t ddt dd }}tttjft||fd t ddt dd }}tttjft||fd t ddt dd }}t	tj||fd
dd d S )	Nr   )r4   r4   )r4   ro   gUUUUUU?)r&  rc  )ro   r4   r   )rZ   rv   r  r  r  r.  r/   rD   rt   r   r   )r   r)  r*  r+   r+   r,   test_shape_rv_sample]	  s    z#TestRvDiscrete.test_shape_rv_samplec             C   sT   ddddddg}ddddddg}t j||fd	}t| t|j|j d
d d S )Nr   r4   r   rc  rA  rE  g?g?)r&  g+=)r   )r/   rD   r   r,  rZ   r   r)  r*  )r   r)  r*  r  r+   r+   r,   test_expect1l	  s    zTestRvDiscrete.test_expect1c          /   C   s@  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'd(d)d*d+d,d-d.d/g/}d0d1d2d3d1d1d4d5d1d1d1d6d7d8d9d:d;d<d=d>d?d@dAd1dBdCdDdEdFdGdHdId1d1dJdKd7dLd1dMd1dNd1d1dOdPd1g/}t j||fdQ}t| | dRdS t| tdTdU t||D dRdS t|dVdW tdXdU t||D dRdS d S )YNg      i@g     r@g      y@g     @@g     @g     @g      @g      @g     @@g     0@g     @g     P@g     @g     p@g      @g     @g      @g     @g     @@g     h@g     0@g     @g     @g     @g     P@g     @g     @g     @g     p@g     8@g      @g     ȩ@g     @g     X@g      @g     @g     @g     x@g     @@g     @g     h@g     ̰@g     0@g     @g     @g     \@g     @g-C6:?g        gF%uk?g:vz?g.nr?g|гY?g @6*?g 4U0*C?g@+?gC6z?g nr?g ?gOjM?g n?g1w-!?g:pΈ?gףp=
?g _Le?g^)p?g~jtx?gJ4q?gGzt?g J4q?g Mb@?g@Psׂ?g@^)ˀ?g N@s?g 1w-!_?gൄ|г?gH}}?g
F%u?g ^)ˀ?g v?)r&  g+=)r   c             s   s   | ]\}}|| V  qd S )Nr+   )rA   r`  wr+   r+   r,   	<genexpr>	  s    z.TestRvDiscrete.test_expect2.<locals>.<genexpr>c             S   s   | d S )Nr4   r+   )r<   r+   r+   r,   rL   	  rM   z-TestRvDiscrete.test_expect2.<locals>.<lambda>c             s   s   | ]\}}|d  | V  qdS )r4   Nr+   )rA   r`  r2  r+   r+   r,   r3  	  s    )r/   rD   r   r,  r   r   ru   )r   r  pyr  r+   r+   r,   test_expect2s	  s6    


zTestRvDiscrete.test_expect2N)r   r   r   r   r   r   r   r   r  r+  r-  r/  r0  r1  r5  r+   r+   r+   r,   r#    s   	r#  c               @   s   e Zd Zdd Zdd ZdS )TestSkewCauchyc             C   sl   t ddd}ttjj|ddtj| ttjj|ddtj| ttjj|ddtj| d S )Nr  r   rX   r   )r)   )	rZ   r   r   r/   
skewcauchyr6   r  r?   r   )r   r<   r+   r+   r,   test_cauchy	  s    zTestSkewCauchy.test_cauchyc          
   C   s   t jd t jdd d }t jdd d }dddd	d
dddddg
}ddddddddddg
}ttj||| ttj||| ttj	||| d S )Nr   rW   r4   r   r   g& 45?gQʶ?g-4<??gJ?gw@v?gJ%?g>[u?g
a2?g	Rn?gѦ}cي?gN@Q?gPPz@	?g?g;
7?glg?g!?%?gQҙ?gC"?go?g@Sg?)
rZ   r   r   r  r   r/   r7  r6   r?   r   )r   r)   r<   r6   r?   r+   r+   r,   test_skewcauchy_R	  s    z TestSkewCauchy.test_skewcauchy_RN)r   r   r   r8  r9  r+   r+   r+   r,   r6  	  s   	r6  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S )TestSkewNormc             C   s   t d| _d S )Ni  )r   rng)r   r+   r+   r,   r   	  s    zTestSkewNorm.setup_methodc             C   s0   t ddd}ttjj|ddtj| d S )Nr  r   rX   r   )r)   )rZ   r   r   r/   skewnormr6   r2  )r   r<   r+   r+   r,   test_normal	  s    zTestSkewNorm.test_normalc             C   sH   d}t jjd|| jd}t||j t jjd|| jd}t||j d S )N)ro   r   r   g      ?)r)   r   r   rL  )r/   r<  r   r;  r   r   )r   r   r<   r+   r+   r,   r   	  s
    zTestSkewNorm.test_rvsc             C   s   t jjdtddd| jd}t|t|t |t 	|g}t jj ddddd}t
||dd t jjd	tddd| jd}t|t|t |t 	|g}t jj d	dddd}t
||dd d S )
Nr   g    .Ar   r4   )r)   r   r2   r3   r   r  )r)   r2   r3   r  )r   r   )r/   r<  r   r   r;  rZ   r   r  r  Zkurtosisr   )r   XrT   r  r+   r+   r,   rd  	  s    
$
$zTestSkewNorm.test_momentsc             C   sH   t jdddgd}t|tddd t jdd	}t|d
dd d S )NrW   r  r   r  ro   g+=)r]   r!  g      @g      ?)r/   r<  r?   r   rZ   ones)r   r   r+   r+   r,   test_cdf_large_x	  s    zTestSkewNorm.test_cdf_large_xc             C   s   dddgdddgddd	gd
ddgdddgg}xN|D ]F\}}}t j||}t||dd t j| | }t||dd q2W d S )Nir   gzbLe9r   r4   gn'/2;rb  r   g::ir  g|<igOul2;g:0yE>)r]   )r/   r<  r?   r   r   )r   Zcdfvalsr<   r)   Zcdfvalr   r+   r+   r,   test_cdf_sf_small_values	  s    z%TestSkewNorm.test_cdf_sf_small_valuesN)	r   r   r   r   r=  r   rd  r@  rA  r+   r+   r+   r,   r:  	  s   	r:  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestExponc             C   s   t tjdd d S )Nr   r   )r   r/   r6  r6   )r   r+   r+   r,   	test_zero
  s    zTestExpon.test_zeroc             C   s0   t tjdd t tjtjdd d S )NgC]r2<r[  )r   r/   r6  r?   r   r   )r   r+   r+   r,   	test_tail
  s    zTestExpon.test_tailc             C   s,   t dddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)rZ   r   ry   r  rx   r/   r6  ra   )r   r<   r+   r+   r,   test_nan_raises_error
  s    zTestExpon.test_nan_raises_errorc             C   s,   t dddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)rZ   r   rz   r  rx   r/   r6  ra   )r   r<   r+   r+   r,   test_inf_raises_error
  s    zTestExpon.test_inf_raises_errorN)r   r   r   rC  rD  rE  rF  r+   r+   r+   r,   rB   
  s   rB  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestNormc             C   s,   t dddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)rZ   r   ry   r  rx   r/   r2  ra   )r   r<   r+   r+   r,   rE  
  s    zTestNorm.test_nan_raises_errorc             C   s,   t dddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)rZ   r   rz   r  rx   r/   r2  ra   )r   r<   r+   r+   r,   rF  
  s    zTestNorm.test_inf_raises_errorc             C   s"   dddg}t ttjj|dd d S )Nr   r4   ro   shrimp)plate)r  r{   r/   r2  ra   )r   r<   r+   r+   r,   test_bad_keyword_arg
  s    
zTestNorm.test_bad_keyword_argN)r   r   r   rE  rF  rJ  r+   r+   r+   r,   rG  
  s   rG  c               @   s    e Zd ZdZdd Zdd ZdS )TestUniformzgh-10300c             C   s,   t dddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)rZ   r   ry   r  rx   r/   r  ra   )r   r<   r+   r+   r,   rE  %
  s    z!TestUniform.test_nan_raises_errorc             C   s,   t dddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)rZ   r   rz   r  rx   r/   r  ra   )r   r<   r+   r+   r,   rF  *
  s    z!TestUniform.test_inf_raises_errorN)r   r   r   __doc__rE  rF  r+   r+   r+   r,   rK  #
  s   rK  c               @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dddddgdd Z
ej	dddddgddddgddddgddddgdd dd!ggd"d# Zej	dd$ddd%gd&ddd'gddd(d)gd$dd(d*gd+dd(dgd,d dd-ggd.d/ Zd0S )1TestExponNormc             C   s   dd }d\}}}d||  }t jj |||dd}t||||| d\}}}d||  }t jj |||dd}t||||| d\}}}d||  }t jj |||dd}t||||| d	\}}}d||  }t jj |||dd}t||||| d S )
Nc             S   sh   dd| | d   }d| | d  |d  }dd| | d  d  }|d|   || d| |    ||gS )Ng      ?r   r4   ro   g      g      @rb  r+   )lamsigr   ZopK2Zexp_skewZexp_kurtr+   r+   r,   get_moms3
  s    z,TestExponNorm.test_moments.<locals>.get_moms)r   r   r   g      ?r  )r2   r3   r  )rL  r4   g?)r   ro   r   )r  rE  g      @)r/   	exponnormr   )r   rP  r   rO  rN  Kstsr+   r+   r,   rd  1
  s"    



zTestExponNorm.test_momentsc             C   s2   t dddddt jg}tttjj|ddd d S )	Ngo_?g46@gyX5ͻ@gj+?gUX@r   r   )ri   rj   )rZ   r   ry   r  rx   r/   rQ  ra   )r   r<   r+   r+   r,   rE  L
  s    z#TestExponNorm.test_nan_raises_errorc             C   s2   t dddddt jg}tttjj|ddd d S )	Ngo_?g46@gyX5ͻ@gj+?gUX@r   r   )ri   rj   )rZ   r   rz   r  rx   r/   rQ  ra   )r   r<   r+   r+   r,   rF  Q
  s    z#TestExponNorm.test_inf_raises_errorc             C   sT   t tjddd t tjddd t tjddd t tjddd d S )Ni|r   g        i  g{Gz?)r   r/   rQ  r6   )r   r+   r+   r,   test_extremes_xV
  s    zTestExponNorm.test_extremes_xzx, K, expected)r  g{Gz?g6
N-)r   g{Gz?g՜n+H?)r  g{Gz?gi?)ig{Gz?gbJI-)rW   r   gI8?)rW   i'  gQ3|-0?c             C   s   t tj|||dd d S )Ng-q=)r]   )r   r/   rQ  r6   )r   r<   rR  rT   r+   r+   r,   test_std_pdfh
  s    zTestExponNorm.test_std_pdfzx, K, scale, expectedr   g{Gz?r   gVAҤ?r  g{Gzt?g'^>g     rX   g        i  gbr ;r   gMbP?gVMe?c             C   s:   t jj|||d}|dkr(|dks6tnt||dd d S )N)r3   g        gvIh%<=)r]   )r/   rQ  r?   rQ   r   )r   r<   rR  r3   rT   r   r+   r+   r,   test_cdf_small_K~
  s    zTestExponNorm.test_cdf_small_KrW   ghG}$;r4   g]fJ?g      ?g31"g#;gf
+-r  rL  ga9S?c             C   s:   t jj|||d}|dkr(|dks6tnt||dd d S )N)r3   g        g-a=)r]   )r/   rQ  r   rQ   r   )r   r<   rR  r3   rT   r   r+   r+   r,   test_sf_small_K
  s    zTestExponNorm.test_sf_small_KN)r   r   r   rd  rE  rF  rT  rw   r   ro  rU  rV  rW  r+   r+   r+   r,   rM  0
  s0   








rM  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestGenExponc             C   s@   ddl m} tjtdddddd}t||dddd d S )	Nr   )simpsrW   g{Gz?g      ?g       @)Zdxr   )scipy.integraterY  r/   genexponr6   r7   rv   r   )r   rY  r   r+   r+   r,   test_pdf_unity_area
  s    z TestGenExpon.test_pdf_unity_areac             C   s:   t jtdddddd}ttd|k|dk@  d S )Nr   rW   g{Gz?g      ?g       @r   )r/   r[  r?   r7   rv   r   r   )r   r?   r+   r+   r,   test_cdf_bounds
  s    zTestGenExpon.test_cdf_boundsc             C   s$   t jdddd}t|ddd d S )Nr   r   r4   g      ?gM <gvIh%<=)r]   )r/   r[  r   r   )r   r;   r+   r+   r,   test_sf_tail
  s    zTestGenExpon.test_sf_tailN)r   r   r   r\  r]  r^  r+   r+   r+   r,   rX  
  s   rX  c               @   s   e Zd Zdd ZdS )TestExponpowc             C   s6   t tjddd t tjtjdddd d S )Ng|=g       @g#B;r   g?)r   r/   exponpowr?   r   r   )r   r+   r+   r,   rD  
  s    zTestExponpow.test_tailN)r   r   r   rD  r+   r+   r+   r,   r_  
  s   r_  c               @   s   e Zd Zdd Zdd ZdS )TestSkellamc             C   sn   t dd}d\}}t 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g}ttj||||dd d S )Nir   )rW   r   gYjP'?g$S?gQ`s2?gC/qF?gD<]Y?g/Xj?g86y?g]a¨?g:?g?gQ>?g?g:?g]a¨?g96?g0X?gA<]?gB/q?gQ`s?g$S?gYjP'?gX_?g+rx?gfSr?gJXx~?)r   )r7   rv   r   r   r/   skellamr   )r   r9   mu1mu2ZskpmfRr+   r+   r,   r   
  s"    zTestSkellam.test_pmfc             C   sn   t dd}d\}}t 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g}ttj||||dd d S )Nir   )rW   r   gƃQ?gS`X'?gVy)>?g:	 S?gei.f?gȼJ]x?g)?g{^'+i?gLIg>?gnZ?g?rvͪ?gA?g0?g#J?gqSm
.?g~B?gd?gFBD?gQ9?gmF^?gcMy?gGJq?gC^c?g.){?gñݸ?r   )r   )r7   rv   r   r   r/   rb  r?   )r   r9   rc  rd  ZskcdfRr+   r+   r,   r   
  s"    zTestSkellam.test_cdfN)r   r   r   r   r   r+   r+   r+   r,   ra  
  s   ra  c               @   s   e Zd Zdd Zdd ZdS )TestLognormc          	   C   sH   t  6 t dt tjdddgd}t|dddg W d Q R X d S )Nr   r   g      ?r   g        g~r?g e3E?)r   r   r   r   r/   r   r6   r   )r   r6   r+   r+   r,   r   
  s    
zTestLognorm.test_pdfc             C   sn   d\}}}t tjj|| |dtjt|| |  t tjj|| |dtjt|| |  d S )N)g(\5i@   gOn?)r;   )r   r/   r   r   r2  rZ   r   r%  )r   r  r   sigmar+   r+   r,   r  
  s
    
zTestLognorm.test_logcdfN)r   r   r   r   r  r+   r+   r+   r,   re  
  s   re  c               @   s   e Zd Zdd Zdd Zdd Zdd Zejj	e
d	d
dd Zejj	e
d	d
dd Zejj	e
d	d
dd Zdd Zdd ZdS )TestBetac             C   s:   t jddd}t|d t jddd}t|tj d S )Nr   r   g      ?g;B.)r/   r   r   r   rZ   rz   )r   r   r+   r+   r,   rn    s    
zTestBeta.test_logpdfc             C   sX   d\}}t dddg}t||}t|| d t||t || d S )N)i  i  g?g      ?g333333?gƒ)	rZ   r   r/   r   r   r   r   r6   r   )r   r~   r   r<   r*   r+   r+   r,   test_logpdf_ticket_1866  s
    z TestBeta.test_logpdf_ticket_1866c             C   s&   dddg}t ttjj|dddd d S )Ng?g      ?g333333?r   r   rH  )ri   rj   rI  )r  r{   r/   r   ra   )r   r<   r+   r+   r,   test_fit_bad_keyword_args  s    
z"TestBeta.test_fit_bad_keyword_argsc             C   s$   dddg}t ttjj|ddd d S )Ng?g      ?g333333?)fafix_a)r  r.  r/   r   ra   )r   r<   r+   r+   r,   #test_fit_duplicated_fixed_parameter  s    
z,TestBeta.test_fit_duplicated_fixed_parameterzOverflow, see gh-14901)reasonc             C   s$   d\}}}t tj|||d d S )N)g?g     R@g   0xAgx)>)r   r/   r   r   )r   r   r)   r*   r+   r+   r,   test_issue_12635   s    	
zTestBeta.test_issue_12635c             C   sl   t dddg}t dddg}d}tj||d d	| }t|| tj||d d	| }t|| d S )
Ng@3@?g^?gNC?rW   rX   i  gdy=r   i )rZ   r   r/   r   r   r   r   )r   Zinv_RZ
count_listr   invrz  r+   r+   r,   test_issue_12794,  s    
zTestBeta.test_issue_12794c       	      C   sb   d}t dd}d}d| |d ||   }}}tj|||}tj|||}t|d|  d S )Ngh㈵>r   r  i )rZ   rv   r/   r   r   r?   r   )	r   Zalpha_2Zcount_Znobsr   r)   r*   rp  rz  r+   r+   r,   test_issue_12796>  s    zTestBeta.test_issue_12796c             C   sD   d\}}t tjd||tj d\}}t tjd||tj d S )N)r   g      ?r   )g?ro   r   )r   r/   r   r6   rZ   rz   )r   r)   r*   r+   r+   r,   r   J  s    zTestBeta.test_endpointsc          	   C   s4   d\}}}t t tj||| W d Q R X d S )N)gףp=
?g   vH7Bg  @0B)rw   Zwarnsr   r/   r   r   )r   r   r)   r*   r+   r+   r,   test_boost_eval_issue_14606U  s    
z$TestBeta.test_boost_eval_issue_14606N)r   r   r   rn  ri  rj  rm  rw   r   skipifMACOS_INTELro  rq  rr  r   rs  r+   r+   r+   r,   rh    s   rh  c               @   s   e Zd Zdd Zdd ZdS )TestBetaPrimec             C   s\   d\}}t dddg}t||}tt ||  t|	|t 
|| d S )N)i  i  g?g      ?g333333?)rZ   r   r/   r   r   r  r   r   r   r6   r   )r   r~   r   r<   r*   r+   r+   r,   rn  \  s
    zTestBetaPrime.test_logpdfc                s   t jddd}t|d d\ tdddg}t j| }tt|  t j	j
 fdd	|D }t||dd
d d S )Nr   g?g333333?g        )i  i  g      ?g333333?c                s   g | ]}t j| qS r+   )r/   r   )rA   r   )r~   r   gen_cdfr+   r,   rC   p  s    z*TestBetaPrime.test_cdf.<locals>.<listcomp>g-=)r   r]   )r/   r   r?   r   rZ   r   r   r  r   rE   Z_cdf_singler   )r   r<   rP  Zcdfs_gr+   )r~   r   rw  r,   r   c  s    
zTestBetaPrime.test_cdfN)r   r   r   rn  r   r+   r+   r+   r,   rv  [  s   rv  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestGammac             C   s<   t jjdddd}t|d t jjdddd}t|d d S )	NZ   i  g?)r3   g
CTb?ro   rW   gBΖ?)r/   r  r6   r   )r   r6   r+   r+   r,   r   u  s    
zTestGamma.test_pdfc             C   s   t jdd}t|d d S )Nr   r   )r/   r  r   r   )r   r   r+   r+   r,   rn  }  s    zTestGamma.test_logpdfc             C   s$   dddg}t ttjj|ddd d S )Ng?g      ?g333333?r   rH  )ri   rI  )r  r{   r/   r  ra   )r   r<   r+   r+   r,   rj    s    
z#TestGamma.test_fit_bad_keyword_argsc             C   s@   t jtjdddddstt jtjdddd	ds<td S )
NgFFg<r   ggplC@g+=)r   gJz5rX   g1}t@gvIh%<=)rZ   iscloser/   r  r   rQ   )r   r+   r+   r,   r     s    zTestGamma.test_isfN)r   r   r   r   rn  rj  r   r+   r+   r+   r,   rx  t  s   rx  c               @   s   e Zd Zdd Zdd ZdS )TestChi2c             C   s4   t tjddddd t tjddddd d S )Ni  gޞw1D?   )r   rX   g6:֜?)r   r/   chi2r6   )r   r+   r+   r,   rt    s    zTestChi2.test_precisionc             C   s|   d}t jd|}t|ddd t jd|}t|ddd d}t jd	|}t|d
dd t jd|}t|ddd d S )Ng333333@gλm:=6g'bd5 <g|=)r]   g      ?gQ8@   gܐ؆0guu[9=g?g8-*@)r/   r}  r   r   )r   r	  r<   r+   r+   r,   r    s    zTestChi2.test_ppfN)r   r   r   rt  r  r+   r+   r+   r,   r{    s   r{  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestGumbelLc             C   s2   t dd}tj|}tj|}t|| d S )Nir   )rZ   r   r/   r  r?   r   r   )r   r<   r  r   r+   r+   r,   r     s    zTestGumbelL.test_cdf_ppfc             C   sH   t dd}tj|}tj|}t |}t| }t	|| d S )Nir   )
rZ   r   r/   r  r$  r%  r   r   expm1r   )r   r<   r  r  ur`  r+   r+   r,   r'    s    
zTestGumbelL.test_logcdf_logsfc             C   s2   t dd}tj|}tj|}t|| d S )Nir   )rZ   r   r/   r  r   r   r   )r   r<   r  r   r+   r+   r,   r    s    zTestGumbelL.test_sf_isfN)r   r   r   r   r'  r  r+   r+   r+   r,   r    s   r  c               @   s   e Zd Zdd Zdd ZdS )TestGumbelRc             C   s   t tjdddd d S )Nr   g?~T}%m;g+=)r]   )r   r/   r  r   )r   r+   r+   r,   r     s    zTestGumbelR.test_sfc             C   s   t tjdddd d S )NgFFg<ggplC@g+=)r]   )r   r/   r  r   )r   r+   r+   r,   r     s    zTestGumbelR.test_isfN)r   r   r   r   r   r+   r+   r+   r,   r    s   	r  c               @   sf   e Zd Zdd Zejjdd Zejjdd Zdd Z	d	d
 Z
ejjejdddgdd ZdS )TestLevyStablec             C   s   dddddddddddddddddddddg}t j|\}}}}t|dddd	 t|d
d t|dd t|dd |dddddg }t j|\}}}	}
t|d t|d t|
dd t|	dd d S )Ngwgg        g u?g67',?gtA}˜.?gGz?r   g{Gz?)r]   r   g)\(̿r4   gۧ1?r   g9]c?r  gv?)r/   levy_stabler  r   r   r   )r   r<   Zalpha1Zbeta1loc1scale1r  Zalpha2Zbeta2loc2scale2r+   r+   r,   r    s     



zTestLevyStable.test_fitc                s  t jt jt jtd}t|}tjj	j
|jdd}ttdrLtjntj ddddgddd fd	d
gddddd
 gddddd
 gddddd
 gddddd
 gddddd
 gddddd
 gg}xt|D ]\}\}}}}|tj_|tj_|dk	r||| n|}	t }
|
td |
td tjj|	d |	d |	d ddd}t|	d|}t||	d  }||dd |   kt|B  }t||	d |d!|||f d"d# W dQ R X qW dS )$a!   Test pdf values against Nolan's stablec.exe output
            see - http://fs2.american.edu/jpnolan/www/stable/stable.html

            There's a known limitation of Nolan's executable for alpha < 0.2.

            Repeat following with beta = -1, -.5, 0, .5 and 1
                stablec.exe <<
                1 # pdf
                1 # Nolan S equivalent to S0 in scipy
                .25,2,.25 # alpha
                -1,-1,0 # beta
                -10,10,1 # x
                1,0 # gamma, delta
                2 # output file
        zdata/stable-pdf-sample-data.npyzx,p,alpha,beta)namesisinbestNr  
quadraturec                s$   | d dk | d dddddg@ S )	Nr~   g      ?r<   ir  r   r   rW   r+   )r(  )npisinr+   r,   rL     s   
z7TestLevyStable.test_pdf_nolan_samples.<locals>.<lambda>	zolotarevc             S   s   | d dkS )Nr~   r   r+   )r(  r+   r+   r,   rL   !  rM   c             S   s   | d dk| d dk@ S )Nr~   r   r   r   r+   )r(  r+   r+   r,   rL   #  rM   r   c             S   s   | d dk| d dk@ S )Nr~   r   r   r   r+   )r(  r+   r+   r,   rL   %  rM   fftr   r   c             S   s   | d dkS )Nr~   r   r+   )r(  r+   r+   r,   rL   )  rM   ro   c             S   s   | d dk | d dk@ S )Nr~   r   g      ?r+   )r(  r+   r+   r,   rL   *  rM   c             S   s   | d dk| d dk@ S )Nr~   g      ?r<   r   r+   )r(  r+   r+   r,   rL   ,  rM   z6Density calculation unstable for alpha=1 and beta!=0.*z2Density calculations experimental for FFT method.*r<   r~   r   )r3   r2   calcr   g      ?g      $@z&pdf test %s failed with method '%s'
%sF)verbose)ospathabspathjoindirname__file__rZ   loadcorerecords
fromarraysTr(   r  Zin1dr  r/   r  pdf_default_methodpdf_fft_min_points_thresholdr
   recordr   r6   r   r  isnanr   )r   fnre   testsixdefault_methodfft_min_pointsdecimal_placesfilter_funcsubdatasupr   subdata2padifffailuresr+   )r  r,   test_pdf_nolan_samples  sJ    


z%TestLevyStable.test_pdf_nolan_samplesc          
   C   s@  t jt jt jtd}t|}tjj	j
|jdd}ddddgddd	d
d gg}xt|D ]\}\}}}}|tj_|tj_|dk	r||| n|}	t }
|
td tjj|	d |	d |	d ddd}t|	d|}t||	d  }||dd|   kt|B  }t||	d |d|||f dd W dQ R X qbW dS )a!   Test cdf values against Nolan's stablec.exe output
            see - http://fs2.american.edu/jpnolan/www/stable/stable.html

            There's a known limitation of Nolan's executable for alpha < 0.2.

            Repeat following with beta = -1, -.5, 0, .5 and 1
                stablec.exe <<
                2 # cdf
                1 # Nolan S equivalent to S0 in scipy
                .25,2,.25 # alpha
                -1,-1,0 # beta
                -10,10,1 # x
                1,0 # gamma, delta
                2 # output file
        zdata/stable-cdf-sample-data.npyzx,p,alpha,beta)r  r  Nr  r  r   r4   c             S   s   | d dkS )Nr~   r   r+   )r(  r+   r+   r,   rL   b  rM   z7TestLevyStable.test_cdf_nolan_samples.<locals>.<lambda>zXFFT method is considered experimental for cumulative distribution function evaluations.*r<   r~   r   r   )r3   r2   r  r   g      ?g      $@z&cdf test %s failed with method '%s'
%sF)r  )r  r  r  r  r  r  rZ   r  r  r  r  r  r  r/   r  r  r  r
   r  r   r?   r   r  r  r   )r   r  re   r  r  r  r  r  r  r  r  r   r  r  r  r+   r+   r,   test_cdf_nolan_samplesF  s2    


z%TestLevyStable.test_cdf_nolan_samplesc       
      C   s.  t ddddddddddddddddddddg}t dddd	d
dddddddddddddddg}t ddddddddddddddddddddg}dddgdddgg}t jdd n t \}|jtd!d" xF|D ]>\}}}|tj_|tj_	tjj
|d|ddd#}	t|	||| qW W dQ R X W dQ R X dS )$z
        sample points extracted from Tables and Graphs of Stable Probability
        Density Functions - Donald R Holt - 1973 - p 187.
        r   r   r4   ro   r   gtF_?gܵ|?gQ?g@?gec]?gHP?gPkw?g!rh?gTN?g?gDioɴ?g r?gH?g+?gHPs?gX ?g&?g0*?gv/?ga2U0*?g      ?g      ?r  Nr  ignore)r   zDensity calculation unstable.*)categorymessage)r3   r2   )rZ   r   errstater
   rP   r   r/   r  r  r  r6   r   )
r   ZxsZdensityZbetasr  r  r  r  r  r6   r+   r+   r,   'test_pdf_alpha_equals_one_beta_non_zeroy  s4    z6TestLevyStable.test_pdf_alpha_equals_one_beta_non_zeroc             C   sd   ddt jt jt jfgddgg}x@|D ]8\}}tjj|d |d |d |d dd	}t|| q$W d S )
N)gGz?g)\(̿r   r   r   )r4   g?rW   g      ?)rW   g      @r   r   r   r4   ro   r  )r2   r3   r  )rZ   rz   NaNr/   r  r   )r   Z
param_setsr   Z	exp_statsZ
calc_statsr+   r+   r,   r    s    
zTestLevyStable.test_statsr   g      ?r   c             C   sZ   t jd d}d}d}tjj||||dd}tj|d||||fd\}}|d	ksVtd S )
Nih:g      ?g      ?g      ?i  )r2   r3   r   r  )r   g{Gz?)rZ   r   r   r/   r  r   r   rQ   )r   r   r~   r2   r3   r<   statr   r+   r+   r,   test_rvs_alpha1  s    zTestLevyStable.test_rvs_alpha1N)r   r   r   r  rw   r   r   r  r  r  r  ro  r  r+   r+   r+   r,   r    s   L3$r  c               @   s   e Zd Zdd Zdd ZdS )TestArrayArgumentc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestArrayArgument.setup_methodc             C   s.   t jjtdtddd}t|jd d S )Nr   )rW   r   )r2   r3   r   )r/   r2  r   rZ   rv   r?  r   r   )r   r   r+   r+   r,   test_noexception  s    z"TestArrayArgument.test_noexceptionN)r   r   r   r   r  r+   r+   r+   r,   r    s   r  c               @   s   e Zd Zdd Zdd ZdS )TestDocstringc             C   sD   t jjd k	r tdt jj k t jjd k	r@tdt jj k d S )Nr   r   )r/   r   rL  r   lowerr   )r   r+   r+   r,   test_docstrings  s    zTestDocstring.test_docstringsc             C   s   t   t   d S )N)r/   rE   rD   )r   r+   r+   r,   test_no_name_arg  s    zTestDocstring.test_no_name_argN)r   r   r   r  r  r+   r+   r+   r,   r    s   r  c              C   s   t dddddddg} t| dk| d\}}t|dddddg t|dddddg tddk| d\}}t|| d  t|dg t| dk| d\}}t||  t|dgt|   d S )Nr   ro   r4   r   )r   r   r   r7   r   )r)   r*   r   r+   r+   r,   TestArgsreduce  s    
r  c               @   s   e Zd ZdddgZdd Zdddg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ejdddgdd Zejdddgdd  Zd!S )"TestFitMethodncfr  r  c             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestFitMethod.setup_methodr6  r2  r  z	dist,argsc             C   s~   || j krtd|  tdddddtjg}tdddddtjg}tt|}t	t
|j|ddd	 t	t
|j|ddd	 d
S )zgh-10300z"%s fit known to fail or deprecatedgo_?g46@gyX5ͻ@gj+?gUX@r   r   )ri   rj   N)fitSkipNonFiniterw   skiprZ   r   ry   rz   r   r/   r  rx   ra   )r   rB   r   r<   r  Zdistfuncr+   r+   r,   !test_fit_w_non_finite_data_values  s    

z/TestFitMethod.test_fit_w_non_finite_data_valuesc          	   C   s   t jd t jddd tjjddddd}t t |t d d	 	 }t
t tjj|d
dd|d
dgdd W d Q R X d S )Ni90  r  )r   g      ?g        g      4@r  )r   r4   r   )ri   rj   g:0yE>)r   )rZ   r   r   r  r/   r   r   r  r   r   r   r   ra   )r   r<   Zexpected_shaper+   r+   r,   test_fix_fit_2args_lognorm  s    "z(TestFitMethod.test_fix_fit_2args_lognormc             C   s   t dd}tj|\}}t|d t|t d tjj|dd\}}t|d t|t d tjj|dd\}}t|d t|d d S )Nr   rc  ro   r4   )ri   )rj   )rZ   rv   r/   r2  ra   r   r  r   )r   r<   r2   r3   r+   r+   r,   test_fix_fit_norm  s    


zTestFitMethod.test_fix_fit_normc             C   sn  t dd}t | }d}tjj||d\}}}t | | }tt |t	| |dd t
|| t|| | dd d}d}tjj|||d\}}}t
|| t
|| t|| | dd d	}d}tjj|||d\}}}t
|| t
|| t|| | dd d}d	}	tjj|||	d
\}}}t
|| t
||	 |t |	 }
tt	||
 d S )Nr   rc  r   )ri   r   )r   r  )rl   ri   r4   )ri   rj   )rZ   rv   r   r   r/   r  ra   r   r   Zdigammar   )r   r<   Zmeanlogri   r)   r2   r3   r;   rl   rj   r   r+   r+   r,   test_fix_fit_gamma
  s6    






z TestFitMethod.test_fix_fit_gammac          	   C   s  dd }t dddg}tjj|ddd\}}}}t|d t|d t||||ddgd	d
 t dddg}tjj|dddd\}}}}t|d t|d t|d ||||\}}t|ddd
 d| }	tjj|	dddd\}
}}}t|d t|d t|d ||
||	\}}t|ddd
 t|
| tt	tjj|ddd t dddg}tt	tjj|ddd tt	tjj|dddd tt	tjj|dddd tt	tjj|ddddd d S )Nc             S   sj   t |}t| }td|  }t| | }||| t|    ||| t|   g}|S )Nr   )rr   rZ   r   r   r   psi)r)   r*   r<   r   s1r  Zpsiabrf   r+   r+   r,   mlefunc3  s    z0TestFitMethod.test_fix_fit_beta.<locals>.mlefuncg      ?g      ?g      ?r   r   )ri   rj   gư>)r   r4   )rl   ri   rj   gh㈵>)rm   ri   rj   )ri   rj   rl   )ri   rj   rm   ro   )rl   rm   ri   rj   )
rZ   r   r/   r   ra   r   r   r   r  r.  )r   r  r<   r)   r*   r2   r3   dadbr  a2b2r  r  r  r+   r+   r,   test_fix_fit_beta0  s8    








zTestFitMethod.test_fix_fit_betac          
   C   s   t ddddddddg}tj|\}}t|d t|d tjj|dd\}}t|d t|d tjj|dd\}}t|d t|d d S )Nr4   r   r  ro   )rj   r   )ri   )rZ   r   r/   r6  ra   r   )r   r<   r2   r3   r+   r+   r,   test_expon_fitg  s    




zTestFitMethod.test_expon_fitc             C   s  t ddddddg}t |d }tjj|dd\}}}t|| d	d
 t|d t|t 	|
 d	d
 tjj|ddd\}}}t|t |t d d 
 d	d
 t|d t|d tjj|ddd\}}}t|d t|d t|t 	|
 d	d
 d S )Ng      ?ro   rW   r      ;   r   )ri   g-q=)r]   rc  )ri   rj   r4   g      ?)ri   Zfix_s)rZ   r   r   r/   r   ra   r   r   r   r   r   r  )r   r<   Zlnxm1r   r2   r3   r+   r+   r,   test_lognorm_fitv  s    




zTestFitMethod.test_lognorm_fitc             C   s   t ddddg}tj|\}}t||  t||  tjj|dd\}}t|d t||  tjj|dd\}}t|d t|d t	t
tjj|d	d t	t
tjj|d
d d S )Ng      ?g?g333333?g      "@r   )ri   rW   )rj   g       @g      @)rZ   r   r/   r  ra   r   rF  ZptprG  r  r.  )r   r<   r2   r3   r+   r+   r,   test_uniform_fit  s    


zTestFitMethod.test_uniform_fitmethodZMLEZMMc          
   C   sn  d\}}t jj||ddd}t jj|d|d}t jj|d|d}t||ddd	 t jj|d|d
}t||ddd	 t jj|d|d}t jj|d|d}t||ddd	 t jj|d|d}t||ddd	 ttt jj|dd|d ttt jj|dddd|d t jj|ddd|d}	|	\}
}}}t|
||gdddg d}t jj|dd}t jj|||d\}
}}t|
| d S )N)g      @g      @rX   i  )r   r   g      @)rl   r  )rk  r  g-q=)r   r]   )rl  r  g      @)rm   r  )r  r  )r  r  r   r4   )rk  rl   r  r   ro   )rk  rm   ri   rj   r  )rk  ri   rj   r  )r   )	r/   r   r   ra   r   r  r.  r   r  )r   r  r)   r*   r<   Zres_1Zres_2Zres_3Zres_4Zres_5ZaaZbbr  ssre   r+   r+   r,   test_fshapes  s,    zTestFitMethod.test_fshapesc             C   s<   t j}|jddd}tdd}tt|j|f|d|i d S )Nr4   rX   )rR  r   i)Zenikibenikir  )r/   rQ  r   rt   r  r{   ra   )r   r  rB   re   r   r+   r+   r,   test_extra_params  s    
zTestFitMethod.test_extra_paramsN)r   r   r   r  r   r  rw   r   ro  r   r  r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s   

	&7'r  c               @   sT   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
dd ZdS )
TestFrozenc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestFrozen.setup_methodc             C   s  t j}t jddd}|d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| |d}|jdddd}t|| | }|jddd}t|| |	 }|j	ddd}t|| |
 }|j
ddd}t|| | }|jddd}t|| | }|jddd}t|| |d}|jdddd}t|| t|j|j t|j|j d S )Ng      $@g      @)r2   r3   g      4@g      ?r4   )r/   r2  r6   r   r?   r   r   r   r  r   r  r   rG   r   r)   r*   )r   rB   frozenresult_fr~  r+   r+   r,   r3    sJ    
















zTestFrozen.test_normc             C   s  d}t j}t |}|d}|d|}t|| |d}|d|}t|| |d}|d|}t|| |d}|d|}t|| |d}|d|}t|| | }||}t|| |	 }|	|}t|| |
 }|
|}t|| | }||}t|| | }||}t|| |d}|d|}t|| t|j|jj t|j|jj d S )Ng       @g      4@g      ?g      $@r4   )r/   r  r6   r   r?   r   r   r   r  r   r  r   rG   r   r)   rB   r*   )r   r)   rB   r  r  r~  r+   r+   r,   
test_gamma  sL    






















zTestFrozen.test_gammac             C   s8   t d}|d}|j dd |d}t|| d S )Nr   r4   r  )r  )r/   r   r   r   )r   r  m1r  r+   r+   r,   test_regression_ticket_1293<  s
    


z&TestFrozen.test_regression_ticket_1293c             C   sV  d}t j|d}|j|\}}t||gddg d}t jjd|d t|j|dtjg d}t j|d}|j|\}}t||gddg d}t jd| t|jj|jj	ft j| t jdd}t
|j|jk	 xtdD ]l}t|}t j|d}|j|j	 }}t|d t
t| td}t j|\}}t||gdd	g qW d S )
Ng)r   g        g      $@g?r   )g      ?g        g       g      ?)r/   r  rB   r  r   r6   rZ   rz   r)   r*   r   r  r  r   )r   r   r  r)   r*   Zrv1r+   r+   r,   r  K  s2    




zTestFrozen.test_abc             C   s   t ttjd d S )NZ	rv_frozen)r   r(   r/   r0   )r   r+   r+   r,   test_rv_frozen_in_namespacew  s    z&TestFrozen.test_rv_frozen_in_namespacec             C   sV   t  }tt|d d|_t|j tj	d  tj	d}|j
d|d d S )Nr   *   i  r  )r   r   )r/   r2  r   r(   r   r   Z	get_staterZ   r   ZRandomStater   )r   r  Zrndmr+   r+   r,   test_random_state{  s    
zTestFrozen.test_random_statec       
      C   s   t dd}t d}t jddddgdd	d
dgfd}x|||gD ]}d|_|jdd t|}|jdd}t|}|jdd}t	|| |
d|
dg}	t	|	d |	d  t	||	d ||	d  qBW d S )Ngdsz@g@e?g      @r   r   r4   ro   g?g?g333333?g?)r&  i  r  )r   g      ?)r/   r   r  rD   r   r   pickledumpsloadsr   r   r?   )
r   r   Zpoissr$  distfnr;   Zr0Z	unpickledr1Zmediansr+   r+   r,   test_pickling  s     



zTestFrozen.test_picklingc          	   C   s   dd }t jdddd}|j|dddd	}t jj|d
dddddd}t|| t jddd}||}t jj|ddd}t|| d S )Nc             S   s   | S )Nr+   )r<   r+   r+   r,   rf     s    z$TestFrozen.test_expect.<locals>.funcr4   ro   r   )r)   r2   r3   r   T)lbubconditional)r4   )r   r2   r3   r  r  r  )r2   )ro   )r   r2   )r/   r  r,  r   r  )r   rf   ZgmZgm_valZ	gamma_valr   Zp_valZpoisson_valr+   r+   r,   test_expect  s    

zTestFrozen.test_expectN)r   r   r   r   r3  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s   34,r  c               @   sl   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
dd Zdd Zdd Zdd ZdS )
TestExpectc             C   s   t jjdd ddd}t|ddd t jjd	d ddd}t|ddd t jjd
ddd}t jjdddd}t jjdd dd||d}t|ddd t jjdd dd||dd}t|ddd d S )Nc             S   s   | d | d  S )Nr   r+   )r<   r+   r+   r,   rL     rM   z&TestExpect.test_norm.<locals>.<lambda>r   r4   )r2   r3   r   r|  )r   c             S   s   | S )Nr+   )r<   r+   r+   r,   rL     rM   g?gffffff?c             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL     rM   )r2   r3   r  r  g?c             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL     rM   T)r2   r3   r  r  r  g      ?)r/   r2  r,  r   r   )r   r`  r_  r  r  prob90prob90cr+   r+   r,   r3    s    zTestExpect.test_normc          	   C   s   t jjdd dddd}t|ddd	 t jjd
d dddd}t|ddd	 t jjdddddd}t jjdddddd}t jjdd ddd||dd}t|ddd	 t jjdd ddd||dd}t|ddd	 d S )Nc             S   s   | d | d  S )NgUUUUUU@r+   )r<   r+   r+   r,   rL     rM   z&TestExpect.test_beta.<locals>.<lambda>)rW   r   r   r4   )r   r2   r3   gqq?r~  )r   c             S   s   | S )Nr+   )r<   r+   r+   r,   rL     rM   g      @g       @gUUUUUU@gffffff?rW   )r2   r3   g?c             S   s   dS )Ng      ?r+   )r<   r+   r+   r,   rL     rM   )rW   rW   F)r   r2   r3   r  r  r  g?c             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL     rM   Tg      ?)r/   r   r,  r   r   )r   r`  r_  r  r  r  r  r+   r+   r,   	test_beta  s    
zTestExpect.test_betac       
      C   s&  t jj ddddd\}}t jjdd ddd	}t||d
d t jjdd ddd	}t||dd t jjdd dddd
d}t||dd dt jjdd
gddddd  }t jjdd ddddd}t||d
d t jjdd dddddd}t|ddd t jjdd dddd}	t|	dd
d d S )Nr  rW   r  g      @)r2   c             S   s   | S )Nr+   )r<   r+   r+   r,   rL     rM   z+TestExpect.test_hypergeom.<locals>.<lambda>)r  rW   r  )r   r2   r~  )r   c             S   s   | d d S )Ng      "@r4   r+   )r<   r+   r+   r,   rL     rM   r|  c             S   s   | d d S )Ng      "@r4   r+   )r<   r+   r+   r,   rL     rM   r   )r   r2   r  r  r   c             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL     rM   rc  r   c             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL     rM   T)r   r2   r  r  r  c             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL     rM   r   )r   r  r  )r/   rq  r,  r   r   r   )
r   Zm_trueZv_truer_  r`  Zv_boundsZ	prob_trueprob_boundsZprob_bcZprob_br+   r+   r,   test_hypergeom  s(    "
zTestExpect.test_hypergeomc             C   sb   t jjdd dddd}dt jdd }t||d	d
 t jjdd dddd}t|dd	d
 d S )Nc             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL     rM   z)TestExpect.test_poisson.<locals>.<lambda>)r4   ro   F)r   r  r  r   r4   r|  )r   c             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL     rM   T)r/   r  r,  r?   r   )r   r  Zprob_b_trueZprob_lbr+   r+   r,   test_poisson  s    zTestExpect.test_poissonc             C   s<   t j}|jdd}|jdd |jdd}t||dd d S )N)g      ?)r   )g      ?r|  )r   )r/   Zgenhalflogisticr,  r   )r   Zhalflogres1r{  r+   r+   r,   test_genhalflogistic  s
    zTestExpect.test_genhalflogisticc             C   sv   t ttjdd t ttjjdd dd t ttjjdd dd t ttjjdd dd d S )	Ni  gGz?c             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL     rM   z/TestExpect.test_rice_overflow.<locals>.<lambda>)gGz?)r   c             S   s   dS )Nr4   r+   )r<   r+   r+   r,   rL     rM   c             S   s   dS )Nro   r+   )r<   r+   r+   r,   rL     rM   )r   rZ   r  r/   ricer6   r,  )r   r+   r+   r,   test_rice_overflow  s    zTestExpect.test_rice_overflowc             C   sp   d\}}t jjdd |fd}t|||d  td|  dd t jjdd |f|d	}t||| dd d S )
N)g333333?ro   c             S   s   | S )Nr+   )r9   r+   r+   r,   rL     rM   z(TestExpect.test_logser.<locals>.<lambda>)r   g      ?gV瞯<)r   c             S   s   | S )Nr+   )r9   r+   r+   r,   rL   $  rM   )r   r2   )r/   r  r,  r   rZ   r   )r   r   r2   Zres_0Zres_lr+   r+   r,   test_logser  s     zTestExpect.test_logserc             C   sh   d\}}t jjdd ||fd}t jjdd ||fd}t||| dd t||d  || dd d S )	N)r  r  c             S   s   | S )Nr+   )r<   r+   r+   r,   rL   +  rM   z)TestExpect.test_skellam.<locals>.<lambda>)r   c             S   s   | d S )Nr4   r+   )r<   r+   r+   r,   rL   ,  rM   g-q=)r   r4   )r/   rb  r,  r   )r   r
  p2r  r  r+   r+   r,   test_skellam'  s
    zTestExpect.test_skellamc             C   sL   d\}}t jdd ||f}t|tdd t||D ||  dd d S )N)r   q   c             S   s   | S )Nr+   )r<   r+   r+   r,   rL   4  rM   z)TestExpect.test_randint.<locals>.<lambda>c             s   s   | ]
}|V  qd S )Nr+   )rA   r   r+   r+   r,   r3  6  s    z*TestExpect.test_randint.<locals>.<genexpr>gV瞯<)r   )r/   r   r,  r   r   r   )r   lohirz  r+   r+   r,   test_randint0  s    zTestExpect.test_randintc             C   s   t ttjjdd d d S )Nc             S   s   | d S )Nr4   r+   )r<   r+   r+   r,   rL   ;  rM   z&TestExpect.test_zipf.<locals>.<lambda>)r4   )r   r   r/   r  r,  )r   r+   r+   r,   	test_zipf8  s    
zTestExpect.test_zipfc             C   s@   t jjdd dd}t jjdd ddddd	}t||d
d d S )Nc             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL   ?  rM   z/TestExpect.test_discrete_kwds.<locals>.<lambda>)r4   )r   c             S   s   dS )Nr   r+   )r<   r+   r+   r,   rL   @  rM   i      g:0yE>)r   Zmaxcount	chunksizeZ	tolerancer|  )r   )r/   r  r,  r   )r   Zn0Zn1r+   r+   r,   test_discrete_kwds=  s    zTestExpect.test_discrete_kwdsc             C   s:   dd }x,dD ]$}t jd|}t|||dd qW d S )Nc             S   s0   | d d| d   d| d   d| d   |  S )Nr   rW   r   r!  ro   r   r4   r+   )r   r+   r+   r,   poiss_moment5G  s    z-TestExpect.test_moment.<locals>.poiss_moment5)r   rA  r   g|=)r]   )r/   r  r   r   )r   r   r   Zm5r+   r+   r,   test_momentD  s    
zTestExpect.test_momentN)r   r   r   r3  r  r  r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s   "
		r  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestNctc             C   s@   t dd}t|dd t dd}t|dddd d S )Nr   r   g      ?r  g K?rW   )r   )r/   nctr   r?   r   )r   r  r+   r+   r,   test_nc_parameterP  s    zTestNct.test_nc_parameterc          	   C   sf   t jdtddd d d f tddd}tdddd	gd
dddgddddgg}t||dd d S )Nr   r   rA  g?r   gMp^j?g6].ftv?gȳ'ς?gu?g!Y<a?g]d1p?go|?g?gHdY?g2Ԥg?g}o/u?g .mr?gh㈵>)r]   )r/   r  r6   rZ   rv   r   r   r   )r   rz  rT   r+   r+   r,   test_broadcastingX  s    
zTestNct.test_broadcastingc             C   s   t dd}t| d d S )Nr   r   g       @)r/   r  r   r  )r   r  r+   r+   r,   test_variance_gh_issue_2401`  s    z#TestNct.test_variance_gh_issue_2401c             C   s   t jj dddd\}}}}t||||gtjtjtjtjg t jj dddd\}}}}tt| t|||gtjtjtjg t jj dddd\}}}}tt|||g  t|tj d S )Ng?g333333?r  )r	  ncr  gffffff?g@)r/   r  r   rZ   ry   r   r  r   )r   r_  r`  r;   r9   r+   r+   r,   test_nct_inf_momentsh  s    "zTestNct.test_nct_inf_momentsc             C   s   t jdd}t j dd}ddg}t||d dd t||dd t jdd}t j dd}d	d
g}t||d dd t||dd d S )Ni  r4   g@ @g*dn?r   g|=)r]   i gqI  @gL) ?g&.>)r/   r  r   r   )r   Znct_mean_df_1000Znct_stats_df_1000Zexpected_stats_df_1000Znct_meanZ	nct_statsr  r+   r+   r,   test_nct_stats_large_df_valuesu  s    
z&TestNct.test_nct_stats_large_df_valuesN)r   r   r   r  r  r  r  r	  r+   r+   r+   r,   r  O  s
   r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestRicec             C   s   dddg}t ttjj|dd  t ttjj|dd  t ttjj|dd  t ttjj	|dd  ddddg}t ttjj
|dd  tjjd	d
d}t t|  d}ttj|d	tj|||d	d d S )Ng?g      ?g      @g        )r*   g?g      ?g?r   r  )r  g:0yE>)r   r]   )r   rZ   r  r/   r  r6   r   r   r?   r$  r   r   )r   r<   r   r  r*   r+   r+   r,   test_rice_zero_b  s    
zTestRice.test_rice_zero_bc             C   s2   t jj}t|ddjd t|dddjd d S )Ng      @)r*   r   )ro   r   )r*   r   )r/   r  r   r   r   r   )r   r   r+   r+   r,   test_rice_rvs  s    zTestRice.test_rice_rvsc             C   s   t jtdddtddd}ddddddd	d
dddddddg}t|| tddd}t jj|ddd}dddddddddg	}t|| tj jd tdd!d}d"d#d$d%d&d'd(d)d*d+d,d-d.d/g}t|| d S )0NrW      g/Ƹ?g[jǊ\?g 	?g9LJ?g#O?gXx?glO?g٥a%?gVzӯ?gTQ+xQ?g?`J?go?gbu=?gIo|?g"Z6?g?r   g     @_@r   )r3   g<~@gwd
@gC?@gb
0@g` A@@g'NxP@g33-a@g4pv@g$F@g      ?   gJ-$@g+f4@gce*D>@g$D@gnHGI@grN@g<
uQ@giff T@g9r[V@g3bXQ Y@gqxJ[@g`*DD ^@g@`@gdAa@)r/   r  r?   rZ   rv   r   r   r.   )r   r?   Zcdf_expZprobabilitiesr   Zppf_expr+   r+   r,   test_rice_gh9836  s(    "



zTestRice.test_rice_gh9836N)r   r   r   r  r  r  r+   r+   r+   r,   r
    s   r
  c               @   s$   e Zd Zdd Zdd Zdd ZdS )
TestErlangc             C   s   t jd d S )Ni  )rZ   r   r   )r   r+   r+   r,   r     s    zTestErlang.setup_methodc          	   C   sv   t  d t dt tttjjddddd ddd	d
g}tjj|dd}tj	j|dd}t
||dd W d Q R X d S )Nr   g?r   r   r   )r2   r3   r   g      ?g      ?g       @g      @)rl   gMbP?)r]   )r   r   r   r   r  r/   erlangr   ra   r  r   )r   re   Zresult_erlangZresult_gammar+   r+   r,   test_erlang_runtimewarning  s    
z%TestErlang.test_erlang_runtimewarningc             C   s.   t tjjdddgdtjjdddgd d S )Ng      ?r   r  )r)   )r   r/   r  r6   r  )r   r+   r+   r,   test_gh_pr_10949_argcheck  s    z$TestErlang.test_gh_pr_10949_argcheckN)r   r   r   r   r  r  r+   r+   r+   r,   r    s   r  c               @   sr   e Zd Zdd Zdd Zdd Zejde	j
dgd	d
 Zejdddge	j
dgdd Zdd ZdS )TestRayleighc             C   s   t jd d S )Nih:)rZ   r   r   )r   r+   r+   r,   r     s    zTestRayleigh.setup_methodc             C   s   t jd}t|d d S )Nr   g)Zx)r/   r   r   r   )r   r  r+   r+   r,   rn    s    zTestRayleigh.test_logpdfc             C   s   t jd}t|d d S )Nr   i)r/   r   r%  r   )r   r  r+   r+   r,   r+    s    zTestRayleigh.test_logsfzrvs_loc,rvs_scaler4   c             C   s   t jjd||d}dd }|||}t jj||d\}}t|| t|| t jj|dd\}}t|d t j|\}}t|||| d S )Nr  )r   r2   r3   c             S   s"   t | | d dt|   d S )Nr4   g      ?)rZ   r   rr   )re   ri   r+   r+   r,   r    s    z(TestRayleigh.test_fit.<locals>.scale_mle)ri   g333333?)rj   )r/   r   r   ra   r   )r   r  r  re   r  Zscale_expectr2   r3   r+   r+   r,   r    s    



zTestRayleigh.test_fitgGz?g{Gz?c             C   sH   t jjd||d}|t j|fg}t j|i d }tt j|| d S )Nr  )r   r2   r3   r   )r/   r   r   r  r  rh   )r   r  r  re   r   rf   r+   r+   r,    test_fit_comparison_super_method  s    z-TestRayleigh.test_fit_comparison_super_methodc             C   s   t tj d S )N)r}   r/   r   )r   r+   r+   r,   r    s    zTestRayleigh.test_fit_warningsN)r   r   r   r   rn  r+  rw   r   ro  rZ   r   r  r  r  r  r+   r+   r+   r,   r    s    r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestExponWeibc             C   sB   d}d}d}t j|||}t j|||}t||gddg d S )Ng?g      ?g      Y@g:23W+g~`9k)r/   	exponweibr6   r   r   )r   r<   r)   r   r   rm  r+   r+   r,   test_pdf_logpdf%  s    zTestExponWeib.test_pdf_logpdfc             C   sj   t ddd}d}d}tj|||}tj||}t|| tj|||}tj||}t|| d S )Nr   r  r   r   rX   )rZ   r   r/   r  r6   weibull_minr   r   )r   r<   r)   r   r   rT   rm  r+   r+   r,   test_a_is_10  s    
zTestExponWeib.test_a_is_1c             C   sf   t ddd}d}d}tj|||}tj|}t|| tj|||}tj|}t|| d S )Nir   rW   )rZ   r   r/   r  r6   r6  r   r   )r   r<   r)   r   r   rT   rm  r+   r+   r,   test_a_is_1_c_is_1@  s    
z TestExponWeib.test_a_is_1_c_is_1N)r   r   r   r  r  r  r+   r+   r+   r,   r  #  s   r  c               @   s   e Zd Zdd Zdd ZdS )TestFatigueLifec             C   s    t jdd}t|ddd d S )Ng      @g      @gX9gvIh%<=)r]   )r/   r   r   r   )r   r;   r+   r+   r,   r^  Q  s    zTestFatigueLife.test_sf_tailc             C   s$   d}t j|d}t|ddd d S )NgX9g      @g      @gvIh%<=)r]   )r/   r   r   r   )r   r   r   r+   r+   r,   test_isf_tail_  s    zTestFatigueLife.test_isf_tailN)r   r   r   r^  r  r+   r+   r+   r,   r  O  s   r  c               @   s   e Zd Zdd Zdd ZdS )TestWeibullc             C   s   t jdd}t|d d S )Nr   r   )r/   r  r   r   )r   r  r+   r+   r,   rn  h  s    zTestWeibull.test_logpdfc       
      C   sP  d}d}d}t jj|||d}t|tdd  t jj|||d}t|dtd  t jj|||d}t|t	
d  t jj|||d}t|tt	
d  t jj|||d}t|td t jj|||d}	t|	d t jjdddd}t|td	 t jjdddd}	t|	d	 d
}t jj|||d}t|tdd  t jj|||d}t|dtd  t jj|||d}t|td t jj|||d}t|d t jj|||d}t|t	
d  t jj|||d}	t|	tt	
d  t jjdddd}t|t	
d  t jjdddd}	t|	tt	
d  d S )Ng      ?g       @g      @)r3   g      пro   r   r4   ig      g&.gCe )r/   r  r6   r   rZ   r   r   r   r?   r   r  r$  r   r%  Zweibull_max)
r   r<   r)   r*   r   r  r   lcr;   Zlsr+   r+   r,   test_with_maxima_distribm  sH    


z$TestWeibull.test_with_maxima_distribN)r   r   r   rn  r   r+   r+   r+   r,   r  f  s   r  c               @   s   e Zd Zdd Zdd ZdS )	TestRdistc             C   s2   t j}dddg}t|||dd|dd d S )NgMbP?g      ?g+?g     @r   )r   )r/   rdistr   r?   r   )r   r  r&  r+   r+   r,   test_rdist_cdf_gh1285  s    
zTestRdist.test_rdist_cdf_gh1285c             C   sN   t ddd}d}tdt|d |d |d d  t|| d S )NgGzgGz?rW   g@g      ?r4   r   )rZ   r   r   r/   r   r6   r"  )r   r<   r   r+   r+   r,   test_rdist_beta  s    &zTestRdist.test_rdist_betaN)r   r   r   r#  r$  r+   r+   r+   r,   r!    s   r!  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S )TestTrapezoidc             C   sh   ddddg}xV|D ]N}d|dg}t tj|||tj|| t tj|||tj|| qW d S )Nr   g333333?g      ?r   )r   r/   r   r6   triangr?   )r   modesmoder<   r+   r+   r,   test_reduces_to_triang  s    

z$TestTrapezoid.test_reduces_to_triangc             C   sN   t ddd}ttj|ddtj| ttj|ddtj| d S )Nr   r   rW   )rZ   r   r   r/   r   r6   r  r?   )r   r<   r+   r+   r,   test_reduces_to_uniform  s    z%TestTrapezoid.test_reduces_to_uniformc             C   s  t tjdddd t tjdddd t tjdddd t tjdddd t tjd	ddd
 t tjdddd t tjdddd
 t tjd	ddd t tjdddd t tjdddd t tjdddd t tjdddd d S )Nr   r4   r   g      ?g?grq?g?g      ?g?g      ?g      ?g?g      ?g      ?g      ?)r   r/   r   r6   r?   )r   r+   r+   r,   
test_cases  s    zTestTrapezoid.test_casesc       	         sf  d\              f\}}}}d      fdd}|d}|d|d  }d          t d      }ttj|||||dd ttj|||||dd ttj|||||dd ttjd	d	d
dddd ttjd	dd
dd	dd ttjd	dd
dddd d S )N)rL  r  r4   ro   r4   c                sT   | d  | d     | d   | d        | d  | d  S )Nr4   r   r+   )r   )r)   r*   r   dr   r+   r,   r     s    z6TestTrapezoid.test_moments_and_entropy.<locals>.momentr   g      ?r~  )r   r   rL  rc  r  ro   )rZ   r   r   r/   r   r   r  rG   )	r   r
  r  r2   r3   r   r   r  rG   r+   )r)   r*   r   r,  r   r,   test_moments_and_entropy  s     0>


z&TestTrapezoid.test_moments_and_entropyc             C   sn  t dddg}t ddgd d d f }t dddg}tj|||}t |||\}}}t j|j|jd	}t 	|j}	x>t
|	| | | D ] \}
}}}tj|||||
< qW t|||jd
d t tjj||dd}t ||\}}t |jdf}t 	|j}	x:t
|	| | D ]"\}
}}tjj||dd||
< q,W t||j|jd
d d S )Ng?g?g333333?g      ?g333333?g333333?g      ?g?)r   gV瞯<)r   r  )r  r   )rZ   r   r/   r   r6   Zbroadcast_arraysemptyr   r   rv   ru   ravelr   r  r   r  r  )r   r   r,  r<   r`  ccddr   rz  indr   r  c1Zd1r+   r+   r,   test_trapezoid_vect  s"    ( z!TestTrapezoid.test_trapezoid_vectc             C   s0   t ddd}ttj|ddtj| d S )Nr   r   rW   )rZ   r   r   r/   rH   r6   r  )r   r<   r+   r+   r,   
test_trapz*  s    zTestTrapezoid.test_trapzN)	r   r   r   r)  r*  r+  r-  r4  r5  r+   r+   r+   r,   r%    s   	r%  c               @   s   e Zd Zdd ZdS )
TestTriangc          	   C   s  t jdd ttjddd ttjddd ttjddd ttjddd ttjddd ttjddd	 ttjddd ttjddd
 ttjddd ttjddd ttjddd ttjddd W d Q R X d S )Nraise)r   r   g       @g      ?g      ?r   g        r4   g      ?g      ?)rZ   r  r   r/   r&  r6   r?   )r   r+   r+   r,   test_edge_cases1  s    zTestTriang.test_edge_casesN)r   r   r   r8  r+   r+   r+   r,   r6  0  s   r6  c               @   s   e Zd Zdd Zdd ZdS )
TestMielkec             C   s\   d\}}t t||dtj t t|ddtj ttt|dd d S )N)g rh@gv?r   g      ?g)\(?)r   r/   mielker   rZ   rz   r   r  )r   r9   r;   r+   r+   r,   rd  E  s    zTestMielke.test_momentsc             C   s@   t ddd}d\}}ttj|||| tj||| d S )Ng{Gz?rX   r   )g@gHzG@)rZ   r   r   r/   burrr6   r:  )r   r<   r9   r;   r+   r+   r,   test_burr_equivalenceL  s    z TestMielke.test_burr_equivalenceN)r   r   r   rd  r<  r+   r+   r+   r,   r9  D  s   r9  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestBurrc          	   C   s   t jddgt jddgt jddgt jddgt jddgt jddgt jd	d
gg}dd |D }dd |D }t|| dd |D }dd |D }t|| d S )N)r   r   )g      ?r4   )r   r   )r4   g      ?)r   g      ?g      ?g      ?)r   r4   g       @c             S   s$   g | ]\}}}|j |jf| qS r+   )r6   r)   )rA   r  r  r   r+   r+   r,   rC   _  s    z0TestBurr.test_endpoints_7491.<locals>.<listcomp>c             S   s   g | ]\}}}|qS r+   r+   )rA   r  r  r  r+   r+   r,   rC   `  s    c             S   s$   g | ]\}}}|j |jf| qS r+   )r   r)   )rA   r  r  r   r+   r+   r,   rC   c  s    c             S   s   g | ]\}}}t |qS r+   )rZ   r   )rA   r  r  r  r+   r+   r,   rC   d  s    )r/   Zfiskr;  burr12r   )r   re   r  r  r+   r+   r,   test_endpoints_7491S  s    






zTestBurr.test_endpoints_7491c             C   s<   d\}}t ||  \}}d\}}t|| t|| d S )N)g      @ro   )g4U?g&MI?)r/   r;  r   )r   r   r,  r   varianceZmean_hcZvariance_hcr+   r+   r,   test_burr_stats_9544g  s
    
zTestBurr.test_burr_stats_9544c       	      C   sZ  d\}}t ||  \}}tt| tt| d\}}t ||  \}}tt| tt| d\}}t jtddddg||\}}}}tt| tt| tt| tt| d\}}t jddddg||\}}}}tt| tt| tt| tt| d\}}t jddddg||\}}}}tt| tt| tt| tt| d\}}t jddddg||\}}}}tt| tt| tt| tt| d	\}}t jddddg||\}}}}tt| tt| tt| tt| d S )
N)g      ?ro   )g      ?ro   r   r4   ro   r   )g      @ro   )g      @ro   )g      @ro   )r/   r;  r   rZ   r  r  _munpr   )	r   r   r,  r   r@  e1e2Ze3Ze4r+   r+   r,   test_burr_nan_mean_var_9544r  sL    &    z$TestBurr.test_burr_nan_mean_var_9544N)r   r   r   r?  rA  rE  r+   r+   r+   r,   r=  R  s   r=  c               @   s  e Zd Zddd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&d'd(d)d*d+d,d-d.d/d0gZd1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHgZeeeefZdIdJdKgZ	dLdMdNdOdPej
gZdQdRdSdOgZeee	eeeZdTdUdLdMej
dVfdWdMej
dXfdLdNej
dYfgZdZd[ Zejjd\d] ZejeZd^Zeejeed_Ze eZ!W d`Q R X ej"dae!db dcdd Z#ej"dae!de dfdg Z$ejjej"dae!dh didj Z%dkdl Z&ejj'dmdn Z(ej"doedpdq Z)ejjdrds Z*ejj'dtdu Z+d`S )vTestStudentizedRangegQ1@g33333F@g
ףp=*K@gHzM@g/$@g~j!@g33333$@g{Gz&@gh|?5	@gQ8@g&1@g|?5@g@gOn@g!rhm@gB`"@gffffff@gʡEs@g|?5^@g/$@gV-@g/$@gF@g?5^I@gRV@gffffffl@gp@g     r@gʡ @gHzG/@gQ82@gQ3@g!rh@g     @g+@gʡEs @gjt@gB`"[@g@gnJ@gV-@gFx@gsh|?@g+N@g/$@g @g@gGz@gfffff"@i  i
  i  gHzG2@g(\A@gQC@gfffffE@g @gNbX9"@gHz$@g(\&@g-@gn@@gw/@g=
ףp @gJ+@g-'@gn@gHz@gV-@gnJ@g$@g/ݤ@gffffff?gGz?g+?r   ro   rW   r  x   r4   r  r|  )g?ro   i)#  gupm1f?)r   rW   i  g?<-=A?gv"?r   gd暕?ga-A?c             C   s@   x:| j D ]0\}}|\}}}tj|||}t||dd qW d S )Ng-C6?)r]   )re   r/   studentized_ranger?   r   )r   pvkr   Z
p_expectedr`  r9   Zres_pr+   r+   r,   test_cdf_against_tables  s    
z,TestStudentizedRange.test_cdf_against_tablesc             C   s2   x,| j D ]"\}}tjj| }t||dd qW d S )Ng-C6?)r]   )re   r/   rH  r   r   )r   rI  Z
q_expectedZres_qr+   r+   r,   test_ppf_against_tables  s    z,TestStudentizedRange.test_ppf_against_tablesz&data/studentized_range_mpmath_ref.jsonr(  Ncase_resultZcdf_datac             C   sN   |d }|d }|d |d |d f}t jj| }t|||d |d d d S )	Nsrc_case	mp_resultr   r9   r`  expected_atolexpected_rtol)r   r]   )r/   rH  r?   r   )r   rL  rM  rN  qkvrz  r+   r+   r,   test_cdf_against_mp  s    z(TestStudentizedRange.test_cdf_against_mpZpdf_datac             C   sN   |d }|d }|d |d |d f}t jj| }t|||d |d d d S )	NrM  rN  r   r9   r`  rO  rP  )r   r]   )r/   rH  r6   r   )r   rL  rM  rN  rQ  rz  r+   r+   r,   test_pdf_against_mp  s    z(TestStudentizedRange.test_pdf_against_mpZmoment_datac             C   sN   |d }|d }|d |d |d f}t jj| }t|||d |d d d S )	NrM  rN  r_  r9   r`  rO  rP  )r   r]   )r/   rH  r   r   )r   rL  rM  rN  Zmkvrz  r+   r+   r,   test_moment_against_mp  s    z+TestStudentizedRange.test_moment_against_mpc             C   s4   d\}}t tjjdtj||fd}t|d d d S )N)ro   rW   r   )r   r   )r   r/   rH  r6   rZ   rz   r   )r   r9   r`  rz  r+   r+   r,   test_pdf_integration  s    z)TestStudentizedRange.test_pdf_integrationc             C   s\   d\}}t jdddd}tj|||dd  }tj|||}t||}t||dd d S )	N)ro   rW   r   rW   g{Gz?)stepr   g-C6?)r]   )rZ   rv   r/   rH  r?   r6   r   r   )r   r9   r`  r<   Zy_cdfZ	y_pdf_rawZy_pdf_cumulativer+   r+   r,   test_pdf_against_cdf  s    
z)TestStudentizedRange.test_pdf_against_cdfr_case_resultc             C   s*   |\}}}}t j|||}t|| d S )N)r/   rH  r?   r   )r   rX  r   r9   r`  Zr_resrz  r+   r+   r,   test_cdf_against_r  s    z'TestStudentizedRange.test_cdf_against_rc          	   C   s`   t jddgddgddg}t|jd tjtdd	  t jdddgddd
g W d Q R X d S )Nr   r4   r   r   rW   rE  )r4   z...could not be broadcast...)rp   r   )r/   rH  rB  r   r   rw   r   r.  )r   r_  r+   r+   r,   test_moment_vectorization  s    z.TestStudentizedRange.test_moment_vectorizationc          
   C   sd   t  B}tjdd* |t tjdddg\}}}}W d Q R X W d Q R X ttj	|| d S )Nr  )invalidr   r4   ro   )
r
   rZ   r  rP   r   r/   rH  r  r   Z	_argcheck)r   r  r9   r	  r   r+   r+   r,   test_fitstart_valid"  s    
.z(TestStudentizedRange.test_fitstart_valid),r   r   r   Zq05Zq01Zq001rZ   r>  qsZpsrz   vsksru   r"   re   Zr_datarJ  rw   r   r   rK  r  r  r  r  Zpath_prefixrelative_pathopenr  filejsonr  Zpregenerated_dataro  rR  rS  rT  rU  ZxslowrW  rY  rZ  r\  r+   r+   r+   r,   rF    sV   

rF  c               C   sR   t tjddddd t tjddddd t tjjdd	d
ddddd d S )Ng2g?rW   test_540_567)r   err_msgg2gk?g;B.?gͣh?gHŎ*?)r2   r3   g.y?)r   r/   r2  r?   r+   r+   r+   r,   rd  +  s    

rd  c               C   s   t jjdd d S )Nr  )r%  )r/   Z_continuous_distnsZ	gamma_genr+   r+   r+   r,   test_regression_ticket_13167  s    rf  c               C   s   t tjdddd d S )Ng        r4   g      ?r|  )r   r/   r}  r6   r+   r+   r+   r,   test_regression_ticket_1326=  s    rg  c           	   C   s  t ddd} t jdd xXdddt dgdgdgggD ]6}tj| |}t|dk  tt 	|   q<W t dgdgd	gg}tj| |}W d Q R X tt 	|   t|d
 dk  t|d dk  t|d dk
  t|d dk
  d S )Ng      g      @rV   r  )divideg        g      g       g       @r   r   r4   )rZ   r   r  r   r/   r%   r6   r   r   r  any)r<   rN  r   r+   r+   r,   test_regression_tukey_lambdaB  s    $rj  zdocstrings stripped)rn  c               C   s$   t dtjjk t dtjjk d S )Nzpdf(x, mu, loc=0, scale=1)zpmf(x,)r   r/   r  rL  r+   r+   r+   r,   test_regression_ticket_1421W  s    rk  c            	   C   s  t jdd tt tjdt j tt tjdt j tt tj	dt j tt tj
dt j tt tjdt j tt tjdt j tt tjdt j tt tjdt j tt tjt jd tt tjt jd tt tj	t jd tt tj
t jd tt tjt jd tt tjt jd tt tjt jd tt tjt jd W d Q R X d S )Nr  )r[  r   g      ?)rZ   r  r   r  r/   r  r$  ry   r?   r%  r   r6   r   r   r   r   r   r   r+   r+   r+   r,    test_nan_arguments_gh_issue_1362]  s"    rl  c           	   C   sX  t jd t dddg} tjj| d | d | d dd	}t jd
d t tjj|dd}W d Q R X t	|| dd t tjj|ddd}t	|| dd t tjj|ddd}t	|| dd t tjj|ddd}t	|| dd t jd d}d}tj
j|ddd	}t tj
j||d}t |t || d  g}t	||dd d S )Ni.  g      ?g        g      ?r   r   r4   rX   )r   r  )rh  )ri   )r   )rj   r2   )rl   r2   )rl   ri   g?g       @r   )rZ   r   r   r   r/   r   r   r  ra   r   r2  r  r   )truer<   paramsr2   ri   rT   r+   r+   r,   test_frozen_fit_ticket_1536r  s&       ro  c              C   s<   t jd tjjdd} tj| }d}t||dd d S )Ni	 rX   )r   )g
ףp=
?gʡE?r   )r   )rZ   r   r   r/   r  r   ra   r   )r   rn  rT   r+   r+   r,   test_regression_ticket_1530  s
    rp  c              C   sZ   t jd t jd} x<dD ]4}tj| | \}}t||dd t|ddd qW d S )Ni  r  )g     @g   6Ag      ?)r   g333333?)rZ   r   r   Zrandnr/   r  ra   r   )r<   offsetr2   r3   r+   r+   r,   test_gh_pr_4806  s    
rr  c              C   s   t jj ddd} dtjd d ddg}t| |dd t jj d	dd} dd
ddg}t| |dd t jj ddd} ddddg}t| |dd d S )Nr   r  )r  r4   ro   g333333?rW   )r   g
ףp=
	@gz5v?gRTgQ?gNg @gJFٻ)r/   r%   rZ   r8   r   )re  rT   r+   r+   r,   "test_tukeylambda_stats_ticket_1545  s    rs  c               C   s   t ttjdd d S )Ni  r  )r   rZ   r  r/   r  r   r+   r+   r+   r,   test_poisson_logpmf_ticket_1436  s    rt  c              C   s8   ddg} x*| D ]"\}}t jj |dd}t|| qW dS )a  Test the powerlaw stats function.

    This unit test is also a regression test for ticket 1548.

    The exact values are:
    mean:
        mu = a / (a + 1)
    variance:
        sigma**2 = a / ((a + 2) * (a + 1) ** 2)
    skewness:
        One formula (see https://en.wikipedia.org/wiki/Skewness) is
            gamma_1 = (E[X**3] - 3*mu*E[X**2] + 2*mu**3) / sigma**3
        A short calculation shows that E[X**k] is a / (a + k), so gamma_1
        can be implemented as
            n = a/(a+3) - 3*(a/(a+1))*a/(a+2) + 2*(a/(a+1))**3
            d = sqrt(a/((a+2)*(a+1)**2)) ** 3
            gamma_1 = n/d
        Either by simplifying, or by a direct calculation of mu_3 / sigma**3,
        one gets the more concise formula:
            gamma_1 = -2.0 * ((a - 1) / (a + 3)) * sqrt((a + 2) / a)
    kurtosis: (See https://en.wikipedia.org/wiki/Kurtosis)
        The excess kurtosis is
            gamma_2 = mu_4 / sigma**4 - 3
        A bit of calculus and algebra (sympy helps) shows that
            mu_4 = 3*a*(3*a**2 - a + 2) / ((a+1)**4 * (a+2) * (a+3) * (a+4))
        so
            gamma_2 = 3*(3*a**2 - a + 2) * (a+2) / (a*(a+3)*(a+4)) - 3
        which can be rearranged to
            gamma_2 = 6 * (a**3 - a**2 - 6*a + 2) / (a*(a+3)*(a+4))
    )g      ?)g      ?gUUUUUU?g        g333333)g       @)gUUUUUU?gqq?g^cQg333333r  )r  N)r/   powerlawr   )Zcasesr)   Z
exact_mvskr  r+   r+   r,   test_powerlaw_stats  s
    rv  c              C   s   t jdd} t| d d S )Nr   r   g        )r/   ru  r   r   )r   r+   r+   r,   test_powerlaw_edge  s    rw  c              C   sl   t jdd} t| d t jddddg} t| tjddg t jddddg} t| tjdtj g d S )Nr   r   g        g      ?g      ?g      ?)r/   r`  r   r   r6   rZ   rz   )r   r+   r+   r,   test_exponpow_edge  s    
rx  c              C   sR   t jddd} t| d t jddd} t| d t jddd} t| d d S )	Nr   r   g      ?rb  r  g>rW   gqq?)r/   Zgengammar6   r   rB  r   )r   r+   r+   r,   test_gengamma_edge  s    

ry  c           2   C   s   t 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'd(d)d*d+d,d-d.d/d0g0} t jd1d2< t *}|td3 |td4 tj	|  W d Q R X W d Q R X d S )5Ng>X*ȿgPix#?g=?g&^?goϿg뵏˿gO_ZQ?g\?g~?g)/?gRܶ?g핚οgH߃[g?gS"gm_ пg7k?g#BF?gKU=?gT?gZg[Qs?g2?g6Hwƭ8?g*-
?ga]?g'?g޻?g?J_ ?g~sw?g0FfͿgg"@ӿg?%:˿g&zM?g?Gg	F?g~,g HgW2ҿgTzy?gwmǿg @gW=ֿg	't?g".v1glg.Hꮿg,?g*˿r  )r[  z:The maximum number of subdivisions .50. has been achieved.z-floating point number truncated to an integer)
rZ   r   r  r
   rP   r   r   r/   r  ra   )r,  r  r+   r+   r,   test_ksone_fit_freeze  s$    








rz  c              C   s   t tt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!g}tt | |d"d# tt | d$ j|d"d# tj| d% d& j	}t 
tj| tj|  }t||d&d# d S )'Nr   rG  r   gDB.g8_$g%`OAgjhwHRgWMB@v`g7VY}igۦx\Arg	xg#g/dg3$gegd)gNq{3gيGǓgr4g37'
gfFg?dJgضg2,
gm%gӅJgz;pgɿ{gk2gij<%giVSͶgBR4g
Q/Mg:0yE>)r   y        +=y        |=g|=)rZ   r  listr   r   r/   r2  r$  realimagr   r   )r<   rT   ZderivZderiv_expectedr+   r+   r,   test_norm_logcdf  s    r~  c              C   sd   t ddddddg} t ddd	d
ddg}tj| }t||dd tj|}t|| dd d S )Ni  g      ?g      ?g?g{Gz?gMbP?g~V1?g|N?gba"?g܄4ťY?gOul2;g$%+Ig|=)r]   gvIh%<=)rZ   r   r/   r   r?   r   r   )r<   rT   r  r   r+   r+   r,   test_levy_cdf_ppf/  s    r  c              C   sB   t ddddg} t ddddg}tj| }t||d	d
 d S )Ng  4&kCg(,* EgMraB3Ggd~QJgep[>g}XEQ=gѭEG<g?_%~:g+=)r]   )rZ   r   r/   r   r   r   )r<   rT   r  r+   r+   r,   test_levy_sfG  s    r  c              C   sB   t ddddg} t ddddg}tj| }t||d	d
 d S )NgMbg{Gzg{Gztg~jtXg#]<gOul2;gޢا6g̅7=!gvIh%<=)r]   )rZ   r   r/   r   r   r   )r<   rT   r  r+   r+   r,   test_levy_l_sfS  s    r  c              C   s:   t dddg} tj| }tj|}t|| dd d S )Ng [n<g      ?gGz?gvIh%,=)r]   )rZ   r   r/   r   r   r   r   )r   r<   r   r+   r+   r,   test_levy_l_isf_  s    r  c               C   s|   t tjddddd t tjddddd t tjddddd t tjd	d
d
dd t tjdd
d
dd d S )Ngffffff?i i  i  )g      c@g     h@g=
ףp=?gGz?)g      c@g     h@g{Gz?rX   r  r   )r   r/   rq  r  r   r+   r+   r+   r,   test_hypergeom_interval_1802g  s    r  c              C   sr  t jd t jdddd} tttjj| dddd	 tttjj| ddd
dd	 tttjj| ddd
d tttjj| ddddd tttjj	ddddd tttjj
| ddddd tttjj| ddddd tttjjddddd tttjjddddd tttjj| ddddd tj| dd tj| ddd
 tjdd tjddd
 tjddd
d tj	ddd
d tjtjj	dddd tjj| ddd	 tttjj| ddd
 tttjj| ddd
d	 tttjj| ddd	 tttjj| dd
ddd	 tttjj| dd
ddd tttjj| dd
dddd	 tttjj| dd
ddddd	 tj| dd
ddd d S )Ni  g?gffffff?r   )numr4   ro   g      ?)r2   r   g      ?)r2   r3   g       @re  rA  )r   rc  )r3   )rZ   r   r   r   r  r{   r/   r  r6   r   r?   r   rG   ra   r   r   r6  r  r  )r<   r+   r+   r,   test_distribution_too_many_argsv  s8    r  c              C   sH   t jtddddd} t jtddddd}t| |ddd d S )	Nr  r!  g?r4   gYZ@gMbP?r   )r]   r   )r/   ncx2r?   rZ   rv   Z_cdfvecr   )r)   r*   r+   r+   r,   test_ncx2_tails_ticket_955  s    r  c           	   C   s   t  H t dt ttjdt	dddd tj
dt	ddd} W d Q R X tt|   t  > t dt ttjddd	d ttj
ddd	d
 W d Q R X d S )Nr   r   iT  i^  r4   r   i'  ro   r   gsq6)r   r   r   r   r   r/   r  r6   rZ   rv   r   r   r  r   r   )Zlogvalr+   r+   r,   test_ncx2_tails_pdf  s    
"
r  zmethod, expectedr?   gu%>g	;Q=r6   g<x>gRz\R>r   gʎK$/gԆX1r   gfHu@ge:@c             C   s,   t tj| dddgdd}t||dd d S )Ng?r   r   rW   )r  r	  gV瞯<)r   )r   r/   r  r   )r  rT   r~  r+   r+   r,   test_ncx2_zero_nc  s    r  c              C   s4   t jjdddd} t jjddd}t| |dd d S )NrW   r   r   )r	  r  r   )r	  r   gV瞯<)r   )r/   r  r   r}  r   )r~  rT   r+   r+   r,   test_ncx2_zero_nc_rvs  s    r  c              C   s,   dt dd } ttjjdd| dd d S )NrW   r   g     @r   )r	  r  r   )rZ   rv   r   r/   r  r?   )r  r+   r+   r,   test_ncx2_gh12731  s    r  c              C   sn   t ddddddddd	d
dddg} d\}}tjj| ||d}dddddddddddddg}t||dd d S )Ngю]	@gj%@gb	y/7@g H@gIZ@gXl@g'/2?8@gݰmА@gU@gy]`'@g@g*\@g48c@)r  gh ?8@)r	  r  g      ?g?gy[qD?g        g-q=)r   )rZ   r   r/   r  r   r   )r<   nurN  r   Zsf_expectedr+   r+   r,   test_ncx2_gh8665  s    

r  c              C   s"   t jddd} t| dd d S )Nr   r   )r3   )r/   Zfoldnormr   r?   )r  r+   r+   r,   test_foldnorm_zero  s    r  c              C   s   t j dddgdd} t j ddgdd}tdd |D }t||  t j ddd	g} t j ddg}td
d |D }t||  d S )Ng        g      ?g      ?r   c             s   s   | ]}t jt j|f V  qd S )N)rZ   r   ry   )rA   r   r+   r+   r,   r3    s    z-test_stats_shapes_argcheck.<locals>.<genexpr>r4   g333333@r  c             s   s   | ]}t j|t jf V  qd S )N)rZ   r   ry   )rA   r   r+   r+   r,   r3    s    )r/   r   tupler   r   )Zmv3Zmv2Zmv2_augmentedr+   r+   r,   test_stats_shapes_argcheck  s    
r  c               @   s   e Zd Zdd ZdS )
_distr_genc             C   s   dS )Nr  r+   )r   r<   r)   r+   r+   r,   _pdf  s    z_distr_gen._pdfN)r   r   r   r  r+   r+   r+   r,   r    s   r  c               @   s   e Zd Zdd ZdS )_distr2_genc             C   s   d| | S )Nr  r+   )r   r<   r)   r+   r+   r,   _cdf  s    z_distr2_gen._cdfN)r   r   r   r  r+   r+   r+   r,   r    s   r  c               @   s   e Zd Zdd Zdd ZdS )_distr3_genc             C   s   || S )Nr+   )r   r<   r)   r*   r+   r+   r,   r    s    z_distr3_gen._pdfc             C   s   d| | S )Nr  r+   )r   r<   r)   r+   r+   r,   r    s    z_distr3_gen._cdfN)r   r   r   r  r  r+   r+   r+   r,   r    s   r  c               @   s   e Zd Zdd Zdd ZdS )_distr6_genc             C   s   || | S )Nr+   )r   r<   r)   r*   r+   r+   r,   r  %  s    z_distr6_gen._pdfc             C   s   d| | S )Nr  r+   )r   r<   r)   r*   r+   r+   r,   r  (  s    z_distr6_gen._cdfN)r   r   r   r  r  r+   r+   r+   r,   r  #  s   r  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
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#S )$TestSubclassingExplicitShapesc             C   s$   t ddd}t|jdddd d S )Ndummyr)   )r%  rq   r   )r)   r  )r  r   r6   )r   dummy_distrr+   r+   r,   test_correct_shapes/  s    z1TestSubclassingExplicitShapes.test_correct_shapesc             C   s(   t ddd}tt|jdftdd d S )Nr  A)r%  rq   r   )r)   )r  r  r{   r6   rt   )r   r  r+   r+   r,   test_wrong_shapes_13  s    z1TestSubclassingExplicitShapes.test_wrong_shapes_1c             C   s0   t ddd}tdddd}tt|jdf| d S )Nr  za, b, c)r%  rq   r   r4   ro   )r)   r*   r   )r  rt   r  r{   r6   )r   r  r   r+   r+   r,   test_wrong_shapes_27  s    z1TestSubclassingExplicitShapes.test_wrong_shapes_2c             C   s   t ddd}tttf| d S )Nr  r  )r%  rq   )rt   r  r{   r  )r   r   r+   r+   r,   test_shapes_string<  s    z0TestSubclassingExplicitShapes.test_shapes_stringc             C   s   t ddd}tttf| d S )Nr  z(!))r%  rq   )rt   r  SyntaxErrorr  )r   r   r+   r+   r,   test_shapes_identifiers_1A  s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_1c             C   s   t ddd}tttf| d S )Nr  Z4chan)r%  rq   )rt   r  r  r  )r   r   r+   r+   r,   test_shapes_identifiers_2F  s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_2c             C   s   t ddd}tttf| d S )Nr  zm(fti))r%  rq   )rt   r  r  r  )r   r   r+   r+   r,   test_shapes_identifiers_3J  s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_3c             C   s   t ddd}tttf| d S )Nr  za=2)r%  rq   )rt   r  r  r  )r   r   r+   r+   r,   "test_shapes_identifiers_nodefaultsN  s    z@TestSubclassingExplicitShapes.test_shapes_identifiers_nodefaultsc             C   s   t ddd}tttf| d S )Nr  z*args)r%  rq   )rt   r  r  r  )r   r   r+   r+   r,   test_shapes_argsR  s    z.TestSubclassingExplicitShapes.test_shapes_argsc             C   s   t ddd}tttf| d S )Nr  z**kwargs)r%  rq   )rt   r  r  r  )r   r   r+   r+   r,   test_shapes_kwargsV  s    z0TestSubclassingExplicitShapes.test_shapes_kwargsc             C   s   t ddd}tttf| d S )Nr  za, b, c, lambda)r%  rq   )rt   r  r  r  )r   r   r+   r+   r,   test_shapes_keywordsZ  s    z2TestSubclassingExplicitShapes.test_shapes_keywordsc             C   s@   G dd dt j}|dd}t|jdddt jdd  d S )Nc               @   s   e Zd Zdd ZdS )zFTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_genc             S   s   t j|| S )N)r/   r2  r  )r   r<   r)   r+   r+   r,   r  b  s    zKTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_gen._pdfN)r   r   r   r  r+   r+   r+   r,   	_dist_gena  s   r  r)   )rq   g      ?r4   )r)   )r/   rE   r   r6   r2  )r   r  rB   r+   r+   r,   test_shapes_signature_  s    
z3TestSubclassingExplicitShapes.test_shapes_signaturec             C   s:   G dd dt j}|dd}tt|jdftddd d S )	Nc               @   s   e Zd Zdd ZdS )zSTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_genc             S   s   t j|| S )N)r/   r2  r  )r   r<   r)   r+   r+   r,   r  k  s    zXTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_gen._pdfN)r   r   r   r  r+   r+   r+   r,   r  j  s   r  za, b)rq   g      ?r   r4   )r)   r*   )r/   rE   r  r{   r6   rt   )r   r  rB   r+   r+   r,   "test_shapes_signature_inconsistenth  s    
z@TestSubclassingExplicitShapes.test_shapes_signature_inconsistentc             C   sv   G dd dt j}|dd}t|jdddt jdd  t|ddt jdd  tt|jdftdd d S )	Nc               @   s   e Zd Zdd ZdS )z?TestSubclassingExplicitShapes.test_star_args.<locals>._dist_genc             W   s   |d }t j|| S )Nr   )r/   r2  r  )r   r<   r   extra_kwargr+   r+   r,   r  u  s    zDTestSubclassingExplicitShapes.test_star_args.<locals>._dist_gen._pdfN)r   r   r   r  r+   r+   r+   r,   r  t  s   r  r  )rq   g      ?!   )r  )Zxxx)r/   rE   r   r6   r2  r  r{   rt   )r   r  rB   r+   r+   r,   test_star_argsq  s
    
 z,TestSubclassingExplicitShapes.test_star_argsc             C   sj   G dd dt j}|dd}t|jddddt jdd d  t|dddt jdd d  d S )	Nc               @   s   e Zd Zdd ZdS )zATestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_genc             W   s   |d }t j|| | S )Nr   )r/   r2  r  )r   r<   rq  r   r  r+   r+   r,   r    s    zFTestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_gen._pdfN)r   r   r   r  r+   r+   r+   r,   r    s   r  zoffset, extra_kwarg)rq   g      ?o   r  )rq  r  )r/   rE   r   r6   r2  )r   r  rB   r+   r+   r,   test_star_args_2~  s    
z.TestSubclassingExplicitShapes.test_star_args_2c             C   s<   G dd dt j}|dd}t|jdddt jd d S )Nc               @   s   e Zd Zdd ZdS )zBTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_genc             _   s   | dd}tj|| S )Nr  r   )popr/   r2  r  )r   r<   r   kwargsr  r+   r+   r,   r    s    zGTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_gen._pdfN)r   r   r   r  r+   r+   r+   r,   r    s   r  r  )rq   r   ro   )r  )r/   rE   r   r6   r2  )r   r  rB   r+   r+   r,   test_extra_kwarg  s    
z.TestSubclassingExplicitShapes.test_extra_kwargc             C   s8   G dd dt j}|dd}t|dt jd d S )Nc               @   s   e Zd Zdd ZdS )zDTestSubclassingExplicitShapes.shapes_empty_string.<locals>._dist_genc             S   s   t j|S )N)r/   r2  r6   )r   r<   r+   r+   r,   r    s    zITestSubclassingExplicitShapes.shapes_empty_string.<locals>._dist_gen._pdfN)r   r   r   r  r+   r+   r+   r,   r    s   r   )rq   g      ?)r/   rE   r   r6   r2  )r   r  rB   r+   r+   r,   shapes_empty_string  s    
z1TestSubclassingExplicitShapes.shapes_empty_stringN)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  ,  s"   		r  c               @   sl   e Zd Zdd Zdd Zejjedddd Z	ejjeddd	d
 Z
dd Zdd Zdd Zdd ZdS )TestSubclassingNoShapesc             C   s"   t dd}t|jdddd d S )Nr  )r%  r   )r)   r  )r  r   r6   )r   r  r+   r+   r,   test_only__pdf  s    
z&TestSubclassingNoShapes.test_only__pdfc             C   s"   t dd}t|jdddd d S )Nr  )r%  r   )r)   )r  r   r6   )r   r  r+   r+   r,   test_only__cdf  s    
z&TestSubclassingNoShapes.test_only__cdfzdocstring stripped)rn  c             C   sD   t dd}t|jd t|jd td|j}tt|dk d S )Nr  )r%  r   r)   zlogpdf\(x, a, loc=0, scale=1\))	r  r   numargsrq   refindallrL  r   rr   )r   r  rz  r+   r+   r,   test_signature_inspection  s    
z1TestSubclassingNoShapes.test_signature_inspectionc             C   sD   t dd}t|jd t|jd td|j}tt|dk d S )Nr  )r%  r4   za, bz!logpdf\(x, a, b, loc=0, scale=1\)r   )	r  r   r  rq   r  r  rL  r   rr   )r   r  rz  r+   r+   r,   test_signature_inspection_2args  s    
z7TestSubclassingNoShapes.test_signature_inspection_2argsc             C   s   t ttdd d S )Nr  )r%  )r  r{   r  )r   r+   r+   r,   0test_signature_inspection_2args_incorrect_shapes  s    zHTestSubclassingNoShapes.test_signature_inspection_2args_incorrect_shapesc             C   s*   G dd dt j}tt|ftdd d S )Nc               @   s   e Zd ZdddZdS )z>TestSubclassingNoShapes.test_defaults_raise.<locals>._dist_genr  c             S   s   dS )Nr  r+   )r   r<   r)   r+   r+   r,   r    s    zCTestSubclassingNoShapes.test_defaults_raise.<locals>._dist_gen._pdfN)r  )r   r   r   r  r+   r+   r+   r,   r    s   r  r  )r%  )r/   rE   r  r{   rt   )r   r  r+   r+   r,   test_defaults_raise  s    z+TestSubclassingNoShapes.test_defaults_raisec             C   s*   G dd dt j}tt|ftdd d S )Nc               @   s   e Zd Zdd ZdS )z>TestSubclassingNoShapes.test_starargs_raise.<locals>._dist_genc             W   s   dS )Nr  r+   )r   r<   r)   r   r+   r+   r,   r    s    zCTestSubclassingNoShapes.test_starargs_raise.<locals>._dist_gen._pdfN)r   r   r   r  r+   r+   r+   r,   r    s   r  r  )r%  )r/   rE   r  r{   rt   )r   r  r+   r+   r,   test_starargs_raise  s    z+TestSubclassingNoShapes.test_starargs_raisec             C   s*   G dd dt j}tt|ftdd d S )Nc               @   s   e Zd Zdd ZdS )z<TestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_genc             [   s   dS )Nr  r+   )r   r<   r)   r  r+   r+   r,   r    s    zATestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_gen._pdfN)r   r   r   r  r+   r+   r+   r,   r    s   r  r  )r%  )r/   rE   r  r{   rt   )r   r  r+   r+   r,   test_kwargs_raise  s    z)TestSubclassingNoShapes.test_kwargs_raiseN)r   r   r   r  r  rw   r   rt  DOCSTRINGS_STRIPPEDr  r  r  r  r  r  r+   r+   r+   r,   r    s   
r  zdocstring strippedc              C   s^   dddg} xNt jD ]D}tt |}t|t jt jfrx"| D ]}tt||j	d k q8W qW d S )Nz,\s*,z\(\s*,z^\s*:)
r/   rO   r   r   rD   rE   r   r  searchrL  )ZbadonesdistnamerB   regexr+   r+   r,   r    s    


r  c               C   s4   t tjtjddd t tjtjddd d S )NrW   rE  r   r  g?r   )r   r/   rb  r   rZ   rz   r  r  r+   r+   r+   r,   test_infinite_input  s    r  c              C   s&   t jt jddd} t| d d S )Ng0.++r   )r/   Zlomaxr   r?   r   )r   r+   r+   r,   test_lomax_accuracy  s    r  c              C   s&   t jt jddd} t| d d S )Ng0.++r   )r/   Zgompertzr   r?   r   )r   r+   r+   r,   test_gompertz_accuracy  s    r  c              C   s&   t jt jddd} t| d d S )Ng0.++r   )r/   Z
truncexponr   r?   r   )r   r+   r+   r,   test_truncexpon_accuracy  s    r  c              C   s*   t jt jddd} t| ddd d S )N	   r   g      "@r   )r   )r/   r   r   r   r   )r   r+   r+   r,   test_rayleigh_accuracy   s    r  c           	   C   st   t jdd^} t d tjdd tjdd tjdd tjt	j
 d t| }t|d W dQ R X dS )zregression test for gh-6219T)r  alwaysg      ?r   g        N)r   r   r   r/   r  r?   r6   r   r   rZ   rz   rr   r   )r2  Znumber_of_warnings_thrownr+   r+   r,    test_genextreme_give_no_warnings  s    
r  c              C   s   d} t jd}t|d|  d dd t jd}t|| d dd t jd}t|d t jjd	d
d}t|| d td
 d dd t jd
}t|d|  d dd t jd}t|d|  d dd d S )Ngox?g      r4   r   g+=)r]   r   g      ?g       rW   )r3   ro   iirE  )r/   r  rG   r   r   rZ   r   )Zeuler_gammar   r+   r+   r,   test_genextreme_entropy  s    
 r  c              C   s   d} t j| d}t|d t j|d}t||  d} t j| d}t|d t j|d}t||  d} t j| d}t|d t j|d}t||  d S )	Ng    חAg      g'b%4gQ@g      ?gؗҜ;r   g.l6?)r/   r  r   r   r   )r<   r;   r  r+   r+   r,   test_genextreme_sf_isf+  s    




r  c              C   s"   d} t j| dd}t|d d S )NgؗҜ<r4   ro   gH&8>)r/   r>  r   r   )Zprobry  r+   r+   r,   test_burr12_ppf_small_argW  s    	r  c              C   s  t ddddd } tjj| ddd}t d	d
ddddddddddddddddddg}t||dd tjj| ddd}t ddd d!d"d#d$d%d&d'd(d'd&d%d$d)d*d+d,d-g}t||dd tjj| ddd.dd/}t d0d1d2d3d4d5d6d7d8d9d:d;d:d9d8d7d6d5d4d3g}t||dd tjj| ddd}t d<d=d>d?dd@dAdBdCdDdEdFdGdHdIdJdKdLdMdNg}t||dd tjj| ddd}t dOdPdQdRdSd#dTdUdVdWdXdYdZd[d\d]d^d_d`dNg}t||dd tjj| ddd.dd/}t dad#dbdTdcdUdddVdedWdfdXdgdYdhdZdid[djd\g}t||dd dS )kz
    All values are calculated using the independent implementation of the
    ROOT framework (see https://root.cern.ch/).
    Corresponding ROOT code is given in the comments.
    g      g      @   Nr  g      ?g       @)r   r_  gC,d	Ɣ?gH㸘?g5?gM"M#w?gɫs^?g @?gƴ?g@w?gɫs^?g|?q ?g C?gJó?g,BV\ۤ?g;?g#ek?g%ǓE?g(Ȍx?g>J>gMbP?)r]   g      @g#{`?gdf?g Jq?gSS){?g'	w?guL?g T)?gcAJ?gGTn?gR1#?gA]P?gvӢ?gKq?gL?g
	N<!?gAw>g      ?)r   r_  r2   r3   g=aO}?gI8?g#T?gaW)?gǓI?g
J?gE?d۳?gGTn?g8?gR1#?gkP?g(*T?gD
)?g:3P?g9?g?S[?gOqx?gD
)?g9?gɫs^?gK?gX?g3<֌?gM+?gyS
c?gI`s?g辜?g{i ?g^0?g?g#c?g%r?gc@v?ghtj}?g(˔^?gHK4U?gğ@ _?gy}D?gRr/?gN?gYjhG?ga0L?g4f?g<@?g@CH?g	ސF?g5+-#?g?g?q ?g}'v?g*V?gr/0+?g[8	?gΥ?gY?g#)a?g?̔?g]ؚ?g|c ?)rZ   r   r/   crystalballr6   r   r   r?   )r>  Z
calculatedrT   r+   r+   r,   test_crystalball_functione  sR    














r  c              C   s  t dddddg} t dddddg}t dddddg}tjd| |}t||dd t d	d
dddg}t ddt jddg}|| }tjd| |}t||dd t t jt jt jddg}|| }tjd| |}	t||	dd t t jt jt jt jdg}|| }
tjd| |}t|
|dd t t jt jt jt jdg}|| }tjd| |}t||dd t t jt jt jt jdg}|| }tjd| |}t||dd dS )zg
    All values are calculated using the pdf formula and the integrate function
    of Mathematica
    g       @g      ?g      @g      @g      "@r   gMbP?)r]   gԚh@g[&@gͪ@g2dQ@gn6-@g?ޫV&̿g BgQCRgQF\ jr   g
@gn(@r4   g?Җ)ro   gMg'#@r   g('UHr   N)rZ   r   r/   r  rB  r   rz   )r   r_  Zexpected_0th_momentZcalculated_0th_momentr2  r)   Zexpected_1th_momentZcalculated_1th_momentZexpected_2th_momentZcalculated_2th_momentZexpected_3th_momentZcalculated_3th_momentZexpected_4th_momentZcalculated_4th_momentZexpected_5th_momentZcalculated_5th_momentr+   r+   r,   !test_crystalball_function_moments  s4    r  c              C   sR   t dd} |  }d\}}}t|||}tt| ||}t||dd d S )Nr4   ro   )ir   i@ gHz>)r]   )	r/   r  rG   rZ   r   r   r   r6   r   )cbr  r  r  rs  r<   r{  r+   r+   r,   test_crystalball_entropy  s    
r  c              C   st   ddd} t ddddd	d
ddddddddg}tjj|d| d\}}}t|ddd |dksbtt|ddd dS )a?  
    Test fitting invweibull to data.

    Here is a the same calculation in R:

    > library(evd)
    > library(fitdistrplus)
    > x = c(1, 1.25, 2, 2.5, 2.8,  3, 3.8, 4, 5, 8, 10, 12, 64, 99)
    > result = fitdist(x, 'frechet', control=list(reltol=1e-13),
    +                  fix.arg=list(loc=0), start=list(shape=2, scale=3))
    > result
    Fitting of the distribution ' frechet ' by maximum likelihood
    Parameters:
          estimate Std. Error
    shape 1.048482  0.2261815
    scale 3.099456  0.8292887
    Fixed parameters:
        value
    loc     0

    r+   r   c             S   s   t | |||dddS )Ng-q=)r   dispZxtolZftol)r!   )rf   x0r   r  r+   r+   r,   	optimizer  s    z"test_invweibull.<locals>.optimizerr   g      ?r4   g      @gffffff@ro   gffffff@r   r   r  rW   r   @   c   )ri   r  g`?gh㈵>)r]   g [@N)r+   r   )rZ   r   r/   r   ra   r   rQ   )r  r<   r   r2   r3   r+   r+   r,   test_invweibull  s    
&r  z	df1,df2,xr4   g      g?g      ?gffffff@r   rE  rA     ro   r   c             C   sh   d}t j|| |}t j|| ||}t||dd t j|| |}t j|| ||}t||dd d S )Nr   g+=)r]   gư>)r/   r  r?   r  r   r6   )Zdf1Zdf2r<   r  Zexpected_cdfZcalculated_cdfr_   Zcalculated_pdfr+   r+   r,   test_ncf_edge_case  s    
r  c              C   s"   t jddd} t| ddd d S )Nr4   rc  r   g     `E@g+=)r]   )r/   r  r  r   )r`  r+   r+   r,   test_ncf_variance  s    r  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S )TestHistogramc             C   s   t jd t j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
gd	d}t|| _tjjddddd}t j|dd}t|| _	d S )Ni  r   r4   ro   r   r   rc  rA  r  r  )binsg      ?g      @i'  {   )r2   r3   r   r   r   )
rZ   r   r   	histogramr/   rF   templater2  r   norm_template)r   r  re   Znorm_histogramr+   r+   r,   r   (  s    "zTestHistogram.setup_methodc             C   s   t ddddddddd	d
ddddddddddg}t ddddddddddddddddddddg}t| j|| t| jdd t| jdd t| jdd t| jdd t ddd}t| j|t	j
j|ddddd  d S )!Ng        g      ?g      ?g      ?g       @g      @g      @g      @g      @g      @g      @g      @g      @g      @g      @g      @g       @g      !@g      "@g      #@g{Gz?g{Gz?gQ?g{Gz?g?g      $@rb  r4   rW   )r2   r3   g?)r]   )rZ   r   r  r   r  r6   r   r   r  r/   r2  )r   r&  Z
pdf_valuesr<   r+   r+   r,   r   8  s    zTestHistogram.test_pdfc             C   s  t ddddddddd	d
ddddddddddg}t dddddddddddddddd d!d"ddg}t| j|| t| j|d#d$ |d#d$  t ddd%}t| j| j|| t ddd%}t| j| j|| t d&d#d'}t| j|t	j
j|ddd(d)d* d S )+Ng        g      ?g      ?g      ?g       @g      @g      @g      @g      @g      @g      @g      @g      @g      @g      @g      @g       @g      !@g      "@g      #@g{Gz?g{Gz?g{Gz?gQ?g
ףp=
?gQ?g{Gz?g?g333333?g(\?gRQ?g=
ףp=?g)\(?gGz?r4   r  rX   rb  rW   )r2   r3   g?)r]   )rZ   r   r  r   r  r?   r   r   r  r/   r2  )r   r&  Z
cdf_valuesr<   r+   r+   r,   r   R  s     "zTestHistogram.test_cdf_ppfc             C   s   d}| j j|dd}tt|dk d tt|dkd| dd	 tt|d
kd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|dkd| dd	 tt|d kd!| dd	 tt|d"kd#| dd	 tt|d$kd%| dd	 tt|d&kd| dd	 tt|d&kd| dd	 tt|d&kd d S )'Ni'  r  )r   r   g      ?g        g       @g{Gz?g?)r]   g      @g{Gz?g      @gQ?g?g      @g
ףp=
?g      @gQ?g      @g{Gz?g      @g?g?g      @g      ?g      @g333333?g      @g(\?g      @gRQ?g      @g=
ףp=?g       @g)\(?g      !@gGz?g      "@)r  r   r   rZ   r   r   )r   rs  r$  r+   r+   r,   r   h  s(    zTestHistogram.test_rvsc             C   s:   x4t dD ](}t| j|tdd|dd q
W d S )Nr   g      ?g      @g?)r]   )r   r   r  rB  r/   r2  r   )r   r   r+   r+   r,   	test_munp~  s    zTestHistogram.test_munpc             C   s$   t | j tjjddddd d S )Ng      ?g      @)r2   r3   g?)r]   )r   r  rG   r/   r2  )r   r+   r+   r,   r     s    
zTestHistogram.test_entropyN)	r   r   r   r   r   r   r   r  r   r+   r+   r+   r,   r  '  s   r  c              C   s~   t dd} | jddd}tjt|dd\}}d|   krX|   krXd	ks^n tt	t
|d
 dksztd S )NgMbP?r   i'  r  )r   r   rW   )r  i  iL  i  )r/   Z
loguniformr   rZ   r  log10rF  rG  rQ   r  r  )r  r   r   r   r+   r+   r,   test_loguniform  s
    ,r  c               @   s  e Zd Zdd Zdd Zejddddd	d
gdd Zejddddddgdd Z	ejdddddddddgdd Z
ejd d!d"d#d$d%d&d'd(gd)d* Zejd d+d,d-d.d/d0d1d2gd3d4 Zejd d5d6d7d8d9d:d;d<gd=d> Zejdd?d@dAdBdCdDdEdFgdGdH ZdIS )J	TestArgusc             C   s2   t jjdddd}tt d | dd d S )Nr   i  iE  )r   r   r   )r   )r/   argusr   r   r   )r   r<   r+   r+   r,   test_argus_rvs_large_chi  s    z"TestArgus.test_argus_rvs_large_chic             C   sN   t jjdddd}tt d | dd tt d | dd d S )Ng      @i  i  )r   r   ro   )r   )r/   r  r   r   r   r   )r   r<   r+   r+   r,   test_argus_rvs_ratio_uniforms  s    z'TestArgus.test_argus_rvs_ratio_uniformszchi, expected_mean)r   g щi?)rW   g.憃?)r[  g\paP?)<   g	?)r  g,6?c             C   s"   t jj|dd}t||dd d S )Nr   )r3   gvIh%<=)r]   )r/   r  r   r   )r   r   Zexpected_meanr_  r+   r+   r,   	test_mean  s    zTestArgus.test_meanzchi, expected_var, rtol)r   gLH'B?gvIh%<=)rW   go$?gdy=)r[  g
=>g:0yE>)r  g2W>g:0yE>)r  gb~P>g:0yE>c             C   s"   t jj|dd}t|||d d S )Nr   )r3   )r]   )r/   r  r  r   )r   r   Zexpected_varr]   r`  r+   r+   r,   r    s    zTestArgus.test_varzchi, expected, rtol)g?gwM?g+=)g      ?gj?g+=)g?gHEA`!?g+=)g{Gz?gcف>gV瞯<)gMbP?gF=g+=)g-C6?g߹Q#B=g+=)gư>g0ޟ<g+=)g&.>g*W%:gV瞯<c             C   s   t t|||d d S )N)r]   )r   r   )r   r   rT   r]   r+   r+   r,   test_argus_phi_small_chi  s    
z"TestArgus.test_argus_phi_small_chizchi, expected)g      ?)g-\/?g+p7c?g5Ϧ\?)g?)g
f?gi{?ٸ?gZ@7?)g?)gB	?g]?gR{?)g{Gz?)glͅw?g,?g[Z=?)gMbP?)gz,?g]?gѪ1?)g-C6?)g8<?gE-?gI?)gư>)g~7?g7B.?g9?)g&.>)g;?g9B.?g}5?c             C   s,   t dddg}ttj|||dd d S )Ng?g      ?g?gvIh%<=)r]   )rZ   r   r   r/   r  r6   )r   r   rT   r<   r+   r+   r,   test_pdf_small_chi  s    zTestArgus.test_pdf_small_chi)g      ?)gQ߹?e?grJ,?g򺗄?)g?)gΎd?g?gh?)g?)g|
o?gvb?g+@?)g{Gz?)g̈́On?ge?gC|[3?)gMbP?)g!?m?g{jiH?gu53?)g-C6?)g~m?g0-.?g3?)gư>)g~m?g7;B.?gŗ3?)g&.>)g~m?g9B.?gŗ3?c             C   s,   t dddg}ttj|||dd d S )Ng?g      ?g?g+=)r]   )rZ   r   r   r/   r  r   )r   r   rT   r<   r+   r+   r,   test_sf_small_chi  s    zTestArgus.test_sf_small_chi)g      ?)g+&?gk?gμm/?)g?)g?CL\f?g^N?g]AͭR?)g?)ga>$?g;Lf?gaW?)g{Gz?)gx?g 43n?gwY?)gMbP?)go7🤎?g
+-oGn?gIQ9Y?)g-C6?)gT?gGn?g@̋Y?)gư>)gU?g{Gn?giG͋Y?)g&.>)gDU?g {Gn?gH͋Y?c             C   s,   t dddg}ttj|||dd d S )Ng?g      ?g?g-q=)r]   )rZ   r   r   r/   r  r?   )r   r   rT   r<   r+   r+   r,   test_cdf_small_chi  s    zTestArgus.test_cdf_small_chi)g      ?)gQ)?g6{?g-q=)gB`"۹?)g?g8%?gdy=)g?)g388?gV%?gvIh%<=)g{Gz?)g*j?gRS%?gvIh%<=)gMbP?)g!|?gZ%?gvIh%<=)g-C6?)gy[|?gG%?gvIh%<=)gư>)g"3|?gW%?gvIh%<=)g&.>)g!3|?gW%?gvIh%<=c             C   s"   t jj |dd}t|||d d S )Nre  )r  )r]   )r/   r  r   )r   r   rT   r]   r   r+   r+   r,   test_stats_small_chi  s    zTestArgus.test_stats_small_chiN)r   r   r   r  r  rw   r   ro  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s~   r  c               @   s   e Zd Zdd Zdd Zejddddgejd	d
ddgejddddgdd Zejd	d
ddgejddddgdd Z	dS )TestNakagamic             C   s$   d}d}t j||}t|d d S )Ng      @r!  gM+)r/   nakagamir   r   )r   r  r<   rm  r+   r+   r,   rn    s    zTestNakagami.test_logpdfc             C   sD   d}d}t j||}t|ddd t j||}t||dd d S )Ng      @g      @g"S+:gvIh%<=)r]   )r/   r  r   r   r   )r   r  r  r   r  r+   r+   r,   r    s    zTestNakagami.test_sf_isfr  g?g      @g333333@r2   g      9@rW   #   r3   r~  r   r  c       
         s   d t jj |||ddt j\}}}t||dd t||dd t||dd fdd} fdd	} fd
d}	t||||ddd t||||ddd t|	|||ddd d S )NrX   i9  )r   r  r2   r3   r   g?)r]   c                s<   d|  d t d |   d|  |d  t  |   S )Nrb  r   r4   )rZ   r   )r  r2   r3   )r'  r+   r,   	dlogl_dnu1  s    z(TestNakagami.test_fit.<locals>.dlogl_dnuc                sN    dt |  td|   dt t | |   t | | d  S )Nr   r   r4   )rZ   r   r   r   )r  r2   r3   )rs  r'  r+   r,   
dlogl_dloc5  s    z)TestNakagami.test_fit.<locals>.dlogl_dlocc                s2   d  |  | d|  |d  t | d   S )Nrb  r4   ro   )rZ   r   )r  r2   r3   )rs  r'  r+   r,   dlogl_dscale:  s    z+TestNakagami.test_fit.<locals>.dlogl_dscaler   gMbP?)r   )r/   r  r   ra   r   )
r   r  r2   r3   nu_estloc_est	scale_estr  r  r  r+   )rs  r'  r,   r  #  s    
zTestNakagami.test_fitc             C   s   d}d}t jj||||dd}t jj||d\}}}t|}	tt|| d }
t||dd t||	dd t||
dd d S )	Ng      ?rX   i9  )r   r  r2   r3   r   )rl   r4   gHz>)r]   )	r/   r  r   ra   rZ   rF  r  r   r   )r   r2   r3   r  r   r'  r  r  r  Zloc_theoZ
scale_theor+   r+   r,   test_fit_nuB  s    

zTestNakagami.test_fit_nuN)
r   r   r   rn  r  rw   r   ro  r  r  r+   r+   r+   r,   r    s    r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestWrapCauchyc             C   sr   t ddgddgg}t dgdgg}tj||}|jdksDtdd	 t ||fD }t|	 |d
d d S )NgQ?g      ?g      ?g      ?g      ?g      @)r4   r4   c             S   s   g | ]\}}t j||qS r+   )r/   
wrapcauchyr?   )rA   r  r3  r+   r+   r,   rC   `  s   z>TestWrapCauchy.test_cdf_shape_broadcasting.<locals>.<listcomp>gvIh%<=)r]   )
rZ   r   r/   r  r?   r   rQ   Znditerr   r/  )r   r   r<   r   Zscalar_valuesr+   r+   r,   test_cdf_shape_broadcastingX  s    z*TestWrapCauchy.test_cdf_shape_broadcastingc             C   s"   t jtjd}t|ddd d S )NgQ?g      ?g+=)r]   )r/   r  r?   rZ   r8   r   )r   r   r+   r+   r,   test_cdf_centerd  s    zTestWrapCauchy.test_cdf_centerc             C   s   d}d}d}t j||g|}d| d|  }t|d t|t|d  tj  t|d dt|ttj|d   tj   d S )Ng      ?g      @g      ?r   r   r4   )r/   r  r?   r   rZ   Zarctantanr8   )r   r  r  r   r   crr+   r+   r,   r   h  s    (zTestWrapCauchy.test_cdfN)r   r   r   r  r  r   r+   r+   r+   r,   r  V  s   r  c           	   C   s>   G dd dt j} | dd}ttj |  W d Q R X d S )Nc               @   s   e Zd Zdd ZdS )z1test_rvs_no_size_warning.<locals>.rvs_no_size_genc             S   s   dS )Nr   r+   )r   r+   r+   r,   _rvst  s    z6test_rvs_no_size_warning.<locals>.rvs_no_size_gen._rvsN)r   r   r   r  r+   r+   r+   r,   rvs_no_size_gens  s   r  rvs_no_size)r%  )r/   rE   r   rZ   ZVisibleDeprecationWarningr   )r  r  r+   r+   r,   test_rvs_no_size_warningr  s    
r  zdistname, argsc             C   s   | t krtd|  d tt| }t|tjrt|dkrb|j| \}}t	|t
j t	|t
j d\}}|j|||f \}}t	|t
j t	|t
j n&|j| \}	}
t	|	t
j t	|
t
j d S )Nz6skipping test for the support method for distribution .r   )r   r  )$skip_test_support_gh13294_regressionrw   r  r   r/   r   rE   rr   supportr   rZ   ry   )r  r   rB   a0b0r  r  a1b1r)   r*   r+   r+   r,   test_support_gh13294_regression}  s    
r  c              C   sh  t jddddgddddg\} }ttj tj tj tjg}ttjtjtjtjg}t| | t|| | j|jkst	|j|jkst	t jg g \}}tg tg  }}t|| t|| |j|jkst	|j|jkst	t jddddgdg\}}	tdtjg }
tdtjg }t||
 t|	| |j|
jksRt	|	j|jksdt	d S )Nr   r   r  r   )
r/   r2  r  rZ   r   rz   ry   r   r   rQ   )r	  r
  Zex_a0Zex_b0r  r  Zex_a1Zex_b1r  r  Zex_a2Zex_b2r+   r+   r,   ,test_support_broadcasting_gh13294_regression  s(    " 





r  zx, expected)gn!	g:I"<)gQ	@gE?c             C   s*   t tj| | t tj|  | d S )N)r   r/   cosiner?   r   )r<   rT   r+   r+   r,   test_cosine_cdf_sf  s    r  zp, expected)gư>gkM6O)gFFg<g0ӭ!	)g333333?g;'u(@c             C   s*   t tj| | t tj| |  d S )N)r   r/   r  r   r   )r   rT   r+   r+   r,   test_cosine_ppf_isf  s    r  c              C   sT   dd t D } dd tD }| |ks(tdd tD }dd tD }||ksPtd S )Nc             S   s   h | ]\}}t |tr|qS r+   )r   rJ   )rA   r%  r   r+   r+   r,   	<setcomp>  s    z*test_distr_params_lists.<locals>.<setcomp>c             S   s   h | ]\}}|qS r+   r+   )rA   r%  r   r+   r+   r,   r    s    c             S   s   h | ]\}}|qS r+   r+   )rA   r%  r   r+   r+   r,   r    s    c             S   s   h | ]\}}|qS r+   r+   )rA   r%  r   r+   r+   r,   r    s    )r   r   rQ   r   r   )Zdiscrete_distnamesZinvdiscrete_distnamesZcont_distnamesZinvcont_distnamesr+   r+   r,   test_distr_params_lists  s    r  )N)rL  r   r  r  r  r  rc  platformZnumpy.testingr   r   r   r   r   r   r   r	   r
   rw   r   r  r7   rZ   r   r   Znumpy.lib.recfunctionsr   r.   r   Zscipy._lib._utilr   rZ  r   r   r   r   Zscipy.statsr/   Z!scipy.stats._distn_infrastructurer   Zscipy.stats.distributionsZscipy.specialr   r   r   Zscipy.stats._distr_paramsr   r   Ztest_discrete_basicr   r   Zscipy.stats._continuous_distnsr   r   Zscipy.optimizer    r!   	itertoolsr"   flagsoptimizer  machineru  r  r-   r1   r>   r@   rU   rY   r[   r\   r   ro  r`   rh   r}   r   r   r   r   r   r   r   r   r   r   r  r  r)  r,  r4  r:  r@  rl  rp  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r#  r6  r:  rB  rG  rK  rM  rX  r_  ra  re  rh  rv  rx  r{  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r!  r%  r6  r9  r=  rF  rd  rf  rg  rj  rt  rk  rl  ro  rp  rr  rs  rt  rv  rw  rx  ry  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rE   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  r  r  r  r  r+   r+   r+   r,   <module>   s  ,
.	
H $&5# \ 'E( w:?* $ l)+ !-:v,U* V
 o h =E6,\^K 	
&(
(
	x;
,G.!0a	lY 

