B
    `                @   s8  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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 ddlm Z  dd
l!m"Z" ddl#Zddl$m%Z% ddl&m'Z' ej(j)dkZ*d+ddZ+dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1ej23ddddd d!d"d#d$d%d&d'd(d)d*gd+d, Z4G d-d. d.e5Z6G d/d0 d0e5Z7G d1d2 d2e5Z8G d3d4 d4e5Z9G d5d6 d6e5Z:G d7d8 d8e5Z;G d9d: d:e5Z<G d;d< d<e5Z=G d=d> d>e5Z>G d?d@ d@e5Z?G dAdB dBe5Z@G dCdD dDe5ZAG dEdF dFe5ZBG dGdH dHe5ZCG dIdJ dJe5ZDG dKdL dLe5ZEG dMdN dNe5ZFG dOdP dPe5ZGG dQdR dRe5ZHG dSdT dTe5ZIG dUdV dVe5ZJG dWdX dXe5ZKG dYdZ dZe5ZLG d[d\ d\e5ZMG d]d^ d^e5ZNG d_d` d`e5ZOG dadb dbe5ZPdcdd ZQdedf ZRG dgdh dhe5ZSG didj dje5ZTG dkdl dle5ZUG dmdn dne5ZVG dodp dpe5ZWG dqdr dre5ZXG dsdt dte5ZYG dudv dve5ZZG dwdx dxe5Z[G dydz dze5Z\G d{d| d|e5Z]G d}d~ d~e5Z^G dd de5Z_G dd de5Z`G dd de5ZaG dd de5ZbG dd de5ZcG dd de5ZdG dd de5Zedd ZfG dd de5ZgG dd de5ZhG dd de5ZiG dd de5ZjG dd de5ZkG dd de5ZlG dd de5ZmG dd de5ZnG dd de5ZoG dd de5ZpG dd de5ZqG dd de5ZrG dd de5ZsG dd de5Ztdd Zudd Zvdd Zwdd Zxej2jye*dddd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ ZddԄ Zddք Zdd؄ Zej23ddeddgfdeddgfdeddgfdeddgfgdd Zdd Zdd Zdd ZG dd de jZG dd de jZG dd de jZG dd de jZG dd de5ZG dd de5Zej2jye*dddd Zdd Zd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 Zej23dddddddgfddddddgfdddddddgfgdd  Zd!d" ZG d#d$ d$e5Zd%d& ZG d'd( d(e5Zd)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)
argsreduce)xlogy   )distcontc             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   S/home/dcms/DCMS/lib/python3.7/site-packages/scipy/stats/tests/test_distributions.py_assert_hasattr#   s    r   c               C   s   t tjjd d S )NZf_gen)r   scipystatsdistributionsr   r   r   r   test_api_regression)   s    r    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)r!   r"   r   r#   )r   r$   r   cdfr&   r'   )r(   r)   r*   r+   r,   r   r   r   check_vonmises_cdf_periodic3   s    r/   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   )r&   r'   r-   r/   )r(   r+   r   r   r   test_vonmises_pdf_periodic8   s    
r3   c               C   s&   t tjjtj  t tjjtj d S )N)r   r   Zvonmises_liner   npr'   r   r   r   r   r   test_vonmises_line_supportD   s    r5   c              C   s   t d} t| dd d S )Ni   r   g      ?)r   r$   r   r.   )r,   r   r   r   test_vonmises_numericalI   s    
r6   distalpha	betaprimeZfatiguelifeinvgammainvgaussZ
invweibullZ	johnsonsblevyZ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)dictr   getattrr   r   r%   r   r   logpdfr4   infr   )r7   dctargsr   r   r   test_supportN   s    
rE   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  )r4   randomseed)selfr   r   r   setup_methoda   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      r2   )size)r#   2   
AllInteger   .   )r      )r   randintrvsr   r&   alllenshapedtypecharr   
isinstanceZ
ScalarTypereprtype)rI   valsvalr   r   r   test_rvsd   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   $   rK   rL   g{Gz?)r&   r_wherer   rS   pmfr   )rI   r(   outr]   r   r   r   test_pdfq   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`   r2   rL   rK   g      ?g      @r   g      9@   )decimal)	r4   linspacer&   floorselectr   rS   r.   r   )rI   r+   r(   rd   r]   r   r   r   test_cdfw   s
    
*zTestRandInt.test_cdfN)__name__
__module____qualname__rJ   r_   re   rk   r   r   r   r   rF   `   s   rF   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  )r4   rG   rH   )rI   r   r   r   rJ      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 )Nr1   g      ?)r#   rN   )rM   r   rO   rR   )r   binomrT   r   r&   rU   rW   rX   rY   r   rZ   intndarray)rI   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 )Nr2   r   r   g      ?gV瞯<)rtolatol)r   rp   rc   r   )rI   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 )Nr#   g      ?g      ?g        g      ?)	r   rp   r4   r   sumr   entropyr   r   )rI   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errorr#   r   )np)	warningscatch_warningssimplefilterRuntimeWarningr   r   rp   meanstd)rI   r   r   r   test_warns_p0   s    
zTestBinom.test_warns_p0N)rl   rm   rn   rJ   r_   rw   r}   r   r   r   r   r   ro      s
   ro   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  )r4   rG   rH   )rI   r   r   r   rJ      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      ?)r#   rN   )rM   r   r   rO   rR   )r   	bernoullirT   r   r&   rU   rW   rX   rY   r   rZ   rq   rr   )rI   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   r4   logry   r   r   )rI   r   r{   r|   r   r   r   r}      s    




zTestBernoulli.test_entropyN)rl   rm   rn   rJ   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)r4   logspacer   Zbradfordr.   ppfr   )rI   cr+   qxxr   r   r   test_cdf_ppf   s
    zTestBradford.test_cdf_ppfN)rl   rm   rn   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  )r4   rG   rH   )rI   r   r   r   rJ      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 )Nr1   g      ?)r#   rN   )rM   r   rO   rR   )r   nbinomrT   r   r&   rU   rW   rX   rY   r   rZ   rq   rr   )rI   r]   r^   r   r   r   r_      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   r4   expr   r   logpmfrc   r   r   )rI   r^   r   r   r   rw      s    zTestNBinom.test_pmfN)rl   rm   rn   rJ   r_   rw   r   r   r   r   r      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  )r4   rG   rH   )rI   r   r   r   rJ      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  )rM   random_stateg?T)r   geninvgausskstestrT   r.   r   )rI   gig_r   r   r   r   test_rvs_with_mode_shift   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  )rM   r   g?T)r   r   r   rT   r.   r   )rI   r   r   r   r   r   r   test_rvs_without_mode_shift   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  )rM   r   g?T)r   r   r   rT   r.   r   )rI   r   r   r   r   r   r   test_rvs_new_method   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  )rM   r   r   g?)r   r   rT   r   r.   )r   r   r   rT   r   r   r   my_ks_check	  s    z4TestGenInvGauss.test_rvs_p_zero.<locals>.my_ks_checkr   g?Tg?g      ?)r   )rI   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      r#   r1   i  )rM   r   r   g      ?)r   r   r   rT   )rI   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  )rM   r   r   r   r;   )rD   g333333?Tr2   g{Gz?r1   )r   r   r"   )r   r   rT   r   r   r4   rh   r%   r   r;   r.   )rI   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?rK   r1   g      ?r   )r4   r   rh   r   r   r   r%   )rI   Z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    >ArN   r#   )r   r   r   r%   )rI   r   r   r   test_pdf_zero.  s    zTestGenInvGauss.test_pdf_zeroN)rl   rm   rn   rJ   pytestmarkslowr   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  )r4   rG   rH   )rI   r   r   r   rJ   7  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      rP   r   g      ?)r   r   g&.>)rt   )r4   r   r   norminvgaussr.   r   )rI   Zr_cdfx_testvals_cdfr   r   r   
