a
    /'aK                    @   s  d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
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m  mZ ddlmZmZmZmZm Z  ddlZ!dd	l"m#Z# dd
l$m%Z% ddl&m'Z' ddl(m'  m)Z) ddl*m'  m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z=m>Z> ddl<m?Z?m@Z@ eg deAZBeg deAZCeg deAZDeg deAZEeg deAZFeg deAZGeg deAZHG dd dZIG dd  d ZJG d!d" d"ZKG d#d$ d$ZLG d%d& d&ZMd'd( ZNd)d* ZOd+d, ZPd-d. ZQd/d0 ZRd1d2 ZSd3d4 ZTG d5d6 d6ZUG d7d8 d8ZVd9d: ZWd;d< ZXd=d> ZYG d?d@ d@ZZG dAdB dBZ[G dCdD dDZ\G dEdF dFZ]G dGdH dHZ^G dIdJ dJZ_G dKdL dLZ`dMdN ZaG dOdP dPZbG dQdR dRZcG dSdT dTZddUdV ZeedWg dXZfefg dYddddZd[dZe!gd\ d]e!gd^   d[d_e!gd` d_e!gda   dbdXefg dYg dcddddd[dZe!gd` d_e!gd\  d_e!gde   d[d[e!gd\ dfe!gd`  d[e!gdg   dhdXefg dYd_dddZd[dZe!gd\ d]e!gd^   d[d_e!gd` d_e!gda   dbdXefg dig didddddddXgZhefg ddddddddXefe!g g g gjidddg djg djg djg djdXefe!g g g gdddg g g g dXgZjG dkdl dlZkdmdn Zlejmndodpe!jofdqe!jpfgdrds Zqdtdu Zrdvdw Zsdxdy ZtG dzd{ d{ZuG d|d} d}ZvG d~d dZwdd Zxdd Zydd Zzejmnde!{ddfe!{ddfgdd Z|dd Z}dddZ~dd ZG dd dZG dd dZG dd dZdd Zdd Zdd Zdd Zejmnde!{ddfe!{ddfgdd Zdd Zdd Zdd Zdd Zdd ZG dd dZdd ZG dd dZG dd dZdd Zdd ZG dd dZdd Zdd ZdddZdddÄZG ddń dŃZG ddǄ dǃZG ddɄ dɃZdd˄ Zdd̈́ Zddτ ZG ddф dуZG ddӄ dӃZG ddՄ dՃZG ddׄ d׃ZG ddل dكZG ddۄ dۃZG dd݄ d݃ZG dd߄ d߃ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZdS )z Test functions for stats module

    WRITTEN BY LOUIS LUANGKESORN <lluang@yahoo.com> FOR THE STATS MODULE
    BASED ON WILKINSON'S STATISTICS QUIZ
    https://www.stanford.edu/~clint/bench/wilk.txt

    Additional tests by a host of SciPy developers.
    N)
namedtuple)product)deepcopy)
assert_assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_approx_equalassert_allcloseassert_warnssuppress_warningsassert_string_equal)raises)arrayarangefloat32float64power)check_random_state)special)kolmogn)FuncData)binom   )check_named_results)matrix)cdist)distcont)NumpyVersion)_broadcast_concatenate#AlexanderGovernConstantInputWarning)_calc_t_stat_data_partitions)	r                        	   )	r   r   r   r   r   r   r   r   r   )	iiiiiiiii)	g~?g<?gEk?g?ge(?gq?g?g8C?gG?)	g   mBg   }Bg  yӅBg   Bg  @0Bg  yӕBg  BwBg   Bg   ^B)	-q=g-=gAfc=g-=gdy=gAfc=gYLɞ=g-=gSSʣ=)	      ?      ?      @      @      @      @      @      @      !@c                   @   sJ   e Zd ZeejjZdd Zdd Z	dd Z
dd Zd	d
 Zdd ZdS )TestTrimmedStatsc                 C   sP   t tdd}t|d| jd t jtddd}t jtd d}t||| jd d S )Nr$   r*   TT      @significant)FFlimits	inclusiver=   )statsZtmeanXr
   dprec)selfyy1y2 rG   ;lib/python3.9/site-packages/scipy/stats/tests/test_stats.py
test_tmeanH   s
    zTestTrimmedStats.test_tmeanc                 C   s  t jtddd}t|d| jd t jtd d}t|tjdd| jd td	td
d}t j|d d}t||jdd| jd t j|dd}t	|d t
dddd t j|dd}t	|d t
dddd t |dd d f }t|d| jd t x}|td t j|dddd}t|d d| jd t j|dddd}t|d d| jd t|d t
j W d    n1 sz0    Y  d S )Nr7   r8   r<   g@r:   r?   r   ddof?   dtype)r+   r)   axisr   )r   r)   g     v@r*   decimal)r   r+   g㪪@r%   g@z"Degrees of freedom <= 0 for slice.)r   r'   )r=   rP   r>   r/   r   r(   )r@   ZtvarrA   r
   rB   varr   r   reshaper   npfullr   recordRuntimeWarningr   nan)rC   rD   Zx_2dsuprG   rG   rH   	test_tvarP   s(    zTestTrimmedStats.test_tvarc                 C   sH   t tdd}t|d| jd t jtd d}t|tjdd| jd d S )Nr7   r8   gBĆ/H@r:   r?   r   rJ   )r@   ZtstdrA   r
   rB   stdrC   rD   rG   rG   rH   	test_tstdp   s    zTestTrimmedStats.test_tstdc              	   C   sz  t tdd td}t t|d t tj|ddd t tj|dddd |d}t tj|dddd	dg t tj|dd
g d t tj|d d
d td}tj|d< t }|t	d t t|tj t tj|ddd t
ttj|dd t
ttj|dd d}t
t|d tj|dd W d    n1 sL0    Y  W d    n1 sl0    Y  d S )Nr&   
   r   )
lowerlimitF)ra   r>   r   r'   r$   r$   rO   )r   r$   r&   r(   r*         $@r+   invalid value*omit
nan_policy        raisefoobarz'propagate', 'raise', 'omit'matchZfoo)r   r@   ZtminrV   r   rU   rZ   r   rX   rY   assert_raises
ValueError)rC   xr[   msgrG   rG   rH   	test_tminw   s(    



zTestTrimmedStats.test_tminc                 C   s:  t tdd td}t t|d t tj|ddd t tj|dddd |d}t tj|ddddd	g t tj|d
dg d t tj|d dd td}tj|d< t f}|t	d t t|tj t tj|ddd t
ttj|dd t
ttj|dd W d    n1 s,0    Y  d S )Nr&   r`   r+   )
upperlimitF)rr   r>   r*   rb   r)   r   rO   r   r%   r'   r)   r+   rc   r(   rd   re   rf         "@ri   rj   )r   r@   ZtmaxrV   r   rU   rZ   r   rX   rY   rm   rn   )rC   ro   r[   rG   rG   rH   	test_tmax   s"    



zTestTrimmedStats.test_tmaxc                 C   sn   t jtddd}tg d}t||jddt|j | j	d tt jtdd	gd
t jtd d
| j	d d S )N)r%   r*   )FTr<   )r&   r'   r(   r)   r*   r   rJ   r:   r`   r?   )
r@   ZtsemrA   rV   r   r
   r]   sqrtsizerB   )rC   rD   Zy_refrG   rG   rH   	test_tsem   s    zTestTrimmedStats.test_tsemN)__name__
__module____qualname__rV   Zfinfor   Z	precisionrB   rI   r\   r_   rq   ru   ry   rG   rG   rG   rH   r6   D   s    r6   c                   @   s   e Zd 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$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFS )GTestCorrPearsonraE   W.II.D. Compute a correlation matrix on all the variables.

        All the correlations, except for ZERO and MISS, should be exactly 1.
        ZERO and MISS should have undefined or missing correlations with the
        other variables.  The same should go for SPEARMAN correlations, if
        your program has them.
    c                 C   s"   t tt}|d }t|d d S Nr         ?)r@   pearsonrrA   r
   rC   rD   rrG   rG   rH   test_pXX   s    zTestCorrPearsonr.test_pXXc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   BIGr
   r   rG   rG   rH   
test_pXBIG   s    zTestCorrPearsonr.test_pXBIGc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   LITTLEr
   r   rG   rG   rH   test_pXLITTLE   s    zTestCorrPearsonr.test_pXLITTLEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   HUGEr
   r   rG   rG   rH   test_pXHUGE   s    zTestCorrPearsonr.test_pXHUGEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   TINYr
   r   rG   rG   rH   test_pXTINY   s    zTestCorrPearsonr.test_pXTINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   ROUNDr
   r   rG   rG   rH   test_pXROUND   s    zTestCorrPearsonr.test_pXROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_pBIGBIG   s    zTestCorrPearsonr.test_pBIGBIGc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pBIGLITTLE   s    z TestCorrPearsonr.test_pBIGLITTLEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pBIGHUGE   s    zTestCorrPearsonr.test_pBIGHUGEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pBIGTINY   s    zTestCorrPearsonr.test_pBIGTINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pBIGROUND   s    zTestCorrPearsonr.test_pBIGROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_pLITTLELITTLE   s    z#TestCorrPearsonr.test_pLITTLELITTLEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pLITTLEHUGE   s    z!TestCorrPearsonr.test_pLITTLEHUGEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pLITTLETINY   s    z!TestCorrPearsonr.test_pLITTLETINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pLITTLEROUND   s    z"TestCorrPearsonr.test_pLITTLEROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_pHUGEHUGE  s    zTestCorrPearsonr.test_pHUGEHUGEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pHUGETINY
  s    zTestCorrPearsonr.test_pHUGETINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pHUGEROUND  s    z TestCorrPearsonr.test_pHUGEROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_pTINYTINY  s    zTestCorrPearsonr.test_pTINYTINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_pTINYROUND  s    z TestCorrPearsonr.test_pTINYROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_pROUNDROUND  s    z!TestCorrPearsonr.test_pROUNDROUNDc              	   C   sH   t d}t||\}}t|ddd t|dtdtd d d S )N      @r   V瞯<atolrh   r$   r   r@   r   r   rV   rw   spacingrC   ar   probrG   rG   rH   test_r_almost_exactly_pos1#  s    z+TestCorrPearsonr.test_r_almost_exactly_pos1c              	   C   sJ   t d}t|| \}}t|ddd t|dtdtd d d S )Nr         r   r   rh   r$   r   r   r   rG   rG   rH   test_r_almost_exactly_neg1,  s    z+TestCorrPearsonr.test_r_almost_exactly_neg1c                 C   sJ   t g d}t g d}t||\}}t|tdd  t|d d S )Nrv   r   r   )r   r   r%   r%   r$   UUUUUU?)r   r@   r   r
   rV   rw   )rC   r   br   r   rG   rG   rH   
test_basic5  s
    zTestCorrPearsonr.test_basicc                 C   s^   t tj@ tg dg d\}}t|tj t|tj W d    n1 sP0    Y  d S N)MbX?r   r   )grh|?gv/?gsh|??)r   r@   ZPearsonRConstantInputWarningr   r   rV   rZ   rC   r   prG   rG   rH   test_constant_input>  s    z$TestCorrPearsonr.test_constant_inputc                 C   sj   dddt d g}ddddt d  g}ttj  t||\}}W d    n1 s\0    Y  d S )Nr$   r%   r(   )rV   r   r   r@   Z PearsonRNearConstantInputWarningr   rC   ro   rD   r   r   rG   rG   rH   test_near_constant_inputF  s    z)TestCorrPearsonr.test_near_constant_inputc                 C   s8   g d}g d}t ||\}}t|d t|d d S )N)gy)r?gxd{s?gnp?g$9"o?ge =:k?)goȟg`
,gzg2l?g>??'ge;E?g3R?r@   r   r   r   rG   rG   rH   test_very_small_input_valuesO  s
    
z-TestCorrPearsonr.test_very_small_input_valuesc                 C   sH   dt g d }dt d }t||\}}t|d t|d d S )NgY)	kR)r   r   r   r   r   r   r   r)   gLXz?g͗~-?)rV   r   r   r@   r   r   r   rG   rG   rH   test_very_large_input_values\  s
    
z-TestCorrPearsonr.test_very_large_input_valuesc                 C   sD   t g d}t g d}t||\}}t|d t|d d S )N)g7	igNig_b4igZbi)gDig<'(½igmQiZbtig*D{?gݣ?)rV   r   r@   r   r   r   rG   rG   rH   !test_extremely_large_input_valuesj  s
    
z2TestCorrPearsonr.test_extremely_large_input_valuesc                 C   s0   t ddgddg\}}t|d t|d d S )Nr   r$   r%   r'   r@   r   r   r   rG   rG   rH   test_length_two_pos1w  s    
z%TestCorrPearsonr.test_length_two_pos1c                 C   s0   t ddgddg\}}t|d t|d d S )Nr$   r   r%   r'   rv   r   r   rG   rG   rH   test_length_two_neg2~  s    
z%TestCorrPearsonr.test_length_two_neg2c                 C   sp   g d}g d}t ||\}}t|d t|d g d}g d}t ||\}}t|d t|dd	d
 d S )Nr   r$   r%   r&   )r   r   r-   r   g?g+?r   r$   r%   )r'   ir   rh   Hz>r   r   r   rG   rG   rH   test_more_basic_examples  s    


z)TestCorrPearsonr.test_more_basic_examplesc                 C   s$   g d}ddg}t ttj|| d S )Nr   r&   r'   rm   rn   r@   r   rC   ro   rD   rG   rG   rH   test_unequal_lengths  s    z%TestCorrPearsonr.test_unequal_lengthsc                 C   s    dg}dg}t ttj|| d S Nr   r$   r   r   rG   rG   rH   	test_len1  s    zTestCorrPearsonr.test_len1N)&rz   r{   r|   __doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rG   rG   rG   rH   r}      sF   				r}   c                   @   sP   e Zd ZdZdd Zdd Zejjdd Z	dd	 Z
d
d Zdd Zdd ZdS )TestFisherExacta  Some tests to show that fisher_exact() works correctly.

    Note that in SciPy 0.9.0 this was not working well for large numbers due to
    inaccuracy of the hypergeom distribution (see #1218). Fixed now.

    Also note that R and SciPy have different argument formats for their
    hypergeometric distribution functions.

    R:
    > phyper(18999, 99000, 110000, 39000, lower.tail = FALSE)
    [1] 1.701815e-09
    c                 C   s  t j}|ddgddggd }t|ddd |d	d
gddggd }t|ddd |d
dgdd
ggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgdd
ggd }t|d |dd
gddggd }t|d |d
dgdd
gg}t|d ddd t|d d d S ) Ni8   N  i0u  i@  r   g؞Y?r&   r:   d   r$     r'   g,Ԛ?r)   r*   g2c?r(   r`   gY
A?      g_?      gO^M?r   gօa?r%   r   ggE?g$I$I?)r@   fisher_exactr
   )rC   r   resrG   rG   rH   r     s0    

zTestFisherExact.test_basicc                 C   s  ddgddggdfddgddggdfdd	gd
d
ggdfddgddggdfddgddggdfd
dgd
d	ggdfd
dgd
dggdfddgd	dggt jdffddgd	dggdfdd	gddggt jdffdd	gddggdfg}|D ]4\}}tt |}t jj|d	 |d	 ddd qd S )Nr   r$   r   r'   )gAn&	?g}K
T?r)   r*   )g	7?g?r   r`   )g!@j)A?r   r   )gU!a?gKY?r   r   )g7X?g~ltP?)gFu|?r   r   )rh   gQN^?r&   gaa?rh   r   gaa?r%      T)rR   verbose)rV   infr@   r   asarraytestingr   )rC   ZtablisttableZres_rr   rG   rG   rH   test_precise  s"    zTestFisherExact.test_precisec                 C   st   g d}t |g dD ]0\}}tddgd|ggd }t||dd qtd	d
gddggd }t|ddd d S )N)g?=gNuP=gs=)K   L   M   i(E  i  i)  r   r&   r:   iPF  i8 r   i_ g^K=?)zipr@   r   r
   )rC   pvalspvalZnumr   rG   rG   rH   test_large_numbers  s    z"TestFisherExact.test_large_numbersc                 C   s    t ttjtddd d S )Nr(   r$   r%   )rm   rn   r@   r   rV   r   rU   rC   rG   rG   rH   test_raises  s    zTestFisherExact.test_raisesc                 C   sn   ddgddggddgddggddgddggddgddggf}|D ](}t |\}}t|d t|tj q@d S )Nr   r'   r`   r   )r@   r   r   rV   rZ   )rC   tablesr   Z	oddsratior   rG   rG   rH   test_row_or_col_zero  s    
z$TestFisherExact.test_row_or_col_zeroc                 C   s  ddgddggddgddggddgdd	ggd
dgddggddgddggddgddggddgddggddgddggddgddggf	}ddgddgddgddgddgddgddgddgddgf	}t ||D ]L\}}g }|tj|ddd  |tj|d dd  t||dd!d" qd S )#Nr$   r)   r*      i,        r(   i     i   i  r   r%   r   r&   gI[?gq}!?r   g2\&gQp6g:O_?g a?皙?ffffff?g?333333?UUUUUU?r   lessalternativegreaterr   )r   rtol)r   appendr@   r   r   )rC   r   r   r   r   r   rG   rG   rH   test_less_greater  s2    z!TestFisherExact.test_less_greaterc                 C   s   t ddgddgg\}}d S )Nr   r$   r+   i")r@   r   )rC   ZoddspvaluerG   rG   rH   test_gh3014  s    zTestFisherExact.test_gh3014N)rz   r{   r|   r   r   r   pytestmarkslowr   r   r   r   r   rG   rG   rG   rH   r     s   


"r   c                   @   s   e Zd 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$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFS )GTestCorrSpearmanraD   W.II.D. Compute a correlation matrix on all the variables.

        All the correlations, except for ZERO and MISS, should be exactly 1.
        ZERO and MISS should have undefined or missing correlations with the
        other variables.  The same should go for SPEARMAN corelations, if
        your program has them.
    c                 C   s"   t dd}tt|  d S )N      @       @)r@   	spearmanrr   rV   isnanallr^   rG   rG   rH   test_scalar.  s    zTestCorrSpearmanr.test_scalarc                 C   s0   t ttjg dddg t ttjg dd d S )Nr   r$   r   r*   r+   )rm   rn   r@   r   r   rG   rG   rH   test_uneven_lengths2  s    z%TestCorrSpearmanr.test_uneven_lengthsc                 C   s   t jd t jdd}t jdd}t||jjdks@J tj|j|jddj	jdks`J t
ttj||dd t
ttj|j|j d S )N鄋 r&   r%   r$   r'   r'   r   rO   )rV   randomseedrandnr@   r   correlationshapeTr   rm   rn   r   rG   rG   rH   test_uneven_2d_shapes6  s     z'TestCorrSpearmanr.test_uneven_2d_shapesc                 C   sz   t jd t jddd}tttj| tttj|| tttj|d d  ttj||d dtj|	 |	 dd d S )Nr  r&   r%   r$   rO   r   )
rV   r  r  r  rm   rn   r@   r   r   flattenrC   ro   rG   rG   rH   test_ndim_too_highA  s    z$TestCorrSpearmanr.test_ndim_too_highc                 C   sp   t d}t j|d< tt||t jt jf ttj||ddd tttj||dd tttj||dd d S )Nrc   r+   re   rf   )r   rh   ri   rj   )rV   r   rZ   r	   r@   r   rm   rn   r  rG   rG   rH   test_nan_policyK  s    

z!TestCorrSpearmanr.test_nan_policyc                 C   s   t jd t jdd}d}t j|d d |f< t j||dd}tj|dd\}}t|\}}t jt j||dd|dd}t jt j||dd|dd}t||d	d
 t||d	d
 d S )Nr'   r`   r(   r   rO   re   rf   r   +=r   )	rV   r  r  randrZ   deleter@   r   r   )rC   ro   krD   ZcorxZpxZcorypyrG   rG   rH   test_nan_policy_bug_12458T  s    z+TestCorrSpearmanr.test_nan_policy_bug_12458c                    sp   t jd d d}t j |t jd< t jd< tjddd\}} fdd	t D }t|| d S )
Nr'   r`   r   r   )r%   rv   r   	propagaterP   rg   c                    s$   g | ]  fd dt D qS )c              	      s2   g | ]*}t |d d f  d d f jqS N)r@   r   r  .0i)jro   rG   rH   
<listcomp>i      zJTestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>.<listcomp>range)r  mro   )r  rH   r  i  s   z?TestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>)	rV   r  r  r  rZ   r@   r   r   r   )rC   ncorrr   r   rG   r!  rH   test_nan_policy_bug_12411a  s    

z+TestCorrSpearmanr.test_nan_policy_bug_12411c                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   r
   r   rG   rG   rH   test_sXXm  s    zTestCorrSpearmanr.test_sXXc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   r   r
   r   rG   rG   rH   
test_sXBIGr  s    zTestCorrSpearmanr.test_sXBIGc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   r   r
   r   rG   rG   rH   test_sXLITTLEw  s    zTestCorrSpearmanr.test_sXLITTLEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   r   r
   r   rG   rG   rH   test_sXHUGE|  s    zTestCorrSpearmanr.test_sXHUGEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   r   r
   r   rG   rG   rH   test_sXTINY  s    zTestCorrSpearmanr.test_sXTINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   rA   r   r
   r   rG   rG   rH   test_sXROUND  s    zTestCorrSpearmanr.test_sXROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_sBIGBIG  s    zTestCorrSpearmanr.test_sBIGBIGc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sBIGLITTLE  s    z!TestCorrSpearmanr.test_sBIGLITTLEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sBIGHUGE  s    zTestCorrSpearmanr.test_sBIGHUGEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sBIGTINY  s    zTestCorrSpearmanr.test_sBIGTINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sBIGROUND  s    z TestCorrSpearmanr.test_sBIGROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_sLITTLELITTLE  s    z$TestCorrSpearmanr.test_sLITTLELITTLEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sLITTLEHUGE  s    z"TestCorrSpearmanr.test_sLITTLEHUGEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sLITTLETINY  s    z"TestCorrSpearmanr.test_sLITTLETINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sLITTLEROUND  s    z#TestCorrSpearmanr.test_sLITTLEROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_sHUGEHUGE  s    z TestCorrSpearmanr.test_sHUGEHUGEc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sHUGETINY  s    z TestCorrSpearmanr.test_sHUGETINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sHUGEROUND  s    z!TestCorrSpearmanr.test_sHUGEROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_sTINYTINY  s    z TestCorrSpearmanr.test_sTINYTINYc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r   r
   r   rG   rG   rH   test_sTINYROUND  s    z!TestCorrSpearmanr.test_sTINYROUNDc                 C   s"   t tt}|d }t|d d S r~   )r@   r   r   r
   r   rG   rG   rH   test_sROUNDROUND  s    z"TestCorrSpearmanr.test_sROUNDROUNDc                 C   s   t tt}d}t|| d S )Nr  r   )r@   r   rA   r   )rC   r   
attributesrG   rG   rH    test_spearmanr_result_attributes  s    z2TestCorrSpearmanr.test_spearmanr_result_attributesc                 C   s@   g d}g d}t ||}t t||gj}t|| d S )Nr   r$   r%   r&   r'   r(   )r   r$   r%   r&   r(   r'   )r@   r   rV   r   r	  r   rC   x1x2res1res2rG   rG   rH   test_1d_vs_2d  s
    zTestCorrSpearmanr.test_1d_vs_2dc                 C   sf   dD ]\}dt jddddg}dddddt jg}tj|||d}tjt ||gj|d}t|| qd S )	N)r  re   r   r%   r&   r'   r(   r$   rf   )rV   rZ   r@   r   r   r	  r   )rC   rg   r@  rA  rB  rC  rG   rG   rH   test_1d_vs_2d_nans  s    z$TestCorrSpearmanr.test_1d_vs_2d_nansc                 C   s   t d}| }t g d}t |||gj}t|}t g dg dg dg}t jdtd}d|d	d
d	f< d|d
d	d	f< t	|j
| t	|j| d S )Nr(   )r   r   r$   r%   r'   r&   )r   rv   3+?)rv   r   3+)rF  rG  r   r%   r%   rM   g+Hs]s?r$   r   )rV   r   r   r   r	  r@   r   zerosfloatr   r  r   )rC   r@  rA  x3ro   actualZexpected_corrZexpected_pvaluerG   rG   rH   
test_3cols  s    


zTestCorrSpearmanr.test_3colsc              
   C   s   t t jddddddgdt jddd	ddgg d
gj}t t jt jt jgt jt jt jgt jt jdgg}ttj|ddj| tj|ddj}t|d d |d d |d d fddd d S )Nr   r   r9   ffffff@      @ffffff"@ffffff@g333333@皙@)r-   r   ffffff@ffffff@       @rN  ffffff@r   r  rf   re   r   r   r$   )gacJC?g%ln?g_0nYt!޿ư>r   )rV   r   rZ   r	  r   r@   r   r  )rC   ro   r$  r   rG   rG   rH   test_gh_9103  s    "zTestCorrSpearmanr.test_gh_9103c           
      C   s   d}t jd t j|}t j|dk}|dk}t |}tj||ddj}t j||< tj||ddj}|	t j
}tj||ddj}g d}	t|||g|	 d S )Nr   iH r   r-   re   rf   )gonj?)Wn%?rZ  )rV   r  r  r  r   r@   r   r  rZ   astypeint32r   )
rC   r#  ro   r"  r   r   rB  rC  res3expectedrG   rG   rH   test_gh_8111
  s    

zTestCorrSpearmanr.test_gh_8111N)&rz   r{   r|   r   r   r  r
  r  r  r  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r=  rD  rE  rM  rY  r_  rG   rG   rG   rH   r   %  sF   
		r   c                   @   s   e Zd 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ejd d!d"d# Zd$S )%TestCorrSpearmanr2z-Some further tests of the spearmanr function.c                 C   sH   g d}g d}d}t ||}t|d |d  t|d |d  d S )Nr   r$   r%   r&   r'   r'   r(   r)   r*   r)   gh
C?gR?r   r   )r@   r   r
   rC   r@  rA  r^  r   rG   rG   rH   test_spearmanr_vs_r%  s    z&TestCorrSpearmanr2.test_spearmanr_vs_rc                 C   s   t tg g tjtjf d S r  )r   r@   r   rV   rZ   r   rG   rG   rH   test_empty_arrays/  s    z$TestCorrSpearmanr2.test_empty_arraysc                 C   s   t jd t t jjddddt jjddddg}ddgddgg}t t j||}d}t	|d |d }t
|d |d  t
|d |d  d S )	Nz  r     locscalerx   r   r   )gCzYW?ge*=r   )rV   r  r  r   normaldotlinalgcholeskyr@   r   r
   )rC   ro   r$  r^  r   rG   rG   rH   test_normal_draws2  s    z$TestCorrSpearmanr2.test_normal_drawsc                 C   s"   t tg dg dd d d S )Nr   r   r$   r   r   )r
   r@   r   r   rG   rG   rH   test_corr_1>  s    zTestCorrSpearmanr2.test_corr_1c                 C   sp   t d}t j|d< tt||t jt jf ttj||ddd tttj||dd tttj||dd d S )Nrc   r+   re   rf   )r   r   ri   rj   )	rV   r   rZ   r	   r@   r   r   rm   rn   r  rG   rG   rH   test_nan_policiesA  s    

z$TestCorrSpearmanr2.test_nan_policiesc                 C   s(   t d}t d}tttj|| d S )Nrc         4@)rV   r   rm   rn   r@   r   r   rG   rG   rH   r   J  s    

