o
    tBhU                    @   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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!  m#Z# ddl$m!  m%Z& ddl'm(Z( dd	l)m*Z* dd
l+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z: 	 eg de;Z<eg de;Z=eg de;Z>eg de;Z?eg de;Z@eg de;ZAeg de;ZBG dd dZCG dd dZDG dd dZEG dd  d ZFG d!d" d"ZGd#d$ ZHd%d& ZId'd( ZJG d)d* d*ZKd+d, ZLd-d. ZMd/d0 ZNd1d2 ZOG d3d4 d4ZPG d5d6 d6ZQd7d8 ZRd9d: ZSd;d< ZTG d=d> d>ZUG d?d@ d@ZVG dAdB dBZWG dCdD dDZXG dEdF dFZYG dGdH dHZZG dIdJ dJZ[dKdL Z\G dMdN dNZ]G dOdP dPZ^G dQdR dRZ_dSdT Z`edUg dVZaeag dWddddXdYdXebdZ d[ebd\   dYd]ebd^ d]ebd_   d`dVeag dWg dadddbdYdXebd^ d]ebdZ  d]ebdc   dYdYebdZ ddebd^  dYebde   dfdVeag dWd]dddXdYdXebdZ d[ebd\   dYd]ebd^ d]ebd_   d`dVeag dgg dgdddddddVgZceag ddddddddVeaeg g g gjddddg dhg dhg dhg dhdVeaeg g g gdddg g g g dVgZeG didj djZfdkdl Zgejhidmdnejjfdoejkfgdpdq Zldrds Zmdtdu Zndvdw ZoG dxdy dyZpG dzd{ d{ZqG d|d} d}Zrd~d Zsdd Ztdd Zuejhidevddfevddfgdd Zwdd ZxdddZydd ZzG dd dZ{G dd dZ|G dd dZ}dd Z~dd Zdd Zdd Zejhidevddfevd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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)
assert_assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_approx_equalassert_allcloseassert_warnssuppress_warningsassert_array_less)raises)arrayarangefloat32float64power)kolmogn)FuncData)binom   )check_named_results)matrix)cdist)NumpyVersion)_broadcast_concatenate)_calc_t_stat_data_partitions#AlexanderGovernConstantInputWarning)	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   sB  t tdd}t|d| jd t jtddd}t jtd d}t||| jd tdtd	d
d}t j|d d}t|| | jd t j|dd}t	||jdddd t j|dd}t	||jdddd t j|dd d}t|d| jd t j|ddd}g d}t	||dd t j|dddd}g d}t	||dd t
|}t
j|ddd f< t j|ddd}ddddt
jt
jt
jg}t	||dd t N}|td t j|ddd}d d!d"d#t
jt
jt
jt
jt
jg	}t	||dd t j|dd$dd}dd!d"d#t
jt
jt
jt
jt
jg	}t	||dd W d    d S 1 sw   Y  d S )%Nr    r&   TT      @significant)FFlimits	inclusiver9   ?   dtyper'   r%   axisr   r&   decimalr   )r    =   )r9   r@   g     ?@)r       )         '@r'   
            TF)r9   r:   r@   )      %@rF   r'   rG   rH   rI   rJ   )r   rJ   r-   r.   r/   Mean of empty slicer"   rG      rD   FT)statstmeanXr	   dprecr   r   reshapemeanr   npr   nanr   recordRuntimeWarning)selfyy1y2x_2dy_truex_2d_with_nansup rd   s/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/scipy/stats/tests/test_stats.py
test_tmeanE   sH   
  $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 =}|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    d S 1 sw   Y  d S )Nr3   r4   r8   g@r6   r;   r   ddofr<   r=   )r'   r%   r?   r   )r   r%   g     v@r&   rA   )r   r'   g㪪@r!   g@z"Degrees of freedom <= 0 for slice.)r   r#   )r9   r@   r:   r+   r   r$   )rR   tvarrT   r	   rU   varr   r   rV   r   rX   fullr   rZ   r[   r   rY   )r\   r]   r`   rc   rd   rd   re   	test_tvart   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 )Nr3   r4   gBĆ/H@r6   r;   r   rg   )rR   tstdrT   r	   rU   stdr\   r]   rd   rd   re   	test_tstd   s   zTestTrimmedStats.test_tstdc              	   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 [}|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 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr"   rG   r   )
lowerlimitF)rr   r:   r   r#   r    r    r?   )r   r    r"   r$   r&         $@r'   invalid value*omit
nan_policy        raisefoobarz'propagate', 'raise', 'omit'matchfoo)r   rR   tminrX   r   rV   rY   r   rZ   r[   assert_raises
ValueError)r\   xrc   msgrd   rd   re   	test_tmin   s0   



"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 4}|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    d S 1 sw   Y  d S )Nr"   rG   r'   )
upperlimitF)r   r:   r&   rs   r%   r   r?   r   r!   r#   r%   r'   rt   r$   ru   rv   rw         "@rz   r{   )r   rR   tmaxrX   r   rV   rY   r   rZ   r[   r   r   )r\   r   rc   rd   rd   re   	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&   rQ   r8   )r"   r#   r$   r%   r&   r   rg   r6   rM   rG   r;   )
rR   tsemrT   rX   r   r	   ro   sqrtsizerU   )r\   r]   y_refrd   rd   re   	test_tsem   s   
zTestTrimmedStats.test_tsemN)__name__
__module____qualname__rX   finfor   	precisionrU   rf   rm   rq   r   r   r   rd   rd   rd   re   r2   A   s    / r2   c                   @      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   "   t tt}|d }t|d d S Nr         ?)rR   pearsonrrT   r	   r\   r]   rrd   rd   re   test_pXX      zTestCorrPearsonr.test_pXXc                 C   "   t tt}|d }t|d d S r   )rR   r   rT   BIGr	   r   rd   rd   re   
test_pXBIG   r   zTestCorrPearsonr.test_pXBIGc                 C   r   r   )rR   r   rT   LITTLEr	   r   rd   rd   re   test_pXLITTLE   r   zTestCorrPearsonr.test_pXLITTLEc                 C   r   r   )rR   r   rT   HUGEr	   r   rd   rd   re   test_pXHUGE   r   zTestCorrPearsonr.test_pXHUGEc                 C   r   r   )rR   r   rT   TINYr	   r   rd   rd   re   test_pXTINY   r   zTestCorrPearsonr.test_pXTINYc                 C   r   r   )rR   r   rT   ROUNDr	   r   rd   rd   re   test_pXROUND   r   zTestCorrPearsonr.test_pXROUNDc                 C   r   r   )rR   r   r   r	   r   rd   rd   re   test_pBIGBIG   r   zTestCorrPearsonr.test_pBIGBIGc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pBIGLITTLE  r   z TestCorrPearsonr.test_pBIGLITTLEc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pBIGHUGE  r   zTestCorrPearsonr.test_pBIGHUGEc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pBIGTINY  r   zTestCorrPearsonr.test_pBIGTINYc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pBIGROUND  r   zTestCorrPearsonr.test_pBIGROUNDc                 C   r   r   )rR   r   r   r	   r   rd   rd   re   test_pLITTLELITTLE  r   z#TestCorrPearsonr.test_pLITTLELITTLEc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pLITTLEHUGE  r   z!TestCorrPearsonr.test_pLITTLEHUGEc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pLITTLETINY  r   z!TestCorrPearsonr.test_pLITTLETINYc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pLITTLEROUND$  r   z"TestCorrPearsonr.test_pLITTLEROUNDc                 C   r   r   )rR   r   r   r	   r   rd   rd   re   test_pHUGEHUGE)  r   zTestCorrPearsonr.test_pHUGEHUGEc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pHUGETINY.  r   zTestCorrPearsonr.test_pHUGETINYc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pHUGEROUND3  r   z TestCorrPearsonr.test_pHUGEROUNDc                 C   r   r   )rR   r   r   r	   r   rd   rd   re   test_pTINYTINY8  r   zTestCorrPearsonr.test_pTINYTINYc                 C   r   r   )rR   r   r   r   r	   r   rd   rd   re   test_pTINYROUND=  r   z TestCorrPearsonr.test_pTINYROUNDc                 C   r   r   )rR   r   r   r	   r   rd   rd   re   test_pROUNDROUNDB  r   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瞯<atolry   r    r   rR   r   r
   rX   r   spacingr\   ar   probrd   rd   re   test_r_almost_exactly_pos1G  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   ry   r    r   r   r   rd   rd   re   test_r_almost_exactly_neg1P  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rM   r   r   )r   r   r!   r!   r    UUUUUU?)r   rR   r   r	   rX   r   )r\   r   br   r   rd   rd   re   