test_cdf_R:  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   rP   r   g      ?)r   r   g&.>)rt   )r4   r   r   r   r%   r   )rI   Zr_pdfr   Zvals_pdfr   r   r   r   F  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      ?r#   rR   g      @r      mvsk)moments)r4   sqrtr   r   r   )rI   r   r   gammaZv_statsr   r   r   
test_statsN  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+?)r4   r   r   r   r   r   r.   )rI   r   r   r   r]   r   r   r   test_ppfU  s    zTestNormInvGauss.test_ppfN)rl   rm   rn   rJ   r   r   r   r   r   r   r   r   r   6  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  )r4   rG   rH   )rI   r   r   r   rJ   ]  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      ?)r#   rN   )rM   r   rO   rR   )r   geomrT   r   r&   rU   rW   rX   rY   r   rZ   rq   rr   )rI   r]   r^   r   r   r   r_   `  s    zTestGeom.test_rvsc             C   s(   t jdddgd}t|dddg d S )Nr   r#   rR   g      ?g      ?g      ?)r   r   rc   r   )rI   r]   r   r   r   rw   k  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   r#   rR   g      ?gV瞯<r   )rs   rt   g        )r4   r   r   r   rc   r   r   r   )rI   ru   rv   r^   r   r   r   test_logpmfo  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   r#   rR   g      ?g      ?g      ?)r   r   r.   sfr   r   )rI   r]   vals_sfexpectedr   r   r   test_cdf_sfy  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   r#   rR   g      ?g      ?g      ?)	r   r   logcdflogsfr   r   r4   r   log1p)rI   r]   r   r   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   )rI   r]   r   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+=)rt   )r   r   r   r   )rI   r   r   r   test_ppf_underflow  s    zTestGeom.test_ppf_underflowN)rl   rm   rn   rJ   r_   rw   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 )
TestPlanckc             C   s   t jd d S )Ni  )r4   rG   rH   )rI   r   r   r   rJ     s    zTestPlanck.setup_methodc             C   s0   t jdddgd}tdddg}t|| d S )Nr   r#   rR   g      @g|dy?g8'\>ggrU!>)r   planckr   r   r   )rI   r]   r   r   r   r   test_sf  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   )rI   r]   r   r   r   r   
test_logsf  s    zTestPlanck.test_logsfN)rl   rm   rn   rJ   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   r#   rR   )r   gennormr%   laplacer   )rI   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   r#   rR   g;f?)r"   )r   r   r%   normr   )rI   r   r   r   r   r   r   	test_norm  s    
zTestGennorm.test_normN)rl   rm   rn   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 )TestHalfgennormc             C   s2   dddg}t j|d}t j|}t|| d S )Nr   r#   rR   )r   halfgennormr%   exponr   )rI   r   r   r   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   r#   rR   g;f?)r"   )r   r   r%   Zhalfnormr   )rI   r   r   r   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   r#   rR   g
(?)r   r   r%   r   r   )rI   r   r   r   r   r   r   test_gennorm  s    
zTestHalfgennorm.test_gennormN)rl   rm   rn   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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  )r4   rG   rH   )rI   r   r   r   rJ     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   r#   g      g      ?rR      )r!   r"   gfO?gl@rK   )r   	truncnormr   r4   r   nanr   )rI   r]   r   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   r#   g      g      ?rR   r   )r!   r"   rK   gl@gfO?)r   r   isfr4   r   r   r   )rI   r]   r   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   r1   )rM   )r1      )r   r   rT   r   minmax)rI   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)r2   r0   r   r   r1   )rM   )i  i  )i'  i'  )ii)r   r   rT   r   r   r   str)rI   r   r   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 )NrR   r   r   g       @r   r   g      ?g        gd._MT
@gBKg?r#   g      ?gĖy	@gdv*?g,mj%V?g      ?)r4   r   rB   r   r   r.   r   r%   r   r   r   sign)rI   r   r   xvalsxmidcdfssfspdfsexpected_cdfsexpected_sfsexpected_pdfspvalsppfsexpected_ppfsr%   r   r   r   test_gh_9403_nontail_values  s4    


 

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<r#   g      ?gEC@g i?gspXio)>g      ?r   )r4   r   rB   r   r   r.   r   r%   r   r   r   r   rh   )rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   Zxvals2r   r   r   test_gh_9403_medium_tail_values  sB    


 


 00z-TestTruncnorm.test_gh_9403_medium_tail_valuesr   c             C   s^   |d d \}}}}t jj ||dd\}	}
}}t|	| t|
| t|||d t|| d S )Nr   r   )r   )rg   )r   r   r   )rI   r   r   r   	decimal_sZm0Zv0s0Zk0mvr*   r(   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 )9NirL   r   r   g        ir1   r   rR   gMFmz%?gſr#   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@r   r   gGC@gy?)r   r4   rB   )rI   r   r   r   test_momentsC  s    	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   r   r4   rB   r   )rI   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)r1   rP   r   r   r1   )rM   )r   r   rT   r   r   r   )rI   r   r   r+   r   r   r   test_gh_1489_trac_962_rvsb  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 )Nir1   r   ir   r   rK   i-   )rM   r   )axis)r4   rB   r   r   rT   rV   rW   AssertionErrorr   rU   r   r   )rI   r   r   r+   r   r   r   test_gh_11299_rvsh  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   rK   )rM   r   )r   r4   rG   r   r   rT   r  )rI   r   r   r   test_rvs_Generatorr  s    z TestTruncnorm.test_rvs_GeneratorN)r   )rl   rm   rn   rJ   r   r   r   r   r   r   r   r   r   Zxfail_on_32bitr   r  r  r  r  r   r   r   r   r     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 )TestHypergeomc             C   s   t jd d S )Ni  )r4   rG   rH   )rI   r   r   r   rJ   y  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 )N   r1   rR   )r#   rN   )rM   r   rO   )r   	hypergeomrT   r   r&   rU   rW   rX   rY   r   rZ   rq   rr   )rI   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	  rN   i  r#   gkㅒP?r   )r   r  rc   r   )rI   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   r#   r   g      ?r   g        )r   r   r  rc   )rI   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   rL   io i  if0  g      ?)r   r   r  r.   )rI   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     @rR   gffffff@g333333@r   gffffff@g@rK   g     @g     @c                s"   g | ]}t j   |qS r   )r   r  r   ).0Zeaten)orangespearsquantiler   r   
<listcomp>  s   z1TestHypergeom.test_precision2.<locals>.<listcomp>r   gpR(g㘍R2gJޱ p9g?Mf=g
G?r   gƠ>)rt   rs   g     @g     @g     @g     @g)9g"1)r4   r   r   r   r  r   )rI   Zfruits_eatenresr   Z	quantilesres2Z	expected2r   )r  r  r  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   r  ry   r4   r   rx   r   r   r   )rI   hgr|   rz   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rR   )rg   r   i@  iX  i,  g_7	j$rP   )r   r  r   r   )rI   r(   r  r   r  resultr   r   r   r   r     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)\UrR   )rg   r   i@  rN   i,  g*@VrP   }      i  gר)r   r  r   r   r4   r   full)rI   r(   r  r   r  r  r   r   r   r   test_logcdf  s8    zTestHypergeom.test_logcdfN)rl   rm   rn   rJ   r_   r  r  r  r  r}   r   r  r   r   r   r   r	  x  s   
	r	  c               @   s   e Zd Zdd ZdS )TestLoggammac             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   rK   Zmsvk)r   r   )rg   )r4   r   reshaper   Zloggammar   )rI   tabler   r   varskewZkurtcomputedr   r   r   r     s    

zTestLoggamma.test_statsN)rl   rm   rn   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 )TestLogisticc             C   s2   t dd}tj|}tj|}t|| d S )Nir
  )r4   rh   r   logisticr.   r   r   )rI   r+   yr   r   r   r   r     s    zTestLogistic.test_cdf_ppfc             C   s2   t dd}tj|}tj|}t|| d S )Nir
  )r4   rh   r   r&  r   r   r   )rI   r+   r'  r   r   r   r   test_sf_isf  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   )rI   r   Zdesiredr   r   r   test_extreme_values%  s    z TestLogistic.test_extreme_valuesN)rl   rm   rn   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 )

TestLogserc             C   s   t jd d S )Ni  )r4   rG   rH   )rI   r   r   r   rJ   .  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      ?)r#   rN   )rM   r   rO   rR   )r   logserrT   r   r&   rU   rW   rX   rY   r   rZ   rq   rr   )rI   r]   r^   r   r   r   r_   1  s    zTestLogser.test_rvsc             C   s   t jdd}t|d d S )Nr   g#B;g&Y3)r   r+  rc   r   )rI   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   )rI   r   r   r   r   test_mean_small_pJ  s    zTestLogser.test_mean_small_pN)rl   rm   rn   rJ   r_   r,  r-  r   r   r   r   r*  -  s   r*  c               @   s   e Zd Z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   r4   rB   r   r   r   )rI   r   r   r*   r(   r   r   r   r   V  s^    











zTestPareto.test_statsc             C   s:   d}d}d}t jj||d|d}|| | }t|| d S )Ng    eAr#   g      ?r   )r!   r"   )r   r/  r   r   )rI   r+   r   r"   r   r   r   r   r   r     s    zTestPareto.test_sfN)rl   rm   rn   r   r   r   r   r   r   r.  U  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      ?)	r4   asarrayr   	genpareto_get_supportr   r   isposinfr   )rI   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      $@rL   g      ?r1   )
r   r2  r4   rh   r   r%   r   r.   r   r   )rI   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      $@rL   g        g      ?r1   r   )r   r2  r4   rh   r   r%   uniformr.   r   r   rA   )rI   r6  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   r2  r   r%   r4   rB   r.   r   isneginfrA   )rI   r6  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   r1   rL   )r   r   )g+=g+g-q=)rt   )g+=g+=)r4   rh   r   r2  r%   r   r.   )rI   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   rL   F)endpointg      ?)g        g      )g+=g+)rt   )r4   ra   r   rh   r   r2  r   r   )rI   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   rL   F)r?  g      ?)g        g      )g+=g+)rt   )r4   ra   r   rh   r   r2  r   r   )rI   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   rL   F)r?  g      ?)g:0yE>gC]r2gV瞯<gV瞯ҼgV瞯<)rt   )	r4   ra   r   rh   r   r   r2  r.   r   )rI   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   r2  r   r   )rI   logpr   r   r   r     s    zTestGenpareto.test_logsfzc, expected_statsr   r   r#   r   g      ?gUUUUUU?gqq@r1   gqq?g      ?g$I$	?grq?r   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瞯<)rs   rt   )r   r2  r   )rI   r   Z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%<=)rs   )r   r2  r"  r   )rI   r   r   r   r   test_var  s    zTestGenpareto.test_varN)rl   rm   rn   r5  r7  r9  r;  r=  r@  rA  rB  r   r   r   parametrizer4   r   r   r   rD  r   r   r   r   r0    s    

	r0  c               @   s,   e Z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  )r4   rG   rH   )rI   r   r   r   rJ     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?)r#   rN   )rM   ZAllFloatg      ?rR   )r   pearson3rT   r   r&   rW   rX   rY   r   rZ   floatrr   rV   )rI   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 )Nr#   g        g?g?gtT?g+q?g?gư>)rt   r   gND}i?r   r   r   r   gj?gdC?gs?g'M?)r   rG  r%   r   r4   r   )rI   r]   r   r   r   re   !  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 )Nr#   g        g?g?grE?gTp]0?g~?gư>)rt   r   g E&"J?r   r   r   r   giZ*J?gh+8w?gcK?g|<x6?gG?)r   rG  r.   r   r4   r   )rI   r]   r   r   r   rk   +  s    
