o
    5Bi~                    @   sB	  d Z ddlZddlZddlZddlmZ ddlmZ ddlm	  m
Z ddlZddlZddlmZmZmZmZmZmZmZmZmZ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/m0Z0 dd
l1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> 	 e g de?Z@e g de?ZAe g de?ZBe g de?ZCe g de?ZDe g de?ZEe g de?ZFG dd dZGG dd dZHG dd dZIG dd  d ZJG d!d" d"ZKd#d$ ZLd%d& ZMd'd( ZNd)d* ZOd+d, ZPG d-d. d.ZQd/d0 ZRd1d2 ZSd3d4 ZTd5d6 ZUG d7d8 d8ZVG d9d: d:ZWd;d< ZXd=d> ZYd?d@ ZZG dAdB dBZ[ej\]dCG dDdE dEZ^G dFdG dGZ_G dHdI dIZ`G dJdK dKZadLdM ZbG dNdO dOZcG dPdQ dQZdejejfdRdS ZgG dTdU dUZhG dVdW dWZiedXg dYZjejg dZdddd[d\d[e%kd] d^e%kd_   d\d`e%kda d`e%kdb   dcdYejg dZg ddddded\d[e%kda d`e%kd]  d`e%kdf   d\d\e%kd] dge%kda  d\e%kdh   didYejg dZd`ddd[d\d[e%kd] d^e%kd_   d\d`e%kda d`e%kdb   dcdYejg djg djdddddddYgZlejg ddddddddYeje% g g g gjmdddg dkg dkg dkg dkdYeje% g g g gdddg g g g dYgZnG dldm dmZodndo Zpej\qdpdqe%jrfdre%jsfgdsdt Ztdudv Zudwdx Zvdydz ZwG d{d| d|ZxG d}d~ d~ZyG dd dZzdd Z{dd Z|dd Z}ej\qde%~ddfe%~ddfgdd Zdd Zej\qdg ddd Zej\qde'je%!ddffe'je%!de%!dffgdd Zd	ddZdd ZG dd dZG dd dZG dd dZG dd dZdd Zdd Zdd Zdd Zej\qde%~ddfe%~ddfgdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZG dd dZdd ZG dd dZG ddÄ dÃZddń ZddǄ ZG ddɄ dɃZdd˄ Zdd̈́ Z		d
ddЄZ		d
dd҄Z		d
ddԄZG ddք dփZG dd؄ d؃ZG ddڄ dڃZG dd܄ d܃Zddބ Zdd Zdd ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd  d ZG dd dZe%jdZedZedZej\qde'jeffe'jee'jjffe'jeeffe'jeeffgdd ZG dd 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)optimize   )check_named_results)cdist)_broadcast_concatenate)_permutation_distribution_t)	AxisError)	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r7   ?   dtyper%   r#   axisr   r$   decimalr   )r   =   )r7   r>   g     ?@)r      )         '@r%   
            TF)r7   r8   r>   )      %@rD   r%   rE   rF   rG   rH   )r   rH   r+   r,   r-   Mean of empty slicer    rE      rB   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 rb   \/var/www/html/Trade-python/venv/lib/python3.10/site-packages/scipy/stats/tests/test_stats.py
test_tmeanH   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 )Nr1   r2   r6   g@r4   r9   r   ddofr:   r;   )r%   r#   r=   r   )r   r#   g     v@r$   r?   )r   r%   g㪪@r   g@z"Degrees of freedom <= 0 for slice.)r   r!   )r7   r>   r8   r)   r   r"   )rP   tvarrR   r	   rS   varr   r   rT   r   rV   fullr   rX   rY   r   rW   )rZ   r[   r^   ra   rb   rb   rc   	test_tvarw   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 )Nr1   r2   gBĆ/H@r4   r9   r   re   )rP   tstdrR   r	   rS   stdrZ   r[   rb   rb   rc   	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 R}|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    n1 sw   Y  t *}|t	d tddd}tj|ddd}t |tjdddg W d    d S 1 sw   Y  d S )Nr    rE   r   )
lowerlimitF)rp   r8   r   r!   r   r   r=   )r   r   r    r"   r$         $@r%   invalid value*omit
nan_policy        raisefoobarz'propagate', 'raise', 'omit'matchfooAll-NaN slice encountered   )rp   r>   r$   rG   )r   rP   tminrV   r   rT   rW   r   rX   rY   assert_raises
ValueErrorfilter)rZ   xra   msgresrb   rb   rc   	test_tmin   s:   



"zTestTrimmedStats.test_tminc                 C   s  t tdd td}t t|d t tj|ddd t tj|dddd |d}t tj|ddddd	g t tj|d
dg d t tj|d dd td}tj|d< t 3}|t	d t t|tj t tj|ddd t
ttj|dd t
ttj|dd W d    n1 sw   Y  t *}|t	d tddd}tj|dd
d}t |dd	dtjg W d    d S 1 sw   Y  d S )Nr    rE   r%   )
upperlimitF)r   r8   r$   rq   r#   r   r=   r   r   r!   r#   r%   rr   r"   rs   rt   ru         "@rx   ry   r}   r~   rF   )r   r>   r   )r   rP   tmaxrV   r   rT   rW   r   rX   rY   r   r   r   )rZ   r   ra   r   rb   rb   rc   	test_tmax   s0   



	"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$   rO   r6   )r    r!   r"   r#   r$   r   re   r4   rK   rE   r9   )
rP   tsemrR   rV   r   r	   rm   sqrtsizerS   )rZ   r[   y_refrb   rb   rc   	test_tsem   s   
zTestTrimmedStats.test_tsemN)__name__
__module____qualname__rV   finfor   	precisionrS   rd   rk   ro   r   r   r   rb   rb   rb   rc   r0   D   s    / !r0   c                   @   s  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#e$j%&dBg dCdDdE Z'dFdG Z(dHdI Z)dJdK Z*dLdM Z+dNdO Z,e$j%j-e$j%&dPdQe$j%&dRdSdTdU Z.e$j%j-e$j%&dPdQdVdW Z/dXdY Z0dZS )[TestCorrPearsonrE   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         ?)rP   pearsonrrR   r	   rZ   r[   rrb   rb   rc   test_pXX      zTestCorrPearsonr.test_pXXc                 C   "   t tt}|d }t|d d S r   )rP   r   rR   BIGr	   r   rb   rb   rc   
test_pXBIG   r   zTestCorrPearsonr.test_pXBIGc                 C   r   r   )rP   r   rR   LITTLEr	   r   rb   rb   rc   test_pXLITTLE   r   zTestCorrPearsonr.test_pXLITTLEc                 C   r   r   )rP   r   rR   HUGEr	   r   rb   rb   rc   test_pXHUGE   r   zTestCorrPearsonr.test_pXHUGEc                 C   r   r   )rP   r   rR   TINYr	   r   rb   rb   rc   test_pXTINY  r   zTestCorrPearsonr.test_pXTINYc                 C   r   r   )rP   r   rR   ROUNDr	   r   rb   rb   rc   test_pXROUND
  r   zTestCorrPearsonr.test_pXROUNDc                 C   r   r   )rP   r   r   r	   r   rb   rb   rc   test_pBIGBIG  r   zTestCorrPearsonr.test_pBIGBIGc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pBIGLITTLE  r   z TestCorrPearsonr.test_pBIGLITTLEc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pBIGHUGE  r   zTestCorrPearsonr.test_pBIGHUGEc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pBIGTINY  r   zTestCorrPearsonr.test_pBIGTINYc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pBIGROUND#  r   zTestCorrPearsonr.test_pBIGROUNDc                 C   r   r   )rP   r   r   r	   r   rb   rb   rc   test_pLITTLELITTLE(  r   z#TestCorrPearsonr.test_pLITTLELITTLEc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pLITTLEHUGE-  r   z!TestCorrPearsonr.test_pLITTLEHUGEc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pLITTLETINY2  r   z!TestCorrPearsonr.test_pLITTLETINYc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pLITTLEROUND7  r   z"TestCorrPearsonr.test_pLITTLEROUNDc                 C   r   r   )rP   r   r   r	   r   rb   rb   rc   test_pHUGEHUGE<  r   zTestCorrPearsonr.test_pHUGEHUGEc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pHUGETINYA  r   zTestCorrPearsonr.test_pHUGETINYc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pHUGEROUNDF  r   z TestCorrPearsonr.test_pHUGEROUNDc                 C   r   r   )rP   r   r   r	   r   rb   rb   rc   test_pTINYTINYK  r   zTestCorrPearsonr.test_pTINYTINYc                 C   r   r   )rP   r   r   r   r	   r   rb   rb   rc   test_pTINYROUNDP  r   z TestCorrPearsonr.test_pTINYROUNDc                 C   r   r   )rP   r   r   r	   r   rb   rb   rc   test_pROUNDROUNDU  r   z!TestCorrPearsonr.test_pROUNDROUNDc                 C   ,   t tt}d}t|| t|j|j d S Ncorrelationpvalue)rP   r   rR   r   r   r   	statisticrZ   r   
attributesrb   rb   rc   test_pearsonr_result_attributesZ     
z0TestCorrPearsonr.test_pearsonr_result_attributesc              	   C   sH   t d}t||\}}t|ddd t|dtdtd d d S )N      @r   V瞯<atolrw   r   r   rP   r   r
   rV   r   spacingrZ   ar   probrb   rb   rc   test_r_almost_exactly_pos1`  s   "z+TestCorrPearsonr.test_r_almost_exactly_pos1c              	   C   sJ   t d}t|| \}}t|ddd t|dtdtd d d S )Nr         r   r   rw   r   r   r   r   rb   rb   rc   test_r_almost_exactly_neg1i  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rK   r   r   )r   r   r   r   r   UUUUUU?)r   rP   r   r	   rV   r   )rZ   r   br   r   rb   rb   rc   
test_basicr  s
   zTestCorrPearsonr.test_basicc                 C   sj   d}t jtj|d! tg dg d\}}t|tj t|tj W d    d S 1 s.w   Y  d S )NAn input array is constantrz   MbX?r   r   grh|?gv/?gsh|??)pytestwarnsrP   ConstantInputWarningr   r   rV   rW   )rZ   r   r   prb   rb   rc   test_constant_input{  s   "z$TestCorrPearsonr.test_constant_inputc                 C   sv   dddt d g}ddddt d  g}d}tjtj|d t||\}}W d    d S 1 s4w   Y  d S )Nr   r   r"   z/An input array is nearly constant; the computedrz   )rV   r   r   r   rP   NearConstantInputWarningr   )rZ   r   r[   r   r   r   rb   rb   rc   test_near_constant_input  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?)rP   r   r
   rZ   r   r[   r   r   rb   rb   rc   test_very_small_input_values  s
   
z-TestCorrPearsonr.test_very_small_input_valuesc                 C   sH   dt g d }dt d }t||\}}t|d t|d d S )NgY)	kR)r   r   r   r   r   r   r   r#   gLXz?g͗~-?)rV   r   r   rP   r   r
   r   rb   rb   rc   test_very_large_input_values  s
   
z-TestCorrPearsonr.test_very_large_input_valuesc                 C   sD   t g d}t g d}t||\}}t|d t|d d S )N)g7	igNig_b4igZbi)gDig<'(½igmQiZbtig*D{?gݣ?)rV   r   rP   r   r
   r   rb   rb   rc   !test_extremely_large_input_values  s
   
z2TestCorrPearsonr.test_extremely_large_input_valuesc                 C   sB   t ddgddg}|\}}t|d t|d t| d d S )Nr   r   r   r!   rK   r   )rP   r   r   confidence_interval)rZ   r   r   r   rb   rb   rc   test_length_two_pos1  s
   

z%TestCorrPearsonr.test_length_two_pos1c                 C   s0   t ddgddg\}}t|d t|d d S )Nr   r   r   r!   rK   )rP   r   r   )rZ   r   r   rb   rb   rc   test_length_two_neg2  s   
z%TestCorrPearsonr.test_length_two_neg2z$alternative, pval, rlow, rhigh, sign))	two-sided?gmgƎ?r   )lessK˅?rK   g?
?r   )greater.?gդζr   r   )r   r   gfǎgl?rK   )r   r   r   gդζ?rK   )r   r   g?
r   rK   c           
      C   sl   g d}t g d| }tj|||d}t|jd| dd t|j|dd | }	t|	||fdd d S )Nr   r   r   r    )r   r   r'   r   alternativeg?r&   rtolư>)rV   r   rP   r   r
   r   r   r   )
rZ   r   pvalrlowrhighsignr   r[   resultcirb   rb   rc   test_basic_example  s   z#TestCorrPearsonr.test_basic_examplec                 C   sP   t d}| }tj||dd}tj||dd}t|jd t|jddd d S )	NrE   r   r   r   r   r   g#B;r   )rV   r   rP   r   r
   r   )rZ   r   r[   test_greater	test_lessrb   rb   rc   (test_negative_correlation_pvalue_gh17795  s   
z9TestCorrPearsonr.test_negative_correlation_pvalue_gh17795c                 C   sN   g d}g d}t ||}|\}}t|d t|ddd t| d d S )Nr   r   r   )r!   ir   rw   Hz>r   r   )rP   r   r
   r   r   )rZ   r   r[   r   r   r   rb   rb   rc   #test_length3_r_exactly_negative_one  s   
z4TestCorrPearsonr.test_length3_r_exactly_negative_onec                 C   s$   g d}ddg}t ttj|| d S )Nr   r    r!   r   r   rP   r   rZ   r   r[   rb   rb   rc   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  rb   rb   rc   	test_len1  s   zTestCorrPearsonr.test_len1c                 C   sT   g d}g d}d}t jt|d t|| W d    d S 1 s#w   Y  d S )N)y             y              y             z+This function does not support complex datarz   )r   r   r   rP   r   )rZ   r   r[   messagerb   rb   rc   test_complex_data  s   "z"TestCorrPearsonr.test_complex_datar   r   r   r   methodpermutationmonte_carloc           
      C   s   t jd}|dkrdnd}|j|d}|j|d}tj|dtj|jfd dd	}|| }tj||||d
}tj|||d}	t|j	|	j	dd t|j
|	j
ddd d S )N   o#[mr  d     r   random_stater   )rvsr  )r   r
  r   r   r   {Gz?MbP?r   r   )rV   randomdefault_rngnormalrP   PermutationMethodMonteCarloMethodr   r
   r   r   )
rZ   r
  r   rngr   r   r[   methodsr   refrb   rb   rc   test_resampling_pvalue  s   
z'TestCorrPearsonr.test_resampling_pvaluec           	      C   sf   t jd}|jdd}|jdd}tj|||d}tj|d}|j|d}| }t||dd d S )	Nr  r  r  r   r  r
  r  r   )	rV   r  r  r  rP   r   BootstrapMethodr   r
   )	rZ   r   r  r   r[   r   r
  res_ciref_cirb   rb   rc   test_bootstrap_ci  s   z"TestCorrPearsonr.test_bootstrap_cic                 C   s   d}t jt|d tjddgddgdd W d    n1 s w   Y  tddgddg}t jt|d |jd	d W d    d S 1 sHw   Y  d S )
Nz"`method` must be an instance of...rz   r   r   r   r    
asymptoticr!  exact)r   r   r   rP   r   r   )rZ   r  r   rb   rb   rc   test_invalid_method   s   "z$TestCorrPearsonr.test_invalid_methodN)1r   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   markparametrizer   r   r  r  r  r  xslowr   r%  r(  rb   rb   rb   rc   r      sf    				
	
	r   c                   @   sz   e Zd ZdZdd Zd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ej	dg d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 ) N8   N  0u  @  r   g؞Y?r    r4   r  r   r  r!   g,Ԛ?r#   r$   g2c?r"   rE   gY
A?      g_?r~      gO^M?r   gօa?r   r   ggE?g$I$I?)rP   fisher_exactr	   )rZ   r5  r   rb   rb   rc   r   8  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   rE   )g!@j)A?r2  r3  )gU!a?gKY?r~   r4  )g7X?g~ltP?)gFu|?r6  r   )rw   gQN^?r    gaa?rw   r   gaa?r   rF   T)r@   verbose)rV   infrP   r5  asarraytestingr   )rZ   tablisttableres_rr   rb   rb   rc   test_preciseS  s$   zTestFisherExact.test_precisec                 C   s|   ddgddgg}t |}t|d d ddgdd	gg}t |}t|d d
 ddgddgg}t |}t|d d d S )Nr"   %   l      r   gmt?   r   f   g,:^   0   i  i\B  gNQ8rP   r5  r
   rZ   r   r   rb   rb   rc   test_gh4130k  s   


zTestFisherExact.test_gh4130c                 C   s0   ddgddgg}t |}t|d ddd d S )NiiX iV iW r   r   gѧRr   rG  rH  rb   rb   rc   test_gh9231  s   
zTestFisherExact.test_gh9231c                 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    r4   iPF  i8 r/  i_ g^K=?)ziprP   r5  r	   )rZ   pvalsr   numr   rb   rb   rc   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   rP   r5  rV   r   rT   rZ   rb   rb   rc   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!   rE   r   )rP   r5  r   rV   rW   )rZ   tablesr=  	oddsratior   rb   rb   rc   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$   rB  ,     rB   r"   i     i   i  r   r   r   r    gI[?gq}!?r   g2\&gQp6g:O_?g a?皙?ffffff??333333?UUUUUU?r   r   r   r   r   )r   r   )rN  appendrP   r5  r
   )rZ   rT  rO  r=  r   r   rb   rb   rc   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")rP   r5  )rZ   oddsr   rb   rb   rc   test_gh3014  s   zTestFisherExact.test_gh3014r   r   r   r   c                 C   s:   t ddgddgg}tj||d}t|j|jf| d S )Nr.  r/  r0  r1  r   )rV   r   rP   r5  r   r   r   )rZ   r   r=  r   rb   rb   rc   test_result  s   zTestFisherExact.test_resultN)r   r   r   r)  r   r?  rI  rJ  r   r*  slowrQ  rS  rV  r`  rb  r+  rd  rb   rb   rb   rc   r-  *  s    


"r-  c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFS )GTestCorrSpearmanrr   c                 C   s"   t dd}tt|  d S )N      @       @)rP   	spearmanrr   rV   isnanallrn   rb   rb   rc   test_scalar  s   zTestCorrSpearmanr.test_scalarc                 C   s0   t ttjg dddg t ttjg dd d S )Nr   r   r   r$   r%   )r   r   rP   ri  rR  rb   rb   rc   test_uneven_lengths  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=   )rV   r  seedrandnrP   ri  r   shapeTr   r   r   r  rb   rb   rc   test_uneven_2d_shapes  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 )Nro  r    r   r   r=   r   )
rV   r  rq  rr  r   r   rP   ri  r
   flattenrZ   r   rb   rb   rc   test_ndim_too_high  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 )Nrr   r%   rt   ru   )r   rw   rx   ry   )rV   r   rW   r   rP   ri  r   r   rw  rb   rb   rc   test_nan_policy     

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!   rE   r"   r   r=   rt   ru   r   +=r   )	rV   r  rq  randrW   deleterP   ri  r
   )rZ   r   kr[   corxpxcorypyrb   rb   rc   test_nan_policy_bug_12458  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!   rE   r   r   )r   rK   r   	propagater>   rv   c                    s$   g | ]  fd dt D qS )c              	      s2   g | ]}t |d d f  d d f jqS N)rP   ri  r   .0i)jr   rb   rc   
<listcomp>  s   2 zJTestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>.<listcomp>ranger  mr   r  rc   r    s    z?TestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>)	rV   r  rq  rr  rW   rP   ri  r  r
   )rZ   ncorrr   r   rb   r  rc   test_nan_policy_bug_12411  s   

z+TestCorrSpearmanr.test_nan_policy_bug_12411c                 C   r   r   )rP   ri  rR   r	   r   rb   rb   rc   test_sXX  r   zTestCorrSpearmanr.test_sXXc                 C   r   r   )rP   ri  rR   r   r	   r   rb   rb   rc   
test_sXBIG  r   zTestCorrSpearmanr.test_sXBIGc                 C   r   r   )rP   ri  rR   r   r	   r   rb   rb   rc   test_sXLITTLE"  r   zTestCorrSpearmanr.test_sXLITTLEc                 C   r   r   )rP   ri  rR   r   r	   r   rb   rb   rc   test_sXHUGE'  r   zTestCorrSpearmanr.test_sXHUGEc                 C   r   r   )rP   ri  rR   r   r	   r   rb   rb   rc   test_sXTINY,  r   zTestCorrSpearmanr.test_sXTINYc                 C   r   r   )rP   ri  rR   r   r	   r   rb   rb   rc   test_sXROUND1  r   zTestCorrSpearmanr.test_sXROUNDc                 C   r   r   )rP   ri  r   r	   r   rb   rb   rc   test_sBIGBIG6  r   zTestCorrSpearmanr.test_sBIGBIGc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sBIGLITTLE;  r   z!TestCorrSpearmanr.test_sBIGLITTLEc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sBIGHUGE@  r   zTestCorrSpearmanr.test_sBIGHUGEc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sBIGTINYE  r   zTestCorrSpearmanr.test_sBIGTINYc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sBIGROUNDJ  r   z TestCorrSpearmanr.test_sBIGROUNDc                 C   r   r   )rP   ri  r   r	   r   rb   rb   rc   test_sLITTLELITTLEO  r   z$TestCorrSpearmanr.test_sLITTLELITTLEc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sLITTLEHUGET  r   z"TestCorrSpearmanr.test_sLITTLEHUGEc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sLITTLETINYY  r   z"TestCorrSpearmanr.test_sLITTLETINYc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sLITTLEROUND^  r   z#TestCorrSpearmanr.test_sLITTLEROUNDc                 C   r   r   )rP   ri  r   r	   r   rb   rb   rc   test_sHUGEHUGEc  r   z TestCorrSpearmanr.test_sHUGEHUGEc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sHUGETINYh  r   z TestCorrSpearmanr.test_sHUGETINYc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sHUGEROUNDm  r   z!TestCorrSpearmanr.test_sHUGEROUNDc                 C   r   r   )rP   ri  r   r	   r   rb   rb   rc   test_sTINYTINYr  r   z TestCorrSpearmanr.test_sTINYTINYc                 C   r   r   )rP   ri  r   r   r	   r   rb   rb   rc   test_sTINYROUNDw  r   z!TestCorrSpearmanr.test_sTINYROUNDc                 C   r   r   )rP   ri  r   r	   r   rb   rb   rc   test_sROUNDROUND|  r   z"TestCorrSpearmanr.test_sROUNDROUNDc                 C   r   r   )rP   ri  rR   r   r   r   r   r   rb   rb   rc    test_spearmanr_result_attributes  r   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!   )rP   ri  rV   r:  rt  r
   rZ   x1x2res1res2rb   rb   rc   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  rt   r   r   r    r!   r"   r   ru   )rV   rW   rP   ri  r:  rt  r
   )rZ   rv   r  r  r  r  rb   rb   rc   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   rK   3+?)rK   r   3+)r  r  r   r   r   r;   g+Hs]s?r   r   )rV   r   r   r:  rt  rP   ri  zerosfloatr
   r   r   )rZ   r  r  x3r   actualexpected_correxpected_pvaluerb   rb   rc   
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   rg  r3   ffffff@      @ffffff"@ffffff@g333333@皙@)r'   rg  ffffff@ffffff@       @r  ffffff@r   r  ru   rt   r   r   r   )gacJC?g%ln?g_0nYt!޿r   r   )rV   r   rW   rt  r
   rP   ri  r   )rZ   r   r  r   rb   rb   rc   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'   rt   ru   )gonj?)Wn%?r  )rV   r  rq  r|  r   rP   ri  r   rW   astypeint32r
   )