z'TestCorrSpearmanr2.test_unequal_lengthsc                 C   sT   g d}dddt jg}tj||dd}tj|d d |d d dd}t|| d S )Nr   r*   r)   r(   re   rf   r%   )rV   rZ   r@   r   r   r?  rG   rG   rH   test_omit_paired_valueO  s
     z)TestCorrSpearmanr2.test_omit_paired_valuec                 C   s   t td}t td}|d |d  |d< |d< |d |d  |d< |d< |d |d  |d< |d< |tj |d ttj||d	d
d d d S )N  r+   r   i  r`   i  i  r   re   rf   gV-?)listr   r   rV   rZ   r   r@   r   r   rG   rG   rH   #test_gh_issue_6061_windows_overflowV  s    
z6TestCorrSpearmanr2.test_gh_issue_6061_windows_overflowc                 C   s   t tj tg dg d\}}t|tj t|tj tg dg d\}}t|tj t|tj tg dg d\}}t|tj t|tj W d    n1 s0    Y  d S )Nr$   r$   r$   r$   r   r$   )r   r@   SpearmanRConstantInputWarningr   r   rV   rZ   r   rG   rG   rH   	test_tie0c  s    zTestCorrSpearmanr2.test_tie0c                 C   sF   g d}g d}g d}g d}t ||}t ||}t|| d S )Nr   r   r   r   )r   r   r   r   )r   r/   r/   r   )r@   r   r   r   )rC   ro   rD   ZxrZyrsrprrG   rG   rH   	test_tie1p  s    zTestCorrSpearmanr2.test_tie1c                 C   sZ   g d}g d}ddddt jg}ddddt jg}t||}tj||dd	}t|| d S )
N)r   r$   r/   r$   )r   r%   r/   r&   r   r$   r/   r%   r&   re   rf   )rV   rZ   r@   r   r   )rC   r@  rE   rA  rF   Zsr1Zsr2rG   rG   rH   	test_tie2}  s    zTestCorrSpearmanr2.test_tie2c                 C   s   t g dg dg}t g dg dg}t g dg dg}ttj tj|dd\}}t|t j t|t j tj|dd\}}t|t j t|t j tj|dd\}}t|t j t|t j W d    n1 s0    Y  d S )Nr   r   r   r   r   r   rO   rV   r   r   r@   r{  r   r   rZ   )rC   z1Zz2Zz3r   r   rG   rG   rH   test_ties_axis_1  s    z#TestCorrSpearmanr2.test_ties_axis_1c                 C   sr   t g d}t g d}ttj8 t||\}}t|t j t|t j W d    n1 sd0    Y  d S )N)
r   r   r   r   r   r   r   r   r   r   
r   gN}	?r   r   g	/`?gY%uX-H?gC1tq1?r   r   g*I?r  r   rG   rG   rH   test_gh_11111  s    z TestCorrSpearmanr2.test_gh_11111c                 C   s4   t g d}t g d}tttj||dd d S )N)
r         @r   r   r   r   r   r   r   r   r  r$   rO   )rV   r   rm   rn   r@   r   r   rG   rG   rH   test_index_error  s    z#TestCorrSpearmanr2.test_index_errorc                 C   s   g d}g d}d}t j||dd}t|d |d  t|d d|d d   t j||d	d}t|d |d  t|d |d d  tjtd
d  t j||dd W d    n1 s0    Y  d S )Nra  rb  rc  r   r   r   r   r$   r   alternative must be 'less'...rk   	ekki-ekki)r@   r   r
   r   r   rn   rd  rG   rG   rH   test_alternative  s    z#TestCorrSpearmanr2.test_alternativer   )	two-sidedr   r   c           	      C   s   g d}g d}|t jg }|t jg }tt||t jt jf tj||d|d}tj|||d}t|| d}tjt|d" tj||d|d W d    n1 s0    Y  d	}tjt|d" tj||d
|d W d    n1 s0    Y  d S )Nra  rb  re   rg   r   r   The input contains nan valuesrk   ri   znan_policy must be one of...r  )	rV   rZ   r	   r@   r   r   r   r   rn   )	rC   r   r@  rA  Zx1nanZx2nanZ
res_actualZres_expectedmessagerG   rG   rH   test_alternative_nan_policy  s(    


$
z.TestCorrSpearmanr2.test_alternative_nan_policyN)rz   r{   r|   r   re  rf  rp  rr  rs  r   ru  rx  r|  r  r  r  r  r  r  r   r   parametrizer  rG   rG   rG   rH   r`  "  s$   
	
r`  c                  C   s^  d} g d}g d}d}| D ]4}t ||}t|d |d  t|d |d  qg d}g d}d}| D ]4}t ||}t|d |d  t|d |d  qjg d	}g d
}d}| D ]4}t ||}t|d |d  t|d |d  qg d}g d}d}| D ]6}t ||}t|d |d  t|d |d  qtd}td}d}| D ]:}t j|||d}t|d |d  t|d |d  qZ|d }|d |d< ||d< d}| D ]:}t j|||d}t|d |d  t|d |d  q|d }|d |d< ||d< d}| D ]:}t j|||d}t|d |d  t|d |d  qtd}tdd d d }d}| D ]:}t j|||d}t|d |d  t|d |d  q||d }|d |d< ||d< d}| D ]:}t j|||d}t|d |d  t|d |d  q|d }|d |d< ||d< d}| D ]:}t j|||d}t|d |d  t|d |d  q<tg d}tg d}d}tt j||ddd | d}tt j||d dd | |d |d< ttt j||d!d" ttt j||d#d" ttt j||d$d g d%}g d&}d'}t ||}t|d |d  t|d |d  d(}	| D ] }t j|||d}t||	 q`| D ]x}t	t jg d)g d)|dtj
tj
f t	t jg d*g d)|dtj
tj
f t	t jg d)g d*|dtj
tj
f qt	t g g tj
tj
f tjd+ ttjjddd,d-tjjddd,d-g}d.d/gd/d.gg}
ttj|
|}d0}t |d |d }t|d |d  t|d |d  tt jg d1g d1ddd d. tt jg d1g d1d dd d2 td3}tj
|d4< tt ||tj
tj
f tt j||d5d6d7d8d9 tt j||d5d:d;d<d8d9 ttt j||d=d6 ttt j||d>d6 td3}td?}ttt j|| t g g \}}t	tj
| t	tj
| t dgdg\}}t	tj
| t	tj
| tjd@tdA}tj|dB}tjd@tdA}t|dCd  |d dC f}ttt ||d  d S )DN)r   c)r'   r$   r   r%   r(   r&   r)   r*   )r'   r$   r(   r%   r   r*   r)   r&   r   r   r   )	r   r'   r$   r   r%   r(   r&   r)   r*   )	r'   r$   r   r(   r%   r   r*   r)   r&   )r'   r$   r   r%   r(   r&   r)   )r'   r$   r(   r%   r   r)   r&   )gJ$I¿gmK?)r$   r   r%   r(   r&   r)   r*   )r$   r(   r%   r   r*   r)   r&   )gJkaa?r   r`   )r   紞xO~>)Zvariantr$   )g?>?aV>r'   r(   )g}'}'?o&5>rv   )r   r  )g?>r  )g}'}'r  )
r   r$   r$   r&   r&   r(   r(   r*   r+   r+   )
r   r$   r&   r&   r&   r&   r*   r*   r*   r`   gok|?r   gffffff?r  exactmethodZbananaZrms   r$   r   r  r$   r   r&   r)   r   r   )g}+޿g`=i?r;  ry  rz  rg  rh  ri  r   r   )g\zf?g^n)=rq  g#q?rc   r+   re   rf   )r   g/>rW  rX  
asymptotic)rg   r  )r   g&?ri   rj   rt  rv  rM   i  r   )r@   
kendalltaur
   rV   r   r   rm   rn   r   r   rZ   r  r  rl  rm  rn  ro  r	   r   rJ  maZmasked_greaterconcatenater   Zisfinite)Zvariantsro   rD   r^  Ztauxr   r   r@  rA  r<  r$  taup_valuerG   rG   rH   test_kendalltau  s*   









r  c                  C   s   t jd tddD ]} g }t| D ]}||g| 7 }q&t|}t j| t j| t||}t||}t	|d |d  t	|d |d  qd S )N*   r$   r`   r   r   )
rV   r  r  r   rw  shufflemstats_basicr  r@   r
   )sr   r  r   r^  rL  rG   rG   rH   test_kendalltau_vs_mstats_basic  s    r  c                  C   sX   g d} t jdddg}tj| |dd}t| dd  |dd  }t|j|jdd d S )	Nr}  333333@333333@re   rf   r   r   r   )rV   rZ   r@   r  r   r  )ro   rD   r1r2rG   rG   rH   test_kendalltau_nan_2nd_arg  s
    r  c                  C   s
  g d} g d}t | |\}}t|d ttj| t j| |dd\}}t|d ttj| t j| |dd d	\}}t|d
 ttj| t j| |d d\}}t|d ttj| t j|| d d\}}t|d ttj| t j| |d dd\}}t|d ttj| t j|| d dd\}}t|d ttj| t j| |dd\}}t|d ttj| t j| |ddd d\}}t|d
 ttj| t j|| ddd d\}}t|d
 ttj| t tj| tjd|\}}t|d t tj| tjd|\}}t|d t tj| tjdtj|tjd\}}t|d t g g \}}ttj| ttj| t dgdg\}}ttj| ttj| t	t
t jddgg d t	t
t jddgddgdg g d} ddddtjg}t | |\}}t|d ddtjddg} t | |\}}t|d g d} dd d!dtjg}t | |\}}t|d d"d#tjd"d#g} t | |\}}t|d g d$} g d%}t | |\}}t|d& d"d#tjd"tjg} t | |\}}t|d& tjd d!tjtjg}t | |\}}t|d& d S )'Nr  r  gs$F)additivegROoc                 S   s   dS Nr   rG   ro   rG   rG   rH   <lambda>  r  z"test_weightedtau.<locals>.<lambda>)weigherr  )rankgڿgn)r  r  g @ڿg[đ(gIکnTc                 S   s   dS r  rG   r  rG   rG   rH   r    r  )r  r  c                 S   s   dS r  rG   r  rG   rG   rH   r    r  rM   r   r   r   r   r$   r&   r)   r  r$   )      (@r   r   r  r   r   r   r  r  r   )r  r   r   r  r   )r   r   r  r   r   gt34+)r@   weightedtaur
   r   rV   rZ   r   r   int16rm   rn   )ro   rD   r  r  rG   rG   rH   test_weightedtau  s    











(






r  c                   C   s6   t dgdg t dgdg t tjgdg d S )Nr   r   4   )r@   r  rV   rZ   rG   rG   rG   rH   test_segfault_issue_97100  s    r  c                  C   sZ   d} t | d t}t | d t}t j|d< tj||ddd\}}t|d d S )N   r   rv   r  re   )r  rg   rh   )rV   r   r[  rJ  rZ   r@   r  r   )r#  ro   rD   _r   rG   rG   rH   test_kendall_tau_large:  s    
r  c            
   
   C   s   dd } t jd tddD ]}g }t|D ]}||g| 7 }q.t|}t j| t j| t jt|t jd}tdD ]P}dD ]:}| |||d	d
 |}t	
|||dd
 |j}	t||	 qt j| q~qd S )Nc                 S   sb  d } } } }}	t t| D ]}
t t| D ]}|rT|||
 |||  n|||
 |||  }||7 }| |
 | | kr||7 }||
 || kr|	|7 }	| |
 | | k r||
 || k s| |
 | | kr||
 || kr||7 }q2| |
 | | k r||
 || ks2| |
 | | kr2||
 || k r2||7 }q2q || t||  t||	  S Nr   )r   lenrV   rw   )ro   rD   r  r  addZtotZconcZdiscuvr  r  wrG   rG   rH   wkqF  s    4@
Dz*test_weightedtau_vs_quadratic.<locals>.wkqr  r%   r`   rM   r$   )TFc                 S   s   d| d  S Nr   r   rG   r  rG   rG   rH   r  c  r  z/test_weightedtau_vs_quadratic.<locals>.<lambda>c                 S   s   d| d  S r  rG   r  rG   rG   rH   r  d  r  )rV   r  r  r   rw  r  r   r  Zintpr@   r  r  r
   )
r  r  r   r  r   r  r  r  r^  rL  rG   rG   rH   test_weightedtau_vs_quadraticD  s     r  c                   @   s   e Zd Zdd Zdd ZdS )TestFindRepeatsc                 C   s6   g d}t |\}}t|g d t|g d d S )N)r   r$   r%   r&   r   r$   r%   r&   r   r$   r'   r   )r%   r%   r$   r$   r@   Zfind_repeatsr	   )rC   r   r   ZnumsrG   rG   rH   r   l  s    zTestFindRepeats.test_basicc                 C   s8   g dg fD ]&}t |\}}t|g  t|g  qd S )N)r`   r   2      (   r  )rC   r   ZrepeatedcountsrG   rG   rH   test_empty_resultr  s    
z!TestFindRepeats.test_empty_resultN)rz   r{   r|   r   r  rG   rG   rG   rH   r  j  s   r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%S )&TestRegressionc                 C   s@   t tt}t|jd t|jd t|jd t|jd d S )Nir   rh   )	r@   
linregressrA   r   r   	interceptrvaluestderrintercept_stderrrC   resultrG   rG   rH   test_linregressBIGX|  s
    z"TestRegression.test_linregressBIGXc                 C   s@   t tt}t|jd t|jd t|jd t|jd d S )Nrh   r   )r@   r  rA   r   r  r  r  r  r  rG   rG   rH   test_regressXX  s
    zTestRegression.test_regressXXc                 C   s(   t tt}t|jd t|jd d S )Nrh   )r@   r  rA   ZEROr   r  r  r  rG   rG   rH   test_regressZEROX  s    z TestRegression.test_regressZEROXc                 C   sn   t ddd}dt ddd d }|t t ddd7 }t||}tjj}tt|| t	|j
d d S )Nr   r   皙?r`   r   穷4_Qc?)rV   linspacesinr@   r  _stats_mstats_commonLinregressResultr   
isinstancer   r  )rC   ro   rD   r  lrrG   rG   rH   test_regress_simple  s    z"TestRegression.test_regress_simplec                 C   s   t ddd}dt ddd d }|t t ddd7 }tjtdd  tj||dd	 W d    n1 sp0    Y  tj||d
d	}tj||dd	}t|j	d|j	d   tj||dd	}t|j	|j	d  |j
|j
  kr|j
ksn J d S )Nr   r   r  r`   r   r  rk   r  r   r  r   r   r$   r   )rV   r  r  r   r   rn   r@   r  r   r   r  )rC   ro   rD   rB  rC  r]  rG   rG   rH   test_regress_alternative  s    .z'TestRegression.test_regress_alternativec                 C   sr   g d}g d}t j||dd}t|jd t|jd t|jtd t|jd t|j	d	 t|j
d
 d S )N)
                              )
rL   Q   8   [   /   9   r   H   >   0   r  r   gؗh?gJK@:Cgag?g->g5ՒO?g]؊E @)r@   r  r   sloper  r  rV   rw   r   r  r  )rC   ro   rD   r   rG   rG   rH   test_regress_against_R  s    z%TestRegression.test_regress_against_Rc                 C   sp   t ddd}dt ddd d }|t t ddd7 }t ||f}t|}t|jd t|jd d S )Nr   r   r  r`   r   r  8?)	rV   r  r  vstackr@   r  r   r  r  )rC   ro   rD   Zrowsr  rG   rG   rH   test_regress_simple_onearg_rows  s    
z.TestRegression.test_regress_simple_onearg_rowsc                 C   s   t ddd}dt ddd d }|t t ddd7 }t t |dt |df}t|}t|jd t|j	d d S )	Nr   r   r  r`   r   r   r  r  )
rV   r  r  hstackZexpand_dimsr@   r  r   r  r  )rC   ro   rD   columnsr  rG   rG   rH   test_regress_simple_onearg_cols  s    
z.TestRegression.test_regress_simple_onearg_colsc                 C   s   t ttjtd d S )NrH  )rm   rn   r@   r  rV   onesr   rG   rG   rH   test_regress_shape_error  s    z'TestRegression.test_regress_shape_errorc                 C   s   t d}t dd}|ddg  d8  < |ddg  d7  < t||}dd	 }||jd
 ||jd ||jd ||jd ||jd ||j	d d S )Nr   r'   r   r   r   rv   c                 S   s   t | |ddS )N   rQ   )r   ro   rD   rG   rG   rH   r    r  z0TestRegression.test_linregress.<locals>.<lambda>r   r9   gePUn?g.bt>gڽE?gʺL7?)
rV   r   r@   r  r  r  r  r   r  r  )rC   ro   rD   r  Z	assert_aerG   rG   rH   test_linregress  s    
zTestRegression.test_linregressc                 C   sz   d\}}t |d| |}t d| ||}t||}t|jdk t|jd tt |j  tt |j	  d S )N)gJr 11順 r$   rv   )
rV   r  r@   r  r   r  r   r   r  r  )rC   r   r#  ro   rD   r  rG   rG   rH    test_regress_simple_negative_cor  s    z/TestRegression.test_regress_simple_negative_corc                 C   s   t ddd}dt ddd d }|t t ddd7 }t||}tjj}tt|| d}t	|| dt
|v s|J d S )Nr   r   r  r`   r   )r  r  r  r   r  r  )rV   r  r  r@   r  r  r  r   r  r   dir)rC   ro   rD   r  r  r<  rG   rG   rH   !test_linregress_result_attributes  s    
z0TestRegression.test_linregress_result_attributesc                 C   sJ   t d}t dd}t||}t|jd t|jd t|jd d S )Nr$   r%   r'   rh   )rV   r   r@   r  r   r   r  r  rC   ro   rD   r  rG   rG   rH   test_regress_two_inputs)  s    
z&TestRegression.test_regress_two_inputsc                 C   sH   t d}t d}t||}t|jd t|jd t|jd d S )Nr$   r   rh   )	rV   r   r  r@   r  r   r   r  r  r	  rG   rG   rH   'test_regress_two_inputs_horizontal_line6  s    

z6TestRegression.test_regress_two_inputs_horizontal_linec                 C   sl   g d}g d}t ||}t|jd t|jd t|jd d t|jd t|jd t|jd	 d S )
N)$r  gfffffu@ǧ]@g̤@333333$@g     Pl@gfffff҄@gfffff"@g	|@g     H@gq@皙?333333?g     <@g33333ׄ@g      u@g     {@g333333'@g     `@33333l@gfffff@g̼@g^@r   r   gffffff@g1u@g@g     8@g     X@g333333&@g33333]@gfffffl@g@fffff|@r-   )$r   g,u@gfffff]@     @rP  r  g     @     4@g|@33333W@gy@r   r   gP@gfffff@4u@r  g%@gm@gl@g     0@gfffffƋ@gfffff]@r   r  gl@r  r  r  r  gffffff$@gffffff]@g̜l@g33333@g33333|@r  g?g!пr$   gpX?rh   gh-h*<?gg?)	r@   r  r   r  r  r  r   r  r  r	  rG   rG   rH   test_nist_norrisC  s    zTestRegression.test_nist_norrisc                 C   sz   t ddd}dt ddd d }|t t ddd7 }t||}t ||d}t|j|d  t|j|d  d S )Nr   r   r  r`   r   r   )	rV   r  r  r@   r  Zpolyfitr   r  r  )rC   ro   rD   r  ZpolyrG   rG   rH   test_compare_to_polyfitW  s    z&TestRegression.test_compare_to_polyfitc                 C   s   t ttjg g  d S r  )rm   rn   r@   r  r   rG   rG   rH   test_empty_inputc  s    zTestRegression.test_empty_inputc                 C   s   t d}t j|d< t jdd t||}W d    n1 sB0    Y  tjj}tt	|| t
|t jfd  t|jt j d S )Nrc   r+   ignoreinvalidr'   )rV   r   rZ   errstater@   r  r  r  r   r  r	   r   r  )rC   ro   r  r  rG   rG   rH   test_nan_inputf  s    

*zTestRegression.test_nan_inputN)rz   r{   r|   r  r  r  r  r  r  r  r  r   r  r  r  r
  r  r  r  r  r  rG   rG   rG   rH   r  z  s$   
	
r  c                  C   sz   t g d\} }}}t| d t|d g d}g d}t ||d\} }}}t| d t|ddd	 t|d
dd	 d S )Nr   r   r   r-   )r   r$   r%   r&   r`   r     )r+   r      r   -   7   N   gQ?r&   gQ@r$   rQ   gGz@)r@   Ztheilslopesr   )r  r  lowerupperro   rD   rG   rG   rH   test_theilslopest  s    


r%  c                  C   sx   g d} t j| dd\}}}}t|tg d t j| ddd\}}}}t|dk d}t j| ddd}t|| d S )	Nr   r&   r$   r   r%   r   r&   numbins)r   r   r9   rO  )r.   r'   )r(  Zdefaultreallimitsr%   )Zcumcountra   binsizeextrapoints)r@   Zcumfreqr   rV   r   r   r   )ro   Zcumfreqslowlimr)  r*  r<  r   rG   rG   rH   test_cumfreq  s    r,  c                  C   sz   t g d} tj| dd\}}}}t|tg d d}tj| dd}t|| tjg ddd\}}}}t|| d S )Nr&  r&   r'  )r-   K}\UU?r-  r-  )Z	frequencyra   r)  r*  )rV   r   r@   Zrelfreqr   r   )r   Zrelfreqsr+  r)  r*  r<  r   Z	relfreqs2rG   rG   rH   test_relfreq  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 )TestScoreatpercentilec                 C   s"   g d| _ g d| _g d| _d S )N)r%   r&   r'   r`   r(   )r%   r  r*   r)   r&   r$   r   )r   r&   r'   r`   r0  r1  r2  r  )a1a2a3r   rG   rG   rH   setup_method  s    

z"TestScoreatpercentile.setup_methodc                 C   sF   t dd }tt|dd tt|dd tt|dd d S )	Nr*   r-   r   rh   r   r0   r        ?)r   r   r@   scoreatpercentiler  rG   rG   rH   r     s    z TestScoreatpercentile.test_basicc                 C   s(  t j}t|ttddd t|ttdddd t|ttddddd t|tg ddd	d
 t|tg dddd t|ttddddd t|ttdddddd t|ttdddddd t|tg ddd	ddd
 t|tg dddddd d S )Nr`   r  r1   r$   r)   r   r   r*   )limitr   r`   r   r`   r   r!  r   r`   r2   Zfractioninterpolation_methodr;  r@  r@   r8  r   rw  r   rV   r   rC   scoreatpercrG   rG   rH   test_fraction  s:    z#TestScoreatpercentile.test_fractionc                 C   s:  t j}t|ttddddd t|ttddddd t|ttdddddd t|ttddddd	d t|ttd
ddddd t|ttd
ddddd t|tg dddddd t|tg ddddd	d
 t|tg dddddd t|tg ddddd	d d S )Nr`   r  r#  r?  r&   higherr'   r9  rA  r   r:  r<  r=  r>  r   rB  rC  rG   rG   rH   test_lower_higher  sf    z'TestScoreatpercentile.test_lower_higherc                 C   s   t dd }tg d}t|g d}t|| tt|tj tt|tg d| tjt d	dtg ddd	}tg d
g dg dg dg}t|| d S )Nr*   r-   )r   r0   r7  )r   r   r  r  r%   r&   )r   r   r   r   r   rO   )r   r&   r*   )Q?gQ@g(\ @r%   r)   r   )
r   rV   r   r@   r8  r   r   r  ZndarrayrU   )rC   ro   r^  r   rC  Z	expected2rG   rG   rH   test_sequence_per  s"    
z'TestScoreatpercentile.test_sequence_perc                 C   s   t j}tddd}t||dg d g dg dg dg}t||dd	d
| g dg dg dg}t||ddd
| tg dg dg dg dg dg}t |d}t|jd t|d t j|dd	d
}t|jd t|g d d S )Nr  r%   r&   )r   r  r   )g      @r2         &@)r$   r%   r&   r'   r&   r'   r(   r)   )r*   r+   r`   r   r   rO   )      ?g      @g     !@)r.   r2         #@rJ  r   r   r   r   )r&   r&   r%   r  rG   r   r%   )r@   r8  r   rU   r   r   r  )rC   rD  ro   Zr0r  scorerG   rG   rH   	test_axis  s&    
zTestScoreatpercentile.test_axisc                 C   s@   t ttjddgddd t ttjdgd t ttjdgd d S )Nr   r$   r  rj   r?  e   rv   )rm   rn   r@   r8  r   rG   rG   rH   test_exception  s
    z$TestScoreatpercentile.test_exceptionc                 C   sT   t tg dtj t ttg g gdtj t tg ddgtjtjg d S )Nr  c   )r   r@   r8  rV   rZ   r   r   rG   rG   rH   
test_empty  s    z TestScoreatpercentile.test_emptyN)rz   r{   r|   r6  r   rE  rG  rK  rS  rU  rW  rG   rG   rG   rH   r/    s   r/  c                   @   s8   e Zd Zg dd Zg dZdd Zdd Zdd	 Zd
S )TestItemfreq)r'   r)   r   r$   r   r'   r)   r`   r   r$   r'   r)   c                    s>    fdd}t jt jt jt jt jt jg}|D ]}|| q,d S )Nc                    s   t  j| }t $}|t t|}W d    n1 s>0    Y  t|d d df g d t|d d df t jg d| d d S )Nr   rY  r   r   r`   r   r   rM   )	rV   r   r   r   filterDeprecationWarningr@   itemfreqr	   )dtr   r[   r  r   rG   rH   _check_itemfreq  s    
(z8TestItemfreq.test_numeric_types.<locals>._check_itemfreq)rV   r\  Zint64r   r   Z	complex64
complex128)rC   r_  dtypesr^  rG   r   rH   test_numeric_types  s    zTestItemfreq.test_numeric_typesc                 C   s   | j | j }}d}tt||}||d d < tt||}||d d < t $}|t t	|}W d    n1 sz0    Y  t
|d d df | d S )NOr   )r   r   rV   emptyr  r   r[  r\  r@   r]  r	   rC   r   r   r^  ZaaZbbr[   r  rG   rG   rH   test_object_arrays*  s    
(zTestItemfreq.test_object_arraysc                 C   s   | j | j }}ddg}ttt|||}ttt|||}t $}|t t	
|}W d    n1 sr0    Y  tt|d t|d  d S )N) r  r$   r   r$   )r   r   rV   r   rw  r   r   r[  r\  r@   r]  r   tuplere  rG   rG   rH   test_structured_arrays6  s    
(z#TestItemfreq.test_structured_arraysN)rz   r{   r|   r   r   rb  rf  rj  rG   rG   rG   rH   rX    s
   rX  c                
   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zejdg ddejddddgg ddejddggdd Zdd ZdS )TestModec                 C   s2   t g \}}t|tg  t|tg  d S r  r@   moder   rV   r   rC   valsr  rG   rG   rH   rW  C  s    zTestMode.test_emptyc                 C   s6   t d\}}t|tdg t|tdg d S )Nr   r   rl  rn  rG   rG   rH   r   H  s    zTestMode.test_scalarc                 C   s:   g d}t |}t|d d d t|d d d d S )Nr%   r'   r   r`      r%   r$   r(   r*   r(   r`   r(   r   r(   r   r%   r@   rm  r   rC   data1ro  rG   rG   rH   r   M  s    