zTestPearson3.test_cdfN)rl   rm   rn   rJ   r_   re   rk   r   r   r   r   rF    s   
rF  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.   r2  r   )rI   r+   r|   r(   r]   	vals_compr   r   r   test_cdf_genpareto7  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   rK   r1   g        r   rR   )r4   rh   r   rJ  r.   
genextremer   )rI   r+   r|   r(   r]   rK  r   r   r   test_cdf_genextremeB  s    zTestKappa4.test_cdf_genextremec             C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr   r1   g      ?g        )r4   rh   r   rJ  r.   r   r   )rI   r+   r|   r(   r]   rK  r   r   r   test_cdf_exponK  s    zTestKappa4.test_cdf_exponc             C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr   rK   r1   g        )r4   rh   r   rJ  r.   Zgumbel_rr   )rI   r+   r|   r(   r]   rK  r   r   r   test_cdf_gumbel_rT  s    zTestKappa4.test_cdf_gumbel_rc             C   s@   t ddd}d}d}tj|||}tj|}t|| d S )Nr   rK   r1   g      g        )r4   rh   r   rJ  r.   r&  r   )rI   r+   r|   r(   r]   rK  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   rK   r1   g      ?)r4   rh   r   rJ  r.   r8  r   )rI   r+   r|   r(   r]   rK  r   r   r   test_cdf_uniformf  s    zTestKappa4.test_cdf_uniformc             C   s   t dd d S )Nr   r#   )r   rJ  )rI   r   r   r   test_integers_ctoro  s    zTestKappa4.test_integers_ctorN)
rl   rm   rn   rL  rN  rO  rP  rQ  rR  rS  r   r   r   r   rI  6  s   					rI  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  )r4   rG   rH   )rI   r   r   r   rJ   v  s    zTestPoisson.setup_methodc             C   sB   t d}tjdddg|}d|d |d d g}t|| d S )Nr#   r   r   g      ?r   )r4   r   r   poissonrc   r   )rI   Zln2r]   r   r   r   r   test_pmf_basicy  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   r#   gffffff?)r   r   )r   rU  rc   r   intervalr   )rI   r]   r   rW  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      ?)r#   rN   )rM   r   rO   rR   )r   rU  rT   r   r&   rU   rW   rX   rY   r   rZ   rq   rr   )rI   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   r#   g      ?)r   rU  r   r4   r   r   rB   )rI   r   r  r   r   r   r   r     s     &zTestPoisson.test_statsN)rl   rm   rn   rJ   rV  rX  r_   r   r   r   r   r   rT  u  s
   	rT  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  )r4   rG   rH   )rI   r   r   r   rJ     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   r#   rR   r1   r2   i  r   g      ?r   g      ?r#   g        )r4   r   r   r   gammalnr   r   ksoner   r   kstwor.   r   )rI   r   r+   v1lgelgr   r   r   r   r   rk     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   r   )r   r#   rR   r1   r2   i  g      ?g      ?r#   )r4   rh   r   r   r   rZ  r   r   r[  r   r   r\  r   )rI   r+   r   r]  r^  r_  r   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   r#   r   r   rN   r2      i  i  i  g:0yE>)r4   rh   r   r   r\  r.   Zdiffr	   )rI   r+   ns_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   r   )r   r#   rR   r1   r2   i  )r4   rh   r   r\  r.   r   r   )rI   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   r   )r   r#   rR   r1   r2   i  )r4   rh   r   r   r\  r.   r   r   )rI   r+   r   rc  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   r   )r   r#   rR   r1   r2   i  g      ?gGz?g-C6?)rs   )r4   rh   r   r\  r.   r   r   )rI   r+   r   rc  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   r   )r   r#   rR   r1   r2   i  g      ?g      ?g-C6?)rs   )r4   rh   r   r\  r   r   r   )rI   r+   r   rc  Zvals_isfrg  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   r   )r   r#   rR   r1   r2   i  g      ?g      ?)r4   rh   r   r   r\  r.   r   r   )rI   r+   r   rc  r   rg  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   r   )r   r#   rR   r1   r2   i  g      ?gffffff?)r4   rh   r   r   r\  r   r   r   )rI   r+   r   rc  r   rg  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   r   )r   r#   rR   r1   r2   i  )r4   rh   r   r\  r   r.   r   )rI   rd  r   rc  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 )3Nr1   rN   r2   r`  i  i  g      ?gUUUUUU?g      ?r   r#   rR   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㈵>)rs   )
r4   r   	enumerater   r   r'   r   r\  r.   r   )rI   ra  Zratiosr   idxr   r+   r   r   r   r   test_simard_lecuyer_table1  s    "z$TestKSTwo.test_simard_lecuyer_table1N)rl   rm   rn   rJ   rk   r   re  r   rf  rh  ri  rj  rk  r   rn  r   r   r   r   rY    s   
		
rY  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  )r4   rG   rH   )rI   r   r   r   rJ   ,  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      ?)r#   rN   )rM   r   rO   rR   )r   zipfrT   r   r&   rU   rW   rX   rY   r   rZ   rq   rr   )rI   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   rp  r   r4   isfiniter   rB   rU   )rI   r   r   r*   r(   r   r   r   r   :  s
    zTestZipf.test_momentsN)rl   rm   rn   rJ   r_   r   r   r   r   r   ro  +  s   ro  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  )r4   rG   rH   )rI   r   r   r   rJ   E  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      ?)r#   rN   )rM   rO   rR   g?)r   dlaplacerT   r   r&   rW   rX   rY   r   rZ   rq   rr   )rI   r]   r^   r   r   r   r_   H  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   r#   r   )r   r   g      @g+=g:0yE>)rt   rs   )r   rt  r4   arangerc   rx   r   r   )rI   r   dlr   r   r*   r(   r  r   ppm2Zm4r   r   r   r   S  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      