rZ   r  r   r  r   r   r  r  res3expectedrb   rb   rc   test_gh_8111  s   

zTestCorrSpearmanr.test_gh_8111N)&r   r   r   r)  rl  rn  ru  rx  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  r  r  rb   rb   rb   rc   rf    sH    
		rf  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   )rP   ri  r	   rZ   r  r  r  r   rb   rb   rc   test_spearmanr_vs_r  s   z&TestCorrSpearmanr2.test_spearmanr_vs_rc                 C   s   t tg g tjtjf d S r  )r   rP   ri  rV   rW   rR  rb   rb   rc   test_empty_arrays     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   )rV   r  rq  r   r  dotlinalgcholeskyrP   ri  r	   )rZ   r   r  r  r   rb   rb   rc   test_normal_draws  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	   rP   ri  rR  rb   rb   rc   test_corr_1  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 )Nrr   r%   rt   ru   )r   r   rx   ry   )	rV   r   rW   r   rP   ri  r
   r   r   rw  rb   rb   rc   test_nan_policies  rz  z$TestCorrSpearmanr2.test_nan_policiesc                 C   s(   t d}t d}tttj|| d S )Nrr         4@)rV   r   r   r   rP   ri  r  rb   rb   rc   r    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"   rt   ru   r   )rV   rW   rP   ri  r   r  rb   rb   rc   test_omit_paired_value  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  rE   i  i  r   rt   ru   gV-?)listr  r_  rV   rW   r   rP   ri  r  rb   rb   rc   #test_gh_issue_6061_windows_overflow  s   
z6TestCorrSpearmanr2.test_gh_issue_6061_windows_overflowc                 C   s   d}t jtj|d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 s^w   Y  d S )Nr   rz   r   r   r   r   r   r   )r   r   rP   r   ri  r   rV   rW   )rZ   warn_msgr   r   rb   rb   rc   	test_tie0  s   "zTestCorrSpearmanr2.test_tie0c                 C   sF   g d}g d}g d}g d}t ||}t ||}t|| d S )Nr   rh  r   rg  )r   rh  rh  r   )r   r)   r)   rg  )rP   ri  r   r   )rZ   r   r[   xryrsrprrb   rb   rc   	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    rt   ru   )rV   rW   rP   ri  r   )rZ   r  r\   r  r]   sr1sr2rb   rb   rc   	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}d}tjtj|d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 svw   Y  d S )Nr   r   r   r   r   r   rz   r   r=   	rV   r   r   r   rP   r   ri  r   rW   )rZ   z1z2z3r  r   r   rb   rb   rc   test_ties_axis_18  s   "z#TestCorrSpearmanr2.test_ties_axis_1c                 C   s~   t g d}t g d}d}tjtj|d t||\}}t|t j t|t j W d    d S 1 s8w   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   rz   r  )rZ   r   r[   r  r   r   rb   rb   rc   test_gh_11111H  s   "z TestCorrSpearmanr2.test_gh_11111c                 C   s4   t g d}t g d}tttj||dd d S )N)
r         @rh  r   r   r   r   r   r   r   r  r   r=   )rV   r   r   r   rP   ri  r  rb   rb   rc   test_index_errorS  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'...rz   	ekki-ekki)rP   ri  r	   r   r   r   r  rb   rb   rc   test_alternativeZ  s   "z#TestCorrSpearmanr2.test_alternativer   rc  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  rt   rv   r   r   The input contains nan valuesrz   rx   nan_policy must be one of...r   )	rV   rW   r   rP   ri  r
   r   r   r   )	rZ   r   r  r  x1nanx2nan
res_actualres_expectedr  rb   rb   rc   test_alternative_nan_policyq  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*  r+  r	  rb   rb   rb   rc   r    s&    
	r  c                  C   sf  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||	 t	|j
|j 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 qGt	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    r7  r   r   )	r   r!   r   r   r   r"   r    r#   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   rE   )r   紞xO~>)variantr   )g?>?aV>r!   r"   )g}'}'?o&5>rK   )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$   rE   gok|?r   gffffff?r
  r'  r!  bananarmsrG   r   r   rG   r   r   r    r#   r   r   )g}+޿g`=i?r   r  r  r  r  r  r   r]  )g\zf?g^n)=r  g#q?rr   r%   rt   ru   )r   g/>r   r   r&  )rv   r
  )r   g&?rx   ry   r  r  r;   i  r  )rP   
kendalltaur	   rV   r   r   r   r   r   r   r   r   rW   r  rq  r  r  r  r  r   r
   r  mamasked_greaterconcatenater   isfinite)variantsr   r[   r  tauxr   r   r  r  r   r  taup_valuerb   rb   rc   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   rE   r   r   )
rV   r  rq  r  r  shufflemstats_basicr  rP   r	   )sr   r  r   r  r  rb   rb   rc   test_kendalltau_vs_mstats_basics  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@rt   ru   r   r   r   )rV   rW   rP   r  r
   r   )r   r[   r1r2rb   rb   rc   test_kendalltau_nan_2nd_arg  s
   r'  c                  C   s   d} t j| d tjg g dd W d    n1 sw   Y  t jd|  d tg g d W d    d S 1 s<w   Y  d S )Nz"keyword argument 'initial_lexsort'rz   T)initial_lexsortzuse keyword arguments|)r   deprecated_callrP   r  )msg_deprb   rb   rc   test_kendalltau_deprecations  s   "r+  c                  C   sf   dd l } | d g d}d}| j||d}| j||d}t||}t|jd t|jddd	 d S )
Nr   i_ r   r   r   r    r!   r"   r#   i@ r~  g*8_2\S?gd`TR?gMb`?r   )r  rq  choicesrP   r  r
   r   r   )r  classes	n_samplesr   r[   r   rb   rb   rc    test_kendalltau_gh18139_overflow  s   
r1  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  rz   r   )rP   r  r   r
   reverser   r   r   r  rb   rb   rc   &test_kendalltau_alternative_asymptotic  s,   "z@TestKendallTauAlternative.test_kendalltau_alternative_asymptotic)r   r   r   )r   r   r'   )r   RUUUU?ZUUUU?)g~?r5  r6  )?r   r7  )ˮ[?r   r8  )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 )NrK   r'  r
  r   )rV   r:  rP   r  r
   )	rZ   r   r[   r   revstat_expected
p_expectedr   r  rb   rb   rc   
exact_test  s   z$TestKendallTauAlternative.exact_testFr   Tzalternative, p_expected, revc                 C   s,   dgdg}}t j}| |||||| d S r  )rV   rW   r=  rZ   r   r<  r:  r   r[   r;  rb   rb   rc   test_against_R_n1  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>  rb   rb   rc   test_against_R_n2     z+TestKendallTauAlternative.test_against_R_n2c                 C   s.   g dg d}}d}|  |||||| d S )Nr   r   r@  r>  rb   rb   rc   test_against_R_c0  rB  z+TestKendallTauAlternative.test_against_R_c0c                 C   .   g dg d}}d}|  |||||| d S )Nr   )r   r   r    r   gVUUUUU?r@  r>  rb   rb   rc   test_against_R_c1  rB  z+TestKendallTauAlternative.test_against_R_c1c                 C   rD  )Nr  )r   r!   r    r   r   r   r@  r>  rb   rb   rc   test_against_R_no_correlation  rB  z7TestKendallTauAlternative.test_against_R_no_correlationc                 C   rD  )Nr   r   r   r    r!   r"   r#   r$   )r$   r"   r   r   r   r!   r    r#   r   r@  r>  rb   rb   rc   test_against_R_no_correlationb!  rB  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)   r3   @rg  g@ffffff@r  gqq?r@  r>  rb   rb   rc   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*,rV   r  rq  r|  r=  r>  rb   rb   rc   test_against_R_lt_171b7  
   z0TestKendallTauAlternative.test_against_R_lt_171bc                 C   rM  )Nr      gH4?rN  r>  rb   rb   rc   test_against_R_lt_171cC  rP  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'  r9  r&  r   r  r   )rV   r  rq  r|  rP   r  r   r
   )rZ   r   r:  r   r[   res0r  rb   rb   rc   test_gt_171N  s   

z%TestKendallTauAlternative.test_gt_171r
  )r'  r&  r   rc  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%   r9  rt   )rv   r
  r   r  rz   rx   r  r   )rV   rW   rP   r  r
   r   r   r   )
rZ   r
  r   r  r  r  r  r  r  r  rb   rb   rc   ry  Z  s8   





"z)TestKendallTauAlternative.test_nan_policyN),r   r   r   r4  alternativesrV   rW   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  rN  reversed	case_R_n1r   r*  r+  r?  	case_R_n2rA  	case_R_c0rC  	case_R_c1rE  case_R_no_corrrF  case_no_cor_brH  case_R_lt_171rL  case_R_lt_171brO  case_R_lt_171crR  case_gt_171rT  ry  rb   rb   rb   rc   r2    s    4









r2  c                  C   s2  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 | |}d}t|| t|j|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   rb   r   rb   rb   rc   <lambda>      z"test_weightedtau.<locals>.<lambda>)weigherr  r   )rankgڿgn)rr  rk  g @ڿg[đ(gIکnTc                 S   rl  rm  rb   rn  rb   rb   rc   ro    rp  )rr  rq  c                 S   rl  rm  rb   rn  rb   rb   rc   ro    rp  r;   r   r   r   r   r   r    r#   rG   r   )      (@rh  r   rt  rh  r   rg  r  rt  rh  )rt  rh  r   rt  r   )r   rg  r  r   r   gt34+)rP   weightedtaur	   r   rV   rW   r   r   r   r:  r   int16r   r   )r   r[   r  r  r   r   rb   rb   rc   test_weightedtau}  s   



















rw  c                   C   s6   t dgdg t dgdg t tjgdg d S )Nr   r   4   )rP   ru  rV   rW   rb   rb   rb   rc   test_segfault_issue_9710  s   ry  c                  C   sZ   d} t | d t}t | d t}t j|d< tj||ddd\}}t|d d S )N   r   rK   r'  rt   )r
  rv   rw   )rV   r   r  r  rW   rP   r  r   )r  r   r[   _r   rb   rb   rc   test_kendall_tau_large  s   
r|  c               
   C   s   dd } dd }t jd tddD ]U}g }t|D ]	}||g| 7 }qt|}t j| t j| t jt|t jd}td	D ]$}d
D ]}| |||||}	t	
|||||j}
t|	|
 qGt j| qCq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   r  lenrV   r   )r   r[   rr  rq  addtotconcdiscuvr  r  wrb   rb   rc   wkq  s    "@
@$z*test_weightedtau_vs_quadratic.<locals>.wkqc                 S   s   d| d  S )Nr   r   rb   rn  rb   rb   rc   rq       z.test_weightedtau_vs_quadratic.<locals>.weigherr  r   rE   r;   r   rI   )rV   r  rq  r  r  r  r   r~  intprP   ru  r   r	   )r  rq  r!  r   r  r   rr  r{  r  r  r  rb   rb   rc   test_weightedtau_vs_quadratic  s&   r  c                   @   s   e Zd Zdd Zdd ZdS )TestFindRepeatsc                 C   s6   g d}t |\}}t|g d t|g d d S )N)r   r   r   r    r   r   r   r    r   r   r!   r   )r   r   r   r   rP   find_repeatsr   )rZ   r   r   numsrb   rb   rc   r     s   zTestFindRepeats.test_basicc                 C   s8   g dg fD ]}t |\}}t|g  t|g  qd S )N)rE   r3  2      (   r  )rZ   r   repeatedcountsrb   rb   rc   test_empty_result  s
   
z!TestFindRepeats.test_empty_resultN)r   r   r   r   r  rb   rb   rb   rc   r    s    r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#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   rw   )	rP   
linregressrR   r   r   	interceptrvaluestderrintercept_stderrrZ   r   rb   rb   rc   test_linregressBIGX&  s
   z"TestRegression.test_linregressBIGXc                 C   s@   t tt}t|jd t|jd t|jd t|jd d S )Nrw   r   )rP   r  rR   r   r  r  r  r  r  rb   rb   rc   test_regressXX0  s
   zTestRegression.test_regressXXc                 C   s(   t tt}t|jd t|jd d S )Nrw   )rP   r  rR   ZEROr   r  r  r  rb   rb   rc   test_regressZEROXE  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  皙?rE   r3  穷4_Qc?)rV   linspacesinrP   r  _stats_mstats_commonLinregressResultr   
isinstancer   r  )rZ   r   r[   r   lrrb   rb   rc   test_regress_simpleN  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  r  rE   r3  zalternative must be 'less'...rz   r   r   r   r   r   r   r   )rV   r  r  r   r   r   rP   r  r
   r   r  )rZ   r   r[   r  r  r  rb   rb   rc   test_regress_alternativeY  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   rL  H   >   rF  r   r   gؗh?gJK@:Cgag?g->g5ՒO?g]؊E @)rP   r  r
   sloper  r  rV   r   r   r  r  rZ   r   r[   r   rb   rb   rc   test_regress_against_Rn  s   z%TestRegression.test_regress_against_Rc                 C   sp   t ddd}dt ddd d }|t t ddd7 }t ||f}t|}t|jd t|jd d S )Nr   r  r  rE   r3  r  8?)	rV   r  r  vstackrP   r  r   r  r  )rZ   r   r[   rowsr   rb   rb   rc   test_regress_simple_onearg_rows  s   
z.TestRegression.test_regress_simple_onearg_rowsc                 C   s   t ddd}dt ddd d }|t t ddd7 }t t |dt |df}t|}t|jd t|j	d d S )	Nr   r  r  rE   r3  r   r  r  )
rV   r  r  hstackexpand_dimsrP   r  r   r  r  )rZ   r   r[   columnsr   rb   rb   rc   test_regress_simple_onearg_cols  s   
z.TestRegression.test_regress_simple_onearg_colsc                 C   s   t ttjtd d S )Nr  )r   r   rP   r  rV   onesrR  rb   rb   rc   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 )NrF   r!   r~   r   r   rK   c                 S   s   t | |ddS )NrC   r?   )r   r   r[   rb   rb   rc   	assert_ae     z1TestRegression.test_linregress.<locals>.assert_aer   r3   gePUn?g.bt>gڽE?gʺL7?)
rV   r   rP   r  r  r  r  r   r  r  )rZ   r   r[   r   r  rb   rb   rc   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   rK   )
rV   r  rP   r  r   r  r   rj  r  r  )rZ   r   r  r   r[   r   rb   rb   rc    test_regress_simple_negative_cor  s   z/TestRegression.test_regress_simple_negative_corc                 C   s   t ddd}dt ddd d }|t t ddd7 }t||}tjj}tt|| d}t	|| dt
|v s>J d S )Nr   r  r  rE   r3  )r  r  r  r   r  r  )rV   r  r  rP   r  r  r  r   r  r   dir)rZ   r   r[   r   r  r   rb   rb   rc   !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!   rw   )rV   r   rP   r  r   r   r  r  rZ   r   r[   r   rb   rb   rc   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   rw   )	rV   r   r  rP   r  r   r   r  r  r  rb   rb   rc   'test_regress_two_inputs_horizontal_line  s   

z6TestRegression.test_regress_two_inputs_horizontal_linec                 C   sl   g d}g d}t ||}t|jd t|jd t|jd d t|jd t|jd t|jd	 d S )
N)$r  gfffffu@ǧ]@g̤@333333$@g     Pl@gfffff҄@gfffff"@g	|@g     H@gq@皙?333333?g     <@g33333ׄ@g      u@g     {@g333333'@g     `@33333l@gfffff@g̼@g^@r]  r]  gffffff@g1u@g@g     8@g     X@g333333&@g33333]@gfffffl@g@fffff|@r'   )$rZ  g,u@gfffff]@     @r  r  g     @     4@g|@33333W@gy@r]  rZ  gP@gfffff@4u@r  g%@gm@gl@g     0@gfffffƋ@gfffff]@r]  r  gl@r  r  r  r  gffffff$@gffffff]@g̜l@g33333@g33333|@r  g?g!пr   gpX?rw   gh-h*<?gg?)	rP   r  r   r  r  r  r   r  r  r  rb   rb   rc   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  r  rE   r3  r   )	rV   r  r  rP   r  polyfitr   r  r  )rZ   r   r[   r   polyrb   rb   rc   test_compare_to_polyfit  s   z&TestRegression.test_compare_to_polyfitc                 C   s   t ttjg g  d S r  )r   r   rP   r  rR  rb   rb   rc   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 )Nrr   r%   ignoreinvalidr!   )rV   r   rW   errstaterP   r  r  r  r   r  r   r   r  )rZ   r   r   r  rb   rb   rc   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 )NrE   z$Cannot calculate a linear regressionrz   )rV   r  r  r   r   rP   r  rZ   r   r[   r   rb   rb   rc   test_identical_x  s   
"zTestRegression.test_identical_xN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rb   rb   rb   rc   r  $  s(    
	
r  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.rz   joint_separater!  jointrw   )r   r   r   r    rE   rG      )r%   r2     r3  -   7   N   gQ?separater    rg  gQ@r   r?   gGz@r  )rP   theilslopesr   r   r   r   )r  r  lowerupperr   r   r[   rb   rb   rc   test_theilslopes&  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   rg  r3   r  )r(   r!   )r  defaultreallimitsr   )cumcountrp   binsizeextrapoints)rP   cumfreqr   rV   r   r   r   )r   cumfreqslowlimr  r  r   r   rb   rb   rc   test_cumfreqH  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   )	frequencyrp   r  r  )rV   r   rP   relfreqr   r   )r   relfreqsr  r  r  r   r   	relfreqs2rb   rb   rc   test_relfreqV  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!   rE   rL   r"   )r   r  r$   r#   r    r   r   )r   r    r!   rE   rL   r  r	  r  )a1a2a3rR  rb   rb   rc   setup_methodh  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   rw   r  r*   r        ?)r   r   rP   scoreatpercentilerw  rb   rb   rc   r   m  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 )NrE   r  r+   r   r#   r  r   r$   )limitr   rE   r  rE   r  r  r   rE   r,   fractioninterpolation_methodr  r  rP   r  r   r  r  rV   r   rZ   scoreatpercrb   rb   rc   test_fractions  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 )NrE   r  r  r  r    higherr!   r  r  r  r  r  r  r  r   r  r  rb   rb   rc   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  r  rG   r   r    )r   r   r  r  r   r=   )r   r    r$   )Q?gQ@g(\ @r   r#   rF   )
r   rV   r   rP   r  r
   r   r  ndarrayrT   )rZ   r   r  r   r  	expected2rb   rb   rc   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 )NrG   r   r    )r4  r  r  )g      @r,         &@)r   r   r    r!   r    r!   r"   r#   )r$   r%   rE   rF   r   r=   )      ?g      @g     !@)r(   r,         #@r"  r   r   r   r   )r    r    r   r  rb   r   r   )rP   r  r   rT   r   r   rs  )rZ   r  r   r0r%  scorerb   rb   rc   	test_axis  s&   
zTestScoreatpercentile.test_axisc                 C   s@   t ttjddgddd t ttjdgd t ttjdgd d S )Nr   r   r  ry   r  e   rK   )r   r   rP   r  rR  rb   rb   rc   test_exception  s
   z$TestScoreatpercentile.test_exceptionc                 C   sT   t tg dtj t ttg g gdtj t tg ddgtjtjg d S )Nr  c   )r   rP   r  rV   rW   r   rR  rb   rb   rc   
test_empty  s   "z TestScoreatpercentile.test_emptyN)r   r   r   r  r   r  r  r%  r.  r0  r2  rb   rb   rb   rc   r  g  s    r  zignore::FutureWarningc                
   @   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ej	dg dde