zTestMode.test_basicc              	   C   s  g d}g d}g d}g d}g d}t |||||g}tj|d d}t|d t dg t|d	 t d
g tj|dd}t|d t g dg t|d	 t g dg tj|d	d}t|d t dgdgdgdgdgg t|d	 t dgdgdgdgdgg d S )N)r`   r`   r  r  )r`   r`   r`   r`   rZ  )r  r  r  r  )r  r  r  r  rO   r   r  r   r*   )r`   r`   r  r  )r$   r%   r%   r$   r`   r   r$   r&   r%   )rV   r   r@   rm  r   )rC   rt  data2Zdata3Zdata4Zdata5arrro  rG   rG   rH   	test_axesS  s    (zTestMode.test_axesc                 C   s:   g d}t |}t|d d d t|d d d d S )N)Zrainshowersrx  r   rx  r   r$   rr  rs  rG   rG   rH   test_stringsg  s    
zTestMode.test_stringsc                 C   s\   ddt jddg}t jdtd}||d d < t|}t|d d d t|d d d d S )	Nr`   Thellor'   rM   r   r   r$   )rV   rZ   rd  objectr@   rm  r   )rC   Zobjectsrv  ro  rG   rG   rH   test_mixed_objectsm  s    
zTestMode.test_mixed_objectsc                    s   G dd d  fdddD }t jdtd}||d d < ttt|dk tt |jd	 t	
|}t|d
 d
  d t|d d
 d d S )Nc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z$TestMode.test_objects.<locals>.Pointc                 S   s
   || _ d S r  r  r  rG   rG   rH   __init__y  s    z-TestMode.test_objects.<locals>.Point.__init__c                 S   s   | j |j kS r  r  rC   otherrG   rG   rH   __eq__|  s    z+TestMode.test_objects.<locals>.Point.__eq__c                 S   s   | j |j kS r  r  r  rG   rG   rH   __ne__  s    z+TestMode.test_objects.<locals>.Point.__ne__c                 S   s   | j |j k S r  r  r  rG   rG   rH   __lt__  s    z+TestMode.test_objects.<locals>.Point.__lt__c                 S   s
   t | jS r  )hashro   r   rG   rG   rH   __hash__  s    z-TestMode.test_objects.<locals>.Point.__hash__N)rz   r{   r|   r~  r  r  r  r  rG   rG   rG   rH   Pointx  s
   r  c                    s   g | ]} |qS rG   rG   )r  ro   r  rG   rH   r    r  z)TestMode.test_objects.<locals>.<listcomp>)r   r$   r%   r&   r%   r$   r$   r$   r*   rM   r&   r&   r   r$   r   )rV   rd  r|  r   r  setr   uniquer  r@   rm  )rC   Zpointsrv  ro  rG   r  rH   test_objectsu  s    
zTestMode.test_objectsc                 C   s<   g d}g }t |}d}t|| t |}t|| d S )Nrp  )rm  count)r@   rm  r   )rC   rt  ru  rL  r<  Zactual2rG   rG   rH   test_mode_result_attributes  s    


z$TestMode.test_mode_result_attributesc                 C   st   dt jdddddddddddg}t|}t|d	 tj|d
d}t|d	 tttj|dd tttj|dd d S )Nr%   r'   r   r`   rq  r$   r(   r*   )r(   r%   re   rf   ri   rj   )rV   rZ   r@   rm  r   rm   rn   )rC   rt  rL  rG   rG   rH   test_mode_nan  s     


zTestMode.test_mode_nandata)r%   r'   r   r   r%   r%   r'   r   )r%   r'   r   c                 C   s$   t j|dd}t|d d d d S )Nre   rf   r   r   rr  )rC   r  r  rG   rG   rH   test_smallest_equal  s    zTestMode.test_smallest_equalc                 C   s   dgdgdgdgg}t j|td}tj|dd}t |jdkrL|jjdksPJ t |jdkrl|jjdkspJ |t jgg }t j|td}tj|dd}t |jdkr|jjdksJ t |jdkr|jjdksJ d S )	NZ	OxidationZPolymerizationZ	ReductionrM   r   rO   r   r   r$   )	rV   r   r|  r@   rm  r   r  r  rZ   )rC   r  Zarr"  rt  Zar1rG   rG   rH   test_obj_arrays_ndim  s       zTestMode.test_obj_arrays_ndimN)rz   r{   r|   rW  r   r   rw  ry  r}  r  r  r  r   r   r  rV   rZ   r  r  rG   rG   rG   rH   rk  B  s"   	

rk  c                   @   s    e Zd Zg dZdZdd ZdS )TestSEMr   r   c              	   C   s.  t  T}tjdd( |td t| j}W d    n1 sB0    Y  W d    n1 s`0    Y  tt	| t| j
}t|d t| j
}ttj| j
ddt||d   tj| j
dd td}tj|d	< tt|tj ttj|d
dd tttj|dd tttj|dd d S )Nr  r  !Degrees of freedom <= 0 for sliceg㝎?r   rJ   r$   rc   r+   re   rf   gH=6?ri   rj   )r   rV   r  r[  rY   r@   Zsemscalar_testcaser   r   testcaser
   r  r   rw   r   rZ   r   rm   rn   )rC   r[   rD   r#  ro   rG   rG   rH   test_sem  s     H

"

zTestSEM.test_semN)rz   r{   r|   r  r  r  rG   rG   rG   rH   r    s   r  c                   @   s  e Zd Zejdg dg dfg dg dfgdd Zdd Zd	d
 Zejdddgdd Z	ejdddgdd Z
d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ejd,eg ed-gd.d/ Zd0S )1TestZmapZscorezx, yr   r   )r   r   r$   r%   r&   c                 C   s6   t ||}|t| t| }t||dd d S )Nr,   rX  )r@   zmaprV   meanr]   r   )rC   ro   rD   zr^  rG   rG   rH   	test_zmap  s    zTestZmapZscore.test_zmapc           	      C   s   t g dg dg dg}dt d }t dd }t d}tj||d	d
}tj||dd
}| | d | d dgd|| d |g|| d || gg}g d| | | t dgg dg}t|| t|| d S Nrh   rh   r   r   )r   r   r   r   )r   rh   r   rh   r   r   r   r%   r   r   rO   r   r$   rh   r   r   r   r   )r   r   r   r   )rV   r   rw   r@   r  r   	rC   ro   t1t2t3z0r  z0_expectedz1_expectedrG   rG   rH   test_zmap_axis  s&    


zTestZmapZscore.test_zmap_axisc                 C   s|   t g dg dg}tj||ddd}t g ddt d  }t g dt d	 }t|d
 | t|d | d S Nr  )rh   r   r   r   r   rP   rK   )      r  r-   r-   r   r%   )      r  r-   r.   g?r   )rV   r   r@   r  rw   r   rC   ro   r  r  r  rG   rG   rH   test_zmap_ddof  s    
zTestZmapZscore.test_zmap_ddofrK   r   r$   c                 C   sd   t dddt jg}t dddddt jg}tj|||dd}t|tj||t |  |d	 d S )
Nr0  rv   r$   r)   r  re   rK   rg   rJ   )rV   r   rZ   r@   r  r   r   )rC   rK   scorescomparer  rG   rG   rH   test_zmap_nan_policy_omit  s    z(TestZmapZscore.test_zmap_nan_policy_omitc              
   C   s   t dddd}t ddddd}t j|d< t j|d	< t j|d
< tj||dd|d}t tj|d |d t |d   |dtj|d |d t |d   |dg}t	||dd d S )N      rt   r$   rv   r  r(      )r   r&   rS   r  re   r   )rg   rP   rK   r   rJ   r  rX  )
rV   r   rU   r  rZ   r@   r  r   r   r   )rC   rK   r  r  r  r^  rG   rG   rH   #test_zmap_nan_policy_omit_with_axis  s     



z2TestZmapZscore.test_zmap_nan_policy_omit_with_axisc                 C   sh   t g d}t dddddt jg}tjtdd  tj||d	d
 W d    n1 sZ0    Y  d S )Nr   r  r0  r$   r)   r  zinput contains nanrk   ri   rf   )rV   r   rZ   r   r   rn   r@   r  )rC   r  r  rG   rG   rH   test_zmap_nan_policy_raise'  s    z)TestZmapZscore.test_zmap_nan_policy_raisec                 C   s(   t g d}g d}t||dd d S )Nr   )gOT\wg%ܿ%?gOT\w?r  rQ   )r@   zscorer   )rC   rD   desiredrG   rG   rH   test_zscore-  s    zTestZmapZscore.test_zscorec           	      C   s   t g dg dg dg}dt d }t dd }t d}tj|d	d
}tj|dd
}| | d | d dgd|| d |g|| d || gg}g d| | | t dgg dg}t|| t|| d S r  )rV   r   rw   r@   r  r   r  rG   rG   rH   test_zscore_axis5  s&    


zTestZmapZscore.test_zscore_axisc                 C   sz   t g dg dg}tj|ddd}t g ddt d  }t g dt d	 }t|d
 | t|d | d S r  )rV   r   r@   r  rw   r   r  rG   rG   rH   test_zscore_ddofL  s    
zTestZmapZscore.test_zscore_ddofc                 C   s:   t ddt jddg}tj|dd}tt |s6J d S )Nr   r$   r&   r'   r  rf   )rV   r   rZ   r@   r  r   r   rC   ro   r  rG   rG   rH   test_zscore_nan_propagateX  s    z(TestZmapZscore.test_zscore_nan_propagatec                 C   sH   t ddt jddg}tj|dd}t ddt jd	d
g}t|| d S )Nr   r$   r&   r'   re   rf   gIHb=gIHb=gIHb=?gIHb=?)rV   r   rZ   r@   r  r   rC   ro   r  r^  rG   rG   rH   test_zscore_nan_omit]  s    z#TestZmapZscore.test_zscore_nan_omitc                 C   s\   t t jdddddg}tj|ddd}t jt jtj|dd  dd	f }t||d
d d S )Nr   r   r9   r  rt   r   re   r  rJ   vIh%<=rX  )rV   r   rZ   r@   r  Zr_r   r  rG   rG   rH   test_zscore_nan_omit_with_ddofj  s    "z-TestZmapZscore.test_zscore_nan_omit_with_ddofc                 C   s,   t ddt jddg}tttj|dd d S )Nr   r$   r&   r'   ri   rf   )rV   r   rZ   rm   rn   r@   r  r  rG   rG   rH   test_zscore_nan_raisep  s    z$TestZmapZscore.test_zscore_nan_raisec                 C   s0   dgd }t |}t|tt|tj d S )NgʡEr%   )r@   r  r   rV   rW   r  rZ   r  rG   rG   rH   test_zscore_constant_input_1du  s    

z,TestZmapZscore.test_zscore_constant_input_1dc              	   C   s   t g dg dg}tj|dd}t|t t jdddgt jdddgg tj|dd}t|t t jt jt jt jgt|d g tj|d d}t|t| |j t 	d}tj|d d}t|t 
|jt j d S )	Nrc   rc   rc   rc   rc   rL  r        *@r   rO   r   r   r   )r%   r(   )rV   r   r@   r  r   rZ   ravelrU   r  r  rW   )rC   ro   r  r  r  rD   rG   rG   rH   test_zscore_constant_input_2dz  s     

z,TestZmapZscore.test_zscore_constant_input_2dc                 C   s   t g ddddt jgddt jdgg}tj|ddd}t d}t d	}t|t t j| d
t jgt jddt jgt j|t jt jgg tj|ddd}t|t t jt jt jt jg| d|t jg| d	 |t j| d	 gg d S )Nr  rc   rL  r  re   r   rg   rP   r.   r$   r   r   r   )rV   r   rZ   r@   r  rw   r   )rC   ro   r  r  s2r  rG   rG   rH   -test_zscore_constant_input_2d_nan_policy_omit  s     


z<TestZmapZscore.test_zscore_constant_input_2d_nan_policy_omitc                 C   s^   t t jt jt jt jgg dg}tj|ddd}t|t t jt jt jt jgg dg d S )N)rc   rc   r  r  re   r   r  r  )rV   r   rZ   r@   r  r   r  rG   rG   rH   test_zscore_2d_all_nan_row  s    z)TestZmapZscore.test_zscore_2d_all_nan_rowc                 C   s,   t dt j}tj|dd d}t|| d S )Nr$   r%   re   r  )rV   rW   rZ   r@   r  r   )rC   rD   r  rG   rG   rH   test_zscore_2d_all_nan  s    z%TestZmapZscore.test_zscore_2d_all_nanro   )r%   r   r'   c                 C   s   t |}t|| d S r  )r@   r  r   r  rG   rG   rH   test_zscore_empty_input  s    
z&TestZmapZscore.test_zscore_empty_inputN)rz   r{   r|   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rV   r   rI  r  rG   rG   rG   rH   r    s8   

	
r  c                
   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dg ddd Zej	
ddeejddgfdeejejdgfgdd Zej	
ddg dfdgdd Zdd ZdS )TestMedianAbsDeviationc                 C   sR   t dddddddddddd	d
d
d
ddddddddt jg| _t g d| _d S N皙@r  r/   皙@ffffff@333333@=
ףp=@@(\
@r  r0   @皙@)\(@Q@)r  r  r  r  r/   r  r  r  r  r  r  r  r  r  r  r0   r  r  r  r  r  r  r  g33333<@rV   r   rZ   dat_nandatr   rG   rG   rH   setup_class  s
    z"TestMedianAbsDeviation.setup_classc                 C   sN   t tj| jd dd | jdd}tj|dd}tg d}t|| d S )NrO   Q?r(   r&   r   )gףp=
?r-   ?r  )r   r@   median_abs_deviationr  rU   rV   r   r   )rC   r  madZmad_expectedrG   rG   rH   test_median_abs_deviation  s    z0TestMedianAbsDeviation.test_median_abs_deviationc                 C   s   t j| jdd}t|d d S )Nre   rf   g(\?)r@   r  r  r   )rC   r  rG   rG   rH   test_mad_nan_omit  s    z(TestMedianAbsDeviation.test_mad_nan_omitc                 C   sF   t ddddt jgg dg}tj|dd}t|t t jdg d S )Nr   r   r   r   )r   r   r9   rU  rt   r   rO   rV   r   rZ   r@   r  r   )rC   ro   r  rG   rG   rH   test_axis_and_nan  s
    z(TestMedianAbsDeviation.test_axis_and_nanc              	   C   s8   t dddddt jt jg}tj|dd}t|d d S )	Nr   r%   r&   r(   rV  re   rf   r   )rV   r   rZ   r   r@   r  r   )Zsefr  r  rG   rG   rH   test_nan_policy_omit_with_inf  s    z4TestMedianAbsDeviation.test_nan_policy_omit_with_infrP   )r   r   r$   Nc                 C   s:   t d}tj||d}t|t j|j|dt jd d S )N)r%   r   r&   rO   Z
fill_value)rV   rI  r@   r  r   Z	full_likesumrZ   )rC   rP   ro   r  rG   rG   rH   test_size_zero_with_axis  s    
z/TestMedianAbsDeviation.test_size_zero_with_axisznan_policy, expectedre   r.   r  c              	   C   sZ   t t jt jt jt jt jt jgddddt jt jgg dg}tj||dd}t|| d S )Nr   r'   r%   r(   )r'   r(   r)   r+   r+   r`   r  r  )rC   rg   r^  ro   r  rG   rG   rH   test_nan_policy_with_axis  s    z0TestMedianAbsDeviation.test_nan_policy_with_axiszaxis, expectedr   )r/   r   r  )Nr1   c                 C   sL   t ddddt jgg dg dg}tj|t jd|d}t||d	d	d
 d S )Nr   r$   r&   r+   )r   r   r   r   r  )r  r  r   r   re   )centerrg   rP   r   )r   r   )rV   r   rZ   r@   r  r  r   )rC   rP   r^  ro   r  rG   rG   rH   test_center_mean_with_nan  s    z0TestMedianAbsDeviation.test_center_mean_with_nanc                 C   sD   t jtdd" tjg ddd W d    n1 s60    Y  d S )Ncallablerk   )r   r$   r%   r'   rV  )r  )r   r   	TypeErrorr@   r  r   rG   rG   rH   test_center_not_callable  s    z/TestMedianAbsDeviation.test_center_not_callableN)rz   r{   r|   r  r  r  r  r  r   r   r  r  rV   r   rZ   r  r  r  rG   rG   rG   rH   r    s$   


r  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestMedianAbsoluteDeviationc                 C   sR   t dddddddddddd	d
d
d
ddddddddt jg| _t g d| _d S r  r  r   rG   rG   rH   r    s
    z'TestMedianAbsoluteDeviation.setup_classc                 C   sN   g }t  $}|t t|}W d    n1 s40    Y  t|tj d S r  )r   r[  r\  r@   median_absolute_deviationr   rV   rZ   )rC   r  r[   r  rG   rG   rH   test_mad_empty  s
    
(z*TestMedianAbsoluteDeviation.test_mad_emptyc                 C   s   t d}t 6}|t tj|dd}tj|dd}W d    n1 sL0    Y  t|t j t|t 	t jt jt jg t|j
d d S )Nr%   r   r   rO   r   rQ  rV   r  r   r[  r\  r@   r  r   rZ   r   r  )rC   r  r[   	mad_axis0	mad_axis1rG   rG   rH   test_mad_nan_shape1  s    

,z/TestMedianAbsoluteDeviation.test_mad_nan_shape1c                 C   s   t d}t D}|t tj|dd}tj|dd}tj|dd}W d    n1 sZ0    Y  t|t j t|t 	t jt jgt jt jgt jt jgg t|j
d t|t j d S )N)r%   r   r$   r   rO   r   r$   r%   r$   r  )rC   r  r[   r  r  Z	mad_axis2rG   rG   rH   test_mad_nan_shape2	  s    

,

z/TestMedianAbsoluteDeviation.test_mad_nan_shape2c                 C   sP   t  *}|t tj| jdd}W d    n1 s60    Y  t|tj d S )Nr  rf   )	r   r[  r\  r@   r  r  r   rV   rZ   )rC   r[   r  rG   rG   rH   test_mad_nan_propagate	  s    
$z2TestMedianAbsoluteDeviation.test_mad_nan_propagatec              	   C   sl   t tP t *}|t tj| jdd W d    n1 s@0    Y  W d    n1 s^0    Y  d S )Nri   rf   )rm   rn   r   r[  r\  r@   r  r  rC   r[   rG   rG   rH   test_mad_nan_raise	  s    

z.TestMedianAbsoluteDeviation.test_mad_nan_raisec                 C   sh   t  :}|t tj| jdd}tj| jdd}W d    n1 sF0    Y  t|d t|| d S )Nr   rk  r  r   r[  r\  r@   r  r  r   )rC   r[   r  	mad_floatrG   rG   rH   test_mad_scale_default"	  s    
.
z2TestMedianAbsoluteDeviation.test_mad_scale_defaultc                 C   sl   t  >}|t tj| jdd}d}tj| j|d}W d    n1 sJ0    Y  t|d t|| d S )Nrl  r  gsV?g)?r  )rC   r[   r  rk  r  rG   rG   rH   test_mad_scale_normal*	  s    
.
z1TestMedianAbsoluteDeviation.test_mad_scale_normalN)rz   r{   r|   r  r  r  r  r   r  r  r  rG   rG   rG   rH   r    s   
r  c                 C   s,   t t| |d | D ]}t|j|u  qdS )z
    Checks that all of the warnings from a list returned by
    `warnings.catch_all(record=True)` are of the required type and that the list
    contains expected number of warnings.
    znumber of warningsN)r   r  r   category)Z	warn_listZexpected_typeZexpected_lenZwarn_rG   rG   rH   _check_warnings4	  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 )TestIQRc                 C   s.   t dd }t j| tt|d d S )Nr*   r-   r7  )rV   r   r  r  r   r@   iqrr  rG   rG   rH   r   A	  s    zTestIQR.test_basicc              	   C   s   t d}t| t|d  t|d t|d t|d d t|d dd t|d ddd	 t|d d
ddd t|d ddddd d S )Nr  r   r   r   )r`   Z   )r  r   r   )r   r   r.   r  )r  r  rl  ri   lineargٿre   r#  T)rV   r  r@   r  )rC   drG   rG   rH   test_apiF	  s    

zTestIQR.test_apic                 C   s.   t tg tj t ttdtj d S r  )r   r@   r  rV   rZ   r   r   rG   rG   rH   rW  R	  s    zTestIQR.test_emptyc                 C   sl  t d}tt|d ttj|ddt d ttj|ddt d ttj|dd	d ttj|d
d	d ttj|dd	d ttj|dd	d ttj|dd	d t dt d }ttj|ddt d ttj|ddt d ttj|ddt dd ttj|ddt d ttj|ddt dd ttj|ddt dd d S )N)r)   r&   rh   r   rO   r&   r   r)   r  interpolationmidpointnearestr#  rF  r&   r'   r(   r(   )r'   r(   )r&   r(   r$   )r&   r'   r/   r  r   r$   r'   r   r   r$   )	rV   r  r   r@   r  r	   rI  r   rW   r   rG   rG   rH   test_constantV	  s     
zTestIQR.test_constantc                 C   sL   t dd }tt|d d tt|d ttj|dddg d S )Nr   r  r   rh   Tkeepdims)rV   r   r   r@   r  r	   r  rG   rG   rH   test_scalarlikel	  s    zTestIQR.test_scalarlikec                 C   s   t dd}tt|d ttj|ddt dd ttj|ddt d	d
 ttj|ddd ttj|ddd d S )Nr   r%   r'   r  r   rO   r'   r9   r   r%   r   r  r  )rV   r   rU   r   r@   r  r	   rW   r  rG   rG   rH   test_2Dr	  s    zTestIQR.test_2Dc              
   C   s  t jjdd}t |gd }t|}ttj|dd| t |dd}ttj|dd| |dd	}ttj|d
d| |dd	}ttj|ddtj|d d ttj|ddtj|dd t 	d}t j
| |d}ttj|ddd t|d d d d d d df   ttj|ddd	 t|d d d d d	d d f   ttj|ddd t|d d d d dd d f   ttj|ddd t|dd d d d d d f   ttj|ddd t|dd	d d d d f   ttj|ddd t|dd d d d d	f   ttj|ddd t|dd d dd d f   tt jtj|dd tttj|dd d S )N)G   rq  rx   r`   r  rO   rv   r   )r$   r   r   r  r  r   i  r%   r'   r)   r   r   r   r%   )r%   r   r   r$   )r%   r   r$   r  )r   r  )r   r%   r$   r$   r&   r   r   )rV   r  rl  dstackr@   r  r   rollaxisZswapaxesr   r  rU   r  rm   	AxisErrorrn   )rC   oro   qr  rG   rG   rH   rS  z	  sR    


$$$$   zTestIQR.test_axisc                 C   s   t d}tt|d ttj|ddd ttj|ddd ttj|ddd tttj|d	d tttj|t jd
fd tt	tj|dd d S )Nr'   r$   )r   g     U@)rngr/   )g      )@r   )r`   r  g?)r   rT  r   )r   r  <   )
rV   r   r   r@   r  r   rm   rn   rZ   r  r  rG   rG   rH   test_rng	  s    
zTestIQR.test_rngc                 C   sT  t d}t d}tt|d tt|d ttj|ddd ttj|ddd ttj|ddd ttj|ddd	d
 ttj|ddd ttj|ddd ttj|ddd	d ttj|ddd ttj|ddd ttj|ddd ttj|ddd ttj|ddd	d ttj|ddd tttj|dd d S )Nr'   r&   r$   r.   r  r  rF  )r   P   )r*  r  r%   r#  r  r   r  r/   rj   )rV   r   r   r@   r  rm   rn   r   rG   rG   rH   test_interpolation	  s$    

zTestIQR.test_interpolationc                 C   s^  t d}ttj|d ddjd ttj|dddjd ttj|dddjd ttj|d	ddjd
 ttj|dddjd ttj|dddjd ttj|dddjd ttj|d ddjd ttj|dddjd ttj|dddjd ttj|d	ddjd ttj|dddjd ttj|dddjd ttj|dddjd d S )Nr!  F)rP   r  rG   r$   )r%   r'   r   r  )r)   r   )r   r%   )r'   r)   r   rJ  )r   r   r$   r%   r  r"  )r)   Tr  )r%   r'   r   r   )r   r   r)   r   )r   r'   r)   r   )r%   r   r)   r   )r   r   r)   r   )rV   r  r   r@   r  r  r  rG   rG   rH   test_keepdims	  s    
zTestIQR.test_keepdimsc                 C   s  t dd}ttj|ddd ttj|ddd ttj|ddd t j|d< tjd	d
p t	d ttj|ddt j ttj|dddddt jddg ttj|ddddt jdg W d    n1 s0    Y  tjd	d
f t	d ttj|ddd ttj|dddt 
dd ttj|dddg d W d    n1 s\0    Y  tttj|dd tttj|ddd tttj|ddd tttj|dd d S )N      .@r  r  rf   r)   re   ri   r  TrX   alwaysr   r  r'   r   r$   r4   )r$   r/   r$   Zbarfood)rV   r   rU   r   r@   r  rZ   warningscatch_warningssimplefilterrW   rm   rn   r  rG   rG   rH   test_nanpolicy	  s&    

"<
:zTestIQR.test_nanpolicyc                 C   s  t dd}ttj|ddd ttj|ddd ttj|ddd	 t j|d
< tj	dd t
d ttj|dddt j ttj|dddt j ttj|dddt j ttj|dddddt jdg ttj|ddddt dt jdgd  ttj|dddddt jdg W d    n1 s60    Y  ttj|dddd ttj|dddd ttj|dddd tttj|dd d S )Nr1  r  r   r  r)   rl  g=V^w@r   r0   r  Tr2  r3  r  )rk  rg   r   )rP   rk  rg   r$   gF7k?re   r4   g	I1=@g      @rj   )rV   r   rU   r   r@   r  r   rZ   r4  r5  r6  r   rm   rn   r  rG   rG   rH   
test_scale	  s:    



$zTestIQR.test_scaleN)rz   r{   r|   r   r  rW  r  r  r  rS  r,  r.  r0  r7  r8  rG   rG   rG   rH   r
  ?	  s   )r
  c                   @   s   e Zd ZdZg dZdZejd ej	dZ
g dZdddd	d
Zdd Zejdejejejgejdddg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 )-TestMomentsa  
        Comparison numbers are found using R v.1.5.1
        note that length(testcase) = 4
        testmathworks comes from documentation for the
        Statistics Toolbox for Matlab and can be found at both
        https://www.mathworks.com/help/stats/kurtosis.html
        https://www.mathworks.com/help/stats/skewness.html
        Note that both test cases came from here.
    r   r     r  )gp=
ף?g?߾?gD9?gQI?g}?5^INr  rN   c                C   sH   t |}|d urt ||}t|| |d u r6|j}|j|ksDJ d S r  )rV   r   broadcast_tor	   rN   )rC   rL  expectr  rN   rG   rG   rH   _assert_equal-
  s    

zTestMoments._assert_equalc                 C   s  t | j}t|d t | jd}t|d t | jd}t|dd t | jd}t|d t | jd}t|d t | jd	}t|d
 t | jg d}t|g d t | jd}t|d ttt j| jd t | jg d}t|g d t g }| j|t	j