@)r4   r   r   rt  r   r   )rI   r   rw  r   r   r*   r(   r   r   r   test_stats2`  s
    

zTestDLaplace.test_stats2N)rl   rm   rn   rJ   r_   r   rz  r   r   r   r   rs  D  s   rs  c                   sl   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  Z	S )TestLaplacervs_locr   r   r   r#   	rvs_scalerR   r1   c             C   sX  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	||ddd t jj||d\}}t	||ddd t
tt jj|||d t
tt jjtjg t
tt jjtjg d S )	Nr2   )rM   r!   r"   gV瞯<)rt   rs   )floc)fscaler#   )r~  r  )r   r   rT   r4   medianrx   absrV   fitr   assert_raisesRuntimeErrorr   rB   )rI   r|  r}  dataZloc_mleZ	scale_mler!   r"   r   r   r   test_fiti  s(    

zTestLaplace.test_fitzrvs_scale,rvs_loc)r1   r   )rK   r1   )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  )rM   r!   r"   c          	   S   s8   dt | td|  d| tt||     S )Nr   r#   r   )rV   r4   r   rx   r  )r!   r"   r  r   r   r   ll  s    z2TestLaplace.test_fit_MLE_comp_optimzer.<locals>.llgV瞯<)rt   rs   )	r   r   rT   r  superr\   r4   Zallcloser  )rI   r|  r}  r  r  r!   r"   Zloc_optZ	scale_optZll_mleZll_opt)	__class__r   r   test_fit_MLE_comp_optimzer  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      ,@r   )r~  r   gV瞯<)rt   rs   )r  )r4   r   r   r   r  r   )rI   r  r!   r"   r   r   r   test_fit_simple_non_random_data  s
    z+TestLaplace.test_fit_simple_non_random_data)
rl   rm   rn   r   r   rE  r  r  r  __classcell__r   r   )r  r   r{  h  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   r4   rB   r   zipr   )rI   r   r   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   )r4   r   r   r:   r.   r   r   )rI   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        r#   r2      r   g      ?)rs   )	sysmaxsizer4   r   r   r:   r   r   r   )rI   r+   r'  r   r   r   r   r(    s    
zTestInvGamma.test_sf_isfN)rl   rm   rn   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   sr   t jddgg}x8|D ]0\}}}|j|jf| }t||||||k qW dd |D }dd |D }t|| d S )N)r#   r   g      ?c             S   s$   g | ]\}}}|j |jf| qS r   )r%   r   )r  _f_argsr   r   r   r   r    s    z(TestF.test_endpoints.<locals>.<listcomp>c             S   s   g | ]\}}}|qS r   r   )r  r  r  	_correct_r   r   r   r    s    )r   fr%   r   printr   )rI   r  r  r  Z_correctanscorrectr   r   r   test_endpoints  s    zTestF.test_endpointsc             C   sX   t jj dddd\}}}}tt| tt| tt| tt|  d S )Nr   g      @r   )r   )r   r  r   r4   rr  )rI   r   r   r*   r(   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~   r   r   r#   r   r   r   )dfndfdr   )r   r   r   r   r   r  )rI   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 )NrR   r   rf   r   )r  r  r   r#   r   r   r   rK      )r4   r   r   r  r   r   )rI   r  r  r   r   r*   r(   ry  Zv2s2Zk2numZk2denZk2r   r   r   test_stats_broadcast  s    
0
  
 zTestF.test_stats_broadcastN)rl   rm   rn   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 )NrK   r   g?g?)r   r   tr   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   )dfr   g)\(?g        r#   gGz @g     i@rR   rq  gGz@r   g
ףp=
@)g        gq    @)r   r   r  r4   rB   r   r   r   r   r   test_moments_t  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d Z
dd Zdd Zdd ZdS )TestRvDiscretec             C   s   t jd d S )Ni  )r4   rG   rH   )rI   r   r   r   rJ      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   r#   rR   r   g        g333333?g?i  sample)namevalues)rM   g?)r   rv_discreterT   r   rZ   r&   rr   r  r  rx   rH  rq   )rI   ZstatesZprobabilityZ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   r#   )r  g      ?g        )	r4   r   r   r  rx   r   ry   r   r   )rI   r   r   r{   r|   r   r   r   r}   1  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   r#   r   g      ?g333333?g?)r  g      ?g      @g      @g        g+=)rt   )r   r  r   rc   )rI   xkpkr6  r+   r   r   r   rw   =  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   r#   r   g      ?g333333?g?)r  r   g      ?g?g      ?g       @g      @rK   r   g?g+=)rt   c                s   g | ]}  |qS r   )r.   )r  r   )r6  r   r   r  R  s    z+TestRvDiscrete.test_cdf.<locals>.<listcomp>)r   r  r   r.   )rI   r  r  Zx_valuesr   r   )r6  r   rk   H  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   r#   r   g      ?g333333?g?)r  g?g333333?g?g?g      ?g+=)rt   c                s   g | ]}  |qS r   )r   )r  r   )r6  r   r   r  _  s    z+TestRvDiscrete.test_ppf.<locals>.<listcomp>)r   r  r   r   )rI   r  r  Zq_valuesr   r   )r6  r   r   U  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   r#   r   r   r   g?g?g333333?)r  r   g:0yE>)r   r  r   r   r.   r  )rI   r]   r6  r   r   r   test_cdf_ppf_nextb  s    z TestRvDiscrete.test_cdf_ppf_nextc             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   r#   r   r   r   r   g?g?)r  g+=)rt   )r   r  r   expectr4   rx   r  r  )rI   r  r  r6  r   r   r   test_expectj  s    zTestRvDiscrete.test_expectc             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 )	Nrf   )rR   r   g?g333333?g?)r  g+=)rt   )r4   rv  r   r   r   r  r   r  rx   r  r  )rI   r  r  r6  r   r   r   test_multidimensionq  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   r#   rR   g      ?)r  g333333?gffffffr   rK   g333333?gɿ)r  
ValueErrorr   r  r?   )rI   r  r  r   r   r   test_bad_inputz  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   )r#   r#   )r#   rR   gUUUUUU?)r  r   )rR   r#   r   )r4   rv  r   r  r  r  r   r  r?   r   rc   )rI   r  r  r   r   r   test_shape_rv_sample  s    z#TestRvDiscrete.test_shape_rv_sampleN)rl   rm   rn   rJ   r_   r}   rw   rk   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	d
 Zdd ZdS )TestSkewNormc             C   s   t d| _d S )Ni  )r   rng)rI   r   r   r   rJ     s    zTestSkewNorm.setup_methodc             C   s0   t ddd}ttjj|ddtj| d S )Nr   rK   r2   r   )r   )r4   rh   r   r   skewnormr%   r   )rI   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)rR   r   rK   g      ?)r   rM   r   r   )r   r  rT   r  r   rW   )rI   rW   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    .ArK   r#   )r   rM   r!   r"   r   r   )r   r!   r"   r   )rg   r   )r   r  rT   rq   r  r4   r   r"  r#  Zkurtosisr   )rI   Xr   r$  r   r   r   r     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 )Nr1   r
  rL   r   rR   g+=)rs      g      @g      ?)r   r  r.   r   r4   ones)rI   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   r#   gn'/2;r   rK   g::ir   g|<igOul2;g:0yE>)rs   )r   r  r.   r   r   )rI   Zcdfvalsr+   r   Zcdfvalr   r   r   r   test_cdf_sf_small_values  s    z%TestSkewNorm.test_cdf_sf_small_valuesN)	rl   rm   rn   rJ   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 )
	TestExponc             C   s   t tjdd d S )Nr   r   )r   r   r   r%   )rI   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   r   r.   r   r   )rI   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@)r4   r   r   r  r  r   r   r  )rI   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@)r4   r   rB   r  r  r   r   r  )rI   r+   r   r   r   test_inf_raises_error  s    zTestExpon.test_inf_raises_errorN)rl   rm   rn   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 )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@)r4   r   r   r  r  r   r   r  )rI   r+   r   r   r   r    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@)r4   r   rB   r  r  r   r   r  )rI   r+   r   r   r   r    s    zTestNorm.test_inf_raises_errorc             C   s"   dddg}t ttjj|dd d S )Nr   r#   rR   shrimp)plate)r  	TypeErrorr   r   r  )rI   r+   r   r   r   test_bad_keyword_arg  s    
zTestNorm.test_bad_keyword_argN)rl   rm   rn   r  r  r  r   r   r   r   r    s   r  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@)r4   r   r   r  r  r   r8  r  )rI   r+   r   r   r   r    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@)r4   r   rB   r  r  r   r8  r  )rI   r+   r   r   r   r    s    z!TestUniform.test_inf_raises_errorN)rl   rm   rn   __doc__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 )
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   r#   rR   g      g      @r   r   )lamsigr   ZopK2Zexp_skewZexp_kurtr   r   r   get_moms  s    z,TestExponNorm.test_moments.<locals>.get_moms)r   r   r   g      ?r   )r!   r"   r   )r   r#   g?)r   rR   r   )r   r   g      @)r   	exponnormr   )rI   r  r   r  r  Kstsr   r   r   r     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   )r~  r  )r4   r   r   r  r  r   r  r  )rI   r+   r   r   r   r     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   )r~  r  )r4   r   rB   r  r  r   r  r  )rI   r+   r   r   r   r  %  s    z#TestExponNorm.test_inf_raises_errorc             C   sh   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 d S )Ni|r   g        i  g{Gz?)r   r   r  r%   )rI   r   r   r   test_extremes_x*  s
    zTestExponNorm.test_extremes_xN)rl   rm   rn   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 )TestGenExponc             C   s@   ddl m} tjtdddddd}t||dddd d S )	Nr   )simpsr1   g{Gz?g      ?g       @)Zdxr   )scipy.integrater  r   genexponr%   r&   rv  r   )rI   r  r   r   r   r   test_pdf_unity_area4  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   r1   g{Gz?g      ?g       @r   )r   r  r.   r&   rv  r   rU   )rI   r.   r   r   r   test_cdf_bounds:  s    zTestGenExpon.test_cdf_boundsN)rl   rm   rn   r  r  r   r   r   r   r  3  s   r  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;rK   g?)r   r   exponpowr.   r   r   )rI   r   r   r   r  A  s    zTestExponpow.test_tailN)rl   rm   rn   r  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 )NirP   )r1   rK   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~?)rg   )r&   rv  r   r   r   skellamrc   )rI   r(   mu1mu2ZskpmfRr   r   r   rw   H  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 )NirP   )r1   rK   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ñݸ?rK   )rg   )r&   rv  r   r   r   r  r.   )rI   r(   r  r  ZskcdfRr   r   r   rk   ]  s"    zTestSkellam.test_cdfN)rl   rm   rn   rw   rk   r   r   r   r   r  G  s   r  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=   r%   r   )rI   r%   r   r   r   re   t  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   r   r4   r   r   )rI   x2r   sigmar   r   r   r  |  s
    
zTestLognorm.test_logcdfN)rl   rm   rn   re   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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   betarA   r   r4   rB   )rI   rA   r   r   r   test_logpdf  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ƒ)	r4   r   r   r  r   rA   rx   r%   r   )rI   r8   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   r  )r~  r  r  )r  r  r   r  r  )rI   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  r  )rI   r+   r   r   r   #test_fit_duplicated_fixed_parameter  s    
z,TestBeta.test_fit_duplicated_fixed_parameterN)rl   rm   rn   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 )TestBetaPrimec             C   s\   d\}}t dddg}t||}tt ||  t|	|t 
|| d S )N)i  i  g?g      ?g333333?)r4   r   r   r9   r   rr  rA   rU   r   r%   r   )rI   r8   r  r+   r   r   r   r   r    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   r9   )r  r^   )r8   r  gen_cdfr   r   r    s    z*TestBetaPrime.test_cdf.<locals>.<listcomp>g-=)rt   rs   )r   r9   r.   r   r4   r   r   rr  rU   rv_continuousZ_cdf_singler   )rI   r+   r   Zcdfs_gr   )r8   r  r  r   rk     s    
zTestBetaPrime.test_cdfN)rl   rm   rn   r  rk   r   r   r   r   r    s   r  c               @   s$   e Z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?)r"   g
CTb?rR   r1   gBΖ?)r   r   r%   r   )rI   r%   r   r   r   re     s    
zTestGamma.test_pdfc             C   s   t jdd}t|d d S )Nr   r   )r   r   rA   r   )rI   rA   r   r   r   r    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   r  )r~  r  )r  r  r   r   r  )rI   r+   r   r   r   r    s    
z#TestGamma.test_fit_bad_keyword_argsN)rl   rm   rn   re   r  r  r   r   r   r   r    s   r  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?   )rg   r2   g6:֜?)r   r   chi2r%   )rI   r   r   r   r    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|=)rs   g      ?gQ8@   gܐ؆0guu[9=g?g8-*@)r   r  r   r   )rI   r  r+   r   r   r   r     s    zTestChi2.test_ppfN)rl   rm   rn   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 )TestGumbelLc             C   s2   t dd}tj|}tj|}t|| d S )Nir   )r4   rh   r   gumbel_lr.   r   r   )rI   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   )
r4   rh   r   r  r   r   r   r   expm1r   )rI   r+   r'  zur   r   r   r   r     s    
zTestGumbelL.test_logcdf_logsfc             C   s2   t dd}tj|}tj|}t|| d S )NirK   )r4   rh   r   r  r   r   r   )rI   r+   r'  r   r   r   r   r(    s    zTestGumbelL.test_sf_isfN)rl   rm   rn   r   r   r(  r   r   r   r   r    s   r  c               @   sD   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
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?)rs   rt   g)\(̿r#   gۧ1?r   g9]c?r   gv?)r   levy_stableZ	_fitstartr   r   r   )rI   r+   Zalpha1Zbeta1loc1Zscale1r  Zalpha2Zbeta2loc2scale2r   r   r   r    s     



zTestLevyStable.test_fitc                s  t tjtjtjtd}t jj	j
|jdd}tt drHt 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 )	Nr8   g      ?r+   ir   r   rK   r1   r   )r  )npisinr   r   <lambda>1      z7TestLevyStable.test_pdf_nolan_samples.<locals>.<lambda>	zolotarevc             S   s   | d dkS )Nr8   r   r   )r  r   r   r   r  4  r  c             S   s   | d dk| d dk@ S )Nr8   r   r  r   r   )r  r   r   r   r  5  r  r   c             S   s   | d dk| d dk@ S )Nr8   r   r  r   r   )r  r   r   r   r  6  r  fftr   r   c             S   s   | d dkS )Nr8   r   r   )r  r   r   r   r  9  r  rR   c             S   s   | d dk | d dk@ S )Nr8   r   g      ?r   )r  r   r   r   r  :  r  c             S   s   | d dk| d dk@ S )Nr8   g      ?r+   r   r   )r  r   r   r   r  ;  r  z6Density calculation unstable for alpha=1 and beta!=0.*z2Density calculations experimental for FFT method.*r+   r8   r  )r"   r!   calcr   g      ?g      $@z&pdf test %s failed with method '%s'
%sF)verbose)r4   loadospathabspathjoindirname__file__corerecords
fromarraysTr   r  Zin1drl  r   r  pdf_default_methodpdf_fft_min_points_thresholdr
   recordr   r%   r   r  isnanr   )rI   r  testsixdefault_methodfft_min_pointsdecimal_placesfilter_funcsubdatasupr   subdata2failuresr   )r  r   test_pdf_nolan_samples  s.    

".z%TestLevyStable.test_pdf_nolan_samplesc          
   C   s8  t tjtjtjtd}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 q^W 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   r#   c             S   s   | d dkS )Nr8   r   r   )r  r   r   r   r  d  r  z7TestLevyStable.test_cdf_nolan_samples.<locals>.<lambda>zXFFT method is considered experimental for cumulative distribution function evaluations.*r+   r8   r  r   )r"   r!   r  r   g      ?g      $@z&cdf test %s failed with method '%s'
%sF)r  )r4   r	  r
  r  r  r  r  r  r  r  r  r  rl  r   r  r  r  r
   r  r   r.   r   r  r  r   )rI   r  r  r  r  r  r  r  r  r  r   r   r!  r   r   r   test_cdf_nolan_samplesI  s     

".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   r#   rR   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)rU   zDensity calculation unstable.*)categorymessage)r"   r!   )r4   r   errstater
   filterr   r   r  r  r  r%   r   )
rI   xsZdensityZbetasr  r  r  r  r  r%   r   r   r   'test_pdf_alpha_equals_one_beta_non_zeros  s0    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   )r#   g?r1   g      ?)r1   g      @r   r   r   r#   rR   r   )r!   r"   r   )r4   rB   NaNr   r  r   )rI   Z
param_setsrD   Z	exp_statsZ
calc_statsr   r   r   r     s
    
&zTestLevyStable.test_statsN)rl   rm   rn   r  r   r   r   r"  r#  r*  r   r   r   r   r   r    s
   7*#r  c               @   s   e Zd Zdd Zdd ZdS )TestArrayArgumentc             C   s   t jd d S )Ni  )r4   rG   rH   )rI   r   r   r   rJ     s    zTestArrayArgument.setup_methodc             C   s.   t jjtdtddd}t|jd d S )NrK   )r1   rK   )r!   r"   rM   )r   r   rT   r4   rv  r  r   rW   )rI   rT   r   r   r   test_noexception  s    z"TestArrayArgument.test_noexceptionN)rl   rm   rn   rJ   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>   r  r   lowerr   )rI   r   r   r   test_docstrings  s    zTestDocstring.test_docstringsc             C   s   t   t   d S )N)r   r  r  )rI   r   r   r   test_no_name_arg  s    zTestDocstring.test_no_name_argN)rl   rm   rn   r0  r1  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 )TestEntropyc             C   sH   dddg}dddg}t ||}t ||}td|k t|dk d S )Ng      ?g?g333333?g?g      ?g?g        )r   ry   r   )rI   r  qkZeselfZedoubler   r   r   test_entropy_positive  s    

z!TestEntropy.test_entropy_positivec             C   s   t dt}tj|dd}tt|d dk  t dt}d|d d< t||}tj||dd}tt|| t d dk  d S )N   g       @)r>  g      @gh㈵>r   )r4   r  rH  r   ry   r   r  r   )rI   r  Sr3  ZS2r   r   r   test_entropy_base  s    zTestEntropy.test_entropy_basec             C   s   t tdddgddd d S )Nr   r   r#   g R^?rf   )rg   )r   r   ry   )rI   r   r   r   test_entropy_zero  s    zTestEntropy.test_entropy_zeroc             C   sF   ddgddgddgg}ddgddgddgg}t t||ddg d S )Ng?g?g333333?g333333?g      ?gN!0?g2?)r   r   ry   )rI   r  r3  r   r   r   test_entropy_2d  s    zTestEntropy.test_entropy_2dc             C   sj   ddgddgddgg}ddgddgddgg}t t||tjdg d|d d< t t||d	dg d S )
Ng?g?g333333?g333333?g      ?g        g2?r   g^fTF?)r   r   ry   r4   rB   )rI   r  r3  r   r   r   test_entropy_2d_zero  s    z TestEntropy.test_entropy_2d_zeroc             C   s4   ddgddgddgg}t tj|ddddd	g d S )
Ng?g?g333333?g333333?g      ?r   )r  gR^?gD%+?)r   r   ry   )rI   r  r   r   r   $test_entropy_base_2d_nondefault_axis  s    z0TestEntropy.test_entropy_base_2d_nondefault_axisc             C   sL   ddgddgddgg}ddgddgddgg}t tj||ddddd	g d S )
Ng?g?g333333?g333333?g      ?r   )r  g.c}?gaX?)r   r   ry   )rI   r  r3  r   r   r   test_entropy_2d_nondefault_axis  s    z+TestEntropy.test_entropy_2d_nondefault_axisc             C   s:   ddgddgddgg}ddgddgg}t ttj|| d S )Ng?g?g333333?g333333?g      ?)r  r  r   ry   )rI   r  r3  r   r   r   test_entropy_raises_value_error  s    z+TestEntropy.test_entropy_raises_value_errorc             C   s4   ddgddgddgg}t tj|ddt| d S )Ng?g?g333333?g333333?g      ?r   )r  )r   r   ry   )rI   r  r   r   r   1test_base_entropy_with_axis_0_is_equal_to_default  s    z=TestEntropy.test_base_entropy_with_axis_0_is_equal_to_defaultc             C   sN   ddgddgddgg}ddgddgddgg}t tj||ddt|| d S )Ng?g?g333333?g333333?g      ?r   )r  )r   r   ry   )rI   r  r3  r   r   r   ,test_entropy_with_axis_0_is_equal_to_default  s    z8TestEntropy.test_entropy_with_axis_0_is_equal_to_defaultc             C   s>   t ddgddgddgg}tt|jjtj|dd d S )Ng?g?g333333?g333333?g      ?r   )r  )r4   r   r   r   ry   r  )rI   r  r   r   r   test_base_entropy_transposed  s    z(TestEntropy.test_base_entropy_transposedc             C   s`   t ddgddgddgg}t ddgddgddgg}tt|j|jjtj||dd d S )Ng?g?g333333?g333333?g      ?r   )r  )r4   r   r   r   ry   r  )rI   r  r3  r   r   r   test_entropy_transposed	  s    z#TestEntropy.test_entropy_transposedN)rl   rm   rn   r4  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  r   r   r   r   r2    s   	
r2  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   rR   r#   r   )r   r   r   r&   rM   )r   r   r   r   r   r   TestArgsreduce	  s    
rB  c               @   s   e Zd ZdddgZdd Zdd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dd Zdd Zd S )!TestFitMethodncfr[  r\  c             C   s   t jd d S )Ni  )r4   rG   rH   )rI   r   r   r   rJ   	  s    zTestFitMethod.setup_methodZ	frechet_lZ	frechet_rr   r   r8  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   )r~  r  N)fitSkipNonFiniter   skipr4   r   r   rB   r@   r   r  r  r  )rI   r7   rD   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$  )rU   g      ?g        g      4@r
  )rM   r#   r   )r~  r  g:0yE>)rt   )r4   rG   rH   r'  r   r=   rT   r   r   r   r   r   r  )rI   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   r   rR   r#   )r~  )r  )r4   rv  r   r   r  r   r   r   )rI   r+   r!   r"   r   r   r   test_fix_fit_norm5	  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   r   r   )r~  rK   )rg   r   )f0r~  r#   )r~  r  )r4   rv  r   r   r   r   r  r   r   Zdigammar   )rI   r+   Zmeanlogr~  r   r!   r"   r*   rJ  r  r   r   r   r   test_fix_fit_gammaD	  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   )rV   r4   r   rx   r   psi)r   r   r+   r   s1r  Zpsiabfuncr   r   r   mlefuncm	  s    z0TestFitMethod.test_fix_fit_beta.<locals>.mlefuncg      ?g      ?g      ?r   r   )r~  r  gư>)rt   r#   )rJ  r~  r  gh㈵>)f1r~  r  )r~  r  rJ  )r~  r  rP  rR   )rJ  rP  r~  r  )