jddddgg dde
jddggej	dddgdd Zej	d	e
dde
jfddZd d! Zd"d# Zej	d$d%d&gd'd( Zd)d* Zejd+ej	d,e
d-e
d.gd/d0 Zd1d2 Zd3S )4TestModec                 C   s2   t g \}}t|tg  t|tg  d S r  rP   moder   rV   r   rZ   valsr  rb   rb   rc   r2    s   zTestMode.test_emptyc                 C   s6   t d\}}t|tdg t|tdg d S )Nrg  r   r4  r6  rb   rb   rc   rl    s   zTestMode.test_scalarc                 C   s2   g d}t |}t|d d t|d d d S )Nr   r!   r   rE      r   r   r"   r$   r"   rE   r"   r   r"   r   r   rP   r5  r   )rZ   data1r7  rb   rb   rc   r     s   
zTestMode.test_basicc              	   C   s$  g d}g d}g d}g d}g d}t |||||g}tj|d dd}t|d t d	gg t|d
 t dgg tj|ddd}t|d t g dg t|d
 t g dg tj|d
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)rE   rE   r  r  )rE   rE   rE   rE   )r3  rE   r3  r3  )r  r  r  r  )r  r  r  r  Tr>   keepdimsr   r  r   r$   )rE   rE   r  r  )r   r   r   r   rE   r3  r   r    r   )rV   r   rP   r5  r   )rZ   r;  data2data3data4data5arrr7  rb   rb   rc   	test_axes  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 )N:rE   rF   rG   rH   r=   )	rV   r  rq  r|  rP   r5  ndimr;  r   )rZ   r>   r   rS  r  rb   rb   rc   test_negative_axes_gh_15375	  s
   z$TestMode.test_negative_axes_gh_15375c                 C   s<   g d}g }t |}d}t|| t |}t|| d S )Nr8  )r5  count)rP   r5  r   )rZ   r;  r>  r  r   actual2rb   rb   rc   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   rE   r9  r   r"   r$   )r"   r   rt   ru   rx   ry   )rV   rW   rP   r5  r   r   r   )rZ   r;  r  rb   rb   rc   test_mode_nan	  s    


zTestMode.test_mode_nandata)r   r!   r   r   r   r   r!   r   )r   r!   r   r=  FTc                 C   s<   t j|d|d}|rt|d d d d S t|d d d S )Nrt   )rv   r=  r   r   r:  )rZ   rK  r=  r   rb   rb   rc   test_smallest_equal	  s   zTestMode.test_smallest_equalrL   c                 C   sj   t jd}|jdd|}tj||dd}t|j}|	| t j
|jj| t j
|jj| d S )NrD  )r   r    r!   r  Fr<  )rV   r  r  uniformr  rP   r5  r  rs  popr;  r   rG  )rZ   r>   r<   r  r   r   reference_shaperb   rb   rc   test_mode_shape_gh_9955,	  s   

z TestMode.test_mode_shape_gh_9955c                 C   s8   dt jdt jg}t|}t |jr|jdksJ d S Nr   r   )rV   rW   rP   r5  rj  rG  )rZ   r   r   rb   rb   rc   !test_nan_policy_propagate_gh_98156	  s   
z*TestMode.test_nan_policy_propagate_gh_9815c                 C   sF  t d}tj|ddd}|jj|jj  krdksJ  J tj|ddd}|jj|jj  kr6dks9J  J dddt jgddt jdgg}tj|ddd}t|jddg t|jd	dg tj|ddd}t|jdgdgg t|jd	gdgg t |}tj|d dd}tj|	 dd
}t|| |jj|jj  krdksJ  J tj|d dd}tj|	 dd
}t
|j	 |j	  |jjdksJ t
|j	 |j	  |jjdksJ dt jt jt jdgt jt jt jt jd	gdd	t jddgg}tj|dddd}t|jg d t|jg d tj|dddd}t|jdgd	gdgg t|jd	gdgd	gg t |}tj|d ddd}tj|	 ddd}t|| |jj|jj  krcdksfJ  J tj|d ddd}tj|	 ddd}t
|j	 |j	  |jjdksJ t
|j	 |j	  |jjdksJ d S )N)r   r   r   r   r   Fr<  )r   r   r   T)r   r   r   r   r   r   r=  rb   r   r   r!   rt   )r>   r=  rv   )r   r   r!   )r   r   r   )r=  rv   )rV   r  rP   r5  rs  rG  rW   r   r   ravelr   )rZ   r   r   r  rb   rb   rc   test_keepdims=	  sX   
$$

$

(zTestMode.test_keepdimsrv   r  rt   c                 C   s   d}t |}t j|d< tj|dd|d}t|jg d t|jg d t dt jfd	t j	d
fg}t j
d|d}tjtdd tj||d W d    d S 1 sTw   Y  d S )N)r    r   r   r   r   F)r   r>   r=  rv   r  r   r   r   r   asdfqwerr+  rE   r;   zArgument `a` is not...rz   ru   )rV   r  rW   rP   r5  r   rG  r<   uint8r   r  r   r   	TypeError)rZ   rv   rs  rK  r   my_dtypetestrb   rb   rc   test_gh16955y	  s   

"zTestMode.test_gh16955c                 C   s   t g }tjdf}t|| t jtjgdd}t|| g dtjtjtjgg}t j|ddd}dtjgddgf}t|| t j|dd	d}dtjgdd
gf}t|| tg g g}t j|dd}tjtjgddgf}t|| d S )Nr   rt   ru   )rr   r  r  r   r  r3  r   r  r   r=   )rP   r5  rV   rW   r   r   )rZ   r   r  r   zrb   rb   rc   test_gh9955	  s    





zTestMode.test_gh9955zignore::RuntimeWarningr`  rs  r  c                 C   sX   t j|d dd}tj|d dd}|d j|d j  kr'|j  kr'dks*J  J d S )NTr<  r   r   r*  )rP   r5  rV   rU   rs  )rZ   r`  r   r  rb   rb   rc   test_gh17214	  s   8zTestMode.test_gh17214c                 C   s   d}G dd d}t jt|d t|td W d    n1 s%w   Y  t jt|d ttjdtd W d    d S 1 sGw   Y  d S )Nz*Argument `a` is not recognized as numeric.c                   @   s   e Zd Zdd ZdddZdS )z8TestMode.test_raise_non_numeric_gh18254.<locals>.ArrLikec                 S   s
   || _ d S r  )_xrw  rb   rb   rc   __init__	  s   
zATestMode.test_raise_non_numeric_gh18254.<locals>.ArrLike.__init__Nc                 S   s   | j tS r  )rc  r  object)rZ   r<   copyrb   rb   rc   	__array__	  r  zBTestMode.test_raise_non_numeric_gh18254.<locals>.ArrLike.__array__)NN)r   r   r   rd  rg  rb   rb   rb   rc   ArrLike	  s    rh  rz   r   r;   )r   r   r\  rP   r5  rV   r   re  )rZ   r  rh  rb   rb   rc   test_raise_non_numeric_gh18254	  s   "z'TestMode.test_raise_non_numeric_gh18254N)r   r   r   r2  rl  r   rC  r   r*  r+  rV   r   rF  rI  rJ  rW   rL  r   rP  rR  rV  r_  ra  filterwarningsemptyrb  ri  rb   rb   rb   rc   r3    s8    
	
	<

r3  c                   @   s    e Zd Zg dZdZdd ZdS )TestSEMr   rg  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   re   r   rr   r%   rt   ru   gH=6?rx   ry   )r   rV   r  r   rY   rP   semscalar_testcaser   rj  testcaser	   r~  r
   r   r   rW   r   r   r   )rZ   ra   r[   r  r   rb   rb   rc   test_sem	  s&    

"

zTestSEM.test_semN)r   r   r   rp  ro  rq  rb   rb   rb   rc   rl  	  s    rl  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d4d5 Zd6S )7TestZmapZscorezx, yr   r   )r   r   r   r   r    c                 C   s6   t ||}|t| t| }t||dd d S )Nr&   r   )rP   zmaprV   rU   rm   r
   )rZ   r   r[   r`  r  rb   rb   rc   	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rw   rw   r   r   )r   r   r   rh  )rh  rw   rh  rw   r   r^  r   r   rh  r   r=   r   r   rw   r   r   r   r   )r   r   r   r   )rV   r   r   rP   rs  r   	rZ   r   t1t2t3z0r  z0_expectedz1_expectedrb   rb   rc   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 Nrv  )rw   r   rh  r   r   r>   rf   )      r  r'   r'   r   r   )      r  r'   r(   g?r   )rV   r   rP   rs  r   r   rZ   r   r`  r}  r~  rb   rb   rc   test_zmap_ddof	  s   
zTestZmapZscore.test_zmap_ddofrf   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 )
NrL   rK   r   r#   rG   rt   rf   rv   re   )rV   r   rW   rP   rs  r
   rj  )rZ   rf   scorescomparer`  rb   rb   rc   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   rK   r  r"      )r   r    rg   rT  rt   r   )rv   r>   rf   r   re   r{  r   )
rV   r   rT   r  rW   rP   rs  r   rj  r
   )rZ   rf   r  r  r`  r  rb   rb   rc   #test_zmap_nan_policy_omit_with_axis
  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   r  rL   r   r#   rG   zinput contains nanrz   rx   ru   )rV   r   rW   r   r   r   rP   rs  )rZ   r  r  rb   rb   rc   test_zmap_nan_policy_raise"
  s
   "z)TestZmapZscore.test_zmap_nan_policy_raisec                 C   s(   t g d}g d}t||dd d S )Nr   )gOT\wg%ܿg%?gOT\w?rG   r?   )rP   zscorer   )rZ   r[   desiredrb   rb   rc   test_zscore(
  s   zTestZmapZscore.test_zscorec           	      C   s   t g dg dg dg}dt d }t dd }t d}tj|d	d
}tj|dd
}| | d | d dgd|| d |g|| d || gg}g d| | | t dgg dg}t|| t|| d S ru  )rV   r   r   rP   r  r   rx  rb   rb   rc   test_zscore_axis0
  s&   


zTestZmapZscore.test_zscore_axisc                 C   sz   t g dg dg}tj|ddd}t g ddt d  }t g dt d	 }t|d
 | t|d | d S r  )rV   r   rP   r  r   r   r  rb   rb   rc   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  ru   )rV   r   rW   rP   r  rk  rj  rZ   r   r`  rb   rb   rc   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!   rt   ru   gIHb=gIHb=gIHb=?gIHb=?)rV   r   rW   rP   r  r   rZ   r   r`  r  rb   rb   rc   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   r3   r  r   r   rt   r  re   vIh%<=r   )rV   r   rW   rP   r  r_r
   r  rb   rb   rc   test_zscore_nan_omit_with_ddofe
  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!   rx   ru   )rV   r   rW   r   r   rP   r  rw  rb   rb   rc   test_zscore_nan_raisek
  s   z$TestZmapZscore.test_zscore_nan_raisec                 C   s0   dgd }t |}t|tt|tj d S )NgʡEr   )rP   r  r   rV   rj   r~  rW   r  rb   rb   rc   test_zscore_constant_input_1dp
  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rr   rr   rr   rr   rr   r&  rt        *@r   r=   r   r   r   )r   r"   )rV   r   rP   r  r   rW   rU  rT   rs  r  rj   )rZ   r   r|  r  r`  r[   rb   rb   rc   test_zscore_constant_input_2du
  s    

z,TestZmapZscore.test_zscore_constant_input_2dc                 C   s   t g ddddt jgddt jdgg}tj|ddd}t d}t d	}t|t t j| d
t jgt jddt jgt j|t jt jgg tj|ddd}t|t t jt jt jt jg| d|t jg| d	 |t j| d	 gg d S )Nr  rr   r&  rt  rt   r   rv   r>   r(   r   r   r   r   )rV   r   rW   rP   r  r   r
   )rZ   r   r|  r!  s2r  rb   rb   rc   -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)rr   rr   rt  rt  rt   r   r  rw  )rV   r   rW   rP   r  r   r  rb   rb   rc   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   rt   r  )rV   rj   rW   rP   r  r   )rZ   r[   r`  rb   rb   rc   test_zscore_2d_all_nan
  s   z%TestZmapZscore.test_zscore_2d_all_nanr   )r   r   r!   c                 C   s   t |}t|| d S r  )rP   r  r   r  rb   rb   rc   test_zscore_empty_input
  s   
z&TestZmapZscore.test_zscore_empty_inputc                 C   sN   t g d}t|}t |t| t tj|dd }t|| d S )Nr   r   re   )rV   r   rP   gzscoreloggmeangstdr
   )rZ   r   r`  r  rb   rb   rc   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   rK   r   r    )r   r   r   r   r   maskg0jg`ȿg/A?g(/?)rV   r   r  masked_arrayrP   r  r9  r
   )rZ   r   mxr`  r  rb   rb   rc   test_gzscore_masked_array
  s   

z(TestZmapZscore.test_gzscore_masked_arrayc                 C   s   t jd}|d}t |}t j||}d|jd< t	|dd  }t 
t |r/J t	|}t|dd  | tj	|d d}t|dd  | |d |dd < t	|}t|dd  t j tj	|d d}t|dd  t j d S )Ni_ rE   Tr   r   r=   )rV   r  r  standard_normal
zeros_liker  r  r  rP   r  anyrj  r
   r   rW   )rZ   r  r   r  r[   r  r   rb   rb   rc   $test_zscore_masked_element_0_gh19039
  s    




z3TestZmapZscore.test_zscore_masked_element_0_gh19039N)r   r   r   r   r*  r+  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rV   r   r  r  r  r  r  rb   rb   rb   rc   rr  	  s@    

	

rr  c                
   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dg ddd Zej	
ddeejddgfdeejejdgfgdd Zej	
ddg dfdgdd Zdd ZdS )TestMedianAbsDeviationc                 C   sR   t dddddddddddd	d
d
d
ddddddddt jg| _t g d| _d S )N皙@r#  r)   皙@rK  333333@=
ףp=@rI  (\
@r$  r*   rJ  皙@)\(@Q@)r  r  r#  r#  r)   r  rK  r  r  r  rI  r  r$  r$  r$  r*   rJ  r  r  r  r  r  r  g33333<@)rV   r   rW   dat_nandatrR  rb   rb   rc   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=   gQ?r"   r    r   )gףp=
?r'   ?r  )r   rP   median_abs_deviationr  rT   rV   r:  r   )rZ   r  madmad_expectedrb   rb   rc   test_median_abs_deviation
  s   z0TestMedianAbsDeviation.test_median_abs_deviationc                 C   s   t j| jdd}t|d d S )Nrt   ru   g(\?)rP   r  r  r   )rZ   r  rb   rb   rc   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   rh  r   rg  )r   rg  r3   r  r   r   r=   rV   r   rW   rP   r  r   )rZ   r   r  rb   rb   rc   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"   r1  rt   ru   r   )rV   r   rW   r9  rP   r  r   )rZ   r`  r  rb   rb   rc   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)rV   r  rP   r  r   	full_likesumrW   )rZ   r>   r   r  rb   rb   rc   test_size_zero_with_axis
  s   
"z/TestMedianAbsDeviation.test_size_zero_with_axisznan_policy, expectedrt   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%   rE   r  r  )rZ   rv   r  r   r  rb   rb   rc   test_nan_policy_with_axis
  s   z0TestMedianAbsDeviation.test_nan_policy_with_axiszaxis, expectedr   )r)   rh  rt  )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   rG   )r  r  r3  r3  rt   )centerrv   r>   r   r  )rV   r   rW   rP   r  rU   r
   )rZ   r>   r  r   r  rb   rb   rc   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callablerz   )r   r   r   r!   r1  r  )r   r   r\  rP   r  rR  rb   rb   rc   test_center_not_callable  s   "z/TestMedianAbsDeviation.test_center_not_callableN)r   r   r   r  r  r  r  r  r   r*  r+  r  rV   r   rW   r  r  r  rb   rb   rb   rc   r  
  s&    


r  c                 C   s,   t t| |d | D ]	}t|j|u  q
dS )z
    Checks that all of the warnings from a list returned by
    `warnings.catch_all(record=True)` are of the required type and that the list
    contains expected number of warnings.
    znumber of warningsN)r   r~  r   category)	warn_listexpected_typeexpected_lenwarn_rb   rb   rc   _check_warnings	  s   r  c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )TestIQRc                 C   s.   t dd }t j| tt|d d S )Nr$   r'   r  )rV   r   r  r  r   rP   iqrrw  rb   rb   rc   r     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 )Nrp  r   r   r   )rE   Z   )r  r3  r   )r4  rK  r(   r  )r  r  r  rx   lineargٿrt   r  T)rV   r  rP   r  )rZ   drb   rb   rc   test_api  s   

zTestIQR.test_apic                 C   s.   t tg tj t ttdtj d S r}  )r   rP   r  rV   rW   r   rR  rb   rb   rc   r2  '  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    rw   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   )	rV   r  r   rP   r  r   r  r   rj   r  rb   rb   rc   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   rw   TrS  )rV   r   r   rP   r  r   rw  rb   rb   rc   test_scalarlikeA  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 )Nr2  r   r!   r  r   r=   r!   r3   r   r   rh  r  r  )rV   r   rT   r   rP   r  r   rj   rw  rb   rb   rc   test_2DG  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tj|dd tttj|dd d S )N)G   r9  r  rE   r  r=   rK   r   r   r   r   r  rs  r   i  r   r!   r#   rF   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r  )r   r   r   r   r    rW  )rV   r  r  dstackrP   r  r   moveaxisswapaxesr   r  rT   rU  r   r   r   )rZ   or   qr  rb   rb   rc   r.  O  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   )r4  g     U@)r  r)   )g      )@rK  )rE   r  g?)r   r/  r4  )r   r  <   )
rV   r   r   rP   r  r   r   r   rW   r\  rw  rb   rb   rc   test_rngx  s   
zTestIQR.test_rngc                 C   sl  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 dD ]	}tj||d qtttj|dd d S )Nr!   r    r   r(   r  r  r  )r4  P   )r  r  r   r  r  r   r  r)   )inverted_cdfaveraged_inverted_cdfclosest_observationinterpolated_inverted_cdfhazenweibullmedian_unbiasednormal_unbiasedry   )rV   r   r   rP   r  r   r   )rZ   r   r[   r
  rb   rb   rc   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  Fr<  rb   r   )r   r!   rF   r  )r#   rF   )r   r   )r!   r#   r   r"  r   r   r   r   rS  r  )r#   Tr  )r   r!   r   rF   )r   r   r#   rF   )r   r!   r#   r   )r   r   r#   rF   )r   r   r#   r   )rV   r  r   rP   r  rs  rw  rb   rb   rc   rV    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  ru   r#   rt   rx   r  TrX   alwaysr   r  r!   r   r   r.   )r   r)   r   barfood)rV   r   rT   r   rP   r  rW   warningscatch_warningssimplefilterrj   r   r   rw  rb   rb   rc   test_nanpolicy  s6   


	
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@rh  r*   r  Tr
  r  r  )r  rv   r   )r>   r  rv   r   gF7k?rt   r.   g	I1=@g      @ry   )rV   r   rT   r   rP   r  r   rW   r  r  r  r   r   r   rw  rb   rb   rc   
test_scale  s<   



zTestIQR.test_scaleN)r   r   r   r   r  r2  r  r  r  r.  r  r  rV  r  r  rb   rb   rb   rc   r    s    )" r  c                   @   sN  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ejdddgejdedddd Zejdddgej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 d0d1 Z!d2d3 Z"d4d5 Z#d6d7 Z$d8d9 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   rg    r  )gp=
ף?g?߾?gD9?gQI?g}?5^INrs  r<   c                C   sH   t |}|d urt ||}t|| |d u r|j}|j|ks"J d S r  )rV   r:  broadcast_tor   r<   )rZ   r  expectrs  r<   rb   rb   rc   _assert_equal  s   

zTestMoments._assert_equalr   rE   )rE   r   zm, cr  )Nr   r   c                 C   sr   t jd}|j|d}tj|||d}|d u rt j|ddn|}t j|| | ddt| }t||dd d S )Nl   rHZ r  r  r   r=   缉ؗҜ<r   )	rV   r  r  rP   momentrU   r  r~  r
   )rZ   r   r  r
  r  r   r   r  rb   rb   rc    test_moment_center_scalar_moment  s   z,TestMoments.test_moment_center_scalar_momentr
  c                    sR   t jd}|j|dg d}tj| d} fdd|D }t|| d S )Nl   %~.}~= r  r  r  c                    s   g | ]
}t j| d qS )r  )rP   r  r  r
  r   rb   rc   r  &      z?TestMoments.test_moment_center_array_moment.<locals>.<listcomp>)rV   r  r  rP   r  r   )rZ   r   r
  r  r  r   r  rb   r  rc   test_moment_center_array_moment  s   z+TestMoments.test_moment_center_array_momentc                 C   sL  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 d}tj	t
|df 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 W d    n1 sw   Y  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 ) Nrw   r   r   r   rE   r         ?r   r         @r   )r   r  r   r   333333?)r   r   r   rg  1Mean of empty slice\.|invalid value encountered.*rz   r;   r  r=   r  r  r  orderr>   )r   r   rs  rr   r%   rt   ru   rx   ry   )rP   r  ro  r	   rp  r
   r   r   r   r   rY   r  rV   rW   r   r   r   r  r   r   r   )rZ   r[   r  r   rb   rb   rc   test_moment)  sL   








zTestMoments.test_momentr<   zexpect, orderr  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!   rb   )rV   r  r|  r  rP   r  r  r  )rZ   r<   r  r$  r   r[   rb   rb   rc   test_constant_momentsX  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   rK   r  r   r  r  r  r   r   )
rV   r   rT   r  r  rW   rP   r  r;  r
   )rZ   r   mmrb   rb   rc   test_moment_propagate_nanj  s   
z%TestMoments.test_moment_propagate_nanc                 C   sF   t jtdd tjg dg d W d    d S 1 sw   Y  d S )Nz6'order' must be a scalar or a non-empty 1D list/array.rz   r   r'  )r   r   r   rP   r  rR  rb   rb   rc   test_moment_empty_orderr  s   "z#TestMoments.test_moment_empty_orderc                 C   s8   t d}tj|dd}tj|dd}t j|| d S )NrE   r   )r  r'  )rV   r   rP   r  r;  r   )rZ   r   r   r  rb   rb   rc   test_rename_moment_orderx  s   
z$TestMoments.test_rename_moment_orderc                 C   s   t | j}t|sJ 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 sWw   Y  tt j|ddd ttt j|dd ttt j|dd d S )Ng7l*ҿrE   r   biasg2۠ۿrw   rr   r%   r  r  rt   ru   rx   ry   )rP   skewro  rV   rj  testmathworksr	   rp  r   rW   r  r   r   r   rZ   r[   r   rb   rb   rc   test_skewness  s    

zTestMoments.test_skewnessc                 C   s   t ttdd d S )NrE   rw   )r   rP   r/  r   rR  rb   rb   rc   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   rK   r  r  r  r   r  r  r   r   r   )rV   r   rT   r  r  rW   r  rP   r/  r;  r
   )rZ   r   r!  rb   rb   rc   test_skew_propagate_nan  s   