t	jd t t	jg t	jd}| j|t	j
t	jd t jt	ddd}| j|g dt	jd t jg gdd}| j|t	j
dt	jd t jg gddgdd}| j|g dd t	d}t	j
|d< tt |dt	j
 tt j|ddd ttt j|dd ttt j|dd d S )Nrh   r   r   r   r`   r$         ?r%   r&        @r   )r   r?  r   r@  333333?)r   r$   r%   r   rM   r  rO   r   r;  r/  )momentrP   rh  )r  rc   r+   re   rf   ri   rj   )r@   rB  r  r
   r  r   rm   rn   r>  rV   rZ   r   r   r   rI  r   r   r   rC   rD   ro   rG   rG   rH   test_moment6
  sF    








zTestMoments.test_momentrN   zexpect, momentr  r  c                 C   s   t jd|}tj||d}| j|||d tjt |dd|d}| j||d|d tjt |d	d
|d}| j||d|d tjt |d	d |d}| j||d|d d S )Nr'   )rB  rM   )r(   r'   r   )rP   rB  r{  r;  ra  r$   )r   r$   r&   r'   rG   )rV   r  r  r[  r@   rB  r>  r<  )rC   rN   r=  rB  ro   rD   rG   rG   rH   test_constant_momentsc
  s    z!TestMoments.test_constant_momentsc                 C   sP   t dddt}t j|d< tj|dddd}t jj	|dt jgd	d
 d S )Nr*   r$   rv   r  r   r  r  r?  r   r   )
rV   r   rU   r[  rJ  rZ   r@   rB  r   r   )rC   r   mmrG   rG   rH   test_moment_propagate_nanv
  s    
z%TestMoments.test_moment_propagate_nanc                 C   s   t | j}t|d t | j}t|dd td}tj|d< tt |tj t	t j|ddd t
tt j|d	d t
tt j|d
d d S )Nrh   r  r`   rc   r+   re   rf   g4?ri   rj   )r@   	variationr  r
   r  rV   r   rZ   r   r   rm   rn   rC  rG   rG   rH   test_variation~
  s    


zTestMoments.test_variationc                 C   sN   t dddt}t j|d< tj|ddd}t jj	|dt jgd	d
 d S )Nr*   r$   rv   r  r   r  r  g5Fu?r   r   )
rV   r   rU   r[  rJ  rZ   r@   rH  r   r   )rC   r   ZvvrG   rG   rH   test_variation_propagate_nan
  s    
z(TestMoments.test_variation_propagate_nanc                 C   s`   t g d}t dddtjddtjg}tj|dd}tj|ddd	}t|d
 tj|| d S )Nra  r   r$   r%   r&   r'   rJ   re   )rg   rK   g<<'?)r   rV   rZ   r@   rH  r
   r   r   )rC   r   Znan_arD   Znan_yrG   rG   rH   test_variation_ddof
  s    
zTestMoments.test_variation_ddofc                 C   s   t | j}t|d t | j}t|dd t j| jdd}t|dd t | j}t|dd td}tj|d< tj	d	d
" t
t |tj W d    n1 s0    Y  t
t j|ddd ttt j|dd ttt j|dd d S )Nrh   g7l*ҿr`   r   biasg2۠ۿrc   r+   r  r  re   rf   ri   rj   )r@   skewr  r
   testmathworksr  rV   r   rZ   r  r   rm   rn   rC  rG   rG   rH   test_skewness
  s    


0zTestMoments.test_skewnessc                 C   s   t ttdd d S )Nr`   rh   )r   r@   rN  r   r   rG   rG   rH   test_skewness_scalar
  s    z TestMoments.test_skewness_scalarc                 C   sz   t dddt}t j|d< t jdd  tj|ddd	}W d    n1 sT0    Y  t j	j
|d
t jgdd d S )Nr*   r$   rv   r  r  r  r   r  r  r   r   r   )rV   r   rU   r[  rJ  rZ   r  r@   rN  r   r   )rC   r   r  rG   rG   rH   test_skew_propagate_nan
  s
    
.z#TestMoments.test_skew_propagate_nanc                 C   s   t dd}t|dksJ t|td dks8J t|td dksRJ tj|dddkshJ tdgd dksJ td	t d
dd  dksJ d S )N9ѿr`   rh              FrL  g,@r)   r   r0  r&   gؗҜ<r   )rV   repeatr@   rN  rJ  r   rC   r   rG   rG   rH   test_skew_constant_value
  s    z$TestMoments.test_skew_constant_valuec                 C   s   t | j}t|d t j| jdddd}t|dd t j| jddd}t|dd t | jdd}t|d td	}tj|d
< t	t |tj t
t j|ddd ttt j|dd ttt j|dd d S )N      r   r   fisherrM  gO߻S@r`   gx|N@g=
ףp=?rc   r+   re   rf   Gzri   rj   )r@   kurtosisr  r
   rO  r  rV   r   rZ   r   r   rm   rn   rC  rG   rG   rH   test_kurtosis
  s    



zTestMoments.test_kurtosisc                 C   s   t ttg dt d S )Nr   )r   typer@   r\  rJ  r   rG   rG   rH   test_kurtosis_array_scalar
  s    z&TestMoments.test_kurtosis_array_scalarc                 C   sN   t dddt}t j|d< tj|ddd}t jj	|dt jgd	d
 d S )Nr*   r$   rv   r  r   r  r  g(\r   r   )
rV   r   rU   r[  rJ  rZ   r@   r\  r   r   )rC   r   r  rG   rG   rH   test_kurtosis_propagate_nan
  s    
z'TestMoments.test_kurtosis_propagate_nanc                 C   sz   t dd}tj|dddks"J tj|td dddks@J tj|td dddks^J tj|ddddksvJ d S )NrS  r`   F)rZ  rh   rT  rY  )rV   rU  r@   r\  rJ  rV  rG   rG   rH   test_kurtosis_constant_value
  s
    z(TestMoments.test_kurtosis_constant_valuec                 C   s6   | j t| j  }tt|d t| j d d S )Nr  )testcase_moment_accuracyrV   r  r   r   r@   rB  )rC   Z
tc_no_meanrG   rG   rH   test_moment_accuracy
  s    
z TestMoments.test_moment_accuracy)"rz   r{   r|   r   r  r  rV   r  r  r  rb  rO  r>  rD  r   r   r  r   r   r`  rE  rG  rI  rJ  rK  rP  rQ  rR  rW  r]  r_  r`  ra  rc  rG   rG   rG   rH   r9  
  s0   		-
		r9  c                   @   sl   e Zd Zeg dZeg dZdZdZdZ	dZ
dZdZd	Zd
Ze
d Zde
d  Zdd Zdd ZdS )TestStudentTestr   r  r   r   gSzgE.?g {gB4t?g {?g?r$   c              	   C   s  t  X}tjdd, |td tdd\}}W d    n1 sF0    Y  W d    n1 sd0    Y  tt| tt| t| j	d\}}t
|| j t
|| j t| j	d}d}t|| t| jd\}}t
|| j t
|| j t| j	d\}}t
|| j t
|| j t| j	d	\}}t
|| j t
|| j tjjd
dddd}tj|d< tjddh tt|dtjtjf t
tj|dddd tttj|ddd tttj|ddd W d    n1 s0    Y  d S )Nr  r  r  r   r   r   	statisticr   r   r$   r'   r`   3   it rj  rk  rx   random_stater  r9   re   rf   )g̈́^Bg/kCm?ri   rj   )r   rV   r  r[  rY   r@   ttest_1sampr   r   X1r   T1_0P1_0r   X2T2_0P2_0T1_1P1_1T1_2P1_2normrvsrZ   r	   rm   rn   )rC   r[   tr   r   r<  ro   rG   rG   rH   test_onesample  s>    L

zTestStudentTest.test_onesamplec                 C   sv   t ttj| jddd tj| jddd\}}t|| j t|| j tj| jddd\}}t|| j t|| j d S )Nr   errorr   r   r   r   )	rm   rn   r@   rj  rk  r   P1_1_lrq  P1_1_g)rC   rw  r   rG   rG   rH   test_1samp_alternative?  s    z&TestStudentTest.test_1samp_alternativeN)rz   r{   r|   rV   r   rk  rn  rl  rm  rq  rr  rs  rt  ro  rp  rz  r{  rx  r|  rG   rG   rG   rH   rd    s   +rd  c                  C   s  t j} t| g ddd dD ]&\}}t| tdd d|d| qdD ] \}}t| g d	d|d| qJt| g d
dd dD ] \}}t| g d
d|d| qdD ]}t| g dd|dd qdD ] \}}t| g dd|d| qdD ] \}}t| g dd|d| qdD ]}t| g dd|dd qdD ]"\}}t| g dd|d| q<dD ]"\}}t| g dd|d| qddD ]$\}}}t| g d||d| qtt| g dddd d S )N
r   r$   r%   r&   r'   r(   r)   r*   r+   r`   r&         D@))r  g     A@strict      >@)weakr~  r`   r   )kind))r       F@r  )r        I@)r  r~  )
r   r$   r%   r&   r&   r'   r(   r)   r*   r+   )
r   r$   r%   r&   r&   r&   r'   r(   r)   r*   r  ))r  r  r  r  r  r  g      N@)r  r  r  r  )
r   r$   r%   r'   r(   r)   r*   r+   r`   r   r  
r`   r   r  r  r  r+  F   r-  r  r   r  )r  r  r  )
r`   r   r  r  r  r  r  r+  r  r-  )
r`   r   r  r  r+  r  r-  r  r   n   r  ))r  rc   )r  r9   )r  rh   )r  rc   ))r        Y@)r  g     W@)r  g     V@)r  r  r  ))r  r   r  )r  r   r  )r  r   rh   )r   r$   r%   r%   r&   r%   Zunrecognized)r@   Zpercentileofscorer   rV   r   rm   rn   )Zpcosr  r  rR  rG   rG   rH   test_percentileofscoreK  sl     
r  ZCase)f_obsf_exprK   rP   chi2logmod_logcr)r&   r*   r  r*   r&   r$   r-   r  r.   r*   r   r   gfx(@)r$   r   r  r$   r  r   r         ?g{T4@)r%   r'   r)   r+   r   r   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 )TestPowerDivergencec                 C   s   t |}|d u r|j}nt ||}|j| }t n}	|	td tj	|||||d\}
}t
|
| |dksv|dkrtj||||d\}
}t
|
| W d    n1 s0    Y  t |}tjj||d | }t
|| d S )NMean of empty slicer  r  rK   rP   lambda_r   pearson)r  r  rK   rP   )rV   r   rx   Z	broadcastr  r   r[  rY   r@   power_divergencer   	chisquaredistributionsr  sf)rC   r  r  rK   rP   r  expected_statZnum_obsr   r[   statr   Z
expected_prG   rG   rH   check_power_divergence  s,    





(


z*TestPowerDivergence.check_power_divergencec              	   C   s   t D ]}| |j|j|j|jd |j | |j|j|j|jd|j | |j|j|j|jd|j | |j|j|j|jd|j | |j|j|j|jd|j | |j|j|j|jd|j	 | |j|j|j|jd|j	 qd S Nr  r   log-likelihoodmod-log-likelihoodcressie-readr   )
power_div_1d_casesr  r  r  rK   rP   r  r  r  r  rC   caserG   rG   rH   r     s:    zTestPowerDivergence.test_basicc              	   C   s   t D ]}tj|j}| ||j|j|jd |j	 | ||j|j|jd|j	 | ||j|j|jd|j	 | ||j|j|jd|j
 | ||j|j|jd|j | ||j|j|jd|j | ||j|j|jd|j qd S r  )r  rV   r  r   r  r  r  rK   rP   r  r  r  r  )rC   r  mobsrG   rG   rH   test_basic_masked  s<    z%TestPowerDivergence.test_basic_maskedc              	   C   s   t d }t d }t|j|jf}tt|jt|j |jf}| ||ddd|j|jg | ||ddd|j	|j	g | ||ddd|j
|j
g | ||ddd|j|jg | t|jddd dd d|j d S )Nr   r   r  r  r  r  r$   )r  rV   r  r  	ones_liker  r  r  r  r  r  r  r   rU   )rC   case0case1r  r  rG   rG   rH   rS  &  s4    zTestPowerDivergence.test_axisc                 C   s   t d }t d }t|j|jfj}tt|jt|j |jfj}|j|jg}t	dgdgg}t
j|||d\}}t|| t
j|||d d\}	}
t
j|||d d\}}t|t|
|f d S )Nr   r   rJ   r$  r  )r  rV   r  r  r	  r  r  r  r  r   r@   r  r   r	   )rC   r  r  r  r  Zexpected_chi2rK   r  r   Zstat0Zp0Zstat1p1rG   rG   rH   test_ddof_broadcasting@  s    
z*TestPowerDivergence.test_ddof_broadcastingc              
   C   s   t   tD ]|}| |j|j|j|jd|j | |j|j|j|jd|j	 | |j|j|j|jd|j
 | |j|j|j|jd|j qW d    n1 s0    Y  d S )Nr  r  r  r  )r4  r5  power_div_empty_casesr  r  r  rK   rP   r  r  r  r  r  rG   rG   rH   test_empty_cases\  s$    
z$TestPowerDivergence.test_empty_casesc                 C   sN   t d j}t d j}t d j}t d j}tj||||dd}d}t|| d S )Nr   r  r  re  )r  r  r  rK   rP   r@   r  r   )rC   r  r  rK   rP   r   r<  rG   rG   rH   'test_power_divergence_result_attributesl  s    




z;TestPowerDivergence.test_power_divergence_result_attributesc                 C   s   t ddgddgg}t ddgddgg}ttdd	& tjddgdd
gd W d    n1 sd0    Y  ttdd	  tj||dd W d    n1 s0    Y  tj||d\}}t|ddg t|ddg d S )Nr`   r   r  r'   r   #   r   For each axis slice...rk   r+  r  r  r   )r  r  rP   g̑m@gUUU@gj^4;?g4;?)rV   r   rm   rn   r@   r  r   )rC   r  r  r  r   rG   rG   rH   test_power_divergence_gh_12282w  s    4.z2TestPowerDivergence.test_power_divergence_gh_12282N)rz   r{   r|   r  r   r  rS  r  r  r  r  rG   rG   rG   rH   r    s   r  c                   C   sF   t tdd& tjddgddgd W d    n1 s80    Y  d S )Nr  rk   r`   r   r  r+  r  )rm   rn   r@   r  rG   rG   rG   rH   test_gh_chisquare_12282  s    r  zn, dtyper   i@B c                 C   sN   t j| dg|d}t j| d | d g|d}t||\}}t|| dd d S )Nr   rM   r$   r  rX  )rV   r   r@   r  r   )r#  rN   obsexpr  r   rG   rG   rH   test_chiquare_data_types  s    r  c               	   C   s  t g dg dgj} t g dg dgj}t j| |}t ddg}t ddt d d	t d
   ddt d dt d   g}tjj}t	|\}}t
|| t
||||jddd  tj|dd\}}t
j||dd t
||||jddd  tj	|jdd\}}t
|| t
||||jjddd  tj|jddd\}}t
j||dd t
||||jddd  t jjg dg dd}	t jjg dg dd}
tj	|	|
d\}}t
|d tj	t jg dd d\}}tt|t j tt|t j t|d t|tjjdd t jddZ t 2}|td  t	t jg \}}W d    n1 s0    Y  W d    n1 s0    Y  tt|t jj t|jd! t|j t jg g g g}t	|\}}tt|t jj t
|g  t jddT t ,}|td  t	|j\}}W d    n1 sp0    Y  W d    n1 s0    Y  tt|t jj t|jd" tt |j d S )#N)r*   r*   r       rv   )rv   rv   r%   r&   r'   )r   r   r   r   r   )r   r   r   r   r   g      8@r-   r$   r   r  r   r%   rN  r'   r?  r   rO   r   r  r  r   rQ   )rP   r  )r%   r'   r(   rV  r`   )r   r   r   r   r   mask)r$   r&   r*   r`   rV  )r  r   r   r  r  r  rG   rQ  )rV   r   r	  r  Zmasked_arrayr  r@   r  r  r  matr	   r   r  r  r  r   r  r   r   r   r  r   r[  rY   ZMaskedArrayr  r  r   )r  r  r  Zexpected_chisqZ
expected_gr  Zchisqr   gZobs1Zexp1r[   Zempty3rG   rG   rH   test_chisquare_masked_arrays  sn    "
V
Pr  c                  C   s   t g d} d}t dt| d }t |  t ||   }t |||  }t | |fj}t g d	dd}|D ]B\}}t
j|d d df |d d df |d\}	}
t|	|d	d
 qd S )N)r   r   r     r'   r   r`   r&   r*   r`   r)   r+   r   r%   r(   r   r   r&   g*kqr   ) g      $g    @r  g     r@rX  gffffffP@g       gLD@r  g      A@r   g     =@r  g     :@rh   g8@r-   gffffff7@gq=
ףp?g7@r   g333336@r.   g6@r   gfffff6@r   g8@r9   g     A@rc   g     j@rv   r$   r   r  g{Gzt?rX  )rV   r   r   r  r  r  r  r  r	  rU   r@   r  r   )r  betar  ZalphaZexpected_countsZtable4Ztable5r  r  r  r   rG   rG   rH   /test_power_divergence_against_cressie_read_data  s    	  
r  c                  C   s  t g dt g dt g dt g dg} t g dt g dt g dt g dg}t g d	t g d
t g dt g dg}tt| d | d | d | d d tt|d |d |d |d d tt|d |d |d |d d tttj|d |d  d}tj|  }t|| tt| d | d | d | d d tt|d |d |d |d d tttj|d |d  d S )N)g"~j?g^I+?gI+?gjt?gMbX9?gʡE?x&?-?g?r   gGz?g+?gv?g9v?)g~jt?gx?gOn?r  g"~j?n?gK7A`?r  g7A`?r   bX9?gZd;O?g1Zd?gK?)gy&1?gzG?g`"?g!rh?g'1Z?gZd;O?grh|?gjt?gʡE?r   gzG?gS?gJ4?gʡE?)gK7?gh|?5?gl?g/$?g#~j?r  Q?      ?g      ?r   r  g rh?g333333?
ףp=
?)r&   r%   r'   r%   r'   r%   r$   r'   r&   r&   r&   r%   )r$   r$   r   r$   r%   r   r$   r%   r$   r   r   r%   )r$   r&   r%   r%   r&   r%   r%   r&   r&   r   r$   r   )r%   r'   r&   r%   r&   r&   r%   r%   r%   r&   r&   r&   )r  g#@r5   rN  g$@)g333333@g@g@r0   g@)rR  rV  r2   r   @)g!@g!@333333 @ffffff
@g333333"@r   r   r$   r%   )gNt$@gBv?)g
__2@g5"]i2?)g\(\%@g+ԋ?re  )r   r   r@   Zfriedmanchisquarerm   rn   r   mstats)r@  rA  rK  r<  r   rG   rG   rH   test_friedmanchisquare  sN    












   

r  c                   @   s4   e Zd ZdZdddZdddZdd	 Zd
d ZdS )
TestKSTestzLTests kstest and ks_1samp agree with K-S various sizes, alternatives, modes.autor  c           	      C   s8   t j|d||d}t||g}tt|||d d S Nru  r   rm  rQ   )r@   kstestrV   r   r   	rC   ro   r   expected_statisticexpected_probrm  rR   r  r^  rG   rG   rH   _testOneE  s    zTestKSTest._testOnec                 C   s@   t j|d||d}t j|t jj||d}tt|||d d S r  )r@   r  ks_1sampru  cdfr   rV   r   )rC   ro   r   rm  rR   r  Zresult_1samprG   rG   rH   _test_kstest_and_ks1sampJ  s    z#TestKSTest._test_kstest_and_ks1sampc                 C   s,   t ddd}d}t|d}t|| d S )Nrv   r   r+   re  ru  )rV   r  r@   r  r   rC   ro   r<  r   rG   rG   rH   test_namedtuple_attributesO  s    z%TestKSTest.test_namedtuple_attributesc                 C   sl   t ddd}| |d t ddd}| |d g d}| |d | j|dd	d
 | j|dd	d
 d S )Nrv   r   r+   r  r   
r[  gQ?g333333g(\?gQ?g(\ſg{GzgHzG?g\(\gGzr   r  rm  r   )rV   r  r  r  rG   rG   rH   test_agree_with_ks_1sampV  s    z#TestKSTest.test_agree_with_ks_1sampN)r  r  )r  r  )rz   r{   r|   r   r  r  r  r  rG   rG   rG   rH   r  B  s
   

r  c                   @   s:   e Zd ZdZdddZdd Zdd	 Zd
d Zdd ZdS )TestKSOneSamplezOTests kstest and ks_samp 1-samples with K-S various sizes, alternatives, modes.r  r  c           	      C   s<   t j|t jj||d}t||g}tt|||d d S )Nr  rQ   )r@   r  ru  r  rV   r   r   r  rG   rG   rH   r  g  s    zTestKSOneSample._testOnec                 C   s0   t ddd}d}t|tjj}t|| d S )Nrv   r   r+   re  )rV   r  r@   r  ru  r  r   r  rG   rG   rH   r  l  s    z*TestKSOneSample.test_namedtuple_attributesc                 C   s   t ddd}| |ddd t ddd}| |dd	d
 g d}| |ddd | j|ddddd | j|ddddd d S )Nrv   r   r+   r  g|N?g7.s?r  r   g{CTp?g M<b*?r  gZL?g86J4?r   g+?r  r  r   gHD?gr?rV   r  r  r  rG   rG   rH   test_agree_with_rs  s    z!TestKSOneSample.test_agree_with_rc                 C   sJ   t jjdddd}| j|ddddd	 | |d
dd | |ddd d S )Nr  r   h:)rj  rx   ri  r  ghх?g7?asympr  r   g^h?r   gv!ԉ}?g*z)?)r@   ru  rv  r  r  rG   rG   rH   test_known_examples  s    z#TestKSOneSample.test_known_examplesc                 C   s   t tttjdd ttdd tddd W d    n1 sF0    Y  t ttddd tg d}tt|dd	j	t
ttgd
 d S )Nr   Tzn is not integral: 1.5rk   r.   rv   ))rT  r   Tr   )rT  皙?Tr   )rT  r   Trh   )rT  gTrh   )r        ?Trh   )r  r  Fr   )r  r-   Tgb?)r  r-   FgiNq>)r        ?Tgv(?)r  r  TgT	?)@  g\(\?Frh   )r        ?Fg(>)r  gQ?Fg@c?)r        ?FgX+ʳP?r  r%   )ra  )r   rV   r   r   rZ   rm   rn   r   r   ZcheckintrJ  bool)rC   ZdatasetrG   rG   rH   test_ks1samp_allpaths  s    *z%TestKSOneSample.test_ks1samp_allpathsN)r  r  )	rz   r{   r|   r   r  r  r  r  r  rG   rG   rG   rH   r  d  s   
r  c                   @   s   e Zd ZdZd(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 Zejjdd Zdd Zdd Zdd Zejjdd Zdd  Zejjd!d" Zd#d$ Zejjd%d& Zd'S ))TestKSTwoSamplesz<Tests 2-samples with K-S various sizes, alternatives, modes.r  c           	      C   s4   t j||||d}t||g}tt|| d S )Nr  )r@   ks_2samprV   r   r   )	rC   r@  rA  r   r  r  rm  r  r^  rG   rG   rH   r    s    zTestKSTwoSamples._testOnec                 C   s   |  dgdgddd |  dgdgddd |  dgdgddd |  dgdgddd |  dgdgddd |  dgdgddd d S )	Nr   r   r  r   r   r-   r   rh   )r  r   rG   rG   rH   	testSmall  s    zTestKSTwoSamples.testSmallc                 C   s   t ddg}|d }|d }t g d}| ||ddd | ||ddd | ||d	dd | ||dd
d | ||dd
d | ||d	dd d S )Nr   r   {Gz?r   r   r   r  r   r   r   r   r   r  r   r   rV   r   r  rC   rt  Zdata1pZdata1mru  rG   rG   rH   testTwoVsThree  s    zTestKSTwoSamples.testTwoVsThreec                 C   s   t ddg}|d }|d }t g d}| ||ddd | ||ddd	 | ||d
dd | ||ddd | ||ddd | ||d
dd d S )Nr   r   r  r}  r  r-   g?r   g?r   r  皙?rN  r  r  r   r  r  rG   rG   rH   testTwoVsFour  s    zTestKSTwoSamples.testTwoVsFourc                 C   s   t ddd}|d d }|d d }| ||ddd | ||ddd	 | ||d
dd | ||ddd | ||ddd | ||d
dd d S )Nr   r   r$   r   r  rI  g~z?r   gz;.B?r   r   r   {Gz?gn2IU?r  )rC   x100Z	x100_2_p1Z	x100_2_m1rG   rG   rH   test100_100  s    zTestKSTwoSamples.test100_100c                 C   s   t ddd}t ddd}|d d }|d d }| ||ddd | ||d	dd
 | ||ddd | ||ddd | ||d	dd | ||ddd d S )Nr   r   r  r   r   r  g?g@߿?r   g}n?r   r   g:[?g]O);?gѫ);?rh   r   r  )rC   r  Zx110Z
x110_20_p1Z
x110_20_m1rG   rG   rH   test100_110  s    zTestKSTwoSamples.test100_110c                 C   s  t jdgd dgd  dgd  dgd  td}|d }t jdgd dgd  dgd  dgd  td}t jdgd dgd  dgd  d	gd  td}| ||d
dd | ||ddd | ||ddd | ||d
dd | ||ddd | ||ddd d S )Nr$   r%   r&   r'   r(   rM   r   r`   r)   r  g      ?g^dH?r   gQl6y?r   rh   r   gVdEVdE?g(f^?g!?gii?g+ ϖ?)rV   r   r  r  )rC   Zx2233Zx3344Zx2356Zx3467rG   rG   rH   testRepeatedValues  s    222z#TestKSTwoSamples.testRepeatedValuesc                 C   s   t g d}| ||d ddd | ||d ddd | ||d dd	d | ||d
 ddd | ||d
 ddd | ||d
 dd	d | ||d
 ddd | ||d
 dd	d | ||d
 ddd d S )Nr  r   r  r   r   r   rN  r   rh   r-   r  )rC   ru  rG   rG   rH   testEqualSizes  s    zTestKSTwoSamples.testEqualSizesc              	   C   s  d\}}d| | d d }t dd|| }t dd|}| j||dd| | ddd	 | j||dd| | dd
d	 | j||dd| | dd
d	 | j||dd| | dd
d	 t X}|td | j||dd| | ddd	 | j||dd| | ddd	 W d    n1 s0    Y  tjddD}td | j||dd| | ddd	 t	|td W d    n1 s|0    Y  d S )N)rh  iX  r   r$   r   r   r  g     @@r  r  r  r   g2JE?r   g     @@gsW\nc?Bks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.r  Tr2  r3  
rV   r  r  r   r[  rY   r4  r5  r6  r	  rC   n1n2deltaro   rD   r[   r  rG   rG   rH   testMiddlingBoth  s     >
z!TestKSTwoSamples.testMiddlingBothc              	   C   s  d\}}d| | d d }t dd|| }t dd|}| j||dd| | ddd	 | j||dd| | dd
d	 | j||dd| | ddd	 | j||dd| | ddd	 t X}|td | j||dd| | ddd	 | j||dd| | ddd	 W d    n1 s0    Y  tjddD}td | j||dd| | ddd	 t	|td W d    n1 s|0    Y  d S )N)r   L  r   r$   r   r   r  g     ȹ@r  r  r  r   gZ?r   g     @@g@J?r  r  Tr2  r3  r  r  rG   rG   rH   testMediumBoth  s     >
zTestKSTwoSamples.testMediumBothc                 C   s   d\}}|d }d| | d d }t dd|| }t dd|}| ||dd	| d
 | ||dd| d | ||dd	| d d S )N)'  r  rL  r   r$   r   r   r   r  g    `@g      <r   g     @g򼉷?r   gimb:r  )rC   r  r  lcmr  ro   rD   rG   rG   rH   	testLarge*  s    zTestKSTwoSamples.testLargec                 C   s\   t jd t jjdd}t jjddd }| j||dddd	d
 | j||ddddd
 d S )N@ i  r  i  r.   r  gC?      <r  r  r  rV   r  r  rl  r  r   rG   rG   rH   test_gh111845  s
    zTestKSTwoSamples.test_gh11184c                 C   s   t jd t jjdd}t jjddd }| j||dddd	d
 | j||ddddd
 | j||dddd	d
 | j||dddd	d
 d S )Nr  r
  r  i'  r.   r  g 	_r!?gAD5r  r  r  r  r   gלN#y7r   gvqw?r  r   rG   rG   rH   test_gh11184_bigger=  s    z$TestKSTwoSamples.test_gh11184_biggerc              	   C   s*  d\}}|d }d| | d d }t dd|| }t dd|}| j||dd| d	d
