3
Od                @   s:  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j 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j2j3d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j2j3ddejddgfdejddgfdejd,d-gfdej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j2j3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 (0  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   X/var/www/html/virt/lib64/python3.6/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|j||j|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|j|d |j|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皙?r   e   r   
   d   )r0   r   r1   )r&   r'   r-   r/   )r(   r+   r   r   r   test_vonmises_pdf_periodic8   s    
r4   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    r6   c              C   s   t jd} t| jdd d S )Ni   r   g      ?)r   r$   r   r.   )r,   r   r   r   test_vonmises_numericalI   s    
r7   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   logpdfr5   infr   )r8   dctargsr   r   r   test_supportN   s    
rF   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jd d S )Ni  )r5   randomseed)selfr   r   r   setup_methoda   s    zTestRandInt.setup_methodc             C   s   t jjdddd}ttj|dk tj|dk@  tt|dk t jjdddd}ttj|dk t|jj	t
d k t jjdd	}t|dk|d	k @  tt|tjtt|d
 t jdd	jd}t|jj	t
d k d S )N      r3   )sizer#   2   
AllInteger   .   )r      )r#   rO   )r#   rO   )r   randintrvsr   r&   alllenshapedtypecharr   
isinstanceZ
ScalarTypereprtype)rJ   valsvalr   r   r   test_rvsd   s     zTestRandInt.test_rvsc             C   sF   t jdd }t j|dk|dk @ dd}tjj|dd}t|| d S )Nr   $   rL   rM   g      ?   g{Gz?)r&   r_wherer   rT   pmfr   )rJ   r(   outr^   r   r   r   test_pdfq   s    zTestRandInt.test_pdfc             C   sd   t jddd}tj|}tj|dk|dkgd|d d d gd}tjj|dd}t||d	d
 d S )Nr   ra   r3   rM   rL   g      ?g      @r      )decimalg      9@)	r5   linspacer&   floorselectr   rT   r.   r   )rJ   r+   r(   rf   r^   r   r   r   test_cdfw   s
    
*zTestRandInt.test_cdfN)__name__
__module____qualname__rK   r`   rg   rm   r   r   r   r   rG   `   s   rG   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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK      s    zTestBinom.setup_methodc             C   s   t jjddd	d}ttj|dktj|dk@  ttj|d
k t|jjt	d k t jjdd}tt
|t t jddjd}tt
|tj t|jjt	d k d S )Nr2   g      ?r#   rO   )rN   r   rP   rS   )r#   rO   )r#   rO   )r   binomrU   r   r&   rV   rX   rY   rZ   r   r[   intndarray)rJ   r^   r_   r   r   r   r`      s     zTestBinom.test_rvsc             C   sD   t jjddd}t jjddd}t|dddd t|dddd d S )Nr3   r   r   g      ?gV瞯<)rtolatol)r   rr   re   r   )rJ   vals1vals2r   r   r   test_pmf   s    zTestBinom.test_pmfc             C   s~   t jdd}tjdddg}tt|| }|j }t|| t jdd}|j }t|d t jdd}|j }t|d d S )Nr#   g      ?g      ?g        g      ?)	r   rr   r5   r   sumr   entropyr   r   )rJ   r   
expected_p
expected_hhr   r   r   test_entropy   s    

zTestBinom.test_entropyc             C   sT   t j B t jdt ttjdddj d ttjdddj d W d Q R X d S )Nerrorr#   r   )np)	warningscatch_warningssimplefilterRuntimeWarningr   r   rr   meanstd)rJ   r   r   r   test_warns_p0   s    
zTestBinom.test_warns_p0N)rn   ro   rp   rK   r`   ry   r   r   r   r   r   r   rq      s
   rq   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestBernoullic             C   s   t jjd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK      s    zTestBernoulli.setup_methodc             C   s   t jjdd	d}ttj|dktj|dk@  ttj|d
k t|jjt	d k t jjd}tt
|t t jdjd}tt
|tj t|jjt	d k d S )Ng      ?r#   rO   )rN   r   r   rP   rS   )r#   rO   )r#   rO   )r   	bernoullirU   r   r&   rV   rX   rY   rZ   r   r[   rs   rt   )rJ   r^   r_   r   r   r   r`      s     zTestBernoulli.test_rvsc             C   st   t jd}dtjd dtjd  }|j }t|| t jd}|j }t|d t jd}|j }t|d d S )Ng      ?g      ?g        g      ?g      п)r   r   r5   logr{   r   r   )rJ   r   r}   r~   r   r   r   r      s    




zTestBernoulli.test_entropyN)rn   ro   rp   rK   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 jdd}tjj||}tjj||}t|| d S )Ng?      i)r5   logspacer   Zbradfordr.   ppfr   )rJ   cr+   qxxr   r   r   test_cdf_ppf   s
    zTestBradford.test_cdf_ppfN)rn   ro   rp   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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK      s    zTestNBinom.setup_methodc             C   s   t jjddd	d}ttj|dk ttj|d
k t|jjt	d k t jjdd}tt
|t t jddjd}tt
|tj t|jjt	d k d S )Nr2   g      ?r#   rO   )rN   r   rP   rS   )r#   rO   )r#   rO   )r   nbinomrU   r   r&   rV   rX   rY   rZ   r   r[   rs   rt   )rJ   r^   r_   r   r   r   r`      s    zTestNBinom.test_rvsc             C   sH   t tjtjjdddtjjddd tjjjddd}t|d d S )Ni  i  gp=
ף?r   r   )	r   r5   expr   r   logpmfre   r   r   )rJ   r_   r   r   r   ry      s    zTestNBinom.test_pmfN)rn   ro   rp   rK   r`   ry   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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK      s    zTestGenInvGauss.setup_methodc             C   s:   t jdd}t j|jddd|j\}}t|dkd d S )Ngffffff@g      ?i  i  )rN   random_stateg?T)r   geninvgausskstestrU   r.   r   )rJ   gig_r   r   r   r   test_rvs_with_mode_shift   s    z(TestGenInvGauss.test_rvs_with_mode_shiftc             C   s:   t jdd}t j|jddd|j\}}t|dkd d S )Ng?g      ?i  i  )rN   r   g?T)r   r   r   rU   r.   r   )rJ   r   r   r   r   r   r   test_rvs_without_mode_shift   s    z+TestGenInvGauss.test_rvs_without_mode_shiftc             C   s:   t jdd}t j|jddd|j\}}t|dkd d S )Ng?g?i  i  )rN   r   g?T)r   r   r   rU   r.   r   )rJ   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| |}|jddd}t j||jd dkS )Ni  i  )rN   r   r   g?)r   r   rU   r   r.   )r   r   r   rU   r   r   r   my_ks_check	  s    z4TestGenInvGauss.test_rvs_p_zero.<locals>.my_ks_checkr   g?Tg?g      ?)r   )rJ   r   r   r   r   test_rvs_p_zero  s    zTestGenInvGauss.test_rvs_p_zeroc             C   s6   t tjddjddddtjddjddd  d S )Ng      ?r#   r2   i  )rN   r   r   g      )r   r   r   rU   )rJ   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jddd }}t jj|dd| |d}t|t j	|j| t jj
|dd| |d}t|t j	|j
| d S )Ni  g      ?r   i  )rN   r   r   r   r<   )rE   g333333?Tr3   g{Gz?r2   )r   r   r"   g      g      g      )r   r   rU   r   r   r5   rj   r%   r   r<   r.   )rJ   Zigmur+   Zpdf_igZcdf_igr   r   r   test_invgauss  s     zTestGenInvGauss.test_invgaussc             C   sF   t jddddddddd	d
g
}t jddd}t|tjj|dd d S )Ng;g8y8?g\}Z?ghܲ<?g&Khdd?g7!L?g	Cf?g_诱?g>0|?gRq?g{Gz?rL   r2   g      ?r   )r5   r   rj   r   r   r   r%   )rJ   Zvals_Rr+   r   r   r   
test_pdf_R#  s    
zTestGenInvGauss.test_pdf_Rc             C   s0   t tjjdddd t tjjdddd d S )Nr   g      ?g    >ArO   r#   )r   r   r   r%   )rJ   r   r   r   test_pdf_zero.  s    zTestGenInvGauss.test_pdf_zeroN)rn   ro   rp   rK   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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK   7  s    zTestNormInvGauss.setup_methodc             C   sL   t jdddddg}t jdddd	d
g}tjj|ddd}t||dd d S )Ngp~٧>g @X>g}e?g{)߳?gwH?   rL   r      rQ   r   g      ?)r   r   g&.>)rv   i)r5   r   r   norminvgaussr.   r   )rJ   Zr_cdfx_testvals_cdfr   r   r   
test_cdf_R:  s
    

zTestNormInvGauss.test_cdf_Rc             C   sL   t jdddddg}t j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>r   rL   r   r   rQ   r   g      ?)r   r   g&.>)rv   ir   )r5   r   r   r   r%   r   )rJ   Zr_pdfr   Zvals_pdfr   r   r   r   F  s
    

zTestNormInvGauss.test_pdf_Rc             C   s   d	\}}t j|d |d  }|| |d |d  d| |t j|  ddd|d  |d    | f}t|tjj||dd d S )
Nr         ?r#   rS   g      @r   mvsk)moments)r   r   )r5   sqrtr   r   r   )rJ   r   r   gammaZv_statsr   r   r   
test_statsN  s
    ("zTestNormInvGauss.test_statsc             C   sB   d\}}t jdddg}tjj|||}t|tjj||| d S )Nr         ?gMbP?g+?)r   r   )r5   r   r   r   r   r   r.   )rJ   r   r   r   r^   r   r   r   test_ppfU  s    zTestNormInvGauss.test_ppfN)rn   ro   rp   rK   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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK   ]  s    zTestGeom.setup_methodc             C   s   t jjddd}ttj|dk ttj|d	k t|jjt	d k t jjd}tt
|t t jdjd}tt
|tj t|jjt	d k d S )
Ng      ?r#   rO   )rN   r   rP   rS   )r#   rO   )r#   rO   )r   geomrU   r   r&   rV   rX   rY   rZ   r   r[   rs   rt   )rJ   r^   r_   r   r   r   r`   `  s    zTestGeom.test_rvsc             C   s(   t jjdddgd}t|dddg d S )Nr   r#   rS   g      ?g      ?g      ?)r   r   re   r   )rJ   r^   r   r   r   ry   k  s    zTestGeom.test_pmfc             C   sZ   t jtjjdddgd}tjjdddgd}t||ddd tjjdd}t|d d S )	Nr   r#   rS   g      ?gV瞯<r   )ru   rv   g        )r5   r   r   r   re   r   r   r   )rJ   rw   rx   r_   r   r   r   test_logpmfo  s
    zTestGeom.test_logpmfc             C   sR   t jjdddgd}t jjdddgd}tdddg}t|| t|d|  d S )Nr   r#   rS   g      ?g      ?g      ?)r   r   r.   sfr   r   )rJ   r^   vals_sfexpectedr   r   r   test_cdf_sfy  s
    
zTestGeom.test_cdf_sfc             C   s\   t jjdddgd}t jjdddgd}tdddg}t|tj| t|tj|  d S )Nr   r#   rS   g      ?g      ?g      ?)	r   r   logcdflogsfr   r   r5   r   log1p)rJ   r^   r   r   r   r   r   test_logcdf_logsf  s
    zTestGeom.test_logcdf_logsfc             C   s0   t j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   )rJ   r^   r   r   r   r   r     s    zTestGeom.test_ppfc             C   s   t tjjddddd d S )Ng#B;g      ?g+=)rv   )r   r   r   r   )rJ   r   r   r   test_ppf_underflow  s    zTestGeom.test_ppf_underflowN)rn   ro   rp   rK   r`   ry   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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK     s    zTestPlanck.setup_methodc             C   s0   t jjdddgd}tdddg}t|| d S )Nr   r#   rS   g      @g|dy?g8'\>ggrU!>)r   planckr   r   r   )rJ   r^   r   r   r   r   test_sf  s
    zTestPlanck.test_sfc             C   s0   t jjdddgd}tddd	g}t|| d S )
Ng     @@g     @@g     p@g    P.Ag    h>Ag    TFAg    P.g    h>g    TF)r   r   r   r   r   )rJ   r^   r   r   r   r   
test_logsf  s    zTestPlanck.test_logsfN)rn   ro   rp   rK   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j|d}t jj|}t|| d S )Nr   r#   rS   )r   gennormr%   laplacer   )rJ   pointspdf1pdf2r   r   r   test_laplace  s    
zTestGennorm.test_laplacec             C   s6   dddg}t jj|d}t jj|dd}t|| d S )Nr   r#   rS   g      ?)r"   g      g;f?)r   r   r%   normr   )rJ   r   r   r   r   r   r   	test_norm  s    
zTestGennorm.test_normN)rn   ro   rp   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j|d}t jj|}t|| d S )Nr   r#   rS   )r   halfgennormr%   exponr   )rJ   r   r   r   r   r   r   
test_expon  s    
zTestHalfgennorm.test_exponc             C   s6   dddg}t jj|d}t jj|dd}t|| d S )Nr   r#   rS   g      ?)r"   g      g;f?)r   r   r%   Zhalfnormr   )rJ   r   r   r   r   r   r   test_halfnorm  s    
zTestHalfgennorm.test_halfnormc             C   s8   dddg}t jj|d}t jj|d}t|d|  d S )Nr   r#   rS   g
(?)r   r   r%   r   r   )rJ   r   r   r   r   r   r   test_gennorm  s    
zTestHalfgennorm.test_gennormN)rn   ro   rp   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jddd Zdd Zdd Zdd Zdd ZdS )TestTruncnormc             C   s   t jjd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK     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jtjdd
dddtjg}t|| d S )Ng      ?r   g-C6?r   r#   g      ?rS   r   )r!   r"   gfO?gl@rL   g      gH.?g      )r   	truncnormr   r5   r   nanr   )rJ   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jtjd
ddddtjg}t|| d S )Ng      ?r   g-C6?r   r#   g      ?rS   r   )r!   r"   rL   gl@gfO?g      gH.?g      )r   r   isfr5   r   r   r   )rJ   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||j   k oD|j   k oD|k n   d	\}}t jj||dddd}t||j   k o|j   k o|k n   d S )
N   r2   r   r   )rN   )r   r   )r2   r   )r   r   rU   r   minmax)rJ   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||j   koD|j   koD|kn  t|||gf d\}}t jj||dddd}t||j   k o|j   k o|k n   d\}}t jj||dddd}t||j   k o|j   k o|k n   d\}}t jj||dddd}t||j   k o:|j   k o:|k n   d S )Nr3   r1   r   r   r2   )rN       '  '  )r3   r1   )r   r   )r   r   )r   r   )r   r   rU   r   r   r   str)rJ   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 jt j ||t jg}|| d }tjj|||}tjj|||}tjj|||}t jddddg}t jddddg}	t jddd	dg}
|dk rt jdd	ddg}
t|| t||	 t||
 tt j	|