test_basicY  s
   zTestCorrPearsonr.test_basicc                 C   s`   t tj! tg dg d\}}t|tj t|tj W d    d S 1 s)w   Y  d S N)MbX?r   r   )grh|?gv/?gsh|??)r   rR   PearsonRConstantInputWarningr   r   rX   rY   r\   r   prd   rd   re   test_constant_inputb  s
   "z$TestCorrPearsonr.test_constant_inputc                 C   sl   dddt d g}ddddt d  g}ttj t||\}}W d    d S 1 s/w   Y  d S )Nr    r!   r$   )rX   r   r   rR    PearsonRNearConstantInputWarningr   r\   r   r]   r   r   rd   rd   re   test_near_constant_inputj  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?rR   r   r
   r   rd   rd   re   test_very_small_input_valuess  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͗~-?)rX   r   r   rR   r   r
   r   rd   rd   re   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ݣ?)rX   r   rR   r   r
   r   rd   rd   re   !test_extremely_large_input_values  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#   rR   r   r   r   rd   rd   re   test_length_two_pos1     
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#   rM   r   r   rd   rd   re   test_length_two_neg2  r   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   ry   Hz>r   r   r   rd   rd   re   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#   r   r   rR   r   r\   r   r]   rd   rd   re   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   rd   rd   re   	test_len1  s   zTestCorrPearsonr.test_len1N)&r   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   rd   rd   rd   re   r      sH    				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"   r6   d   r      r#   g,Ԛ?r%   r&   g2c?r$   rG   gY
A?      g_?      gO^M?r   gօa?r!   r   ggE?g$I$I?)rR   fisher_exactr	   )r\   r   resrd   rd   re   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 ]\}}tt |}t jj|d	 |d	 ddd qmd S )Nr   r    r   r#   )gAn&	?g}K
T?r%   r&   )g	7?g?r   rG   )g!@j)A?r   r   )gU!a?gKY?r   r   )g7X?g~ltP?)gFu|?r   r   )ry   gQN^?r"   gaa?ry   r   gaa?r!   rH   T)rB   verbose)rX   infrR   r   asarraytestingr   )r\   tablisttableres_rr   rd   rd   re   test_precise  s$   zTestFisherExact.test_precisec                 C   st   g d}t |g dD ]\}}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"   r6   iPF  i8 r   i_ g^K=?)ziprR   r   r	   )r\   pvalspvalnumr   rd   rd   re   test_large_numbers  s   z"TestFisherExact.test_large_numbersc                 C   s    t ttjtddd d S )Nr$   r    r!   )r   r   rR   r   rX   r   rV   r\   rd   rd   re   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#   rG   r   )rR   r   r   rX   rY   )r\   tablesr   	oddsratior   rd   rd   re   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 ]&\}}g }|tj|ddd  |tj|d dd  t||dd!d" qcd S )#Nr    r%   r&      i,     rD   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   appendrR   r   r
   )r\   r  r   r   r   r   rd   rd   re   test_less_greater!  s4   z!TestFisherExact.test_less_greaterc                 C   s   t ddgddgg\}}d S )Nr   r    r'   i")rR   r   )r\   oddspvaluerd   rd   re   test_gh3014C  s   zTestFisherExact.test_gh3014N)r   r   r   r   r   r   pytestmarkslowr   r  r  r  r  rd   rd   rd   re   r     s    


"r   c                   @   r   )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      @       @)rR   	spearmanrr   rX   isnanallrp   rd   rd   re   test_scalarR  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'   )r   r   rR   r  r  rd   rd   re   test_uneven_lengthsV  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s0J t
ttj||dd t
ttj|j|j d S )N鄋 r"   r!   r    r#   r#   r   r?   )rX   randomseedrandnrR   r  correlationshapeTr  r   r   r   rd   rd   re   test_uneven_2d_shapesZ  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    r?   r   )
rX   r%  r&  r'  r   r   rR   r  r
   flattenr\   r   rd   rd   re   test_ndim_too_highe  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 )Nrt   r'   rv   rw   )r   ry   rz   r{   )rX   r   rY   r   rR   r  r   r   r-  rd   rd   re   test_nan_policyo     

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#   rG   r$   r   r?   rv   rw   r   +=r   )	rX   r%  r&  randrY   deleterR   r  r
   )r\   r   kr]   corxpxcorypyrd   rd   re   test_nan_policy_bug_12458x  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#   rG   r   r   )r!   rM   r   	propagater@   rx   c                    s$   g | ]  fd dt D qS )c              	      s2   g | ]}t |d d f  d d f jqS N)rR   r  r(  .0i)jr   rd   re   
<listcomp>  s   2 zJTestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>.<listcomp>range)r?  mr   )rA  re   rB    s    z?TestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>)	rX   r%  r&  r'  rY   rR   r  rD  r
   )r\   ncorrr  r   rd   rE  re   test_nan_policy_bug_12411  s   

z+TestCorrSpearmanr.test_nan_policy_bug_12411c                 C   r   r   )rR   r  rT   r	   r   rd   rd   re   test_sXX  r   zTestCorrSpearmanr.test_sXXc                 C   r   r   )rR   r  rT   r   r	   r   rd   rd   re   
test_sXBIG  r   zTestCorrSpearmanr.test_sXBIGc                 C   r   r   )rR   r  rT   r   r	   r   rd   rd   re   test_sXLITTLE  r   zTestCorrSpearmanr.test_sXLITTLEc                 C   r   r   )rR   r  rT   r   r	   r   rd   rd   re   test_sXHUGE  r   zTestCorrSpearmanr.test_sXHUGEc                 C   r   r   )rR   r  rT   r   r	   r   rd   rd   re   test_sXTINY  r   zTestCorrSpearmanr.test_sXTINYc                 C   r   r   )rR   r  rT   r   r	   r   rd   rd   re   test_sXROUND  r   zTestCorrSpearmanr.test_sXROUNDc                 C   r   r   )rR   r  r   r	   r   rd   rd   re   test_sBIGBIG  r   zTestCorrSpearmanr.test_sBIGBIGc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sBIGLITTLE  r   z!TestCorrSpearmanr.test_sBIGLITTLEc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sBIGHUGE  r   zTestCorrSpearmanr.test_sBIGHUGEc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sBIGTINY  r   zTestCorrSpearmanr.test_sBIGTINYc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sBIGROUND  r   z TestCorrSpearmanr.test_sBIGROUNDc                 C   r   r   )rR   r  r   r	   r   rd   rd   re   test_sLITTLELITTLE  r   z$TestCorrSpearmanr.test_sLITTLELITTLEc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sLITTLEHUGE  r   z"TestCorrSpearmanr.test_sLITTLEHUGEc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sLITTLETINY  r   z"TestCorrSpearmanr.test_sLITTLETINYc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sLITTLEROUND  r   z#TestCorrSpearmanr.test_sLITTLEROUNDc                 C   r   r   )rR   r  r   r	   r   rd   rd   re   test_sHUGEHUGE  r   z TestCorrSpearmanr.test_sHUGEHUGEc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sHUGETINY  r   z TestCorrSpearmanr.test_sHUGETINYc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sHUGEROUND  r   z!TestCorrSpearmanr.test_sHUGEROUNDc                 C   r   r   )rR   r  r   r	   r   rd   rd   re   test_sTINYTINY  r   z TestCorrSpearmanr.test_sTINYTINYc                 C   r   r   )rR   r  r   r   r	   r   rd   rd   re   test_sTINYROUND  r   z!TestCorrSpearmanr.test_sTINYROUNDc                 C   r   r   )rR   r  r   r	   r   rd   rd   re   test_sROUNDROUND  r   z"TestCorrSpearmanr.test_sROUNDROUNDc                 C   s   t tt}d}t|| d S )Nr(  r  )rR   r  rT   r   )r\   r   
attributesrd   rd   re    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#   )rR   r  rX   r   r*  r
   r\   x1x2res1res2rd   rd   re   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;  rv   r   r!   r"   r#   r$   r    rw   )rX   rY   rR   r  r   r*  r
   )r\   rx   rd  re  rf  rg  rd   rd   re   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   rM   3+?)rM   r   3+)rj  rk  r   r!   r!   r=   g+Hs]s?r    r   )rX   r   r   r   r*  rR   r  zerosfloatr
   r(  r  )r\   rd  re  x3r   actualexpected_correxpected_pvaluerd   rd   re   
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  r5   ffffff@      @ffffff"@ffffff@g333333@皙@)r)   r  ffffff@ffffff@       @rt  ffffff@r   r;  rw   rv   r   r   r    )gacJC?g%ln?g_0nYt!޿ư>r  )rX   r   rY   r*  r
   rR   r  r(  )r\   r   rH  r   rd   rd   re   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)   rv   rw   )gonj?)Wn%?r  )rX   r%  r&  r2  r   rR   r  r(  rY   astypeint32r
   )
r\   rG  r   rF  r   r   rf  rg  res3expectedrd   rd   re   test_gh_8111.  s   

zTestCorrSpearmanr.test_gh_8111N)&r   r   r   r   r   r"  r+  r.  r/  r9  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  ra  rh  ri  rs  r  r  rd   rd   rd   re   r  I  sH    
		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   )rR   r  r	   r\   rd  re  r  r   rd   rd   re   test_spearmanr_vs_rI  s   z&TestCorrSpearmanr2.test_spearmanr_vs_rc                 C   s   t tg g tjtjf d S r=  )r   rR   r  rX   rY   r  rd   rd   re   test_empty_arraysS  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scaler   r   r  )gCzYW?ge*=r   )rX   r%  r&  r   normaldotlinalgcholeskyrR   r  r	   )r\   r   rH  r  r   rd   rd   re   test_normal_drawsV  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	   rR   r  r  rd   rd   re   test_corr_1b  s   "zTestCorrSpearmanr2.test_corr_1c                 C   p   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 )Nrt   r'   rv   rw   )r   r   rz   r{   )	rX   r   rY   r   rR   r  r
   r   r   r-  rd   rd   re   test_nan_policiese  r0  z$TestCorrSpearmanr2.test_nan_policiesc                 C   s(   t d}t d}tttj|| d S )Nrt         4@)rX   r   r   r   rR   r  r   rd   rd   re   r   n  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$   rv   rw   r!   )rX   rY   rR   r  r   rc  rd   rd   re   test_omit_paired_values  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  rG   i  i  r   rv   rw   gV-?)listrD  r  rX   rY   r   rR   r  r   rd   rd   re   #test_gh_issue_6061_windows_overflowz  s   
z6TestCorrSpearmanr2.test_gh_issue_6061_windows_overflowc                 C   s   t tjQ 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    d S 1 sYw   Y  d S )Nr    r    r    r    r   r    )r   rR   SpearmanRConstantInputWarningr  r   rX   rY   r   rd   rd   re   	test_tie0  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  )rR   r  r   r   )r\   r   r]   xryrsrprrd   rd   re   	test_tie1  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"   rv   rw   )rX   rY   rR   r  r   )r\   rd  r^   re  r_   sr1sr2rd   rd   re   	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H 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    d S 1 sqw   Y  d S )Nr   r   r   r   r   r   r?   rX   r   r   rR   r  r  r   rY   )r\   z1z2z3r   r   rd   rd   re   test_ties_axis_1  s   "z#TestCorrSpearmanr2.test_ties_axis_1c                 C   st   t g d}t g d}ttj t||\}}t|t j t|t j W d    d S 1 s3w   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   rd   rd   re   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    r?   )rX   r   r   r   rR   r  r   rd   rd   re   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    d S 1 s_w   Y  d S )Nr  r  r  r  r  r   r   r    r  alternative must be 'less'...r|   	ekki-ekki)rR   r  r	   r  r   r   r  rd   rd   re   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 sTw   Y  d	}tjt|d tj||d
|d W d    d S 1 sww   Y  d S )Nr  r  rv   rx   r  r  The input contains nan valuesr|   rz   nan_policy must be one of...r  )	rX   rY   r   rR   r  r
   r  r   r   )	r\   r  rd  re  x1nanx2nan
res_actualres_expectedmessagerd   rd   re   test_alternative_nan_policy  s,   



"z.TestCorrSpearmanr2.test_alternative_nan_policyN)r   r   r   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  parametrizer  rd   rd   rd   re   r  F  s&    
	
r  c                  C   sX  d} g d}g d}d}| D ]}t ||}t|d |d  t|d |d  qg d}g d}d}| D ]}t ||}t|d |d  t|d |d  q5g d	}g d
}d}| D ]}t ||}t|d |d  t|d |d  q\g d}g d}d}| D ]}t ||}t|d |d  t|d |d  qtd}t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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  qk|d }|d |d< ||d< d}| D ]}t j|||d}t|d |d  t|d |d  qt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 ]<}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 q@t	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   rG   )r   紞xO~>)variantr    )g?>?aV>r#   r$   )g}'}'?o&5>rM   )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&   rG   gok|?r   gffffff?r  exactmethodbananarmsrI   r    r   rI   r    r   r"   r%   r   r   )g}+޿g`=i?r_  r  r  r  r  r  r   r  )g\zf?g^n)=r  g#q?rt   r'   rv   rw   )r   g/>r}  r~  
asymptotic)rx   r  )r   g&?rz   r{   r  r  r=   i  r   )rR   
kendalltaur	   rX   r   r   r   r   r   r   rY   r%  r&  r  r  r  r  r   r
   rn  mamasked_greaterconcatenater   isfinite)variantsr   r]   r  tauxr   r   rd  re  r`  rH  taup_valuerd   rd   re   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    rG   r   r   )
rX   r%  r&  rD  r  shufflemstats_basicr  rR   r	   )sr   r@  r   r  rp  rd   rd   re   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@rv   rw   r   r   r   )rX   rY   rR   r  r
   r(  )r   r]   r1r2rd   rd   re   test_kendalltau_nan_2nd_arg  s
   r  c                   @   sH  e Zd Zdd ZdZejejejgZg dZg dZ	g dZ
g dZg dZg d	Zg d
Zg dZdd Zeeeedgd eeeeedgd  Zejdedd Zeeeedgd eeeeedgd  Zejdedd Zeeee	dgd eeeee	dgd  Zejdedd Zeeee
dgd eeeee
dgd  Zejdedd Zeeeedgd eeeeedgd  Zejdedd Z eeeedgd eeeeedgd  Z!ejde!dd Z"eeeedgd eeeeedgd  Z#ejde#dd Z$eeeedgd eeeeedgd  Z%ejde%d d! Z&eeeedgd eeeeedgd  Z'ejde'd"d# Z(eeedgd eeedgd  Z)ejd$e)d%d& Z*ejd'd(ejd)d*d+d, Z+d-S ).TestKendallTauAlternativec                 C   s  g d}g d}t j||dd}|d dksJ 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||dd}|d dk sfJ 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    d S 1 sw   Y  d S )Nr  r  r  r  r   r  r   r    r  r  r|   r  )rR   r  r   r
   reverser  r   r   r  rd   rd   re   &test_kendalltau_alternative_asymptotic  s,   "z@TestKendallTauAlternative.test_kendalltau_alternative_asymptotic)r  r  r  )r   r   r)   )r   RUUUU?ZUUUU?)g~?r  r  )?r   r  )ˮ[?r   r  )g?gSǌ?gSǌ?)g:
?g3
?g<t'.?)gN  A?gss?gYss?c           	      C   s@   |rt | }|d9 }tj||d|d}||f}t|| d S )NrM   r  r  r  )rX   r   rR   r  r
   )	r\   r   r]   r  revstat_expected
p_expectedr   r  rd   rd   re   
exact_testA  s   z$TestKendallTauAlternative.exact_testFr!   Tzalternative, p_expected, revc                 C   s,   dgdg}}t j}| |||||| d S r   )rX   rY   r  r\   r  r  r  r   r]   r  rd   rd   re   test_against_R_n1L  s   z+TestKendallTauAlternative.test_against_R_n1c                 C   s.   ddgddg}}d}|  |||||| d S )Nr   r    r!   r"   g?r  r  rd   rd   re   test_against_R_n2U     z+TestKendallTauAlternative.test_against_R_n2c                 C   s.   g dg d}}d}|  |||||| d S )Nr   r   r  r  rd   rd   re   test_against_R_c0^  r  z+TestKendallTauAlternative.test_against_R_c0c                 C   .   g dg d}}d}|  |||||| d S )Nr   )r   r    r"   r!   gVUUUUU?r  r  rd   rd   re   test_against_R_c1g  r  z+TestKendallTauAlternative.test_against_R_c1c                 C   r  )Nr  )r   r#   r"   r    r!   r   r  r  rd   rd   re   test_against_R_no_correlationq  r  z7TestKendallTauAlternative.test_against_R_no_correlationc                 C   r  )Nr   r    r!   r"   r#   r$   r%   r&   )r&   r$   r   r!   r    r#   r"   r%   r   r  r  rd   rd   re   test_against_R_no_correlationb{  r  z8TestKendallTauAlternative.test_against_R_no_correlationbc                 C   s,   g d}g d}d}|  |||||| d S )N)	g333333F@g33333F@g33333D@gfffffJ@gYF@gF@gYI@gF@gN@)	g@@r+   r5   @r  g@ffffff@rz  gqq?r  r  rd   rd   re   test_against_R_lt_171  s   z/TestKendallTauAlternative.test_against_R_lt_171c                 C   @   t jd t jd}t jd}d}| |||||| d S )Nr   r   gUm*,rX   r%  r&  r2  r  r  rd   rd   re   test_against_R_lt_171b  
   z0TestKendallTauAlternative.test_against_R_lt_171bc                 C   r  )Nr      gH4?r  r  rd   rd   re   test_against_R_lt_171c  r  z0TestKendallTauAlternative.test_against_R_lt_171czalternative, revc                 C   st   t jd t jd}t jd}tj||d|d}tj||d|d}t|d |d  t|d |d dd d S )	Nr   i  r  r  r  r   MbP?r~  )rX   r%  r&  r2  rR   r  r   r
   )r\   r  r  r   r]   res0rf  rd   rd   re   test_gt_171  s   

z%TestKendallTauAlternative.test_gt_171r  )r  r  r  r  c           
      C   s  g d}g d}|t jg }|t jg }tj||||d}t jt jf}t|| tj||d||d}tj||||d}t|| d}	tjt|	d tj||d||d W d    n1 s^w   Y  d	}	tjt|	d tj||d
||d W d    d S 1 sw   Y  d S )Nr  )r#   r$   r%   r&   r'   r  rv   )rx   r  r  r  r|   rz   r  r  )rX   rY   rR   r  r
   r  r   r   )
r\   r  r  rd  re  r  r  r  r  r  rd   rd   re   r/    s8   





"z)TestKendallTauAlternative.test_nan_policyN),r   r   r   r  alternativesrX   rY   p_n1p_n2p_c0p_c1p_no_correlationp_no_correlationb
p_n_lt_171p_n_lt_171bp_n_lt_171cr  r  r   reversed	case_R_n1r  r  r  r  	case_R_n2r  	case_R_c0r  	case_R_c1r  case_R_no_corrr  case_no_cor_br  case_R_lt_171r  case_R_lt_171br  case_R_lt_171cr  case_gt_171r  r/  rd   rd   rd   re   r    s    4









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      dS Nr   rd   r   rd   rd   re   <lambda>      z"test_weightedtau.<locals>.<lambda>)weigherr  )rankgڿgn)r(  r!  g @ڿg[đ(gIکnTc                 S   r"  r#  rd   r$  rd   rd   re   r%    r&  )r(  r'  c                 S   r"  r#  rd   r$  rd   rd   re   r%    r&  r=   r   r   r   r   r    r"   r%   rI   r    )      (@r  r   r*  r  r   r  r  r*  r  )r*  r  r   r*  r   )r   r  r  r   r   gt34+)rR   weightedtaur	   r   rX   rY   r   r   int16r   r   )r   r]   r  r  rd   rd   re   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   )rR   r+  rX   rY   rd   rd   rd   re   test_segfault_issue_9710*  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   rM   r  rv   )r  rx   ry   )rX   r   r  rn  rY   rR   r  r   )rG  r   r]   _r   rd   rd   re   test_kendall_tau_large4  s   
r2  c            
   
   C   s   dd } t jd tddD ]Y}g }t|D ]	}||g| 7 }qt|}t j| t j| t jt|t jd}tdD ](}dD ]}| |||d	d
 |}t	
|||dd
 |j}	t||	 qCt j| q?qd S )Nc                 S   sZ  d } } } }}	t tt| tt| D ]\}
}|r)|||
 |||  n|||
 |||  }||7 }| |
 | | krE||7 }||
 || krQ|	|7 }	| |
 | | k ra||
 || k sq| |
 | | krv||
 || krv||7 }q| |
 | | k r||
 || ks| |
 | | kr||
 || k r||7 }q|| t||  t||	  S Nr   )r   rD  lenrX   r   )r   r]   r(  r'  addtotconcdiscuvr@  rA  wrd   rd   re   wkq@  s    "@
@$z*test_weightedtau_vs_quadratic.<locals>.wkqr  r!   rG   r=   r    rK   c                 S      d| d  S Nr   r   rd   r$  rd   rd   re   r%  ]      z/test_weightedtau_vs_quadratic.<locals>.<lambda>c                 S   r=  r>  rd   r$  rd   rd   re   r%  ^  r?  )rX   r%  r&  rD  r  r  r   r4  intprR   r+  r(  r	   )
r<  r  r   r@  r   r(  r1  r5  r  rp  rd   rd   re   test_weightedtau_vs_quadratic>  s$   rA  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    rR   find_repeatsr   )r\   r   r   numsrd   rd   re   r   f  s   zTestFindRepeats.test_basicc                 C   s8   g dg fD ]}t |\}}t|g  t|g  qd S )N)rG   r   2      (   rC  )r\   r   repeatedcountsrd   rd   re   test_empty_resultl  s
   
z!TestFindRepeats.test_empty_resultN)r   r   r   r   rK  rd   rd   rd   re   rB  d  s    rB  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%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   ry   )	rR   
linregressrT   r   r   	interceptrvaluestderrintercept_stderrr\   resultrd   rd   re   test_linregressBIGXv  s
   z"TestRegression.test_linregressBIGXc                 C   s@   t tt}t|jd t|jd t|jd t|jd d S )Nry   r   )rR   rM  rT   r   rN  rO  rP  rQ  rR  rd   rd   re   test_regressXX  s
   zTestRegression.test_regressXXc                 C   s(   t tt}t|jd t|jd d S )Nry   )rR   rM  rT   ZEROr   rN  rO  rR  rd   rd   re   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   皙?rG   r   穷4_Qc?)rX   linspacesinrR   rM  _stats_mstats_commonLinregressResultr   
isinstancer   rP  )r\   r   r]   rS  lrrd   rd   re   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 s8w   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rw|j
kszJ  J d S )Nr   r   rX  rG   r   r  r|   r  r  r  r  r   r    r  )rX   rZ  r[  r  r   r   rR   rM  r
   r  rO  )r\   r   r]   rf  rg  r  rd   rd   re   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)
                              )
r<   Q   8   [   /   9   r   H   >   0   r  r  gؗh?gJK@:Cgag?g->g5ՒO?g]؊E @)rR   rM  r
   sloperN  rO  rX   r   r  rP  rQ  )r\   r   r]   r   rd   rd   re   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   rX  rG   r   rY  8?)	rX   rZ  r[  vstackrR   rM  r   rP  rQ  )r\   r   r]   rowsrS  rd   rd   re   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   rX  rG   r   r   rY  rv  )
rX   rZ  r[  hstackexpand_dimsrR   rM  r   rP  rQ  )r\   r   r]   columnsrS  rd   rd   re   test_regress_simple_onearg_cols  s   
z.TestRegression.test_regress_simple_onearg_colsc                 C   s   t ttjtd d S )Nrl  )r   r   rR   rM  rX   onesr  rd   rd   re   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 )NrH   r#   r   r   r   rM   c                 S   s   t | |ddS )NrE   rA   )r   r   r]   rd   rd   re   r%    s    z0TestRegression.test_linregress.<locals>.<lambda>r   r5   gePUn?g.bt>gڽE?gʺL7?)
rX   r   rR   rM  rt  rN  rO  r  rP  rQ  )r\   r   r]   rS  	assert_aerd   rd   re   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    rM   )
rX   rZ  rR   rM  r   rO  r   r  rP  rQ  )r\   r   rG  r   r]   rS  rd   rd   re    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   rX  rG   r   )rt  rN  rO  r  rP  rQ  )rX   rZ  r[  rR   rM  r\  r]  r   r^  r   dir)r\   r   r]   rS  r_  r`  rd   rd   re   !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#   ry   )rX   r   rR   rM  r   r  rP  rQ  r\   r   r]   rS  rd   rd   re   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   ry   )	rX   r   r~  rR   rM  r   r  rP  rQ  r  rd   rd   re   'test_regress_two_inputs_horizontal_line0  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)$rX  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]@     @rv  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|@rX  g?g!пr    gpX?ry   gh-h*<?gg?)	rR   rM  r   rt  rN  rO  r  rP  rQ  r  rd   rd   re   test_nist_norris=  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   rX  rG   r   r   )	rX   rZ  r[  rR   rM  polyfitr   rt  rN  )r\   r   r]   rS  polyrd   rd   re   test_compare_to_polyfitQ  s   z&TestRegression.test_compare_to_polyfitc                 C   s   t ttjg g  d S r=  )r   r   rR   rM  r  rd   rd   re   test_empty_input]  s   zTestRegression.test_empty_inputc                 C   s   t d}t j|d< t jdd t||}W d    n1 s!w   Y  tjj}tt	|| t
|t jfd  t|jt j d S )Nrt   r'   ignoreinvalidr#   )rX   r   rY   errstaterR   rM  r\  r]  r   r^  r   r   rQ  )r\   r   rS  r_  rd   rd   re   test_nan_input`  s   