d | j||dd| ddd | j||dd| d	dd | ||dd| d | ||dd| d t P}|td | j||dd| ddd | j||dd| ddd W d    n1 s0    Y  d S )N)r
  i*  rL  r   r$   r   r   r  g     @gkHY?r  r  gLɔ.?r  r  r   g.LbG2?r   rc   gr?֎?r  )rV   r  r  r   r[  rY   )rC   r  r  r  r  ro   rD   r[   rG   rG   rH   testLargeBothG  s    zTestKSTwoSamples.testLargeBothc                 C   s$   d}t ddgdg}t|| d S )Nre  r   r$   r%   )r@   r  r   rC   r<  r   rG   rG   rH   testNamedAttributesY  s    z$TestKSTwoSamples.testNamedAttributesc                 C   sT   ddl m}m} |dddd |dddd tt|dddd tt|dddd d S )	Nr   )_count_paths_outside_method_compute_prob_inside_methodr   r   i  r  iK  rv  )scipy.stats.statsr  r  rm   FloatingPointError)rC   r  r  rG   rG   rH   test_some_code_paths_  s
    z%TestKSTwoSamples.test_some_code_pathsc                 C   s8   t ttjg dg t ttjdgg  t ttjg g  d S r  )rm   rn   r@   r  r   rG   rG   rH   test_argument_checkingj  s    z'TestKSTwoSamples.test_argument_checkingc                 C   sd   t jd d}tjj|ddd}|d }tj||ddd tj||d	dd tj||d
dd dS )zEnsure gh-12218 is fixed.Na i    rh   r   )rx   rj  rk  r   r  r  r   r  N)rV   r  r  r@   uniformrv  r  )rC   r  rvs1rvs2rG   rG   rH   test_gh12218p  s    zTestKSTwoSamples.test_gh12218N)r  )rz   r{   r|   r   r  r  r  r  r  r  r  r   r   r   r   r  r	  r  r  r  r  r  r  r  r  rG   rG   rG   rH   r    s0   






r  c               	   C   s  d\} }| |  g||gf}t ddd}t ddd}t t dddt dddg}t t dddt dddg}tj||dd\}}t||g| |f tj|j|jdd\}}t||g| tj||dd\}}t||g| t Z}	t jdd	, |		t
d
 tdd\}}W d    n1 s00    Y  W d    n1 sP0    Y  tt | tt | d}
tj||dd}t||
 t |||g}t |||g}tj||dd\}}tt ||  tt || t|jd tjt |dt |ddd\}}tt ||  tt || t|jd tttj||dd tj||ddd\}}t|d|d   t||  tj||ddd\}}t||d  t||  t jd}tjjddd|d}t j|d< tjjddd|dtjjdd|d }t j|d< t jdd	* tt||t jt jf W d    n1 sP0    Y  ttj||ddd  tttj||d!d tttj||d"d tg d#g d$\}}tt ||ft jdf t jdd	r ttg d#g d#t jt jf t dt jgd%dgg}tt|t d&dt jgdt jgf W d    n1 sP0    Y  t d'}tttj|d(|d) d S )*N)gu?gȵI?r   r   g)\(?gKX@r   rO   r  r  r  r   r   re  r  r$   r  ry  r   r   rP   r   r   r  r'   r`     rh  rh  r  )rk  rx   ri  re   rf   )ghm#1?gry̧?ri   rj   r  rP  rv   r#  r  )r*   r%   r$   r%   r&   ) rV   r  r   r@   	ttest_relr   r	  r   r  r[  rY   r   r   r   r%  absr   r  r&  rm   rn   r   r  RandomStateru  rv  rZ   r	   r   rI  r   rU   )trr  tprr  r  rvs1_2Drvs2_2Drw  r   r[   r<  r   rvs1_3Drvs2_3Dr*  ro   rD   ananrG   rG   rH   test_ttest_rel~  s    ""P





:"$
r-  c                  C   s   t jdddg} g d}tj| |dd}tj|| dd}t|j|j dd t|j|jdd t|d	d  | d	d  }t||dd t|d
dd d S )Nr   r   r   r   r   r   r   re   rf   r   r   r   )r  grh|?-C6?)rV   rZ   r@   r#  r   rf  r   ro   rD   r  r  r3rG   rG   rH   test_ttest_rel_nan_2nd_arg  s    r2  c                  C   s4   t g g } t| t j jsJ t| tjtjf d S r  )r@   r#  r  Ttest_relResultr   rV   rZ   r  rG   rG   rH   #test_ttest_rel_empty_1d_returns_nan  s    r5  zb, expected_shape)r   r'   r   r  )r   r   r   r  c                 C   sX   t d}tj|| dd}t|tjjs,J t j|t jd}t|j	| t|j
| d S N)r%   r   r   rv   rO   r  )rV   rd  r@   r#  r  r3  rW   rZ   r   rf  r   r   Zexpected_shaper   r  Zexpected_valuerG   rG   rH   test_ttest_rel_axis_size_zero  s    
r8  c                  C   sV   t d} t d}tj| |dd}t|tjjs6J t|jjd t|j	jd d S N)r   r*   r   r'   r*   r   r   rO   r'   r   )
rV   rd  r@   r#  r  r3  r   rf  r  r   r   r   r  rG   rG   rH    test_ttest_rel_nonaxis_size_zero  s    

r=  c                 C   s   ddd}|| |||| S )Nr   c                 S   s<   t | } t j| |d}t j| |dd}| j| }|||fS )NrO   r   r  )rV   r   r  r]   r  )ro   rP   Zmur]   nobsrG   rG   rH   _stats  s
    

z_desc_stats.<locals>._stats)r   rG   )r@  rA  rP   r?  rG   rG   rH   _desc_stats  s    
r@  c               	   C   s
  d} d}| |  g||gf}t ddd}t ddd}t ||g}t ||g}tj||dd\}}t||g| |f ttjt|| ||g tj|j|jdd\}}t||g| t|j|j}	ttj|	 ||g tj||dd\}}t||g| t||dd}	ttj|	 ||g t	 Z}
t j
d	d
, |
td tdd\}}W d    n1 sf0    Y  W d    n1 s0    Y  tt | tt | t |||g}t |||g}tj||dd\}}tt |t |  tt || t|jd tjt |dt |ddd\}}tt |t |  tt || t|jd tttj||dd tttjgt|j|jR ddi tj||dd\}}t|d|d   t||  tj||dd\}}t||d  t||  tj|j|jddd\}}t|j|j}	ttj|	ddi||g tj|j|jddd\}}t|j|j}	ttj|	ddi||g t jd}tjjddd|d}t j|d< tjjddd|d}t j
d	d
* tt||t jt jf W d    n1 s0    Y  ttj||ddd tttj||dd tttj||d d tg d!g d"\}}tt ||ft jdf t j
d	d
r ttg d!g d!t jt jf t dt jgd#dgg}tt|t d$dt jgdt jgf W d    n1 s0    Y  d S )%N	ru?g8Mѱ?r   r   r'   i   r   rO   r  r  r  r   r   r  r$   r  ry  r   r   r   r   r   r  r`   r!  rh  rh  re   rf   )guͷ?g*,?ri   rj   r  rP  rv   r#  ) rV   r  r   r@   	ttest_indr   ttest_ind_from_statsr@  r	  r   r  r[  rY   r   r   r%  r   r$  r   r  r&  rm   rn   r   r  r%  ru  rv  rZ   r	   r   rI  )r&  r  r'  r  r  r(  r)  rw  r   argsr[   r*  r+  r*  ro   rD   r,  rG   rG   rH   test_ttest_ind  s    


P




:"rF  c                   @   s@  e Zd ZdZejd eede d ejde d fZ	eeed d ejed fZ
edZedd ZddgZddgZejd ejjd	dd
ddd	ZejjddddZddgZddgZg dZe	e
ddiefe	je
jddiefe	dddf e
dddf ddied fe	dddf  e
dddf  ddied fe	e
dddefe	e
ejdddefeeddidfeedddefeei dfg	Zeejdkree	e
ejdddef e j!"dedd Z#dd Z$dd Z%dd  Z&d!d" Z'e j!( d#d$ Z)d%d& Z*d'd( Z+dS ))Test_ttest_ind_permutationsr   r   r%   r&   r   r`   r   r$   r'   rh  ri  r*   goʡ?g/$?)g-?r  gzG?g(\?gRQ?rP   N)ri  rP   	equal_varT)rP   ri  r   1.18.0za,b,update,p_dc                 C   sv   d dd}d dddd}| | | | tj||fi |\}}tj||fi |\}	}
t||	d t|
| d S )NFrP   rH  r   r   )rP   rH  permutationsri  r'   )updater@   rC  r   )rC   r   r   rL  p_dZ	options_a	options_pZstat_ar  Zstat_pr   rG   rG   rH   test_ttest_ind_permutations  s    


z7Test_ttest_ind_permutations.test_ttest_ind_permutationsc                 C   s  t jd d}t jd|d}t jd|d}ddd}|jdd tj||fi |}tj||fi |}|jd	d tj||fi |}tj||fi |}|jd
d tj||fi |}	tj||fi |}
t|j|j t|j|	j t|j|j  t|j|j  t|	j|
j  t|	j	|
j	 t|j	|j	 t|j	|j	 |j	dk}t|j	| |j	|  |	j	|  t|j	|  |j	|   |	j	|   d S )Nr   r%   r$   r   r   )rP   rK  r   r   r   r  r-   
rV   r  r  r  rL  r@   rC  r   rf  r   )rC   Nr   r   rN  res_g_abres_g_bares_l_abres_l_bares_2_abZres_2_bar  rG   rG   rH    test_ttest_ind_exact_alternative  s:    


z<Test_ttest_ind_permutations.test_ttest_ind_exact_alternativec                 C   s   t jd d}t j|}t j|}t||}tj||dd}tj||dd}tj||t jd}|j|jksvJ |j|jksJ |j|jksJ d S )Nr   r%   r   rK  )rV   r  r  r  r@   rC  r   r   )rC   rQ  r   r   Zres0rB  rC  r]  rG   rG   rH   test_ttest_ind_exact_selection  s    z:Test_ttest_ind_permutations.test_ttest_ind_exact_selectionc                 C   s   t jd t jd}t jd}t ||f}t|t| }}d}t|||\}}|dd |f }|d|d f }t||d}	tt|	}
|
t	|| |ksJ t|	|
ksJ d S )Nr   r%   r&   r  .T)
rV   r  r  r  r  r  r#   r"   r  r   )rC   r   r   r  ZnaZnbrK  Zmat_permr  Zt_statZn_uniquerG   rG   rH   !test_ttest_ind_exact_distribution  s    z=Test_ttest_ind_permutations.test_ttest_ind_exact_distributionc           	      C   s   t jd d}t jdd|}t jd|}dddd}|jdd	 tj||fi |}tj||fi |}|jd
d	 tj||fi |}tj||fi |}t|j|j t|j|j  t|j|j  t|j	|j	 d t|j	|j	 d d S )Nr   r  r$   r%   rv   r   )rP   rK  ri  r   r   r   r   rP  )	rC   rQ  r   r   rN  rR  rS  rT  rU  rG   rG   rH   #test_ttest_ind_randperm_alternative  s     z?Test_ttest_ind_permutations.test_ttest_ind_randperm_alternativec           	      C   s>  t jd d}t j|d}t j|d}ddd}|jdd tj||fi |}|jdd tj||fi |}|jd	d tj||fi |}t|j|j d
 |jdk}t	d|j|  |j| dd t	dd
|j|    |j|  dd t	d|j|   |j|  dd t	dd
|j|   |j| dd d S )Nr   r  r&   r   rK  ri  r   r   r   r  r   r-   r$   r  r   )
rV   r  r  r  rL  r@   rC  r   r   r   )	rC   rQ  r   r   rN  rR  rT  rV  r  rG   rG   rH   $test_ttest_ind_randperm_alternative2  s2    



z@Test_ttest_ind_permutations.test_ttest_ind_randperm_alternative2c           	      C   s2  t jd d}t j|d}t j|d}t j|d< t j|d< t j|d< t j|d< ddd}|jd	d
 ttdd$ tj	||fi |}W d    n1 s0    Y  t
 }|td |jdd
 tj	||fi |}t |jddt |jddB }tj	|d d | f |d d | f fi |}t|j| t j t|j| t j t|j|  |j t|j|  |j tj	| | fi |}t |jsJ t |jsJ W d    n1 s0    Y  |jdd
 ttdd$ tj	||fi |}W d    n1 s$0    Y  d S )Nr   r  r'   )r'   r   )r*   r$   )r+   r%   r   r\  ri   rf   r  rk   rd   r  rO   re   z!nan-containing/masked inputs with)rV   r  r  r  rZ   rL  rm   rn   r@   rC  r   rX   rY   r   anyr   r   rf  r   r  )	rC   rQ  r   r   rN  r   r[   r  rC  rG   rG   rH   $test_ttest_ind_permutation_nanpolicy@  s<    




2
$02z@Test_ttest_ind_permutations.test_ttest_ind_permutation_nanpolicyc                 C   s   t tdd$ tj| j| jdd W d    n1 s60    Y  t tdd$ tj| j| jdd W d    n1 sv0    Y  t tdd& tj| j| jddd	 W d    n1 s0    Y  d S )
NzPermutations must berk   r0  rX  r.   z'hello' cannot be usedr   rz  r\  )rm   rn   r@   rC  r4  b2r   r   r   rG   rG   rH   'test_ttest_ind_permutation_check_inputsj  s    22zCTest_ttest_ind_permutations.test_ttest_ind_permutation_check_inputs),rz   r{   r|   rQ  rV   r  r  r  r   r   r   r4  r`  r5  Zb3r@   ru  rv  rU   r  r  rM  Zp_d_genZp_d_bigr	  tolistr%  paramsr   __version__r   default_rngr   r   r  rO  rW  rY  rZ  r[  r   r]  r_  ra  rG   rG   rG   rH   rG  }  sX   ,(

*2

*
 *rG  c                   @   s   e Zd Zej ejjddddddii gg ddejjd	d
dgd	dgddd Zejjddddddii gg ddejdddgdd ZdS )Test_ttest_ind_commonkwdsr   r   r\  trimr  )rK  rh  basic)ZidsrH  TFZunequal_varc                 C   s  t jd t jdddddd}t jddddd}tj||fd	d
i|}d\}}}||d d |d d dd d f }	|d d dd d |d d f }
tj|	|
fd	di|}t|j|d d ||d d f |j t|j|d d ||d d f |j t 	t 
|dd
d}t 	t 
|dd
d}|jd d }t |}t |}tdd |D  D ]B}|| }|| }tj||fd	di|}|j||< |j||< qVt||j t||j d S )Nr   r'   r&   r)   r   r(   r*   r$   rP   r0  )r$   r%   r   r  r   r   r   r   r$   r   rv   r'   r   r&   r   r   r   c                 s   s   | ]}t |V  qd S r  r  r  rG   rG   rH   	<genexpr>  r  z=Test_ttest_ind_common.test_ttest_many_dims.<locals>.<genexpr>)rV   r  r  r  r@   rC  r   rf  r   Zmoveaxistiler  rI  r   r   )rC   rg  rH  r   r   r   r  r  r  r4  r`  rC  ro   rD   r  Z
statisticsZpvaluesindicesZxiZyir]  rG   rG   rH   test_ttest_many_dimsw  s6    
 


z*Test_ttest_ind_common.test_ttest_many_dims)rh  rK  ri  rP   rv   c           
   	   C   s  t jjdddd}t jjdddd}t j|d d d< t j|d d d< t t j|| |d	}t `}t jd
d4 |	t
d tj||fd|i|}W d    n1 s0    Y  W d    n1 s0    Y  t |j}t|| t |j}	t|	| d S )Nr`   )r'   r%   r`   r  rJ  r   r$   r%   r(   rO   r  r  z'invalid value encountered in less_equalrP   )rV   r  randintr[  rZ   r   r  r   r  r[  rY   r@   rC  r   r	   rf  )
rC   rg  rP   r   r   r^  r[   r   Zp_nansZstatistic_nansrG   rG   rH   test_nans_on_axis  s    T
z'Test_ttest_ind_common.test_nans_on_axisN)	rz   r{   r|   r   r   r   r  ro  rq  rG   rG   rG   rH   rf  t  s"   #rf  c                	   @   s   e Zd Zg dg ddddgg dg ddddgg dg dd	d
dgg dg ddddgg dg ddddggZejdedd Zdd Zdd Z	ejdddd Z
dd  Zejd!g d"d#d$ Zd%S )&Test_ttest_trimr   r  r  g@9(?er  )r  g33333`@r  g33333^@g(\P@r"  gfffffڇ@gBM)u?g]@gyd?g	s5v@g{Gz?r  r  r  r   ffffff?r   rT  rT  r   rw  rw  r3   g@r  r0   r-   rT  g333333@rR  rO  g@rQ  gn4aƂg?^)g,
gm?giI@gE|x!gvwQ?glfPg_)gXG~?g=n@g8$mg({g]:m?gYv gb?gb	gSTß}g9yg.Ͽv?g޺i?g	'X@)g>_\?g hO?gau?@g׌g+?g:؜^gz54g7f?gDO%@g#xG@g\F?g4E?gnfg>P"ۿguX@gvR?g%?g2Ydzgo?gih?gn?g!nu?gJ+bza,b,pr,tr,trimc                 C   s6   t j|||dd\}}t||dd t||dd dS )a  
        Using PairedData's yuen.t.test method. Something to note is that there
        are at least 3 R packages that come with a trimmed t-test method, and
        comparisons were made between them. It was found that PairedData's
        method's results match this method, SAS, and one of the other R
        methods. A notable discrepancy was the DescTools implementation of the
        function, which only sometimes agreed with SAS, WRS2, PairedData and
        this implementation. For this reason, most comparisons in R are made
        against PairedData's method.

        Rather than providing the input and output for all evaluations, here is
        a representative example:
        > library(PairedData)
        > a <- c(1, 2, 3)
        > b <- c(1.1, 2.9, 4.2)
        > options(digits=16)
        > yuen.t.test(a, b, tr=.2)

            Two-sample Yuen test, trim=0.2

        data:  x and y
        t = -0.68649512735573, df = 3.4104431643464, p-value = 0.5361949075313
        alternative hypothesis: true difference in trimmed means is not equal
        to 0
        95 percent confidence interval:
         -3.912777195645217  2.446110528978550
        sample estimates:
        trimmed mean of x trimmed mean of y
        2.000000000000000 2.73333333333333
        Frh  rH  r   r   Nr@   rC  r   )rC   r   r   r  r&  rh  rf  r   rG   rG   rH   test_ttest_compare_r  s     z$Test_ttest_trim.test_ttest_compare_rc                 C   sF   g d}g d}t j||ddd\}}t|ddd t|d	dd d S )
N)r  r  r  r   r  ,   r  r  r  r   r  r}  )r     r  r  r     r  r  r~  r  r  r  r  r  g
ףp=
?Frz  gRbv?rW  r   gOi?r{  rC   r   r   rf  r   rG   rG   rH   test_compare_SAS  s
    z Test_ttest_trim.test_compare_SASc                 C   sD   g d}g d}t j||dd\}}t|ddd t|ddd d	S )
a  
        The PairedData library only supports unequal variances. To compare
        samples with equal variances, the multicon library is used.
        > library(multicon)
        > a <- c(2.7, 2.7, 1.1, 3.0, 1.9, 3.0, 3.8, 3.8, 0.3, 1.9, 1.9)
        > b <- c(6.5, 5.4, 8.1, 3.5, 0.5, 3.8, 6.8, 4.9, 9.5, 6.2, 4.1)
        > dv = c(a,b)
        > iv = c(rep('a', length(a)), rep('b', length(b)))
        > yuenContrast(dv~ iv, EQVAR = TRUE)
        $Ms
           N                 M wgt
        a 11 2.442857142857143   1
        b 11 5.385714285714286  -1

        $test
                              stat df              crit                   p
        results -4.246116897032513 12 2.178812829667228 0.00113508833897713
        rv  rx  r  rh  gR?绽|=r   g^Nr{  r  rG   rG   rH   test_equal_var  s
    zTest_ttest_trim.test_equal_varz	alt,pr,tr))r   gjΜ>5?ry  )r   gn4aƂW?ry  c                 C   sH   g d}g d}t j||dd|d\}}t||dd t||dd dS )	z
        > library(PairedData)
        > a <- c(2.7,2.7,1.1,3.0,1.9,3.0,3.8,3.8,0.3,1.9,1.9)
        > b <- c(6.5,5.4,8.1,3.5,0.5,3.8,6.8,4.9,9.5,6.2,4.1)
        > options(digits=16)
        > yuen.t.test(a, b, alternative = 'greater')
        rv  rx  r  F)rh  rH  r   r  r   Nr{  )rC   altr  r&  r   r   rf  r   rG   rG   rH   test_alternatives  s    
z!Test_ttest_trim.test_alternativesc                 C   s   d}t t|d* tjddgddgddd W d    n1 s@0    Y  d}t t|d. tjddgdtjdgdd	d
 W d    n1 s0    Y  d S )Nz7Permutations are currently not supported with trimming.rk   r   r$   r%   r  )rh  rK  zQnot supported by permutation tests, one-sided asymptotic tests, or trimmed tests.re   )rh  rg   )rm   rn   r@   rC  rV   rZ   )rC   rl   rG   rG   rH   test_errors_unsupported1  s    8z'Test_ttest_trim.test_errors_unsupportedrh  )gɿr-   r   c                 C   sL   d}t t|d( tjddgddg|d W d    n1 s>0    Y  d S )Nz/Trimming percentage should be 0 <= `trim` < .5.rk   r   r$   r  )rm   rn   r@   rC  )rC   rh  rl   rG   rG   rH   test_trim_bounds_error<  s    z&Test_ttest_trim.test_trim_bounds_errorN)rz   r{   r|   rc  r   r   r  r|  r  r  r  r  r  rG   rG   rG   rH   rr    s:   
#
rr  c            
   	   C   s  t jd t jdddddd} t jddddd}t| |fd	d
}t | d} t |d d}tdd |jD  D ]}|\}}}}}}	|| jd	 k r| ||||||	f |||||||	f ksJ qv|||||| jd	  ||	f |||||||	f ksvJ qvd S )Nr   r'   r&   r%   r   r(   r*   r$   r0  rO   rj  )N.rk  c                 s   s   | ]}t |V  qd S r  r  r  rG   rG   rH   rl  M  r  z.test__broadcast_concatenate.<locals>.<genexpr>)rV   r  r  r  r    rm  r   r  )
r   r   r  indexr  r  r  lr"  r#  rG   rG   rH   test__broadcast_concatenateC  s    .r  c                  C   s  d} d}d}d}t j| |dd\}}t||g||g tt jt| |ddi||g d} d	}d
}t j| |dd\}}t||g||g tt jt| |ddi||g d}d}d}d}|| g||gf}tddd}	tddd}
tddd}t||
g}t|
|g}t j||
ddd\}}t||g||f tt jt||
ddi||f t j||	ddd\}}t||g||f tt jt||	ddi||f t j|j|jddd\}}t||g| t|j|j}tt j|ddi||f t j||ddd\}}t||g| t||dd}tt j|ddi||f d}t j||
ddd}t	|| t
|||g}t
|||g}t j||ddd\}}tt|t| tt|| t|jd t||dd}t j|ddi\}}tt|t| tt|| t|jd t jt|dt|dddd\}}tt|t| tt|| t|jd tt|dt|ddd}t j|ddi\}}tt|t| tt|| t|jd t jg dg ddd\}}tt||ftjdf tjddz tt jg dg dddtjtjf tdtjgddgg}tt j|td dddtjgdtjgf W d    n1 s0    Y  d S )!Nr   rs  rt  ru  FrH  rH  r   gJ?g*ʿrA  g@[?gωұ?ghG?r   r   r   r'   rB  r   rJ  rO   re  r  r$   r  r  rP  r  r   rv   r#  )r@   rC  r   rD  r@  rV   r  r   r	  r   r%  r   r$  r   r  r&  r   r  rZ   rI  )r   r   r  r&  rw  r   Z	tr_uneq_nZ	pr_uneq_nr'  Zrvs3r  r  r(  r)  rE  r<  r   r*  r+  r,  rG   rG   rH   test_ttest_ind_with_uneq_varU  s    






r  c                  C   s   t jdddg} g d}tj| |dd}tj|| dd}t|j|j dd t|j|jdd t|| d	d  }t||dd t|d
dd d S )Nr   r   r   r.  re   rf   r   r   r   )g8HgW@?)rV   rZ   r@   rC  r   rf  r   r0  rG   rG   rH   test_ttest_ind_nan_2nd_arg  s    r  c                  C   s4   t g g } t| t j jsJ t| tjtjf d S r  )r@   rC  r  Ttest_indResultr   rV   rZ   r4  rG   rG   rH   #test_ttest_ind_empty_1d_returns_nan  s    r  c                 C   sX   t d}tj|| dd}t|tjjs,J t j|t jd}t|j	| t|j
| d S r6  )rV   rd  r@   rC  r  r  rW   rZ   r   rf  r   r7  rG   rG   rH   test_ttest_ind_axis_size_zero  s    
r  c                  C   sV   t d} t d}tj| |dd}t|tjjs6J t|jjd t|j	jd d S r9  
rV   rd  r@   rC  r  r  r   rf  r  r   r<  rG   rG   rH    test_ttest_ind_nonaxis_size_zero  s    

r  c                  C   sV   t d} t d}tj| |dd}t|tjjs6J t|jjd t|j	jd d S )N)r   r)   r   r:  r   rO   r;  r  r<  rG   rG   rH   2test_ttest_ind_nonaxis_size_zero_different_lengths  s    

r  c                  C   sr   t ddgt ddg } }t ddgt ddg }}t ddgt dd	g }}t| ||||| d S )
Nr   r$   r%   r&   r'         r      )rV   r   r@   rD  )Zmean1Zmean2Zstd1Zstd2Znobs1Znobs2rG   rG   rH   test_gh5686  s    r  c               	   C   s.   t jdddddddd} t| tjtjg d S )Nr   r(   Fr  )r@   rD  r   rV   rZ   r4  rG   rG   rH   %test_ttest_ind_from_stats_inputs_zero  s    r  c                  C   s  d\} }}t jjdd| ||fd}t j|d d d d d d f t||fdd\}}t j|d d d d d d f ddd\}}t |d d ddf d\}}	t||dd	 t|d
 |dd	 t|j	||f t j|d d d d d d f t| |fdd\}}t j|d d d d d d f ddd\}}t |dd d df d\}}	t||dd	 t|d
 |dd	 t|j	| |f t j|d d d d d d f t| |fdd\}}t j|d d d d d d f ddd\}}t |ddd d f d\}}	t||dd	 t|d
 |dd	 t|j	| |f t g dd\}
}tt
|
|ftjdf dd }t|}t |d d d d d d f d\}}t j|d d d d d d f ddd\}
}|||d}t|| t|
| t j|d d d d d d f ddd\}
}|||d}t|| t|
| tjddh tt g ddtjtjf tdtjgddgg}tt |ddtjgdtjgf W d    n1 s0    Y  d S )N)r`   r   r   r'   r`   ri  r   rO   r   r  rQ   r$  r$   r  c                 S   s4   | dk r|dks | dkr(|dkr(|d S d|d  S )Nr   r   r   r$   r   rG   )rw  r   r  rG   rG   rH   convert7  s     z%test_ttest_1samp_new.<locals>.convertr   r   r   r  r  rv   )r@   ru  rv  rj  rV   r  r   r   r   r  r$  r   Z	vectorizer   r  rZ   r   )r  r  Zn3Zrvn1r  r  r  p2r  p3rw  r   r  Z	converterr&  r  Zpcr,  rG   rG   rH   test_ttest_1samp_new  sJ    
4*4*4*
&*