d |
d
  |d  t jdddg}tjj
|||}t j|t j|d |g}t|| |dk r|ttjj|||d ttjj|||d n,ttjj|||d ttjj|||d tjj|||}tt j	||
d
  |d d
  qW d S )NrS   r   g       @r   r   g      ?g        gd._MT
@gBKg?r#   g      ?gĖy	@gdv*?g,mj%V?g      ?r   )r5   r   rC   r   r   r.   r   r%   r   r   r   sign)rJ   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 jt j ||t jg}|| d }tjj|||}tjj|||}tjj|||}t jddddg}t jddddg}	t jddd	dg}
|dk rt jdd	ddg}
t|| t||	 t||
 tt j	|
d |
d
  |d  t jdddg}tjj
|||}t j|t j|d |g}t|| tjj|||}t|| |dk rttjj|||d ttjj|||d n,ttjj|||d ttjj|||d tjj|||}tt j	||
d
  |d d
  t j||d}|d d d  }ttjj|||tjj|| | d d d  ttjj|||tjj|| | d d d  ttjj|||tjj|| | d d d  qW d S )N'   (   g       @r   r   g      ?g        gpGC@gFf<r#   g      ?gEC@g i?gspXio)>g      ?r   iir  r  r  )r5   r   rC   r   r   r.   r   r%   r   r   r   r   rj   )rJ   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   )ri   )r   r   r   )rJ   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,  | j d,dddddg | j d-dddddg | j d.ddddd/g | j d0d	dd
dd1g | j dtjddddg | j tj dd2dd3dg | j d4ddddd5g | j d6dd7dd8d9g | j d:d;d<dd=dg | j d>d?d@ddAdg | j dBdCdDd!dEd#gd$d% | j dFdGdHd)dId+g | j d'd&d(d)d*d+g d S )JNrM   r   r   g        r2   rS   gMFmz%?g?r#   ghI}?gHNM?gQ63E?gnl$A?gv1"D?g<8L?gU*?g bn?gnA?g!c3TX?	   gH$7"@g͢xr?gN8`?gp=#K@r      gif3@g6oRf?g?g+15|@   go=@gqXS?gCØs?gm@   )r  r  r  gGC@g&SԍuE?gy?gnw@iir   gſgHNMgQ63Egv1"Dr  g!c3TXʿr   gU*ҿgnAg!c3TXʿiigH$7"gN8`iigif3giigo=gCØsiigGCgy)r	  r5   rC   )rJ   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   r5   rC   r   )rJ   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||j   k oD|j   k oD|k n   d S )Nr2   rQ   r   r   )rN   )r2   rQ   )r   r   rU   r   r   r   )rJ   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 j|dt|fkszttt j	||j
ddk tt j	|jdd|k d S )Nr2   rL   -   r  r   )rN   r   )axisir   iiir   ii)r5   rC   r   r   rU   rW   rX   AssertionErrorr   rV   r   r   )rJ   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j d d S )Ndefault_rngr2   rL   )rN   r   ir   )r   r5   rH   r   r   rU   r  )rJ   r   r   r   test_rvs_Generatorr  s    z TestTruncnorm.test_rvs_GeneratorN)r   )rn   ro   rp   rK   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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK   y  s    zTestHypergeom.setup_methodc             C   s   t jjdddd	d}ttj|dktj|dk@  ttj|d
k t|jjt	d k t jjddd}tt
|t t jdddjd}tt
|tj t|jjt	d k d S )Nr   r2   rS   r#   rO   )rN   r   rP   )r#   rO   )r#   rO   )r   	hypergeomrU   r   r&   rV   rX   rY   rZ   r   r[   rs   rt   )rJ   r^   r_   r   r   r   r`   |  s    zTestHypergeom.test_rvsc             C   s6   d}d}d}|}|}t jjd|||}t|dd d S )Ni	  rO   i  r#   gkㅒP?r   )r   r  re   r   )rJ   Mr   NZtotZgoodZhgpmfr   r   r   test_precision  s    zTestHypergeom.test_precisionc             C   sl   t tjjdddddd t tjjdddddd t tjjdddddd t tjjdddddd d S )Nr   r#   r   g      ?r   g        )r   r   r  re   )rJ   r   r   r   	test_args  s    zTestHypergeom.test_argsc             C   s.   t dtjjdddd  ko"dkn   d S )Nr   rM   io i  if0  g      ?)r   r   r  r.   )rJ   r   r   r   test_cdf_above_one  s    z TestHypergeom.test_cdf_above_onec                s   d dt jddddddd	gd
 }d fdd|D }t jdddddddg}t||ddd ddddg}tjj|   d}ddddg}t||ddd d S )Ng    +@g     @rS   gffffff@g333333@r   gffffff@g@rL   g     @g     @c                s"   g | ]}t j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Ơ>)rv   ru   g     @g     @g     @g     @g)9g"1)r5   r   r   r   r  r   )rJ   Zfruits_eatenresr   Z	quantilesres2Z	expected2r   )r!  r"  r#  r   test_precision2  s    zTestHypergeom.test_precision2c             C   sd   t jddd}|j }tjddg}tjt|| }t|| t jddd}|j }t|d d S )Nr   r   g      ?g      ?g        )	r   r  r{   r5   r   rz   r   r   r   )rJ   hgr~   r|   r}   r   r   r   r     s    
zTestHypergeom.test_entropyc             C   sl   d}d}d}d}t jj||||}d}t||dd d}d	}d
}d}t jj||||}d}t||dd d S )Ng     @g    cAg    .Ag     j@go@rS   )ri   r   i@  iX  i,  g_7	j$1rQ   gog_7	j$)r   r  r   r   )rJ   r(   r  r   r  resultr   r   r   r   r     s    zTestHypergeom.test_logsfc             C   s   d}d}d}d}t jj||||}d}t||dd d}d	}d
}d}t jj||||}d}t||dd d}d	}d}d}t jj||||}d}t||dd tjdddg}d	}d
}d}t jj||||}tjdd}t||dd d S )Nr   g    cAg    .Ag     j@g)\U@rS   )ri   r  i@  rO   i,  g*@V;rQ   }      i  gר=g)\Ug*@Vgרg*@V)r   r  r   r   r5   r   full)rJ   r(   r  r   r  r)  r   r   r   r   test_logcdf  s8    zTestHypergeom.test_logcdfN)rn   ro   rp   rK   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 jdddddddddd
dddddgjdd}x<|D ]4\}}}}}tjj|dd}t|||||gdd q6W d S )Ng      ?g"~j?g46<@g oŏ?g      @g      ?g	h"lx?gQ?gZd;?g333333@g      (@g{/L@g??gгY?gh|?5?r   rL   Zmsvk)r   r   )ri   g"~jg oŏg	h"lxgZd;gгYҿr  )r5   r   reshaper   Zloggammar   )rJ   tabler   r   varskewZkurtcomputedr   r   r   r     s    

zTestLoggamma.test_statsN)rn   ro   rp   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 jdd}tjj|}tjj|}t|| d S )Nr   i)r5   rj   r   logisticr.   r   r   )rJ   r+   yr   r   r   r   r     s    zTestLogistic.test_cdf_ppfc             C   s2   t jdd}tjj|}tjj|}t|| d S )Nr   i)r5   rj   r   r5  r   r   r   )rJ   r+   r6  r   r   r   r   test_sf_isf  s    zTestLogistic.test_sf_isfc             C   s4   d}d}t tjjd| | t tjj|| d S )Ng      <gg|EA@r   )r   r   r5  r   r   )rJ   r   Zdesiredr   r   r   test_extreme_values%  s    z TestLogistic.test_extreme_valuesN)rn   ro   rp   r   r7  r8  r   r   r   r   r4    s   r4  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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK   .  s    zTestLogser.setup_methodc             C   s   t jjddd}ttj|dk ttj|d	k t|jjt	d k t jjd}tt
|t t jdjd}tt
|tj t|jjt	d k d S )
Ng      ?r#   rO   )rN   r   rP   rS   )r#   rO   )r#   rO   )r   logserrU   r   r&   rV   rX   rY   rZ   r   r[   rs   rt   )rJ   r^   r_   r   r   r   r`   1  s    zTestLogser.test_rvsc             C   s   t jjdd}t|d d S )Nr   g#B;g&Y3)r   r:  re   r   )rJ   r  r   r   r   test_pmf_small_p<  s    zTestLogser.test_pmf_small_pc             C   s   t jjd}t|d d S )Ng:0yE>gW  ?)r   r:  r   r   )rJ   r  r   r   r   test_mean_small_pJ  s    zTestLogser.test_mean_small_pN)rn   ro   rp   rK   r`   r;  r<  r   r   r   r   r9  -  s   r9  c               @   s   e Zd Zdd Zdd ZdS )
TestParetoc             C   s  t j  t j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jd  t|tj	 tjjddd\}}}}t
|d t
|d  t
|d$tjd&  t|tj	 tjjddd\}}}}t
|d' t
|d* t
|d,tjd-  t
|d7 W d Q R X d S )8Nr   g      ?r   )r   g      ?g      ?g      @g       @g      @g      ?g      @r#   g      @g      @g      2@r   rS   g      @r  g?g      @g      ?grq@gffffff?g      @g     "@gK~?g      "@g      2@g۶m۶m?gUUUUUU?gqq?g      @g      $@g      ?g      $@g       @g      ?g%I$I?g     (@g     >@gQ?g      &@gUUUUUU@grq?g     V@g     @4@g     [@g      ;@g     U@g     T@g     ~@g      @g      @g88Nb@)r   r   r   r   r   paretor   r5   rC   r   r   r   )rJ   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   )rJ   r+   r   r"   r   r   r   r   r   r     s    zTestPareto.test_sfN)rn   ro   rp   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jddddddgfd*d+d,dejd ejgfd-d.d1d2ejd  d3gfd4d5d6dd8gfgd%d& Zd'd( Zd)S )9TestGenparetoc             C   sp   x>dD ]6}t j|}tjj|\}}t|d tt j| qW t jd}tjj|\}}t||gddg d S )N      ?        g       @g      ?)r@  rA  g       )	r5   asarrayr   	genpareto_get_supportr   r   isposinfr   )rJ   r   r   r   r   r   r   test_ab  s    