zTestRegression.test_nan_inputc                 C   sX   t d}t jd}d}tt|d t|| W d    d S 1 s%w   Y  d S )NrG   z$Cannot calculate a linear regressionr|   )rX   rm  r%  r   r   rR   rM  )r\   r   r]   r   rd   rd   re   test_identical_xm  s   
"zTestRegression.test_identical_xN)r   r   r   rT  rU  rW  r`  ra  ru  ry  r}  r  r  r  r  r  r  r  r  r  r  r  rd   rd   rd   re   rL  t  s(    
	
rL  c                  C   sD  t g d\} }}}t| d t|d d}tjt|d t jg ddd W d    n1 s2w   Y  t jg ddd\} }}}t| d t|d g d	}g d
}t j||ddd\} }}}t| d t|d t|ddd t|ddd t j||ddd\} }}}t| d t|d t|ddd t|ddd d S )Nr   r   r   r)   zHmethod must be either 'joint' or 'separate'.'joint_separate' is invalid.r|   joint_separater  jointry   )r   r    r!   r"   rG   rI      )r'   r      r   -   7   N   gQ?separater"   r  gQ@r    rA   gGz@ru  )rR   theilslopesr   r  r   r   )rt  rN  lowerupperr   r   r]   rd   rd   re   test_theilslopest  s8   










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  r5   ru  )r*   r#   )r  defaultreallimitsr!   )cumcountrr   binsizeextrapoints)rR   cumfreqr   rX   r   r   r   )r   cumfreqslowlimr  r  r`  r   rd   rd   re   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  )	frequencyrr   r  r  )rX   r   rR   relfreqr   r   )r   relfreqsr  r  r  r`  r   	relfreqs2rd   rd   re   test_relfreq  s   


r  c                   @   L   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#   rG   rN   r$   )r!   r  r&   r%   r"   r    r   )r   r"   r#   rG   rN   r  r  r  )a1a2a3r  rd   rd   re   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   ry   r   r,   rF        ?)r   r   rR   scoreatpercentiler-  rd   rd   re   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 )NrG   rF  r-   r    r%   r   r   r&   )limitr   rG   r   rG   r   r  r   rG   r.   fractioninterpolation_methodr  r  rR   r  r   r  rD  rX   r   r\   scoreatpercrd   rd   re   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 )NrG   rF  r  r  r"   higherr#   r  r  r   r  r  r  r  r   r  r  rd   rd   re   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   r,   r  )r   r   rF  rI   r!   r"   )r   r   r   r   r   r?   )r   r"   r&   )Q?gQ@g(\ @r!   r%   rH   )
r   rX   r   rR   r  r
   r   r^  ndarrayrV   )r\   r   r  r   rg  	expected2rd   rd   re   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 )NrI   r!   r"   )r   rF  r   )g      @r.         &@)r    r!   r"   r#   r"   r#   r$   r%   )r&   r'   rG   rH   r   r?   )      ?g      @g     !@)r*   r.         #@r  r   r   r   r   )r"   r"   r!   rF  rd   r   r!   )rR   r  r   rV   r   r   r)  )r\   r  r   r0r  scorerd   rd   re   	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    rm  r{   r  e   rM   )r   r   rR   r  r  rd   rd   re   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 )NrF  c   )r   rR   r  rX   rY   r   r  rd   rd   re   
test_empty$  s   "z TestScoreatpercentile.test_emptyN)r   r   r   r  r   r  r  r  r  r  r  rd   rd   rd   re   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%   rG   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w   Y  t|d d df g d t|d d df t jg d| d d S )Nr   r  r   r   rG   r   r   r=   )	rX   r   r   r   filterDeprecationWarningrR   itemfreqr   )dtr   rc   r:  r  rd   re   _check_itemfreq0  s   
(z8TestItemfreq.test_numeric_types.<locals>._check_itemfreq)rX   r  int64r   r   	complex64
complex128)r\   r  dtypesr  rd   r  re   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 s=w   Y  t
|d d df | d S )NOr   )r   r   rX   emptyr4  r   r  r  rR   r  r   r\   r   r   r  aabbrc   r:  rd   rd   re   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 s9w   Y  tt|d t|d  d S )N) r@  r    r   r    )r   r   rX   r   r  r   r   r  r  rR   r  r   tupler  rd   rd   re   test_structured_arraysI  s   
z#TestItemfreq.test_structured_arraysN)r   r   r   r   r   r  r  r   rd   rd   rd   re   r  *  s    r  c                
   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	e
d
d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=  rR   moder   rX   r   r\   valsrJ  rd   rd   re   r  V  s   zTestMode.test_emptyc                 C   s6   t d\}}t|tdg t|tdg d S )Nr  r   r  r  rd   rd   re   r   [  s   zTestMode.test_scalarc                 C   :   g d}t |}t|d d d t|d d d d S )Nr!   r#   r   rG      r!   r    r$   r&   r$   rG   r$   r   r$   r   r!   rR   r  r   r\   data1r  rd   rd   re   r   `     
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)rG   rG   rG  rH  )rG   rG   rG   rG   r  )rG  rG  rG  rG  )rH  rG  rG  rG  r?   r   rG  r   r&   )rG   rG   rG  rG  )r    r!   r!   r    rG   r   r    r"   r!   )rX   r   rR   r  r   )r\   r  data2data3data4data5arrr  rd   rd   re   	test_axesf  s   (,zTestMode.test_axesr@   r   r   c                 C   sR   t jd t jdddd}tj||j| d}tj||d}t j|| d S )Ni:rG   rH   rI   rJ   r?   )	rX   r%  r&  r2  rR   r  ndimr   r   )r\   r@   r   r
  rf  rd   rd   re   test_negative_axes_gh_15375z  s
   z$TestMode.test_negative_axes_gh_15375c                 C   r  )N)rainshowersr  r   r  r   r    r	  r
  rd   rd   re   test_strings  r  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 )	NrG   Thellor#   r=   r   r   r    )rX   rY   r  objectrR   r  r   )r\   objectsr  r  rd   rd   re   test_mixed_objects  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                   @   4   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-  rd   rd   re   __init__     
z-TestMode.test_objects.<locals>.Point.__init__c                 S   s   | j |j kS r=  r$  r\   otherrd   rd   re   __eq__     z+TestMode.test_objects.<locals>.Point.__eq__c                 S   s   | j |j kS r=  r$  r   rd   rd   re   __ne__  r#  z+TestMode.test_objects.<locals>.Point.__ne__c                 S   s   | j |j k S r=  r$  r   rd   rd   re   __lt__  r#  z+TestMode.test_objects.<locals>.Point.__lt__c                 S   s
   t | jS r=  )hashr   r  rd   rd   re   __hash__  r  z-TestMode.test_objects.<locals>.Point.__hash__N)r   r   r   r  r"  r$  r%  r'  rd   rd   rd   re   Point  s    r(  c                    s   g | ]} |qS rd   rd   )r?  r   r(  rd   re   rB    s    z)TestMode.test_objects.<locals>.<listcomp>)r   r    r!   r"   r!   r    r    r    )r&   r=   r"   )r"   r   r    r   )rX   r  r  r   r4  setr   uniquer)  rR   r  )r\   pointsr  r  rd   r)  re   test_objects  s   
zTestMode.test_objectsc                 C   s<   g d}g }t |}d}t|| t |}t|| d S )Nr  )r  count)rR   r  r   )r\   r  r  rp  r`  actual2rd   rd   re   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   rG   r  r    r$   r&   )r$   r!   rv   rw   rz   r{   )rX   rY   rR   r  r   r   r   )r\   r  rp  rd   rd   re   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 )Nrv   rw   r   r   r	  )r\   r2  rS  rd   rd   re   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r&|jjdks(J t |jdkr6|jjdks8J |t jgg }t j|td}tj|dd}t |jdkr[|jjdks]J t |jdkrk|jjdksmJ d S )	N	OxidationPolymerization	Reductionr=   r   r?   r   r   r    )	rX   r   r  rR   r  r  r)  r.  rY   )r\   r2  arrF  r  ar1rd   rd   re   test_obj_arrays_ndim  s      $zTestMode.test_obj_arrays_ndimN)r   r   r   r  r   r   r  r  r  r  rX   r   r  r  r  r-  r0  r1  rY   r3  r:  rd   rd   rd   re   r  U  s(    
	

r  c                   @   s    e Zd Zg dZdZdd ZdS )TestSEMr   r  c              	   C   s.  t  *}tjdd |td t| j}W d    n1 s!w   Y  W d    n1 s0w   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   rg   r    rt   r'   rv   rw   gH=6?rz   r{   )r   rX   r  r  r[   rR   semscalar_testcaser   r  testcaser	   r4  r
   r   r   rY   r   r   r   )r\   rc   r]   rG  r   rd   rd   re   test_sem  s&    

"

zTestSEM.test_semN)r   r   r   r?  r>  r@  rd   rd   rd   re   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d0d1 Zd2d3 Zd4S )5TestZmapZscorezx, yr   r   )r   r   r    r!   r"   c                 C   s6   t ||}|t| t| }t||dd d S )Nr(   r~  )rR   zmaprX   rW   ro   r
   )r\   r   r]   zr  rd   rd   re   	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ry   ry   r   r   )r   r   r   r  )r  ry   r  ry   r   r  r   r!   r  r   r?   r   r    ry   r   r   r   r   )r   r   r   r   )rX   r   r   rR   rB  r   	r\   r   t1t2t3z0r  z0_expectedz1_expectedrd   rd   re   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 NrF  )ry   r   r  r   r   r@   rh   )      rR  r)   r)   r   r!   )      rR  r)   r*   g?r   )rX   r   rR   rB  r   r   r\   r   rC  rM  rN  rd   rd   re   test_zmap_ddof	  s   
zTestZmapZscore.test_zmap_ddofrh   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 )
NrN   rM   r    r%   rI   rv   rh   rx   rg   )rX   r   rY   rR   rB  r
   r  )r\   rh   scorescomparerC  rd   rd   re   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      r   r    rM   rV  r$      )r   r"   ri   r7  rv   r   )rx   r@   rh   r   rg   r1  r~  )
rX   r   rV   rZ  rY   rR   rB  r   r  r
   )r\   rh   rX  rY  rC  r  rd   rd   re   #test_zmap_nan_policy_omit_with_axis2	  s    



z2TestZmapZscore.test_zmap_nan_policy_omit_with_axisc                 C   sj   t g d}t dddddt jg}tjtdd tj||d	d
 W d    d S 1 s.w   Y  d S )Nr   rV  rN   r    r%   rI   zinput contains nanr|   rz   rw   )rX   r   rY   r  r   r   rR   rB  )r\   rX  rY  rd   rd   re   test_zmap_nan_policy_raiseB	  s
   "z)TestZmapZscore.test_zmap_nan_policy_raisec                 C   s(   t g d}g d}t||dd d S )Nr   )gOT\wg%ܿg%?gOT\w?rI   rA   )rR   zscorer   )r\   r]   desiredrd   rd   re   test_zscoreH	  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 rE  )rX   r   r   rR   r_  r   rH  rd   rd   re   test_zscore_axisP	  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 rP  )rX   r   rR   r_  r   r   rT  rd   rd   re   test_zscore_ddofg	  s   
zTestZmapZscore.test_zscore_ddofc                 C   s:   t ddt jddg}tj|dd}tt |sJ d S )Nr   r    r"   r#   r;  rw   )rX   r   rY   rR   r_  r  r  r\   r   rC  rd   rd   re   test_zscore_nan_propagates	  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#   rv   rw   gIHb=gIHb=gIHb=?gIHb=?)rX   r   rY   rR   r_  r   r\   r   rC  r  rd   rd   re   test_zscore_nan_omitx	  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   r5   r  r   r   rv   rW  rg   vIh%<=r~  )rX   r   rY   rR   r_  r_r
   rf  rd   rd   re   test_zscore_nan_omit_with_ddof	  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#   rz   rw   )rX   r   rY   r   r   rR   r_  r-  rd   rd   re   test_zscore_nan_raise	  s   z$TestZmapZscore.test_zscore_nan_raisec                 C   s0   dgd }t |}t|tt|tj d S )NgʡEr!   )rR   r_  r   rX   rl   r4  rY   rd  rd   rd   re   test_zscore_constant_input_1d	  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rt   rt   rt   rt   rt   r  r*        *@r   r?   r   r   r   )r!   r$   )rX   r   rR   r_  r   rY   ravelrV   r)  r~  rl   )r\   r   rL  r  rC  r]   rd   rd   re   test_zscore_constant_input_2d	  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 )Nrm  rt   r  r*  rv   r   rx   r@   r*   r    r   r   r   )rX   r   rY   rR   r_  r   r
   )r\   r   rL  r  s2r  rd   rd   re   -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)rt   rt   r*  r*  rv   r   rr  rG  )rX   r   rY   rR   r_  r   rd  rd   rd   re   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!   rv   rr  )rX   rl   rY   rR   r_  r   )r\   r]   rC  rd   rd   re   test_zscore_2d_all_nan	  s   z%TestZmapZscore.test_zscore_2d_all_nanr   )r!   r   r#   c                 C   s   t |}t|| d S r=  )rR   r_  r   rd  rd   rd   re   test_zscore_empty_input	  s   
z&TestZmapZscore.test_zscore_empty_inputc                 C   s$   t g d}g d}t|| d S )Nr   )0j甹`ȿ/A?(/?)rR   gzscorer
   )r\   rC  r`  rd   rd   re   test_gzscore_normal_array	  s   z(TestZmapZscore.test_gzscore_normal_arrayc                 C   sJ   t g d}t jj|g dd}t|}ddt jddg}t|| d S )N)r   r    rM   r!   r"   )r   r   r   r   r   maskry  rz  r{  r|  )rX   r   r  masked_arrayrR   r}  r   r
   )r\   r   mxrC  r`  rd   rd   re   test_gzscore_masked_array	  s   

z(TestZmapZscore.test_gzscore_masked_arrayN)r   r   r   r  r  r  rD  rO  rU  rZ  r]  r^  ra  rb  rc  re  rg  rj  rk  rl  rq  rt  ru  rw  rX   r   rm  rx  r~  r  rd   rd   rd   re   rA    s>    

	

rA  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   R   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+   皙@r  333333@=
ףp=@r  (\
@r  r,   r   皙@)\(@Q@)r  r  r  r  r+   r  r  r  r  r  r  r  r  r  r  r,   r   r  r  r  r  r  r  g33333<@rX   r   rY   dat_nandatr  rd   rd   re   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 )Nr?   Q?r$   r"   r   )gףp=
?r)   ?r  )r   rR   median_abs_deviationr  rV   rX   r   r   )r\   r  madmad_expectedrd   rd   re   test_median_abs_deviation	  s   z0TestMedianAbsDeviation.test_median_abs_deviationc                 C   s   t j| jdd}t|d d S )Nrv   rw   g(\?)rR   r  r  r   )r\   r  rd   rd   re   test_mad_nan_omit	     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  r5   r{  r   r   r?   rX   r   rY   rR   r  r   )r\   r   r  rd   rd   re   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$   r  rv   rw   r   )rX   r   rY   r   rR   r  r   )sefrC  r  rd   rd   re   test_nan_policy_omit_with_inf	  s   z4TestMedianAbsDeviation.test_nan_policy_omit_with_infr@   )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"   r?   
fill_value)rX   rm  rR   r  r   	full_likesumrY   )r\   r@   r   r  rd   rd   re   test_size_zero_with_axis	  s   
"z/TestMedianAbsDeviation.test_size_zero_with_axisznan_policy, expectedrv   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'   rG   rr  r  )r\   rx   r  r   r  rd   rd   re   test_nan_policy_with_axis	  s   z0TestMedianAbsDeviation.test_nan_policy_with_axiszaxis, expectedr   )r+   r  r*  )Nr-   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   rI   )r  r  r   r   rv   )centerrx   r@   r   )r  r   )rX   r   rY   rR   r  rW   r
   )r\   r@   r  r   r  rd   rd   re   test_center_mean_with_nan
  s   z0TestMedianAbsDeviation.test_center_mean_with_nanc                 C   sF   t jtdd tjg ddd W d    d S 1 sw   Y  d S )Ncallabler|   )r   r    r!   r#   r  )r  )r  r   	TypeErrorrR   r  r  rd   rd   re   test_center_not_callable
  s   "z/TestMedianAbsDeviation.test_center_not_callableN)r   r   r   r  r  r  r  r  r  r  r  r  rX   r   rY   r  r  r  rd   rd   rd   re   r  	  s&    