*

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 )TestDescribec              	   C   s   t  ^}tjdd2 |td td\}}}}}}W d    n1 sL0    Y  W d    n1 sj0    Y  t|d t|d t|d tt	| t
|ddd	 t
|d
dd	 d S )Nr  r  r  r   r   )r   r   rh      rQ   rX  )r   rV   r  r[  rY   r@   describer   r   r   r   )rC   r[   r#  rF  r"  r  skkurtrG   rG   rH   test_describe_scalarQ  s    R


z!TestDescribe.test_describe_scalarc                 C   s  t t dt ddf}dg dg df }}t g d}t g d}d	gd
 }dgd
 }t|\}}	}
}}}t|| t|	| t|
| t|| t||dd t||dd tj|j	dd\}}	}
}}}t|| t|	| t|
| t|| t||dd t||dd t 
d}t j|d< d\}}d}d}d}d}tj|dd\}}	}
}}}t|| t|	| t|
| t|| t|| t||dd tttj|dd tttj|dd d S )NrH  r$   r&   r$   r'   r   r   r   r   r   r   r   r   ffffff?r  r  r  )r   r   r   r   H,p ?r&   TUUUUUr  rQ   r   rO   rc   r+   )r+   )rh   rU  r   r4   rh   gGzre   rf   ri   rj   )rV   r  r  rW   r   r@   r  r   r   r	  r   rZ   rm   rn   rC   ro   ZncZmmcZmcZvcZskcZkurtcr#  rF  r"  r  r  r  rG   rG   rH   test_describe_numbers\  sH    
















z"TestDescribe.test_describe_numbersc                 C   s"   t td}d}t|| d S )Nr'   )r>  minmaxr  varianceskewnessr\  )r@   r  rV   r   r   )rC   rL  r<  rG   rG   rH   test_describe_result_attributes  s    z,TestDescribe.test_describe_result_attributesc                 C   s   t t dt ddf}dg dg df }}t g d}t g d}d	gd
 }dgd
 }tj|dd\}}	}
}}}t|| t|	|dd t|
|dd t||dd t	||dd t	||dd d S )NrH  r  r$   r'   r  r  r  )Q?r  r  r  r  r&   r  r   rJ   r   rX  r  rQ   )
rV   r  r  rW   r   r@   r  r   r   r   r  rG   rG   rH   test_describe_ddof  s    


zTestDescribe.test_describe_ddofc           	      C   s   t t dt ddf}d\}}d}d}d}d}tj|d d	}t|j| t|j	| t|j
| t|j| t|j|d
d t|j|d
d d S )NrH  r  r$   )r   )r   r   r  ga+?gE,p ?gUUUUUUrO   r  rQ   )rV   r  r  rW   r@   r  r   r>  r   r  r  r  r   r  r\  )	rC   ro   Ze_nobsZe_minmaxZe_meanZe_varZe_skewZe_kurtr   rG   rG   rH   test_describe_axis_none  s    z$TestDescribe.test_describe_axis_nonec                 C   s   t ttjg  d S r  )rm   rn   r@   r  r   rG   rG   rH   test_describe_empty  s    z TestDescribe.test_describe_emptyN)	rz   r{   r|   r  r  r  r  r  r  rG   rG   rG   rH   r  P  s   )r  c                  C   s  t ttjd t ttjd t ttjd d\} }}d\}}}d|d  |d  }}|d d|d   }}	tdd }
d}tt|
| |f t	t|
| tt|
||f ttj|
dd	||f ttj|
d
d	||f t	t|
| tt|
||f ttj|
dd	||f ttj|
d
d	||	f t	t|
| tj
jdddd}tj|d
d	j}t|ddd tjjddd}tj|d
d	j}t|d ttj|
d d| |f ttj|
d d||f ttj|
d d||f td}
tj|
d< tjdd( tt|
tjtjf W d    n1 s:0    Y  d}ttj|
dd| tjdd" t ttj|
dd W d    n1 s0    Y  t ttj|
dd t ttj|
ddd t ttj|
dd
d t ttjttddd	 td}
tj|
d < tjdd( tt|
tjtjf W d    n1 s@0    Y  d!}ttj|
dd| t ttj|
dd t ttj|
dd t ttj|
ddd t ttj|
dd
d t ttjttd"dd	 tjdd( tt|
tjtjf W d    n1 s0    Y  d#}ttj|
dd| t ttj|
dd t ttj|
dd g d$}td%d& t|D }
tt|
d d'k d( d S ))Nr   )gMc@gO?g{\᛿)g2$?gגe`?gǃK@?r   r$   )r  rv   r   r   r$   r%   r  rv   r   r   r$   r%   r  rv   r   r   r$   r%   r  rv   r   r   r$   r%   re  r   r   r   r
  {   )r   rx   ri  rh   r'   rQ   rx   ri  rO   rc   r+   r  r  )geGK?gZ^<ý?re   rf   r  ri   rj   r  r*   r  r  )g9+%g?*ݗ?r   )gwGw@g{8NĦ?)
r  r   :   r)   r   )   r   r   r      c                 S   s   g | ]\}}t ||qS rG   )rV   rW   )r  r  r  rG   rG   rH   r    r  z'test_normalitytests.<locals>.<listcomp>r  T)rm   rn   r@   skewtestkurtosistestZ
normaltestrV   r   r   r   skewnormrv  r   r   Zlaplacer   rZ   r  r	   rw  r   r  	enumerater   )Z	st_normalZst_skewZst_kurtZ	pv_normalZpv_skewZpv_kurtZpv_skew_lessZpv_kurt_lessZpv_skew_greaterZpv_kurt_greaterro   r<  r3  r   r4  r^  r  rG   rG   rH   test_normalitytests  s    




82

88r  c                   @   sT   e Zd Zejd ejdd\ZZe	j
dg ddd Zdd	 Zd
d ZdS )TestRankSumsr   r$   r`   r   )r   r   r  c                 C   s<   t j| j| j|dj}t j| j| jd|dj}t|| d S )Nr   F)Zuse_continuityr   )r@   ranksumsro   rD   r   mannwhitneyur   )rC   r   rB  rC  rG   rG   rH   test_ranksums_result_attributes  s    z,TestRankSums.test_ranksums_result_attributesc                 C   s   t | j| j}t|d d S )Nre  )r@   r  ro   rD   r   rC   r   rG   rG   rH   test_ranksums_named_results#  s    z(TestRankSums.test_ranksums_named_resultsc                 C   sD   t tdd$ tj| j| jdd W d    n1 s60    Y  d S )Nzalternative must be 'less'rk   rj   r   )rm   rn   r@   r  ro   rD   r   rG   rG   rH   test_input_validation'  s    z"TestRankSums.test_input_validationN)rz   r{   r|   rV   r  r  r  ro   rD   r   r   r  r  r  r  rG   rG   rG   rH   r    s   
r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestJarqueBerac                 C   s  t jd t jddd}t jdd}t jdd}tt|d t|j	 tt|d t|j
 tt|d t|j	 tt|d t|j
 tt|d t|j	 tt|d t|j
 tt|d t|d k tt|j
t|j
k tt|d t|d k tt|j
t|j
k tt|d t|d k tt|j
t|j
k d S )Nr  r   r   r  r
  )rV   r  r  rl  r  Zrayleighr   r@   jarque_berarf  r   r   rC   ro   rD   r  rG   rG   rH   test_jarque_bera_stats-  s        z%TestJarqueBera.test_jarque_bera_statsc                 C   s   t jd t jddd}tt| }\}}tt| }\}}t|dd }\}	}
t	||  ko|	  ko|j
  ko|j
  ko|j
kn   t	||  ko|
  ko|j  ko|j  ko|jkn   d S )Nr  r   r   r  r$   P  )rV   r  r  rl  r@   r  rw  ri  rU   r   rf  r   )rC   ro   Zjb_test1ZJB1r  Zjb_test2ZJB2r  Zjb_test3ZJB3r  rG   rG   rH   test_jarque_bera_array_likeE  s    @z*TestJarqueBera.test_jarque_bera_array_likec                 C   s   t ttjg  d S r  )rm   rn   r@   r  r   rG   rG   rH   test_jarque_bera_sizeP  s    z$TestJarqueBera.test_jarque_bera_sizeN)rz   r{   r|   r  r  r  rG   rG   rG   rH   r  ,  s   r  c                  C   s   t d} tttj|  d S )Nr  )rV   r   rm   rn   r@   r  r  rG   rG   rH   test_skewtest_too_few_samplesT  s    
r  c                  C   s   t d} tttj|  d S )Nr   )rV   r   rm   rn   r@   r  r  rG   rG   rH   !test_kurtosistest_too_few_samples[  s    
r  c                   @   sP   e Zd Zg dZg dZdZdd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )TestMannWhitneyU)g	U3@g^3@gt3@g]o5@gzS4@gt< 4@gM	X3@gXmCk4@gLo&3@gfɘ2@g{m;^3@ga A$|3@gMѢ_4@g#3@g19T_3@ggC2@gqR4@gKk/4@g܁3@gZ2@g_
3@g$`3@g
x4@g3#л5@g;VND1@g >H2@gr4@gyܤ2@g?4@g=bɇ3@)gpG3@gL:j0@g2@gJNnC1@gR;`(3@g+Pi,2@g6:Z2@gZ"3=2@gF	uSa	3@gXҀ2@gX3^83@g21@gJ2@gZ)E2@gU83@g50@gԆ3@gFz33@gz3@gڴ3@r  c           	      C   s   t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t|| t|| t||k t|d t|d t|d t|d t|d| jd t|d| jd d S )	Nr   r   r     f   g=_A?r:   glPz.?r@   r  rA   Yr   r   r
   r;   	rC   u1r  u2r  u3r  Zu4Zp4rG   rG   rH   test_mannwhitneyu_one_sidedt  s    





z,TestMannWhitneyU.test_mannwhitneyu_one_sidedc                 C   sb   t j| j| jdd\}}t j| j| jdd\}}t|| t|d t|d t|d| jd d S )Nr  r   r  r  glPz.?r:   r@   r  rA   r  r   r
   r;   rC   r  r  r  r  rG   rG   rH   test_mannwhitneyu_two_sided  s    


z,TestMannWhitneyU.test_mannwhitneyu_two_sidedc           	      C   s   t j| j| jddd\}}t j| j| jddd\}}t j| j| jddd\}}t j| j| jddd\}}t|| t|| t||k t|d t|d t|d t|d t|d| jd t|d	| jd d S )
NFr   r   r   r  r  gii5?r:   g22?r  r  rG   rG   rH   &test_mannwhitneyu_no_correct_one_sided  s*    









z7TestMannWhitneyU.test_mannwhitneyu_no_correct_one_sidedc                 C   sf   t j| j| jddd\}}t j| j| jddd\}}t|| t|d t|d t|d| jd d S )NFr  r   r  r  g22?r:   r  r  rG   rG   rH   &test_mannwhitneyu_no_correct_two_sided  s    




z7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sidedc                 C   sb   t g d}t g d}ttj||ddd ttj||ddd ttj||ddd	 d S )
N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )     @g ?չ>r   )r  g&)E?r  )r  g?չ?)rV   r   r   r@   r  r   rG   rG   rH   test_mannwhitneyu_ones  s    z'TestMannWhitneyU.test_mannwhitneyu_onesc                 C   s&   d}t j| j| jdd}t|| d S )Nre  r   r   )r@   r  rA   r  r   r  rG   rG   rH   #test_mannwhitneyu_result_attributes  s    z4TestMannWhitneyU.test_mannwhitneyu_result_attributesN)rz   r{   r|   rA   r  r;   r  r  r  r  r  r  rG   rG   rG   rH   r  b  s   	
+r  c                  C   sF   g d} g d}t t| |d dd d}t| |}t|| d S )N)"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )"g-@g+@g(@r  rS  gffffff@g333333@ffffff@g333333@r0   r  皙	@r   r  r  r/   r  gffffff@ @333333?r  r.   ?r  rA  rA  r  r  r   r  r-   r  r  r   r   g/"?r'   r;  )r   r@   Zpointbiserialrr   )ro   rD   r<  r   rG   rG   rH   test_pointbiserial  s    r  c                  C   sd  t g d} t| }g d}t|d | t g d}t|}t g d}t|d | t| |\}}t||d  t||d  t| || \}}}t||d  t||d  t||d  t d} t g dg dg}tt| d	|  |d
d tdd}	t g d}
t 	|	|
}t g d}t 	||
}t|}t|d |dd d S )N)r   r$   r&   )r)   r  r)   r   )r   r%   r(   r+   )r  r   r   r  r'   )㪪@I?g&>ڿr  r  )5@㪪@gIr  r  r$   r*   rQ   r   )r'   r   r+   r%   r$   r$   )g_v	@g1%?g"u?gZӼ?g!u @gq&@r&   )
rV   r   r@   Zobrientransformr   r   r   r   r   rU  )r@  r  r^  rA  r  r   r   r  r  valuesrepsr  Ztransformed_valuesrG   rG   rH   test_obrientransform  s:    




r  r   c                 C   s0   t j| |||d}t|||d t|j| d S )N)rP   rN   weightsrX  )r@   gmeanr   r   rN   )
array_liker  rP   rN   r   r  ro   rG   rG   rH   check_equal_gmean  s    r  c                 C   s.   t j| ||d}t|||d t|j| d S )N)rP   rN   rX  )r@   hmeanr   r   rN   )r  r  rP   rN   r   ro   rG   rG   rH   check_equal_hmean!  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 )TestHarMeanc                 C   s0   g d}d}t || g d}d}t || d S )Nr  =b#A@r   gQ?r  rC   r   r  rG   rG   rH   test_1d_list(  s    
zTestHarMean.test_1d_listc                 C   s    t g d}d}t|| d S )Nr  r  rV   r   r  r  rG   rG   rH   test_1d_array2  s    zTestHarMean.test_1d_arrayc                 C   s&   t ddg}d}tt|| d S )Nr   r   rh   )rV   r   r   r@   r  r  rG   rG   rH   test_1d_array_with_zero8  s    z#TestHarMean.test_1d_array_with_zeroc                 C   s    t g d}tttj| d S )N)r   r   rv   )rV   r   rm   rn   r@   r  rV  rG   rG   rH   !test_1d_array_with_negative_value=  s    z-TestHarMean.test_1d_array_with_negative_valuec                 C   s(   g dg dg dg}d}t || d S Nr`   r   r  r  r  r+  r  r-  r  r   r  x   gmWUC@r  r  rG   rG   rH   test_2d_listB  s    zTestHarMean.test_2d_listc                 C   s.   g dg dg dg}d}t t|| d S r  )r  rV   r   r  rG   rG   rH   test_2d_arrayH  s    zTestHarMean.test_2d_arrayc                 C   s6   g dg dg dg}t g d}t||dd d S Nr  r   r  )U|ϊ6@g4.=C@JQ6LsJ@E]P@r   rO   r  r  rG   rG   rH   test_2d_axis0N  s    zTestHarMean.test_2d_axis0c                 C   s<   g dg dg dg}t g d}ttj|dd| d S )Nr`   r   r  r  r   r  )r  rh   r  r  r   rO   rV   r   r   r@   r  r  rG   rG   rH   test_2d_axis0_with_zeroT  s    z#TestHarMean.test_2d_axis0_with_zeroc                 C   s6   g dg dg dg}t g d}t||dd d S Nr  r   r  )g3333333@O@y@Y@r   rO   r  r  rG   rG   rH   test_2d_axis1Y  s    zTestHarMean.test_2d_axis1c                 C   s<   g dg dg dg}t g d}ttj|dd| d S )Nr
  r   r  )rh   r  r  r   rO   r  r  rG   rG   rH   test_2d_axis1_with_zero_  s    z#TestHarMean.test_2d_axis1_with_zeroc                 C   s:   g dg dg dg}t g dg}tt ||dd d S r  )r   r  r  rG   rG   rH   test_2d_matrix_axis0d  s    z TestHarMean.test_2d_matrix_axis0c                 C   s<   g dg dg dg}t g dgj}tt ||dd d S r  )r   r	  r  r  rG   rG   rH   test_2d_matrix_axis1j  s    z TestHarMean.test_2d_matrix_axis1N)rz   r{   r|   r  r  r  r  r  r  r	  r  r  r  r  r  rG   rG   rG   rH   r  '  s   
r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) TestGeoMeanc                 C   s:   g d}d}t || g d}tdd}t ||dd d S )Nr  sŤF@r   r  r  r  rX  )r  r   r  rG   rG   rH   r  r  s    

zTestGeoMean.test_1d_listc                 C   sF   t g d}d}t|| tg dt}tdd}t||td d S )Nr  r  r   r  r  rM   )rV   r   r  r   r   r  rG   rG   rH   r  |  s    

zTestGeoMean.test_1d_arrayc                 C   s(   g dg dg dg}d}t || d S Nr  r   r  g/,$qJ@r  r  rG   rG   rH   r    s    zTestGeoMean.test_2d_listc                 C   s,   g dg dg dg}d}t t|| d S r  )r  r   r  rG   rG   rH   r    s    zTestGeoMean.test_2d_arrayc                 C   sl   g dg dg dg}t g d}t||dd tg dg dg dg}tg d}t||ddd	 d S 
Nr  r   r  )g4@A@g5H@g`8|wЭN@gm~&+R@r   rO   r   r  rP   r   rV   r   r  r  rG   rG   rH   r	    s    zTestGeoMean.test_2d_axis0c                 C   sx   g dg dg dg}t g d}t||dd tg dg dg dg}tdd	}t|||g}t||dd
d d S Nr  r   r  )gD" 6"6@gcP@g
ҧZ@r   rO   r   r  r  r  r  )rV   r   r  r   rC   r   r  r  rG   rG   rH   r    s    
zTestGeoMean.test_2d_axis1c                 C   s   g dg dg dg}t g dg}tt ||dd tg dg dg dg}t g d}tt ||ddd	 tg dg dg dg}t tj|dd}tt ||ddd	 d S r  )r   r  r   r@   r  r  rG   rG   rH   r    s    z TestGeoMean.test_2d_matrix_axis0c                 C   s   g dg dg dg}t g dgj}tt ||dd tg dg dg dg}tdd	}t |g|g|gg}tt ||dd
d d S r  )r   r	  r  r   r   r  rG   rG   rH   r    s    
z TestGeoMean.test_2d_matrix_axis1c                 C   s"   t g d}d}t||dd d S )N)g}Ô%ITr   gu <7~r   r  rX  )r   r  r  rG   rG   rH   test_large_values  s    zTestGeoMean.test_large_valuesc                 C   sF   g d}d}t jdd t|| W d    n1 s80    Y  d S )N
r`   r   r  r  r  r+  r  r-  r  r   rh   r  r  )rV   r  r  r  rG   rG   rH   test_1d_list0  s    zTestGeoMean.test_1d_list0c                 C   sL   t g d}d}t jdd t|| W d    n1 s>0    Y  d S )Nr  rh   r  )Zdivide)rV   r   r  r  r  rG   rG   rH   test_1d_array0  s    zTestGeoMean.test_1d_array0c                 C   sH   g d}t j}t jdd t|| W d    n1 s:0    Y  d S )N)
r`   r   r  r  r  r+  r  r-  r  rv   r  r  )rV   rZ   r  r  r  rG   rG   rH   test_1d_list_neg  s    zTestGeoMean.test_1d_list_negc                 C   s(   g d}g d}d}t |||dd d S )Nr$   r'   r(   r&   r%   ra  GZ*oG8@h㈵>r  r   r  )rC   r  r   r  rG   rG   rH   test_weights_1d_list  s    z TestGeoMean.test_weights_1d_listc                 C   s4   t g d}t g d}d}t|||dd d S )Nra  r"  r#  r$  r%  r  rC   r   r  r  rG   rG   rH   test_weights_1d_array  s    z!TestGeoMean.test_weights_1d_arrayc                 C   s>   t g d}t jjg dg dd}d}t|||dd d S )Nr>  )r$   r'   r(   r&   r%   r'   )r   r   r   r   r   r   r  r#  r$  r%  )rV   r   r  r  r'  rG   rG   rH   test_weights_masked_1d_array  s    z(TestGeoMean.test_weights_masked_1d_arrayN)rz   r{   r|   r  r  r  r  r	  r  r  r  r  r  r   r!  r&  r(  r)  rG   rG   rG   rH   r  q  s   

r  c                   @   s   e Zd Zedd ZdZed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 )$TestGeometricStandardDeviationr  r   gv aZ@r$   r%   r&   c                 C   s   t | j}t|| j d S r  )r@   gstdarray_1dr   gstd_array_1drC   gstd_actualrG   rG   rH   r    s    z,TestGeometricStandardDeviation.test_1d_arrayc                 C   s    t t| j}t|| j d S r  )r@   r+  ri  r,  r   r-  r.  rG   rG   rH    test_1d_numeric_array_like_input  s    z?TestGeometricStandardDeviation.test_1d_numeric_array_like_inputc                 C   s<   t jtdd td W d    n1 s.0    Y  d S )NzInvalid array inputrk   z3This should fail as it can not be cast to an array.)r   r   rn   r@   r+  r   rG   rG   rH   ,test_raises_value_error_non_array_like_input  s    zKTestGeometricStandardDeviation.test_raises_value_error_non_array_like_inputc                 C   sH   t jtdd& tt| jdg W d    n1 s:0    Y  d S )NNon positive valuerk   r   r   r   rn   r@   r+  rV   r   r,  r   rG   rG   rH   "test_raises_value_error_zero_entry  s    zATestGeometricStandardDeviation.test_raises_value_error_zero_entryc                 C   sH   t jtdd& tt| jdg W d    n1 s:0    Y  d S )Nr2  rk   rv   r3  r   rG   rG   rH   &test_raises_value_error_negative_entry
  s    zETestGeometricStandardDeviation.test_raises_value_error_negative_entryc                 C   sJ   t jtdd( tt| jtjg W d    n1 s<0    Y  d S )NzInfinite valuerk   )	r   r   rn   r@   r+  rV   r   r,  r   r   rG   rG   rH   !test_raises_value_error_inf_entry  s    z@TestGeometricStandardDeviation.test_raises_value_error_inf_entryc                 C   sB   t g dtjdddgg}tj|dd}t|t dtjg d S )N)r   r   r   r   r   r$   r%   rO   r&   )r   rV   rZ   r@   r+  r   )rC   r   r/  rG   rG   rH   test_propagates_nan_values  s    z9TestGeometricStandardDeviation.test_propagates_nan_valuesc                 C   sF   t jtdd$ tj| j| jjd W d    n1 s80    Y  d S )NzDegrees of freedom <= 0rk   rJ   )r   r   rn   r@   r+  r,  rx   r   rG   rG   rH   )test_ddof_equal_to_number_of_observations  s    zHTestGeometricStandardDeviation.test_ddof_equal_to_number_of_observationsc                 C   s    t j| jd d}t|| j d S )NrO   )r@   r+  array_3dr   r-  r.  rG   rG   rH   test_3d_array  s    z,TestGeometricStandardDeviation.test_3d_arrayc                 C   s"   t j| jdd}t|ddg d S )Nr  rO   g~d@g<
?)r@   r+  r9  r   r.  rG   rG   rH   test_3d_array_axis_type_tuple  s    z<TestGeometricStandardDeviation.test_3d_array_axis_type_tuplec                 C   s:   t j| jdd}tg dg dg dg}t|| d S )Nr   rO   )gĶ?@gQӫ@g֌@gן7R@)g%Ȁ@ge@gv6B5 @g _?)gE ?gީ?gk̊Y?g%:?r@   r+  r9  rV   r   r   rC   r/  gstd_desiredrG   rG   rH   test_3d_array_axis_0#  s    z3TestGeometricStandardDeviation.test_3d_array_axis_0c                 C   s4   t j| jdd}tg dg dg}t|| d S )Nr   rO   )gN@g85@g'ĥ?gwth?)gHnaX?gG?gBu?gE?r<  r=  rG   rG   rH   test_3d_array_axis_1,  s    z3TestGeometricStandardDeviation.test_3d_array_axis_1c                 C   s4   t j| jdd}tg dg dg}t|| d S )Nr$   rO   )gt80?gі?g?)gۘ]~?gmT6(?g	G?r<  r=  rG   rG   rH   test_3d_array_axis_24  s    z3TestGeometricStandardDeviation.test_3d_array_axis_2c                 C   s^   t j| jdk| j}tj|dd}tj| jdd}g dg dg}t|| t|j| d S )Nr   r$   rO   r  r  )	rV   r  Zmasked_wherer9  r@   r+  r   r   r  )rC   r  r/  r>  r  rG   rG   rH   test_masked_3d_array<  s    
z3TestGeometricStandardDeviation.test_masked_3d_arrayN)rz   r{   r|   rV   r   r,  r-  rU   r9  r  r0  r1  r4  r5  r6  r7  r8  r:  r;  r?  r@  rA  rB  rG   rG   rG   rH   r*    s"   	r*  c               	   C   s   t t dddt dddt dddf} d}d	}g d
}t| |D ]&\}}tt||||dd| d qHttdddddd d S )Nr   r  r'   r  g?g333333?gffffff?r!  i  )rh   rh   gs  gG|G{g	ɺM>6g>
ztt+g#ӌRM/gF׸fz2gU8u5g8M8gФ)Ba?g%վ?g*+a5?gś?gڒJ|>r  zfail forp=%f)r;   err_msgr  r   gVݶ3;r:   )rV   r  r  r   r
   r@   
binom_test)Zppr#  ro   Zresultsr   r   rG   rG   rH   test_binomtestE  s    rE  c                     s   ddgg dg dg dg dg dg dg dg d	g d
g
} t ddD ]4  fddt  d D }t||  d  dd qJd S )Nr   )r-   r   r-   )r  r   r   r  )r  r  r   r  r  )r        ?r   r   rF  r  )r        ?      ?r   rH  rG  r  )r  r        ?r   r   rI  r  r  )	      ?      ?     ?     @?r   rM  rL  rK  rJ  )
      p?      ?      ?     @?r   r   rQ  rP  rO  rN  )      `?      ?      ?      ?      ?r   rV  rU  rT  rS  rR  r   r   c                    s   g | ]}t | d qS )r-   )r@   rD  )r  r  r  rG   rH   r  r  r  z#test_binomtest2.<locals>.<listcomp>r`   rQ   )r   r   )rC  rB  rG   rW  rH   test_binomtest2]  s    rX  c                  C   s   dd t ddD } t| tt| t tg d}tg d}dd t ddD }dd t ddD }t||d	d
 t||d	d
 d S )Nc              	   S   s2   g | ]*}t d dD ]}t||| d| qqS )r$   r   r   r   r@   rD  r  r  r  rG   rG   rH   r  y  s   z#test_binomtest3.<locals>.<listcomp>r   r   )Zr-   grq?g     ?glq?gx0f#?g%d)MO?g   	o?g6?g:X@?r  gsw?g    ?gR'jMV?gEf?gF5a?gAQU?g'W?gk?rH  g