r4   r   r   r  r  r   r   r   r  r  )rI   rO  r+   r   r   r!   r"   dadbr  Za2Zb2r  r  r'  r   r   r   test_fix_fit_betaj	  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 )Nr#   r   r   rR   )r  r   )r~  )r4   r   r   r   r  r   )rI   r+   r!   r"   r   r   r   test_expon_fit	  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      ?rR   r1   rP      ;   r   )r~  g-q=)rs   r   )r~  r  r#   g      ?)r~  Zfix_s)r4   r   r   r   r=   r  r   r   r   r   r   r   )rI   r+   Zlnxm1rW   r!   r"   r   r   r   test_lognorm_fit	  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   )r~  r1   )r  g       @g      @)r4   r   r   r8  r  r   r   Zptpr   r  r  )rI   r+   r!   r"   r   r   r   test_uniform_fit	  s    


zTestFitMethod.test_uniform_fitc          	   C   sZ  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      @r2   i  )rM   r   g      @)rJ  )r  g-q=)rt   rs   )r  g      @)rP  )Zfb)Zfix_br   r#   )r  rJ  r   rR   )r  rP  r~  r  )r  r~  r  )rM   )	r   r  rT   r  r   r  r  r   r   )rI   r   r   r+   Zres_1Zres_2Zres_3Zres_4Zres_5ZaaZbbr  ssr  r   r   r   test_fshapes	  s,    
zTestFitMethod.test_fshapesc             C   s4   t j}|jddd}tdd}tt|j|f| d S )Nr#   r2   )r  rM   i)Zenikibeniki)r   r  rT   r?   r  r  r  )rI   r7   r  rC   r   r   r   test_extra_params	  s    
zTestFitMethod.test_extra_paramsN)rl   rm   rn   rF  rJ   rE  r   r   rE  r   rG  rH  rI  rK  rS  rT  rW  rX  rZ  r[  r   r   r   r   rC  	  s   
	&7&rC  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  )r4   rG   rH   )rI   r   r   r   rJ   
  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      @)r!   r"   g      4@g      ?r#   )r   r   r%   r   r.   r   r   r   r  r   r"  r   ry   momentr   r   )rI   r7   frozenresult_fr  r   r   r   r   
  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      $@r#   )r   r   r%   r   r.   r   r   r   r  r   r"  r   ry   r]  r   r7   r   )rI   r   r7   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   r#   r   )r   )r   r=   r]  r   )rI   r^  m1ry  r   r   r   test_regression_ticket_1293t
  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   r2  r7   r3  r   r%   r4   rB   r   r   r   r1  r4  r   )rI   r   r6  r   r   Zrv1r   r   r   r5  
  s2    