r  c                   @   r  )TestMedianAbsoluteDeviationc                 C   r  r  r  r  rd   rd   re   r  
  s
   z'TestMedianAbsoluteDeviation.setup_classc                 C   sN   g }t  }|t t|}W d    n1 sw   Y  t|tj d S r=  )r   r  r  rR   median_absolute_deviationr   rX   rY   )r\   r  rc   r  rd   rd   re   test_mad_empty
  s   
z*TestMedianAbsoluteDeviation.test_mad_emptyc                 C   s   t d}t }|t tj|dd}tj|dd}W d    n1 s&w   Y  t|t j t|t 	t jt jt jg t|j
d d S )Nr!   r   r   r?   r   r  rX   r~  r   r  r  rR   r  r   rY   r   r)  )r\   rC  rc   	mad_axis0	mad_axis1rd   rd   re   test_mad_nan_shape1%
  s   

z/TestMedianAbsoluteDeviation.test_mad_nan_shape1c                 C   s   t d}t "}|t tj|dd}tj|dd}tj|dd}W d    n1 s-w   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   r?   r   r    r!   r    r  )r\   rC  rc   r  r  	mad_axis2rd   rd   re   test_mad_nan_shape2/
  s   



z/TestMedianAbsoluteDeviation.test_mad_nan_shape2c                 C   sP   t  }|t tj| jdd}W d    n1 sw   Y  t|tj d S )Nr;  rw   )	r   r  r  rR   r  r  r   rX   rY   )r\   rc   r  rd   rd   re   test_mad_nan_propagate=
  s   
z2TestMedianAbsoluteDeviation.test_mad_nan_propagatec              	   C   s~   t t1 t }|t tj| jdd W d    n1 s w   Y  W d    d S W d    d S 1 s8w   Y  d S )Nrz   rw   )r   r   r   r  r  rR   r  r  r\   rc   rd   rd   re   test_mad_nan_raiseD
  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 s#w   Y  t|d t|| d S )Nr   r  r  r   r  r  rR   r  r  r   )r\   rc   r  	mad_floatrd   rd   re   test_mad_scale_defaultK
  s   

z2TestMedianAbsoluteDeviation.test_mad_scale_defaultc                 C   sl   t  }|t tj| jdd}d}tj| j|d}W d    n1 s%w   Y  t|d t|| d S )Nr  r  gsV?g)?r  )r\   rc   r  r  r  rd   rd   re   test_mad_scale_normalS
  s   

z1TestMedianAbsoluteDeviation.test_mad_scale_normalN)r   r   r   r  r  r  r  r  r  r  r  rd   rd   rd   re   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   r4  r   category)	warn_listexpected_typeexpected_lenwarn_rd   rd   re   _check_warnings]
  s   r  c                   @   l   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)   r  )rX   r   r%  r  r   rR   iqrr-  rd   rd   re   r   j
  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   )rG   Z   )rG  r   r   )r   r   r*   r;  )rF  rF  r  rz   lineargٿrv   r  T)rX   r~  rR   r  )r\   drd   rd   re   test_apio
  s   

zTestIQR.test_apic                 C   s.   t tg tj t ttdtj d S r3  )r   rR   r  rX   rY   r   r  rd   rd   re   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"   ry   r   r?   r"   r   r%   r  interpolationmidpointnearestr  r  )r"   r#   r$   r$   )r#   r$   )r"   r$   r    )r"   r#   r+   r  r   r    r#   r   r   r    )	rX   r~  r   rR   r  r   rm  r   rl   r   rd   rd   re   test_constant
  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   ry   Tkeepdims)rX   r   r   rR   r  r   r-  rd   rd   re   test_scalarlike
  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   r?   r#   r5   r   r!   r  r  r:  )rX   r   rV   r   rR   r  r   rl   r-  rd   rd   re   test_2D
  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   r  r   rG   r  r?   rM   r   )r    r   r   r  r)  r   i  r!   r#   r%   rH   r   r   r!   )r!   r   r   r    )r!   r   r    r  )r   r  )r   r!   r    r    r"   r   r   )rX   r%  r  dstackrR   r  r   moveaxisswapaxesr   r  rV   rp  r   	AxisErrorr   )r\   or   qr  rd   rd   re   r  
  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   )rG   rF  g?)r   r  r   )r   rF  <   )
rX   r   r   rR   r  r   r   r   rY   r  r-  rd   rd   re   test_rng
  s   
zTestIQR.test_rngc                 C   sz  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 jdkrdD ]	}tj||d qtttj|dd d S )Nr#   r"   r    r*   r  r  r  )r   P   )r  r  r!   r  r  r   r  r+   z1.22.0)inverted_cdfaveraged_inverted_cdfclosest_observationinterpolated_inverted_cdfhazenweibullmedian_unbiasednormal_unbiasedr{   )	rX   r   r   rR   r  r   __version__r   r   )r\   r   r]   r  rd   rd   re   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)r@   r  rd   r    )r!   r#   rH   r  )r%   rH   )r   r!   )r#   r%   r   r  )r   r   r    r!   r  r  )r%   Tr  )r!   r#   r   rH   )r   r   r%   rH   )r   r#   r%   r   )r!   r   r%   rH   )r   r   r%   r   )rX   r~  r   rR   r  r)  r-  rd   rd   re   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
8 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 slw   Y  tjd	d
3 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 sw   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;  rw   r%   rv   rz   r  TrZ   alwaysr   r<  r#   r   r    r0   )r    r+   r    barfood)rX   r   rV   r   rR   r  rY   warningscatch_warningssimplefilterrl   r   r   r-  rd   rd   re   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f 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 sw   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 )Nr  r  r   r  r%   r  g=V^w@r  r,   r  Tr  r  r;  )r  rx   r   )r@   r  rx   r    gF7k?rv   r0   g	I1=@g      @r{   )rX   r   rV   r   rR   r  r   rY   r  r  r  r   r   r   r-  rd   rd   re   
test_scale*  s<   



zTestIQR.test_scaleN)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  rd   rd   rd   re   r  h
  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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)  r>   c                C   sH   t |}|d urt ||}t|| |d u r|j}|j|ks"J d S r=  )rX   r   broadcast_tor   r>   )r\   rp  expectr)  r>   rd   rd   re   _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 )Nry   r   r   r   rG   r          ?r!   r"        @r   )r   r  r   r  333333?)r   r    r!   r  r=   r:  r?   r  r   r  )momentr@   r  )r)  rt   r'   rv   rw   rz   r{   )rR   r  r>  r	   r?  r
   r   r   r  rX   rY   r   r   r   rm  r   r   r   r\   r]   r   rd   rd   re   test_momentg  sF   








zTestMoments.test_momentr>   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#   )r  r=   )r$   r#   r   )r@   r  r  r   r  r    )r   r    r"   r#   rd   )rX   r%  r2  r  rR   r  r  r  )r\   r>   r  r  r   r]   rd   rd   re   test_constant_moments  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    rM   r:  r   r;  r<  r  r   r   )
rX   r   rV   r  rn  rY   rR   r  r   r
   )r\   r   mmrd   rd   re   test_moment_propagate_nan  s   
z%TestMoments.test_moment_propagate_nanc                 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 sUw   Y  t
t j|ddd ttt j|dd ttt j|dd d S )Nry   g7l*ҿrG   r   biasg2۠ۿrt   r'   r  r  rv   rw   rz   r{   )rR   skewr>  r	   testmathworksr?  rX   r   rY   r  r   r   r   r  rd   rd   re   test_skewness  s    


zTestMoments.test_skewnessc                 C   s   t ttdd d S )NrG   ry   )r   rR   r  r   r  rd   rd   re   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 s*w   Y  t j	j
|d
t jgdd d S )Nr&   r    rM   r:  r  r  r   r;  r<  r   r   r   )rX   r   rV   r  rn  rY   r  rR   r  r   r
   )r\   r   r  rd   rd   re   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sJ t|td dks)J tj|dddks4J tdgd dks@J td	t d
dd  dksQJ d S )N9ѿrG   ry              Fr  g,@r%   r   rN   r"   gؗҜ<r   )rX   repeatrR   r  rn  r   r\   r   rd   rd   re   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   fisherr  gO߻S@rG   gx|N@g=
ףp=?rt   r'   rv   rw   Gzrz   r{   )rR   kurtosisr>  r	   r  r?  rX   r   rY   r   r   r   r   r  rd   rd   re   test_kurtosis  s   



zTestMoments.test_kurtosisc                 C   s   t ttg dt d S )Nr   )r   typerR   r  rn  r  rd   rd   re   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    rM   r:  r   r;  r<  g(\r   r   )
rX   r   rV   r  rn  rY   rR   r  r   r
   )r\   r   r4  rd   rd   re   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s;J d S )Nr  rG   F)r  ry   r  r  )rX   r  rR   r  rn  r  rd   rd   re   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_accuracyrX   rW   r
   r   rR   r  )r\   
tc_no_meanrd   rd   re   test_moment_accuracy  s   
z TestMoments.test_moment_accuracy)r   r   r   r   r?  r>  rX   r%  r&  r2  r#  r  r  r	  r  r  r  r   r   r  r
  r  r  r  r  r  r  r   r!  r"  r%  rd   rd   rd   re   r  N  s,    		-		r  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  ,}tjdd |td tdd\}}W d    n1 s#w   Y  W d    n1 s2w   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5 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    d S 1 sw   Y  d S )Nr  r  r<  r  r   r   	statisticr  r   r    r#   rG   3   it r  r  r   random_staterF  r5   rv   rw   )g̈́^Bg/kCm?rz   r{   )r   rX   r  r  r[   rR   ttest_1sampr   r  X1r   T1_0P1_0r   X2T2_0P2_0T1_1P1_1T1_2P1_2normrvsrY   r   r   r   )r\   rc   tr   r   r`  r   rd   rd   re   test_onesample#  sF    

"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  )	r   r   rR   r,  r-  r
   P1_1_lr3  P1_1_g)r\   r9  r   rd   rd   re   test_1samp_alternativeN  s   z&TestStudentTest.test_1samp_alternativeN)r   r   r   rX   r   r-  r0  r.  r/  r3  r4  r5  r6  r1  r2  r<  r=  r:  r>  rd   rd   rd   re   r&    s    +r&  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| q%t| g d
dd dD ]\}}t| g d
d|d| qBdD ]}t| g dd|dd qUdD ]\}}t| g dd|d| qfdD ]\}}t| g dd|d| qyd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| qtt| g dddd d S )N
r   r    r!   r"   r#   r$   r%   r&   r'   rG   r"         D@))rW   g     A@strict      >@)weakr@  rG   r   )kind))r(       F@rA  )rD        I@)rW   r@  )
r   r    r!   r"   r"   r#   r$   r%   r&   r'   )
r   r    r!   r"   r"   r"   r#   r$   r%   r&   rG  ))r(  rG  rW   rF  rA  rD  g      N@)r(  rW   rB  rD  )
r   r    r!   r#   r$   r%   r&   r'   rG   rH   rG  
rG   r   rG  rH  rF  r  F   r  r  r   rH  )rH  rA  rI  )
rG   r   rG  rH  rH  rH  rF  r  rK  r  )
rG   r   rG  rF  r  rK  r  r  r   n   rC  ))r(  rt   )rW   r5   )rB  ry   )rD  rt   ))r(        Y@)rW   g     W@)rB  g     V@)rD  rM  rL  ))r(  r  rM  )rW   r  rM  )rW   r   ry   )r   r    r!   r!   r"   r!   unrecognized)rR   percentileofscorer   rX   r   r   r   )pcosrE  rS  r  rd   rd   re   test_percentileofscore[  sl    
rQ  Case)f_obsf_exprh   r@   chi2logmod_logcr)r"   r&   rI   r&   r"   r    r)   rI   r*   r&   r  r  gfx(@)r    r   rI   r    r\  r  r         ?g{T4@)r!   r#   r%   r'   r   r   r   c                   @   r  )TestPowerDivergencec                 C   s   t |}|d u r|j}nt ||}|j| }t 7}	|	td tj	|||||d\}
}t
|
| |dks;|dkrKtj||||d\}
}t
|
| W d    n1 sUw   Y  t |}tjj||d | }t
|| d S )NrO   rS  rT  rh   r@   lambda_r   pearson)rS  rT  rh   r@   )rX   r   r   	broadcastr)  r   r  r[   rR   power_divergencer
   	chisquaredistributionsrU  sf)r\   rS  rT  rh   r@   r]  expected_statnum_obsr   rc   statr   
expected_prd   rd   re   check_power_divergence  s0   









z*TestPowerDivergence.check_power_divergencec              	   C   s   t D ]k}| |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_casesrh  rS  rT  rh   r@   rU  rV  rW  rX  r\   caserd   rd   re   r     s<   zTestPowerDivergence.test_basicc              	   C   s   t D ]k}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 ri  )rm  rX   r  r   rS  rh  rT  rh   r@   rU  rV  rW  rX  )r\   ro  mobsrd   rd   re   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^  rj  rk  rl  r    )rm  rX   rw  rS  	ones_likerW   rT  rh  rU  rV  rW  rX  r   rV   )r\   case0case1rS  rT  rd   rd   re   r  6  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   rg   r  r:  )rm  rX   rw  rS  r*  rr  rW   rT  rU  r   rR   r`  r
   r   )r\   rs  rt  rS  rT  expected_chi2rh   rf  r   stat0p0stat1p1rd   rd   re   test_ddof_broadcastingP  s   
z*TestPowerDivergence.test_ddof_broadcastingc              
   C   s   t  J 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    d S 1 sQw   Y  d S )Nr^  rj  rk  rl  )r  r  power_div_empty_casesrh  rS  rT  rh   r@   rU  rV  rW  rX  rn  rd   rd   re   test_empty_casesl  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\  r'  )rm  rS  rT  rh   r@   rR   r`  r   )r\   rS  rT  rh   r@   r   r`  rd   rd   re   'test_power_divergence_result_attributes|  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 s2w   Y  ttdd	 tj||dd W d    n1 sPw   Y  tj||d\}}t|ddg t|ddg d S )NrG   r   rG  r#   r   #   r   For each axis slice...r|   r  rS  rT  r   )rS  rT  r@   g̑m@gUUU@gj^4;?g4;?)rX   r   r   r   rR   r`  r
   )r\   rS  rT  rf  r   rd   rd   re   test_power_divergence_gh_12282  s   z2TestPowerDivergence.test_power_divergence_gh_12282N)r   r   r   rh  r   rq  r  rz  r|  r}  r  rd   rd   rd   re   r[    s    r[  c                   C   sH   t tdd tjddgddgd W d    d S 1 sw   Y  d S )Nr  r|   rG   r   rG  r  r  )r   r   rR   ra  rd   rd   rd   re   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   r=   r    rh  r~  )rX   r   rR   ra  r
   )rG  r>   obsexprf  r   rd   rd   re   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- t }|td  t	t jg \}}W d    n	1 sLw   Y  W d    n	1 s\w   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d  t	|j\}}W d    n	1 sw   Y  W d    n	1 sw   Y  tt|t jj t|jd" tt |j d S )#N)r&   r&   r       rM   )rM   rM   r!   r"   r#   )r   r   r   r   r   )r   r   r   r   r   g      8@r)   r    r   r  r  r!   r  r#   r  r   r?   r   rj  r]  r   rA   )r@   r]  )r!   r#   r$   r  rG   )r   r   r   r   r   r  )r    r"   r&   rG   r  )rT  r   r   r  r  rO   rd   r  )rX   r   r*  r  r  rV  rR   rb  rU  ra  matr   r   rc  r.  r`  r   r^  r   r   r   r  r   r  r[   MaskedArrayr)  r  r  )r  r  rp  expected_chisq
expected_grU  chisqr   gobs1exp1rc   empty3rd   rd   re   test_chisquare_masked_arrays  sz   "

r  c                  C   s   t g d} d}t dt| d }t |  t ||   }t |||  }t | |fj}t g d	dd}|D ]!\}}t
j|d d df |d d df |d\}	}
t|	|d	d
 qAd S )N)r   rH   rE   rP   r#   rH   rG   r"   r&   rG   r%   r'   rH   r!   r$   r   r   r"   g*kqr   ) g      $g    @r[  g     r@r  gffffffP@g       gLD@rS  g      A@r   g     =@rR  g     :@ry   g8@r)   gffffff7@gq=