ņB?g  ?g$?g{dU'?gD:B?gwV?gR0Nf?gOq?rM  g[k^?g T+?gO?gggh(?gP-@?gOQ?g}^?gV7_i?rV  ge$?gр?g#>?g5z@?g:?gf?gzP?g  ?     ?gg*),?g}A_?g}aA?gH]@_?g
y7s?gPG?g>)\R?gjc6?K?go; ,?g!O0?g?g}e?g5?g?!A^?gN/#?g*?    @?g?g?g3?g.1?gdT\1-?gt0W59?goQC?gX4J?   ?g
?gf?C"?g\6I?g4b?g|$or?gWNS~?gT?gXnc?   \?gY\?gp ^a?gX-K?g#c?g
3?g75Q?gMJ[?gP8R?)Zr-   gw	%?g     ?gS g?gv^?g*uCi?g  a?g]?gE9Q?r  g/?g     ?g	x&~?g#?g5B?g	A'9?gpZ?gWV$u?rH  gqIb?g  @N?g1Y?g5?gO?gc-?gk?g )?rM  glMV?g?$?gT*r?gCqRv?grx?gωZ?gExY?g<T ?rV  gJ9Ͻd?g `Ԗt?gT?gEz?gQ?g7C<*?g<?g~ K?r[  g8?g~ȍEt?g⿒?g<v?gHE:?g8Z$?gbº5?gvC?r\  g`Yw?gA?$??gE=?g4?g3?g{G9?gp?gH ?r]  gz6f?g¯F?g(+?g	$V?gq^ws?g!?gXNJ?gK?r^  g4P?g<q?gdV;?gy?g$w?gU<vO?gMX?g	șz*?r_  giqSp?gMM?g0V$)?g]
yi/Q?gl?gl?g3Ȇ?gѾ_c?c              	   S   s6   g | ].}t d dD ]}t|d || d| qqS r$   r   r   r   rY  rZ  rG   rG   rH   r    s   c              	   S   s6   g | ].}t d dD ]}t|d || d| qqS r`  rY  rZ  rG   rG   rH   r    s   r  rQ   )r   r   rV   r  r  r  r   r   )r]  Zbinom_testm1Zbinom_testp1Zres4_p1Zres4_m1rG   rG   rH   test_binomtest3v  s    	(ra  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTrimc                 C   s   t d}tt t|dt d tt t|dt d tt tj|dddt dd tt tj|d	ddt d
d tt|dg  ttj|dddg  ttg dg  ttjg d	ddg  ttg dg  d S )Nr   r   r`   r  r+   left)tailr$   tE]t?r%   r   r   )rV   r   r   sortr@   Ztrim1rV  rG   rG   rH   
test_trim1  s    


zTestTrim.test_trim1c              	   C   s  t d}tt t|dt dd tt t|dt g d tt tt ddd	dt d	d
d	d	 tt tt dd	djdt g dg dg t	t
tjt dd	djd ttg dg  ttg dg  ttg dg  d S )Nr   re  r%   r*   r  )r$   r%   r&   r'   r(   r)   r*   r  r(   r&   r   r   )r$   r*   r  r   )r%   r+   r   r   r   r   )rV   r   r   rf  r@   Ztrimbothr   rU   r	  rm   rn   rV  rG   rG   rH   test_trimboth  s&    
  zTestTrim.test_trimbothc           
      C   s  t g d}t g d}t ddd|d d f }t djdddd|d d f }tt|dt g d	 tt|dt g d
 t g d}t ddd|d d f }tt|dt g d g d}tt|dd ttg ddd t jd t jj	ddd}dD ]4}tj|d|d}tt 
||d}	t||	 q,tj|dd d}t| d}	t||	 tttj|d ttg dt j ttg dt j d S )N)r&   r*   r$   r   r+   r'   r`   r   r)   r%   r(   )r%   r'   r   r   r$   r&   r  r(   r&   F)orderr   )r/   r5   g      -@g     4@r  )r   r   r%   r$   )rt   rc   rL  r  r  g      ,@)r)   r   r  r   r   r(   r~  r   r'   r   r  r`   r  r+   r  r   rq  r   r$   r  r&   r  r*   r%   g      '@)r'   r&   r%   r   r$   r   r/   r:  r   )r'   r(   r&   r)   r  )r   r   r$   r%   rv   rO   r  rh   )rV   r   r   rU   r   r@   Z	trim_meanr  r  rp  r&  r  rm   rn   rZ   )
rC   r   idxr4  r5  Zidx4Za4rP   rB  rC  rG   rG   rH   test_trim_mean  s<    "
zTestTrim.test_trim_meanN)rz   r{   r|   rg  rh  rl  rG   rG   rG   rH   rb    s   rb  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSigmaClipc                 C   s   t t dddt dddf}d}t|\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|j|j d S )NrO        %@   r   r   r'   r&   rV   r  r  r@   	sigmaclipr   minmaxr   r  r]   rx   rC   r   factr  ZlowZupprG   rG   rH   test_sigmaclip1   s    "zTestSigmaClip.test_sigmaclip1c                 C   s   t t dddt dddf}d}t|||\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|jd t|jd	 d S )
NrO  rn  ro  r   r   r'   r.   r&   $   rp  rt  rG   rG   rH   test_sigmaclip2*  s    "zTestSigmaClip.test_sigmaclip2c                 C   s   t t dddt dddf}d}t|||\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|t ddd d S )NrO  rn  r   r%   ?)rV   r  r  r@   rq  r   rr  rs  r   r  r]   rt  rG   rG   rH   test_sigmaclip35  s    zTestSigmaClip.test_sigmaclip3c                 C   sF   t t dddt dddf}d}t|||}d}t|| d S )	NrO  rn  r   ry  rz  r%   r{  )Zclippedr#  r$  )rV   r  r  r@   rq  r   )rC   r   ru  r   r<  rG   rG   rH    test_sigmaclip_result_attributes@  s    z.TestSigmaClip.test_sigmaclip_result_attributesc                 C   s"   t d}tt|d | d S )Nr`   r   )rV   r  r   r@   rq  r  rG   rG   rH   test_std_zeroH  s    
zTestSigmaClip.test_std_zeroN)rz   r{   r|   rv  rx  r|  r}  r~  rG   rG   rG   rH   rm    s
   
rm  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 )TestAlexanderGovernc           
      C   s   g dg dg dg dg}t j|t jd}t j|t jd}t j|t jd}t j|t jd}tj| }tj| }tj| }tj| }	|j|j  kr|j  kr|	jksn J |j	|j	  kr|j	  kr|	j	ksn J d S )N)	r  r  r  r  r  r  r  r  r  )	r  r  r  r  r  r  r  r   r   )	r  r  r  r  r  r  r  r  r  )	r   r  r  r  r  r  r  r  r   rM   )
rV   r   r  r\  uint8r   r@   alexandergovernr   rf  )
rC   rE  Z
args_int16Z
args_int32Z
args_uint8Zargs_float64Z	res_int16Z	res_int32Z	res_unit8Zres_float64rG   rG   rH   test_compare_dtypesO  s.    



z'TestAlexanderGovern.test_compare_dtypesc                 C   sH  t tdd  tddgg  W d    n1 s20    Y  t tdd  tddgd W d    n1 sn0    Y  t tdd" tddgdg W d    n1 s0    Y  t tdd( tddgtjtjg W d    n1 s0    Y  t tdd, tddgddgddgg W d    n1 s:0    Y  d S )	Nz+Input sample size must be greater than one.rk   r   r$   zInput samples must be finite.z%Input samples must be one-dimensionalr%   r&   )rm   rn   r@   r  rV   r   r   rG   rG   rH   test_bad_inputsc  s    ..06z#TestAlexanderGovern.test_bad_inputsc                 C   sB   g d}g d}g d}t |||}t|jd t|jd dS )a  
        Data generated in R with
        > set.seed(1)
        > library("onewaytests")
        > library("tibble")
        > y <- c(rnorm(40, sd=10),
        +        rnorm(30, sd=15),
        +        rnorm(20, sd=20))
        > x <- c(rep("one", times=40),
        +        rep("two", times=30),
        +        rep("eight", times=20))
        > x <- factor(x)
        > ag.test(y ~ x, tibble(y,x))

        Alexander-Govern Test (alpha = 0.05)
        -------------------------------------------------------------
        data : y and x

        statistic  : 1.359941
        parameter  : 2
        p.value    : 0.5066321

        Result     : Difference is not statistically significant.
        -------------------------------------------------------------
        Example adapted from:
        https://eval-serv2.metpsy.uni-jena.de/wiki-metheval-hp/index.php/R_FUN_Alexander-Govern

        )(g5gb?gl"k g^s/@gQ\
@gRh gIF@gpZ>q@g7D @g-ѪZng(Q<.@gON/@g	Ogҷ%6gs&@gw)ܿg789Ŀgzp"@gzl @g57@g>m@*a"@g,ZbI@gX9
]?g3g1@gg"Jbgy:@j-g2A g;@gL97vp,+@gp/rg"@gfT|7g^v+g٘Yg0/gglA! &@go@)g!_5*gqTEgg1$@g	a, @gˤ$g9%gZ@gT6U'@gS g6aGn*@gO@g\\"g^4w@g0gr~5@gDP=@gٿԙg:4R/gOx]r!@gU4 gta)B@g,Gg2$@gD%?gI,VL&g@gч
;g5@gWJc@gYjK@@)gj7#@g<e,g}m(@gr2g#^9gr/P@g:RO!g'9?g6F
?gcʱ'gt*&gg~*0Ώ7@gWzx>gIK'@g?Ң@g7C5@g;C>ϯUg7@g)n}.^@gFQ?gsdlT6?Nr@   r  r   rf  r   )rC   ZoneZtwoZeightsolnrG   rG   rH   test_compare_rx  s    z"TestAlexanderGovern.test_compare_rc                 C   sb   g d}g d}g d}t |||}t|jddd t|jddd t|jd	 t|jd
 dS )z
        Data taken from 'The Modification and Evaluation of the
        Alexander-Govern Test in Terms of Power' by Kingsley Ochuko, T.,
        Abdullah, S., Binti Zain, Z., & Soaad Syed Yahaya, S. (2015).
        )g{G&~@g(\E~@g=
ףp~@gfffff~@gp=
~@gףp=
k@gR@gQ2@g8@g`@g)\`@g=
ףp@g(\#@g@g=
ףpE@gQ@g
ףp=@gףp=
Մ@g33333#@)g=
ףpt@g{G&u@gq=
ףv@gQDy@g     X{@g\(P}@g]~@gt~@gzG~@g)\~@g1@gzG@)gGz8@g     @gp=
ב@g
ףp=@gGzԀ@gq=
ףր@gRi@g{Gt@gw@g=
ףp@gQS@gQ@g(\©@gQ-@gQ@g]FxK@MbP?r   g R8߱?r/  g.UikL@g&Zݱ?Nr  )rC   ZyoungZmiddleoldr  rG   rG   rH   test_compare_scholar  s     z(TestAlexanderGovern.test_compare_scholarc                 C   sX   g d}g d}t ||}t|jddd t|jddd t|jd t|jd d	S )
aA  
        Data taken from 'Robustness And Comparative Power Of WelchAspin,
        Alexander-Govern And Yuen Tests Under Non-Normality And Variance
        Heteroscedasticity', by Ayed A. Almoied. 2017. Page 34-37.
        https://digitalcommons.wayne.edu/cgi/viewcontent.cgi?article=2775&context=oa_dissertations
        )gQhgMOgY9gnSgdȿg}"Ogиp $?g8~4?g
p?gZ?g)J=?gX?gpG?gᛦ?gg?gh8en?g?guwg?gbX?g9SI?)gN]g	cZgAJigMg'gk,	Pg<gΈ׿g%zrKտg0BxҿgPNg:ǀgvꭁg?k~?gI\߇?gi?g<)?g0Xr?g
F%u?gsFZ*o?g7n:?g[z4?r$  r   gOZ}?g9$?g6MDd}?Nr  )rC   r@  rA  r  rG   rG   rH   test_compare_scholar3  s    z)TestAlexanderGovern.test_compare_scholar3c                 C   s<   g ddt jgg}tj| }t|jt j t|jt j d S )Nr   r   rV   rZ   r@   r  r   r   rf  )rC   rE  r   rG   rG   rH   test_nan_policy_propogate  s    
z-TestAlexanderGovern.test_nan_policy_propogatec                 C   sR   g ddt jgg}ttdd  tj|ddi W d    n1 sD0    Y  d S )Nr   r   r  rk   rg   ri   )rV   rZ   rm   rn   r@   r  rC   rE  rG   rG   rH   test_nan_policy_raise%  s    z)TestAlexanderGovern.test_nan_policy_raisec                 C   s`   g ddt jddgg}g dg dg}tj|ddi}tj| }t|j|j t|j|j d S )	N)r   r$   r%   Nr&   r   r  r   r   )r   r  r   rg   re   r  )rC   Zargs_nanZargs_no_nanZres_nanZ
res_no_nanrG   rG   rH   test_nan_policy_omit*  s    
z(TestAlexanderGovern.test_nan_policy_omitc                 C   s\   t t@ tg dg d}t|jtj t|jtj W d    n1 sN0    Y  d S r   )	r   r!   r@   r  r   rf  rV   rZ   r   r  rG   rG   rH   r   2  s    

z'TestAlexanderGovern.test_constant_inputN)rz   r{   r|   r  r  r  r  r  r  r  r  r   rG   rG   rG   rH   r  N  s   B22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e	j
deg deg dejdffeg deg dejejffgdd Ze	j
dg ddd Zdd Zdd Zdd Zdd Ze	j
dd g d!fgd"d# Zd$d% Zd&d' Zd(S ))TestFOneWayc                 C   s0   t ddgddg\}}t|d t|d d S )Nr   r$   rh   r   r@   f_onewayr   rC   ri  r   rG   rG   rH   test_trivial=  s    
zTestFOneWay.test_trivialc                 C   s>   t ddgddg\}}t|d t|dtd dd d S )	Nr   r$   r&   r   r   r-   r  rX  )r@   r  r   r   rV   rw   r  rG   rG   rH   r   C  s    
zTestFOneWay.test_basicc                 C   s2   t dgdgg d\}}t|d t|d d S )Nr$   r"  r  r  r  r  rG   rG   rH   test_known_exactJ  s    
zTestFOneWay.test_known_exactc                 C   sJ   t jddgt jd}t jddgt jd}t||\}}t|ddd d S )	N    rM       gŸ?r  rX  )rV   r   uint16r@   r  r   )rC   r   r   ri  r   rG   rG   rH   test_large_integer_arrayT  s    z$TestFOneWay.test_large_integer_arrayc                 C   sF   t jddgt jd}t jddgt jd}t||}d}t|| d S )Nr  r  rM   r  r  re  )rV   r   r  r@   r  r   )rC   r   r   r   r<  rG   rG   rH   test_result_attributes\  s
    z"TestFOneWay.test_result_attributesc              	      s
  g d}|D ]}d}t jt jt jtd|}t|d}| d}W d    n1 sb0    Y  dd |dd	 D }t	j
|d
d}|j\ tt	}	t|d d } fdd|	D }
tj|
 }d}||v rd}t|d ||d| d qd S )N)z
SiRstv.datz
SmLs01.datz
SmLs02.datz
SmLs03.datzAtmWtAg.datz
SmLs04.datz
SmLs05.datz
SmLs06.dat
SmLs07.dat
SmLs08.dat
SmLs09.datr   zdata/nist_anovar   
c                 S   s   g | ]}|  r| qS rG   )stripsplit)r  linerG   rG   rH   r  p  s   z)TestFOneWay.test_nist.<locals>.<listcomp>r  r  r+  )Zskiprowsr   rv   c                    s   g | ]} |k qS rG   rG   r  r  rG   rH   r  x  r  )r  r  r  r/  zFailing testcase: %s)r   rC  )ospathabspathjoindirname__file__openreadr  rV   Zloadtxtr	  r[  r  r  rJ  r@   r  r   )rC   	filenamesZ	test_caser   fnamefZcontentZ	certifiedZdatafZcatyZxlistr   Zhard_tcrG   r  rH   	test_nistc  s,    ,



zTestFOneWay.test_nistza, b, expected)r  r  r  )r)   r)   r)   r   c                 C   sN   t tj0 t||\}}|s,J ||kW d    n1 s@0    Y  d S r  )r   r@   F_onewayConstantInputWarningr  )rC   r   r   r^  r  r   rG   rG   rH   r     s    zTestFOneWay.test_constant_inputrP   )r  rv   r   r   c                 C   s  t g dg dg dg dg dg}t g dg dg dg dg d	g d
g dg dg}t g dg dg dg dg}|dv r|j}|j}|j}d}nd}ttj& tj||||d\}}W d    n1 s0    Y  dD ]X}tt |||t |||t |||\}	}
t|| |	dd t|| |
dd qdD ]~}ttj\ tt |||t |||t |||\}	}
t	|| |	 t	|| |
 W d    n1 s0    Y  qJd S )N)r   r&   r%   r%   )r$   r'   r%   r%   )r%   r(   r%   r%   )r$   r%   r%   r%   )r%   r   r'   r%   )r&   r(   r'   r%   )r&   r%   r'   r%   )r   r'   r'   r%   )r'   r'   r'   r%   )r$   r%   r'   r%   )r*   r$   r'   r%   )r$   r$   r'   r%   )r&   r%   r&   r%   )r&   r$   r&   r%   )r'   r&   r&   r%   )rv   r   r   r   rO   r  r  rX  r  )
rV   r   r	  r   r@   r  r  Ztaker   r   )rC   rP   r   r   r  Z	take_axisr  r   r  ZfjZpjrG   rG   rH   test_2d_inputs  sV    


4zTestFOneWay.test_2d_inputsc           
   
   C   s  dt ddddd }dt dddd	d }t dt dd
ddd }tj|||dd\}}|jdksxJ |jdksJ t|jd D ]x}t|jd D ]d}t||d d |f ||d d |f ||d d |f \}}	t||||f  t|	|||f  qqd S )Nr   r      r&   r'   r)   r$      r*   q   rO   )r&   r)   r   )	rV   r   rU   cosr@   r  r  r   r   )
rC   r   r   r  r  r   r  r  ZfijZpijrG   rG   rH   test_3d_inputs  s     <zTestFOneWay.test_3d_inputsc                 C   sV   t tj8 tg dg g d}t|tjtjf W d    n1 sH0    Y  d S )Nr   rM  r   r@   F_onewayBadInputSizesWarningr  r   rV   rZ   r  rG   rG   rH   test_length0_1d_error  s    z!TestFOneWay.test_length0_1d_errorc                 C   s   t tjv d}td|f}td|f}td|f}t|||\}}tj|ftjd}t|| t|| W d    n1 s0    Y  d S )Nr%   r&   r   r'   r  )	r   r@   r  rV   r  r  rW   rZ   r   )rC   Zncolsr   r   r  r  r   ZnansrG   rG   rH   test_length0_2d_error  s    
z!TestFOneWay.test_length0_2d_errorc                 C   sX   t tj: tdgdgdgdg}t|tjtjf W d    n1 sJ0    Y  d S )Nr`   r   r  r  r  r  rG   rG   rH   test_all_length_one  s    zTestFOneWay.test_all_length_onerE  rG   r   c                 C   s6   t t tj|  W d    n1 s(0    Y  d S r  )rm   r  r@   r  r  rG   rG   rH   test_too_few_inputs  s    
zTestFOneWay.test_too_few_inputsc                 C   sR   t d}t d}tt j  tj||dd W d    n1 sD0    Y  d S )NrH  r'   r&   r$   rO   )rV   r  rm   r'  r@   r  rC   r   r   rG   rG   rH   test_axis_error  s    

zTestFOneWay.test_axis_errorc                 C   sP   t d}t d}tt  tj||dd W d    n1 sB0    Y  d S )NrH  r  r   rO   )rV   r  rm   rn   r@   r  r  rG   rG   rH   test_bad_shapes  s    


zTestFOneWay.test_bad_shapesN)rz   r{   r|   r  r   r  r  r  r  r   r   r  rV   r   r   rZ   r   r  r  r  r  r  r  r  r  rG   rG   rG   rH   r  ;  s*   
 "$

.
r  c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestKruskalc                 C   s|   dg}dg}t ||\}}t|d t|t jj|d t t|t|\}}t|d t|t jj|d d S )Nr   r$   r   )	r@   kruskalr   r
   r  r  r  rV   r   rC   ro   rD   hr   rG   rG   rH   test_simple  s    

zTestKruskal.test_simplec                 C   s   g d}g d}t ||\}}t|ddd t|t jjdd t t|t|\}}t|ddd t|t jjdd d S )Nrs   r$   r&   r(   r*   r`   re  r`   r:   r   )r@   r  r
   r  r  r  rV   r   r  rG   rG   rH   r      s    zTestKruskal.test_basicc                 C   s<   dg}ddg}d}d}|| }t ||\}}t|| d S )Nr   r$   rF  rN  )r@   r  r   rC   ro   rD   h_uncorrr$  r^  r  r   rG   rG   rH   test_simple_tie
  s    zTestKruskal.test_simple_tiec                 C   sJ   g d}g d}d}dt dd  }|| }t||\}}t|| d S )N)r   r   r   r$   )r$   r$   r$   r$   r   r        )rJ  r@   r  r
   r  rG   rG   rH   test_another_tie  s    zTestKruskal.test_another_tiec           	      C   sj   g d}g d}ddg}d}dt dd  }|| }t|||\}}t|| t|tjj|d d S )NrP  ry  r$   r9   r   r  r  )rJ  r@   r  r
   r  r  r  )	rC   ro   rD   r  r  r$  r^  r  r   rG   rG   rH   test_three_groups  s    
zTestKruskal.test_three_groupsc                 C   s4   g d}g d}g }t t|||tjtjf d S )NrP  ry  )r   r@   r  rV   rZ   r  rG   rG   rH   rW  *  s    zTestKruskal.test_emptyc                 C   sX   dg}dg}t jdd}ttdd t||| W d    n1 sJ0    Y  d S )Nr   r$   z Samples must be one-dimensional.rk   )rV   r  r  rm   rn   r@   r  r  rG   rG   rH   test_nd_arrays1  s    zTestKruskal.test_nd_arraysc                 C   s.   g d}g d}t ||}d}t|| d S )Nrs   r  re  )r@   r  r   )rC   ro   rD   r   r<  rG   rG   rH   test_kruskal_result_attributes:  s
    z*TestKruskal.test_kruskal_result_attributesc                 C   sp   t d}t j|d< tt||t jt jf ttj||ddd tttj||dd tttj||dd d S )Nrc   r+   re   rf   r   ri   rj   )	rV   r   rZ   r   r@   r  r   rm   rn   r  rG   rG   rH   r  A  s    

zTestKruskal.test_nan_policyc                 C   sB   d}t j|}t j|d }t||\}}d}t|| d S )Nr  r  r   )rV   r  r  r@   r  r
   )rC   r#  ro   rD   r  r   r^  rG   rG   rH   test_large_no_samplesI  s    z!TestKruskal.test_large_no_samplesN)rz   r{   r|   r  r   r  r  r  rW  r  r  r  r  rG   rG   rG   rH   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 )TestCombinePvaluesc                 C   s(   t jg ddd\}}t|ddd d S )Nr  r  r   rZ  r  gf?r&   r:   r@   combine_pvaluesr
   )rC   Zxsqr   rG   rG   rH   test_fisherU  s    zTestCombinePvalues.test_fisherc                 C   s(   t jg ddd\}}t|ddd d S )Nr  stoufferr  S:X?r&   r:   r  rC   Zr   rG   rG   rH   test_stoufferZ  s    z TestCombinePvalues.test_stoufferc                 C   s(   t jg ddd\}}t|ddd d S )N)r-   r-   r-   r  r  r-   r&   r:   r  r  rG   rG   rH   test_stouffer2^  s    z!TestCombinePvalues.test_stouffer2c                 C   s0   t jg ddtdd\}}t|ddd d S )Nr  r  r%   r  r  r  r&   r:   )r@   r  rV   r  r
   r  rG   rG   rH   test_weighted_stoufferb  s    
z)TestCombinePvalues.test_weighted_stoufferc                 C   s0   t jg ddtdd\}}t|ddd d S )Nr  r  )r   r&   r+   r  g46<?r&   r:   )r@   r  rV   r   r
   r  rG   rG   rH   test_weighted_stouffer2g  s    
z*TestCombinePvalues.test_weighted_stouffer2c                 C   s(   t jg ddd\}}t|ddd d S )Nr  r  r  g&J?r&   r:   r  r  rG   rG   rH   test_pearsonl  s    zTestCombinePvalues.test_pearsonc                 C   s(   t jg ddd\}}t|ddd d S )Nr  Ztippettr  g
}?r&   r:   r  r  rG   rG   rH   test_tippettp  s    zTestCombinePvalues.test_tippettc                 C   s(   t jg ddd\}}t|ddd d S )N)r   r   r   mudholkar_georger  g&?r&   r:   r  r  rG   rG   rH   test_mudholkar_georget  s    z(TestCombinePvalues.test_mudholkar_georgec                 C   s\   t jg ddd\}}t jg ddd\}}t jg ddd\}}td||  |dd d S )	Nr  r  r  rZ  r  r-   r&   r:   r  )rC   r  r   ZZ_fZp_fZZ_pZp_prG   rG   rH   0test_mudholkar_george_equal_fisher_minus_pearsonx  s    zCTestCombinePvalues.test_mudholkar_george_equal_fisher_minus_pearsonN)rz   r{   r|   r  r  r  r  r  r  r  r  r  rG   rG   rG   rH   r  S  s   r  c                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )TestCdfDistanceValidationzg
    Test that _cdf_distance() (via wasserstein_distance()) raises ValueErrors
    for bad inputs.
    c                 C   s<   t ttjdgdgdgddg t ttjdgdgddg d S )Nr   r$   r&   r%   r   rm   rn   r@   wasserstein_distancer   rG   rG   rH   &test_distinct_value_and_weight_lengths  s    z@TestCdfDistanceValidation.test_distinct_value_and_weight_lengthsc                 C   s@   t ttjddgdgddg t ttjddgdgddgdg d S )Nr   r   r$   r%   r  r   rG   rG   rH   test_zero_weight  s    z*TestCdfDistanceValidation.test_zero_weightc                 C   s(   t ttjddgddgddgddg d S )Nr   r   r$   r%   rv   r  r   rG   rG   rH   test_negative_weights  s    z/TestCdfDistanceValidation.test_negative_weightsc                 C   s*   t ttjg ddg t ttjdgg  d S )Nr$   r   r  r   rG   rG   rH   test_empty_distribution  s    z1TestCdfDistanceValidation.test_empty_distributionc                 C   s,   t ttjg dddgdtjdgddg d S )Nr   r   )rm   rn   r@   r  rV   r   r   rG   rG   rH   test_inf_weight  s    z)TestCdfDistanceValidation.test_inf_weightN)	rz   r{   r|   r   r  r  r  r  r  rG   rG   rG   rH   r    s   r  c                   @   sH   e Zd 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 )TestWassersteinDistancez5 Tests for wasserstein_distance() output values.
    c                 C   s   t tddgdgddgdgd t tddgdgddgdgd t tddgdgddgdgd t tg dg dd d S )	Nr   r   r-   r%   r  r$   r  r   r   r@   r  r   rG   rG   rH   r    s&    z#TestWassersteinDistance.test_simplec                 C   sD   t tg dg dd t tg dddgg dddgd d S 	Nr   r$   r   r%   r   )r   r   r   r&   r&   r   r  r%   )r   r@   r  r   rG   rG   rH   test_same_distribution  s    z.TestWassersteinDistance.test_same_distributionc                 C   sp   t tdgdgd t tdgdgd t tg dg dd t tg dg d	g d
g dd d S )Nr   r   r1  r'   r`   ra  )r   r  r  r  r   )r1   g@r  )r  r)   rP  )r%   r   r   )r   r%   r   r/   r  r   rG   rG   rH   
test_shift  s    z"TestWassersteinDistance.test_shiftc              	   C   sF   t tg dg dg dg dtg dg dg dg d d S N)r   r   r   r   r   r   r'   )r   r%   r%   r%   r%   r&   r&   )r   r   r   r   r   r   r   )r'   r   r   )r   r&   r%   r   r$   r&   r  r   rG   rG   rH   test_combine_weights  s    z,TestWassersteinDistance.test_combine_weightsc                 C   s|   t ddd}t |}tt||t t | t t|}|d d d }tt||||t j	t ||d d S )Nr  r  r   rv   )r  )
rV   r   Z
zeros_liker   r@   r  r  r$  r  Zaverage)rC   r  r  Z	u_weightsZ	v_weightsrG   rG   rH   test_collapse  s    