z#TestMoments.test_skew_propagate_nanc              
   C   s   t jtdd` tdd}tt|sJ tt|td s&J tt|td s4J ttj|dds@J ttdgd	 sMJ ttd
t	ddd  s_J W d    d S 1 sjw   Y  d S )NPrecision loss occurredrz   9ѿrE              Fr-  g,@r#   r   rL   r    r  )
r   r   rY   rV   repeatrj  rP   r/  r  r   rZ   r   rb   rb   rc   test_skew_constant_value  s   &"z$TestMoments.test_skew_constant_valuec                 C   s   t | j}t|sJ 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 )Nr   r   fisherr.  gO߻S@rE   gx|N@g=
ףp=?rr   r%   rt   ru   Gzrx   ry   )rP   kurtosisro  rV   rj  r0  r	   rp  r   rW   r   r   r   r   r1  rb   rb   rc   test_kurtosis  s   


zTestMoments.test_kurtosisc                 C   s   t ttg dtj d S )Nr   )r   typerP   r>  rV   r   rR  rb   rb   rc   test_kurtosis_array_scalar  r  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   rK   r  r   r  r  g(\r   r   )
rV   r   rT   r  r  rW   rP   r>  r;  r
   )rZ   r   r~  rb   rb   rc   test_kurtosis_propagate_nan  s   
z'TestMoments.test_kurtosis_propagate_nanc                 C   s   t dd}tjtddB t tj|ddsJ t tj|td dds*J t tj|td dds:J t tj|dddsGJ W d    d S 1 sRw   Y  d S )	Nr6  rE   r5  rz   F)r<  r7  r;  )	rV   r8  r   r   rY   rj  rP   r>  r  r9  rb   rb   rc   test_kurtosis_constant_value  s     "z(TestMoments.test_kurtosis_constant_valuec                 C   s6   | j t| j  }tt|d t| j d d S )Nr  )testcase_moment_accuracyrV   rU   r
   r   rP   r  )rZ   
tc_no_meanrb   rb   rc   test_moment_accuracy  s   
z TestMoments.test_moment_accuracyc                 C   sj   t jtdd$ tjd}|jdd}d|d d df< t|d  W d    d S 1 s.w   Y  d S )Nr5  rz   l   :"z` )r  rE   r  )\(?r   )r   r   rY   rV   r  r  rP   r/  )rZ   r  r   rb   rb   rc   test_precision_loss_gh15554  s   "z'TestMoments.test_precision_loss_gh15554c                 C   sz   d}t jt|d tg  W d    n1 sw   Y  t jt|d tg  W d    d S 1 s6w   Y  d S )Nr"  rz   )r   r   rY   rP   r/  r>  rZ   r  rb   rb   rc   test_empty_1d  s   "zTestMoments.test_empty_1d)&r   r   r   r)  rp  ro  rV   r  rq  r|  rD  r0  r  r   r*  r+  r   r  r  r&  r   r   
complex128r(  r*  r+  r,  r2  r3  r4  r:  r?  rA  rB  rC  rF  rH  rJ  rb   rb   rb   rc   r    s@    		/	"

r  c              
   C   s  t  }tddd}t jddd}| t j|||d}g }t H td tt	|j
D ]3}tt$ tj|d|d}t|d	krRtt|rR|| W d    n1 s\w   Y  q.W d    n1 slw   Y  t| | tj|}||fS )
NF)	allow_nanallow_infinityr   r   )min_dimsmin_side)r<   elementsrs  errorr#  r   )npstfloating_dtypesdictarray_shapesarraysr  r  r  r  r~  rs  
contextlibsuppress	ExceptionrP   r  rV   rk  r  r_  
hypothesisassume
strategiessampled_from)drawr<   rP  rs  rK  ok_axesr>   ri   rb   rb   rc   ttest_data_axis_strategy  s(   



r`  c                   @   s   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ejdg ddd Zdd Zejjejejdde dejdddgdd ZdS )TestStudentTestr   rs  r   r   gSzgE.?g {gB4t?g {?g?r   c              	   C   s  t  -}tjddd |td tdd\}}W d    n1 s$w   Y  W d    n1 s3w   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  dividerm  rg  r   r   r   r   r   r   r!   rE   3   it r  r  r   r  r  r  r3   rt   ru   )g̈́^Bg/kCm?rx   ry   )r   rV   r  r   rY   rP   ttest_1sampr   rj  X1r   T1_0P1_0r   X2T2_0P2_0T1_1P1_1T1_2P1_2normr  rW   r   r   r   )rZ   ra   tr   r   r   r   rb   rb   rc   test_onesample,  sJ    

"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   rQ  r   r   r   r   )	r   r   rP   rg  rh  r
   P1_1_lrn  P1_1_g)rZ   rs  r   rb   rb   rc   test_1samp_alternativeX  s   z&TestStudentTest.test_1samp_alternativer   rc  c           	      C   s   t jd}d}|j|ddd}| }ddgdt jgt j d	gd
}tj|||d}|jdd}t|||  t	|j
|d  d S )Nl   <PleH rE   r(   r   r   r  r  gÍ]?g$(}w@gS1?g]@r   r   r   )popmeanr   333333?confidence_levelr   )rV   r  r  r  r9  rP   rg  r   r
   r   df)	rZ   r   r  r  r   rz  r  r   r   rb   rb   rc   test_1samp_ci_1dd  s   
z TestStudentTest.test_1samp_ci_1dc                 C   sV   t tdd}d}tjt|d |jdd W d    d S 1 s$w   Y  d S )NrE   r   4`confidence_level` must be a number between 0 and 1.rz   r|  )rP   rg  rV   r   r   r   r   r   )rZ   r   r  rb   rb   rc   test_1samp_ci_ivy  s
   "z TestStudentTest.test_1samp_ci_ivr   g?)alpha	data_axisr   r   c           
      C   sr   |\}}t j|d||d}|j|d\}}|dkr|n|}	tj|	|d}	t j||	||d}tj|jd|  d S )Nr   )r   r>   r|  r   r=   r   )rP   rg  r   rV   r  r;  r
   r   )
rZ   r  r  r   rK  r>   r   lr  rz  rb   rb   rc   test_pvalue_ci  s   zTestStudentTest.test_pvalue_ciN)r   r   r   rV   r   rh  rk  ri  rj  rn  ro  rp  rq  rl  rm  ru  rv  rt  rw  r   r*  r+  r  r  r,  rZ  givenr\  floatsr`  r  rb   rb   rb   rc   ra    s0    ,
ra  c                   @   sv  e Zd Zdd Zejdg ddd Zejdg ddd	 Zejdg d
dd Z	ejdg ddd Z
ejdg ddd Zejdg d
dd Zejdg ddd Zejddg dfdg dfdg dfdg dfgdd Zejddg dfdg d fdg d!fdg dfgd"d# Zd$g d%ejfd$ejgd%ejfd$ejgg d&ejejejgfd$d%d'gd%d'ejgd(d)ejgfd*d%d'ejgg d&g d+fd*d%d'gd,d%ejgd,d(ejgfd*ejejgg d&ejejejgfgZejd-ed.d/ Zd0d%d'd1ejgg d2d3fd0g d2d%d'd1ejgd3fgZejd4ed5d6 Zejd7g d8d9d: Zd;S )<TestPercentileOfScorec                 O   s   t j|i |S r  )rP   percentileofscore)rZ   argskwargsrb   rb   rc   f     zTestPercentileOfScore.fzkind, result))rr  r  )rU   #   strictr  )weakr  c                 C   "   g d}t | j|d|d| d S )N
r   r   r   r    r!   r"   r#   r$   r%   rE   r    kindr   r  rZ   r  r   r   rb   rb   rc   test_unique     z!TestPercentileOfScore.test_unique))rr  r  )rU   r  r  )r  r  c                 C   r  )N)
r   r   r   r    r    r!   r"   r#   r$   r%   r    r  r  r  rb   rb   rc   test_multiple2  r  z$TestPercentileOfScore.test_multiple2))rr  r  )rU   r  r  )r  r  c                 C   r  )N)
r   r   r   r    r    r    r!   r"   r#   r$   r    r  r  r  rb   rb   rc   test_multiple3  r  z$TestPercentileOfScore.test_multiple3))rr  r  )rU   r  r  )r  r  c                 C   r  )N)
r   r   r   r!   r"   r#   r$   r%   rE   rF   r    r  r  r  rb   rb   rc   test_missing  r  z"TestPercentileOfScore.test_missingc                 C   r  )N
rE   r3  r  r  r  r  F   r  r  r  r  r  r  r  rb   rb   rc   rQ    r  z(TestPercentileOfScore.test_large_numbersc                 C   r  )N)
rE   r3  r  r  r  r  r  r  r  r  r  r  r  r  rb   rb   rc   test_large_numbers_multiple3  r  z2TestPercentileOfScore.test_large_numbers_multiple3c                 C   r  )N
rE   r3  r  r  r  r  r  r  r  n   r  r  r  r  rb   rb   rc   test_large_numbers_missing  r  z0TestPercentileOfScore.test_large_numbers_missingrr  )r   rE   r  r  rU   )r   r!   _   r  r  )r   r   r  r  r  c                 C   s&   g d}t | j|g d|d| d S )Nr  )r   rE   r  rB  r  r  r  rb   rb   rc   test_boundaries  s   z%TestPercentileOfScore.test_boundaries)r   rE   r  )r   r!   r  )r   r   r  c              
   C   sD   ddddddddd	t j
 g
}t| j|t j dt j
 g|d
| d S )Nr   r   r   r    r!   r"   r#   r$   r%   r  )rV   r9  r   r  r  rb   rb   rc   test_inf  s   (zTestPercentileOfScore.test_infr  r   rs  r   r  r  rt   )r   r  r  r   zpolicy, a, score, resultc                 C   s   t | j|||d| d S )Nru   r  )rZ   policyr   r-  r   rb   rb   rc   test_nans_ok  s   z"TestPercentileOfScore.test_nans_okrx   r   r   r  zpolicy, a, score, messagec                 C   sB   t t|d | j|||d W d    d S 1 sw   Y  d S )Nrz   ru   )r   r   r  )rZ   r  r   r-  r  rb   rb   rc   test_nans_fail  s   "z$TestPercentileOfScore.test_nans_failrs  ))r"   r  r   r   r   )r   r   r   r   c                 C   sB   t g d}||}|d }g d}t| j||dd| d S )N)r   r   r   r   r    r!   rE   r  rr  r  )rV   r   rT   r   r  )rZ   rs  r   r  resultsrb   rb   rc   test_nd  s
   
zTestPercentileOfScore.test_ndN)r   r   r   r  r   r*  r+  r  r  r  r  rQ  r  r  r  r  rV   rW   casesr  r  r  rb   rb   rb   rc   r    sb    














"

r  Case)f_obsf_exprf   r>   chi2r  mod_logcr)r    r$   rG   r$   r    r   r'   rG   r(   r$   rh  r^  gfx(@)r   r~   rG   r   r  rg  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 )NrM   r  r  rf   r>   lambda_r   pearson)r  r  rf   r>   )rV   r:  r   	broadcastrs  r   r   rY   rP   power_divergencer
   	chisquaredistributionsr  sf)rZ   r  r  rf   r>   r  expected_statnum_obsr   ra   statr   
expected_prb   rb   rc   check_power_divergenceE  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_casesr  r  r  rf   r>   r  r  r  r  rZ   caserb   rb   rc   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 r  )r  rV   r  r   r  r  r  rf   r>   r  r  r  r  )rZ   r  mobsrb   rb   rc   test_basic_maskedx  s>   z%TestPowerDivergence.test_basic_maskedc              	   C   s   t d }t d }t|j|jf}tt|jt|j |jf}| ||ddd|j|jg | ||ddd|j	|j	g | ||ddd|j
|j
g | ||ddd|j|jg | t|jddd dd d|j d S )Nr   r   r  r  r  r  r   )r  rV   r  r  	ones_likerU   r  r  r  r  r  r  r   rT   )rZ   case0case1r  r  rb   rb   rc   r.    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   re   rW  r  )r  rV   r  r  rt  r  rU   r  r  r   rP   r  r
   r   )rZ   r  r  r  r  expected_chi2rf   r  r   stat0p0stat1p1rb   rb   rc   test_ddof_broadcasting  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  r  r  r  )r  r  power_div_empty_casesr  r  r  rf   r>   r  r  r  r  r  rb   rb   rc   test_empty_cases  s(   
"z$TestPowerDivergence.test_empty_casesc                 C   sN   t d j}t d j}t d j}t d j}tj||||dd}d}t|| d S )Nr   r  r  rd  )r  r  r  rf   r>   rP   r  r   )rZ   r  r  rf   r>   r   r   rb   rb   rc   '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 )NrE   r3  r  r!   r2  r  r4  For each axis slice...rz   r  r  r  r   )r  r  r>   g̑m@gUUU@gj^4;?g4;?)rV   r   r   r   rP   r  r
   )rZ   r  r  r  r   rb   rb   rc   test_power_divergence_gh_12282  s   z2TestPowerDivergence.test_power_divergence_gh_12282N)r   r   r   r  r   r  r.  r  r  r  r  rb   rb   rb   rc   r  C  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  rz   rE   r3  r  r  r  )r   r   rP   r  rb   rb   rb   rc   test_gh_chisquare_12282  s   "r  zn, dtyperB  i@B c                 C   sj   t j| dg|d}t j| d | d g|d}t||}|\}}t|| dd t|j| t|j| d S )Nr   r;   r   r  r   )rV   r   rP   r  r
   r   r   r   )r  r<   obsexpr   r  r   rb   rb   rc   #test_chiquare_data_types_attributes  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~       rK   )rK   rK   r   r    r!   )r   r   r   r   r   )r   r   r   r   r   g      8@r'   r   r~   r  rh  r   r(  r!   r  r   r=   r   r  r  r2  r?   )r>   r  )r   r!   r"   r1  rE   )r   r   r   r   r   r  )r   r    r$   rE   r1  )r  r   r   r  r  rM   rb   r+  )rV   r   rt  r  r  r  rP   r  r  r  matr   r   r  rG  r  r   r  r   r   r   r  r   r   rY   MaskedArrayrs  r  rk  )r  r  r  expected_chisq
expected_gr  chisqr   gobs1exp1ra   empty3rb   rb   rc   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)r2  rF   rC   rN   r!   rF   rE   r    r$   rE   r#   r%   rF   r   r"   r   r   r    g*kqr   ) g      $g    @r  g     r@g      gffffffP@g       gLD@r  g      A@r   g     =@r  g     :@rw   g8@r'   gffffff7@gq=
ףp?g7@r   g333336@r(   g6@rh  gfffff6@r   g8@r3   g     A@rr   g     j@rK   r   r   r  g{Gzt?r   )rV   r   r   r~  r  r  r  r  rt  rT   rP   r  r
   )r  betar  r  expected_countstable4table5r  r  r  r   rb   rb   rc   /test_power_divergence_against_cressie_read_dataO  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  gQ?      ?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#@r/   r  g$@)g333333@g@g@r*   g@)r  r  r,   rK   @)g!@g!@333333 @ffffff
@g333333"@r   r   r   r   )gNt$@gBv?)g
__2@g5"]i2?)g\(\%@g+ԋ?rd  )r   r   rP   friedmanchisquarer   r   r   mstats)r  r  r  r   r   rb   rb   rc   test_friedmanchisquare|  sN   









	


   

r  c                   @   s6   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.autorC   c           	      C   s8   t j|d||d}t||g}tt|||d d S Nrr  r   r5  r?   )rP   kstestrV   r   r   	rZ   r   r   expected_statisticexpected_probr5  r@   r   r  rb   rb   rc   _testOne  s   zTestKSTest._testOnec                 C   s@   t j|d||d}t j|t jj||d}tt|||d d S r  )rP   r   ks_1samprr  cdfr   rV   r   )rZ   r   r   r5  r@   r   result_1samprb   rb   rc   _test_kstest_and_ks1samp  s
   z#TestKSTest._test_kstest_and_ks1sampc                 C   s,   t ddd}d}t|d}t|| d S )NrK   r   r%   rd  rr  )rV   r  rP   r   r   rZ   r   r   r   rb   rb   rc   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 )NrK   r   r%   r   r2  
r=  gQ?g333333g(\?gQ?g(\ſg{GzgHzG?g\(\gGzr   r'  r5  r   )rV   r  r  rw  rb   rb   rc   test_agree_with_ks_1samp  s   z#TestKSTest.test_agree_with_ks_1sampNr  rC   )r   r   r   r)  r  r  r
  r  rb   rb   rb   rc   r    s    

r  c                   @   sl   e Zd ZdZ	dddZdd Zdd	 Zd
d Zdd Ze	j
dejejge	j
dg ddd ZdS )TestKSOneSamplezY
    Tests kstest and ks_samp 1-samples with K-S various sizes, alternatives, modes.
    r  rC   c           	      C   s<   t j|t jj||d}t||g}tt|||d d S )Nr  r?   )rP   r  rr  r  rV   r   r   r  rb   rb   rc   r    s   zTestKSOneSample._testOnec                 C   s0   t ddd}d}t|tjj}t|| d S )NrK   r   r%   rd  )rV   r  rP   r  rr  r  r   r	  rb   rb   rc   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 )NrK   r   r%   r   g|N?g7.s?r  r2  g{CTp?g M<b*?r  gZL?g86J4?r   g+?r'  r  r   gHD?gr?rV   r  r  rw  rb   rb   rc   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 )Nr  r  h:)r  r   r  r   ghх?g7?asympr  r   g^h?r   gv!ԉ}?g*z)?)rP   rr  r  r  rw  rb   rb   rc   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.5rz   r(   rK   ))r/  r   Tr   )r/  皙?Tr   )r/  r   Trw   )r/  gTrw   )r        ?Trw   )r  r  Fr   )r  r'   Tgb?)r  r'   FgiNq>)r        ?Tgv(?)r  r  TgT	?)@  g\(\?Frw   )r        ?Fg(>)r  gQ?Fg@c?)r        ?FgX+ʳP?rs  r   )dtypes)r   rV   rj  r   rW   r   r   r:  r   checkintr  bool)rZ   datasetrb   rb   rc   test_ks1samp_allpaths  s    z%TestKSOneSample.test_ks1samp_allpathsksfunc*alternative, x6val, ref_location, ref_sign))r   r"   r"   r   )r   r#   r#   rK   )r   r"   r"   r   )r   r#   r#   rK   c           	      C   sb   t dd }||d< tjddj}||||d}t|jddd |j|ks(J |j|ks/J d S )	NrE   r'   r"   r  r   rZ  r   r   )	rV   r   rP   rM  r  r
   r   statistic_locationstatistic_sign)	rZ   r"  r   x6valref_locationref_signr   r  r   rb   rb   rc   test_location_sign"  s   
z"TestKSOneSample.test_location_signNr  )r   r   r   r)  r  r
  r  r  r!  r   r*  r+  rP   r   r  r)  rb   rb   rb   rc   r    s    
#r  c                   @   s  e Zd ZdZ	d1d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ejj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)d* Zejd+ejejgejd,g d-d.d/ Z d0S )2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  )rP   ks_2samprV   r   r   )	rZ   r  r  r   r  r  r5  r   r  rb   rb   rc   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   rw   )r  rR  rb   rb   rc   	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   rh  r  r   rh  r   r   r   r   r[  r   r^  r  r]  r   rV   r   r  rZ   r;  data1pdata1mr>  rb   rb   rc   testTwoVsThreeH  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   rh  r  r  r   r'   g?r   g?r   r  皙?r(  r  r  r   r.  r/  rb   rb   rc   testTwoVsFourT  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   rZ  r   r!  g~z?r   gz;.B?r   r   r   {Gz?gn2IU?r  )rZ   x100	x100_2_p1	x100_2_m1rb   rb   rc   test100_100a  s   zTestKSTwoSamples.test100_100c                 C   s   t ddd}t ddd}|d d }|d d }| ||ddd | ||d	dd
 | ||ddd | ||ddd | ||d	dd | ||ddd d S )Nr   r  r  r3  rZ  r   g?g@߿?r   g}n?r   r   g:[?g]O);?gѫ);?rw   r   r  )rZ   r6  x110
x110_20_p1
x110_20_m1rb   rb   rc   test100_110l  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   rE   r#   r   g      ?g^dH?r   gQl6y?r   rw   r   gVdEVdE?g(f^?g!?gii?g+ ϖ?)rV   r   r  r  )rZ   x2233x3344x2356x3467rb   rb   rc   testRepeatedValuesy  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   rw   r'   r.  )rZ   r>  rb   rb   rc   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 .}d}|t| | 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   rB  r   g     @@r  r  r  r   g2JE?r   g     @@gsW\nc?)ks_2samp: Exact calculation unsuccessful.r'  Tr
  r  