ףp?g7@r   g333336@r*   g6@r  gfffff6@r   g8@r5   g     A@rt   g     j@rM   r    r   r  g{Gzt?r~  )rX   r   r   r4  rV  r  r  rw  r*  rV   rR   r`  r
   )r  betar@  alphaexpected_countstable4table5r]  rd  rf  r   rd   rd   re   /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#@r1   rt  g$@)g333333@g@g@r,   g@)rx  r|  r.   r   @)g!@g!@333333 @ffffff
@g333333"@r   r   r    r!   )gNt$@gBv?)g
__2@g5"]i2?)g\(\%@g+ԋ?r'  )r   r   rR   friedmanchisquarer   r   r   mstats)rd  re  ro  r`  r   rd   rd   re   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.autorE   c           	      C   s8   t j|d||d}t||g}tt|||d d S Nr7  r  r  rA   )rR   kstestrX   r   r   	r\   r   r  expected_statisticexpected_probr  rB   rS  r  rd   rd   re   _testOneU  s   zTestKSTest._testOnec                 C   s@   t j|d||d}t j|t jj||d}tt|||d d S r  )rR   r  ks_1sampr7  cdfr   rX   r   )r\   r   r  r  rB   rS  result_1samprd   rd   re   _test_kstest_and_ks1sampZ  s   z#TestKSTest._test_kstest_and_ks1sampc                 C   s,   t ddd}d}t|d}t|| d S )NrM   r   r'   r'  r7  )rX   rZ  rR   r  r   r\   r   r`  r   rd   rd   re   test_namedtuple_attributes_  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 )NrM   r   r'   r  r   
r  gQ?g333333g(\?gQ?g(\ſg{GzgHzG?g\(\gGzr  r  r  r  )rX   rZ  r  r-  rd   rd   re   test_agree_with_ks_1sampf  s   z#TestKSTest.test_agree_with_ks_1sampNr  rE   )r   r   r   r   r  r  r  r  rd   rd   rd   re   r  R  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  rE   c           	      C   s<   t j|t jj||d}t||g}tt|||d d S )Nr  rA   )rR   r  r7  r  rX   r   r   r  rd   rd   re   r  w     zTestKSOneSample._testOnec                 C   s0   t ddd}d}t|tjj}t|| d S )NrM   r   r'   r'  )rX   rZ  rR   r  r7  r  r   r  rd   rd   re   r  |  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 )NrM   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?rX   rZ  r  r-  rd   rd   re   test_agree_with_r  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 )NrX  r   h:)r  r   r+  r  ghх?g7?asympr  r  g^h?r  gv!ԉ}?g*z)?)rR   r7  r8  r  r-  rd   rd   re   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 s#w   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.5r|   r*   rM   ))r  r   Tr   )r  皙?Tr   )r  r   Try   )r  gTry   )r        ?Try   )r  r  Fr   )r  r)   Tgb?)r  r)   FgiNq>)r        ?Tgv(?)r  rY  TgT	?)@  g\(\?Fry   )r        ?Fg(>)r  gQ?Fg@c?)r        ?FgX+ʳP?r)  r!   )r  )r   rX   r  r   rY   r   r   r   r   checkintrn  bool)r\   datasetrd   rd   re   test_ks1samp_allpaths  s    z%TestKSOneSample.test_ks1samp_allpathsNr  )	r   r   r   r   r  r  r  r  r  rd   rd   rd   re   r  t  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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  )rR   ks_2samprX   r   r   )	r\   rd  re  r  r  r  r  rS  r  rd   rd   re   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  ry   )r  r  rd   rd   re   	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   rX   r   r  r\   r  data1pdata1mr  rd   rd   re   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  rY  皙?r  r  rX  r   r  r  rd   rd   re   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  r  g~z?r  gz;.B?r  r   r   {Gz?gn2IU?r  )r\   x100	x100_2_p1	x100_2_m1rd   rd   re   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   rL  r   r	  r  g?g@߿?r  g}n?r  r   g:[?g]O);?gѫ);?ry   r   r  )r\   r  x110
x110_20_p1
x110_20_m1rd   rd   re   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$   r=   r   rG   r%   r  g      ?g^dH?r  gQl6y?r  ry   r   gVdEVdE?g(f^?g!?gii?g+ ϖ?)rX   r   r  r  )r\   x2233x3344x2356x3467rd   rd   re   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  r  r  ry   r)   r  )r\   r  rd   rd   re   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 ,}|td | j||dd| | ddd	 | j||dd| | ddd	 W d    n1 sw   Y  tjdd#}td | j||dd| | ddd	 t	|td W d    d S 1 sw   Y  d S )N)r  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  Tr  r  
rX   rZ  r  r   r  r[   r  r  r  r  r\   n1n2deltar   r]   rc   r;  rd   rd   re   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 ,}|td | j||dd| | ddd	 | j||dd| | ddd	 W d    n1 sw   Y  tjdd#}td | j||dd| | ddd	 t	|td W d    d S 1 sw   Y  d S )N)r   L  r   r    r   r  r  g     ȹ@r  r  r  r  gZ?r  g     @@g@J?r  r  Tr  r  r  r  rd   rd   re   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)'  rL  r  r   r    r   r  r   r  g    `@g      <r  g     @g򼉷?r  gimb:r  )r\   r  r  lcmr  r   r]   rd   rd   re   	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  rX   r%  r&  r  r  r   rd   rd   re   test_gh11184E  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   rd   rd   re   test_gh11184_biggerM  s   z$TestKSTwoSamples.test_gh11184_biggerc                 C   s   t jd tdddD ]3}t jj|d}t jj|d dd}tj||dd	j}tj||d
d	j}t|d|  t|d|  qd S )Nr  r   i.  r  rG   r)   )r   r  r  r  r  r!   )	rX   r%  r&  rD  r  rR   r  r  r   )r\   r   vals1vals2r  r  rd   rd   re   test_gh12999W  s   zTestKSTwoSamples.test_gh12999c              	   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 )}|td | j||dd| ddd | j||dd| ddd W d    d S 1 sw   Y  d S )N)r  i*  r  r   r    r   r  r  g     @gkHY?r  r  gLɔ.?r  r  r  g.LbG2?r  rt   gr?֎?r  )rX   rZ  r  r   r  r[   )r\   r  r  r  r  r   r]   rc   rd   rd   re   testLargeBothc  s   "zTestKSTwoSamples.testLargeBothc                 C   s$   d}t ddgdg}t|| d S )Nr'  r   r    r!   )rR   r  r   r\   r`  r   rd   rd   re   testNamedAttributesu  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_outer_prob_inside_methodr   r   i  r  iK  r  )scipy.stats._stats_pyr  r  r   FloatingPointError)r\   r  r  rd   rd   re   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#  )r   r   rR   r  r  rd   rd   re   test_argument_checking  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    ry   r   )r   r  r  r  r  r  r  r  N)rX   r%  r&  rR   uniformr8  r  )r\   r  rvs1rvs2rd   rd   re   test_gh12218  s   zTestKSTwoSamples.test_gh12218N)r  )r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rd   rd   rd   re   r    s6    






r  c               	   C   sP  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 ,}	t jdd	 |		t
d
 tdd\}}W d    n1 sw   Y  W d    n1 sw   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dt |d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 sw   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	9 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 s(w   Y  t d'}tttj|d(|d) d*d+ }t  |}t j|d d d,d-f< t j|d d d.d/f< tj||ddd\} }tj||dddd0\}}t|| d1d2 t||| |dd1d2 tj||dddd0\}}t|| d1d2 t||| |dd1d2 d S )3N)gu?gȵI?r   r   g)\(?gKX@r   r?   r  r  r<  r  r   r'  rv  r    r  r;  r  r  r@   r  r  r  r#   rG     r*  r  rX  )r  r   r+  rv   rw   )ghm#1?gry̧?rz   r{   rZ  r  rM   r  r\  )r&   r!   r    r!   r"   c                 S   4   | dk r|dks| dkr|dkr|d S d|d  S Nr   r  r  r    r   rd   r9  r   altrd   rd   re   convert      ztest_ttest_rel.<locals>.convertr   rG  r   r   r  r1  r~  )!rX   rZ  r   rR   	ttest_relr   r*  r   r  r  r[   r   r  r   r  absr   r)  r  r   r   r
   r%  RandomStater7  r8  rY   r   r   rm  r   rV   	vectorize)trr  tprr  r  rvs1_2Drvs2_2Dr9  r   rc   r`  r   rvs1_3Drvs2_3Dr  r   r]   ananr  	converterrd   rd   re   test_ttest_rel  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  | d	d  }t||dd t|d
dd d S )Nr  r   r  r   r  r   r  rv   rw   r   r   r   )r  grh|?-C6?)rX   rY   rR   r  r
   r(  r  r   r]   r  r  r3rd   rd   re   test_ttest_rel_nan_2nd_arg  s   r"  c                  C   4   t g g } t| t jjsJ t| tjtjf d S r=  )rR   r  r^  	_stats_pyTtest_relResultr   rX   rY   rS  rd   rd   re   #test_ttest_rel_empty_1d_returns_nan      r'  zb, expected_shape)r   r#   r   r  )r   r   r   r  c                 C   X   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   rM   r?   r  )rX   r  rR   r  r^  r$  r%  rl   rY   r   r(  r  r   expected_shaper   rS  expected_valuerd   rd   re   test_ttest_rel_axis_size_zero(     
r.  c                  C   V   t d} t d}tj| |dd}t|tjjsJ t|jj	d t|j
j	d d S N)r   r&   r   r#   r&   r   r   r?   r#   r   )rX   r  rR   r  r^  r$  r%  r   r(  r)  r  r   r   rS  rd   rd   re    test_ttest_rel_nonaxis_size_zero7     

r5  c                 C   s   ddd}|| |||| S )Nr   c                 S   s<   t | } t j| |d}t j| |dd}| j| }|||fS )Nr?   r   rQ  )rX   r   rW   ro   r)  )r   r@   muro   nobsrd   rd   re   _statsE  s
   


z_desc_stats.<locals>._statsr  rd   )rd  re  r@   r9  rd   rd   re   _desc_statsD  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	 ,}
t j
d	d
 |
td tdd\}}W d    n1 sw   Y  W d    n1 sw   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dt |d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 sw   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
9 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 s~w   Y  t j|d d d d dd%f< t j|d d d d d&d'f< d(d) }t  |}tj||ddd\} }tj||dddd*\}}t|| d+d, t||| |dd+d, tj||dddd*\}}t|| d+d, t||| |dd+d, d S )-N	ru?g8Mѱ?r   r   r#   i   r   r?   r  r  r<  r  r   rv  r    r  r;  r  r  r  r  r  r  rG   r	  r*  r  rv   rw   )guͷ?g*,?rz   r{   rZ  r  rM   r  r   r$   rI   c                 S   r  r  rd   r  rd   rd   re   r    r  ztest_ttest_ind.<locals>.convertr  r1  r~  )!rX   rZ  r   rR   	ttest_indr   ttest_ind_from_statsr:  r*  r   r  r  r[   r   r  r  r   r  r   r)  r  r   r   r
   r%  r  r7  r8  rY   r   r   rm  r  )r  r  r  r  r  r  r  r9  r   argsrc   r  r  r  r   r]   r  r  r  rd   rd   re   test_ttest_indN  s   


 




"


r@  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	j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   rG   r   r    r#   r  r  r&   goʡ?g/$?)g-?r  gzG?g(\?gRQ?r@   N)r+  r@   	equal_varTrM   )r@   r+  r   z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r@   rB  r   r   )r@   rB  permutationsr+  r#   )updaterR   r=  r   )r\   r   r   rE  p_d	options_a	options_pstat_ar1  stat_pr  rd   rd   re   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   )r@   rD  r  r  r  r  r)   
rX   r%  r&  r2  rE  rR   r=  r   r(  r  )r\   Nr   r   rH  res_g_abres_g_bares_l_abres_l_bares_2_abres_2_bar  rd   rd   re    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s;J |j|jksCJ |j|jksKJ d S )Nr   r!   r   rD  )rX   r%  r&  r2  rR   r=  r   r  )r\   rM  r   r   r
  rf  rg  r  rd   rd   re   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sSJ t|	|
ks[J d S )Nr   r!   r"   r  .T)
rX   r%  r&  r2  r  r4  r   r   r*  r   )r\   r   r   r2  nanbrD  mat_permr1  t_statn_uniquerd   rd   re   !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   rF  r    r!   rM   r   )r@   rD  r+  r  r  r  r   rL  )	r\   rM  r   r   rH  rN  rO  rP  rQ  rd   rd   re   #test_ttest_ind_randperm_alternativeQ  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   rF  r"   r   rD  r+  r  r  r  r  r   r)   r    r  r   )
rX   r%  r&  r2  rE  rR   r=  r   r  r
   )	r\   rM  r   r   rH  rN  rP  rR  r  rd   rd   re   $test_ttest_ind_randperm_alternative2l  s2   




z@Test_ttest_ind_permutations.test_ttest_ind_randperm_alternative2c           	      C   s  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 sPw   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    d S 1 sw   Y  d S )Nr   rF  r#   )r#   r   )r&   r    )r'   r!   r   r^  rz   rw   r  r|   ru   r;  r?   )rX   r%  r&  r2  rY   rE  r   r   rR   r=  r   rZ   r[   r  anyr   r  r(  r
   rp  )	r\   rM  r   r   rH  r   rc   r  rg  rd   rd   re   $test_ttest_ind_permutation_nanpolicy  s6   




$0"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 sw   Y  t tdd tj| j| jdd W d    n1 s;w   Y  t tdd tj| j| jddd	 W d    d S 1 s]w   Y  d S )
NzPermutations must ber|   rN   rU  r*   z'hello' cannot be usedr   r  r^  )r   r   rR   r=  r  b2r   r   r  rd   rd   re   'test_ttest_ind_permutation_check_inputs  s   "zCTest_ttest_ind_permutations.test_ttest_ind_permutation_check_inputs),r   r   r   rM  rX   r%  r&  rw  r   r   r   r  rb  r  b3rR   r7  r8  rV   r*  r  r  rF  p_d_genp_d_bigtolistr  paramsr   r  r  default_rngr  r  r  rK  rT  rV  r\  r]  r  r_  ra  rc  rd   rd   rd   re   rA    sZ    ,(


*2

*
 $rA  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^  trimrX  )rD  rl  basic)idsrB  TF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 ] }|| }|| }tj||fd	di|}|j||< |j||< qt||j t||j d S )Nr   r#   r"   r%   r   r$   r&   r    r@   rN   )r    r!   r   r  r   r   r   r   r    r   rM   r#   r   r"   r   r   r   c                 s       | ]}t |V  qd S r=  rC  r>  rd   rd   re   	<genexpr>      z=Test_ttest_ind_common.test_ttest_many_dims.<locals>.<genexpr>)rX   r%  r&  r2  rR   r=  r   r(  r  r  tiler)  rm  r   r
   )r\   rk  rB  r   r   r   r@  rA  r4  r  rb  rg  r   r]   r)  
statisticspvaluesindicesxiyir  rd   rd   re   test_ttest_many_dims  s6   
 


z*Test_ttest_ind_common.test_ttest_many_dims)rl  rD  rm  r@   rM   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 0}t jd
d |	t
d tj||fd|i|}W d    n1 s[w   Y  W d    n1 sjw   Y  t |j}t|| t |j}	t|	| d S )NrG   )r#   r!   rG   r  rn  r   r    r!   r$   r?   r  r  z'invalid value encountered in less_equalr@   )rX   r%  randintr  rY   r  r  r   r  r  r[   rR   r=  r  r   r(  )
r\   rk  r@   r   r   r  rc   r   p_nansstatistic_nansrd   rd   re   test_nans_on_axis  s"    
z'Test_ttest_ind_common.test_nans_on_axisN)	r   r   r   r  r  r  r  r{  r  rd   rd   rd   re   rj    s$    #rj  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rX  )rm  g33333`@rI   g33333^@g(\P@r  gfffffڇ@gBM)u?g]@gyd?g	s5v@g{Gz?r  r  r  r   ffffff?r   rz  rz  r  r  r  r/   g@r  r,   r)   rz  g333333@rx  r  g@rw  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rl  rB  r   r   NrR   r=  r
   )r\   r   r   r  r  rl  r(  r  rd   rd   re   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)rI   rE   r  r   r  ,   rI   rE   r  r   r  r  )rP      rE   rI   rG     r  rP   r  rE   rI   rG  r  r  g