z%TestWassersteinDistance.test_collapsec              	   C   sF   t tg dddgg dddgtddgddgddgddg d S N)r   r$   r  r   )r   r   r   r$   r  r   rG   rG   rH   r    s    z(TestWassersteinDistance.test_zero_weightc                 C   s   t tddtjgddgtj t tddtjgtj dgtj t tdtj tjgddgtj t >}|td t tddtjgtjdgtj W d    n1 s0    Y  d S Nr   r$   rd   )	r   r@   r  rV   r   r   rX   rY   rZ   r  rG   rG   rH   test_inf_values  s$    z'TestWassersteinDistance.test_inf_valuesN)rz   r{   r|   r   r  r  r  r  r  r  r  rG   rG   rG   rH   r    s   	
r  c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )TestEnergyDistancez0 Tests for energy_distance() output values.
    c                 C   s   t tddgdgddgdgtdd  t tddgdgddgdgtdd  t tddgdgddgdgd t tg dg d	tdd
  d S )Nr   r   r$   r-   r%   r  r   r  r   g3Ey?r   r@   energy_distancerV   rw   r   rG   rG   rH   r    s$    zTestEnergyDistance.test_simplec                 C   sD   t tg dg dd t tg dddgg dddgd d S r  )r   r@   r  r   rG   rG   rH   r    s
    z)TestEnergyDistance.test_same_distributionc                 C   s@   t tdgdgtd t tdgdgtdd  d S )Nr   r   r$   r1  r'   gS[:XL	@r  r   rG   rG   rH   r    s
    zTestEnergyDistance.test_shiftc              	   C   sF   t tg dg dg dg dtg dg dg dg d d S r  r   r@   r  r   rG   rG   rH   r  '  s    z'TestEnergyDistance.test_combine_weightsc              	   C   sF   t tg dddgg dddgtddgddgddgddg d S r  r  r   rG   rG   rH   r  /  s    z#TestEnergyDistance.test_zero_weightc                 C   s   t tddtjgddgtj t tddtjgtj dgtj t tdtj tjgddgtj t >}|td t tddtjgtjdgtj W d    n1 s0    Y  d S r  )	r   r@   r  rV   r   r   rX   rY   rZ   r  rG   rG   rH   r  5  s     z"TestEnergyDistance.test_inf_valuesN)
rz   r{   r|   r   r  r  r  r  r  r  rG   rG   rG   rH   r    s   r  c                   @   sp   e Zd Zg dZg d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S )TestBrunnerMunzel)r   r$   r   r   r   r   r   r   r   r   r$   r&   r   r   r%   r%   r&   r%   r   r$   r%   r   r   r'   r&   r  c           	      C   s   t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t||| jd t||| jd t||k t|d| jd t|d| jd t|d| jd t|d| jd t|d| jd t|d| jd d S )	Nr   r   r   r:   |	&	@|	&	gҏGg?g@-pL?)r@   brunnermunzelrA   r  r
   r;   r   r  rG   rG   rH   test_brunnermunzel_one_sidedL  s2    z.TestBrunnerMunzel.test_brunnermunzel_one_sidedc                 C   st   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr  r   r:   r  r    ҏGw?r@   r  rA   r  r
   r;   r  rG   rG   rH   test_brunnermunzel_two_sidedc  s    z.TestBrunnerMunzel.test_brunnermunzel_two_sidedc                 C   sl   t | j| j\}}t | j| j\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr:   r  r   r  r  r  rG   rG   rH   test_brunnermunzel_defaultp  s    z,TestBrunnerMunzel.test_brunnermunzel_defaultc                 C   s6   d}d}d}t |dv tttj| j| j||| d S )Nry  rw  r  )r  r   r   r   rm   rn   r@   r  rA   r  rC   r   distributionrg   rG   rG   rH   $test_brunnermunzel_alternative_error}  s    z6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc                 C   st   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nrl  )r	  r:   r  r   g "H[?r  r  rG   rG   rH   $test_brunnermunzel_distribution_norm  s    z6TestBrunnerMunzel.test_brunnermunzel_distribution_normc                 C   s6   d}d}d}t |dv tttj| j| j||| d S )Nr  ry  r  )rw  rl  r  r  rG   rG   rH   %test_brunnermunzel_distribution_error  s    z7TestBrunnerMunzel.test_brunnermunzel_distribution_errorc                 C   s   t | jg \}}t g | j\}}t g g \}}t|tj t|tj t|tj t|tj t|tj t|tj d S r  )r@   r  rA   r  r   rV   rZ   )rC   r  r  r  r  r  r  rG   rG   rH   test_brunnermunzel_empty_imput  s    z0TestBrunnerMunzel.test_brunnermunzel_empty_imputc                 C   s   ddddddddddddddt jg}g d}tj||dd\}}tj||dd\}}t|t j t|t j t|t j t|t j d S )Nr   r$   r&   r  r  rf   )rV   rZ   r@   r  r   rC   rA   r  r  r  r  r  rG   rG   rH   &test_brunnermunzel_nan_input_propagate  s    $z8TestBrunnerMunzel.test_brunnermunzel_nan_input_propagatec                 C   sh   ddddddddddddddt jg}g d}d}d}d}tttj||||| tttj||||| d S )Nr   r$   r&   r  r  rw  ri   )rV   rZ   rm   rn   r@   r  )rC   rA   r  r   r	  rg   rG   rG   rH   "test_brunnermunzel_nan_input_raise  s*    $z4TestBrunnerMunzel.test_brunnermunzel_nan_input_raisec                 C   s   ddddddddddddddt jg}g d}tj||dd\}}tj||dd\}}t||| jd t|d| jd t|d	| jd t|d
| jd d S )Nr   r$   r&   r  re   rf   r:   r  r   r  )rV   rZ   r@   r  r
   r;   r  rG   rG   rH   !test_brunnermunzel_nan_input_omit  s    $z3TestBrunnerMunzel.test_brunnermunzel_nan_input_omitN)rz   r{   r|   rA   r  r;   r  r  r  r
  r  r  r  r  r  r  rG   rG   rG   rH   r  F  s   r  c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestRatioUniformsz# Tests for rvs_ratio_uniforms.
    c                 C   s   t jj}t|tdtd }t|d| |  }}}t j||||ddd}tt |dd dkd	 t jd
d dddtd ddd}tt |dd dkd	 d S )Nr$   r   i	  i90  r  ru  r   r  Tc                 S   s   t |  S r  )rV   r  r  rG   rG   rH   r    r  z6TestRatioUniforms.test_rv_generation.<locals>.<lambda>rv   r   )umaxvminvmaxrx   ri  Zexpon)	r@   ru  pdfrV   rw   rvs_ratio_uniformsr   r  r  )rC   r  v_boundr  r  r  rv  rG   rG   rH   test_rv_generation  s    z$TestRatioUniforms.test_rv_generationc                 C   sR  t jj}t|tdtd }t|d| |  }}}t j||||ddd}t j||||ddd}t j||||ddd}t|| t||  t|jd t|jd t j||||dd	d}	t j||||d
d	d}
t|	 |
 t|	jd t j||||dd}t j||||ddd}t j||||ddd}t|| t|| d S )Nr$   r   r%   r:  r  rQ  )r%   r   )r%   r%   r%   r     ri  r   r/  )	r@   ru  r  rV   rw   r  r   r  r  )rC   r  r  r  r  r  r  r  r1  Zr4Zr5Zr6Zr7r8rG   rG   rH   
test_shape  sB    

zTestRatioUniforms.test_shapec                 C   s   t jj}t|tdtd }t|d| |  }}}tjd t j||||dd}t j||||ddd}t|| d S )Nr$   r   r:  rH  r  r  )	r@   ru  r  rV   rw   r  r  r  r   )rC   r  r  r  r  r  r  r  rG   rG   rH   test_random_state  s    z#TestRatioUniforms.test_random_statec                 C   sd   t jj}ttt j|dddd ttt j|dddd ttt j|dddd ttt j|dddd d S )Nr   r%   )r  r  r  r  rv   r   )r@   ru  r  rm   rn   r  )rC   r  rG   rG   rH   test_exceptions  s    z!TestRatioUniforms.test_exceptionsN)rz   r{   r|   r   r  r  r  r  rG   rG   rG   rH   r    s
    
r  c                   @   sb   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	j
dddgdd Zdd Zdd ZdS )TestMGCErrorWarningsz1 Tests errors and warnings derived from MGC.
    c                 C   s8   t d}dgd }tttj|| tttj|| d S )Nr   r'   rV   r   rm   rn   r@   multiscale_graphcorrr   rG   rG   rH   test_error_notndarray-  s    

z*TestMGCErrorWarnings.test_error_notndarrayc                 C   s2   t ddd}|dd}tttj|| d S )Nr   r   r&   r`   )rV   r   rU   rm   rn   r@   r"  r   rG   rG   rH   test_error_shape4  s    z%TestMGCErrorWarnings.test_error_shapec                 C   s(   t d}t d}tttj|| d S )Nr%   r!  r   rG   rG   rH   test_error_lowsamples:  s    

z*TestMGCErrorWarnings.test_error_lowsamplesc                 C   sF   t jdtd}t j|d< tttj|| t d}tttj|| d S )Nr   rM   r   )rV   r   rJ  rZ   rm   rn   r@   r"  r   rG   rG   rH   test_error_nans@  s
    

z$TestMGCErrorWarnings.test_error_nansc                 C   s&   t d}d}tttj|||d d S )Nr   r   )compute_distancer!  )rC   ro   r'  rG   rG   rH   test_error_wrongdisttypeI  s
    
z-TestMGCErrorWarnings.test_error_wrongdisttyper  rv   1c                 C   s"   t d}tttj|||d d S )Nr   r  r!  )rC   r  ro   rG   rG   rH   test_error_repsP  s    
z$TestMGCErrorWarnings.test_error_repsc                 C   s&   t d}d}tttj|||d d S )Nr   r   r*  )rV   r   r   rY   r@   r"  )rC   ro   r  rG   rG   rH   test_warns_repsY  s    
z$TestMGCErrorWarnings.test_warns_repsc                 C   s.   t d}t dt j }tttj|| d S )Nr   )rV   r   r  r   rm   rn   r@   r"  r   rG   rG   rH   test_error_infty_  s    
z%TestMGCErrorWarnings.test_error_inftyN)rz   r{   r|   r   r#  r$  r%  r&  r(  r   r   r  r+  r,  r-  rG   rG   rG   rH   r   *  s   	
r   c                   @   s   e Zd ZdZdddZejjejdg dd	d
 Z	ejjejdddg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S )TestMGCStatz) Test validity of MGC test statistic
    r   r   rg  c                 C   st  |dkr<t jjdd|dfd}|dt jj|jdfd  }n|dkrt t jjdd|dfd}|t t j|  }|t t j|  d	t jj|jdfd  }n|d
kr.t jj	dd|dfd}t jj	dd|dfd}t jj
dd|dfd}	t jj
dd|dfd}
|d d|	  d }|d d|
  d }ntd|dkrlt jj	dd||d fd}t j||fdd}||fS )Nr  rv   r   r  r   	nonlinearr   r'   r  independencer-   )r   rx   r%   r$   z3sim_type must be linear, nonlinear, or independencerO   )rV   r  r  Zrandom_samplerx   r   r  pir  rl  binomialrn   r  )rC   sampsdimssim_typero   rD   Zunifr  r  Zu_2Zv_2Z
dims_noiserG   rG   rH   _simulationsi  s*    

zTestMGCStat._simulationszsim_type, obs_stat, obs_pvalue))r  r  r  )r/  w/?r  )r0  gUN@g(\?c           	      C   sR   t jd | jdd|d\}}t||\}}}t||dd t||dd d S )Nr  r   r   r3  r4  r5  r:   rV   r  r  r6  r@   r"  r
   	rC   r5  Zobs_statZ
obs_pvaluero   rD   r  r   r  rG   rG   rH   	test_oned  s
    zTestMGCStat.test_oned)r  gZd;O?r  )r/  g~jt?gʡE?c           	      C   sR   t jd | jdd|d\}}t||\}}}t||dd t||dd d S )Nr  r   r'   r8  r   r:   r9  r:  rG   rG   rH   
test_fived  s
    zTestMGCStat.test_fivedc                 C   s   t jd t jjdddd}t jjdddd}t||\}}}t|d	dd
 t|ddd
 t jjdddd}tj||dd\}}}t|d	dd
 t|ddd
 d S )Nr  r   r-   )r   r'   r  r   r   )r-  r'   r   r:   r  T)Z
is_twosamp)rV   r  r  r2  rl  r@   r"  r
   rC   ro   rD   r  r   r  rG   rG   rH   test_twosamp  s    zTestMGCStat.test_twosampc                 C   sV   t jd | jdddd\}}tj||dd\}}}t|ddd	 t|d
dd	 d S )Nr  r   r   r  r8  r$   )Zworkersr  r:   r  r9  r=  rG   rG   rH   test_workers  s
    zTestMGCStat.test_workersc                 C   sJ   | j dddd\}}tj||dd\}}}t|ddd t|ddd d S )	Nr   r   r  r8  r  r  r:   r  )r6  r@   r"  r
   r=  rG   rG   rH   r    s    zTestMGCStat.test_random_statec                 C   st   t jd | jdddd\}}t||dd}t||dd}tj||d dd\}}}t|d	dd
 t|ddd
 d S )Nr  r   r   r/  r8  Z	euclidean)Zmetric)r'  ri  r7  r:   r  )rV   r  r  r6  r   r@   r"  r
   )rC   ro   rD   ZdistxZdistyZ	stat_distZpvalue_distr  rG   rG   rH   test_dist_perm  s    zTestMGCStat.test_dist_permN)r   r   rg  )rz   r{   r|   r   r6  r   r   r   r  r;  r<  r>  r?  r  r@  rG   rG   rG   rH   r.  f  s&   
"


	r.  c                   @   s:  e Zd Zejdedd Zdd Zdde	j
dgZee	jdkrXee	j
d de fd	d
gZejdeejdedd Zee	jdkrdejjdddejjdddgZng Zde fddddgZde fde fdgZejdeejdeejdedd Zdd Zdd Zdd  ZdS )!TestNumericalInverseHermite)distnameshapesc              	   C   s"  h d}h d}||v r"t d ||v r4t d tjd tt|| }tj	 >}|
td |
td |
td t|}W d    n1 s0    Y  tjd	}tt|||| t|| }	tt|||| }
|	d
k sJ |
dk sJ d S )N>   ZksoneZlevy_stabler  Zkstwo>   r  ZgenhyperbolicZstudentized_rangeZnctZ
gausshyperZncfZgeninvgaussZnorminvgausszDistribution is too slowz)Fails - usually due to inaccurate CDF/PDFr   zoverflow encounteredzdivide by zerozinvalid value encounteredr`   g:0yE>r,   )r   skipZxfailrV   r  r  getattrr@   r   r   r[  rY   NumericalInverseHermiter  rs  r$  ppfr  )rC   rB  rC  Z
slow_distsZ
fail_distsdistr[   fniro   Zp_tolZu_tolrG   rG   rH   r     s$    

(0 z&TestNumericalInverseHermite.test_basicc                 C   s~  d}t jt|d td W d    n1 s20    Y  d}t jt|d" tjt dd W d    n1 sv0    Y  d}t jt|d" tjt dd	 W d    n1 s0    Y  d
}t jt|d* tt }|jdd W d    n1 s0    Y  ttj	dkrztt }d}t jt|d& |jdtj
dd W d    n1 sp0    Y  d S )Nz0`dist` must have methods `pdf`, `cdf`, and `ppf`rk   ru  z!could not convert string to floatekkiZtolz`max_intervals' must be...rv   )Zmax_intervalsz&`qmc_engine` must be an instance of...r   )
qmc_enginerI  6`d` must be consistent with dimension of `qmc_engine`.r%   r$   r  rL  )r   r   rn   r@   rF  ru  qrvsr   rV   rd  qmcHalton)rC   rl   rI  rG   rG   rH   r    s$    (00,z1TestNumericalInverseHermite.test_input_validationNr   rI  )r*   r  )r  r  r*  zsize_in, size_outc           
      C   sl   t  }t |}t|}|j||d}|j|ks6J |d urht|}|j|d}t j|}	t	||	 d S )Nr  r  )
r@   ru  rF  r   rv  r  r   r  rG  r   )
rC   r*  size_insize_outrH  rI  Zrng2rv  r  r  rG   rG   rH   test_RVS$  s    
z$TestNumericalInverseHermite.test_RVSr   r  r%   )r   r/  )r&   r  )r  r  )r  r  )r%   rQ  qrngzd_in, d_outc                 C   s  t  }t |}|d urr|d urr|j|krrd}tjt|d  |j|||d W d    n1 sd0    Y  d S |d u r|d ur|jdkr|jf}|| }	t|}
|j|||d}|j	|	ksJ |
d ur|

t|pd}t j||	}t||dd d S )NrM  rk   rN  r   rx   r  rL  r,   r   )r@   ru  rF  r  r   r   rn   rO  r   r  r  rV   prodrG  rU   r   )rC   rV  rR  rS  Zd_inZd_outrH  rI  rl   Zshape_expectedqrng2rO  r  qrvs2rG   rG   rH   	test_QRVS>  s"    
.z%TestNumericalInverseHermite.test_QRVSc                 C   s   t tjdkrtd t }t|}d}d}tjj	|dd}tjj	|dd}|
t|}|j|||d}tj|}	t|D ]4}
|d|
f }|	d d |
f |}t||d	d
 qd S )NrI  z$QMC doesn't play well with old NumPyrH  r'   r   rU  rW  .r,   r   )r   rV   rd  r   rD  r@   ru  rF  rP  rQ  r  rX  rO  rG  r   rU   r   )rC   rH  rI  rx   r  rV  rY  r  rO  rZ  r  ZsampleZsample2rG   rG   rH   test_QRVS_size_tuple[  s    


z0TestNumericalInverseHermite.test_QRVS_size_tuplec                 C   s^   d}d}t jt|d  ttj|  W d    n1 s<0    Y  tjtj| dd d S )N)gdsz@g@e?z.The interpolating spline could not be created.rk   r  rK  )r   r   rn   r@   rF  r  )rC   rC  rl   rG   rG   rH   test_inaccurate_CDFz  s
    .z/TestNumericalInverseHermite.test_inaccurate_CDFc                 C   sN   G dd d}| }t |}t  }t |}t|jdd|jdd d S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )zFTestNumericalInverseHermite.test_custom_distribution.<locals>.MyNormalc                 S   s(   dt dt j  t |d  d  S r   )rV   rw   r1  r  r  rG   rG   rH   r    s    zJTestNumericalInverseHermite.test_custom_distribution.<locals>.MyNormal.pdfc                 S   s
   t |S r  )r   Zndtrr  rG   rG   rH   r    s    zJTestNumericalInverseHermite.test_custom_distribution.<locals>.MyNormal.cdfc                 S   s
   t |S r  )r   Zndtrir  rG   rG   rH   rG    s    zJTestNumericalInverseHermite.test_custom_distribution.<locals>.MyNormal.ppfN)rz   r{   r|   r  r  rG  rG   rG   rG   rH   MyNormal  s   r^  r   r  )r@   rF  ru  r   rv  )rC   r^  Zdist1Zfni1Zdist2Zfni2rG   rG   rH   test_custom_distribution  s    

z4TestNumericalInverseHermite.test_custom_distribution)rz   r{   r|   r   r   r  r   r   r  rV   r  r%  Zrngsr   rd  r   re  ri  ZsizesrT  r@   rP  ZSobolrQ  ZqrngsZdsr[  r\  r]  r_  rG   rG   rG   rH   rA    s0   
$rA  c                    @   s  e Zd Zejd ejddZejddZdddd	efd
ddd	efdddd	g dg dg dgfddddg dg dg dgfddddg dg dg dg dg dg dg dg dg dg dg dg dg dg dgfddddg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d!g d!g d!g d!g d!g d!gfd"d#ddg d$g d$g d%gfd&d'ddg d(g d(g d(g d(g d(g d(g d)g d*g d*g d*g
fd+d,ddg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d!g d!g d!g d!g d!gfd-d.ddg d/g d/g d0g d1gfd2d3ddg dg dg dg dg dg dg dg dg dg d g d!gfgZ	e
jd4e	d5d6 Zd7d8ddg d9g d:gfd;d<ddg d9g d9g d9g d=g d>gfd?d@ddg dAg dAg dAg dAg dAg dAg dAg dAg dAg dBg dCg dCg dCg dCg dCgfgZe
jd4e	e
j dDdE ZdFdG ZdHdI ZdJdK ZdLS )MTestPageTrendTestr   r%   r   r`      i2  g:hў?Fr  i  gsH?i,0  gY@?)r  r  I   r  r  `   r  ;   r  rw  r  1   r  +   r  r  r   r   r  r   =   r   r-  r  r  )D   r  r+  "   r}  r   A   X   r   r  r  ro  ro  C   E   ^   r  r  r  W   r  rf  r  rc  rf  )r  r  U   r  O   r  \   V   r   @   r   rt  rh  r  r   Y   r  rf  rf  rw  6   r  B   rg  r!  i
  gXY?r  )r.   r   g @r'   r  r   )r'   r&   r0   r`   r   r   )r  r  r`   r  r  r   iL  gs˜?T)r&   r%   r$   r   )r%   r&   r   r$   r      gĞ?)r%   r$   r   r  r      g>K=?)r(   r'   r&   r%   r$   r   )r   r%   r&   r'   r$   r(   i  gqူ?)r'   r&   r%   r$   r   )r&   r   r%   r$   r'   ra     ga?i  g;?)r)   r(   r'   r&   r%   r$   r   )r(   r'   r)   r&   r%   r$   r   )r   r$   r%   r&   r'   r(   r)   u   g[^6?zL, p, ranked, method, datac                 C   sD   t jd tj|||d}t||j t||j t||j	 d S Nr  )rankedr  
rV   r  r  r@   page_trend_testr   rf  r   r   r  rC   Lr   r}  r  r  r   rG   rG   rH   test_accuracy  s
    zTestPageTrendTest.test_accuracyi  g-lpW?)
r`   r+   r*   r)   r(   r'   r&   r%   r$   r   )
r   r*   r&   r)   r(   r'   r+   r%   r$   r`   i*  gh[?)
r+   r$   r*   r)   r(   r'   r&   r%   r`   r   r}  i  g&]2?)r*   r)   r(   r'   r&   r%   r$   r   )r   r%   r'   r(   r&   r)   r$   r*   )r   r$   r%   r&   r'   r(   r)   r*   c                 C   sD   t jd tj|||d}t||j t||j t||j	 d S r|  r~  r  rG   rG   rH   test_accuracy2  s
    z TestPageTrendTest.test_accuracy2c                 C   s   t jd d\}}t d|d }t jt |}t j||}tj|dd}t|}tj|dd}tj|dd}	tj||d}
tj|d d |f || d}t	|j
|j
 t	|j
|	j
 t	|j
|
j
 t	|j
|j
 d S )	Nr  )r`   r   r   rO   Tr}  F)predicted_ranks)rV   r  r  r   Zpermutationr  r@   Zrankdatar  r   rf  )rC   r"  r#  r  Zpermr  ZranksrB  rC  r]  Zres4Zres5rG   rG   rH   test_options  s"    
zTestPageTrendTest.test_optionsc                 C   s   t jd g dg dg dg dg dg dg}t |j}t dd	}tj|d
|dd}t|j	d t
|jddd tj|d
|dd}t|j	d t
|jddd d S )Nr  )rT  r{  o   )r  r  k   )g      y   )r  r  r  )r         )   r  t   r   r)   Fr  )r}  r  r  i  gy&1l?r&   rQ   r  gHPsb?)rV   r  r  r   r	  r   r@   r  r   rf  r   r   )rC   r  r  r   rG   rG   rH   test_Ames_assay  s$    z!TestPageTrendTest.test_Ames_assayc                 C   s  t tdd td  W d    n1 s,0    Y  t tdd tg  W d    n1 sb0    Y  t tdd tddg W d    n1 s0    Y  t tdd  tdggg W d    n1 s0    Y  t tdd$ ttjdd W d    n1 s0    Y  t tdd$ ttjdd W d    n1 s\0    Y  d}t t|d. tjg dg dgg d	d
 W d    n1 s0    Y  t t|d. tjg dg dgg dd
 W d    n1 s0    Y  t t|d. tjg dg dgg dd
 W d    n1 sD0    Y  t t|d* tjg dg dgdd
 W d    n1 s0    Y  t tdd( tg dg dgd W d    n1 s0    Y  t tdd( tg dg dgd W d    n1 s0    Y  t tdd. tjg dddtjggdd W d    n1 sd0    Y  t tdd* tjg dg dgdd W d    n1 s0    Y  t tdd* tjg dg dgdd W d    n1 s0    Y  d S )Nz`data` must be a 2d array.rk   r   r$   zPage's L is only appropriater%   z+`predicted_ranks` must include each integerr   r  )r  r  )r  r$   r%   )r   r$   r%   r%   r  z`data` is not properly ranked)r   r$   r%   Tr  z`data` contains NaNsFr  z`method` must be inrJ  )r  r  z`ranked` must be boolean.)r  r}  )	rm   rn   r@   r  rV   r  r  rZ   r  )rC   r  rG   rG   rH   r  (  sZ    ((,.44&&&&88&&z'TestPageTrendTest.test_input_validationN)rz   r{   r|   rV   r  r  r  Z	data_3_25Z
data_10_26Ztsr   r   r  r  Zts2r   r  r  r  r  rG   rG   rG   rH   r`    s   $$$$$$$,
r`  )r   )NNr   N)NNr   )r   r  r4  collectionsr   	itertoolsr   copyr   Znumpy.testingr   r   r   r   r	   r
   r   r   r   r   r   r   rm   Znumpy.ma.testutilsr  Z	testutilsr  Znumpyr   r   r   r   r   rV   Zscipy._lib._utilr   Zscipyr   Zscipy.statsr@   Zscipy.stats.mstatsr  Zscipy.stats.mstats_basicr  Zscipy.stats._ksstatsr   Zscipy.special._testutilsr   Zscipy.specialr   Zcommon_testsr   Zscipy.sparse.sputilsr   Zscipy.spatial.distancer   Zscipy.stats._distr_paramsr   Z	numpy.libr   r  r    r!   r"   r#   rJ  rA   r  r   r   r   r   r   r6   r}   r   r   r`  r  r  r  r  r  r  r  r  r  r%  r,  r.  r/  rX  rk  r  r  r  r  r	  r
  r9  rd  r  ZPowerDivCaser  r  r	  r  r  r  r   r  r  r\  r  r  r  r  r  r  r  r-  r2  r5  rd  r8  r=  r@  rF  rG  rf  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*  rE  rX  ra  rb  rm  r  r  r  r  r  r  r  r  r  r   r.  rA  r`  rG   rG   rG   rH   <module>   s  0m r  ~ I Z
S

& {u+| R?H _ jEN,,	 -
K-5"D WW


e xH k
:bc(~+

J Q^K/ n ;^-&]C L<  7