rV   r  r  r   r   rY   r  r  r  r  	rZ   n1n2deltar   r[   ra   r  r  rb   rb   rc   testMiddlingBoth  sB   
"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 .}d}|t| | 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   rB  r   g     ȹ@r  r  r  r   gZ?r   g     @@g@J?rD  r'  Tr
  r  rE  rF  rb   rb   rc   testMediumBoth  sB   
"zTestKSTwoSamples.testMediumBothc                 C   s   d\}}|d }d| | d d }t dd|| }t dd|}| ||dd	| d
 | ||dd| d | ||dd	| d d S )N)'  r  r&  r   r   r   rB  r  r   g    `@g      <r   g     @g򼉷?r   gimb:r  )rZ   rG  rH  lcmrI  r   r[   rb   rb   rc   	testLarge  s   zTestKSTwoSamples.testLargec                 C   s\   t jd t jjdd}t jjddd }| j||dddd	d
 | j||ddddd
 d S )N@ i  r  i  r(   r   gC?      <r  r  r'  rV   r  rq  r  r  r  rb   rb   rc   test_gh11184  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 )NrP  rM  r  i'  r(   r   g 	_r!?gAD5r  r  rQ  r'  r   gלN#y7r   gvqw?rR  r  rb   rb   rc   test_gh11184_bigger  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 )NrP  r  i.  r  rE   r'   r   r  r'  r  r  r   )	rV   r  rq  r  r  rP   r+  r   r   )rZ   r   vals1vals2r'  r  rb   rb   rc   test_gh12999  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 +}d}|t| | j||dd| ddd | j||dd| ddd W d    d S 1 sw   Y  d S )N)rM  i*  r&  r   r   r   rB  r   g     @gkHY?r  r  gLɔ.?r'  r  r   g.LbG2?r   rr   gr?֎?rD  )rV   r  r  r   r   rY   )	rZ   rG  rH  rN  rI  r   r[   ra   r  rb   rb   rc   testLargeBoth  s4   "zTestKSTwoSamples.testLargeBothc                 C   s$   d}t ddgdg}t|| d S )Nrd  r   r   r   )rP   r+  r   rZ   r   r   rb   rb   rc   testNamedAttributes  s   z$TestKSTwoSamples.testNamedAttributesc                 C   s   ddl m}m} |dddd |dddd tjdd tt|dd	dd tt|d
ddd W d    d S 1 s:w   Y  d S )Nr   )_count_paths_outside_method!_compute_outer_prob_inside_methodr   r  i  rx   r  rK  iK  r  )scipy.stats._stats_pyr\  r]  rV   r  r   FloatingPointError)rZ   r\  r]  rb   rb   rc   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 rm  )r   r   rP   r+  rR  rb   rb   rc   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    rw   r   rx  r   r  r  r   r   N)rV   r  rq  rP   rM  r  r+  )rZ   rG  rvs1rvs2rb   rb   rc   test_gh12218/  s   zTestKSTwoSamples.test_gh12218c                 C   s   t jjdd}|jddd }|jdd}d}tjt|d tj||d	d
}t|j	ddd W d    d S 1 s:w   Y  d S )Ni{frq  iq  r  r'   iq  z(ks_2samp: Exact calculation unsuccessfulrz   r   r   r   r{  r   )
rV   r  RandomStater   r   rY   rP   r+  r
   r   )rZ   r  r;  r>  r  r   rb   rb   rc   test_warnings_gh_14019<  s   "z'TestKSTwoSamples.test_warnings_gh_14019r"  r#  ))r   皙@ri  r   )r   ffffff@r  rK   )r   ri  ri  r   )r   rj  r  rK   c           	      C   s^   t jdt jd}| }||d< tj|||d}|jdksJ |j|ks&J |j|ks-J d S )NrE   r;   r"   r   rZ  )	rV   r   r   rf  rP   r+  r   r$  r%  )	rZ   r"  r   r&  r'  r(  r   r[   r   rb   rb   rc   r)  H  s   
z#TestKSTwoSamples.test_location_signN)r  )!r   r   r   r)  r  r,  r2  r4  r9  r=  rB  rC  r   r*  re  rJ  rL  rO  rS  r,  rT  rX  rY  r[  r`  ra  re  rh  r+  rP   r   r+  r)  rb   rb   rb   rc   r*  7  sF    








r*  c               	   C   s  d\} }| |  g||gf}t ddd}t ddd}t t dddt dddg}t t dddt dddg}tj||dd\}}t||g| |f tj|j|jdd\}}t||g| tj||dd\}}t||g| t -}	t jd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jt
d$d% tg d&g d'\}}W d    n	1 sw   Y  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 sAw   Y  t  d*}tttj|!d+|!d, d-d. }t "|}t j|d d d/d0f< t j|d d d1d2f< tj||ddd \} }tj||dddd3\}}t|| d4d5 t jdd t||| |dd4d5 W d    n	1 sw   Y  tj||dddd3\}}t|| d4d5 t jdd t||| |dd4d5 W d    d S 1 sw   Y  d S )6N)gu?gȵI?r   r  rG  gKX@r   r=   r  rb  rm  rg  r   rd  r  r   r  rQ  r   r   r>   r   r   rb  r!   rE     rf  r  r  )r  r   r  r  rt   ru   )ghm#1?gry̧?rx   ry   r5  rz   r  r*  rK   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   rb   rs  r   altrb   rb   rc   convert      ztest_ttest_rel.<locals>.convertr3  r  r2  r4  r  r{  r   )#rV   r  r   rP   	ttest_relr   rt  r   r  r   rY   r   rj  r   r  absr   rs  r  r   r   r
   r  rg  rr  r  rW   r   r   r   r9  r  r   rT   	vectorize)trr  tprrc  rd  rvs1_2Drvs2_2Drs  r   ra   r   r   rvs1_3Drvs2_3Dr  r   r[   ananrr  	converterrb   rb   rc   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 )Nrh  r   rg  r   rh  r   rh  rt   ru   r   r   r   )r  grh|?-C6?)rV   rW   rP   rt  r
   r   r   r   r[   r%  r&  r3rb   rb   rc   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  )rP   rt  r  	_stats_pyTtestResultr   rV   rW   r   rb   rb   rc   #test_ttest_rel_empty_1d_returns_nan     r  zb, expected_shape)r   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   rK   r=   r  )rV   rk  rP   rt  r  r  r  rj   rW   r   r   r   r   expected_shaper   r   expected_valuerb   rb   rc   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   )rV   rk  rP   rt  r  r  r  r   r   rs  r   r   r   r   rb   rb   rc    test_ttest_rel_nonaxis_size_zero     

r  r   rc  c                 C   s   t jd}d}|j|ddd}|j|ddd}ddgdt jgt j d	gd
}tj||| d}|jdd}t|||   t	|j
|d  d S )Nl   C67l:  rE   r(   r   rx  gZ?Ygi{a?g8 gC?ry  r   r{  r|  r   )rV   r  r  r  r9  rP   rt  r   r
   r   r~  )r   r  r  r   r[   r  r   r   rb   rb   rc   test_ttest_rel_ci_1d  s   	
r  ztest_fun, argsrE   c                 C   sL   | | }d}t jt|d |jdd W d    d S 1 sw   Y  d S )Nr  rz   rE   r|  )r   r   r   r   )test_funr  r   r  rb   rb   rc   test_ttest_ci_iv  s
   "r  c                 C   s   ddd}|| |||| S )Nr   c                 S   s<   t | } t j| |d}t j| |dd}| j| }|||fS )Nr=   r   r  )rV   r:  rU   rm   rs  )r   r>   murm   nobsrb   rb   rc   _stats*  s
   


z_desc_stats.<locals>._statsr  rb   )r  r  r>   r  rb   rb   rc   _desc_stats)  s   
r  c               	   C   s  d} d}| |  g||gf}t ddd}t ddd}t ||g}t ||g}tj||dd\}}t||g| |f ttjt|| ||g tj|j|jdd\}}t||g| t|j|j}	ttj|	 ||g tj||dd\}}t||g| t||dd}	ttj|	 ||g t	 ,}
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jtd!d" tg d#g d$\}}W d    n	1 sAw   Y  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 sw   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  rm  rg  r   r  r   r  rQ  r   r   r   r   rk  rb  rE   rl  rf  r  rt   ru   )guͷ?g*,?rx   ry   r5  rz   r  r*  rK   r  r2  r"   rG   c                 S   rn  ro  rb   rp  rb   rb   rc   rr    rs  ztest_ttest_ind.<locals>.convertr  r{  r   )#rV   r  r   rP   	ttest_indr   ttest_ind_from_statsr  rt  r   r  r   rY   r   rj  r  r   ru  r   rs  r  r   r   r
   r  rg  rr  r  rW   r   r   r   r9  r  rv  )rw  r  rx  rd  rc  ry  rz  rs  r   r  ra   r{  r|  r  r   r[   r}  rr  r~  rb   rb   rc   test_ttest_ind3  s   


 




"


r  c                   @   s2  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e	e
ejdddefg
Z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*d+ Z)dS ),Test_ttest_ind_permutationsr3  r   r   r    r  rE   r   r   r!   r  r  r$   '^P?gCq?g$R?)g=B?g?goŜ?gp?g'^?r>   N)r  r>   	equal_varTrK   )r>   r  r   z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>   r  r  r   )r>   r  permutationsr  r!   )updaterP   r  r   )rZ   r   r   r  p_d	options_a	options_pstat_ar{  stat_pr   rb   rb   rc   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>   r  r   r   r   r   r'   
rV   r  rq  r|  r  rP   r  r   r   r   )rZ   Nr   r   r  res_g_abres_g_bares_l_abres_l_bares_2_abres_2_bar  rb   rb   rc    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  r  )rV   r  rq  r|  rP   r  r9  r   )rZ   r  r   r   rS  r  r  r  rb   rb   rc   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\}}}tt|}	|	t|| |ks?J t||	ksGJ d S )Nr   r   r    r  T)	rV   r  rq  r|  r  r~  r   setr   )
rZ   r   r   rK  nanbr  t_statr{  n_uniquerb   rb   rc   !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d|d d    t|j	|j	 dd|d d    d S )Nr   r  r   r   rK   r  )r>   r  r  r   r   r   r   r  r  )	rZ   r  r   r   r  r  r  r  r  rb   rb   rc   #test_ttest_ind_randperm_alternative1  s(   z?Test_ttest_ind_permutations.test_ttest_ind_randperm_alternativec           	      C   sN  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
d
|d d
    |jdk}t	d|j|  |j| dd t	dd
|j|    |j|  dd t	d|j|   |j|  dd t	dd
|j|   |j| dd d S )Nr   r  r    r/  r  r  r   r   r   r   r   r  r'   r   r5  r   )
rV   r  rq  r|  r  rP   r  r   r   r
   )	rZ   r  r   r   r  r  r  r  r  rb   rb   rc   $test_ttest_ind_randperm_alternative2N  s6   




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   r  r!   r!   r   )r$   r   )r%   r   r  r  rx   ru   r  rz   rs   r  r=   )rV   r  rq  r|  rW   r  r   r   rP   r  r   rX   rY   rj  r  r   r   r   r
   rU  )	rZ   r  r   r   r  r   ra   r  r  rb   rb   rc   $test_ttest_ind_permutation_nanpolicyp  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d	 W d    d S 1 s^w   Y  d S )
NzPermutations must berz   rL   r  r(   z'hello' cannot be usedr   hello)r  r  r>   )r   r   rP   r  r  b2r   r   rR  rb   rb   rc   'test_ttest_ind_permutation_check_inputs  s   "zCTest_ttest_ind_permutations.test_ttest_ind_permutation_check_inputsc                 C   sN   d}t j|d}t j|d}tj||ddj}td|v d|vs%J d S )NrE   r3  r   r  rw   )rV   r  r|  rP   r  r   print)rZ   r  r   r   p_valuesrb   rb   rc   )test_ttest_ind_permutation_check_p_values  s   zETest_ttest_ind_permutations.test_ttest_ind_permutation_check_p_values)*r   r   r   r  rV   r  rq  r  r   r   r   r  r  r  b3rP   rr  r  rT   rt  rc  rd  r  p_d_genp_d_bigtolistrg  r  paramsr   r*  r+  r  r  r  r  r  re  r  r  r  r  rb   rb   rb   rc   r    sR    ,(


*2

*
!$	r  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kwdsrB  r   r  trimr  )r  r  basic)idsr  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>   rL   )r   r   r   r  r   r   r   r   r   r   rK   r!   r   r    r   r   r   c                 s       | ]}t |V  qd S r  r  r  rb   rb   rc   	<genexpr>      z=Test_ttest_ind_common.test_ttest_many_dims.<locals>.<genexpr>)rV   r  rq  r|  rP   r  r   r   r   r  tilers  r  r   r
   )rZ   r  r  r   r   r   r  r  r~  r  r  r  r   r[   rs  
statisticspvaluesindicesxiyir  rb   rb   rc   test_ttest_many_dims  s6   
 


z*Test_ttest_ind_common.test_ttest_many_dims)r  r  r  r>   rK   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 6}t jd
d  |	t
d |	t
d tj||fd|i|}W d    n1 saw   Y  W d    n1 spw   Y  t |j}t|| t |j}	t|	| d S )NrE   )r!   r   rE   r  r  r   r   r   r"   r=   r  r  z'invalid value encountered in less_equalr5  r>   )rV   r  randintr  rW   rj  r  r   r  r   rY   rP   r  r   r   r   )
rZ   r  r>   r   r   r  ra   r   p_nansstatistic_nansrb   rb   rc   test_nans_on_axis  s$    
z'Test_ttest_ind_common.test_nans_on_axisN)	r   r   r   r   r*  re  r+  r  r  rb   rb   rb   rc   r    s$    #r  c                	   @   s   e Zd Zg dg ddddgg dg ddddgg dg dd	d
dgg dg ddddgg dg ddddggZejdedd Zdd Zdd Z	ejdddd Z
dd  Zejd!g d"d#d$ Zd%S )&Test_ttest_trimr   r  r  g@9(?er  )r  g33333`@rG   g33333^@g(\P@r  gfffffڇ@gBM)u?g]@gyd?g	s5v@g{Gz?r  r  r  r   ffffff?r   r  r  r]  r  r  r-   g@r  r*   r'   r  g333333@r  r)  g@r  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r  r  r   r   NrP   r  r
   )rZ   r   r   r  rw  r  r   r   rb   rb   rc   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)rG   rC   r  r4  r  ,   rG   rC   r  r4  r  r  )rN   rC  rC   rG   r     r  rN   rC  rC   rG   r  r  r  g
ףp=
?Fr  gRbv?r   r   gOi?r  rZ   r   r   r   r   rb   rb   rc   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  r  r  gR?绽|=r   g^Nr  r  rb   rb   rc   test_equal_var7  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  r  F)r  r  r   r  r   Nr  )rZ   rq  r  rw  r   r   r   r   rb   rb   rc   test_alternativesQ  s   
z!Test_ttest_trim.test_alternativesc                 C   sP   d}t t|d tjddgddgddd W d    d S 1 s!w   Y  d S )Nz7Permutations are currently not supported with trimming.rz   r   r   r   r  )r  r  r   r   rP   r  )rZ   r{   rb   rb   rc   test_errors_unsupportede  s   "z'Test_ttest_trim.test_errors_unsupportedr  )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.rz   r   r   r  r  )rZ   r  r{   rb   rb   rc   test_trim_bounds_errorl  s   "z&Test_ttest_trim.test_trim_bounds_errorN)r   r   r   r  r   r*  r+  r  r  r  r  r  r  rb   rb   rb   rc   r    s<    
#
r  c                   @   s
  e Zd ZejddZg ded< dddej dged	< ddd
dejged< g ded< dddej dged< ddddejged< g ded< g ded< g ded< g ded< g ded < g d!ed"< ej	d#g d$ej	d%d&d'gej	d(d)d*gd+d, Z
d-S ).Test_ttest_CI)r   r   r   r!   r%  )gͿe13@gv7?gę"Ͽg8 {M(?r  r   r  gv7?gx_?r  g
/?gD .ɿ)r   r   r   )reϿ-</&@g?JJ?gbտg3Պ?)r   r   r   r  r  g?JJ?gF?)r   r   r   g{?gads2ѿ)r   r   r   )s"%οrC  gW"?NN)r   r   r   )r  rC  gW"?NNr   r   r   )r  rC  g:T'?NN)r   r   r   ):пrC   g0:5?NNr  )r  rC   g0:5?NNr*  )r  rC   g be?NN)r   r   r   r   rc  r  FTr  r   r  c                 C   s   |r	|r	t d tjd}|d}|d}tj|||||d}dddd	}| j|| t|tt	|f }	|	\}
}}}}t
|j|
 t
|j| t
|j| |sh|d
}t
|j| t
|j| d S d S )Nz3Discrepancy in `main`; needs further investigation.l   'Nk' rF   rH   )r   r  r  r   r   r   rc  r\  )r   xfailrV   r  r  rP   r  r   r  ceilr
   r   r~  r   r   lowhigh)rZ   r   r  r  r  r   r[   r   rV  r  r   r~  r   r	  r
  r   rb   rb   rc   test_confidence_interval  s&   



"
z&Test_ttest_CI.test_confidence_intervalN)r   r   r   rV   rk  r   r9  r   r*  r+  r  rb   rb   rb   rc   r  s  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   rL   r=   r  )N.r  c                 s   r  r  r  r  rb   rb   rc   r    r  z.test__broadcast_concatenate.<locals>.<genexpr>)rV   r  rq  r|  r   r  r   rs  )
r   r   r
  indexr  r  r~  r  r  r  rb   rb   rc   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tdd t jg dg ddd\}}W d    n	1 sw   Y  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 siw   Y  d S )#Nr   r  r  r  Fr  r  r   gJ?g*ʿr  g@[?gωұ?ghG?r   r  r4  r!   r  r   r  r=   rd  r  r   r  r5  rz   r  r*  r  rk  rK   r  )rP   r  r   r  r  rV   r  r   rt  r   r  r   ru  r   rs  r  r   r   rY   r9  r  rW   r  )r   r   r  rw  rs  r   	tr_uneq_n	pr_uneq_nrx  rvs3rd  rc  ry  rz  r  r   r   r{  r|  r}  rb   rb   rc   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 )Nrh  r   rg  r  rt   ru   r   r   r   )g8HgW@?)rV   rW   rP   r  r
   r   r   r  rb   rb   rc   test_ttest_ind_nan_2nd_arg7  s   
r  c                  C   r  r  )rP   r  r  r  r  r   rV   rW   r  rb   rb   rc   #test_ttest_ind_empty_1d_returns_nanM  r  r  c                 C   r  r  )rV   rk  rP   r  r  r  r  rj   rW   r   r   r   r  rb   rb   rc   test_ttest_ind_axis_size_zeroU  r  r  c                  C   r  r  rV   rk  rP   r  r  r  r  r   r   rs  r   r  rb   rb   rc    test_ttest_ind_nonaxis_size_zerod  r  r  c                  C   r  )N)r   r#   r   r  r   r=   r  r  r  rb   rb   rc   2test_ttest_ind_nonaxis_size_zero_different_lengthsq  s   

r  c                  C   sr   t ddgt ddg} }t ddgt ddg}}t ddgt dd	g}}t| ||||| d S )
Nr   r   r   r    r!         r     )rV   r   rP   r  )mean1mean2std1std2nobs1nobs2rb   rb   rc   test_gh5686  s   r#  c               	   C   s.   t jdddddddd} t| tjtjg d S )Nr   r"   Fr  )rP   r  r   rV   rW   r  rb   rb   rc   %test_ttest_ind_from_stats_inputs_zero  s   r$  c                  C   s   t jd} | jdd}| jdd}| jdd}tj||ddd}t|jt j	jd	ks0J t
t |j|d |d
d tj||ddd}t|jt j	jd	ksVJ t
t |j|d |d
d tjg ddgdd}t
|ddd d S )Nl   bQ )rM  r   r  )rM  r   r  TrK   )r  r>   rZ  r  r   )r   r   r!   r(   r  )gzNd?gJ?r  r   )rV   r  r  r  rM  rP   r  r  r   r  r
   
percentile)r  r   r[   r  r   rb   rb   rc   test_ttest_single_observation  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| d|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| |d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rE   r2  r3  r!   rE   r  r   r=   r   rC   r?   rW  r   r  c                 S   rn  ro  rb   rp  rb   rb   rc   rr    rs  z%test_ttest_1samp_new.<locals>.convertr   r   r   r  r  rK   r   r    r$   rt   ru   r  )rP   rr  r  rg  rV   r  r   r   r   rs  ru  r9  rv  r
   r  rW   r   )rG  rH  n3rvn1ry  r  rz  p2r{  p3rs  r   rr  r~  rw  r  pcr}  rb   rb   rc   test_ttest_1samp_new  sh   
4*6*6*
&*

*

$* 


 

r-  c                  C   s   t jd} | jdd}d}| jdd}tjt|d tj||dd W d    n1 s.w   Y  | jd	d}tj||dd}|jj	d
ksIJ t j
| dd}tj||dd}t|jd d S )Nl   iI}pC )r   r2  r3  r  z%`popmean.shape\[axis\]` must equal 1.)r!   r   r3  rz   r  )rz  r>   )r!   r   r3  )r!   r3  r=   g?)rV   r  r  r   r   r   rP   rg  r   rs  r  r   r
   r   )r  r   r  rz  r   r   rb   rb   rc   test_ttest_1samp_popmean_array  s   r.  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestDescribec              	   C   s   t  0}tjddd |td td\}}}}}}W d    n1 s'w   Y  W d    n1 s6w   Y  t|d t|d t|d t|sQJ t|sXJ t|s_J d S )Nr  rb  rm  rg  r   )rg  rg  )	r   rV   r  r   rY   rP   describer   rj  )rZ   ra   r  r)  r  r  skkurtrb   rb   rc   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   rh  rh  rh  rh  ffffff?r8  r8  r8  )r]  r]  r]  r]  H,p ?r    TUUUUUrH   r?   r   r=   rr   r%   )r%   )rw   r  rg  r.   rw   gGzrt   ru   rx   ry   )rV   r  r  rj   r   rP   r0  r   r   rt  r   rW   r   r   rZ   r   ncmmcmcvcskckurtcr  r)  r  r  r1  r2  rb   rb   rc   test_describe_numbers  sH   
