zTestGenpareto.test_abc             C   s   t jdd}tjddd}t|j|t jj| t|j|t jj| t|j|t jj| tjddd}t|j	|t jj	| d S )Ng        )r   r   g      $@rM   g      ?r2   )
r   rC  r5   rj   r   r%   r   r.   r   r   )rJ   rvr+   r   r   r   r   test_c0  s    zTestGenpareto.test_c0c             C   s   t jd	d}tjddd}t|j|t jj| t|j|t jj| t|j|t jj| tjddd}t|j	|t jj	| t|j
dd d S )
Ng      ?)r   r   g      $@rM   g        r2   r   g      )r   rC  r5   rj   r   r%   uniformr.   r   r   rB   )rJ   rG  r+   r   r   r   r   test_cm1  s    zTestGenpareto.test_cm1c             C   s   t jdd}t|jtj|jtjgddg ttj|j	tj t jdd}t|jtj|jtjgddg ttj|j	tj t jdd}t|jtj|jtjgddg ttj|j	tj d S )Ng?)r   g        g      ?g      )
r   rC  r   r%   r5   rC   r.   r   isneginfrB   )rJ   rG  r   r   r   
test_x_inf  s    """zTestGenpareto.test_x_infc             C   s   t jddd}xd	D ]|}tjj||}x,dD ]$}tjj||| }t||dd q,W tjj||}x,dD ]$}tjj||| }t||dd qhW qW d S )Nr   r2   rM   r   +=g-q=)rv   r  )r   r  +)rM  rN  )rM  rM  )r5   rj   r   rC  r%   r   r.   )rJ   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j||}x,dD ]$}tjj||| }t||dd qXW q@W d S )Ng-q=g{Gz?g?)baser   rM   F)endpointg      ?        +=)rv         )rS  rU  +)rT  rV  )r5   rc   r   rj   r   rC  r   r   )rJ   r   r   Zppf0rO  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j||}x,dD ]$}tjj||| }t||dd qXW q@W d S )Ng-q=g{Gz?g?)rQ  r   rM   F)rR  g      ?        +=)rv         )rX  rZ  +)rY  r[  )r5   rc   r   rj   r   rC  r   r   )rJ   r   r   Zisf0rO  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jtjj||||dd q@W d S )Ng-q=g{Gz?g?)rQ  r   rM   F)rR  g      ?:0yE>gC]r2<V瞯<)rv   C]r2V瞯Ҽ)r]  r_  r^  r`  )	r5   rc   r   rj   r   r   rC  r.   r   )rJ   r   r   r   r   r   test_cdf_ppf_roundtrip  s    
z$TestGenpareto.test_cdf_ppf_roundtripc             C   s    t jjdddd}t|d d S )Ng    _Bg{Gz?r   r   gpEȜ@gpEȜ)r   rC  r   r   )rJ   logpr   r   r   r     s    zTestGenpareto.test_logsfzc, expected_statsr   r   r#   r  r   rS       r
  r2   r   Q   @   r   i  r  rh   rL   c             C   s$   t jj |dd}t||ddd d S )Nr   )r   gvIh%<=gV瞯<)ru   rv   )r   rC  r   )rJ   r   Zexpected_statsr)  r   r   r   r     s    zTestGenpareto.test_statsc             C   s   t jjd}t|ddd d S )Ng:0yE>gvǼ
  ?gvIh%<=)ru   )r   rC  r1  r   )rJ   r  r   r   r   test_var  s    zTestGenpareto.test_varNg      ?gUUUUUU?gqq@gqq?g      ?g     @?g%I$I?g$I$	?grq?gll0@r  g      ?gUUUUUU?ig333333)rn   ro   rp   rF  rH  rJ  rL  rP  rW  r\  ra  r   r   r   parametrizer5   r   r   r   rf  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 )
TestPearson3c             C   s   t jjd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK     s    zTestPearson3.setup_methodc             C   s   t jjddd}ttj|d	k t|jjtd k t jjd}tt	|t
 t jdjd}tt	|tj t|jjtd k tt|dk d S )
Ng?r#   rO   )rN   ZAllFloatg      ?rS   )r#   rO   )r#   rO   )r   pearson3rU   r   r&   rX   rY   rZ   r   r[   floatrt   rW   )rJ   r^   r_   r   r   r   r`     s    zTestPearson3.test_rvsc             C   s   t jjddddg}t|tjdddgdd	 t jjdd}t|tjdgdd	 t jjdddddgd}t|tjdddddgdd	 d S )Nr#   g        g?g?gtT?g+q?g?gư>)rv   rS   gND}i?r   r   gj?gdC?gs?g'M?r   r   r  r  )r   ri  r%   r   r5   r   )rJ   r^   r   r   r   rg   !  s    zTestPearson3.test_pdfc             C   s   t jjddddg}t|tjdddgdd	 t jjdd}t|dgdd	 t j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ư>)rv   rS   g E&"J?r   r   giZ*J?gh+8w?gcK?g|<x6?gG?r   r   r  r  )r   ri  r.   r   r5   r   )rJ   r^   r   r   r   rm   +  s    
zTestPearson3.test_cdfN)rn   ro   rp   rK   r`   rg   rm   r   r   r   r   rh    s   
rh  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j|||}t jj|| }t|| qW d S )Ng        皙?皙?      ?      ?ffffff?ffffff            皙ɿ皙)
rq  rr  rs  rt  ru  rl  rm  rn  ro  rp  )r   kappa4r.   rC  r   )rJ   r+   r~   r(   r^   	vals_compr   r   r   test_cdf_genpareto7  s    zTestKappa4.test_cdf_genparetoc             C   sL   t jddd}d}t jddd}tjj|||}tjj||}t|| d S )NrL   r2   g        rS   r   r   )r5   rj   r   rv  r.   
genextremer   )rJ   r+   r~   r(   r^   rw  r   r   r   test_cdf_genextremeB  s    zTestKappa4.test_cdf_genextremec             C   s@   t jddd}d}d}tjj|||}tjj|}t|| d S )Nr   r2   g      ?g        )r5   rj   r   rv  r.   r   r   )rJ   r+   r~   r(   r^   rw  r   r   r   test_cdf_exponK  s    zTestKappa4.test_cdf_exponc             C   s@   t jddd}d}d}tjj|||}tjj|}t|| d S )NrL   r2   g        r   )r5   rj   r   rv  r.   Zgumbel_rr   )rJ   r+   r~   r(   r^   rw  r   r   r   test_cdf_gumbel_rT  s    zTestKappa4.test_cdf_gumbel_rc             C   s@   t jddd}d}d}tjj|||}tjj|}t|| d S )NrL   r2   g      ?g        r   g      )r5   rj   r   rv  r.   r5  r   )rJ   r+   r~   r(   r^   rw  r   r   r   test_cdf_logistic]  s    zTestKappa4.test_cdf_logisticc             C   s@   t jddd}d}d}tjj|||}tjj|}t|| d S )NrL   r2   g      ?r   )r5   rj   r   rv  r.   rI  r   )rJ   r+   r~   r(   r^   rw  r   r   r   test_cdf_uniformf  s    zTestKappa4.test_cdf_uniformc             C   s   t jdd d S )Nr   r#   )r   rv  )rJ   r   r   r   test_integers_ctoro  s    zTestKappa4.test_integers_ctorN)
rn   ro   rp   rx  rz  r{  r|  r}  r~  r  r   r   r   r   rk  6  s   					rk  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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK   v  s    zTestPoisson.setup_methodc             C   sB   t jd}tjjdddg|}d|d |d d g}t|| d S )Nr#   r   r   g      ?r   )r5   r   r   poissonre   r   )rJ   Zln2r^   r   r   r   r   test_pmf_basicy  s    
zTestPoisson.test_pmf_basicc             C   sD   t jjdddgd}dddg}t|| t jjdd}t|d d S )Nr   r   r#   gffffff?)r   r   )r   r  re   r   intervalr   )rJ   r^   r   r  r   r   r   test_mu0  s
    

zTestPoisson.test_mu0c             C   s   t jjddd}ttj|dk ttj|d	k t|jjt	d k t jjd}tt
|t t jdjd}tt
|tj t|jjt	d k d S )
Ng      ?r#   rO   )rN   r   rP   rS   )r#   rO   )r#   rO   )r   r  rU   r   r&   rV   rX   rY   rZ   r   r[   rs   rt   )rJ   r^   r_   r   r   r   r`     s    zTestPoisson.test_rvsc             C   s   d}t jj |dd}t|||tjd| d| g tjdddg}t jj |dd}||tjddtjd gtjdd	gf}t|| d S )
Ng      0@r   )r   g      ?g        g       @r   r#   g      ?)r   r  r   r5   r   r   rC   )rJ   r   r)  r   r   r   r   r     s     &zTestPoisson.test_statsN)rn   ro   rp   rK   r  r  r`   r   r   r   r   r   r  u  s
   	r  c               @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )	TestKSTwoc             C   s   t jjd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK     s    zTestKSTwo.setup_methodc          
   C   s   xdD ]}t jdd| d| ddd	|  dg}d	| | }tjj|d }|dkr^t j|nd}t jdd|| ddtjjd|  t	dd|  d
d	g}tj
j||}t|| qW d S )Nr   r#   rS   r2   r3     r   g      ?g      ?g        )r   r#   rS   r2   r3   r  )r5   r   r   r   gammalnr   r   ksoner   r   kstwor.   r   )rJ   r   r+   v1lgelgr   r   r   r   r   rm     s    
&zTestKSTwo.test_cdfc          	   C   s   t jddd}xdD ]}t jdd	| d| d	dd
|  dg}d
| | }tjj|d }|dkrlt j|nd}t jd
d
d||  dtjj	d	| t
d| d
dg}tjj	||}t|| qW d S )Nr   r   r   r#   rS   r2   r3     g      ?g      ?)r   r#   rS   r2   r3   r  )r5   rj   r   r   r   r  r   r   r  r   r   r  r   )rJ   r+   r   r  r  r  r   r   r   r   r   r     s    
&
zTestKSTwo.test_sfc             C   sh   t jddddd  }ddddd	d
g}x<|D ]4}|t j| }tjj||}t j|}t|d q,W d S )Nr   r#   r   r   rO   r3      i  i  i  g:0yE>)r5   rj   r   r   r  r.   Zdiffr	   )rJ   r+   ns_xxnprobsZdiffsr   r   r   test_cdf_sqrtn  s    

zTestKSTwo.test_cdf_sqrtnc             C   sJ   t jddd}x6d	D ].}tjj||}tjj||}t|d|  qW d S )
Nr   r   r   r#   rS   r2   r3     )r   r#   rS   r2   r3   r  )r5   rj   r   r  r.   r   r   )rJ   r+   r   r   r   r   r   r   r     s
    
zTestKSTwo.test_cdf_sfc             C   sX   t jddd}xDd	D ]<}|t j| }tjj||}tjj||}t|d|  qW d S )
Nr   r   r   r#   rS   r2   r3     )r   r#   rS   r2   r3   r  )r5   rj   r   r   r  r.   r   r   )rJ   r+   r   r  r   r   r   r   r   test_cdf_sf_sqrtn  s    
zTestKSTwo.test_cdf_sf_sqrtnc             C   sr   t jddd}x^dD ]V}||d	| k }tjj||}d|k |d
k @ }tjj||}t|| || dd qW d S )Nr   r   r   r#   rS   r2   r3     g      ?gGz?g-C6?)ru   )r   r#   rS   r2   r3   r  )r5   rj   r   r  r.   r   r   )rJ   r+   r   r  r   condr^   r   r   r   test_ppf_of_cdf  s    
zTestKSTwo.test_ppf_of_cdfc             C   sr   t jddd}x^dD ]V}||d	| k }tjj||}d|k |d
k @ }tjj||}t|| || dd qW d S )Nr   r   r   r#   rS   r2   r3     g      ?g      ?g-C6?)ru   )r   r#   rS   r2   r3   r  )r5   rj   r   r  r   r   r   )rJ   r+   r   r  Zvals_isfr  r^   r   r   r   test_isf_of_sf  s    
zTestKSTwo.test_isf_of_sfc             C   sx   t jddd}xddD ]\}|t j| |d	| k }tjj||}d|k |d
k @ }tjj||}t|| ||  qW d S )Nr   r   r   r#   rS   r2   r3     g      ?g      ?)r   r#   rS   r2   r3   r  )r5   rj   r   r   r  r.   r   r   )rJ   r+   r   r  r   r  r^   r   r   r   test_ppf_of_cdf_sqrtn  s    
zTestKSTwo.test_ppf_of_cdf_sqrtnc             C   sx   t jddd}xddD ]\}|t j| |d	| k }tjj||}d|k |d
k @ }tjj||}t|| ||  qW d S )Nr   r   r   r#   rS   r2   r3     g      ?gffffff?)r   r#   rS   r2   r3   r  )r5   rj   r   r   r  r   r   r   )rJ   r+   r   r  r   r  r^   r   r   r   test_isf_of_sf_sqrtn  s    
zTestKSTwo.test_isf_of_sf_sqrtnc             C   sN   t jddddd  }x2d	D ]*}tjj||}tjj||}t|| qW d S )
Nr   r   r   r#   rS   r2   r3     )r   r#   rS   r2   r3   r  )r5   rj   r   r  r   r.   r   )rJ   r  r   r  r   r   r   r   r     s
    
zTestKSTwo.test_ppfc             C   s   ddddddg}t jd2d3d4dd
d	g}t j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.d/gg}xVt|D ]J\}}|t jd
 t jt jd
 |  }tjj||}t	||| d0d1 qW d S )5Nr2   rO   r3   r  i  i  g      ?r   rS   r#   r   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㈵>)ru   g      ?gUUUUUU?g      ?)
r5   r   	enumerater   r   r'   r   r  r.   r   )rJ   r  Zratiosr   idxr   r+   r   r   r   r   test_simard_lecuyer_table1  s    "z$TestKSTwo.test_simard_lecuyer_table1N)rn   ro   rp   rK   rm   r   r  r   r  r  r  r  r  r   r  r   r   r   r   r    s   
		
r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestZipfc             C   s   t jjd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK   ,  s    zTestZipf.setup_methodc             C   s   t jjddd}ttj|dk ttj|d	k t|jjt	d k t jjd}tt
|t t jdjd}tt
|tj t|jjt	d k d S )
Ng      ?r#   rO   )rN   r   rP   rS   )r#   rO   )r#   rO   )r   zipfrU   r   r&   rV   rX   rY   rZ   r   r[   rs   rt   )rJ   r^   r_   r   r   r   r`   /  s    zTestZipf.test_rvsc             C   s\   t jj dd\}}ttj| t|tj t jj ddd\}}ttj||gj   d S )Ngffffff@)r   g333333@sk)r   r   )r   r  r   r5   isfiniter   rC   rV   )rJ   r  r  r*   r(   r   r   r   r  :  s
    zTestZipf.test_momentsN)rn   ro   rp   rK   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 )
TestDLaplacec             C   s   t jjd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK   E  s    zTestDLaplace.setup_methodc             C   s   t jjddd}ttj|d	k t|jjtd k t jjd}tt	|t
 t jdjd}tt	|tj t|jjtd k tt jjdd k	 d S )
Ng      ?r#   rO   )rN   rP   rS   g?)r#   rO   )r#   rO   )r   dlaplacerU   r   r&   rX   rY   rZ   r   r[   rs   rt   )rJ   r^   r_   r   r   r   r`   H  s    zTestDLaplace.test_rvsc             C   s   d}t j|}|j d\}}}}d}tj| |d }|j|}	tj|	|d  tj|	|d   }
}t||fd t||f|
||
d  d fd	d
d d S )Ng      ?r   %   r   r#   r   r   g      @g+=g:0yE>)rv   ru   )r   r   )r   r  r5   arangere   rz   r   r   )rJ   r   dlr  r  r*   r(   r  r   ppm2Zm4r   r   r   r   S  s    

&zTestDLaplace.test_statsc             C   sF   t jd}tj|}|jd\}}}}t||fd t||fd d S )Ng       @r                 @      
@)r  r  )r  r  )r5   r   r   r  r   r   )rJ   r   r  r  r  r*   r(   r   r   r   test_stats2`  s
    

zTestDLaplace.test_stats2N)rn   ro   rp   rK   r`   r   r  r   r   r   r   r  D  s   r  c                   sl   e Zd Zejjdddddgejjdddddgd	d
 Zejjddddg fddZdd Z  Z	S )TestLaplacervs_locrL   r   r   r#   	rvs_scalerS   r2   c             C   sX  t jjd||d}tj|}tjtj|| t| }t jj|\}}t	||ddd t	||ddd t jj||d\}}t	||ddd t jj||d\}}t	|| |d }tjtj|| 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 )	Nr3   )rN   r!   r"   gV瞯<)rv   ru   )floc)fscaler#   )r  r  )r   r   rU   r5   medianrz   absrW   fitr   assert_raisesRuntimeErrorr   rC   )rJ   r  r  dataZloc_mleZ	scale_mler!   r"   r   r   r   test_fiti  s(    

zTestLaplace.test_fitzrvs_scale,rvs_loc皙?      ?c                s   t jjd||d}dd }t jj|\}}ttt jt jj|\}}||||}	||||}
|	|
k s|tj|	|
ddds|td S )Ni  )rN   r!   r"   c             S   s8   dt | tjd|  d| tjtj||     S )Nr   r#   r  )rW   r5   r   rz   r  )r!   r"   r  r   r   r   ll  s    z2TestLaplace.test_fit_MLE_comp_optimzer.<locals>.llgV瞯<)rv   ru   )	r   r   rU   r  superr]   r5   Zallcloser  )rJ   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 j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瞯<)rv   ru   )r  )r5   r   r   r   r  r   )rJ   r  r!   r"   r   r   r   test_fit_simple_non_random_data  s
    z+TestLaplace.test_fit_simple_non_random_datar   r   )r2   r   )rL   r2   )r  r  )
rn   ro   rp   r   r   rg  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 j  t j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   r5   rC   r   zipr   )rJ   r   r   r   r+   r6  r   r   r   test_invgamma_inf_gh_1866  s    




z&TestInvGamma.test_invgamma_inf_gh_1866c             C   s6   t jdd}tjj|d}tjj|d}t|| d S )Ng@r   r   g)r5   r   r   r;   r.   r   r   )rJ   r+   r6  r   r   r   r   r     s    zTestInvGamma.test_cdf_ppfc             C   sR   t jdkrtjdd}ntjdd}tjj|d}tjj|d}t||dd d S )	Nr#   rc  r3      r   g      ?)ru   l        )	sysmaxsizer5   r   r   r;   r   r   r   )rJ   r+   r6  r   r   r   r   r7    s    
zTestInvGamma.test_sf_isfN)rn   ro   rp   r  r   r7  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 )Nr#   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#   r   )r   fr%   r   printr   )rJ   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j| ttj| ttj| ttj|  d S )Nr   g      @r   )r   )r   r  r   r5   r  )rJ   r  r  r*   r(   r   r   r   test_f_moments  s
    zTestF.test_f_momentsc             C   sD   t j 2 t j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  )rJ   r   r   r   test_moments_warnings  s    
zTestF.test_moments_warningsc             C   sD  t jdgdgg}t jddg}tjj||dd\}}}}||d  gd }t|| d|d  || d  | |d d  |d  }t|| d| | d t jd|d   |d	 t j||| d    }	t||	 d|d
| d  || d  |d |d d    }
||d	  |d  || d  }|
| }t|| d S )NrS   r   rh   r   )r  r  r   r#   r   r   r  rL      )r5   r   r   r  r   r   )rJ   r  r  r  r  r*   r(   r  v2s2Zk2numZk2denZk2r   r   r   test_stats_broadcast  s    
0
  
 zTestF.test_stats_broadcastN)rn   ro   rp   r  r  r  r  r   r   r   r   r    s   r  c               C   s   t tjjddgddg d S )NrL   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)\(?        r#   gGz @g       @rS   r  gGz@r   g
ףp=
@g      @g      @g Gz?g     i@g Gz?q    @)r  r  )r   r   r  r5   rC   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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK      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 |j }tt|t d S )Nr   r   r#   rS   r   g        g333333?g?i  sample)namevalues)rN   g?r  )r   rv_discreterU   r   r[   r&   rt   r  r  rz   rj  rs   )rJ   ZstatesZprobabilityZsamplesrr+   r*   r   r   r   r   r`   #  s    (zTestRvDiscrete.test_rvsc             C   sz   t jdddg}tjdddg|fd}tt|| }|j }t|| tjdddgdddgfd}|j }t|d	 d S )
Ng      ?g?g333333?r   r   r#   )r  g      ?g        )	r5   r   r   r  rz   r   r{   r   r   )rJ   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|j|ddgddggdd d S )Nr   r#   r   g      ?g333333?g?)r  g      ?g      @g      @g        g+=)rv   )r   r  r   re   )rJ   xkpkrG  r+   r   r   r   ry   =  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 j||dd t fdd|D |dd d S )Nr   r#   r   g      ?g333333?g?)r  g      ?g?g      ?g       @g      @rL   r   g?g+=)rv   c                s   g | ]} j |qS r   )r.   )r   r   )rG  r   r   r$  R  s    z+TestRvDiscrete.test_cdf.<locals>.<listcomp>r  )r   r  r   r.   )rJ   r  r  Zx_valuesr   r   )rG  r   rm   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 j||dd t fdd|D |dd d S )Nr   r#   r   g      ?g333333?g?)r  g?g333333?g?g?g      ?g+=)rv   c                s   g | ]} j |qS r   )r   )r   r   )rG  r   r   r$  _  s    z+TestRvDiscrete.test_ppf.<locals>.<listcomp>)r   r  r   r   )rJ   r  r  Zq_valuesr   r   )rG  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|j|jd d d
 |jdd   d S )Nr   r#   r   r   r   g?g?g333333?)r  g:0yE>r  )r   r  r   r   r.   r  )rJ   r^   rG  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|j tj|j|j d
d d S )Nr   r#   r   r  r   r   g?g?)r  g+=)rv   )r   r  r   expectr5   rz   r  r  )rJ   r  r  rG  r   r   r   test_expectj  s    zTestRvDiscrete.test_expectc             C   sl   t jdjd
}t jddddgddddgddddgg}tj||fd}t|j t j|j	|j
 dd	 d S )Nrh   rS   r   g?g333333?g?)r  g+=)rv   )rS   r   )r5   r  r/  r   r   r  r   r  rz   r  r  )rJ   r  r  rG  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#   rS   g      ?)r  g333333?gffffff?r   rL   g333333?g?gffffffgɿ)r  
ValueErrorr   r  r@   )rJ   r  r  r   r   r   test_bad_inputz  s    



zTestRvDiscrete.test_bad_inputc             C   s   t jdjdt jd	d
 }}tttjft||fd t jdjdt jdd }}tttjft||fd t jdjdt jdd }}t	tj||fdj
dd d S )Nr   r#   rS   r   r  )r  r   )r#   r#   )r#   rS   gUUUUUU?)rS   r#   )r#   rS   gUUUUUU?)rS   r#   )rS   r#   gUUUUUU?gUUUUUU?)r5   r  r/  r,  r  r  r   r  r@   r   re   )rJ   r  r  r   r   r   test_shape_rv_sample  s    z#TestRvDiscrete.test_shape_rv_sampleN)rn   ro   rp   rK   r`   r   ry   rm   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)rJ   r   r   r   rK     s    zTestSkewNorm.setup_methodc             C   s0   t jddd}ttjj|ddtjj| d S )NrL   r3   r   )r   r   )r5   rj   r   r   skewnormr%   r   )rJ   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 )NrS   r   rL   g      ?)r   rN   r   )rS   r   rL   r   )r   r  rU   r  r   rX   )rJ   rX   r+   r   r   r   r`     s
    zTestSkewNorm.test_rvsc             C   s   t jjdtddd| jd}tj|tj|t j|t j	|g}t jj ddddd}t
||dd t jjd	tddd| jd}tj|tj|t j|t j	|g}t jj d
dddd}t
||dd d S )Nr   g    .ArL   r#   )r   rN   r!   r"   r   r   )r   r!   r"   r   )ri   r   r   )r   r  rU   rs   r  r5   r   r1  r2  Zkurtosisr   )rJ   Xr   r3  r   r   r   r    s    
$
$zTestSkewNorm.test_momentsc             C   sH   t jjdddgd}t|tjddd t jjdd	}t|d
dd d S )Nr2   r   rM   r   rS   g+=)ru   rb   g      @g      ?r  )r   r  r.   r   r5   ones)rJ   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j||}t||dd t jj| | }t||dd q2W d S )Nr   r   gzbLe9r   r#   gn'/2;rL   g::r
  g|<r2   gOul2;g:0yE>)ru   ir   r  ir  ir   )r   r  r.   r   r   )rJ   Zcdfvalsr+   r   Zcdfvalr   r   r   r   test_cdf_sf_small_values  s    z%TestSkewNorm.test_cdf_sf_small_valuesN)	rn   ro   rp   rK   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jdd d S )Nr   r   )r   r   r   r%   )rJ   r   r   r   	test_zero  s    zTestExpon.test_zeroc             C   s0   t tjjdd t tjjtjjdd d S )NgC]r2<r  )r   r   r   r.   r   r   )rJ   r   r   r   	test_tail  s    zTestExpon.test_tailc             C   s,   t jdddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)r5   r   r   r  r  r   r   r  )rJ   r+   r   r   r   test_nan_raises_error  s    zTestExpon.test_nan_raises_errorc             C   s,   t jdddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)r5   r   rC   r  r  r   r   r  )rJ   r+   r   r   r   test_inf_raises_error  s    zTestExpon.test_inf_raises_errorN)rn   ro   rp   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 jdddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)r5   r   r   r  r  r   r   r  )rJ   r+   r   r   r   r    s    zTestNorm.test_nan_raises_errorc             C   s,   t jdddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)r5   r   rC   r  r  r   r   r  )rJ   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#   rS   shrimp)plate)r  	TypeErrorr   r   r  )rJ   r+   r   r   r   test_bad_keyword_arg  s    
zTestNorm.test_bad_keyword_argN)rn   ro   rp   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 jdddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)r5   r   r   r  r  r   rI  r  )rJ   r+   r   r   r   r    s    z!TestUniform.test_nan_raises_errorc             C   s,   t jdddddt jg}tttjj| d S )Ngo_?g46@gyX5ͻ@gj+?gUX@)r5   r   rC   r  r  r   rI  r  )rJ   r+   r   r   r   r    s    z!TestUniform.test_inf_raises_errorN)rn   ro   rp   __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#   rS   g      ?g      @g      r  r   )lamsigr   ZopK2Zexp_skewZexp_kurtr   r   r   get_moms  s    z,TestExponNorm.test_moments.<locals>.get_momsr   r   g      ?r   )r!   r"   r   rS   r#   皙?rL   r         @)r   r   r   r   )r   r#   r  )r   rS   r   r   )r   r   r  )r   	exponnormr   )rJ   r
  r   r	  r  Kstsr   r   r   r    s"    



zTestExponNorm.test_momentsc             C   s2   t j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  )r5   r   r   r  r  r   r  r  )rJ   r+   r   r   r   r     s    z#TestExponNorm.test_nan_raises_errorc             C   s2   t j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  )r5   r   rC   r  r  r   r  r  )rJ   r+   r   r   r   r  %  s    z#TestExponNorm.test_inf_raises_errorc             C   sh   t tjjddd t tjjddd t tjjddd t tjjddd t tjjddd d S )	N  r   g        g{Gz?i|r  i|r  )r   r   r  r%   )rJ   r   r   r   test_extremes_x*  s
    zTestExponNorm.test_extremes_xN)rn   ro   rp   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jtjdddddd}t||dddd d S )	Nr   )simpsr2   g{Gz?g      ?g       @)Zdxr   )scipy.integrater  r   genexponr%   r&   r  r   )rJ   r  r   r   r   r   test_pdf_unity_area4  s    z TestGenExpon.test_pdf_unity_areac             C   s:   t jjtjdddddd}ttjd|k|dk@  d S )Nr   r2   g{Gz?g      ?g       @r   )r   r  r.   r&   r  r   rV   )rJ   r.   r   r   r   test_cdf_bounds:  s    zTestGenExpon.test_cdf_boundsN)rn   ro   rp   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jddd t tjjtjjdddd d S )Ng|=g       @g#B;rL   g?)r   r   exponpowr.   r   r   )rJ   r   r   r   r  A  s    zTestExponpow.test_tailN)rn   ro   rp   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 jdd}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}ttjj||||dd d S ) Nr2   rQ   rL   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~?)ri   i)r2   rL   )r&   r  r   r   r   skellamre   )rJ   r(   mu1mu2ZskpmfRr   r   r   ry   H  s"    zTestSkellam.test_pmfc             C   sn   t jdd}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}ttjj||||dd d S ) Nr2   rQ   rL   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ñݸ?)ri   i)r2   rL   )r&   r  r   r   r   r  r.   )rJ   r(   r  r  ZskcdfRr   r   r   rm   ]  s"    zTestSkellam.test_cdfN)rn   ro   rp   ry   rm   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 j 6 t jdt tj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   )rJ   r%   r   r   r   rg   t  s    
zTestLognorm.test_pdfc             C   sn   d\}}}t tjj|| |dtjjtj|| |  t tjj|| |dtjjtj|| |  d S )N(\5i@   On?)r*   )r  r   r!  )r   r   r>   r   r   r5   r   r   )rJ   x2r   sigmar   r   r   r-  |  s
    
zTestLognorm.test_logcdfN)rn   ro   rp   rg   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jddd}t|d t jjddd}t|tj d S )Nr   r   g      ?g;B.?g;B.)r   betarB   r   r5   rC   )rJ   rB   r   r   r   test_logpdf  s    
zTestBeta.test_logpdfc             C   sX   d\}}t jdddg}tj||}t|j|j d t|j|t j|j| d S )	N    g?g      ?g333333?gƒ@)r'  r(  gƒ)	r5   r   r   r%  r   rB   rz   r%   r   )rJ   r9   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  )rJ   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  )rJ   r+   r   r   r   #test_fit_duplicated_fixed_parameter  s    
z,TestBeta.test_fit_duplicated_fixed_parameterN)rn   ro   rp   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 jdddg}tj||}tt j|j|j  t|j	|t j
|j| d S )N    g?g      ?g333333?)r/  r0  )r5   r   r   r:   r   r  rB   rV   r   r%   r   )rJ   r9   r%  r+   r   r   r   r   r&    s
    zTestBetaPrime.test_logpdfc                s   t jjddd}t|d d\ tjdddg}t jj| }ttj|j  t j	j
 fd	d
|D }t||ddd d S )Nr   g?g333333?g            g      ?g333333?c                s   g | ]}t j| qS r   )r   r:   )r   r_   )r9   r%  gen_cdfr   r   r$    s    z*TestBetaPrime.test_cdf.<locals>.<listcomp>g-=)rv   ru   )r1  r2  )r   r:   r.   r   r5   r   r   r  rV   rv_continuousZ_cdf_singler   )rJ   r+   r   Zcdfs_gr   )r9   r%  r3  r   rm     s    
zTestBetaPrime.test_cdfN)rn   ro   rp   r&  rm   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      ?rL   )r"   g
CTb?rS   r2   gBΖ?g?g?)r   r   r%   r   )rJ   r%   r   r   r   rg     s    
zTestGamma.test_pdfc             C   s   t jjdd}t|d d S )Nr   r   )r   r   rB   r   )rJ   rB   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  )rJ   r+   r   r   r   r*    s    
z#TestGamma.test_fit_bad_keyword_argsN)rn   ro   rp   rg   r&  r*  r   r   r   r   r5    s   r5  c               @   s   e Zd Zdd Zdd ZdS )TestChi2c             C   s4   t tjjddddd t tjjddddd d S )Ni  gޞw1D?   )ri   r3   g6:֜?)r   r   chi2r%   )rJ   r   r   r   r    s    zTestChi2.test_precisionc             C   s|   d}t jjd|}t|ddd t jjd|}t|ddd d}t jjd	|}t|d
dd t jjd|}t|ddd d S )Ng333333@gλm:=6g'bd5 <g|=)ru   g      ?gQ8@   gܐ؆0guu[9=g?g8-*@)r   r9  r   r   )rJ   r  r+   r   r   r   r     s    zTestChi2.test_ppfN)rn   ro   rp   r  r   r   r   r   r   r7    s   r7  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestGumbelLc             C   s2   t jdd}tjj|}tjj|}t|| d S )Nr3   r   ir   )r5   rj   r   gumbel_lr.   r   r   )rJ   r+   r6  r   r   r   r   r     s    zTestGumbelL.test_cdf_ppfc             C   sH   t jdd}tjj|}tjj|}t j|}tj| }t	|| d S )Nr3   r   ir   )
r5   rj   r   r<  r   r   r   r   expm1r   )rJ   r+   r6  zur  r   r   r   r     s    
zTestGumbelL.test_logcdf_logsfc             C   s2   t jdd}tjj|}tjj|}t|| d S )Nr   rL   i)r5   rj   r   r<  r   r   r   )rJ   r+   r6  r   r   r   r   r7    s    zTestGumbelL.test_sf_isfN)rn   ro   rp   r   r   r7  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j|\}}}}t|dddd	 t|dd t|dd t|dd |dddddg }t jj|\}}}	}
t|d t|d t|
dd t|	dd d S )Ngwg?g        g u?g67',?gtA}˜.?gGz?r   g{Gz?)ru   rv   g)\(?r#   gۧ1?r   g9]c?r   gv?gwggwgg)\(̿r  )r   levy_stableZ	_fitstartr   r   r   )rJ   r+   Zalpha1Zbeta1loc1Zscale1r"  Zalpha2Zbeta2loc2scale2r   r   r   r    s     



zTestLevyStable.test_fitc                s  t jtjjtjjtj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 }	|	jtd |	jtd tjj|d |d |d ddd}
t|d|
}|t j|
|d  dd |   kt j|
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 )	Nr9   g      ?r+   r2   rL   r   ir   r   )r  )npisinr   r   <lambda>1  s    z7TestLevyStable.test_pdf_nolan_samples.<locals>.<lambda>	zolotarevc             S   s   | d dkS )Nr9   r   r   )r  r   r   r   rJ  4  s    c             S   s   | d dk| d dk@ S )Nr9   r   r%  r   r   )r  r   r   r   rJ  5  s    r   c             S   s   | d dk| d dk@ S )Nr9   r   r%  r   r   )r  r   r   r   rJ  6  s    fftr   r   c             S   s   | d dkS )Nr9   r   r   )r  r   r   r   rJ  9  s    rS   c             S   s   | d dk | d dk@ S )Nr9   r   g      ?r   )r  r   r   r   rJ  :  s    c             S   s   | d dk| d dk@ S )Nr9   g      ?r+   r   r   )r  r   r   r   rJ  ;  s    z6Density calculation unstable for alpha=1 and beta!=0.*z2Density calculations experimental for FFT method.*r+   r9   r%  )r"   r!   calcr   g      ?g      $@z&pdf test %s failed with method '%s'
%sF)verbose)r5   loadospathabspathjoindirname__file__corerecords
fromarraysTr   rF  Zin1dr  r   rA  pdf_default_methodpdf_fft_min_points_thresholdr
   recordr   r%   r   r  isnanr   )rJ   r  testsixdefault_methodfft_min_pointsdecimal_placesfilter_funcsubdatasupr   subdata2failuresr   )rI  r   test_pdf_nolan_samples  s.    

".z%TestLevyStable.test_pdf_nolan_samplesc             C   s8  t jtjjtjjtj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 }	|	jtd tjj|d |d |d ddd}
t|d|
}|t j|
|d  dd|   kt j|
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)rE  rK  Nr   rL  r   r#   c             S   s   | d dkS )Nr9   r   r   )r  r   r   r   rJ  d  s    z7TestLevyStable.test_cdf_nolan_samples.<locals>.<lambda>zFFT method is considered z)experimental for cumulative distribution zfunction evaluations.*r+   r9   r%  r   )r"   r!   rM  r   g      ?g      $@z&cdf test %s failed with method '%s'
%sF)rN  zBFFT method is considered experimental for cumulative distribution zXFFT method is considered experimental for cumulative distribution function evaluations.*)r5   rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  r  r   rA  rZ  r[  r
   r\  r   r.   r   r  r]  r   )rJ   r  r^  r_  r`  ra  rb  rc  rd  re  r   rf  rg  r   r   r   test_cdf_nolan_samplesI  s"    

 ".z%TestLevyStable.test_cdf_nolan_samplesc       
      C   s.  t jddddddddddddddddddddg}t jdddd	d
dddddddddddddddg}t j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#   rS   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      ?rH  NrK  ignore)rV   zDensity calculation unstable.*)categorymessage)r"   r!   )r5   r   errstater
   filterr   r   rA  rZ  r[  r%   r   )
rJ   xsZdensityZbetasr^  re  r`  ra  rb  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 )NGz?g)\(?r   r   r#   ?r2         ?      @rS   r   )r!   r"   r   )\(̿)rq  ru  r   r   )r#   rr  r2   rs  )r2   rt  r   r   )r5   rC   NaNr   rA  r   )rJ   Z
param_setsrE   Z	exp_statsZ
calc_statsr   r   r   r     s
    
&zTestLevyStable.test_statsN)rn   ro   rp   r  r   r   r   rh  ri  rp  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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK     s    zTestArrayArgument.setup_methodc             C   s.   t jjtjdtjddd}t|jd d S )NrL   r2   )r!   r"   rN   )r2   rL   )r2   rL   )r   r   rU   r5   r  r  r   rX   )rJ   rU   r   r   r   test_noexception  s    z"TestArrayArgument.test_noexceptionN)rn   ro   rp   rK   rx  r   r   r   r   rw    s   rw  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j k t jjd k	r@tdt jjj k d S )Nr?   r   )r   r?   r  r   lowerr   )rJ   r   r   r   test_docstrings  s    zTestDocstring.test_docstringsc             C   s   t j  t j  d S )N)r   r4  r  )rJ   r   r   r   test_no_name_arg  s    zTestDocstring.test_no_name_argN)rn   ro   rp   r{  r|  r   r   r   r   ry    s   ry  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 j||}t j||}td|k t|dk d S )Ng      ?g?g333333?g?g      ?g?g        )r   r{   r   )rJ   r  qkZeselfZedoubler   r   r   test_entropy_positive  s    

z!TestEntropy.test_entropy_positivec             C   s   t jdt}tj|dd}tt|d dk  t jdt}d|d d< tj||}tj||dd}tt|| t jd dk  d S )N   g       @)rQ  g      @gh㈵>r   )r5   r  rj  r   r{   r   r  r   )rJ   r  Sr~  ZS2r   r   r   test_entropy_base  s    zTestEntropy.test_entropy_basec             C   s   t tjdddgddd d S )Nr   r   r#   g R^?rh   )ri   )r   r   r{   )rJ   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j||ddg d S )Ng?g?g333333?g333333?g      ?gN!0?g2?)r   r   r{   )rJ   r  r~  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j||tjdg d|d d< t tj||d	dg d S )
Ng?g?g333333?g333333?g      ?g        g2?r   g^fTF?)r   r   r{   r5   rC   )rJ   r  r~  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   r{   )rJ   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   r{   )rJ   r  r~  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   r{   )rJ   r  r~  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j| d S )Ng?g?g333333?g333333?g      ?r   )r  )r   r   r{   )rJ   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j|| d S )Ng?g?g333333?g333333?g      ?r   )r  )r   r   r{   )rJ   r  r~  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 j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  )r5   r   r   r   r{   rY  )rJ   r  r   r   r   test_base_entropy_transposed  s    z(TestEntropy.test_base_entropy_transposedc             C   s`   t jddgddgddgg}t jddgddgddgg}ttj|j|jjtj||dd d S )Ng?g?g333333?g333333?g      ?r   )r  )r5   r   r   r   r{   rY  )rJ   r  r~  r   r   r   test_entropy_transposed	  s    z#TestEntropy.test_entropy_transposedN)rn   ro   rp   r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r}    s   	
r}  c              C   s   t dddddddg} t| dk| d\}}t|dddddg t|dddddg tddk| d\}}t|| d  t|dg t| dk| d\}}t||  t|dgtj|   d S )Nr   rS   r#   r   )r   r   r   r&   rN   )r   r   r   r   r   r   TestArgsreduce	  s    
r  c               @   s   e Zd ZdddgZdd Zdddd	d
gZej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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK   	  s    zTestFitMethod.setup_methodZ	frechet_lZ	frechet_rr   r   rI  z	dist,argsc             C   s~   || j krtjd|  tjdddddtjg}tj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   skipr5   r   r   rC   rA   r   r  r  r  )rJ   r8   rE   r+   r6  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jd t jddd tjjddddd}t jt j|t jd d	 j	 }t
t jtjj|d
dd|d
dgdd W d Q R X d S )Ni90  rj  )rV   g      ?g        g      4@r   )rN   r#   r   )r  r  g:0yE>)rv   )r5   rH   rI   rm  r   r>   rU   r   r   r   r   r   r  )rJ   r+   Zexpected_shaper   r   r   test_fix_fit_2args_lognorm,	  s    "z(TestFitMethod.test_fix_fit_2args_lognormc             C   s   t jdd}tjj|\}}t|d t|t jd tjj|dd\}}t|d t|t jd tjj|dd\}}t|d t|d d S )Nr   r  rS   r#   )r  )r  )r5   r  r   r   r  r   r   r   )rJ   r+   r!   r"   r   r   r   test_fix_fit_norm5	  s    


zTestFitMethod.test_fix_fit_normc             C   sn  t jdd}t j|j }d}tjj||d\}}}t j|j | }tt j|tj	| |dd t
|| t||j | dd d}d}tjj|||d\}}}t
|| t
|| t||j | dd d	}d}tjj|||d\}}}t
|| t
|| t||j | dd d}d	}	tjj|||	d
\}}}t
|| t
||	 |t j|	 }
ttj	||
 d S )Nr   r  r   )r  rL   )ri   r   )f0r  r#   )r  r  )r5   r  r   r   r   r   r  r   r   Zdigammar   )rJ   r+   Zmeanlogr  r   r!   r"   r*   r  r  r   r   r   r   test_fix_fit_gammaD	  s6    






z TestFitMethod.test_fix_fit_gammac          	   C   s  dd }t jdddg}tjj|ddd\}}}}t|d t|d t||||ddgd	d
 t j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 j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j|j }tjd| j }tj| | }||| tj|    ||| tj|   g}|S )Nr   )rW   r5   r   rz   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ư>)rv   r#   )r  r  r  gh㈵>)f1r  r  )r  r  r  )r  r  r  rS   )r  r  r  r  )
r5   r   r   r%  r  r   r   r   r  r  )rJ   r  r+   r   r   r!   r"   dadbr"  Za2Zb2rC  rD  r6  r   r   r   test_fix_fit_betaj	  s8    








zTestFitMethod.test_fix_fit_betac          	   C   s   t jddddddddg}tj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   rS   )r  r   )r  )r5   r   r   r   r  r   )rJ   r+   r!   r"   r   r   r   test_expon_fit	  s    




zTestFitMethod.test_expon_fitc             C   s  t jddddddg}t j|d }tjj|dd\}}}t||j d	d
 t|d t|t j	|j
 d	d
 tjj|ddd\}}}t|t j|t jd d j
 d	d
 t|d t|d tjj|ddd\}}}t|d t|d t|t j	|j
 d	d
 d S )Ng      ?rS   r2   rQ      ;   r   )r  g-q=)ru   r  )r  r  r#   g      ?)r  Zfix_s)r5   r   r   r   r>   r  r   r   r   r   r   r   )rJ   r+   Zlnxm1rX   r!   r"   r   r   r   test_lognorm_fit	  s    




zTestFitMethod.test_lognorm_fitc             C   s   t jddddg}tjj|\}}t||j  t||j  tjj|dd\}}t|d t||j  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  r2   )r  g       @g      @)r5   r   r   rI  r  r   r   Zptpr   r  r  )rJ   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      @      @r3   i  )rN   r   )r  )r+  g-q=)rv   ru   )r,  )r  )Zfb)Zfix_br   r#   )r+  r  r   rS   )r+  r  r  r  )r+  r  r  )rN   )r  r  )	r   r%  rU   r  r   r  r  r   r   )rJ   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#   r3   )r  rN   r1   )Zenikibenikii)r   r  rU   r@   r  r  r  )rJ   r8   r  rD   r   r   r   test_extra_params	  s    
zTestFitMethod.test_extra_paramsN)rn   ro   rp   r  rK   r  r   r   rg  r   r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  	  s   
	&7&r  c               @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )
TestFrozenc             C   s   t jjd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK   
  s    zTestFrozen.setup_methodc             C   s  t j}t jddd}|jd}|jdddd}t|| |jd}|jdddd}t|| |jd}|jdddd}t|| |jd}|jdddd}t|| |jd}|jdddd}t|| |j }|jddd}t|| |j	 }|j	ddd}t|| |j
 }|j
ddd}t|| |j }|jddd}t|| |j }|jddd}t|| |j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   r1  r   r{   momentr   r   )rJ   r8   frozenresult_fr)  r   r   r   r   
  sJ    
















zTestFrozen.test_normc             C   s  d}t j}t j|}|jd}|jd|}t|| |jd}|jd|}t|| |jd}|jd|}t|| |jd}|jd|}t|| |jd}|jd|}t|| |j }|j|}t|| |j	 }|j	|}t|| |j
 }|j
|}t|| |j }|j|}t|| |j }|j|}t|| |jd}|j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   r1  r   r{   r  r   r8   r   )rJ   r   r8   r  r  r)  r   r   r   
test_gamma@
  sL    






















zTestFrozen.test_gammac             C   s8   t jd}|jd}|j dd |jd}t|| d S )Nr   r#   r   )r   )r   r>   r  r   )rJ   r  m1r  r   r   r   test_regression_ticket_1293t
  s
    


z&TestFrozen.test_regression_ticket_1293c             C   sV  d	}t j|d}|jj|\}}t||gddg d}t jjd|d t|jj|dtjg d
}t j|d}|jj|\}}t||gddg d}t jjd| t|jj|jj	ft jj| t jdd}t
|j|jk	 xtdD ]l}tj|}t j|d}|j|j	 }}t|d t
tj| tjd}t jj|\}}t||gddg qW d S )Ng?)r           g      $@r         ?g       @g      ?gg)r  r  g       )r   rC  r8   rD  r   r%   r5   rC   r   r   r   rB  rE  r   )rJ   r   rG  r   r   Zrv1r   r   r   rF  
  s2    




zTestFrozen.test_abc             C   s   t ttjd d S )NZ	rv_frozen)r   r   r   r   )rJ   r   r   r   test_rv_frozen_in_namespace
  s    z&TestFrozen.test_rv_frozen_in_namespacec             C   sV   t j }tt|d d|_t|jj tjj	dj  tjj	d}|j
d|d d S )Nr   *   i  r   )rN   r   )r   r   r   r   r   r   Z	get_stater5   rH   ZRandomStaterU   )rJ   r  Zrndmr   r   r   test_random_state
  s    
zTestFrozen.test_random_statec       
      C   s   t jdd}t jd}t jddddgdd	d
dgfd}x|||gD ]}d|_|jdd tj|}|jdd}tj|}|jdd}t	|| |j
d|j
dg}	t	|	d |	d  t	|j|	d |j|	d  qBW d S )Ngdsz@g@e?g      @r   r   r#   rS   g?g?g333333?g?)r  i  r   )rN   g      ?)r   r%  r  r  r   rU   pickledumpsloadsr   r   r.   )
rJ   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}|j|}t jj|ddd}t|| d S )Nc             S   s   | S )Nr   )r+   r   r   r   r  
  s    z$TestFrozen.test_expect.<locals>.funcr#   rS   r   )r   r!   r"   r   T)lbubconditional)rE   r!   r"   r  r  r  )r!   )rE   r!   )r#   )rS   )r   r   r  r   r  )rJ   r  ZgmZgm_valZ	gamma_valr   Zp_valZpoisson_valr   r   r   r  
  s    

zTestFrozen.test_expectN)rn   ro   rp   rK   r   r  r  rF  r  r  r  r  r   r   r   r   r  
  s   34,r  c               @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )
TestExpectc             C   s   t jjdd ddd}t|ddd t jjd	d ddd}t|ddd t jjd
ddd}t jjdddd}t jjdd dd||d}t|ddd t jjdd dd||dd}t|ddd d S )Nc             S   s   | d | d  S )NrL   r   )r+   r   r   r   rJ  
  s    z&TestExpect.test_norm.<locals>.<lambda>rL   r#   )r!   r"   r   r8  )ri   c             S   s   | S )Nr   )r+   r   r   r   rJ  
  s    g?gffffff?c             S   s   dS )Nr   r   )r+   r   r   r   rJ  
  s    )r!   r"   r  r  g?c             S   s   dS )Nr   r   )r+   r   r   r   rJ  
  s    T)r!   r"   r  r  r  g      ?)r   r   r  r   r   )rJ   r  r  r  r  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 )Nr  g      @gUUUUUU@gUUUUUU@r   )r+   r   r   r   rJ    s    z&TestExpect.test_beta.<locals>.<lambda>r2   rL   r#   )rE   r!   r"   g      ?g      2@r:  )ri   c             S   s   | S )Nr   )r+   r   r   r   rJ    s    g      @g       @r  g      @gffffff?)r!   r"   g?c             S   s   dS )Ng      ?r   )r+   r   r   r   rJ    s    F)rE   r!   r"   r  r  r  g?c             S   s   dS )Nr   r   )r+   r   r   r   rJ    s    T)r2   rL   gqq?)r2   rL   gUUUUUU@)r2   r2   )r2   r2   )r   r%  r  r   r   )rJ   r  r  r  r  r  r  r   r   r   	test_beta   s    
zTestExpect.test_betac       
      C   s&  t jj ddddd\}}t jjdd ddd}t||d	d
 t jjdd ddd}t||dd
 t jjdd dddd	d}t||dd
 dt jjdd	gdddddj  }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   r2   r   g      @)r!   c             S   s   | S )Nr   )r+   r   r   r   rJ    s    z+TestExpect.test_hypergeom.<locals>.<lambda>)rE   r!   r:  )ri   c             S   s   | d d S )Ng      "@r#   r   )r+   r   r   r   rJ    s    r8  c             S   s   | d d S )Ng      "@r#   r   )r+   r   r   r   rJ     s    rL   )rE   r!   r  r  r   c             S   s   dS )Nr   r   )r+   r   r   r   rJ  '  s    r  rh   c             S   s   dS )Nr   r   )r+   r   r   r   rJ  ,  s    T)rE   r!   r  r  r  c             S   s   dS )Nr   r   )r+   r   r   r   rJ  1  s    r   )rE   r  r  )r   r2   r   )r   r2   r   )r   r2   r   )r   r2   r   )r   r2   r   )r   r2   r   )r   r  r  r   re   rz   )
rJ   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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   rJ  7  s    z)TestExpect.test_poisson.<locals>.<lambda>r#   rS   F)rE   r  r  r   r8  )ri   c             S   s   dS )Nr   r   )r+   r   r   r   rJ  <  s    T)r#   )r#   )r   r  r  r.   r   )rJ   r  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      ?)rE         ?r8  )ri   )r  )r  )r  )r   Zgenhalflogisticr  r   )rJ   ZhalflogZres1r&  r   r   r   test_genhalflogistic@  s
    zTestExpect.test_genhalflogisticc             C   sv   t tjtjjdd t tjtjjdd dd t tjtjjdd d	d t tjtjjdd d
d d S )Ni  Gz?c             S   s   dS )Nr   r   )r+   r   r   r   rJ  O  s    z/TestExpect.test_rice_overflow.<locals>.<lambda>)rE   c             S   s   dS )Nr#   r   )r+   r   r   r   rJ  P  s    c             S   s   dS )NrS   r   )r+   r   r   r   rJ  Q  s    )r  )r  )r  )r   r5   r  r   ricer%   r  )rJ   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jd|  dd t jjd	d |f|d
}t||| dd d S )N333333?rS   c             S   s   | S )Nr   )r(   r   r   r   rJ  V  s    z(TestExpect.test_logser.<locals>.<lambda>)rE   g      ?gV瞯<)rv   c             S   s   | S )Nr   )r(   r   r   r   rJ  \  s    )rE   r!   )r  rS   )r   r:  r  r   r5   r   )rJ   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 )Nr  r  c             S   s   | S )Nr   )r+   r   r   r   rJ  c  s    z)TestExpect.test_skellam.<locals>.<lambda>)rE   c             S   s   | d S )Nr#   r   )r+   r   r   r   rJ  d  s    g-q=)rv   r#   )r  r  )r   r  r  r   )rJ   p1p2r  r  r   r   r   test_skellam_  s
    zTestExpect.test_skellamc             C   sL   d	\}}t jjdd ||f}t|tdd t||D ||  dd d S )
Nr   q   c             S   s   | S )Nr   )r+   r   r   r   rJ  l  s    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瞯<)rv   )r   r  )r   rT   r  r   rz   range)rJ   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   rJ  s  s    z&TestExpect.test_zipf.<locals>.<lambda>r#   )r#   )r   r   r   r  r  )rJ   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   rJ  w  s    z/TestExpect.test_discrete_kwds.<locals>.<lambda>r#   )rE   c             S   s   dS )Nr   r   )r+   r   r   r   rJ  x  s    i  rc  g:0yE>)rE   Zmaxcount	chunksizeZ	tolerancer8  )ri   )r#   )r#   )r   r  r  r   )rJ   Zn0Zn1r   r   r   test_discrete_kwdsu  s    zTestExpect.test_discrete_kwdsc             C   s:   dd }x,dD ]$}t jjd|}t|||dd qW d S )Nc             S   s0   | d d| d   d| d   d| d   |  S )NrL   r2   r   rb   rS   rQ   r#   r   )r   r   r   r   poiss_moment5  s    z-TestExpect.test_moment.<locals>.poiss_moment5rL   r   g|=)ru   )rL   r   )r   r  r  r   )rJ   r  r   Zm5r   r   r   test_moment|  s    
zTestExpect.test_momentN)rn   ro   rp   r   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  
  s   "
		r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestNctc             C   s@   t jdd}t|jdd t jdd}t|jdddd d S )	NrL   r   g      ?r   g K?r2   )ri   r  )r   nctr   r.   r   )rJ   rG  r   r   r   test_nc_parameter  s    zTestNct.test_nc_parameterc             C   sf   t jjdtjddd d d f tj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 )NrL   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㈵>)ru   )r   r  r%   r5   r  rj   r   r   )rJ   r%  r   r   r   r   test_broadcasting  s    
zTestNct.test_broadcastingc             C   s   t jdd}t|j d d S )Nr   r   g       @)r   r  r   r1  )rJ   rG  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j| t|||gtjtjtjg t jj dddd\}}}}ttj|||gj  t|tj d S )Ngffffff?g333333?r   )r  ncr   g@)	r   r  r   r5   r  r   rC   r   rV   )rJ   r  r  r*   r(   r   r   r   test_nct_inf_moments  s    zTestNct.test_nct_inf_momentsN)rn   ro   rp   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jtjj|ddj  t tjtjj|ddj  t tjtjj|ddj  t tjtjj	|ddj  ddddg}t tjtjj
|ddj  tjjd	d
d}t tj|j  d}ttjj|d	tjj|||d	d d S )Ng?g      ?g      @g        )r   g?g      ?g?r   r   )r   g:0yE>)rv   ru   )r   r5   r  r   r  r%   rV   rB   r.   r   r   r   )rJ   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   rS   rL   )r   rN   )rS   rL   )rS   rL   )r   r  rU   r   rN   rX   )rJ   rU   r   r   r   test_rice_rvs  s    zTestRice.test_rice_rvsN)rn   ro   rp   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jd d S )Ni  )r5   rH   rI   )rJ   r   r   r   rK     s    zTestErlang.setup_methodc             C   sv   t j d t j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"   rN   g      ?g      ?g       @g      @)r  gMbP?)ru   )r   r   r   r   r  r   erlangrU   r  r   r   )rJ   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%   r   )rJ   r   r   r   test_gh_pr_10949_argcheck  s    z$TestErlang.test_gh_pr_10949_argcheckN)rn   ro   rp   rK   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jd}t|d d S )NrO   g)Zx@g)Zx)r   r?   rB   r   )rJ   r6  r   r   r   r&    s    zTestRayleigh.test_logpdfc             C   s   t jjd}t|d d S )NrO   i  i)r   r?   r   r   )rJ   r6  r   r   r   r     s    zTestRayleigh.test_logsfN)rn   ro   rp   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j|||}t jj|||}t||gddg d S )Ng?g      ?g      Y@g:23W+g~`9k@g~`9k)r   	exponweibr%   rB   r   )rJ   r+   r   r   r   rb  r   r   r   test_pdf_logpdf  s    zTestExponWeib.test_pdf_logpdfc             C   sj   t jddd}d}d}tjj|||}tjj||}t|| tjj|||}tjj||}t|| d S )Nr   r   r3   r   r  )r5   r   r   r  r%   weibull_minr   rB   )rJ   r+   r   r   r   r   rb  r   r   r   test_a_is_1  s    
zTestExponWeib.test_a_is_1c             C   sf   t jddd}d}d}tjj|||}tjj|}t|| tjj|||}tjj|}t|| d S )Nr   r   r2   i)r5   r   r   r  r%   r   r   rB   )rJ   r+   r   r   r   r   rb  r   r   r   test_a_is_1_c_is_1
  s    
z TestExponWeib.test_a_is_1_c_is_1N)rn   ro   rp   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jdd}t|d d S )Nr   r   )r   r  rB   r   )rJ   r6  r   r   r   r&    s    zTestWeibull.test_logpdfc       
      C   sP  d}d}d}t jj|||d}t|tjdd  t jj|||d}t|dtjd  t jj|||d}t|t	j
d  t jj|||d}t|tjt	j
d  t jj|||d}t|tjd t jj|||d}	t|	d t jjdddd}t|tjd t jjdddd}	t|	d d}t jj|||d}t|tjdd  t jj|||d}t|dtjd  t jj|||d}t|tjd t jj|||d}t|d t jj|||d}t|t	j
d  t jj|||d}	t|	tjt	j
d  t jjdddd}t|t	j
d  t jjdddd}	t|	tjt	j
d!  d S )"Ng      ?g       @g      @)r"   g      ?rS   rM   r#   r3   g&.>r   l     EC13g g      пg      пg      пg      пg      пg      пiig      g      пg      пg      пg      пg      пg      пg&.r  gCe g&.r  gCe )r   r  r%   r   r5   r   rB   r   r.   r   r=  r   r   r   Zweibull_max)
rJ   r+   r   r   r   Zlpr   lcr*   Zlsr   r   r   test_with_maxima_distrib   sH    


z$TestWeibull.test_with_maxima_distribN)rn   ro   rp   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|j|j|dd|dd d S )NgMbP?g      ?g+?g     @rL   )ri   )r   rdistr   r.   r   )rJ   r  r  r   r   r   test_rdist_cdf_gh1285v  s    
zTestRdist.test_rdist_cdf_gh1285c             C   sN   t jddd}d}tdtj|d |d j|d d  tj|j| d S )NgGz?r2   g@g      ?r#   r   gGz)r5   rj   r   r   r%  r%   r  )rJ   r+   r   r   r   r   test_rdist_beta}  s    &zTestRdist.test_rdist_betaN)rn   ro   rp   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j|||tjj|| t tjj|||tjj|| qW d S )Nr   g333333?g      ?r   )r   r   trapzr%   triangr.   )rJ   modesmoder+   r   r   r   test_reduces_to_triang  s    

z TestTrapz.test_reduces_to_triangc             C   sN   t jddd}ttjj|ddtjj| ttjj|ddtjj| d S )Nr   r   r2   )r5   rj   r   r   r  r%   rI  r.   )rJ   r+   r   r   r   test_reduces_to_uniform  s    z!TestTrapz.test_reduces_to_uniformc             C   s  t tjjdddd t tjjdddd t tjjdddd t tjjdddd t tjjd	ddd
 t tjjdddd t tjjdddd
 t tjjd	ddd t tjjdddd t tjjdddd t tjjdddd t tj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.   )rJ   r   r   r   
test_cases  s    zTestTrapz.test_casesc       	         sf  d\              f\}}}}d      fdd}|d}|d|d  }d          t jd      }ttjj|||||dd ttjj|||||dd ttjj|||||dd ttjjd	d	dd
ddd ttjjd	ddd
d	dd ttjjd	ddd
ddd d S )NrS   r   r#   c                sT   | d  | d     | d   | d        | d  | d  S )Nr#   r   r   )r   )r   r   r   dr~   r   r   rJ    s    z4TestTrapz.test_moments_and_entropy.<locals>.<lambda>g      ?r:  )ri   r   r  r   r  )r   r  r#   rS   r   r  r   r   )r5   r   r   r   r  r   r1  r{   )	rJ   r  r  r!   r"   r  r   r1  r{   r   )r   r   r   r  r~   r   test_moments_and_entropy  s     0>


z"TestTrapz.test_moments_and_entropyc             C   sn  t jdddg}t jddgd d d f }t jdddg}tjj|||}t j|||\}}}t j|j|jd	}t j	|j}	x>t
|	|j |j |j D ] \}
}}}tjj|||||
< qW t||j|jd
d t jtjj||dd}t j||\}}t j|jdf}t j	|j}	x:t
|	|j |j D ]"\}
}}tjj||dd||
< q,W t||jj|jd
d d S )Ng?g?g333333?g      ?g333333?g333333?g      ?g?)rY   gV瞯<)rv   r   )r   r   )r5   r   r   r  r%   Zbroadcast_arraysemptyrN   rY   r  r  Zravelr   r/  rX   rB  rY  )rJ   r   r  r+   r  ccddr   r%  indix1c1Zd1r   r   r   test_trapz_vect  s"    ( zTestTrapz.test_trapz_vectN)rn   ro   rp   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jddd ttjjddd ttjjddd ttjjddd ttjjddd ttjjddd	 ttjjddd ttjjddd
 ttjjddd ttjjddd ttjjddd ttjjddd W d Q R X d S )Nraise)rV   r   g       @g      ?g      ?r   g        r#   g      ?g      ?)r5   rm  r   r   r  r%   r.   )rJ   r   r   r   test_edge_cases  s    zTestTriang.test_edge_casesN)rn   ro   rp   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j||jdtj t tj|djdtj ttjtj|djd d S )N rh@v?r   g      ?g)\(?)r  r  )r   r   mielker  r5   rC   r   r  )rJ   r(   r*   r   r   r   r    s    zTestMielke.test_momentsc             C   s@   t jddd}d\}}ttjj|||| tjj||| d S )Ng{Gz?r3   rO   皙@HzG@)r  r  )r5   rj   r   r   burrr%   r  )rJ   r+   r(   r*   r   r   r   test_burr_equivalence  s    z TestMielke.test_burr_equivalenceN)rn   ro   rp   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 )Nr         ?r#   g      ?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   )rB   r   )r   r  r  r   r   r   r   r$    s    c             S   s   g | ]\}}}t j|qS r   )r5   r   )r   r  r  r  r   r   r   r$    s    )r   )r  r#   )r   r   )r#   r  )r   r  )r   r   )r   r#   )r   Zfiskr  burr12r   )rJ   r  r  r  r   r   r   test_endpoints_7491  s    






zTestBurr.test_endpoints_7491c             C   s<   d\}}t j||j  \}}d\}}t|| t|| d S )N      @rS   缩4U?琊&MI?)r  rS   )r  r  )r   r  r   )rJ   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 j||j  \}}ttj| ttj| d\}}t j||j  \}}ttj| ttj| d\}}t jjtjddddg||\}}}}ttj| ttj| ttj| ttj| d\}}t jjddddg||\}}}}ttj| ttj| ttj| ttj| d\}}t jjddddg||\}}}}ttj| ttj| ttj| ttj| d\}}t jjddddg||\}}}}ttj| ttj| ttj| ttj| d\}}t jjddddg||\}}}}ttj| ttj| ttj| ttj| d S )N      ?rS         ?r   r#   r         @      @      @)r  rS   )r  rS   )r  rS   )r  rS   )r  rS   )r  rS   )r   rS   )r   r  r   r5   r]  r  _munpr   )	rJ   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)rn   ro   rp   r  r  r$  r   r   r   r   r    s   
r  c               C   sR   t tjjddddd t tjjddddd t tjjdd	d
ddddd d S )Ng2?g?r2   test_540_567)ri   err_msgg2?gk?g;B.?gͣh?gHŎ*?)r!   r"   g.y?g2g2)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jdddd d S )Ng        r#   g      ?r8  )r   r   r9  r%   r   r   r   r   test_regression_ticket_1326X  s    r(  c              C   s  t jddd} t jdd xXdddt jdgdgdgggD ]6}tjj| |}t|dkj  tt j	|j   q<W t jdgdgdgg}tjj| |}W d Q R X tt j	|j   t|d dkj  t|d	 dkj  t|d
 dkj
  t|d
 dkj
  d S )Ng      @r1   rj  )divideg        g      ?g       @r   r   r#   g      g      g       g      g       g      )r5   rj   rm  r   r   tukeylambdar%   r   rV   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   r  r  r   r   r   r   test_regression_ticket_1421r  s    r.  c               C   s  t jdd tt jtjjdt j tt jtjjdt j tt jtjj	dt j tt jtjj
dt j tt jtjjdt j tt jtjjdt j tt jtjjdt j tt jtjjdt j tt jtjjt jd tt jtjjt jd tt jtjj	t jd tt jtjj
t jd tt jtjjt jd tt jtjjt jd tt jtjjt jd tt jtjjt jd W d Q R X d S )Nrj  )invalidr   g      ?)r5   rm  r   r]  r   r  r   r   r.   r   r   r%   rB   r   r   r   re   r   r   r   r   r    test_nan_arguments_gh_issue_1362x  s"    r0  c              C   sX  t jjd t jdddg} tjj| d | d | d dd	}t jd
d t jtjj|dd}W d Q R X t	|| dd t jtjj|ddd}t	|| dd t jtjj|ddd}t	|| dd t jtjj|ddd}t	|| dd t jjd d}d}tj
j|ddd	}t jtj
j||d}t j|t j|| d j g}t	||dd d S )Ni.  g      ?g        g      ?r   r   r#   r3   )rN   rj  )r)  )r  )ri   )r  r!   )r  r!   )r  r  g?g       @r   )r5   rH   rI   r   r   r>   rU   rm  r  r   r   r   r   )truer+   paramsr!   r  r   r   r   r   test_frozen_fit_ticket_1536  s&       r3  c              C   s<   t jjd tjjdd} tjj| }d}t||dd d S )	Ni	 r3   )rN   
ףp=
?ʡE?r   )ri   )r4  r5  )r5   rH   rI   r   cauchyrU   r  r   )rU   r2  r   r   r   r   test_regression_ticket_1530  s
    r7  c              C   sZ   t jjd t jjd} x<dD ]4}tjj| | \}}t||dd t|ddd qW d S )	Ni  r       @   6Ag      ?)rv   g333333?)r8  r9  )r5   rH   rI   Zrandnr   r6  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#   rS   g333333?r2   )ri   g
ףp=
	@gz5v?gRT?gQ?gNg @gJFٻ?gRTgJFٻ)r   r*  r5   r'   r   )r  r   r   r   r   "test_tukeylambda_stats_ticket_1545  s    r<  c               C   s   t tjtjjdd d S )Ni  r  )r   r5   r  r   r  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))
          ?      ?rh           g333333?       @rS   ra   g^cQ?g333333?r   )r   NUUUUUU?333333r?  rB  r@  rC  )r>  rD  UUUUUU?qq?^cQ333333㿩rE  rF  rG  rH  )rA  rI  )r   powerlawr   )Zcasesr   Z
exact_mvskr   r   r   r   test_powerlaw_stats  s
    rK  c              C   s   t jjdd} t| d d S )Nr   r   g        )r   rJ  rB   r   )r   r   r   r   test_powerlaw_edge  s    rL  c              C   sl   t jjdd} t| d t jjddddg} t| tjddg t jjddddg} t| tjdtj g d S )Nr   r   g        g      ?g      ?g      ?)r   r  rB   r   r%   r5   rC   )r   r   r   r   test_exponpow_edge   s    
rM  c              C   sR   t jjddd} t| d t jjddd} t| d t jjddd} t| d d S )Nr   r   g      ?r#   r        r2   r
  r   r  ggв9t?g>r  gqq?gqq?)r   Zgengammar%   r   r!  r   )r   r   r   r   test_gengamma_edge  s    

rP  c           1   C   s   t jd5dddd6d7ddd	d
dd8dd9d:dddddddddddddd;d<d=d>d!d?d#d@dAdBd'dCdDdEd+dFdGdHd/dIg0} t jd1d2< t *}|jtd3 |jtd4 tjj	|  W d Q R X W d Q R X d S )JNg>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 H?gW2?gTzy?gwm?g @?gW=?g	't?g".v1?gl?g.H?g,?g*?rj  )r/  z:The maximum number of subdivisions .50. has been achieved.z-floating point number truncated to an integerg>X*ȿgoϿg뵏˿g핚οgS"gm_ пg0FfͿgg"@ӿg?%:˿g?Gg~,g HgW2ҿgwmǿg @gW=ֿg".v1glg.Hꮿg*˿)
r5   r   rm  r
   rn  r   r   r   r  r  )r  re  r   r   r   test_ksone_fit_freeze  s$    








rQ  c              C   s   t jttddd } d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDg}ttj j| |d"d# ttj j| d$ j|d"d# tjj| d% d& j	}t j
tjj| tjj|  }t||d&d# d S )ENr   x   r   gDB.?g8_$@g%`OA@gjhwHR@gWMB@v`@g7VY}i@gۦx\Ar@g	x@g#@g/d@g3$@ge@gd)@gNq{3@gيGǓ@gr4@g37'
@gfF@g?dJ@gض@g2,
@gm%@gӅJ@gz;p@gɿ{@gk2@gij<%@giVSͶ@gBR4@g
Q/M@g:0yE>)rv   y        +=y        |=g|=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/M)r5   rB  listr  r   r   r   r   realimagr   rB   )r+   r   ZderivZderiv_expectedr   r   r   test_norm_logcdf1  s    rV  c              C   sd   t jddddddg} t jddd	d
ddg}tjj| }t||dd tj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|=)ru   gvIh%<=)r5   r   r   r=   r.   r   r   )r+   r   r6  r   r   r   r   test_levy_cdf_ppfJ  s    rW  c               C   s|   t tjjddddd t tjjddddd t tjjddddd t tjjddddd t tjjddddd d S )Ngffffff?i i  i        c@     h@g=
ףp=?gGz?      c@     h@g{Gz?r3   r   r   )rX  rY  )rX  rY  )rZ  r[  )r   r   r  r  r   r   r   r   r   test_hypergeom_interval_1802b  s    r\  c              C   sr  t j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j| dd tjj| ddd
 tjjdd tjjddd
 tjjddd
d tjj	ddd
d tj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j| dd
ddd d S )Ni  g?gffffff?rL   )numr#   rS   g      ?)r!   r   g      ?)r!   r"   g       @r  r   )rN   r  )r"   )r5   rH   rI   rj   r  r  r   r   r%   rU   r.   r   r{   r  r   re   r   r  r  )r+   r   r   r   test_distribution_too_many_argsq  s8    r^  c              C   sH   t jjtjddddd} t jjtjddddd}t| |ddd d S )	Nr   rb   g?r#   gYZ@gMbP?r   )ru   rv   )r   ncx2r.   r5   r  Z_cdfvecr   )r   r   r   r   r   test_ncx2_tails_ticket_955  s    r`  c              C   sj   t  H} | jtd ttjjdtjdddd tjj	dtjddd}W d Q R X t
tj|j  d S )Nz!divide by zero encountered in logr   iT  i^  r#   r   )r
   rn  r   r   r   r_  r%   r5   r  rB   r   rK  rV   )re  Zlogvalr   r   r   test_ncx2_tails_pdf  s
    "ra  zmethod, expectedr.   gu%>g	;Q=r%   g<x>gRz\R>rB   gʎK$/@gԆX1@r   gfHu@ge:@c             C   s,   t tj| dddgdd}t||dd d S )Ng?r   r   r2   )r  r  gV瞯<)rv   )rA   r   r_  r   )methodr   r)  r   r   r   test_ncx2_zero_nc  s    rc  c              C   s4   t jjdddd} t jjddd}t| |dd d S )Nr2   r   r   )r  r  r   )r  r   gV瞯<)rv   )r   r_  rU   r9  r   )r)  r   r   r   r   test_ncx2_zero_nc_rvs  s    rd  c              C   s"   t jddd} t| jdd d S )Nr   r   )r"   )r   Zfoldnormr   r.   )rG  r   r   r   test_foldnorm_zero  s    re  c              C   s   t jj dddgdd} t jj ddgdd}tdd |D }t||  t jj ddd
g} t j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)r5   rc   r   )r   r   r   r   r   r    s    z-test_stats_shapes_argcheck.<locals>.<genexpr>r#   g333333@c             s   s   | ]}t j|t jf V  qd S )N)r5   rc   r   )r   r   r   r   r   r    s    r  )r   r;   tupler   r>   )Zmv3Zmv2Zmv2_augmentedr   r   r   test_stats_shapes_argcheck  s    
rg  c               @   s   e Zd Zdd ZdS )
_distr_genc             C   s   dS )Nr  r   )rJ   r+   r   r   r   r   _pdf  s    z_distr_gen._pdfN)rn   ro   rp   ri  r   r   r   r   rh    s   rh  c               @   s   e Zd Zdd ZdS )_distr2_genc             C   s   d| | S )Nr  r   )rJ   r+   r   r   r   r   _cdf  s    z_distr2_gen._cdfN)rn   ro   rp   rk  r   r   r   r   rj    s   rj  c               @   s   e Zd Zdd Zdd ZdS )_distr3_genc             C   s   || S )Nr   )rJ   r+   r   r   r   r   r   ri    s    z_distr3_gen._pdfc             C   s   d| | S )Nr  r   )rJ   r+   r   r   r   r   rk    s    z_distr3_gen._cdfN)rn   ro   rp   ri  rk  r   r   r   r   rl    s   rl  c               @   s   e Zd Zdd Zdd ZdS )_distr6_genc             C   s   || | S )Nr   )rJ   r+   r   r   r   r   r   ri    s    z_distr6_gen._pdfc             C   s   d| | S )Nr  r   )rJ   r+   r   r   r   r   r   rk    s    z_distr6_gen._cdfN)rn   ro   rp   ri  rk  r   r   r   r   rm    s   rm  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   r  )rh  r   r%   )rJ   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 )Nro  A)r  rp  r   )r   )rh  r  r  r%   r@   )rJ   rq  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 )Nro  za, b, c)r  rp  r   r#   rS   )r   r   r   )rh  r@   r  r  r%   )rJ   rq  rD   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 )Nro  r  )r  rp  )r@   r  r  rh  )rJ   rD   r   r   r   test_shapes_string  s    z0TestSubclassingExplicitShapes.test_shapes_stringc             C   s   t ddd}tttf| d S )Nro  z(!))r  rp  )r@   r  SyntaxErrorrh  )rJ   rD   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 )Nro  Z4chan)r  rp  )r@   r  rw  rh  )rJ   rD   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 )Nro  zm(fti))r  rp  )r@   r  rw  rh  )rJ   rD   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 )Nro  za=2)r  rp  )r@   r  rw  rh  )rJ   rD   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 )Nro  z*args)r  rp  )r@   r  rw  rh  )rJ   rD   r   r   r   test_shapes_args&  s    z.TestSubclassingExplicitShapes.test_shapes_argsc             C   s   t ddd}tttf| d S )Nro  z**kwargs)r  rp  )r@   r  rw  rh  )rJ   rD   r   r   r   test_shapes_kwargs*  s    z0TestSubclassingExplicitShapes.test_shapes_kwargsc             C   s   t ddd}tttf| d S )Nro  za, b, c, lambda)r  rp  )r@   r  rw  rh  )rJ   rD   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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j|| S )N)r   r   ri  )rJ   r+   r   r   r   r   ri  6  s    zKTestSubclassingExplicitShapes.test_shapes_signature.<locals>._dist_gen._pdfN)rn   ro   rp   ri  r   r   r   r   	_dist_gen5  s   r  r   )rp  g      ?r#   )r   )r   r4  r   r%   r   )rJ   r  r8   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j|| S )N)r   r   ri  )rJ   r+   r   r   r   r   ri  ?  s    zXTestSubclassingExplicitShapes.test_shapes_signature_inconsistent.<locals>._dist_gen._pdfN)rn   ro   rp   ri  r   r   r   r   r  >  s   r  za, b)rp  g      ?r   r#   )r   r   )r   r4  r  r  r%   r@   )rJ   r  r8   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jdd  t|jddt j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j|| S )Nr   )r   r   ri  )rJ   r+   rE   extra_kwargr   r   r   ri  I  s    zDTestSubclassingExplicitShapes.test_star_args.<locals>._dist_gen._pdfN)rn   ro   rp   ri  r   r   r   r   r  H  s   r  r  )rp  g      ?!   )r  )Zxxx)r   r4  r   r%   r   r  r  r@   )rJ   r  r8   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jdd d  t|jdddt j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j|| | S )Nr   )r   r   ri  )rJ   r+   r:  rE   r  r   r   r   ri  V  s    zFTestSubclassingExplicitShapes.test_star_args_2.<locals>._dist_gen._pdfN)rn   ro   rp   ri  r   r   r   r   r  U  s   r  zoffset, extra_kwarg)rp  g      ?o   r  )r:  r  )r   r4  r   r%   r   )rJ   r  r8   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jd d S )Nc               @   s   e Zd Zdd ZdS )zBTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_genc             _   s   |j dd}tjj|| S )Nr  r   )popr   r   ri  )rJ   r+   rE   kwargsr  r   r   r   ri  d  s    zGTestSubclassingExplicitShapes.test_extra_kwarg.<locals>._distr_gen._pdfN)rn   ro   rp   ri  r   r   r   r   rh  c  s   rh  r  )rp  r   rS   )r  )r   r4  r   r%   r   )rJ   rh  r8   r   r   r   test_extra_kwarg`  s    
z.TestSubclassingExplicitShapes.test_extra_kwargc             C   s8   G dd dt j}|dd}t|jdt j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j|S )N)r   r   r%   )rJ   r+   r   r   r   ri  q  s    zITestSubclassingExplicitShapes.shapes_empty_string.<locals>._dist_gen._pdfN)rn   ro   rp   ri  r   r   r   r   r  p  s   r   )rp  g      ?)r   r4  r   r%   r   )rJ   r  r8   r   r   r   shapes_empty_stringn  s    
z1TestSubclassingExplicitShapes.shapes_empty_stringN)rn   ro   rp   rr  rt  ru  rv  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r   r   r   r   rn     s"   		rn  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 )Nro  )r  r   )r   r  )rh  r   r%   )rJ   rq  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 )Nro  )r  r   )r   )rj  r   r%   )rJ   rq  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jd|j}tt|dk d S )Nro  )r  r   r   zlogpdf\(x, a, loc=0, scale=1\))	rh  r   numargsrp  refindallr  r   rW   )rJ   rq  r%  r   r   r   test_signature_inspection  s    
z1TestSubclassingNoShapes.test_signature_inspectionc             C   sD   t dd}t|jd t|jd tjd|j}tt|dk d S )Nro  )r  r#   za, bz!logpdf\(x, a, b, loc=0, scale=1\)r   )	rm  r   r  rp  r  r  r  r   rW   )rJ   rq  r%  r   r   r   test_signature_inspection_2args  s    
z7TestSubclassingNoShapes.test_signature_inspection_2argsc             C   s   t ttdd d S )Nro  )r  )r  r  rl  )rJ   r   r   r   0test_signature_inspection_2args_incorrect_shapes  s    zHTestSubclassingNoShapes.test_signature_inspection_2args_incorrect_shapesc             C   s*   G dd dt j}tt|ftdd d S )Nc               @   s   e Zd ZdddZdS )z>TestSubclassingNoShapes.test_defaults_raise.<locals>._dist_genr  c             S   s   dS )Nr  r   )rJ   r+   r   r   r   r   ri    s    zCTestSubclassingNoShapes.test_defaults_raise.<locals>._dist_gen._pdfN)r  )rn   ro   rp   ri  r   r   r   r   r    s   r  ro  )r  )r   r4  r  r  r@   )rJ   r  r   r   r   test_defaults_raise  s    z+TestSubclassingNoShapes.test_defaults_raisec             C   s*   G dd dt j}tt|ftdd d S )Nc               @   s   e Zd Zdd ZdS )z>TestSubclassingNoShapes.test_starargs_raise.<locals>._dist_genc             W   s   dS )Nr  r   )rJ   r+   r   rE   r   r   r   ri    s    zCTestSubclassingNoShapes.test_starargs_raise.<locals>._dist_gen._pdfN)rn   ro   rp   ri  r   r   r   r   r    s   r  ro  )r  )r   r4  r  r  r@   )rJ   r  r   r   r   test_starargs_raise  s    z+TestSubclassingNoShapes.test_starargs_raisec             C   s*   G dd dt j}tt|ftdd d S )Nc               @   s   e Zd Zdd ZdS )z<TestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_genc             [   s   dS )Nr  r   )rJ   r+   r   r  r   r   r   ri    s    zATestSubclassingNoShapes.test_kwargs_raise.<locals>._dist_gen._pdfN)rn   ro   rp   ri  r   r   r   r   r    s   r  ro  )r  )r   r4  r  r  r@   )rJ   r  r   r   r   test_kwargs_raise  s    z)TestSubclassingNoShapes.test_kwargs_raiseN)rn   ro   rp   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||j	d k q8W qW d S )Nz,\s*,z\(\s*,z^\s*:)
r   __all__rA   r[   r  r4  r   r  searchr  )Zbadonesdistnamer8   regexr   r   r   r{    s    


r{  c               C   s4   t tjjtjddd t tjjtjddd d S )Nr2   r   r   r   g?r   )r   r   r  r   r5   rC   r_  rk  r   r   r   r   test_infinite_input  s    r  c              C   s&   t jjt j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jt j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jt j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jt jjddd} t| ddd d S )Nr
  r   g      "@rQ   )ri   )r   r?   r   r   r   )r   r   r   r   test_rayleigh_accuracy  s    r  c           
   C   st   t jdd^} t jd tjjdd tjjdd tjjdd tj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   ry  r.   r%   r   rB   r5   rC   rW   r   )wZnumber_of_warnings_thrownr   r   r    test_genextreme_give_no_warnings  s    
r  c              C   s   d} t jjd}t|d|  d dd t jjd}t|| d dd t jjd}t|d t jjdd	d
}t|| d tjd	 d dd t jjd	}t|d|  d dd t jjd}t|d|  d dd d S )Ngox?g      ?r#   r   g+=)ru   r   g       @r2   )r"   rS   r
  r   g      g       ii)r   ry  r{   r   r   r5   r   )Zeuler_gammar~   r   r   r   test_genextreme_entropy  s    
 r  c              C   s   d} t jj| d}t|d t jj|d	}t||  d} t jj| d}t|d t jj|d}t||  d} t jj| d}t|d t jj|d}t||  d S )
Ng    חAg      ?g'b%4gQ@gؗҜ;r   g.l6?g      g      )r   ry  r   r   r   )r+   r*   r"  r   r   r   test_genextreme_sf_isf  s    




r  c              C   s"   d} t jj| dd}t|d d S )NgؗҜ<r#   rS   gH&8>)r   r  r   r   )Zprobr#  r   r   r   test_burr12_ppf_small_arg+  s    	r  c              C   s  t jdjddddk } tjj| ddd}t j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 j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 jd/d0d1d2d3d4d5d6d7d8d9d:d9d8d7d6d5d4d3d2g}t||dd tjj| ddd}t jd;d<d=d>dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMg}t||dd tjj| ddd}t jdNdOdPdQdRd"dSdTdUdVdWdXdYdZd[d\d]d^d_dMg}t||dd tjj| ddd-dd.}t jd`d"dadSdbdTdcdUdddVdedWdfdXdgdYdhdZdid[g}t||dd dS )lz
    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      @   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?)ru   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 ?g      r  )r5   rj   r   crystalballr%   r   r   r.   )r  Z
calculatedr   r   r   r   test_crystalball_function9  sR    














r  c              C   s  t jdddddg} t jdddddg}t jdddddg}tjjd| |}t||dd t jd	d
dddg}t jddt jdd g}|| }tjjd| |}t||dd t jt jt jt jddg}|| }tjjd| |}	t||	dd t jt jt jt jt jd!g}|| }
tjjd| |}t|
|dd t jt jt jt jt jdg}|| }tjjd| |}t||dd t jt jt jt jt jd"g}|| }tj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?)ru   gԚh@g[&@gͪ@g2dQ@gn6-@g?ޫV&?g B@gQCR?gQF\ j?r   g
@gn(@r#   g?Җ)?rS   gMg'#@r   g('UH?rL   Ng?ޫV&̿g BgQCRgQF\ jg?Җ)g('UH)r5   r   r   r  r!  r   rC   )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    r  z	df1,df2,xr#   g      ?g?g      ?gffffff@r   r   r      rS   rL   c             C   sh   d}t jj|| |}t jj|| ||}t||dd t jj|| |}t jj|| ||}t||dd d S )Nr   g+=)ru   gư>)r   r  r.   r  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jddd} t| ddd d S )Nr#   r  r   g     `E@g+=)ru   )r   r  r1  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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j|| _tjjddddd}t j|dd}tj|| _	d S )Ni  r   r#   rS   r   rL   r  r   r   r
  )binsg      ?g      @i'  {   )r!   r"   rN   r   rO   )
r5   rH   rI   	histogramr   Zrv_histogramtemplater   rU   norm_template)rJ   r  r  Znorm_histogramr   r   r   rK     s    "zTestHistogram.setup_methodc             C   s   t jddddddddd	d
ddddddddddg}t jddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/g}t| jj|| t| jjdd0 t| jjdd1 t| jjdd2 t| jjdd3 t jd4dd}t| jj|t	j
j|ddddd d S )5Ng        g      ?g      ?g      ?g       @g      @g      @g      @g      @g      @g      @g      @g      @g      @g      @g      @g       @g      !@g      "@g      #@g      9@g      $@r#   r2   )r!   r"   g?)ru   g        g        g{Gz?g{Gz?g{Gz?g{Gz?gQ?gQ?g{Gz?g{Gz?g?g?g{Gz?g{Gz?gQ?gQ?gQ?gQ?g        g        gQ?gQ?g        g        r  )r5   r   rB  r   r  r%   r   rj   r  r   r   )rJ   r  Z
pdf_valuesr+   r   r   r   rg     s    zTestHistogram.test_pdfc             C   s  t jddddddddd	d
ddddddddddg}t jd%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8g}t| jj|| t| jj|dd9 |dd:  t jddd }t| jj| jj|| t jddd }t| jj| jj|| t jd;dd!}t| j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      9@g      $@g      )@g      .@g      1@g      3@g     4@g      6@g     7@r#   r   r3   r2   )r!   r"   g?)ru   g        g        g        g{Gz?g{Gz?g{Gz?gQ?g
ףp=
?gQ?g{Gz?g?g      ?g333333?g(\?gRQ?g=
ףp=?g)\(?gGz?g      ?g      ?r  r  r  )r5   r   rB  r   r  r.   r   rj   r  r   r   )rJ   r  Z
cdf_valuesr+   r   r   r   r     s     "zTestHistogram.test_cdf_ppfc             C   s   d}| j j|dd}ttj|dk d ttj|dkd"| dd	 ttj|d
kd#| dd	 ttj|dkd$| dd	 ttj|dkd%| dd	 ttj|dkd&| dd	 ttj|dkd'| dd	 ttj|dkd(| dd	 ttj|dkd)| dd	 ttj|dkd*| dd	 ttj|dkd+| dd	 ttj|dkd,| dd	 ttj|dkd-| dd	 ttj|dkd.| dd	 ttj|dkd/| dd	 ttj|d!kd0| dd	 ttj|d!kd1| dd	 ttj|d!kd d S )2Ni'  r  )rN   r   g      ?g        g       @g      9@g?)ru   g      @g      @g?g      @g      @g      @g      @g       @g      @g      $@g?g      @g      )@g      .@g      @g      1@g      @g      3@g      @g     4@g      6@g      !@g     7@g      "@g{Gz?g{Gz?gQ?g
ףp=
?gQ?g{Gz?g?g      ?g333333?g(\?gRQ?g=
ףp=?g)\(?gGz?g      ?g      ?)r  rU   r   r5   rz   r   )rJ   r  r  r   r   r   r`     s(    zTestHistogram.test_rvsc             C   s:   x4t dD ](}t| jj|tjddj|dd q
W d S )Nr   g      ?g      @g?)ru   )r  r   r  r!  r   r   r  )rJ   r   r   r   r   	test_munp&  s    zTestHistogram.test_munpc             C   s$   t | jj tjjddddd d S )Ng      ?g      @)r!   r"   g?)ru   )r   r  r{   r   r   )rJ   r   r   r   r   +  s    
zTestHistogram.test_entropyN)	rn   ro   rp   rK   rg   r   r`   r  r   r   r   r   r   r    s   r  c              C   s   t jdd} | jddd}tjtj|dd\}}d|j   koV|j   koVd	kn  s`ttj	tj
|d
 dks|td S )Nr2   rS   r   i'  r  )rN   r   )r  i  iL  i  r   gMbP?r   )r   Z
loguniformrU   r5   r  log10r   r   r  r  r  )rG  rU   r^   r   r   r   r   test_loguniform0  s
    .r  c            	   @   s\   e Zd Zdd Zdd Zejjdddd d!d"gdd Zej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 jdj |j dd d S )NrO   i  iE  )rN   r   r   )ri   )r   argusrU   r   r   )rJ   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 jdj |j dd tt jdj |j dd d S )Ng      @i  i  )rN   r   rS   )ri   )r   r  rU   r   r   r   )rJ   r+   r   r   r   test_argus_rvs_ratio_uniforms?  s    z'TestArgus.test_argus_rvs_ratio_uniformszchi, expected_meanr    щi?r2   .憃?r  \paP?<   	?c   ,6?c             C   s"   t jj|dd}t||dd d S )Nr   )r"   gvIh%<=)ru   )r   r  r   r   )rJ   chiZexpected_meanr  r   r   r   	test_meanF  s    zTestArgus.test_meanzchi, expected_var, rtolLH'B?vIh%<=o$?dy=
=>:0yE>2W>b~P>c             C   s"   t jj|dd}t|||d d S )Nr   )r"   )ru   )r   r  r1  r   )rJ   r  Zexpected_varru   r  r   r   r   rf  Q  s    zTestArgus.test_varN)r   r  )r2   r  )r  r  )r  r  )r  r  )r   r  r  )r2   r  r  )r  r  r  )r  r  r  )r  r  r  )
rn   ro   rp   r  r  r   r   rg  r  rf  r   r   r   r   r  9  s   r  c           	   C   s>   G dd dt j} | dd}ttj |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   )rJ   r   r   r   _rvs^  s    z6test_rvs_no_size_warning.<locals>.rvs_no_size_gen._rvsN)rn   ro   rp   r  r   r   r   r   rvs_no_size_gen]  s   r  rvs_no_size)r  )r   r4  r   r5   ZVisibleDeprecationWarningrU   )r  r  r   r   r   test_rvs_no_size_warning\  s    
r  )NgʎK$/gԆX1g      g      )r  r   r  r  r  rP  Znumpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r  r&   r5   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/   r4   r6   r7   r   rg  rF   objectrG   rq   r   r   r   r   r   r   r   r   r   r   r  r.  r4  r9  r=  r?  rh  rk  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r$  r.  r5  r7  r;  r@  rw  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r'  r(  r,  r  r.  r0  r3  r7  r;  r<  r=  rK  rL  rM  rP  rQ  rV  rW  r\  r^  r`  ra  rc  rd  re  rg  r4  rh  rj  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   r   <module>   sB  ,

.
H&5 0 (Fw$?* $M),{:/, &
Q m h $,\UJ	
&(
	x;

,G.0a	#