ףp=
?Fr  gRbv?r}  r   gOi?r  r\   r   r   r(  r  rd   rd   re   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
        r  r  rX  rl  gR?绽|=r   g^Nr  r  rd   rd   re   test_equal_varJ  s
   zTest_ttest_trim.test_equal_varz	alt,pr,tr))r  gjΜ>5?r  )r  gn4aƂW?r  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')
        r  r  rX  F)rl  rB  r  r  r   Nr  )r\   r  r  r  r   r   r(  r  rd   rd   re   test_alternativesd  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 w   Y  d}t t|d tjddgdtjdgdd	d
 W d    d S 1 sHw   Y  d S )Nz7Permutations are currently not supported with trimming.r|   r   r    r!   rX  )rl  rD  z4not supported by permutation tests or trimmed tests.rv   )rl  rx   )r   r   rR   r=  rX   rY   )r\   r}   rd   rd   re   test_errors_unsupportedx  s    "z'Test_ttest_trim.test_errors_unsupportedrl  )gɿr)   r   c                 C   sN   d}t t|d tjddgddg|d W d    d S 1 s w   Y  d S )Nz/Trimming percentage should be 0 <= `trim` < .5.r|   r   r    r  )r   r   rR   r=  )r\   rl  r}   rd   rd   re   test_trim_bounds_error  s   "z&Test_ttest_trim.test_trim_bounds_errorN)r   r   r   rh  r  r  r  r  r  r  r  r  r  rd   rd   rd   re   r    s<    
#

r  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 ]C}|\}}}}}}	|| jd	 k rc| ||||||	f |||||||	f ksbJ q;|||||| jd	  ||	f |||||||	f ks~J q;d S )Nr   r#   r"   r!   r   r$   r&   r    rN   r?   rp  )N.rq  c                 s   rr  r=  rC  r>  rd   rd   re   rs    rt  z.test__broadcast_concatenate.<locals>.<genexpr>)rX   r%  r&  r2  r   ru  r   r)  )
r   r   r  indexr@  rA  r4  lrF  rG  rd   rd   re   test__broadcast_concatenate  s   .8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dt|ddddd\}}tt|t| tt|| t|jd tt|ddt|d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> 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    d S 1 sQw   Y  d S )!Nr   r  r  r  FrB  rB  r   gJ?g*ʿr;  g@[?gωұ?ghG?r   r   r   r#   r<  r   rC  r?   r'  rv  r    r  rZ  r  r  r  rM   r  )rR   r=  r   r>  r:  rX   rZ  r   r*  r   r  r   r  r   r)  r  r   r  rY   rm  )r   r   r  r  r9  r   	tr_uneq_n	pr_uneq_nr  rvs3r  r  r  r  r?  r`  r   r  r  r  rd   rd   re   test_ttest_ind_with_uneq_var  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  rv   rw   r   r   r   )g8HgW@?)rX   rY   rR   r=  r
   r(  r  r   rd   rd   re   test_ttest_ind_nan_2nd_arg  s   
r  c                  C   r#  r=  )rR   r=  r^  r$  Ttest_indResultr   rX   rY   r&  rd   rd   re   #test_ttest_ind_empty_1d_returns_nan  r(  r  c                 C   r)  r*  )rX   r  rR   r=  r^  r$  r  rl   rY   r   r(  r  r+  rd   rd   re   test_ttest_ind_axis_size_zero%  r/  r  c                  C   r0  r1  rX   r  rR   r=  r^  r$  r  r   r(  r)  r  r4  rd   rd   re    test_ttest_ind_nonaxis_size_zero4  r6  r  c                  C   r0  )N)r   r%   r   r2  r   r?   r3  r  r4  rd   rd   re   2test_ttest_ind_nonaxis_size_zero_different_lengthsA  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      )rX   r   rR   r>  )mean1mean2std1std2nobs1nobs2rd   rd   re   test_gh5686O  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  )rR   r>  r   rX   rY   r&  rd   rd   re   %test_ttest_ind_from_stats_inputs_zeroW  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4 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 sw   Y  tj|ddddddf< t j|d d d d d d f ddd\}}t j|d d d d d d f dddd\}
}|||d}t|| t|
| t j|d d d d d d f dddd\}
}|||d}t|| t|
| d S )N)rG   r   r   r#   rG   r  r   r?   r   rE   rA   r  r    rZ  c                 S   r  r  rd   r  rd   rd   re   r  ~  r  z%test_ttest_1samp_new.<locals>.convertr  r  r  r  r  rM   r!   r"   r&   rv   rw   r  )rR   r7  r8  r,  rX   r~  r   r   r   r)  r  r   r  r
   r  rY   r   )r  r  n3rvn1rI  ry  rJ  p2rK  p3r9  r   r  r  r  r  pcr  rd   rd   re   test_ttest_1samp_new]  sh   
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 |td td\}}}}}}W d    n1 s&w   Y  W d    n1 s5w   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  ry   rJ   rA   r  )r   rX   r  r  r[   rR   describer   r   r  r   )r\   rc   rG  r  rF  r:  skkurtrd   rd   re   test_describe_scalar  s    


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 )Nr  r    r"   r    r#   r   r   r   r   r  r  r  r  ffffff?r  r  r  )r  r  r  r  H,p ?r"   TUUUUUrJ   rA   r   r?   rt   r'   )r'   )ry   r{  r  r0   ry   gGzrv   rw   rz   r{   )rX   rw  r~  rl   r   rR   r  r   r   r*  r   rY   r   r   r\   r   ncmmcmcvcskckurtcrG  r  rF  r:  r  r  rd   rd   re   test_describe_numbers  sH   
















z"TestDescribe.test_describe_numbersc                 C   s"   t td}d}t|| d S )Nr#   )r8  minmaxrW   varianceskewnessr  )rR   r  rX   r   r   )r\   rp  r`  rd   rd   re   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 )Nr  r  r    r#   r  r  r  )Q?r  r  r  r  r"   r  r   rg   r   r~  rJ   rA   )
rX   rw  r~  rl   r   rR   r  r   r
   r   r  rd   rd   re   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 )Nr  r  r    )r   )r   r  r  ga+?gE,p ?gUUUUUUr?   rJ   rA   )rX   rw  r~  rl   rR   r  r   r8  r   r  rW   r  r   r  r  )	r\   r   e_nobse_minmaxe_meane_vare_skewe_kurtr   rd   rd   re   test_describe_axis_none  s   z$TestDescribe.test_describe_axis_nonec                 C      t ttjg  d S r=  )r   r   rR   r  r  rd   rd   re   test_describe_empty     z TestDescribe.test_describe_emptyN)	r   r   r   r  r  r  r  r  r  rd   rd   rd   re   r    s    )r  c                  C   sf  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w   Y  d}ttj|
dd| tj|dd< tj|dd\}}tj|ddd\}}tj|dd
d\}}t||dd t||dd t|d|d  dd t||d dd tjdd t ttj|
d d W d    n	1 sw   Y  t ttj|
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 sw   Y  d%}ttj|
dd| tj|dd&< tj|d d dd\}}tj|d d ddd\}}tj|d d dd
d\}}t||dd t||dd t|d|d  dd t||d dd t ttj|
d d t ttj|
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 srw   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  rM   r   r   r    r!   r  rM   r   r   r    r!   r  rM   r   r   r    r!   r  rM   r   r   r    r!   r'  r  r  r  r  {   )r   r   r+  ry   r#   rA   r   r+  r?   rt   r'   r  r  )geGK?gZ^<ý?rv   rw   rG   r   r  r   r   r  rz   r{   r&   rC  r  )g9+%g?*ݗ?r   )gwGw@g{8NĦ?)
rf  r   :   r%   r   )   r   r   r      c                 S   s   g | ]
\}}t ||qS rd   )rX   rl   )r?  r@  r  rd   rd   re   rB  v  s    z'test_normalitytests.<locals>.<listcomp>r  T)r   r   rR   skewtestkurtosistest
normaltestrX   r   r   r   skewnormr8  r  r   laplacer   rY   r  r   r
   r  rD  rz  	enumerater   )	st_normalst_skewst_kurt	pv_normalpv_skewpv_kurtpv_skew_lesspv_kurt_lesspv_skew_greaterpv_kurt_greaterr   r`  r  r   r  r  rC  r   zlplzgpgrJ  rd   rd   re   test_normalitytests	  s   








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    rG   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)use_continuityr  )rR   ranksumsr   r]   r  mannwhitneyur
   )r\   r  rf  rg  rd   rd   re   test_ranksums_result_attributes  s   z,TestRankSums.test_ranksums_result_attributesc                 C   s   t | j| j}t|d d S )Nr'  )rR   r  r   r]   r   r\   r   rd   rd   re   test_ranksums_named_results  r  z(TestRankSums.test_ranksums_named_resultsc                 C   sF   t tdd tj| j| jdd W d    d S 1 sw   Y  d S )Nzalternative must be 'less'r|   r{   r  )r   r   rR   r  r   r]   r  rd   rd   re   test_input_validation  s   "z"TestRankSums.test_input_validationN)r   r   r   rX   r%  r&  r2  r   r]   r  r  r  r  r  r  rd   rd   rd   re   r  z  s    
r  c                   @   $   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  )rX   r%  r&  r  ra  rayleighr   rR   jarque_berar(  r  r   r\   r   r]   rC  rd   rd   re   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oM|	  koM|j
  koM|j
  koM|j
kn   t	||  kop|
  kop|j  kop|j  kop|jk d S    d S )Nr  r   r   r  r    P  )rX   r%  r&  r  rR   r   r  r  rV   r   r(  r  )r\   r   jb_test1JB1ry  jb_test2JB2r  jb_test3JB3r  rd   rd   re   test_jarque_bera_array_like  s   @Jz*TestJarqueBera.test_jarque_bera_array_likec                 C   r  r=  )r   r   rR   r   r  rd   rd   re   test_jarque_bera_size  r  z$TestJarqueBera.test_jarque_bera_sizeN)r   r   r   r  r
  r  rd   rd   rd   re   r    s    r  c                  C      t d} tttj|  d S )Nr  )rX   r   r   r   rR   r  r$  rd   rd   re   test_skewtest_too_few_samples     
r  c                  C   r  )Nr  )rX   r   r   r   rR   r  r$  rd   rd   re   !test_kurtosistest_too_few_samples  r  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@rE   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?r6   glPz.?rR   r  rT   Yr   r   r	   r7   	r\   u1ry  u2r  u3r  u4p4rd   rd   re   test_mannwhitneyu_one_sided  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.?r6   rR   r  rT   r  r   r	   r7   r\   r  ry  r  r  rd   rd   re   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?r6   g22?r  r  rd   rd   re   &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?r6   r  r  rd   rd   re   &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?չ?)rX   r   r
   rR   r  r   rd   rd   re   test_mannwhitneyu_ones  s   z'TestMannWhitneyU.test_mannwhitneyu_onesc                 C   s&   d}t j| j| jdd}t|| d S )Nr'  r  r  )rR   r  rT   r  r   r  rd   rd   re   #test_mannwhitneyu_result_attributes>  s   z4TestMannWhitneyU.test_mannwhitneyu_result_attributesN)r   r   r   rT   r  r7   r  r  r  r   r"  r#  rd   rd   rd   re   r    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  ry  gffffff@g333333@ffffff@g333333@r,   r  皙	@r   r  r  r+   r  gffffff@ @333333?r'  r*   ?r(  r  r  r  r  r
  r  r)   rX  rX  r	  r   g/"?r#   r_  )r   rR   pointbiserialrr   )r   r]   r`  r   rd   rd   re   test_pointbiserialE  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'   )rG  r   r   rG  r#   )㪪@I?g&>ڿr,  r+  )5@㪪@gIr.  r-  r    r&   rA   rH   )r#   rH   r'   r!   r    r    )g_v	@g1%?g"u?gZӼ?g!u @gq&@r"   )
rX   r   rR   obrientransformr
   r   r   r   rD  r  )rd  rI  r  re  rJ  r   r   r  rS  valuesrepsr2  transformed_valuesrd   rd   re   test_obrientransformU  s:   




r3  r   c                 C   s0   t j| |||d}t|||d t|j| d S )N)r@   r>   weightsr~  )rR   gmeanr
   r   r>   )
array_liker`  r@   r>   r  r4  r   rd   rd   re   check_equal_gmean  s   r7  c                 C   s.   t j| ||d}t|||d t|j| d S )N)r@   r>   r~  )rR   hmeanr
   r   r>   )r6  r`  r@   r>   r  r   rd   rd   re   check_equal_hmean  s   r9  c                   @   r  )TestHarMeanc                 C   s0   g d}d}t || g d}d}t || d S )NrJ  =b#A@r   gQ?r9  r\   r   r`  rd   rd   re   test_1d_list  s   
zTestHarMean.test_1d_listc                 C   s    t g d}d}t|| d S )NrJ  r;  rX   r   r9  r=  rd   rd   re   test_1d_array  s   zTestHarMean.test_1d_arrayc                 C   s&   t ddg}d}tt|| d S )Nr   r   ry   )rX   r   r   rR   r8  r=  rd   rd   re   test_1d_array_with_zero  s   z#TestHarMean.test_1d_array_with_zeroc                 C   s    t g d}tttj| d S )N)r   r   rM   )rX   r   r   r   rR   r8  r  rd   rd   re   !test_1d_array_with_negative_value  s   z-TestHarMean.test_1d_array_with_negative_valuec                 C   (   g dg dg dg}d}t || d S NrG   r   rG  rH  rF  r  rK  r  r  r   rL  x   gmWUC@r<  r=  rd   rd   re   test_2d_list     zTestHarMean.test_2d_listc                 C   s.   g dg dg dg}d}t t|| d S rD  )r9  rX   r   r=  rd   rd   re   test_2d_array  s   zTestHarMean.test_2d_arrayc                 C   6   g dg dg dg}t g d}t||dd d S NrE  rF  rG  )U|ϊ6@g4.=C@JQ6LsJ@E]P@r   r?   r?  r=  rd   rd   re   test_2d_axis0     zTestHarMean.test_2d_axis0c                 C   <   g dg dg dg}t g d}ttj|dd| d S )NrG   r   rG  rH  rF  rG  )rN  ry   rO  rP  r   r?   rX   r   r
   rR   r8  r=  rd   rd   re   test_2d_axis0_with_zero  r  z#TestHarMean.test_2d_axis0_with_zeroc                 C   rL  NrE  rF  rG  )g3333333@O@y@Y@r   r?   r?  r=  rd   rd   re   test_2d_axis1  rR  zTestHarMean.test_2d_axis1c                 C   rS  )NrT  rF  rG  )ry   rX  rY  r   r?   rU  r=  rd   rd   re   test_2d_axis1_with_zero  r  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 rM  )r   r9  r=  rd   rd   re   test_2d_matrix_axis0  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 rW  )r   r*  r9  r=  rd   rd   re   test_2d_matrix_axis1  s   z TestHarMean.test_2d_matrix_axis1N)r   r   r   r>  r@  rA  rB  rI  rK  rQ  rV  rZ  r[  r\  r]  rd   rd   rd   re   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 )NrJ  sŤF@r   r\  rY  r1  r~  )r7  r   r=  rd   rd   re   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 )NrJ  r_  r   r\  rY  r=   )rX   r   r7  r   r   r=  rd   rd   re   r@    s   