z"TestDescribe.test_describe_numbersc                 C   s"   t td}d}t|| d S )Nr!   )r  minmaxrU   varianceskewnessr>  )rP   r0  rV   r   r   )rZ   r  r   rb   rb   rc   test_describe_result_attributes8  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   r4  r   r!   r5  r6  r7  )Q?rG  rG  rG  r9  r    r:  r   re   r   r   rH   r?   )
rV   r  r  rj   r   rP   r0  r   r
   r   r;  rb   rb   rc   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   r4  r   )r3  )r   rh  r8  ga+?gE,p ?gUUUUUUr=   rH   r?   )rV   r  r  rj   rP   r0  r   r  r   rC  rU   rD  r   rE  r>  )	rZ   r   e_nobse_minmaxe_meane_vare_skewe_kurtr   rb   rb   rc   test_describe_axis_noneM  s   z$TestDescribe.test_describe_axis_nonec                 C      t ttjg  d S r  )r   r   rP   r0  rR  rb   rb   rc   test_describe_emptya     z TestDescribe.test_describe_emptyN)	r   r   r   r3  rB  rF  rH  rO  rQ  rb   rb   rb   rc   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 )-Nrg  )gMc@gO?g{\᛿)g2$?gגe`?gǃK@?r   r   )r  rK   r   r   r   r   r  rK   r   r   r   r   r  rK   r   r   r   r   r  rK   r   r   r   r   rd  r   r   r   rM  {   )r   r   r  rw   r!   r?   r   r  r=   rr   r%   r  r  )geGK?gZ^<ý?rt   ru   rE   r  r  r   r   r  rx   ry   r$   g      >@r  )g9+%g?*ݗ?r3  )gwGw@g{8NĦ?)
r  r   :   r#   r   )   r~   r   r      c                 S   s   g | ]
\}}t ||qS rb   )rV   rj   )r  r  r
  rb   rb   rc   r    r  z'test_normalitytests.<locals>.<listcomp>r  T)r   r   rP   skewtestkurtosistest
normaltestrV   r   r   r   skewnormr  r   r   laplacer   rW   r  r   r
   r  r  r  	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  r`  r   zlplzgpgr  rb   rb   rc   test_normalitytestse  s   








rl  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   rE   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   )rP   ranksumsr   r[   r   mannwhitneyur
   )rZ   r   r  r  rb   rb   rc   test_ranksums_result_attributes  s   z,TestRankSums.test_ranksums_result_attributesc                 C   s   t | j| j}t|d d S )Nrd  )rP   ro  r   r[   r   )rZ   r   rb   rb   rc   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'rz   ry   r   )r   r   rP   ro  r   r[   rR  rb   rb   rc   test_input_validation  s   "z"TestRankSums.test_input_validationN)r   r   r   rV   r  rq  r|  r   r[   r   r*  r+  rq  rr  rs  rb   rb   rb   rc   rm    s    
rm  c                   @   s,   e Zd Zd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  rM  )rV   r  rq  r  r  rayleighr   rP   jarque_berar   r   r   rZ   r   r[   r`  rb   rb   rc   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 }\}	}
||  krN|	  krN|j	  krN|j	  krN|j	ksQJ  J ||  krn|
  krn|j
  krn|j
  krn|j
ksqJ  J d S )Nr  r   r   r  r   P  )rV   r  rq  r  rP   rv  r  tuplerT   r   r   )rZ   r   jb_test1JB1r  jb_test2JB2r*  jb_test3JB3r+  rb   rb   rc   test_jarque_bera_array_like  s   @Dz*TestJarqueBera.test_jarque_bera_array_likec                 C   rP  r  )r   r   rP   rv  rR  rb   rb   rc   test_jarque_bera_size  rR  z$TestJarqueBera.test_jarque_bera_sizec           	      C   s   t jjdd}|jdd}ttj|d dt|  tj|dd}t|dd d f \}}t|dd d f \}}t|j||g t|j	||g tj|j
dd}t|| d S )NiKrf  )r   r  r  r=   r   r   )rV   r  rg  r   rP   rv  rU  r
   r   r   rt  )	rZ   r  r   r   s0r  s1r  resTrb   rb   rc   r.    s   zTestJarqueBera.test_axisN)r   r   r   rx  r  r  r.  rb   rb   rb   rc   rt    s
    rt  c                  C      t d} tttj|  d S )Nr  )rV   r   r   r   rP   rX  rn  rb   rb   rc   test_skewtest_too_few_samples%     
r  c                  C   r  )Nrg  )rV   r   r   r   rP   rY  rn  rb   rb   rc   !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@rC   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     rD  g=_A?r4   glPz.?rP   rp  rR   Yr   r   r	   r5   	rZ   u1r  u2r*  u3r+  u4p4rb   rb   rc   test_mannwhitneyu_one_sidedE  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  rD  glPz.?r4   rP   rp  rR   r  r   r	   r5   rZ   r  r  r  r*  rb   rb   rc   test_mannwhitneyu_two_sidedU  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  rD  gii5?r4   g22?r  r  rb   rb   rc   &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  rD  g22?r4   r  r  rb   rb   rc   &test_mannwhitneyu_no_correct_two_sideds  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   rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh  r   r   r   r   rh  r   r   rh  r   r   rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh  r   r   r   r   r   r   r   r   r   rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   rh  r   rh  r   r   r   r   rh  r   r   r   rh  r   r   r   r   r   rh  r   r   r   r   r   r   r   r   r   r   r   r   r   rh  r   rh  r   r   r   r   r   r   rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh  r   r   r   r   r   rh  rh  r   r   rh  r   r   rh  r   rh  r   r   r   r   rh  rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh  r   r   r   r   r   rh  rh  rh  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh  r   r   rh  r   r   r   r   rh  r   r   r   r   r   r   r   r   r   r   r   r   rh  r   r   r   rh  r   r   r   r   r   r   r   r   )     @g ?չ>r   )r  g&)E?r   )r  g?չ?)rV   r   r
   rP   rp  r  rb   rb   rc   test_mannwhitneyu_ones  s   z'TestMannWhitneyU.test_mannwhitneyu_onesc                 C   s&   d}t j| j| jdd}t|| d S )Nrd  r   r   )rP   rp  rR   r  r   rZ  rb   rb   rc   #test_mannwhitneyu_result_attributes  s   z4TestMannWhitneyU.test_mannwhitneyu_result_attributesN)r   r   r   rR   r  r5   r  r  r  r  r  r  rb   rb   rb   rc   r  3  s    	
+r  c                  C   sT   g d} g d}t t| |d dd d}t| |}t|| t|j|j d S )N)"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )"g-@g+@g(@r  r  rj  g333333@ffffff@g333333@r*   r  皙	@r   rK  rK  r)   r#  gffffff@ @333333?r  r(   ?r  r!  r!  r  r3  r[  r  r'   r  r  rZ  r   g/"?r!   r   )r   rP   pointbiserialrr   r   r   r   )r   r[   r   r   rb   rb   rc   test_pointbiserial  s   
r  c                  C   sd  t g d} t| }g d}t|d | t g d}t|}t g d}t|d | t| |\}}t||d  t||d  t| || \}}}t||d  t||d  t||d  t d} t g dg dg}tt| d	|  |d
d tdd}	t g d}
t 	|	|
}t g d}t 	||
}t|}t|d |dd d S )N)r   r   r    )r#   r  r#   r   )r   r   r"   r%   )r  r   r   r  r!   )㪪@I?g&>ڿr  r  )5@㪪@gIr  r  r   r$   r?   rF   )r!   rF   r%   r   r   r   )g_v	@g1%?g"u?gZӼ?g!u @gq&@r    )
rV   r   rP   obrientransformr
   r   r   r   r  r8  )r  ry  r  r  rz  r   r   r
  r   valuesrepsrK  transformed_valuesrb   rb   rc   test_obrientransform  s:   




r  r   c                 C   0   t j| |||d}t|||d t|j| d S N)r>   r<   weightsr   )rP   r  r
   r   r<   
array_liker  r>   r<   r   r  r   rb   rb   rc   check_equal_gmean  s   r  c                 C   r  r  )rP   hmeanr
   r   r<   r  rb   rb   rc   check_equal_hmean  s   r  c                 C   s2   t j| ||||d}t|||d t|j| d S r  )rP   pmeanr
   r   r<   )r  r  r  r>   r<   r   r  r   rb   rb   rc   check_equal_pmean  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 ) TestHarMeanc                 C      g d}d}t || d S N)r   r   r   r   r  rZ   r   r  rb   rb   rc   test_0     zTestHarMean.test_0c                 C   s0   g d}d}t || g d}d}t || d S )Nr  =b#A@r   gQ?r  r  rb   rb   rc   test_1d_list	  s   
zTestHarMean.test_1d_listc                 C   s    t g d}d}t|| d S )Nr  r  rV   r   r  r  rb   rb   rc   test_1d_array  s   zTestHarMean.test_1d_arrayc                 C   s&   t ddg}d}tt|| d S )Nr   r   rw   )rV   r   r   rP   r  r  rb   rb   rc   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   rK   )rV   r   r   r   rP   r  r9  rb   rb   rc   !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rE   r3  r  r  r  r  r  r  r  r  r  x   gmWUC@r  r  rb   rb   rc   test_2d_list#     zTestHarMean.test_2d_listc                 C   s.   g dg dg dg}d}t t|| d S r  )r  rV   r   r  rb   rb   rc   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 )Nr  r  r  )U|ϊ6@g4.=C@JQ6LsJ@E]P@r   r=   r  r  rb   rb   rc   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rE   r   r  r  r  r  )r  rw   r  r  r   r=   rV   r   r
   rP   r  r  rb   rb   rc   test_2d_axis0_with_zero5     z#TestHarMean.test_2d_axis0_with_zeroc                 C   r  )Nr  r  r  )g3333333@O@y@Y@r   r=   r  r  rb   rb   rc   test_2d_axis1:  r  zTestHarMean.test_2d_axis1c                 C   r  )Nr  r  r  )rw   r  r  r   r=   r  r  rb   rb   rc   test_2d_axis1_with_zero@  r  z#TestHarMean.test_2d_axis1_with_zeroc                 C   (   g d}g d}d}t |||dd d S )Nr   rE   r"   rE   r!   r   r   h㈵>r  r   r  rZ   r   r  r  rb   rb   rc   test_weights_1d_listE     z TestHarMean.test_weights_1d_listc                 C   s\   t ddgddgddgg}t ddgddgddgg}t ddg}t||d|dd	 d S )
Nr   r!   rE   r"   r   r   r   r  r>   r  r   r  r  rb   rb   rc   test_weights_2d_array_axis0M  s   z'TestHarMean.test_weights_2d_array_axis0c                 C   sP   t g dg dg}t g dg dg}t ddg}t||d|dd	 d S )
Nr  r#   r#   r#   r  r*  r   r#   r   r  r  r  r  rb   rb   rc   test_weights_2d_array_axis1U  s   z'TestHarMean.test_weights_2d_array_axis1c                 C   >   t g d}t jjg dg dd}d}t|||dd d S )Nr   rE   r"   r  rE   r!   r   r  r   r   r   r   r  r   r  r  )rV   r   r  r  r  rb   rb   rc   test_weights_masked_1d_array]     z(TestHarMean.test_weights_masked_1d_arrayN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rb   rb   rb   rc   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S )TestGeoMeanc                 C   r  r  r  r  rb   rb   rc   r  g  r  zTestGeoMean.test_0c                 C   s:   g d}d}t || g d}tdd}t ||dd d S )Nr  sŤF@r   r  r  r{  r   )r  r   r  rb   rb   rc   r  l  s   

zTestGeoMean.test_1d_listc                 C   sF   t g d}d}t|| tg dt}tdd}t||td d S )Nr  r  r   r  r  r;   )rV   r   r  r   r   r  rb   rb   rc   r  v  s   

zTestGeoMean.test_1d_arrayc                 C   r  Nr  r  r  g/,$qJ@r  r  rb   rb   rc   r    r  zTestGeoMean.test_2d_listc                 C   s,   g dg dg dg}d}t t|| d S r  )r  r   r  rb   rb   rc   r    s   zTestGeoMean.test_2d_arrayc                 C   sl   g dg dg dg}t g d}t||dd tg dg dg dg}tg d}t||ddd	 d S )
Nr  r  r  )g4@A@g5H@g`8|wЭN@gm~&+R@r   r=   r   r{  r>   r   rV   r   r  r  rb   rb   rc   r    s   zTestGeoMean.test_2d_axis0c                 C   sx   g dg dg dg}t g d}t||dd tg dg dg dg}tdd	}t|||g}t||dd
d d S )Nr  r  r  )gD" 6"6@gcP@g
ҧZ@r   r=   r   r  r  r{  r  )rV   r   r  r   )rZ   r   r  r  rb   rb   rc   r    s   
zTestGeoMean.test_2d_axis1c                 C   s"   t g d}d}t||dd d S )N)g}Ô%ITr   gu <7~r   r  r   )r   r  r  rb   rb   rc   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
rE   r3  r  r  r  r  r  r  r  r   rw   r  r  )rV   r  r  r  rb   rb   rc   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 )Nr  rw   r  )rc  )rV   r   r  r  r  rb   rb   rc   test_1d_array0  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)
rE   r3  r  r  r  r  r  r  r  rK   r  r  )rV   rW   r  r  r  rb   rb   rc   test_1d_list_neg  s
   "zTestGeoMean.test_1d_list_negc                 C   r  Nr  )r   r!   r"   r    r   GZ*oG8@r  r  r  r  rb   rb   rc   r    r  z TestGeoMean.test_weights_1d_listc                 C   s4   t g d}t g d}d}t|||dd d S r  r  r  rb   rb   rc   test_weights_1d_array  s   z!TestGeoMean.test_weights_1d_arrayc                 C   r  )Nr  )r   r!   r"   r    r   r!   )r   r   r   r   r   r   r  r  r  r  )rV   r   r  r  r  rb   rb   rc   r    r  z(TestGeoMean.test_weights_masked_1d_arrayN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  rb   rb   rb   rc   r  f  s    

r  c                
   @   sF  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	e
jdddgddgddggdfeddgddgddggdfgdd Ze
jdg dg dg dgdfg dg dg dgdfgdd Ze
jdg dg dg dgdfg dg dg dgdfgd d! Zd"d# Zd$d% Ze
jd&g d'd(d) Zd*S )+TestPowMeanc                 C   s   t | | | j d|  S rm  )rV   r  r   r   r   rb   rb   rc   pmean_reference  s   zTestPowMean.pmean_referencec                 C   s$   t || |  t | d|  S rm  )rV   r  )r   r   r  rb   rb   rc   wpmean_reference  s   $zTestPowMean.wpmean_referencec                 C   s   t jtdd tg ddg W d    n1 sw   Y  t jtdd tg dtdg W d    d S 1 s?w   Y  d S )NzPower mean only defined forrz   r   r   )r   r   r   rP   r  rV   r   rR  rb   rb   rc   test_bad_exponent  s   "zTestPowMean.test_bad_exponentc                 C   sT   g dd}}t t||}t||| g dd}}td}t||| d S )Nr  r*   r   r   r.   )r  r  rV   r   r  r   rZ   r   r   r  rb   rb   rc   r    s   
zTestPowMean.test_1d_listc                 C   s0   t g dd}}t||}t||| d S )Nr  g      )rV   r   r  r  r  r  rb   rb   rc   r    s   zTestPowMean.test_1d_arrayc                 C   s.   t ddgd}}d}tt||| d S )Nr   r   rK   rw   )rV   r   r   rP   r  r  rb   rb   rc   r    s   z#TestPowMean.test_1d_array_with_zeroc                 C   sT   t g dd}}tjtdd t|| W d    d S 1 s#w   Y  d S )Nr  gGz?zPower mean only defined if allrz   )rV   r   r   r   r   rP   r  )rZ   r   r   rb   rb   rc   r    s   "z-TestPowMean.test_1d_array_with_negative_valuer  rE   r3  r  r  r  r  r  r'   c                 C   s"   t t||}t||| d S r  )r  r  rV   r   r  r  rb   rb   rc   test_2d_axisnone  s   zTestPowMean.test_2d_axisnoner  r  r  r  c                    s4    fddt t d D }t |dd d S )Nc              
      s6   g | ] t t fd dttD qS )c                    s   g | ]} |  qS rb   rb   r  )r   r  rb   rc   r        z=TestPowMean.test_2d_list_axis0.<locals>.<listcomp>.<listcomp>)r  r  rV   r   r  r~  r  r  r  rc   r  
  s    "z2TestPowMean.test_2d_list_axis0.<locals>.<listcomp>r   r=   )r  r~  r  r  rb   r  rc   test_2d_list_axis0  s   zTestPowMean.test_2d_list_axis0c                    s&    fdd|D }t | |dd d S )Nc                    s   g | ]}t t| qS rb   )r  r  rV   r   )r  a_r   rb   rc   r    s    z2TestPowMean.test_2d_list_axis1.<locals>.<listcomp>r   r=   )r  r  rb   r  rc   test_2d_list_axis1  s   zTestPowMean.test_2d_list_axis1c                 C   s@   g dd}}g d}t t|||}t||||dd d S )Nr  gރBr  r  r  )r  r   rV   r   r  rZ   r   r   r  r  rb   rb   rc   r    s   z TestPowMean.test_weights_1d_listc                 C   sP   t g dd}}t jjg dg dd}t j||d}t||||dd d S )	Nr  r   r  r  r  r  r  r  )rV   r   r  averager  r	  rb   rb   rc   r  !  s   z(TestPowMean.test_weights_masked_1d_array)r>   fun_namer   ))Nr   g3E#@)r   r  r   )r   r  rK   c                    s~   |dkr fdd}nt t|}tddgddgddgg}tddgddgd	dgg}||||d
}t| |||dd d S )Nr   c                    s   t |  |S r  )r  r   )r   r>   r  r  rb   rc   fun/  r  z.TestPowMean.test_weights_2d_array.<locals>.funr   r!   rE   r"   r   r   )r>   r  r  r  )getattrrP   rV   r   r  )rZ   r>   r  r   r  r   r  r  rb   r  rc   test_weights_2d_array'  s   
z!TestPowMean.test_weights_2d_arrayN)r   r   r   r  r   r  r  r  r  r  r   r*  r+  rV   r   r  r  r  r  r  r  rb   rb   rb   rc   r    sH    	

	
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  )rP   r  array_1dr
   gstd_array_1drZ   gstd_actualrb   rb   rc   r  ?  s   z,TestGeometricStandardDeviation.test_1d_arrayc                 C   s    t t| j}t|| j d S r  )rP   r  rz  r  r
   r  r  rb   rb   rc    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 inputrz   z3This should fail as it can not be cast to an array.)r   r   r   rP   r  rR  rb   rb   rc   ,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 valuerz   r   r   r   r   rP   r  rV   r_  r  rR  rb   rb   rc   "test_raises_value_error_zero_entryK     "zATestGeometricStandardDeviation.test_raises_value_error_zero_entryc                 C   r  )Nr  rz   rK   r  rR  rb   rb   rc   &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 valuerz   )	r   r   r   rP   r  rV   r_  r  r9  rR  rb   rb   rc   !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   rV   rW   rP   r  r
   )rZ   r   r  rb   rb   rc   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 <= 0rz   re   )r   r   r   rP   r  r  r   rR  rb   rb   rc   )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=   )rP   r  array_3dr
   r  r  rb   rb   rc   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<
?)rP   r  r!  r
   r  rb   rb   rc   test_3d_array_axis_type_tupled  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%:?rP   r  r!  rV   r   r
   rZ   r  gstd_desiredrb   rb   rc   test_3d_array_axis_0h  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%  rb   rb   rc   test_3d_array_axis_1q     z3TestGeometricStandardDeviation.test_3d_array_axis_1c                 C   r(  )Nr   r=   )gt80?gі?g?)gۘ]~?gmT6(?g	G?r$  r%  rb   rb   rc   test_3d_array_axis_2y  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=   r  r  )	rV   r  masked_wherer!  rP   r  r
   r   r  )rZ   r  r  r&  r  rb   rb   rc   test_masked_3d_array  s   