zTestFrozen.test_abc             C   s   t ttjd d S )NZ	rv_frozen)r   r   r   r   )rI   r   r   r   test_rv_frozen_in_namespace
  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   )rM   r   )r   r   r   r   r   r   Z	get_stater4   rG   ZRandomStaterT   )rI   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   r#   rR   g?g?g333333?g?)r  i  r   )rM   g      ?)r   r  rU  r  r   rT   pickledumpsloadsr   r   r.   )
rI   r  Zpoissr  distfnr*   Zr0Z	unpickledZ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   rN  
  s    z$TestFrozen.test_expect.<locals>.funcr#   rR   r   )r   r!   r"   r   T)lbubconditional)r#   )rD   r!   r"   rk  rl  rm  )r!   )rR   )rD   r!   )r   r   r  r   rU  )rI   rN  ZgmZgm_valZ	gamma_valr   Zp_valZpoisson_valr   r   r   r  
  s    

zTestFrozen.test_expectN)rl   rm   rn   rJ   r   r`  rb  r5  rc  re  rj  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 )NrK   r   )r+   r   r   r   r  
  r  z&TestExpect.test_norm.<locals>.<lambda>rK   r#   )r!   r"   r   r  )rg   c             S   s   | S )Nr   )r+   r   r   r   r  
  r  g?gffffff?c             S   s   dS )Nr   r   )r+   r   r   r   r  
  r  )r!   r"   rk  rl  g?c             S   s   dS )Nr   r   )r+   r   r   r   r  
  r  T)r!   r"   rk  rl  rm  g      ?)r   r   r  r   r   )rI   r   r   rk  rl  prob90prob90cr   r   r   r   
  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   r    r  z&TestExpect.test_beta.<locals>.<lambda>)r1   rK   rK   r#   )rD   r!   r"   gqq?r  )rg   c             S   s   | S )Nr   )r+   r   r   r   r    r  g      @g       @gUUUUUU@gffffff?r1   )r!   r"   g?c             S   s   dS )Ng      ?r   )r+   r   r   r   r    r  )r1   r1   F)rD   r!   r"   rk  rl  rm  g?c             S   s   dS )Nr   r   )r+   r   r   r   r    r  Tg      ?)r   r  r  r   r   )rI   r   r   rl  rk  ro  rp  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
  r1   r   g      @)r!   c             S   s   | S )Nr   )r+   r   r   r   r    r  z+TestExpect.test_hypergeom.<locals>.<lambda>)r
  r1   r   )rD   r!   r  )rg   c             S   s   | d d S )Ng      "@r#   r   )r+   r   r   r   r    r  r  c             S   s   | d d S )Ng      "@r#   r   )r+   r   r   r   r     r  rK   )rD   r!   rk  rl  r   c             S   s   dS )Nr   r   )r+   r   r   r   r  '  r  r   rf   c             S   s   dS )Nr   r   )r+   r   r   r   r  ,  r  T)rD   r!   rk  rl  rm  c             S   s   dS )Nr   r   )r+   r   r   r   r  1  r  r   )rD   rk  rl  )r   r  r  r   rc   rx   )
rI   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   r  7  r  z)TestExpect.test_poisson.<locals>.<lambda>)r#   rR   F)rD   rk  rm  r   r#   r  )rg   c             S   s   dS )Nr   r   )r+   r   r   r   r  <  r  T)r   rU  r  r.   r   )rI   rr  Zprob_b_trueZprob_lbr   r   r   test_poisson5  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      ?)rD   )g      ?r  )rg   )r   Zgenhalflogisticr  r   )rI   ZhalflogZ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   r  O  r  z/TestExpect.test_rice_overflow.<locals>.<lambda>)gGz?)rD   c             S   s   dS )Nr#   r   )r+   r   r   r   r  P  r  c             S   s   dS )NrR   r   )r+   r   r   r   r  Q  r  )r   r4   rr  r   ricer%   r  )rI   r   r   r   test_rice_overflowJ  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?rR   c             S   s   | S )Nr   )r(   r   r   r   r  V  r  z(TestExpect.test_logser.<locals>.<lambda>)rD   g      ?gV瞯<)rt   c             S   s   | S )Nr   )r(   r   r   r   r  \  r  )rD   r!   )r   r+  r  r   r4   r   )rI   r   r!   Zres_0Zres_lr   r   r   test_logserS  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   r  c  r  z)TestExpect.test_skellam.<locals>.<lambda>)rD   c             S   s   | d S )Nr#   r   )r+   r   r   r   r  d  r  g-q=)rt   r#   )r   r  r  r   )rI   p1p2ra  ry  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   r  l  r  z)TestExpect.test_randint.<locals>.<lambda>c             s   s   | ]
}|V  qd S )Nr   )r  r   r   r   r   	<genexpr>n  s    z*TestExpect.test_randint.<locals>.<genexpr>gV瞯<)rt   )r   rS   r  r   rx   range)rI   lohir  r   r   r   test_randinth  s    zTestExpect.test_randintc             C   s   t ttjjdd d d S )Nc             S   s   | d S )Nr#   r   )r+   r   r   r   r  s  r  z&TestExpect.test_zipf.<locals>.<lambda>)r#   )r   r   r   rp  r  )rI   r   r   r   	test_zipfp  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   r  w  r  z/TestExpect.test_discrete_kwds.<locals>.<lambda>)r#   )rD   c             S   s   dS )Nr   r   )r+   r   r   r   r  x  r  i      g:0yE>)rD   Zmaxcount	chunksizeZ	tolerancer  )rg   )r   rU  r  r   )rI   Zn0Zn1r   r   r   test_discrete_kwdsu  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 )NrK   r1   r   r  rR   rP   r#   r   )r   r   r   r   poiss_moment5  s    z-TestExpect.test_moment.<locals>.poiss_moment5)rK   r   rK   g|=)rs   )r   rU  r]  r   )rI   r  r   Zm5r   r   r   test_moment|  s    
zTestExpect.test_momentN)rl   rm   rn   r   rq  rs  rt  ru  rw  rx  r{  r  r  r  r  r   r   r   r   rn  
  s   "
		rn  c               @   s,   e Z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 )NrK   r   g      ?r   g K?r1   )rg   )r   nctr   r.   r   )rI   r6  r   r   r   test_nc_parameter  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 )NrK   r   r   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㈵>)rs   )r   r  r%   r4   rv  rh   r   r   )rI   r  r   r   r   r   test_broadcasting  s    
zTestNct.test_broadcastingc             C   s   t dd}t| d d S )Nr   r   g       @)r   r  r   r"  )rI   r6  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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 )Ngffffff?g333333?r   )r  ncr   g@)	r   r  r   r4   rr  r   rB   r   rU   )rI   r   r   r*   r(   r   r   r   test_nct_inf_moments  s    zTestNct.test_nct_inf_momentsN)rl   rm   rn   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 )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>)rt   rs   )r   r4   rr  r   rv  r%   rU   rA   r.   r   r   r   )rI   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   )rR   rK   )r   rM   )r   rv  rT   r   rM   rW   )rI   rT   r   r   r   test_rice_rvs  s    zTestRice.test_rice_rvsN)rl   rm   rn   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  )r4   rG   rH   )rI   r   r   r   rJ     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   )r!   r"   rM   g      ?g      ?g       @g      @)rJ  gMbP?)rs   )r   r   r   r   r  r   erlangrT   r  r   r   )rI   r  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  r%   r   )rI   r   r   r   test_gh_pr_10949_argcheck  s    z$TestErlang.test_gh_pr_10949_argcheckN)rl   rm   rn   rJ   r  r  r   r   r   r   r    s   r  c               @   s   e Zd Zdd Zdd ZdS )TestRayleighc             C   s   t jd}t|d d S )NrN   g)Zx)r   r>   rA   r   )rI   r'  r   r   r   r    s    zTestRayleigh.test_logpdfc             C   s   t jd}t|d d S )NrN   i)r   r>   r   r   )rI   r'  r   r   r   r     s    zTestRayleigh.test_logsfN)rl   rm   rn   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   	exponweibr%   rA   r   )rI   r+   r   r   r   rC  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   r2   )r4   r   r   r  r%   weibull_minr   rA   )rI   r+   r   r   r   r   rC  r   r   r   test_a_is_1  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   r1   )r4   r   r   r  r%   r   r   rA   )rI   r+   r   r   r   r   rC  r   r   r   test_a_is_1_c_is_1
  s    
z TestExponWeib.test_a_is_1_c_is_1N)rl   rm   rn   r  r  r  r   r   r   r   r    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  rA   r   )rI   r'  r   r   r   r    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      @)r"   g      пrR   rL   r#   ig      g&.gCe )r   r  r%   r   r4   r   rA   r   r.   r   r  r   r   r   Zweibull_max)
rI   r+   r   r   r   lpr   lcr*   Zlsr   r   r   test_with_maxima_distrib   sH    


z$TestWeibull.test_with_maxima_distribN)rl   rm   rn   r  r  r   r   r   r   r    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     @rK   )rg   )r   rdistr   r.   r   )rI   ri  r  r   r   r   test_rdist_cdf_gh1285v  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?r1   g@g      ?r#   r   )r4   rh   r   r   r  r%   r  )rI   r+   r   r   r   r   test_rdist_beta}  s    &zTestRdist.test_rdist_betaN)rl   rm   rn   r  r  r   r   r   r   r  u  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 )	TestTrapzc             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   trapzr%   triangr.   )rI   modesmoder+   r   r   r   test_reduces_to_triang  s    

z TestTrapz.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   r1   )r4   rh   r   r   r  r%   r8  r.   )rI   r+   r   r   r   test_reduces_to_uniform  s    z!TestTrapz.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   r#   r   g      ?g?grq?g?g      ?g?g      ?g      ?g?g      ?g      ?g      ?)r   r   r  r%   r.   )rI   r   r   r   
test_cases  s    zTestTrapz.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)r   r   r#   rR   r#   c                sT   | d  | d     | d   | d        | d  | d  S )Nr#   r   r   )r   )r   r   r   dr|   r   r   r    s    z4TestTrapz.test_moments_and_entropy.<locals>.<lambda>r   g      ?r  )rg   r   r   r   r   rR   )r4   r   r   r   r  r   r"  ry   )	rI   ry  rz  r!   r"   r]  r   r"  ry   r   )r   r   r   r  r|   r   test_moments_and_entropy  s     0>


z"TestTrapz.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?)rX   gV瞯<)rt   r   )r   r   )r4   r   r   r  r%   Zbroadcast_arraysemptyrM   rX   rv  r  Zravelr   r   rW   r1  r  )rI   r   r  r+   r   ccddr   r  indix1Zc1d1r   r   r   test_trapz_vect  s"    ( zTestTrapz.test_trapz_vectN)rl   rm   rn   r  r  r  r  r  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)rU   r   g       @g      ?g      ?r   g        r#   g      ?g      ?)r4   r'  r   r   r  r%   r.   )rI   r   r   r   test_edge_cases  s    zTestTriang.test_edge_casesN)rl   rm   rn   r  r   r   r   r   r    s   r  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]  r4   rB   r   rr  )rI   r(   r*   r   r   r   r     s    zTestMielke.test_momentsc             C   s@   t ddd}d\}}ttj|||| tj||| d S )Ng{Gz?r2   rN   )g@gHzG@)r4   rh   r   r   burrr%   r  )rI   r+   r(   r*   r   r   r   test_burr_equivalence  s    z TestMielke.test_burr_equivalenceN)rl   rm   rn   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 )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      ?r#   )r   r   )r#   g      ?)r   g      ?g      ?g      ?)r   r#   g       @c             S   s$   g | ]\}}}|j |jf| qS r   )r%   r   )r  r  r  r   r   r   r   r  	  s    z0TestBurr.test_endpoints_7491.<locals>.<listcomp>c             S   s   g | ]\}}}|qS r   r   )r  r  r  r  r   r   r   r  
  s    c             S   s$   g | ]\}}}|j |jf| qS r   )rA   r   )r  r  r  r   r   r   r   r    s    c             S   s   g | ]\}}}t |qS r   )r4   r   )r  r  r  r  r   r   r   r    s    )r   Zfiskr  burr12r   )rI   r  r  r  r   r   r   test_endpoints_7491  s    






zTestBurr.test_endpoints_7491c             C   s<   d\}}t ||  \}}d\}}t|| t|| d S )N)g      @rR   )g4U?g&MI?)r   r  r   )rI   r   r  r   varianceZmean_hcZvariance_hcr   r   r   test_burr_stats_9544  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      ?rR   )g      ?rR   r   r#   rR   r   )g      @rR   )g      @rR   )g      @rR   )r   r  r   r4   r  rr  _munpr   )	rI   r   r  r   r  e1e2Ze3Ze4r   r   r   test_burr_nan_mean_var_9544  sL    &    z$TestBurr.test_burr_nan_mean_var_9544N)rl   rm   rn   r  r  r  r   r   r   r   r    s   
r  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?r1   test_540_567)rg   err_msgg2gk?g;B.?gͣh?gHŎ*?)r!   r"   g.y?)r   r   r   r.   r   r   r   r   r  F  s    

r  c               C   s   t jjdd d S )Nr   )r  )r   Z_continuous_distnsZ	gamma_genr   r   r   r   test_regression_ticket_1316R  s    r  c               C   s   t tjdddd d S )Ng        r#   g      ?r  )r   r   r  r%   r   r   r   r   test_regression_ticket_1326X  s    r  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      @r0   r$  )divideg        g      g       g       @r   r   r#   )r4   rh   r'  r   r   tukeylambdar%   r   rU   r  any)r+   r  r   r   r   r   test_regression_tukey_lambda]  s    $r  zdocstrings stripped)reasonc               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   rU  r  r   r   r   r   test_regression_ticket_1421r  s    r  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$  )invalidr   g      ?)r4   r'  r   r  r   r  r   r   r.   r   r   r%   rA   r   r   r   rc   r   r   r   r   r    test_nan_arguments_gh_issue_1362x  s"    r  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   r#   r2   )rM   r$  )r  )r~  )rg   )r  r!   )rJ  r!   )rJ  r~  g?g       @r   )r4   rG   rH   r   r   r=   rT   r'  r  r   r   r   r   )truer+   paramsr!   r~  r   r   r   r   test_frozen_fit_ticket_1536  s&       r  c              C   s<   t jd tjjdd} tj| }d}t||dd d S )Ni	 r2   )rM   )g
ףp=
?gʡE?r   )rg   )r4   rG   rH   r   cauchyrT   r  r   )rT   r  r   r   r   r   test_regression_ticket_1530  s
    r  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  rd  )g     @g   6Ag      ?)rt   g333333?)r4   rG   rH   Zrandnr   r  r  r   )r+   offsetr!   r"   r   r   r   test_gh_pr_4806  s    
r  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   r#   rR   g333333?r1   )rg   g
ףp=
	@gz5v?gRTgQ?gNg @gJFٻ)r   r  r4   r'   r   )r   r   r   r   r   "test_tukeylambda_stats_ticket_1545  s    r  c               C   s   t ttjdd d S )Ni  r`  )r   r4   rr  r   rU  r   r   r   r   r   test_poisson_logpmf_ticket_1436  s    r  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
    r  c              C   s   t jdd} t| d d S )Nr   r   g        )r   r  rA   r   )r   r   r   r   test_powerlaw_edge  s    r  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  rA   r   r%   r4   rB   )r   r   r   r   test_exponpow_edge   s    