zTestGeoMean.test_1d_arrayc                 C   rC  NrE  rF  rG  g/,$qJ@r7  r=  rd   rd   re   rI    rJ  zTestGeoMean.test_2d_listc                 C   s,   g dg dg dg}d}t t|| d S r`  )r7  r   r=  rd   rd   re   rK    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 
NrE  rF  rG  )g4@A@g5H@g`8|wЭN@gm~&+R@r   r?   r   r1  r@   r  rX   r   r7  r=  rd   rd   re   rQ    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 NrE  rF  rG  )gD" 6"6@gcP@g
ҧZ@r   r?   r   r\  rY  r1  rc  )rX   r   r7  r   r\   r   r`  r:  rd   rd   re   rZ    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 rb  )r   r7  r   rR   r5  r=  rd   rd   re   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 re  )r   r*  r7  r   r   rf  rd   rd   re   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   rh  r~  )r   r7  r=  rd   rd   re   test_large_values&  s   zTestGeoMean.test_large_valuesc                 C   sH   g d}d}t jdd t|| W d    d S 1 sw   Y  d S )N
rG   r   rG  rH  rF  r  rK  r  r  r   ry   r  r  )rX   r  r7  r=  rd   rd   re   test_1d_list0+  s
   "zTestGeoMean.test_1d_list0c                 C   sN   t g d}d}t jdd t|| W d    d S 1 s w   Y  d S )Nrh  ry   r  )divide)rX   r   r  r7  r=  rd   rd   re   test_1d_array02  s
   "zTestGeoMean.test_1d_array0c                 C   sJ   g d}t j}t jdd t|| W d    d S 1 sw   Y  d S )N)
rG   r   rG  rH  rF  r  rK  r  r  rM   r  r  )rX   rY   r  r7  r=  rd   rd   re   test_1d_list_neg9  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!   r  GZ*oG8@h㈵>r4  r  ra  )r\   r4  r   r`  rd   rd   re   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 )Nr  rm  rn  ro  rp  rd  r\   r   r4  r`  rd   rd   re   test_weights_1d_arrayH  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 )Nrb  )r    r#   r$   r"   r!   r#   )r   r   r   r   r   r   r  rn  ro  rp  )rX   r   r  r7  rr  rd   rd   re   test_weights_masked_1d_arrayP  s   z(TestGeoMean.test_weights_masked_1d_arrayN)r   r   r   r>  r@  rI  rK  rQ  rZ  r\  r]  rg  ri  rk  rl  rq  rs  rt  rd   rd   rd   re   r^    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=  )rR   gstdarray_1dr
   gstd_array_1dr\   gstd_actualrd   rd   re   r@  _  s   z,TestGeometricStandardDeviation.test_1d_arrayc                 C   s    t t| j}t|| j d S r=  )rR   rv  r  rw  r
   rx  ry  rd   rd   re    test_1d_numeric_array_like_inputc     z?TestGeometricStandardDeviation.test_1d_numeric_array_like_inputc                 C   s>   t jtdd td W d    d S 1 sw   Y  d S )NzInvalid array inputr|   z3This should fail as it can not be cast to an array.)r  r   r   rR   rv  r  rd   rd   re   ,test_raises_value_error_non_array_like_inputg  s   "zKTestGeometricStandardDeviation.test_raises_value_error_non_array_like_inputc                 C   J   t jtdd tt| jdg W d    d S 1 sw   Y  d S )NNon positive valuer|   r   r  r   r   rR   rv  rX   r  rw  r  rd   rd   re   "test_raises_value_error_zero_entryk     "zATestGeometricStandardDeviation.test_raises_value_error_zero_entryc                 C   r~  )Nr  r|   rM   r  r  rd   rd   re   &test_raises_value_error_negative_entryo  r  zETestGeometricStandardDeviation.test_raises_value_error_negative_entryc                 C   sL   t jtdd tt| jtjg W d    d S 1 sw   Y  d S )NzInfinite valuer|   )	r  r   r   rR   rv  rX   r  rw  r   r  rd   rd   re   !test_raises_value_error_inf_entrys  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!   r?   r"   )r   rX   rY   rR   rv  r
   )r\   r   rz  rd   rd   re   test_propagates_nan_valuesw  s   z9TestGeometricStandardDeviation.test_propagates_nan_valuesc                 C   sH   t jtdd tj| j| jjd W d    d S 1 sw   Y  d S )NzDegrees of freedom <= 0r|   rg   )r  r   r   rR   rv  rw  r   r  rd   rd   re   )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 )Nr?   )rR   rv  array_3dr
   rx  ry  rd   rd   re   test_3d_array  r|  z,TestGeometricStandardDeviation.test_3d_arrayc                 C   s"   t j| jdd}t|ddg d S )Nr  r?   g~d@g<
?)rR   rv  r  r
   ry  rd   rd   re   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   r?   )gĶ?@gQӫ@g֌@gן7R@)g%Ȁ@ge@gv6B5 @g _?)gE ?gީ?gk̊Y?g%:?rR   rv  r  rX   r   r
   r\   rz  gstd_desiredrd   rd   re   test_3d_array_axis_0  s   z3TestGeometricStandardDeviation.test_3d_array_axis_0c                 C   4   t j| jdd}tg dg dg}t|| d S )Nr   r?   )gN@g85@g'ĥ?gwth?)gHnaX?gG?gBu?gE?r  r  rd   rd   re   test_3d_array_axis_1     z3TestGeometricStandardDeviation.test_3d_array_axis_1c                 C   r  )Nr    r?   )gt80?gі?g?)gۘ]~?gmT6(?g	G?r  r  rd   rd   re   test_3d_array_axis_2  r  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    r?   rZ  r  )	rX   r  masked_wherer  rR   rv  r
   r   r  )r\   r  rz  r  r  rd   rd   re   test_masked_3d_array  s   
z3TestGeometricStandardDeviation.test_masked_3d_arrayN)r   r   r   rX   r   rw  rx  rV   r  r@  r{  r}  r  r  r  r  r  r  r  r  r  r  r  rd   rd   rd   re   ru  Y  s$    	ru  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 q$ttdddddd d S )Nr	  rX  r#   r  g?g333333?gffffff?r	  i  )ry   ry   gs  gG|G{g	ɺM>6g>
ztt+g#ӌRM/gF׸fz2gU8u5g8M8gФ)Ba?g%վ?g*+a5?gś?gڒJ|>rI   zfail forp=%f)r7   err_msgrF  r   gVݶ3;r6   )rX   r  rZ  r   r	   rR   
binom_test)pprG  r   resultsr   r   rd   rd   re   test_binomtest  s   
r  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 ]  fddt  d D }t||  d  dd q%d S )Nr   )r)   r   r)   )rY  r   r   rY  )r  r  r   r  r  )r        ?r   r   r  r  )r        ?      ?r   r  r  r  )r  r        ?r   r   r  r  r  )	      ?      ?     ?     @?r   r  r  r  r  )
      p?      ?      ?     @?r   r   r  r  r  r  )      `?      ?      ?      ?      ?r   r  r  r  r  r  r   rH   c                    s   g | ]	}t | d qS )r)   )rR   r  )r?  r:  r4  rd   re   rB    s    z#test_binomtest2.<locals>.<listcomp>rG   rA   )rD  r   )rg  rf  rd   r  re   test_binomtest2  s   r  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    rH   r   rD  rR   r  r?  r:  r4  rd   rd   re   rB    s
    
z#test_binomtest3.<locals>.<listcomp>r   rH   )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?r  g
ņB?g  ?g$?g{dU'?gD:B?gwV?gR0Nf?gOq?r  g[k^?g T+?gO?gggh(?gP-@?gOQ?g}^?gV7_i?r  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?r  gqIb?g  @N?g1Y?g5?gO?gc-?gk?g )?r  glMV?g?$?gT*r?gCqRv?grx?gωZ?gExY?g<T ?r  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    rH   r   r   r  r  rd   rd   re   rB  0  
    
 c              	   S   s6   g | ]}t d dD ]}t|d || d| q	qS r  r  r  rd   rd   re   rB  2  r  rJ   rA   )rD  r   rX   r~  r4  r  r   r   )r  binom_testm1binom_testp1res4_p1res4_m1rd   rd   re   test_binomtest3  s   	(r  c                   @   r  )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 )NrH   r	  rG   rX  r'   left)tailr    tE]t?r!   r   r  )rX   r   r   sortrR   trim1r  rd   rd   re   
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 )NrH   r  r!   r&   rX  )r    r!   r"   r#   r$   r%   r&   r\  r$   r"   r   r   )r    r&   rE   r   )r!   r'   r   rD   r  r	  )rX   r   r   r  rR   trimbothr   rV   r*  r   r   r  rd   rd   re   test_trimbothK  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 ]}tj|d|d}tt 
||dd}	t||	 qt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#   rG   r   r%   r!   r$   )r!   r#   r   r   r    r"   r\  r$   r"   F)orderr   )r+   r1   g      -@g     4@rn  )r   r   r!   r    )r   rt   r  r*  ro  g      ,@)r%   rH   rI   rD   r   r$   r  r   r#   r   r  rG   rP   r'   r  r   r  r   r    rE   r"   rJ   r&   r!   rF   )r#   r"   r!   r   r    r   r+   r  r   )r#   r$   r"   r%   r  )r   r   r    r!   rM   r?   r   r  ry   )rX   r   r   rV   r   rR   	trim_meanr%  r&  r|  r  rp  r   r   rY   )
r\   r   idxr  r  idx4a4r@   rf  rg  rd   rd   re   test_trim_mean]  s<   "
zTestTrim.test_trim_meanN)r   r   r   r  r  r  rd   rd   rd   re   r  9  s    r  c                   @   r  )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 )Nr  rL      r   r   r#   r"   rX   r  rZ  rR   	sigmaclipr   minmaxr   rW   ro   r   r\   r   factr  lowupprd   rd   re   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 )
Nr  rL   r  r   r   r#   r*   r"   $   r  r  rd   rd   re   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 )Nr  rL   rH   r!   ?)rX   r  rZ  rR   r  r   r  r  r   rW   ro   r  rd   rd   re   test_sigmaclip3  s   zTestSigmaClip.test_sigmaclip3c                 C   sF   t t dddt dddf}d}t|||}d}t|| d S )	Nr  rL   rH   r  r  r!   r  )clippedr  r  )rX   r  rZ  rR   r  r   )r\   r   r  r   r`  rd   rd   re    test_sigmaclip_result_attributes  s   z.TestSigmaClip.test_sigmaclip_result_attributesc                 C   s"   t d}tt|d | d S )NrG   r   )rX   r~  r   rR   r  r-  rd   rd   re   test_std_zero  s   
zTestSigmaClip.test_std_zeroN)r   r   r   r  r  r  r  r  rd   rd   rd   re   r    s    
r  c                   @   T   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rV|j  krV|	jksYJ  J |j	|j	  krm|j	  krm|	j	kspJ  J d S )N)	rJ   rJ   rJ   rJ   rJ   rJ   rJ   rI   rI   )	rE   rJ   rI   rI   rI   rI   rI   rH   rH   )	rE   rE   rJ   rJ   rJ   rJ   rJ   rI   rI   )	r   rE   rJ   rJ   rJ   rI   rI   rI   rH   r=   )
rX   r   r,  r  uint8r   rR   alexandergovernr  r(  )
r\   r?  
args_int16
args_int32
args_uint8args_float64	res_int16	res_int32	res_unit8res_float64rd   rd   re   test_compare_dtypes  s.   



z'TestAlexanderGovern.test_compare_dtypesc                 C   sH  t tdd tddgg  W d    n1 sw   Y  t tdd tddgd W d    n1 s7w   Y  t tdd tddgdg W d    n1 sVw   Y  t tdd tddgtjtjg W d    n1 sxw   Y  t tdd tddgddgddgg W d    d S 1 sw   Y  d S )	Nz+Input sample size must be greater than one.r|   r   r    zInput samples must be finite.z%Input samples must be one-dimensionalr!   r"   )r   r   rR   r  rX   r   r  rd   rd   re   test_bad_inputs  s   "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rR   r  r
   r(  r  )r\   onetwoeightsolnrd   rd   re   test_compare_r  s   z"TestAlexanderGovern.test_compare_rc                 C   sd   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@r	  r   g R8߱?r  g.UikL@g&Zݱ?Nr  )r\   youngmiddleoldr  rd   rd   re   test_compare_scholar  s   z(TestAlexanderGovern.test_compare_scholarc                 C   sZ   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?ro  r   gOZ}?g9$?g6MDd}?Nr  )r\   rd  re  r  rd   rd   re   test_compare_scholar3Q  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   rX   rY   rR   r  r   r  r(  )r\   r?  r   rd   rd   re   test_nan_policy_propogate  s   
z-TestAlexanderGovern.test_nan_policy_propogatec                 C   sT   g ddt jgg}ttdd tj|ddi W d    d S 1 s#w   Y  d S )Nr   r   r  r|   rx   rz   )rX   rY   r   r   rR   r  r\   r?  rd   rd   re   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   rx   rv   r  )r\   args_nanargs_no_nanres_nan
res_no_nanrd   rd   re   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    d S 1 s(w   Y  d S r   )	r   r   rR   r  r   r(  rX   rY   r  r  rd   rd   re   r     s   

"z'TestAlexanderGovern.test_constant_inputN)r   r   r   r  r  r  r  r  r  r  r  r   rd   rd   rd   re   r    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    ry   r   rR   f_onewayr   r\   r  r   rd   rd   re   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)   r1  r~  )rR   r  r   r
   rX   r   r  rd   rd   re   r     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  rd   rd   re   test_known_exact  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    r=       gŸ?r1  r~  )rX   r   uint16rR   r  r
   )r\   r   r   r  r   rd   rd   re   test_large_integer_array  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  r=   r  r	  r'  )rX   r   r
  rR   r  r   )r\   r   r   r   r`  rd   rd   re   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 s1w   Y  dd |dd	 D }t	j
|d
d}|j\ tt	}	t|d d } fdd|	D }
tj|
 }d}||v rvd}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 rd   )stripsplit)r?  linerd   rd   re   rB    s    z)TestFOneWay.test_nist.<locals>.<listcomp>rH  rs  r  )skiprowsr   rM   c                    s   g | ]} |k qS rd   rd   r>  r  rd   re   rB    s    )r  r  r  r  zFailing testcase: %s)r  r  )ospathabspathjoindirname__file__openreadr  rX   loadtxtr*  r  r  r+  rn  rR   r  r
   )r\   	filenames	test_caser  fnamefcontent	certifieddatafcatyxlistr   hard_tcrd   r  re   	test_nist  s0   



zTestFOneWay.test_nistza, b, expected)r  r  r  )r%   r%   r%   r   c                 C   sP   t tj t||\}}|sJ ||kW d    d S 1 s!w   Y  d S r=  )r   rR   F_onewayConstantInputWarningr  )r\   r   r   r  r!  r   rd   rd   re   r     s   "zTestFOneWay.test_constant_inputr@   )r  rM   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 rR|j}|j}|j}d}nd}ttj tj||||d\}}W d    n1 sow   Y  dD ],}tt |||t |||t |||\}	}
t|| |	dd t|| |
dd qvdD ]=}ttj. tt |||t |||t |||\}	}
t	|| |	 t	|| |
 W d    n1 sw   Y  qd 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!   )rM   r   r   r   r?   r  r1  r~  rv  )
rX   r   r*  r   rR   r)  r  taker
   r   )r\   r@   r   r   r  	take_axisr!  r   rA  fjpjrd   rd   re   test_2d_inputs  s^   


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s<J |jdksCJ t|jd D ]<}t|jd D ]2}t||d d |f ||d d |f ||d d |f \}}	t||||f  t|	|||f  qSqJd S )Nr   r      r"   r#   r%   r       r&   q   r?   )r"   r%   r   )	rX   r   rV   cosrR   r  r)  rD  r
   )
r\   r   r   r  r!  r   r@  rA  fijpijrd   rd   re   test_3d_inputs!  s    <zTestFOneWay.test_3d_inputsc                 C   sX   t tj tg dg g d}t|tjtjf W d    d S 1 s%w   Y  d S )Nr   r  r   rR   F_onewayBadInputSizesWarningr  r   rX   rY   rR  rd   rd   re   test_length0_1d_error2  s   "z!TestFOneWay.test_length0_1d_errorc                 C   s   t tj< d}td|f}td|f}td|f}t|||\}}tj|ftjd}t|| t|| W d    d S 1 sDw   Y  d S )Nr!   r"   r   r#   r  )	r   rR   r7  rX   r~  r  rl   rY   r   )r\   ncolsr   r   r  r!  r   nansrd   rd   re   test_length0_2d_error8  s   
"z!TestFOneWay.test_length0_2d_errorc                 C   sZ   t tj tdgdgdgdg}t|tjtjf W d    d S 1 s&w   Y  d S )NrG   rH   rI   rJ   r6  rR  rd   rd   re   test_all_length_oneC  s   "zTestFOneWay.test_all_length_oner?  rd   r   c                 C   s8   t t tj|  W d    d S 1 sw   Y  d S r=  )r   r  rR   r  r  rd   rd   re   test_too_few_inputsH  s   
"zTestFOneWay.test_too_few_inputsc                 C   sT   t d}t d}tt j tj||dd W d    d S 1 s#w   Y  d S )Nr  r#   r"   r    r?   )rX   r~  r   r  rR   r  r\   r   r   rd   rd   re   test_axis_errorM  s
   

"zTestFOneWay.test_axis_errorc                 C   sR   t d}t d}tt tj||dd W d    d S 1 s"w   Y  d S )Nr  r>  r   r?   )rX   r~  r   r   rR   r  r?  rd   rd   re   test_bad_shapesS  s
   


"zTestFOneWay.test_bad_shapesN)r   r   r   r  r   r  r  r  r(  r  r  r  rX   r   r   rY   r   r.  r5  r8  r;  r<  r=  r@  rA  rd   rd   rd   re   r     s,    
 "$

.
r   c                   @   r  )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   )	rR   kruskalr   r	   rb  rU  rc  rX   r   r\   r   r]   hr   rd   rd   re   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 )Nr   r    r"   r$   r&   rG   r  rG   r6   r   )rR   rC  r	   rb  rU  rc  rX   r   rD  rd   rd   re   r   e  s   zTestKruskal.test_basicc                 C   s<   dg}ddg}d}d}|| }t ||\}}t|| d S )Nr   r    r  r  )rR   rC  r   r\   r   r]   h_uncorrrH  r  rE  r   rd   rd   re   test_simple_tieo  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        )rn  rR   rC  r	   rH  rd   rd   re   test_another_tiez  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 )Nr  r  r    r5   r   rK  rL  )rn  rR   rC  r	   rb  rU  rc  )	r\   r   r]   rC  rI  rH  r  rE  r   rd   rd   re   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 )Nr  r  )r   rR   rC  rX   rY   r  rd   rd   re   r    s    zTestKruskal.test_emptyc                 C   s.   g d}g d}t ||}d}t|| d S )Nr   rG  r'  )rR   rC  r   )r\   r   r]   r   r`  rd   rd   re   test_kruskal_result_attributes  s
   z*TestKruskal.test_kruskal_result_attributesc                 C   r  )Nrt   r'   rv   rw   r   rz   r{   )	rX   r   rY   r   rR   rC  r   r   r   r-  rd   rd   re   r/    s   