z3TestGeometricStandardDeviation.test_masked_3d_arrayN)r   r   r   rV   r   r  r  rT   r!  r  r  r  r  r  r  r  r   r"  r#  r'  r)  r+  r-  rb   rb   rb   rc   r  9  s$    	r  c               	   C   s   t t dddt dddt dddf} d}d	}g d
}t| |D ]\}}tt|||j|dd| d q$ttdddjddd d S )NrZ  r  r!   r  g?r{  ffffff?rl  i  )rw   rw   gs  gG|G{g	ɺM>6g>
ztt+g#ӌRM/gF׸fz2gU8u5g8M8gФ)Ba?g%վ?g*+a5?gś?gڒJ|>rG   zfail forp=%f)r5   err_msgr  r  gVݶ3;r4   )rV   r  r  rN  r	   rP   	binomtestr   )ppr  r   r  r   r   rb   rb   rc   test_binomtest  s   
r2  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'   )r  r   r   r  )r  r  r   r  r  )r        ?r   r   r3  r  )r        ?      ?r   r5  r4  r  )r  r        ?r   r   r6  r  r  )	      ?      ?     ?     @?r   r:  r9  r8  r7  )
      p?      ?      ?     @?r   r   r>  r=  r<  r;  )      `?      ?      ?      ?      ?r   rC  rB  rA  r@  r?  r   rF   c                    s   g | ]
}t | d jqS )r'   )rP   r0  r   )r  r  r-  rb   rc   r    r  z#test_binomtest2.<locals>.<listcomp>rE   r?   )r  r   )r  r  rb   r-  rc   test_binomtest2  s   rD  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   s4   g | ]}t d dD ]}t||| d| jq	qS )r   rF   r   r  rP   r0  r   r  r  r~  rb   rb   rc   r    s
    
z#test_binomtest3.<locals>.<listcomp>r   rF   )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?r5  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?rC  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?r5  gqIb?g  @N?g1Y?g5?gO?gc-?gk?g )?r:  glMV?g?$?gT*r?gCqRv?grx?gωZ?gExY?g<T ?rC  gJ9Ͻd?g `Ԗt?gT?gEz?gQ?g7C<*?g<?g~ K?rG  g8?g~ȍEt?g⿒?g<v?gHE:?g8Z$?gbº5?gvC?rH  g`Yw?gA?$??gE=?g4?g3?g{G9?gp?gH ?rI  gz6f?g¯F?g(+?g	$V?gq^ws?g!?gXNJ?gK?rJ  g4P?g<q?gdV;?gy?g$w?gU<vO?gMX?g	șz*?rK  giqSp?gMM?g0V$)?g]
yi/Q?gl?gl?g3Ȇ?gѾ_c?c              	   S   s8   g | ]}t d dD ]}t|d || d| jq	qS r   rF   r   r   rE  rF  rb   rb   rc   r    
    
"c              	   S   s8   g | ]}t d dD ]}t|d || d| jq	qS rL  rE  rF  rb   rb   rc   r    rM  rH   r?   )r  r   rV   r  r~  r  r   r   )r  binom_testm1binom_testp1res4_p1res4_m1rb   rb   rc   test_binomtest3  s   	(rR  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTrimc                 C   sr  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  t ddd}t dddd}d}tj|dd|d}tt j||d| d}tj|jdd|d}tt j||d|j d S )NrF   rZ  rE   r  r%   left)tailr   tE]t?r   r   r^  r  r"   r    r!   r   )rU  r>   r=   r   )rV   r   r   sortrP   trim1rT   rt  )rZ   r   r  r>   trimmedrb   rb   rc   
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 )NrF   rV  r   r$   r  )r   r   r    r!   r"   r#   r$   r  r"   r    r3  r   )r   r$   rC   r3  )r   r%   r2  rB   r^  rZ  )rV   r   r   rW  rP   trimbothr   rT   rt  r   r   r9  rb   rb   rc   test_trimboth5  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!   rE   r   r#   r   r"   )r   r!   r   r   r   r    r  r"   r    Fr'  r   )r)   r/   g      -@g     4@r  )r   r   r   r   )r   rr   r&  rt  r  g      ,@)r#   rF   rG   rB   r~   r"   rC  r   r!   r   r  rE   rN   r%   r  r2  r9  r3  r   rC   r    rH   r$   r   rD   )r!   r    r   r   r   r   r)   r  r3  )r!   r"   r    r#   r  )r   r   r   r   rK   r=   r   r  rw   )rV   r   r   rT   r   rP   	trim_meanr  rq  r  r  rU  r   r   rW   )
rZ   r   idxr  r  idx4a4r>   r  r  rb   rb   rc   test_trim_meanG  s<   "
zTestTrim.test_trim_meanN)r   r   r   rZ  r\  rb  rb   rb   rb   rc   rS    s    rS  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSigmaClipc                 C   s   t t dddt dddf}d}t|\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|j|j d S )Nr)  rJ      r   r3  r!   r    rV   r  r  rP   	sigmaclipr   minmaxr   rU   rm   r   rZ   r   factr
  r	  upprb   rb   rc   test_sigmaclip1o  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)  rJ   rd  r   r3  r!   r(   r    $   re  ri  rb   rb   rc   test_sigmaclip2y  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)  rJ   rF   r   ?)rV   r  r  rP   rf  r   rg  rh  r   rU   rm   ri  rb   rb   rc   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)  rJ   rF   ro  rp  r   rq  )clippedr  r  )rV   r  r  rP   rf  r   )rZ   r   rj  r   r   rb   rb   rc    test_sigmaclip_result_attributes  s   z.TestSigmaClip.test_sigmaclip_result_attributesc                 C   s"   t d}tt|d | d S )NrE   r   )rV   r  r   rP   rf  rw  rb   rb   rc   test_std_zero  s   
zTestSigmaClip.test_std_zeroN)r   r   r   rl  rn  rr  rt  ru  rb   rb   rb   rc   rc  n  s    
rc  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)	rH   rH   rH   rH   rH   rH   rH   rG   rG   )	rC   rH   rG   rG   rG   rG   rG   rF   rF   )	rC   rC   rH   rH   rH   rH   rH   rG   rG   )	r2  rC   rH   rH   rH   rG   rG   rG   rF   r;   )
rV   r   rv  r  r[  r   rP   alexandergovernr   r   )
rZ   r  
args_int16
args_int32
args_uint8args_float64	res_int16	res_int32	res_unit8res_float64rb   rb   rc   test_compare_dtypes  s.   



z'TestAlexanderGovern.test_compare_dtypesc                 C   s   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    d S 1 syw   Y  d S )Nz+Input sample size must be greater than one.rz   r   r   zInput samples must be finite.)r   r   rP   rx  rV   r9  rR  rb   rb   rc   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rP   rx  r
   r   r   )rZ   onetwoeightsolnrb   rb   rc   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  )rZ   youngmiddleoldr  rb   rb   rc   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?r  r   gOZ}?g9$?g6MDd}?Nr  )rZ   r  r  r  rb   rb   rc   test_compare_scholar37  s   z)TestAlexanderGovern.test_compare_scholar3c                 C   s<   g ddt jgg}tj| }t|jt j t|jt j d S )Nr   r   rV   rW   rP   rx  r   r   r   )rZ   r  r   rb   rb   rc   test_nan_policy_propogatei  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  rz   rv   rx   )rV   rW   r   r   rP   rx  rZ   r  rb   rb   rc   test_nan_policy_raisep  s   "z)TestAlexanderGovern.test_nan_policy_raisec                 C   sh   dddt jdg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 )Nr   r   r   r    r  r4  r   )r   r  r4  rv   rt   r  )rZ   args_nanargs_no_nanres_nan
res_no_nanrb   rb   rc   test_nan_policy_omitu  s   
z(TestAlexanderGovern.test_nan_policy_omitc                 C   sj   d}t jtj|d! tg dg d}t|jtj t|j	tj W d    d S 1 s.w   Y  d S )Nz9An input array is constant; the statistic is not defined.rz   r   r   )
r   r   rP   r   rx  r   r   rV   rW   r   )rZ   r   r   rb   rb   rc   r   }  s   
"z'TestAlexanderGovern.test_constant_inputN)r   r   r   r  r  r  r  r  r  r  r  r   rb   rb   rb   rc   rw    s    B22rw  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   rw   r   rP   f_onewayr   rZ   r]  r   rb   rb   rc   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    rh  r   r'   r{  r   )rP   r  r   r
   rV   r   r  rb   rb   rc   r     s   
zTestFOneWay.test_basicc                 C   s2   t dgdgg d\}}t|d t|d d S )Nr   rm  r  r  r  r  rb   rb   rc   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Ÿ?r{  r   )rV   r   uint16rP   r  r
   )rZ   r   r   r]  r   rb   rb   rc   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  rd  )rV   r   r  rP   r  r   )rZ   r   r   r   r   rb   rb   rc   test_result_attributes  s
   z"TestFOneWay.test_result_attributesc              	      s  g d}|D ]{}d}t jt jt jtd|}t|}| d}W d    n1 s0w   Y  dd |dd D }t	j
|d	d
}|j\ tt	}	t|d d } fdd|	D }
tj|
 }d}||v rud}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_anova
c                 S   s   g | ]
}|  r| qS rb   )stripsplit)r  linerb   rb   rc   r    s    z)TestFOneWay.test_nist.<locals>.<listcomp>r  rF  r  )skiprowsr   rK   c                    s   g | ]} |k qS rb   rb   r  r  rb   rc   r    r  )r  r  r  r  zFailing testcase: %s)r   r/  )ospathabspathjoindirname__file__openreadr  rV   loadtxtrt  r  r  uniquer  rP   r  r
   )rZ   	filenames	test_caser   fnamer  content	certifieddatafcatyxlistr   hard_tcrb   r  rc   	test_nist  s0   




zTestFOneWay.test_nistza, b, expected)r  r  r  r  r   c                 C   sZ   d}t jtj|d t||\}}|sJ ||kW d    d S 1 s&w   Y  d S )N%Each of the input arrays is constant;rz   )r   r   rP   r   r  )rZ   r   r   r  r   r  r   rb   rb   rc   r     s
   "zTestFOneWay.test_constant_inputr>   )r  rK   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}d}tjtj|d tj||||d\}}W d    n1 stw   Y  dD ],}	tt ||	|t ||	|t ||	|\}
}t	||	 |
dd t	||	 |dd q{dD ]@}	tjtj|d. 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   rX  )r   r   r!   r   )r    r"   r!   r   )r    r   r!   r   )r   r!   r!   r   )r!   r!   r!   r   )r   r   r!   r   )r$   r   r!   r   )r   r   r!   r   )r    r   r    r   )r    r   r    r   )r!   r    r    r   r   r   r   r  rz   r=   r  r{  r   r  )rV   r   rt  r   r   rP   r   r  taker
   r   )rZ   r>   r   r   r
  	take_axisr  r  r   r  fjpjrb   rb   rc   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   )	rV   r   rT   cosrP   r  rs  r  r
   )
rZ   r   r   r
  r  r   r  r  fijpijrb   rb   rc   test_3d_inputs
  s    <zTestFOneWay.test_3d_inputsc                 C   sb   d}t jtj|d tg dg g d}t|tjtjf W d    d S 1 s*w   Y  d S )Nat least one input has length 0rz   r   r'  r   r   rP   DegenerateDataWarningr  r   rV   rW   rZ   r   r   rb   rb   rc   test_length0_1d_error  s
   "z!TestFOneWay.test_length0_1d_errorc           	      C   s   d}t jtj|d< d}td|f}td|f}td|f}t|||\}}tj|ftjd}t	|| t	|| W d    d S 1 sIw   Y  d S )Nr  rz   r   r    r   r!   r  )
r   r   rP   r  rV   r  r  rj   rW   r   )	rZ   r   ncolsr   r   r
  r  r   nansrb   rb   rc   test_length0_2d_error"  s   
"z!TestFOneWay.test_length0_2d_errorc                 C   sd   d}t jtj|d 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 )Nzall input arrays have length 1.rz   rE   rF   rG   rH   r  r  rb   rb   rc   test_all_length_one.  s
   "zTestFOneWay.test_all_length_oner  rb   r   c                 C   s8   t t tj|  W d    d S 1 sw   Y  d S r  )r   r\  rP   r  r  rb   rb   rc   test_too_few_inputs4  s   
"zTestFOneWay.test_too_few_inputsc                 C   R   t d}t d}tt tj||dd W d    d S 1 s"w   Y  d S )Nr   r!   r    r   r=   )rV   r  r   r   rP   r  rZ   r   r   rb   rb   rc   test_axis_error9  
   


"zTestFOneWay.test_axis_errorc                 C   r  )Nr   r  r   r=   )rV   r  r   r   rP   r  r  rb   rb   rc   test_bad_shapes?  r  zTestFOneWay.test_bad_shapesN)r   r   r   r  r   r  r  r  r  r   r*  r+  rV   r   r9  rW   r   r  r  r  r  r  r  r  r  rb   rb   rb   rc   r    s,    
 "$

/
r  c                   @   rv  )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   )	rP   kruskalr   r	   r  r  r  rV   r   rZ   r   r[   hr   rb   rb   rc   test_simpleG  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$   rE   rV  rE   r4   r   )rP   r  r	   r  r  r  rV   r   r  rb   rb   rc   r   Q  s   zTestKruskal.test_basicc                 C   s<   dg}ddg}d}d}|| }t ||\}}t|| d S )Nr   r   r3  r(  )rP   r  r   rZ   r   r[   h_uncorrr  r  r  r   rb   rb   rc   test_simple_tie[  s   zTestKruskal.test_simple_tiec                 C   sJ   g d}g d}d}dt dd  }|| }t||\}}t|| d S )N)r   r   r   r   )r   r   r   r   r   r        )r  rP   r  r	   r  rb   rb   rc   test_another_tief  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   r3   r   r  r  )r  rP   r  r	   r  r  r  )	rZ   r   r[   r`  r  r  r  r  r   rb   rb   rc   test_three_groupso  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   rP   r  rV   rW   rw  rb   rb   rc   r2  {  s    zTestKruskal.test_emptyc                 C   s.   g d}g d}t ||}d}t|| d S )Nr   r  rd  )rP   r  r   )rZ   r   r[   r   r   rb   rb   rc   test_kruskal_result_attributes  s
   z*TestKruskal.test_kruskal_result_attributesc                 C   r  )Nrr   r%   rt   ru   r7  rx   ry   )	rV   r   rW   r   rP   r  r   r   r   rw  rb   rb   rc   ry    s   

zTestKruskal.test_nan_policyc                 C   sB   d}t j|}t j|d }t||\}}d}t|| d S )Nry  r  r   )rV   r  rr  rP   r  r	   )rZ   r  r   r[   r  r   r  rb   rb   rc   test_large_no_samples  s   z!TestKruskal.test_large_no_samplesN)r   r   r   r  r   r  r  r  r2  r  ry  r  rb   rb   rb   rc   r  F  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g dZejdg dejdedd Zejdedd ZdS )TestCombinePvaluesc                 C   (   t jg ddd\}}t|ddd d S )Nr  r  r]  r<  r!  gf?r    r4   rP   combine_pvaluesr	   )rZ   xsqr   rb   rb   rc   test_fisher  s   zTestCombinePvalues.test_fisherc                 C   r  )Nr  stoufferr!  S:X?r    r4   r  rZ   Zr   rb   rb   rc   test_stouffer     z TestCombinePvalues.test_stoufferc                 C   r  )N)r'   r'   r'   r  r!  r'   r    r4   r  r  rb   rb   rc   test_stouffer2  r  z!TestCombinePvalues.test_stouffer2c                 C   0   t jg ddtdd\}}t|ddd d S )Nr  r  r   r
  r  r  r    r4   )rP   r  rV   r  r	   r  rb   rb   rc   test_weighted_stouffer     
z)TestCombinePvalues.test_weighted_stoufferc                 C   r  )Nr  r  )r   r    r%   r  g46<?r    r4   )rP   r  rV   r   r	   r  rb   rb   rc   test_weighted_stouffer2  r  z*TestCombinePvalues.test_weighted_stouffer2c                 C   r  )Nr  r  r!  gE
)??r    r4   r  r  rb   rb   rc   test_pearson  r  zTestCombinePvalues.test_pearsonc                 C   r  )Nr  tippettr!  gBi?r    r4   r  r  rb   rb   rc   test_tippett  r  zTestCombinePvalues.test_tippettc                 C   r  )N)rZ  rZ  rZ  mudholkar_georger!  g&?r    r4   r  r  rb   rb   rc   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 )	Nr  r  r!  r<  r  r'   r    r4   r  )rZ   r  r   Z_fp_fZ_pp_prb   rb   rc   2test_mudholkar_george_equal_fisher_pearson_average  s   zETestCombinePvalues.test_mudholkar_george_equal_fisher_pearson_average)r<  r  r   r  r  r  )singlerk  r  r
  c                    s   d\}}t jd}|dkr't ||f||}t dd||d d df< n&|dkr:t ||ft dd|j}n|dkrMt j|jdd	||fd
dd} fdd|D }t t 	|dksbJ d S )N)rE   r#   l	   TrU(	"b-= r	  rZ  r\  r   rk  r  r   r  r=   c                    s   g | ]}t j| d d qS )r!  r   )rP   r  )r  r  r!  rb   rc   r    s    z8TestCombinePvalues.test_monotonicity.<locals>.<listcomp>)
rV   r  r  rj   r  rt  rW  rM  rk  diff)rZ   r  r
  r  r  r  pvaluesscombined_pvaluesrb   r!  rc   test_monotonicity  s   
z$TestCombinePvalues.test_monotonicityc                 C   s(   t jg d|d}t|j|jf| d S )Nr  r!  )rP   r  r   r   r   )rZ   r
  r   rb   rb   rc   rd    s   zTestCombinePvalues.test_resultN)r   r   r   r  r  r  r  r  r  r  r  r  r  r   r*  r+  r  rd  rb   rb   rb   rc   r    s     r  c                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )TestCdfDistanceValidationzg
    Test that _cdf_distance() (via wasserstein_distance()) raises ValueErrors
    for bad inputs.
    c                 C   s<   t ttjdgdgdgddg t ttjdgdgddg d S )Nr   r   r    r   r   r   r   rP   wasserstein_distancerR  rb   rb   rc   &test_distinct_value_and_weight_lengths  s   z@TestCdfDistanceValidation.test_distinct_value_and_weight_lengthsc                 C   s@   t ttjddgdgddg t ttjddgdgddgdg d S )Nr   r   r   r   r  rR  rb   rb   rc   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   rK   r  rR  rb   rb   rc   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 rQ  r  rR  rb   rb   rc   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 )Nrm  r   )r   r   rP   r  rV   r9  rR  rb   rb   rc   test_inf_weight  s   z)TestCdfDistanceValidation.test_inf_weightN)	r   r   r   r)  r  r  r  r  r  rb   rb   rb   rc   r    s    r  c                   @   sN  e Zd ZdZdd Zejddejddejdd	d
d Zejddejddejdddd Z	ejddejddejdddd Z
dd Zejddejddejdddd Zejddejddejdddd  Zd!d" Zejd#g d$ejd%g d$d&d' Zd(S ))TestWassersteinDistanceNDz8 Tests for wasserstein_distance_nd() output values.
    c                 C   s^   g d}g d}t ||}tg d}tg d}t|| t| }t|| d S )N)rT  rT  rT  rT  rT  rT  rT  rT  rT  rT  )r    r   r"   r   r  )r  r  r  r  r  r  r  r  r  r  r  r  )r#   r   )rh  r   r3   r   r   r   )r   gw@rg  g;f?r   r   )rP   wasserstein_distance_ndrV   r   r  r
   )rZ   r  r  r   flowdistr  rb   rb   rc   test_published_values  s   z/TestWassersteinDistanceND.test_published_valuesn_value)r    r2  r  rE  )r   r    r#   max_repeats)r!   rE   c                 C   s   t jd}|jd||td}|j||fd}t j||dd}|t |}t t t||}	t j	|	|d}
|
t|}|| || }}t|||
|}t|ddd	 d S )
Nl   na{F.aP	 r   )r   r<   r  r   r=   r
  r   r   )rV   r  r  integersr  r8  r  r   r~  bincountr  rP   r  r
   )rZ   rE  r  r  r  repeatsu_valuesv_values	v_weightsrange_repeat	u_weightsr  r   rb   rb   rc   test_same_distribution_nD$  s   z3TestWassersteinDistanceND.test_same_distribution_nDnu)r$   r%   &   nv)r$   rG   rN   )r   r!   r9  c                 C   sz   t jd}|j||fd}t ||f}|j|d}|j|d}t jt jj|dd|d}	t||||}
t	|
|	 d S )N   }&=:! r  r   r=   r
  )
rV   r  r  r  r  r  rr  rP   r  r
   )rZ   r'  r)  rE  r  r!  r"  r%  r#  r  r   rb   rb   rc   test_collapse_nD8  s   z*TestWassersteinDistanceND.test_collapse_nD)r$   r~   r  )r   r   r"   c                 C   s   t jd}|j||fd}|j||fd}|j|d}|j|d}t||||}	|jd|dd\}
}|j||fd}t j||
|dd}t j||
t |dd}t||||}t||	 d S )Nr*  r  r   r   r=   )	rV   r  r  rP   r  r  insertr  r
   )rZ   r'  r)  rE  r  r!  r"  r%  r#  r  add_rownrows	add_valuer   rb   rb   rc   test_zero_weight_nDH  s   z-TestWassersteinDistanceND.test_zero_weight_nDc                 C   s   ddgddggt jt j ggddg}}}t|||}t|t j t jdd% t jt jggt jt j gg}}t||}t|t j W d    d S 1 sQw   Y  d S )Nr   r   r  r  )rV   r9  rP   r  r   r  rW   )rZ   uvvvuwdistancerb   rb   rc   test_inf_values[  s   , "z)TestWassersteinDistanceND.test_inf_valuesr'  )r   r   r!   c                 C   s   t jd}|j||fd}|j||fd}|j|d}|j|d}t||||}	|d|}
| }t j||
|dd}t j||
|dd}t||||}t||	 d S )Nl   Lq/ r  r   r   r=   )rV   r  r  rP   r  r  r,  r
   )rZ   r'  r)  rE  r  r!  r"  r%  r#  r  add_dimr/  r   rb   rb   rc   test_multi_dim_nDf  s   z+TestWassersteinDistanceND.test_multi_dim_nD)r#   rH   r  )r   r    r#   c                 C   s   t jd}|j||fd}|j||fd}|j|d}|j|d}t||||}	t|}
|
j|d}|j|d}t|| | || | ||}t||	 d S )Nl   uAh~r  r  )rV   r  r  rP   r  ortho_groupr  r
   )rZ   r'  r)  rE  r  r!  r"  r%  r#  r  r  	transformshiftr   rb   rb   rc   test_orthogonal_nDz  s   

z,TestWassersteinDistanceND.test_orthogonal_nDc                 C   s  t jd}tjtdd |jdd}|jdd}t||}W d    n1 s*w   Y  tjtdd |jdd}|jd	d}t||}W d    n1 sSw   Y  tjtd
d |jdd}|jdd}t||}W d    d S 1 s}w   Y  d S )Nl   e36^[Y{lz Invalid input values. The inputsrz   )r    rE   r2  r  )r"   r   r#   z Invalid input values. Dimensions)r2  )r   r2  z(Invalid input values. If two-dimensional)r   rE   r  )rV   r  r  r   r   r   rP   r  )rZ   r  r!  r"  r{  rb   rb   rc   test_error_code  s$   "z)TestWassersteinDistanceND.test_error_codeu_size)r   rE   rW  v_sizec                 C   s   t jd}|j|dfd}|j|dfd}| }| }t||}t||}	t||}
t|	| t|
| |j|d}|j|d}t||||}t||||}	t||||}
t|	| t|
| d S )Nl   Ku@* r   r  )rV   r  r  rU  rP   r  r  r
   )rZ   r=  r>  r  r!  r"  u_values_flatv_values_flatd1d2d3r%  r#  rb   rb   rc   test_optimization_vs_analytical  s.   