r  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      ?r   r`  g>r1   gqq?)r   Zgengammar%   r   r  r   )r   r   r   r   test_gengamma_edge  s    

r  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)
r4   r   r'  r
   r(  r   r   r   r[  r  )r  r  r   r   r   test_ksone_fit_freeze  s$    








r  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   x   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>)rt   y        +=y        |=g|=)r4   r1  listr~  r   r   r   r   realimagr   rA   )r+   r   ZderivZderiv_expectedr   r   r   test_norm_logcdf1  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|=)rs   gvIh%<=)r4   r   r   r<   r.   r   r   )r+   r   r'  r   r   r   r   test_levy_cdf_ppfJ  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?r2   r   r   )r   r   r  rW  r   r   r   r   r   test_hypergeom_interval_1802b  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?rK   )numr#   rR   g      ?)r!   r   g      ?)r!   r"   g       @r   r   )rM   r   )r"   )r4   rG   rH   rh   r  r  r   r   r%   rT   r.   r   ry   r  r   rc   r   r  rD  )r+   r   r   r   test_distribution_too_many_argsq  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?r#   gYZ@gMbP?r   )rs   rt   )r   ncx2r.   r4   rv  Z_cdfvecr   )r   r   r   r   r   test_ncx2_tails_ticket_955  s    r  c           	   C   sj   t  H} | td ttjdtdddd tj	dtddd}W d Q R X t
t|  d S )Nz!divide by zero encountered in logr   iT  i^  r#   r   )r
   r(  r   r   r   r  r%   r4   rv  rA   r   r:  rU   )r  Zlogvalr   r   r   test_ncx2_tails_pdf  s
    "r  zmethod, expectedr.   gu%>g	;Q=r%   g<x>gRz\R>rA   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   r1   )r  r  gV瞯<)rt   )r@   r   r  r   )methodr   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 )Nr1   r   r   )r  r  r   )r  r   gV瞯<)rt   )r   r  rT   r  r   )r  r   r   r   r   test_ncx2_zero_nc_rvs  s    r  c              C   s"   t jddd} t| dd d S )Nr   r   )r"   )r   Zfoldnormr   r.   )r6  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)r4   ra   r   )r  r   r   r   r   r}    s    z-test_stats_shapes_argcheck.<locals>.<genexpr>r#   g333333@r   c             s   s   | ]}t j|t jf V  qd S )N)r4   ra   r   )r  r   r   r   r   r}    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 )Nrd  r   )rI   r+   r   r   r   r   _pdf  s    z_distr_gen._pdfN)rl   rm   rn   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 )Nrd  r   )rI   r+   r   r   r   r   _cdf  s    z_distr2_gen._cdfN)rl   rm   rn   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   )rI   r+   r   r   r   r   r   r    s    z_distr3_gen._pdfc             C   s   d| | S )Nrd  r   )rI   r+   r   r   r   r   r    s    z_distr3_gen._cdfN)rl   rm   rn   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   )rI   r+   r   r   r   r   r   r    s    z_distr6_gen._pdfc             C   s   d| | S )Nrd  r   )rI   r+   r   r   r   r   r   r    s    z_distr6_gen._cdfN)rl   rm   rn   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  shapesr   )r   rd  )r  r   r%   )rI   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  r  r   )r   )r  r  r  r%   r?   )rI   r  r   r   r   test_wrong_shapes_1  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  r  r   r#   rR   )r   r   r   )r  r?   r  r  r%   )rI   r  rC   r   r   r   test_wrong_shapes_2  s    z1TestSubclassingExplicitShapes.test_wrong_shapes_2c             C   s   t ddd}tttf| d S )Nr  rd  )r  r  )r?   r  r  r  )rI   rC   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  r  )r?   r  SyntaxErrorr  )rI   rC   r   r   r   test_shapes_identifiers_1  s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_1c             C   s   t ddd}tttf| d S )Nr  Z4chan)r  r  )r?   r  r  r  )rI   rC   r   r   r   test_shapes_identifiers_2  s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_2c             C   s   t ddd}tttf| d S )Nr  zm(fti))r  r  )r?   r  r  r  )rI   rC   r   r   r   test_shapes_identifiers_3  s    z7TestSubclassingExplicitShapes.test_shapes_identifiers_3c             C   s   t ddd}tttf| d S )Nr  za=2)r  r  )r?   r  r  r  )rI   rC   r   r   r   "test_shapes_identifiers_nodefaults"  s    z@TestSubclassingExplicitShapes.test_shapes_identifiers_nodefaultsc             C   s   t ddd}tttf| d S )Nr  z*args)r  r  )r?   r  r  r  )rI   rC   r   r   r   test_shapes_args&  s    z.TestSubclassingExplicitShapes.test_shapes_argsc             C   s   t ddd}tttf| d S )Nr  z**kwargs)r  r  )r?   r  r  r  )rI   rC   r   r   r   test_shapes_kwargs*  s    z0TestSubclassingExplicitShapes.test_shapes_kwargsc             C   s   t ddd}tttf| d S )Nr  za, b, c, lambda)r  r  )r?   r  r  r  )rI   rC   r   r   r   test_shapes_keywords.  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   r   r  )rI   r+   r   r   r   r   r  6  s    zKTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_gen._pdfN)rl   rm   rn   r  r   r   r   r   	_dist_gen5  s   r  r   )r  g      ?r#   )r   )r   r  r   r%   r   )rI   r  r7   r   r   r   test_shapes_signature3  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   r   r  )rI   r+   r   r   r   r   r  ?  s    zXTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_gen._pdfN)rl   rm   rn   r  r   r   r   r   r  >  s   r  za, b)r  g      ?r   r#   )r   r   )r   r  r  r  r%   r?   )rI   r  r7   r   r   r   "test_shapes_signature_inconsistent<  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   r   r  )rI   r+   rD   extra_kwargr   r   r   r  I  s    zDTestSubclassingExplicitShapes.test_star_args.<locals>._dist_gen._pdfN)rl   rm   rn   r  r   r   r   r   r  H  s   r  r  )r  g      ?!   )r  )Zxxx)r   r  r   r%   r   r  r  r?   )rI   r  r7   r   r   r   test_star_argsE  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   r   r  )rI   r+   r  rD   r  r   r   r   r  V  s    zFTestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_gen._pdfN)rl   rm   rn   r  r   r   r   r   r  U  s   r  zoffset, extra_kwarg)r  g      ?o   r  )r  r  )r   r  r   r%   r   )rI   r  r7   r   r   r   test_star_args_2R  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   r   r  )rI   r+   rD   kwargsr  r   r   r   r  d  s    zGTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_gen._pdfN)rl   rm   rn   r  r   r   r   r   r  c  s   r  r  )r  r   rR   )r  )r   r  r   r%   r   )rI   r  r7   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   r   r%   )rI   r+   r   r   r   r  q  s    zITestSubclassingExplicitShapes.shapes_empty_string.<locals>._dist_gen._pdfN)rl   rm   rn   r  r   r   r   r   r  p  s   r   )r  g      ?)r   r  r   r%   r   )rI   r  r7   r   r   r   shapes_empty_stringn  s    
z1TestSubclassingExplicitShapes.shapes_empty_stringN)rl   rm   rn   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   rd  )r  r   r%   )rI   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   r%   )rI   r  r   r   r   test_only__cdf  s    
z&TestSubclassingNoShapes.test_only__cdfzdocstring stripped)r  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   numargsr  refindallr  r   rV   )rI   r  r  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  r#   za, bz!logpdf\(x, a, b, loc=0, scale=1\)r   )	r  r   r  r  r  r  r  r   rV   )rI   r  r  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  )rI   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_genrd  c             S   s   dS )Nrd  r   )rI   r+   r   r   r   r   r    s    zCTestSubclassingNoShapes.test_defaults_raise.<locals>._dist_gen._pdfN)rd  )rl   rm   rn   r  r   r   r   r   r    s   r  r  )r  )r   r  r  r  r?   )rI   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 )Nrd  r   )rI   r+   r   rD   r   r   r   r    s    zCTestSubclassingNoShapes.test_starargs_raise.<locals>._dist_gen._pdfN)rl   rm   rn   r  r   r   r   r   r    s   r  r  )r  )r   r  r  r  r?   )rI   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 )Nrd  r   )rI   r+   r   r  r   r   r   r    s    zATestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_gen._pdfN)rl   rm   rn   r  r   r   r   r   r    s   r  r  )r  )r   r  r  r  r?   )rI   r  r   r   r   test_kwargs_raise  s    z)TestSubclassingNoShapes.test_kwargs_raiseN)rl   rm   rn   r  r  r   r   skipifDOCSTRINGS_STRIPPEDr  r  r   r!  r"  r#  r   r   r   r   r  x  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   __all__r@   rZ   r  r  r   r  searchr  )Zbadonesdistnamer7   regexr   r   r   r0    s    


r0  c               C   s4   t tjtjddd t tjtjddd d S )Nr1   r   r   r   g?r   )r   r   r  r   r4   rB   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      "@rP   )rg   )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   rM  r.   r%   r   rA   r4   rB   rV   r   )wZnumber_of_warnings_thrownr   r   r    test_genextreme_give_no_warnings  s    
r2  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      r#   r   g+=)rs   r   g      ?g       r1   )r"   rR   iir   )r   rM  ry   r   r   r4   r   )Zeuler_gammar|   r   r   r   test_genextreme_entropy  s    
 r3  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   rM  r   r   r   )r+   r*   r  r   r   r   test_genextreme_sf_isf  s    




r4  c              C   s"   d} t j| dd}t|d d S )NgؗҜ<r#   rR   gH&8>)r   r  r   r   )Zprobr  r   r   r   test_burr12_ppf_small_arg+  s    	r5  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?)rs   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   r!   r"   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 ?)r4   rh   r   crystalballr%   r   r   r.   )r  Z
calculatedr   r   r   r   test_crystalball_function9  sR    














r8  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?)rs   gԚh@g[&@gͪ@g2dQ@gn6-@g?ޫV&̿g BgQCRgQF\ jr   g
@gn(@r#   g?Җ)rR   gMg'#@r   g('UHrK   N)r4   r   r   r7  r  r   rB   )r  r   Zexpected_0th_momentZcalculated_0th_momentr   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    r9  z	df1,df2,xr#   g      g?g      ?gffffff@r   r   r      rR   rK   c             C   sh   d}t j|| |}t j|| ||}t||dd t j|| |}t j|| ||}t||dd d S )Nr   g+=)rs   gư>)r   r  r.   rD  r   r%   )Zdf1Zdf2r+   r  Zexpected_cdfZcalculated_cdfZexpected_pdfZcalculated_pdfr   r   r   test_ncf_edge_case  s    
r;  c              C   s"   t jddd} t| ddd d S )Nr#   r   r   g     `E@g+=)rs   )r   rD  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   r#   rR   r   rK   r   r   r   r.  )binsg      ?g      @i'  {   )r!   r"   rM   r   rN   )
r4   rG   rH   	histogramr   Zrv_histogramtemplater   rT   norm_template)rI   r@  r  Znorm_histogramr   r   r   rJ     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      $@r   r#   r1   )r!   r"   g?)rs   )r4   r   r1  r   rA  r%   r   rh   rB  r   r   )rI   r  Z
pdf_valuesr+   r   r   r   re     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?r#   r   r2   r   r1   )r!   r"   g?)rs   )r4   r   r1  r   rA  r.   r   rh   rB  r   r   )rI   r  Z
cdf_valuesr+   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?  )rM   r   g      ?g        g       @g{Gz?g?)rs   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      "@)rA  rT   r   r4   rx   r   )rI   r  r  r   r   r   r_     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?)rs   )r~  r   rB  r  r   r   r]  )rI   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      @)r!   r"   g?)rs   )r   rB  ry   r   r   )rI   r   r   r   r}   +  s    
zTestHistogram.test_entropyN)	rl   rm   rn   rJ   re   r   r_   rC  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'  rd  )rM   r   r1   )r>  i  iL  i  )r   Z
loguniformrT   r4   r@  log10r   r   r  r  r  )r6  rT   r]   r   r   r   r   test_loguniform0  s
    ,rE  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	dS )	TestArgusc             C   s2   t jjdddd}tt d | dd d S )NrN   i  iE  )rM   r   r   )rg   )r   argusrT   r   r   )rI   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  )rM   r   rR   )rg   )r   rG  rT   r   r   r   )rI   r+   r   r   r   test_argus_rvs_ratio_uniforms?  s    z'TestArgus.test_argus_rvs_ratio_uniformszchi, expected_mean)r   g щi?)r1   g.憃?)r   g\paP?)<   g	?)c   g,6?c             C   s"   t jj|dd}t||dd d S )Nr   )r"   gvIh%<=)rs   )r   rG  r   r   )rI   chiZexpected_meanr   r   r   r   	test_meanF  s    zTestArgus.test_meanzchi, expected_var, rtol)r   gLH'B?gvIh%<=)r1   go$?gdy=)r   g