zTestKruskal.test_nan_policyc                 C   sB   d}t j|}t j|d }t||\}}d}t|| d S )Nr  rF  r   )rX   r%  r'  rR   rC  r	   )r\   rG  r   r]   rE  r   r  rd   rd   re   test_large_no_samples  s   z!TestKruskal.test_large_no_samplesN)r   r   r   rF  r   rJ  rM  rN  r  rO  r/  rP  rd   rd   rd   re   rB  Z  s    

	rB  c                   @   r  )TestCombinePvaluesc                 C   (   t jg ddd\}}t|ddd d S )Nr  rX  r  r  r  gf?r"   r6   rR   combine_pvaluesr	   )r\   xsqr   rd   rd   re   test_fisher  s   zTestCombinePvalues.test_fisherc                 C   rR  )NrS  stoufferr  S:X?r"   r6   rT  r\   Zr   rd   rd   re   test_stouffer     z TestCombinePvalues.test_stoufferc                 C   rR  )N)r)   r)   r)   rX  r  r)   r"   r6   rT  rZ  rd   rd   re   test_stouffer2  r]  z!TestCombinePvalues.test_stouffer2c                 C   0   t jg ddtdd\}}t|ddd d S )NrS  rX  r!   r  r4  rY  r"   r6   )rR   rU  rX   r~  r	   rZ  rd   rd   re   test_weighted_stouffer     
z)TestCombinePvalues.test_weighted_stoufferc                 C   r_  )NrS  rX  )r   r"   r'   r`  g46<?r"   r6   )rR   rU  rX   r   r	   rZ  rd   rd   re   test_weighted_stouffer2  rb  z*TestCombinePvalues.test_weighted_stouffer2c                 C   rR  )NrS  r^  r  g&J?r"   r6   rT  rZ  rd   rd   re   test_pearson  r]  zTestCombinePvalues.test_pearsonc                 C   rR  )NrS  tippettr  g
}?r"   r6   rT  rZ  rd   rd   re   test_tippett  r]  zTestCombinePvalues.test_tippettc                 C   rR  )N)r	  r	  r	  mudholkar_georger  g&?r"   r6   rT  rZ  rd   rd   re   test_mudholkar_george  r]  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 )	NrS  rg  r  r  r^  r)   r"   r6   rT  )r\   r[  r   Z_fp_fZ_pp_prd   rd   re   0test_mudholkar_george_equal_fisher_minus_pearson  s   zCTestCombinePvalues.test_mudholkar_george_equal_fisher_minus_pearsonN)r   r   r   rW  r\  r^  ra  rc  rd  rf  rh  rm  rd   rd   rd   re   rQ    s    rQ  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   r   r   rR   wasserstein_distancer  rd   rd   re   &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!   ro  r  rd   rd   re   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!   rM   ro  r  rd   rd   re   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   ro  r  rd   rd   re   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   )r   r   rR   rp  rX   r   r  rd   rd   re   test_inf_weight  s   z)TestCdfDistanceValidation.test_inf_weightN)	r   r   r   r   rq  rr  rs  rt  ru  rd   rd   rd   re   rn    s    rn  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!   rY  r    r)  r   r   rR   rp  r  rd   rd   re   rF    s&   z#TestWassersteinDistance.test_simplec                 C   D   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   rR   rp  r  rd   rd   re   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   r  r#   rG   r  )rH   rI   rJ   rE   r   )r-   g@r&  )r$  r%   rv  )r!   r   r   )r   r!   r   r+   rw  r  rd   rd   re   
test_shift  s   z"TestWassersteinDistance.test_shiftc              	   C   F   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"   rw  r  rd   rd   re   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  rG  r  rM   )r4  )
rX   r   
zeros_liker   rR   rp  rW   r  r4  average)r\   r9  r:  	u_weights	v_weightsrd   rd   re   test_collapse6  s   

z%TestWassersteinDistance.test_collapsec              	   C   F   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    rw  r  rd   rd   re   rr  E  s   z(TestWassersteinDistance.test_zero_weightc                 C      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    d S 1 sZw   Y  d S Nr   r    ru   )	r   rR   rp  rX   r   r   rZ   r[   rY   r  rd   rd   re   test_inf_valuesL  s&   "z'TestWassersteinDistance.test_inf_valuesN)r   r   r   r   rF  r{  r|  r  r  rr  r  rd   rd   rd   re   rv    s    	
rv  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!   rY  r   r)  r   g3Ey?r   rR   energy_distancerX   r   r  rd   rd   re   rF  c  s$   zTestEnergyDistance.test_simplec                 C   rx  ry  )r   rR   r  r  rd   rd   re   r{  s  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    r  r#   gS[:XL	@r  r  rd   rd   re   r|  {  s
   zTestEnergyDistance.test_shiftc              	   C   r}  r~  r   rR   r  r  rd   rd   re   r    s   z'TestEnergyDistance.test_combine_weightsc              	   C   r  r  r  r  rd   rd   re   rr    s   z#TestEnergyDistance.test_zero_weightc                 C   r  r  )	r   rR   r  rX   r   r   rZ   r[   rY   r  rd   rd   re   r    s     "z"TestEnergyDistance.test_inf_valuesN)
r   r   r   r   rF  r{  r|  r  rr  r  rd   rd   rd   re   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"   rJ   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  r6   |	&	@|	&	gҏGg?g@-pL?)rR   brunnermunzelrT   r  r	   r7   r   r  rd   rd   re   test_brunnermunzel_one_sided  s2   
z.TestBrunnerMunzel.test_brunnermunzel_one_sidedc                 C   t   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  r6   r  r   ҏGw?rR   r  rT   r  r	   r7   r  rd   rd   re   test_brunnermunzel_two_sided  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 )Nr6   r  r  r  r  r  rd   rd   re   test_brunnermunzel_default  s   
z,TestBrunnerMunzel.test_brunnermunzel_defaultc                 C   6   d}d}d}t |dv tttj| j| j||| d S )Nr;  r9  r;  )r  r  r  r   r   r   rR   r  rT   r  r\   r  distributionrx   rd   rd   re   $test_brunnermunzel_alternative_error     z6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc                 C   r  )Nr  )r  r6   r  r  g "H[?r  r  rd   rd   re   $test_brunnermunzel_distribution_norm  s   
z6TestBrunnerMunzel.test_brunnermunzel_distribution_normc                 C   r  )Nr  r;  r;  )r9  r  r  r  rd   rd   re   %test_brunnermunzel_distribution_error  r  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=  )rR   r  rT   r  r   rX   rY   )r\   r  ry  r  r  r  r  rd   rd   re   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;  rw   )rX   rY   rR   r  r   r\   rT   r  r  ry  r  r  rd   rd   re   &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  r9  rz   )rX   rY   r   r   rR   r  )r\   rT   r  r  r  rx   rd   rd   re   "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  rv   rw   r6   r  r  r  )rX   rY   rR   r  r	   r7   r  rd   rd   re   !test_brunnermunzel_nan_input_omit+  s   $
z3TestBrunnerMunzel.test_brunnermunzel_nan_input_omitN)r   r   r   rT   r  r7   r  r  r  r  r  r  r  r  r  r  rd   rd   rd   re   r    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  r7  r   rY  Tc                 S   s   t |  S r=  )rX   r  r$  rd   rd   re   r%  I  r?  z6TestRatioUniforms.test_rv_generation.<locals>.<lambda>rM   r   )umaxvminvmaxr   r+  expon)	rR   r7  pdfrX   r   rvs_ratio_uniformsr   r  r  )r\   r!  v_boundr  r  r  r8  rd   rd   re   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  r  )r!   r   )r!   r!   r!   rI      r+  r   r  )	rR   r7  r  rX   r   r  r   r,  r)  )r\   r!  r  r  r  r  r  r  r!  r4r5r6r7r8rd   rd   re   
test_shapeN  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  r  r  r  )	rR   r7  r  rX   r   r%  r&  r  r   )r\   r!  r  r  r  r  r  r  rd   rd   re   test_random_staten  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  rM   r   )rR   r7  r  r   r   r  )r\   r!  rd   rd   re   test_exceptionsx  s   
z!TestRatioUniforms.test_exceptionsN)r   r   r   r   r  r  r  r  rd   rd   rd   re   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#   rX   r   r   r   rR   multiscale_graphcorrr   rd   rd   re   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"   rG   )rX   r   rV   r   r   rR   r  r   rd   rd   re   test_error_shape  s   z%TestMGCErrorWarnings.test_error_shapec                 C   s(   t d}t d}tttj|| d S )Nr!   r  r   rd   rd   re   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   r=   r   )rX   r   rn  rY   r   r   rR   r  r   rd   rd   re   test_error_nans  s
   

z$TestMGCErrorWarnings.test_error_nansc                 C   &   t d}d}tttj|||d d S )Nr   r   )compute_distancer  )r\   r   r  rd   rd   re   test_error_wrongdisttype  s
   

z-TestMGCErrorWarnings.test_error_wrongdisttyper1  rM   1c                 C   s"   t d}tttj|||d d S )Nr   r1  r  )r\   r1  r   rd   rd   re   test_error_reps  s   
z$TestMGCErrorWarnings.test_error_repsc                 C   r  )Nr   r   r  )rX   r   r   r[   rR   r  )r\   r   r1  rd   rd   re   test_warns_reps  s   
z$TestMGCErrorWarnings.test_warns_repsc                 C   s.   t d}t dt j }tttj|| d S )Nr   )rX   r   r~  r   r   r   rR   r  r   rd   rd   re   test_error_infty  s   
z%TestMGCErrorWarnings.test_error_inftyN)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  rd   rd   rd   re   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   r  c                 C   sp  |dkrt jjdd|dfd}|dt jj|jdfd  }n||dkrQt t jjdd|dfd}|t t j|  }|t t j|  d	t jj|jdfd  }nI|d
krt 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rt jj	dd||d fd}t j||fdd}||fS )Nr  rM   r   r  r  	nonlinearr   r#   r  independencer)   )r   r   r!   r    z3sim_type must be linear, nonlinear, or independencer?   )rX   r%  r  random_sampler   r   r2  pir[  r  binomialr   r  )r\   sampsdimssim_typer   r]   unifr9  r:  u_2v_2
dims_noiserd   rd   re   _simulations  s*   zTestMGCStat._simulationszsim_type, obs_stat, obs_pvalue))r  r  r	  )r  w/?r	  )r  gUN@g(\?c           	      C   sR   t jd | jdd|d\}}t||\}}}t||dd t||dd d S )Nr  r   r   r  r  r  r6   rX   r%  r&  r  rR   r  r	   	r\   r  obs_stat
obs_pvaluer   r]   rf  r  r1  rd   rd   re   	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#   r  r   r6   r  r  rd   rd   re   
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   r6   r	  T)
is_twosamp)rX   r%  r&  r  r  rR   r  r	   r\   r   r]   rf  r  r1  rd   rd   re   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  r  r    )workersr  r6   r	  r  r  rd   rd   re   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  r  r  r  r6   r	  )r  rR   r  r	   r  rd   rd   re   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  r  	euclidean)metric)r  r+  r  r6   r	  )rX   r%  r&  r  r   rR   r  r	   )r\   r   r]   distxdisty	stat_distpvalue_distr1  rd   rd   re   test_dist_perm3  s   zTestMGCStat.test_dist_permN)r   r   r  )r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  rd   rd   rd   re   r    s(    
"


	r  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   rG      i2  g:hў?Fr  i  gsH?i,0  gY@?)rq  ro  I   r~  ro  `   rG  ;   r  r  rm  1   rl  +   rK  ro  r  r  rr  r   rC   r   r  r\  rF  )D   r.  r  "   r  r   A   X   rD   rl  rs  r  r  C   E   ^   rG  r\  rH  W   rK  r  rF  r  r  )rl  rJ   U   r~  O   rI   \   V   rD   @   r   r  r  rP   r   Y   r  r  r  r  6   rJ   B   r)  r  i
  gXY?r  )r*   r  g @r#   r  rH   )r#   r"   r,   rG   r   rD   )r  r%  rG   rI   rE   r   iL  gs˜?T)r"   r!   r    r   )r!   r"   r   r    r      gĞ?)r!   r    r   rz  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#   r     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   D   t jd tj|||d}t||j t||j t||j	 d S Nr  )rankedr  
rX   r%  r&  rR   page_trend_testr   r(  r
   r  r  r\   Lr   r  r  r2  r   rd   rd   re   test_accuracy  s
   zTestPageTrendTest.test_accuracyi  g-lpW?)
rG   r'   r&   r%   r$   r#   r"   r!   r    r   )
r   r&   r"   r%   r$   r#   r'   r!   r    rG   i*  gh[?)
r'   r    r&   r%   r$   r#   r"   r!   rG   r   r?  i  g&]2?)r&   r%   r$   r#   r"   r!   r    r   )r   r!   r#   r$   r"   r%   r    r&   r  c                 C   r  r  r	  r  rd   rd   re   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  )rG   r   r   r?   Tr  F)predicted_ranks)rX   r%  r&  r   permutationr2  rR   rankdatar
  r   r(  )r\   rF  rG  r  permr2  ranksrf  rg  r  res4res5rd   rd   re   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  )r  r  o   )rn  r  k   )g      y   )rg  r  rK  )r        )   rH  t   r   r%   Fr  )r  r  r  i  gy&1l?r"   rA   r  gHPsb?)rX   r%  r&  r   r*  r   rR   r
  r   r(  r   r  )r\   r2  r  r   rd   rd   re   test_Ames_assay  s$   z!TestPageTrendTest.test_Ames_assayc                 C   s  t tdd td  W d    n1 sw   Y  t tdd tg  W d    n1 s1w   Y  t tdd tddg W d    n1 sNw   Y  t tdd tdggg W d    n1 slw   Y  t tdd ttjdd W d    n1 sw   Y  t tdd ttjdd W d    n1 sw   Y  d}t t|d tjg dg dgg d	d
 W d    n1 sw   Y  t t|d tjg dg dgg dd
 W d    n1 sw   Y  t t|d tjg dg dgg dd
 W d    n	1 sw   Y  t t|d tjg dg dgdd
 W d    n	1 sBw   Y  t tdd tg dg dgd W d    n	1 sew   Y  t tdd tg dg dgd W d    n	1 sw   Y  t tdd tjg dddtjggdd W d    n	1 sw   Y  t tdd tjg dg dgdd W d    n	1 sw   Y  t tdd tjg dg dgdd W d    d S 1 sw   Y  d S )Nz`data` must be a 2d array.r|   r   r    zPage's L is only appropriater!   z+`predicted_ranks` must include each integerr   r)  )r2  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 inekki)r2  r  z`ranked` must be boolean.)r2  r  )	r   r   rR   r
  rX   r%  r2  rY   r  )r\   r  rd   rd   re   r    sx   $z'TestPageTrendTest.test_input_validationN)r   r   r   rX   r%  r&  r2  	data_3_25
data_10_26tsr  r  r  r  ts2r  r  r  r!  r  rd   rd   rd   re   r  B  s    $$$$$$$,
r  r  )NNr   N)NNr   )r   r  r  collectionsr   	itertoolsr   numpy.testingr   r   r   r   r   r	   r
   r   r   r   r  r   r   numpy.ma.testutilsr  	testutilsr  numpyr   r   r   r   r   rX   scipy.statsrR   scipy.stats.mstatsr  scipy.stats._mstats_basic_mstats_basicr  scipy.stats._ksstatsr   scipy.special._testutilsr   scipy.specialr   common_testsr   scipy.sparse._sputilsr   scipy.spatial.distancer   	numpy.libr   scipy.stats._axis_nan_policyr   r  r   r   r   rn  rT   rV  r   r   r   r   r   r2   r   r   r  r  r  r  r  r  r-  r/  r2  rA  rB  rL  r  r  r  r  r  r  r;  rA  r  r  r  r  r  r&  rQ  PowerDivCaserV  rm  r*  r{  r[  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r'  r  r.  r5  r:  r@  rA  rj  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*  r3  r7  r9  r:  r^  ru  r  r  r  r  r  r  r   rB  rQ  rn  rv  r  r  r  r  r  r  rd   rd   rd   re   <module>   s   0  r  ~ I Z
 WS

&  "u+  `?H g HFN,,	 -
K-5"D fn


| rH l
Jbq(~
+
J Q^K/ n ;U-&]C L< 