z9TestWassersteinDistanceND.test_optimization_vs_analyticalN)r   r   r   r)  r  r   r*  r+  r&  r+  r0  r5  r7  r;  r<  rD  rb   rb   rb   rc   r    s8    r  c                   @   sH   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dS )TestWassersteinDistancez5 Tests for wasserstein_distance() output values.
    c                 C   s   t tddgdgddgdgd t tddgdgddgdgd t tddgdgddgdgd t tg dg dd d S )	Nr   r   r'   r   r  r   rs  r   r
   rP   r  rR  rb   rb   rc   r    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   rP   r  rR  rb   rb   rc   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!   rE   r  )rF   rG   rH   rC   r2  )r+   g@r  )r  r#   r  )r   r   r   )r   r   r   r)   rF  rR  rb   rb   rc   
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    rF  rR  rb   rb   rc   test_combine_weights  s   z,TestWassersteinDistance.test_combine_weightsc                 C   s|   t ddd}t |}tt||t t | t t|}|d d d }tt||||t j	t ||d d S )Nr  r  r]  rK   r
  )
rV   r   r  r
   rP   r  rU   ru  r~  r  )rZ   r  r  r%  r#  rb   rb   rc   test_collapse  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   rF  rR  rb   rb   rc   r     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   rs   )	r   rP   r  rV   r9  r   rX   rY   rW   rZ   ra   rb   rb   rc   r5    s&   "z'TestWassersteinDistance.test_inf_valuesN)r   r   r   r)  r  rI  rJ  rN  rO  r  r5  rb   rb   rb   rc   rE    s    	
rE  c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )TestEnergyDistancez0 Tests for energy_distance() output values.
    c                 C   s   t tddgdgddgdgtdd  t tddgdgddgdgtdd  t tddgdgddgdgd t tg dg d	tdd
  d S )Nr   r   r   r'   r   r  r   rs  r   g3Ey?r   rP   energy_distancerV   r   rR  rb   rb   rc   r    s$   zTestEnergyDistance.test_simplec                 C   rG  rH  )r   rP   rW  rR  rb   rb   rc   rI  .  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	@rV  rR  rb   rb   rc   rJ  6  s
   zTestEnergyDistance.test_shiftc              	   C   rK  rL  r   rP   rW  rR  rb   rb   rc   rN  >  s   z'TestEnergyDistance.test_combine_weightsc              	   C   rP  rQ  rX  rR  rb   rb   rc   r  F  s   z#TestEnergyDistance.test_zero_weightc                 C   rR  rS  )	r   rP   rW  rV   r9  r   rX   rY   rW   rT  rb   rb   rc   r5  L  s     "z"TestEnergyDistance.test_inf_valuesN)
r   r   r   r)  r  rI  rJ  rN  r  r5  rb   rb   rb   rc   rU    s    rU  c                   @   s   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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    rH   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   r4   |	&	@|	&	gҏGg?g@-pL?)rP   brunnermunzelrR   r  r	   r5   r   r  rb   rb   rc   test_brunnermunzel_one_sidedc  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   r4   r[  r\   ҏGw?rP   r]  rR   r  r	   r5   r  rb   rb   rc   test_brunnermunzel_two_sidedz  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 )Nr4   r[  r\  r`  ra  r  rb   rb   rc   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 )NrQ  rs  r  ry  r   r   r   rP   r]  rR   r  rZ   r   distributionrv   rb   rb   rc   $test_brunnermunzel_alternative_error     z6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc                 C   r_  )Nr  rg  r4   r[  r\  g "H[?ra  r  rb   rb   rc   $test_brunnermunzel_distribution_norm  s   
z6TestBrunnerMunzel.test_brunnermunzel_distribution_normc                 C   rd  )Nr   rQ  r  )rs  r  re  rf  rb   rb   rc   %test_brunnermunzel_distribution_error  ri  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  )rP   r]  rR   r  r   rV   rW   )rZ   r  r  r  r*  r  r+  rb   rb   rc   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    rZ  r  ru   )rV   rW   rP   r]  r   rZ   rR   r  r  r  r  r*  rb   rb   rc   &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    rZ  r   rs  rx   )rV   rW   r   r   rP   r]  )rZ   rR   r  r   rg  rv   rb   rb   rc   "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    rZ  rt   ru   r4   r[  r\  r`  )rV   rW   rP   r]  r	   r5   rn  rb   rb   rc   !test_brunnermunzel_nan_input_omit  s   $
z3TestBrunnerMunzel.test_brunnermunzel_nan_input_omitc                 C   sX   g d}g d}d}t jt|d tj||dd W d   dS 1 s%w   Y  dS )z| tests that a warning is emitted when p is nan
        p-value with t-distributions can be nan (0/0) (see gh-15843)
        r   rU  zDp-value cannot be estimated|divide by zero|invalid value encounteredrz   rs  rj  N)r   r   rY   rP   r]  r  rb   rb   rc   test_brunnermunzel_return_nan  s   "z/TestBrunnerMunzel.test_brunnermunzel_return_nanc                 C   s`   g d}g d}t jtdd tj||dd\}}W d   n1 s$w   Y  t|d dS )	zo tests that a p is 0 for datasets that cause p->nan
        when t-distribution is used (see gh-15843)
        r   rU  zdivide by zerorz   r  rj  Nr   )r   r   rY   rP   r]  r   )rZ   r   r[   r{  r   rb   rb   rc   test_brunnermunzel_normal_dist  s   z0TestBrunnerMunzel.test_brunnermunzel_normal_distN)r   r   r   rR   r  r5   r^  rb  rc  rh  rk  rl  rm  ro  rp  rq  rr  rs  rb   rb   rb   rc   rY  ]  s     rY  c                   @   s   e Zd ZdZdd ZdS )TestRatioUniformsz{ Tests for rvs_ratio_uniforms are in test_sampling.py,
    as rvs_ratio_uniforms is deprecated and moved to stats.sampling c              	   C   s   t jj}t|tdtd }t|d}t jj||| |dd}|d}d}tj	t
|d t j||| |ddd}W d    n1 sKw   Y  t|| d S )	Nr   r   i90  )umaxvminvmaxr  rE   zEPlease use `RatioUniforms` from the `scipy.stats.sampling` namespace.rz   rT  )rP   rr  pdfrV   r   samplingRatioUniformsr  r   r   DeprecationWarningrvs_ratio_uniformsr   )rZ   r  r  ru  genr%  deprecation_msgr&  rb   rb   rc   test_consistency  s   
z"TestRatioUniforms.test_consistencyN)r   r   r   r)  r  rb   rb   rb   rc   rt    s    rt  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 )Nr3  r!   rV   r   r   r   rP   multiscale_graphcorrr  rb   rb   rc   test_error_notndarray   s   

z*TestMGCErrorWarnings.test_error_notndarrayc                 C   s2   t ddd}|dd}tttj|| d S )Nr  r4  r    rE   )rV   r   rT   r   r   rP   r  r  rb   rb   rc   test_error_shape'  s   z%TestMGCErrorWarnings.test_error_shapec                 C   s(   t d}t d}tttj|| d S )Nr   r  r  rb   rb   rc   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 )Nr3  r;   r   )rV   r   r  rW   r   r   rP   r  r  rb   rb   rc   test_error_nans3  s
   

z$TestMGCErrorWarnings.test_error_nansc                 C   &   t d}d}tttj|||d d S )Nr3  r   )compute_distancer  )rZ   r   r  rb   rb   rc   test_error_wrongdisttype<  s
   

z-TestMGCErrorWarnings.test_error_wrongdisttyper  rK   1c                 C   s"   t d}tttj|||d d S )Nr3  r  r  )rZ   r  r   rb   rb   rc   test_error_repsC  s   
z$TestMGCErrorWarnings.test_error_repsc                 C   r  )Nr3  r  r  )rV   r   r   rY   rP   r  )rZ   r   r  rb   rb   rc   test_warns_repsL  s   
z$TestMGCErrorWarnings.test_warns_repsc                 C   s.   t d}t dt j }tttj|| d S )Nr3  )rV   r   r  r9  r   r   rP   r  r  rb   rb   rc   test_error_inftyR  s   
z%TestMGCErrorWarnings.test_error_inftyN)r   r   r   r)  r  r  r  r  r  r   r*  r+  r  r  r  rb   rb   rb   rc   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ejjdd Zejjdd ZdS )TestMGCStatz) Test validity of MGC test statistic
    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  rK   r   r  r]  	nonlinearr   r!   r  independencer'   )r   r   r   r   z3sim_type must be linear, nonlinear, or independencer=   )rV   r  rM  random_sampler   r   r  pir  r  binomialr   r  )rZ   sampsdimssim_typer   r[   unifr  r  u_2v_2
dims_noiserb   rb   rc   _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 )Nrb  r  r   r  r  r  r4   rV   r  rq  r  rP   r  r	   	rZ   r  obs_stat
obs_pvaluer   r[   r  r   r{  rb   rb   rc   	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 )Nrb  r  r!   r  r   r4   r  r  rb   rb   rc   
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 )Nrb  r  r'   )r  r!   r  r   r   )r  r!   r   r4   r  T)
is_twosamp)rV   r  rq  r  r  rP   r  r	   rZ   r   r[   r  r   r{  rb   rb   rc   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 )Nrb  r  r   r  r  r   )workersr  r4   r  r  r  rb   rb   rc   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  r4   r  )r  rP   r  r	   r  rb   rb   rc   test_random_state  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 )Nrb  r  r   r  r  	euclidean)metric)r  r  r  r4   r  )rV   r  rq  r  r   rP   r  r	   )rZ   r   r[   distxdisty	stat_distpvalue_distr{  rb   rb   rc   test_dist_perm  s   zTestMGCStat.test_dist_permc                 C   sD   t jd | jdddd\}}tj||dd\}}}t|d d S )Nrb  r  r   r  r  r  r  )rV   r  rq  r  rP   r  r
   )rZ   r   r[   r{  r   rb   rb   rc   test_pvalue_literature  s   z"TestMGCStat.test_pvalue_literaturec                 C   sB   t jd | jdddd\}}tj||dd}t|j|j d S )Nrb  r  r   r  r  r  )	rV   r  rq  r  rP   r  r   r  r   r  rb   rb   rc   
test_alias  s   zTestMGCStat.test_aliasN)r  r   r  )r   r   r   r)  r  r   r*  re  r+  r  r  r,  r  r  r  r  r  r  rb   rb   rb   rc   r  Y  s0    
"


	


r  c                   @   s   e Zd ZdZdd Zejdg dg dddej	 d	d
gdddej	dggdd Z
ejdg dg dgdd Zejdddgejdd
dgejdddgdd Zdd ZdS ) TestQuantileTestzb Test the non-parametric quantile test,
    including the computation of confidence intervals
    c                 C   s  g d}d}t jt|d t|g W d    n1 sw   Y  d}t jt|d tj|ddgd W d    n1 s@w   Y  d}t jt|d tj|d	d
gd W d    n1 sbw   Y  t jt|d tj|dd W d    n1 sw   Y  t jt|d tj|dd W d    n1 sw   Y  d}t jt|d tj|dd W d    n1 sw   Y  d}t jt|d t|d W d    d S 1 sw   Y  d S )Nr   z/`x` must be a one-dimensional array of numbers.rz   z`q` must be a scalar.r   r   )r  z-`p` must be a float strictly between 0 and 1.r'   r(  r  r  z`alternative` must be one of...z	one-sidedr   r  )r   r   r   rP   quantile_testr   )rZ   r   r  rb   rb   rc   test_quantile_test_iv  s6   "z&TestQuantileTest.test_quantile_test_ivzp, alpha, lb, ub, alternative)r]  r.  gX݊?g蜶?r   )r'   r\  g-tA?gP"?r   r  r.  g{gA?r   r3  r\  gg @r   c                 C   s@   t t ddd}tj|||d}t||||gdd d S )Nr   rG  r  )r   r   r   r   )rV   r  r   rP   r  r
   r   )rZ   r   r  lbubr   r   r   rb   rb   rc   test_R_ci_quantile   s   z#TestQuantileTest.test_R_ci_quantilezq, p, alternative, ref)r!  r]  r   gͯI	?)rq  r'   r   gɍQ%e?c                 C   s:   t t ddd}tj||||d}t|j|dd d S )Nr   rG  r  r  r   r   r&   r   )rV   r  r   rP   r  r
   r   )rZ   r  r   r   r  r   r   rb   rb   rc   test_R_pvalue"   s   zTestQuantileTest.test_R_pvaluer  
continuousdiscreter   r  c                 C   s  t dt| t| | }tj|}|dkr'|jdd\}}|jdd}n|jdddd}| }|dd}tj||||d}	|	j|d	}
|d
krR||
j	k}n||
j
k}|| D ]}tj||||d}	|	jd| ksoJ q[||  D ]}tj||||d}	|	jd| k sJ qud S )Nr#   r  r   r  r  r   rF   r  r|  r   )r  r~  rV   r  r  r  rP   r  r   r
  r	  r   )rZ   r  r   r  rq  r  r   r  r  r   r   i_insider   rb   rb   rc   test_pval_ci_match1   s(   
z#TestQuantileTest.test_pval_ci_matchc                 C   s~   g d}d}t j|dddd}t|j|dd d	gd
 dgd  }t jdddjd
d}t j|dddd}t|j|dd d S )N)                                    r        geX?r  r(  r   r  r  r   ;   r$   rA   h   r'   p   )r   r  r-  r  r   r  r   )rP   r  r
   r   r   pmf)rZ   r   pvalue_expectedr   rb   rb   rc   test_match_conover_examplesZ   s   
z,TestQuantileTest.test_match_conover_examplesN)r   r   r   r)  r  r   r*  r+  rV   r9  r  r  r  r  rb   rb   rb   rc   r    s0    


&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   r4  rE      i2  g:hў?Fr&  i  gsH?i,0  gY@?)r  r  I   r  r  `   r  r  rV  rm  r  1   r  +   r  r  rX  rX  r  r3  rA   r3  r  r  r  )D   rx  r  "   r  r3  A   X   rB   r  rF  rd  rd  C   E   rE  r  r  r  W   r  r  r  r  r  )r  rH   U   r  O   rG   \   V   rB   @   r~   r  r  rN   r~   Y   r  r  r  rm  6   rH   B   re  r  i
  gXY?r'  )r(   rg  g @r!   r  rF   )r!   r    r*   rE   r3  rB   )r  r  rE   rG   rC   r2  iL  gs˜?T)r    r   r   r   )r   r    r   r   r      gĞ?)r   r   r   r  r      g>K=?)r"   r!   r    r   r   r   )r   r   r    r!   r   r"   i  gqူ?)r!   r    r   r   r   )r    r   r   r   r!   r     ga?i  g;?)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
  
rV   r  rq  rP   page_trend_testr   r   r
   r   r
  rZ   Lr   r  r
  rK  r   rb   rb   rc   test_accuracy   s
   zTestPageTrendTest.test_accuracyi  g-lpW?)
rE   r%   r$   r#   r"   r!   r    r   r   r   )
r   r$   r    r#   r"   r!   r%   r   r   rE   i*  gh[?)
r%   r   r$   r#   r"   r!   r    r   rE   r   r  i  g&]2?)r$   r#   r"   r!   r    r   r   r   )r   r   r!   r"   r    r#   r   r$   rG  c                 C   r  r  r  r  rb   rb   rc   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  )rE   r3  r   r=   Tr  F)predicted_ranks)rV   r  rq  r   r  r|  rP   rankdatar  r   r   )rZ   r  r  r  permrK  ranksr  r  r  res4res5rb   rb   rc   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   )r  r  k   )g      y   )r  r  r  )rY        )   r  t   r   r#   Fr&  )r  r  r
  i  gy&1l?r    r?   r'  gHPsb?)rV   r  rq  r   rt  r   rP   r  r   r   r   r   )rZ   rK  r  r   rb   rb   rc   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.rz   r   r   zPage's L is only appropriater   z+`predicted_ranks` must include each integerr   rs  )rK  r  )r  r   r   )r   r   r   r   r  z`data` is not properly ranked)r   r   r   TrM  z`data` contains NaNsFr  z`method` must be inekki)rK  r
  z`ranked` must be boolean.)rK  r  )	r   r   rP   r  rV   r  r|  rW   r\  rI  rb   rb   rc   rs  !  sx   $z'TestPageTrendTest.test_input_validationN)r   r   r   rV   r  rq  r|  	data_3_25
data_10_26tsr   r*  r+  r  ts2re  r  r  r	  rs  rb   rb   rb   rc   r  y   s    $$$$$$$,
r  iv5z	fun, argsc                 C   s|   | |ddi}| |ddi}t || | j d}tjtt|d | |ddd W d    d S 1 s7w   Y  d S )Nr
  r'  r5  z#() got multiple values for argumentrz   )r
  r5  )r   r   r   r   r\  reescape)r  r  r   r  errrb   rb   rc   test_rename_mode_method<!  s   
"r	  c                   @   sr   e Zd Zdd Zdd Zdd Zdd Zej	d	g d
ej	dddgdd Z
ej	dddgdd ZdS )TestExpectilec                 C   6   t jd}|jdd}ttj|ddt | d S )Nr  r3  r  r'   r  )rV   r  r  r
   rP   	expectilerU   rZ   r  r   rb   rb   rc   test_same_as_meanN!     zTestExpectile.test_same_as_meanc                 C   r	  )Nr  r3  r  r   r	  )rV   r  r  r
   rP   r	  aminr	  rb   rb   rc   test_minimumS!  r	  zTestExpectile.test_minimumc                 C   r	  )Nr  r3  r  r   r	  )rV   r  r  r
   rP   r	  amaxr	  rb   rb   rc   test_maximumX!  r	  zTestExpectile.test_maximumc           	         sj   t jd}dd   fdd}d}||}| }||}tj|||d}||||}t|| d S )Nl   b@lN c                 S   s8   t j||d}d| ||| k< t || ||  d  S )Nr  r   r   )rV   r  r  )r  r   r  r  r  rb   rb   rc   r  d!  s   z'TestExpectile.test_weights.<locals>.func                    s,   t | t | f}tj || ||fdjS )N)bracketr  )rV   rg  rh  r   minimize_scalarr   )r   r  r  r	  r  rb   rc   
expectile2i!  s   z.TestExpectile.test_weights.<locals>.expectile2rE   r
  )rV   r  r  rP   r	  r
   )	rZ   r  r 	  r  r   r  r  r   r  rb   r	  rc   test_weights]!  s   

zTestExpectile.test_weightsr  )r  g?r'   g/#    ?r3  r  r3  r  c              	   C   s  t jd}|j|d}dD ]}ttjt j||d|d| q| }ttj|| |dtj||d|  ttj|| |dtj||d|  ttj|| |d|tj||d  |j	|dd}|dkrmd	d
 }n|dkrvdd
 }ndd
 }|tjt j
||  |dtj||dtj||d  |j|dd}tj||dtj||dksJ |j	|dd}dD ]&}|tjd| | ||  |dd| tj||d |tj||d   qttj| |dtj|d| d  dS )u  
        See Section 6 of
        I. Steinwart, C. Pasin, R.C. Williamson & S. Zhang (2014).
        "Elicitation and Identification of Properties". COLT.
        http://proceedings.mlr.press/v35/steinwart14.html

        and

        Propositions 5, 6, 7 of
        F. Bellini, B. Klar, and A. Müller and E. Rosazza Gianin (2013).
        "Generalized Quantiles as Risk Measures"
        http://doi.org/10.2139/ssrn.2225751
        r  r  )r  r   r'   )rs  r  r	  rE   rU  r'   c                 S   s   t | | d S r  )r
   r   r   rb   rb   rc   	assert_op!  r  z:TestExpectile.test_expectile_properties.<locals>.assert_opc                 S   s   | |k sJ d S r  rb   r"	  rb   rb   rc   r#	  !  r  c                 S   s   | |ksJ d S r  rb   r"	  rb   rb   rc   r#	  !  r  r!   )rZ  r'   r3  r   N)rV   r  r  r  r
   rP   r	  rj   exponentiallogisticr  )rZ   r  r  r  r   r
  r[   r#	  rb   rb   rc   test_expectile_propertiesw!  s\   


 z'TestExpectile.test_expectile_propertiesc                 C   s   t jd}|jd|d}g }t dt dd}t jd|d|d d	d	  df D ]}|tj	||d
 q)t 
t |dksBJ d S )Nr  r   )r   r   r  r'   r  r   r   rK   r	  )rV   r  r  paretologspacelog10r  r_  rP   r	  rk  r
  )rZ   r  r  r   e_list	alpha_seqr  rb   rb   rc   test_monotonicity_in_alpha!  s   $z(TestExpectile.test_monotonicity_in_alphaN)r   r   r   r	  r	  r	  r!	  r   r*  r+  r&	  r,	  rb   rb   rb   rc   r	  M!  s    ar	  r  )NNr   N)r)  r  r	  r  collectionsr   	itertoolsr   hypothesis.extra.numpyextranumpyrR  rZ  rW  numpy.testingr   r   r   r   r   r	   r
   r   r   r   r   r   r   numpy.ma.testutilsr  	testutilsr  r   r   r   r   r   rV   scipy.statsrP   scipy.stats.mstatsr  scipy.stats._mstats_basic_mstats_basicr   scipy.stats._ksstatsr   scipy.special._testutilsr   scipy.specialr   scipyr   common_testsr   scipy.spatial.distancer   scipy.stats._axis_nan_policyr   r^  r   scipy._lib._utilr   r  rR   r  r   r   r   r   r   r0   r   r-  rf  r  r  r"  r'  r+  r1  r2  rw  ry  r|  r  r  r  r  r  r  r  r*  rj  r3  rl  rr  r  r  r  r  r\  	compositer`  ra  r  PowerDivCaser  r  rt  r  r  r  r+  r[  r  r  r  r  r  r  r  r*  r  r  r  rk  r  r  r  rg  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r$  r&  r-  r.  r/  rl  rm  rt  r  r  r  r  r  r  r  r  r  r  r  r  r2  rD  rR  rS  rc  rw  r  r  r  r  r  rE  rU  rY  rt  r  r  r  r  r  r  r  r   r[   wilcoxonr  rr  r  r+  r   r	  r	  rb   rb   rb   rc   <module>   s   0 %  D '  L [
 WZ

)  "
u ] t? i  
ss,,	 -
K-7%_  &r



} xI Em
Jcq8~+codQ^W/ k @UL& 0^C /<   ?