=>g:0yE>)rJ  g2W>g:0yE>)rK  gb~P>g:0yE>c             C   s"   t jj|dd}t|||d d S )Nr   )r"   )rs   )r   rG  r"  r   )rI   rL  Zexpected_varrs   r   r   r   r   rD  Q  s    zTestArgus.test_varN)
rl   rm   rn   rH  rI  r   r   rE  rM  rD  r   r   r   r   rF  9  s   rF  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   )rI   r   r   r   _rvs^  s    z6test_rvs_no_size_warning.<locals>.rvs_no_size_gen._rvsN)rl   rm   rn   rN  r   r   r   r   rvs_no_size_gen]  s   rO  rvs_no_size)r  )r   r  r   r4   ZVisibleDeprecationWarningrT   )rO  rP  r   r   r   test_rvs_no_size_warning\  s    
rQ  )N)r  r   r  r  rf  r
  Znumpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r  r&   r4   r   r   Znumpy.lib.recfunctionsr   r   r   Zscipy._lib._utilr   r  r   Zscipy.statsr   Z!scipy.stats._distn_infrastructurer   Zscipy.stats.distributionsZscipy.specialr   Ztest_continuous_basicr   flagsoptimizer%  r   r    r-   r/   r3   r5   r6   r   rE  rE   objectrF   ro   r   r   r   r   r   r   r   r   r   r   r	  r  r%  r*  r.  r0  rF  rI  rT  rY  ro  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  r.  r2  rB  rC  r\  rn  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  r  r  r  r  r  r  r  r  r0  r*  r+  r,  r-  r/  r2  r3  r4  r5  r8  r9  r;  r<  r=  rE  rF  rQ  r   r   r   r   <module>   sB  ,
.
H&5 0 (Fw$?* $M),{:/, &
Q m h $,\UJ	
&(
	x;

,G.0a	#