
    S_f9                       d dl mZ d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZmZ dd	lmZ d d
lmZ  G d d      Z  G d d      Z! G d d      Z" G d de"      Z#ejH                  jJ                  d        Z& G d de      Z' G d d      Z( G d d      Z) G d d      Z* G d d      Z+ G d d      Z, G d  d!      Z-y)"    )productN)assert_assert_equalassert_allcloseassert_almost_equal)raises)distributions)epps_singleton_2sampcramervonmises_cdf_cvmcramervonmises_2samp_pval_cvm_2samp_exactbarnard_exactboschloo_exact)mannwhitneyu
_mwu_state   )check_named_results)_TestPythranFuncc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestEppsSingletonc                     t        j                  g d      }t        j                  g d      }t        ||      \  }}t        |dd       t        |dd       y )N)
gffffffֿgffffff@gGz?\(\?ffffff?gQ@gq=
ףp?gGzgGz׿gp=
#(@)
gffffffg333333ÿgףp=
@g      
@gGz@g)\(@g      @g(\@g(\ @333333!@gHzG.@r   decimalgQ,r?   )nparrayr
   r   selfxywps        @lib/python3.12/site-packages/scipy/stats/tests/test_hypotests.pytest_statistic_1z"TestEppsSingleton.test_statistic_1   sR    
 HH 7 8HH 4 5#Aq)1Aua0Aw2    c                     t        j                  d      }t        j                  d      }t        ||      \  }}t        |dd       t	        |dd       y )	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   r0   r      r   r-   r1   r/   g!@MbP?atolg&J?r   r   )r   r    r
   r   r   r!   s        r'   test_statistic_2z"TestEppsSingleton.test_statistic_2$   sP    HH " #HH   !#Aq)15u-Aw2r)   c                    t         j                  j                  d       t        j                  d      t        j                  d      }}t	        t        |      t        |            \  }}t	        t        |      t        |            \  }}t	        ||      \  }}t        ||cxk(  xr |k(  nc        t        ||cxk(  xr
 |k(         y c        y )N        )r   randomseedaranger
   listtupler   )	r"   r#   r$   w1p1w2p2w3p3s	            r'   test_epps_singleton_array_likez0TestEppsSingleton.test_epps_singleton_array_like.   s    
		tyy}biim1%d1gtAw7B%eAha9B%a+BbBbBr)   c                 ^    dt        j                  d      }}t        t        t        ||       y )Nr   r+   r   r,   r/   )r   r<   assert_raises
ValueErrorr
   r"   r#   r$   s      r'   test_epps_singleton_sizez*TestEppsSingleton.test_epps_singleton_size9   s"    RYYr]1j"61=r)   c                     dddddt         j                  ft        j                  d      }}t        t        t
        ||       y )Nr   r+   r   r,   r-   r/   )r   infr<   rH   rI   r
   rJ   s      r'   test_epps_singleton_nonfinitez/TestEppsSingleton.test_epps_singleton_nonfinite>   s3    1aArvv&		"1j"61=r)   c                     t        j                  d      t        j                  d      }}t        ||      }d}t        ||       y )N   r8   )	statisticpvalue)r   r<   r
   r   )r"   r#   r$   res
attributess        r'   
test_nameszTestEppsSingleton.test_namesC   s6    yy}biim1"1a(,
C,r)   N)	__name__
__module____qualname__r(   r5   rE   rK   rN   rU    r)   r'   r   r      s     33	 >
>
-r)   r   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestCvmc                 <    t        t        g dd      g dd       y )N)gy;i?g#^?gE>?gD
)?r,   {Gz?皙?      ?g+?-C6?r3   r   r   r"   s    r'   
test_cdf_4zTestCvm.test_cdf_4N   s    =qA(	r)   c                 <    t        t        g dd      g dd       y )N)g8*5?g@߾?gHm?g%1 ?r/   )r^   r_   r`   g333333?ra   r3   rb   rc   s    r'   test_cdf_10zTestCvm.test_cdf_10T   s    =rB(	r)   c                 <    t        t        g dd      g dd       y )N)g}tg?g`?gI5o?gׁsF?  r]   ra   r3   rb   rc   s    r'   test_cdf_1000zTestCvm.test_cdf_1000Z   s    =tD(	r)   c                 :    t        t        g d      g dd       y )N)a+e?+?&pn?+MJA?r]   ra   r3   rb   rc   s    r'   test_cdf_infzTestCvm.test_cdf_inf`   s    =>(	r)   c                 l    t        t        ddgd      ddg       t        t        ddgd      ddg       y )	NgX(~$?gUUUUU5f@i  r   r   gaah?g"@   )r   r   rc   s    r'   test_cdf_supportzTestCvm.test_cdf_supportf   s6    Xz5137!Q@X
;R@1a&Ir)   c                 N    t        t        g dd      t        g d      d       y )N)rk   rl   rm   rn   d   '  ra   r3   rb   rc   s    r'   test_cdf_large_nzTestCvm.test_cdf_large_nk   s!    BEJBC	r)   c                     t        dt        dd      cxk  xr dk  nc        t        dt        d      cxk  xr
 dk         y c        y )NgwJ?gt@rh         ?)r   r   rc   s    r'   test_large_xzTestCvm.test_large_xr   s9     	(5$/5#56(5//C/0/0r)   c                     d}t        t        j                  |      dz  d      }t        t	        |j
                  |      dkD         t        |j                  d       y )N   皙?normrx   r   )r   r   onesr   r   rQ   r   rR   )r"   nrS   s      r'   
test_low_pzTestCvm.test_low_p{   sG     RWWQZ^V4*S01SZZ#r)   c                 ^    t        t        t        dgd       t        t        t        dd       y )N      ?r}   rY   )rH   rI   r   rc   s    r'   test_invalid_inputzTestCvm.test_invalid_input   s     j.3%@j."f=r)   c                 z   t        g dd      }t        |j                  dd       t        |j                  dd       t        g ddd      }t        |j                  dd       t        |j                  d	d       t        g d
d      }t        |j                  dd       t        |j                  dd       y )N)g333333r+   r   g?r,   皙?333333?r}   gZ	%q?ư>r3   gEж?)r   r   g!O!W*?gz"W`?)	r   r+   r-   ffffff?gQ?      ?      @exponge.?gnz\(r?)r   r   rQ   rR   )r"   rS   s     r'   test_values_RzTestCvm.test_values_R   s     ;VDxd;

ID9 ;VXNyt<

Kd; CWMyt<

Kd;r)   c                    t        j                  d      d}}t        |t        j                  j
                        }t        |d      }t        |j                  |j                  f|j                  |j                  f       t        |t        j                  j
                  |      }t        |d|      }t        |j                  |j                  f|j                  |j                  f       y )Nr-   )r   ffffff?r   beta)
r   r<   r   r	   r   cdfr   rQ   rR   r   )r"   r#   argsr1r2s        r'   test_callable_cdfzTestCvm.test_callable_cdf   s    ))A,
4A}22667Aw'bllBII.ryy0IJA}1155t<Avt,bllBII.ryy0IJr)   N)rV   rW   rX   rd   rf   ri   ro   rr   rv   ry   r   r   r   r   rY   r)   r'   r[   r[   J   s;    J
1$><$Kr)   r[   c                      e Zd Zd Zd Zd Zg dZg dZdddd	gd
dddgddddgddddgd
dddgddddggZe	j                  j                  de      d        Zddddgd
dddgddddgddddgd
dddgddddggZe	j                  j                  de      d        Zd Zg dg d g d!d"Zg d#g d$g d%g d&d'Zg d(g d)g d*g d+g d,d-Zg d.g d/g d0g d1g d2g d3d4Zd5 Zd6 Zd7 Zdddd8gd
ddd9gdddd:gdddd8gd
ddd9gdddd8ggZe	j                  j                  d;e      d<        Zd= Ze	j                  j                  d>ddg      d?        Zd@ Zg d'dAdBdCdDej:                  dAdEdFdGdGdHgdIdJfg d'dAdBdCdDej:                  ej:                  dEdFdGdGdHgdKdLfdFdEej:                  dGgdAdBdCdDej:                  dAdEdFdGdGdHgdMdNfdFdEej:                  dGgdAdBdCdDej:                  ej:                  dEdFdGdGdHgdOdPfdFej:                  ej:                  dGgdAdBdCdDej:                  ej:                  dEdFdGdGdHgdQdRfgZe	j                  j                  dSe      dT        Zg dUg dVg dWg dXg dYg dZg d[g d\g d]g	Z e	j                  j                  d^e       d_        Z!d` Z"da Z#g d"dbdcgdddgg d"dbdcgd
ddgg d"dbdcgddegg d"dEgddfgg d"dEgd
dfgg d"dEgddggdFdEgdFdEgddhgdFdEgdFdEgd
dhgdFdEgdFdEgddigg	Z$e	j                  j                  g dje$      dk        Z%dl Z&e	j                  j                  dmg dn      do        Z'dp Z(yq)rTestMannWhitneyUc                     dt         _        y )NTr   
_recursiverc   s    r'   setup_methodzTestMannWhitneyU.setup_method   
     $
r)   c                    t        j                  ddg      }t        j                  ddg      }t        t        d      5  t	        g |       d d d        t        t        d      5  t	        |g        d d d        t        t        d      5  t	        ||d	       d d d        t        t        d
      5  t	        ||d       d d d        t        t        d      5  t	        ||d       d d d        t        t        d      5  t	        ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)Nr   r+   r   r,   `x` and `y` must be of nonzeromatchz`use_continuity` must be oneekki)use_continuityz`alternative` must be one ofalternativez`axis` must be an integerr   axisz`method` must be one ofmethod)r   r    rH   rI   r   rJ   s      r'   test_input_validationz&TestMannWhitneyU.test_input_validation   s/   HHaVHHaV:-MN 	 Q	 :-MN 	 B	 :-KL 	6Af5	6:-KL 	3A62	3:-HI 	)AC(	):-FG 	.Af-	. 	.	  	 	  	 	6 	6	3 	3	) 	)	. 	.sH    D&D(D44E EED%(D14D= E	EE!c                 "   t         j                  j                  d       d}t         j                  j                  |dz
        }t         j                  j                  |dz
        }t	        ||      }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ |j
                  |j
                  k7  sJ t         j                  j                  |dz
        }t         j                  j                  |dz         }t	        ||      }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ |j
                  |j
                  k7  sJ t	        ||      }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ |j
                  |j
                  k7  sJ t         j                  j                  |dz         }t         j                  j                  |dz         }t	        ||      }t	        ||d      }t	        ||d      }|j
                  |j
                  k7  sJ |j
                  |j
                  k(  sJ t         j                  j                  |dz
        }t         j                  j                  |dz
        }|d   |d<   t	        ||      }t	        ||d      }t	        ||d      }|j
                  |j
                  k7  sJ |j
                  |j
                  k(  sJ y )Nr   r1   
asymptoticr   exactr   )r   r:   r;   randr   rR   )r"   r   r#   r$   autor   r   s          r'   	test_autozTestMannWhitneyU.test_auto   s    			q IINN1Q3IINN1Q3Aq!!!Q|<
Q'2{{ell***{{j///// IINN1Q3IINN1Q3Aq!!!Q|<
Q'2{{ell***{{j///// Aq!!!Q|<
Q'2{{ell***{{j///// IINN1Q3IINN1Q3Aq!!!Q|<
Q'2{{ell***{{j///// IINN1Q3IINN1Q3t!Aq!!!Q|<
Q'2{{ell***{{j/////r)   )gm9Aj@g+H3[@gi>s@)g#hA{@glz@gcDf@gǳ*h@gZA@gI9^YQa@g`@g՞p@g:q@g&@gZ|@g`r@gMc3g@	two-sidedr   r   r   )   
+?less)r   
+?greater)r   缌%c?r   )r   g9:?)r   g9:?)r   g*::?)kwdsexpectedc                 ^    t        | j                  | j                  fi |}t        ||       y N)r   r#   r$   r   r"   r   r   rS   s       r'   
test_basiczTestMannWhitneyU.test_basic  s%    4664662T2X&r)   T)r   r   )   r   )r   r   )r   r   F)r   gl,KNh?)r   giژ?)r   gl,KNh?c                 b    t        | j                  | j                  fddi|}t        ||       y )Nr   r   )r   r$   r#   r   r   s       r'   test_continuityz TestMannWhitneyU.test_continuity%  s,     466466G,G$GX&r)   c                 ^   g d}t        j                  g d      }t        j                  g d      dz  }t        j                  g d      dz  }|dz
  ||z
  ||z
  |||z   ||z   |dz   g}t        ||dd      }g d	}g d
}t        |j                  |       t        |j                  |       y )NrG   r   r+   r   r,   r-   )r   r   r   r   r   r^   )r   r   r   r   r   r   )r   r   )r/   	         !@r1   r   r0   r.   )r   g]U?g[?gi\?gZX<_?gx.?g 
?)r   r    r   r   rQ   r   rR   )	r"   r#   y0dydy2r$   rS   
U_expected
p_expecteds	            r'   test_tie_correctz!TestMannWhitneyU.test_tie_correct3  s     XXo&XXo&t+hh',WbeRVRCB4@1ab>/
I
S]]J/

J/r)   )g      ?r`   g      ?)r   皙?皙?r   )r_   r   r   r   r`   g?r   r+   r   )r   r   r   )gx&?g/$?gJ+?r   r   )y&1?v/?gv/?r   gjt?~jt?ʡE?)	gy&1?gV-?r   r   gS?gv?gʡE?g'1Z?gm?rG   )gK7A`?gZd;O?r`   gMbX?)Mb?RQ?RQ?M?r   r   )	g;On?;On?V-?g      ?gJ+?r   gx&?r`   gCl?)Mb?Mb?Mb?gy&1?r   M?g|?5^?gn?g\(\?!rh?K7?)Mbp?r   r   r   ~jt?g333333?g"~j?ףp=
?gzG?K7?gGz?gl?r`   gI+?r   )r   r   g1Zd?r   )r   r   r   1Zd?g%C?r   r   )
g~jt?g~jt?r   gsh|??gS㥛?r   r   g+?r   r   )g{Gzt?r^   g~jt?gL7A`?r   gjt?gPn?gI+?gX9v?gQ?gMb?gsh|??gK7A`?)Mb`?r   g;On?gQ?g9v?gˡE?gT㥛 ?gbX9ȶ?grh|?gQ?r   gx&?gv/?gMbX?g(\?gQ?)r2   r   r   r   g9v?g/$?r   r   gL7A`?g
ףp=
?gQ?r   gK7?g`"?g7A`?r   gV-?gjt?gˡE?)r   r+   r   r,   r-   r.   c           
         | j                   | j                  | j                  | j                  d}|j	                         D ]!  \  }}|j	                         D ]  \  }}t        j                  dt        |            }t        t        j                  |||      |d       t        j                  d||z  dz         }t        t        j                  |||      t        j                  |||      z   t        j                  |||      z
  d       t        j                  |||      }t        ||d d d          t        j                  |||      }	t        ||	       
 $ y )N)r   r,   r-   r.   r   )kmr   r2   r3   r   r   )pn3pn4pm5pm6itemsr   r<   lenr   r   r   sfpmf)
r"   p_tablesr   tabler   r&   uu2r   pmf2s
             r'   test_exact_distributionz(TestMannWhitneyU.test_exact_distributionc  s%   xxDHHdhhG ( 	+HAu +1IIaQ(
a1 =qtL YYq!A#a%(
qA >",--"Q"?!@",..2a"@!ABCE
 !nnrQ!4S2Y/ "~~a15T*%+	+r)   c                    t         j                  j                  d       t         j                  j                  d      }t         j                  j                  d      }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ t        j                  |j                  |j                  z
        dkD  sJ t         j                  j                  d      }t         j                  j                  d      }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ t        j                  |j                  |j                  z
        dk  sJ y )	Nr   r-   r   r   r   r^   (   r2   )r   r:   r;   r   r   rQ   absrR   )r"   r#   r$   res1res2s        r'   test_asymptotic_behaviorz)TestMannWhitneyU.test_asymptotic_behavior{  s
   
		q IINN1IINN1Aq1Aq6~~///vvdkkDKK/04777 IINN2IINN2Aq1Aq6~~///vvdkkDKK/04777r)   c                     t        g dddgdd      }t        g dddgdd      }t        |j                  |j                         |j                  dkD  sJ t        g dddgd	d      }t        |d
       y )Nr   r         @r   r   r   r   r`   r   )r   r   )r   r   rR   )r"   res_lres_grS   s       r'   test_exact_U_equals_meanz)TestMannWhitneyU.test_exact_U_equals_mean  sw     Yc
$+-Yc
	$+-U\\5<<0||c!!!9sCjk")+S&!r)   r   r   )r   r`   )r   g郡E?)r   resultc                 .    t        t        di ||       y )Nr   r+   )r   r   )r"   r   r  s      r'   test_scalar_dataz!TestMannWhitneyU.test_scalar_data  s     	2T2F;r)   c                     t        t        ddd      d       t        t        ddd      d       t        t        dddd      dt        j                  f       y )	Nr   r   r   )r`   r   r   F)r   r   r`   )r   r   r   nanrc   s    r'   test_equal_scalar_dataz'TestMannWhitneyU.test_equal_scalar_data  sP    
 	\!Qw7B\!Q|<hG 	\!Q|168:=rvv	Hr)   r   c                 x   t         j                  j                  d       d}d\  }}t         j                  j                  |dd      }t         j                  j                  d|dd      dz   }t	        ||||	      }d
}|j
                  j                  |k(  sJ |j                  j                  |k(  sJ t        j                  ||d      t        j                  ||d      }}|d   }|j                  |j                  k(  sJ t        j                  |||fz         }t        j                  |||fz         }|j                  d d |k(  sJ |j                  d d |k(  sJ t        j                  |      }	t        j                  |      }
t        |D cg c]  }t        |       c} D ]8  }||   }||   }t	        |||      }|j                  |	|<   |j
                  |
|<   : t         j                  j                  |j
                  |
       t         j                  j                  |j                  |	       y c c}w )Nr   )r0   r/   r   r1   r.   r   r   )r   r   )r.   r   r1   r   )N.r   )r   r:   r;   r   r   rR   shaperQ   moveaxisndimbroadcast_tozerosr   rangetestingr   )r"   r   r   r   r   r#   r$   rS   r  
statisticspvaluesiindicesxiyitemps                   r'   test_gh_12837_11113z$TestMannWhitneyU.test_gh_12837_11113  s    			q 1IINN1a#IINN1aA&,1aT:zz5(((}}""e+++ {{1dB'Qb)A1iLvvOOAut|,OOAut|,wws|u$$$wws|u$$$ XXe_
((5/5 9aq 9: 	+G7B7BBv6D"&..Jw#{{GG	+ 	



G4


z: !:s   H7c                    g d}g d}t        ||      }t        j                  |d<   t        ||      }t        |j                  |j                         t        |j
                  |j
                         t        j                  |d<   t        ||      }t        |j                  t        j                         t        |j
                  t        j                         y )NrG   )r   r.   r0   r1   r   r   r+   r   r,   r,   r-   r,   )r   r   rM   r   rQ   rR   r  )r"   r#   r$   r   r   res3s         r'   test_gh_11355zTestMannWhitneyU.test_gh_11355  s    -Aq! vv!Aq!T^^T^^4T[[$++. vv!Aq!T^^RVV,T[["&&)r)   r   r.   r0   r1   r+   r   r,   r-   r/   g+zQ?r   g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r#   r$   rQ   rR   c                     t        ||d      }t        |j                  |d       t        |j                  |d       y )Nr   r   -q=r3   )r   r   rQ   rR   )r"   r#   r$   rQ   rR   rS   s         r'   test_gh_11355bzTestMannWhitneyU.test_gh_11355b  s2     1a5yu=

F7r)   )Tr   r   g&?)Tr   r   gO?)Tr   r   gO?)Fr   r   g9@VN!x?)Fr   r   g9M>?)Fr   r   g9M>?)Tr   r   g?UV?)Tr   r   gߺVJH?)Tr   r   gVJH?)r   r   r   
pvalue_expc                     d}d}d}t        |||||      }t        |j                  |       t        |j                  |       y )N#   )
r|   g(\?g=
ףp=?gp=
ף?g333333?gGz?g(\?g=
ףp=?r   g\(\?)gffffff?g)\(?r   gGz?g\(\?r   r   r   )r   r   rQ   r   rR   )	r"   r   r   r   r"  statistic_expr#   r$   rS   s	            r'   test_gh_9184zTestMannWhitneyU.test_gh_9184   sE    . H*1a'26CS]]M2

J/r)   c                 h    t        t        d      5  t        g g        d d d        y # 1 sw Y   y xY w)Nr   r   )rH   rI   r   rc   s    r'   test_gh_6897zTestMannWhitneyU.test_gh_6897?  s,    :-MN 	!R 	! 	! 	!s   (1c                 ,   t        j                  t         j                  t         j                  t         j                  t         j                  t         j                  g      }t        j                  t         j                  t         j                  t         j                  t         j                  t         j                  g      }t        ||      }t	        |j
                  t         j                         t	        |j                  t         j                         y r   )r   r    r  r   r   rQ   rR   )r"   abrS   s       r'   test_gh_4067zTestMannWhitneyU.test_gh_4067D  s    HHbffbffbffbffbff=>HHbffbffbffbffbff=>1a S]]BFF+SZZ(r)   r   r   )r   ga׀}?)r   rx   )r   g?h?)r   r   )r+   g5&#\?)r+   r   )r#   r$   r   r   c                 @    t        ||d|d      }t        ||d       y )NTr   r%  r   rtol)r   r   )r"   r#   r$   r   r   rS   s         r'   test_gh_2118zTestMannWhitneyU.test_gh_2118\  s%     1a+".0XE2r)   c                    t         j                  j                  d      }|j                  d      }|j                  d      }t        j                  d       t        _        t        j                  ||d       t        j
                  j                  }|d   d	k  r|d
   dk  sJ t        j                  ||d       |t        j
                  j                  k(  sJ t        j                  d       t        _        t        j                  |d|z  dd       t        j
                  j                  }|d   d
k(  sJ t        j                  d|z  |dd       |t        j
                  j                  k(  sJ y )N   g>mjK r-   sizer   r   r   r   r   r   r   r.   r   r{   r   )r   r   r   )	r   r:   default_rngr~   r   _fmnksstatsr   r  )r"   rngr#   r$   r  s        r'   test_gh19692_smaller_tablez+TestMannWhitneyU.test_gh19692_smaller_tabled  s8   
 ii##$78JJAJJJBJWWY//
1a0!!''Qx1}qR//1a0
))/////
  WWY//
1ac'yI!!''RyA~~1Q3'yI
))/////r)   r   )r   r   r   c                    t         j                  j                  d      }|j                  d      }|j                  d      }t        j                  ||t        j
                         |d      }t        j                  ||d|d      }t        |j                  |j                  d	       t        |j                  |j                  d	       y )
Nr3  )r+   r-   r4  )r+   r.   r   )r   r   r   r   V瞯<r/  )	r   r:   r7  r9  r   PermutationMethodr   rQ   rR   )r"   r   r:  r#   r$   rS   r   s          r'   test_permutation_methodz(TestMannWhitneyU.test_permutation_method}  s    ii##$78JJFJ#JJFJ#  Ae.E.E.G-8qB!!!Qw.9Ct~~EB

DKKe<r)   c                     d t         _        y r   r   rc   s    r'   teardown_methodz TestMannWhitneyU.teardown_method  r   r)   N))rV   rW   rX   r   r   r   r#   r$   cases_basicpytestmarkparametrizer   cases_continuityr   r   r   r   r   r   r   r   r  cases_scalarr  r	  r  r  r   rM   cases_11355r!  
cases_9184r'  r)  r-  
cases_2118r1  r;  r?  rA  rY   r)   r'   r   r      s   %. 10j 	-A	A& %0<H)+$*lC)+$-F)+$/7C)+$*g>)+$-A)+,K [[1;?' @' *5M.0)/4H.0)2dK.0)4N.0)/5I.0)2eL.01 [[13CD' E'0,  $8.0C"A<KMC )7K2<=C +?19G$%C+08*"$ &1LI%+|D%.,G(*%0GDfM%+w?J%.'BFKML [[/>< ?<H [[Xg'>?); @);V*& !1aAq!Q:) !1aAq!Q?)+ 2661%1aAq!Q:/+ 2661%1aAq!Q?) *1aAq!Q?/+,K  [[>L8 M8 ?BC@CE:=?AJ [[ 67AC0C0:!
) sCj)5IJsCj&2FGsCj+x@qc9.CDqc6+@Aqc;9q6Aq69.ABq6Aq66+>?q6Aq6;79J [[BJO3 P302 [[],LM	= N	=%r)   r   c                       e Zd Zd Zd Zy)TestMannWhitneyU_iterativec                     dt         _        y )NFr   rc   s    r'   r   z'TestMannWhitneyU_iterative.setup_method  s
     %
r)   c                     d t         _        y r   r   rc   s    r'   rA  z*TestMannWhitneyU_iterative.teardown_method  r   r)   N)rV   rW   rX   r   rA  rY   r)   r'   rL  rL    s    &%r)   rL  c                     d t         _        t        j                  d       t         _        t        j
                  j                  d      } | j                  d      }| j                  d      }t        j                  ||d       t        j                  t         j                  dk(        sJ | j                  d      }t        j                  ||d       t        j                  t         j                  dk(        rJ y )	Nr6  l   7cE"r-   i  r   r   r   i  )
r   r   r   r~   r8  r:   r7  r9  r   all)r:  r#   r$   s      r'   test_mann_whitney_u_switchrQ    s     !J++J
))


.C

1A 	

3A	q!G,66*##r)*** 	

3A	q!G, vvj''2-....r)   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zej                  j!                  dd      d        Zd Zy)TestSomersDc                    | j                   | j                  z   | _        t        j                  d      | j                   | j                  z   ft        j                  d      | j                   | j                  z   fd| _        | j
                  D cg c]  }| j
                  |   d    }}t        j                  t        j                  d      | _
         | j                  | | _        y c c}w )Nr/   r  r   r   r   )ALL_INTEGER	ALL_FLOATdtypesr   r<   	arguments	functoolspartialr9  somersdpartialfuncr   )r"   idxinput_arrays      r'   r   zTestSomersD.setup_method  s    &&7 iim"..?A iim"..?AB :>H#t~~c*1-HH
 %,,U]]9DF(((+6 Is   C)c                      | j                   | }t        |j                  | j                  j                  d       t        |j                  | j                  j                  d       y )Nr=  r3   )r\  r   rQ   r   rR   )r"   r   rS   s      r'   pythranfunczTestSomersD.pythranfunc  sH    d%t}}'>'>UK

DMM$8$8uEr)   c                 6   g dg dg dg}t        j                  |      }| j                  t         j                        }t        j                  |fi |}t        |j                  |j                  d       t        |j
                  |j
                  d       y )N)rq         r0   r   )r0   rc     r$  r{   )r   r   r+   r0      r=  r3   )r9  r[  get_optional_argsr   rQ   rR   )r"   r   r   optional_argsr   s        r'   test_pythranfunc_keywordsz%TestSomersD.test_pythranfunc_keywords  sm    #%8:JK}}U#..u}}=}}U4m4UCT[[u=r)   c                 
   g d}g d}d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       g d}g d	}d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       g d
}g d}d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  d      }t        j                  d      }d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  d      }t        j                  g d      }d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  d      }t        j                  d      d d d   }d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  d      }t        j                  g d      }d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       g d}g d}d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  g dg d      }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  g dg d      }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  g dg d      }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  dgdg      }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  g g       }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  d      }t        j                  d      }t        t        t         j                  ||       y )N)r-   r+   r   r   r.   r,   r0   r1   )r-   r+   r.   r   r   r1   r0   r,           rx   r   r=  r3   r   )	r   r-   r+   r   r   r.   r,   r0   r1   )	r-   r+   r   r.   r   r   r1   r0   r,   )r-   r+   r   r   r.   r,   r0   )r-   r+   r.   r   r   r0   r,   )g+$I$I¿g=/3n+?r/   rx   r   )
r   r+   r   r   r,   r.   r-   r0   r1   r   )gs'}'?rk  r   )g      r   )
r   r0   r1   r.   r-   r   r,   r+   r   r   )g}'}'rk  )r{   r+   r   r{   r+   )r   r,   r0   r   r   )      g.ʂ?)r+   r+   r+   )r+   r   r+   g      $@g      4@)r9  r[  r   rQ   rR   r   r<   r    r  rH   rI   )r"   r#   r$   r   rS   x1x2s          r'   test_like_kendalltauz TestSomersD.test_like_kendalltau  s    %$9mmAq!x{?

HQKe< ('9mmAq!x{?

HQKe< "!:mmAq!x{?

HQKe< IIbMIIbM *mmAq!x{?

HQKe< IIbMHH349mmAq!x{?

HQKe< IIbMIIbM$B$ +mmAq!x{?

HQKe< IIbMHH34;mmAq!x{?

HQKe< :mmB#x{?

HQKe< mmIy1rvv.

BFF+mmIy1rvv.

BFF+mmIy1rvv.

BFF+mmQC!%rvv.

BFF+ mmB#rvv.

BFF+ IIcNIIcNj%--A6r)   c                    g d}g d}d}d}d}t        j                  ||      }t        |j                  |d       t        |j                  |d       t        |j                  j                  d	       t        j                  ||      }t        |j                  |d       t        |j                  |d       t        |j                  j                  d
       y )N)r   r   r   r+   r+   r+   r+   r+   r   r   r   r+   r+   r+   r+   r+   r+   r+   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   r+   gCE]t?g^_?gO((Ƿ?r=  r3   ra   )r   r+   r+   r   )r9  r[  r   rQ   rR   r   r   r  )r"   r#   r$   d_crd_rcr&   rS   s          r'   test_asymmetryzTestSomersD.test_asymmetry>  s    11 ! mmAq!t%8

AD1SYY__f-mmAq!t%8

AE2SYY__f-r)   c                 ^   t        j                  ddgddgddgddgddgg      }|j                  }d}t        t	        j
                  |      j                  |       t        j                  d	d
gdd
gd
dgg      }d\  }}t        t	        j
                  |      j                  |       t        t	        j
                  |j                        j                  |       t        j                  d	d
gd
dgdd
gg      }d}t        t	        j
                  |j                        j                  |       y )Nr1   r+   r.   r-   r   r,   r   gHHHHHH?rb  r   U   r8   )gM&w?rx   gtE]t)r   r    Tr   r9  r[  rQ   )r"   r   dyxdxys       r'   test_somers_originalz TestSomersD.test_somers_originalW  s    
 1a&1a&1a&1a&1a&ABe,66< 2q'B7QG45'Se,66<egg.88#> 2q'Ar7RG45egg.88#>r)   c                    d}d}t        j                  |      }t         j                  j                  d       t        j
                  j                  |t        j                  |      |z        j                  |      }t	        j                  |      }t        j                  |dt        j                  |d         d      }t	        j                  |      }t        j                  |dt        j                  |d         d      }t	        j                  |      }	t        j                  |dt        j                  |d   dz         d      }
t	        j                  |
      }t        |j                  dd	
       t        |j                  |j                         t        |j                  |	j                         t        |j                  |j                         t        |j                  dd	
       t        |j                  |j                         t        |j                  |	j                         t        |j                  |j                         y )Nrt   r,   r.   r   r&   r+   r   r   gayr=  r3   gPj$?)r   prodr:   r;   r9  multinomialrvsr~   reshaper[  insertr  r   rQ   rR   )r"   Nr  r5  srS   s2r   s3r  s4res4s               r'   *test_contingency_table_with_zero_rows_colsz6TestSomersD.test_contingency_table_with_zero_rows_colsm  s    wwu~
		q!!!rwwt}T'9!:BB5ImmAYYq!RXXeAh/a8}}R YYq!RXXeAh/a8}}R YYr1bhhuQxz2;}}R  	'9Ft~~6t~~6t~~6

$5EB

DKK0

DKK0

DKK0r)   c                     d}d}t        j                  |      }t         j                  j                  d       t        j
                  j                  |t        j                  |      |z        j                  |      }|dz
  }d}t        t        |      5  t	        j                  |       d d d        |dz   }d	}t        t        |      5  t	        j                  |       d d d        d
}t        t        |      5  t	        j                  g g       d d d        t        t        |      5  t	        j                  dgg       d d d        t        j                  d      }t        t        |      5  t	        j                  |       d d d        d|d<   t        t        |      5  t	        j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   y xY w)Nrt   r}  r   r~  r+   z:All elements of the contingency table must be non-negativer   r^   z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.r   )r   r   r  )r   r  r:   r;   r9  r  r  r~   r  rH   rI   r[  r  )	r"   r  r  r5  r  s5messages6s7s	            r'   test_invalid_contingency_tablesz+TestSomersD.test_invalid_contingency_tables  s   wwu~
		q!!!rwwt}T'9!:BB5IUN:W5 	MM"	 XI:W5 	MM"	,:W5 	 MM2$	  :W5 	!MMA3% 	! XXf:W5 	MM"	 4:W5 	MM"	 	+	 	
	 	
	  	 	! 	!	 		 	sH   GG>G .G,4G8(HGG G),G58HHc                 :   g d}ddt         j                  g}g d}ddt         j                   g}t        j                  ||      }t        j                  ||      }t	        |j
                  |j
                         t	        |j                  |j                         y )Nr   r   g @)r   r+   r   r   rm  )r   rM   r9  r[  r   rQ   rR   )r"   r#   ro  r$   y2rS   r   s          r'   test_only_ranks_matterz"TestSomersD.test_only_ranks_matter  sr    #rvvwmmAq!}}R$S]]DNN3SZZ-r)   c                     t        j                  d      }t        j                  d      }t        j                  ||      }t	        |j
                  t        j                  d             y )Nr/   )r   r<   r9  r[  r   r   eyer"   r#   r$   rS   s       r'   test_contingency_table_returnz)TestSomersD.test_contingency_table_return  sB    IIbMIIbMmmAq!SYYr
+r)   c                 L   g d}g d}t        j                  ||d      }|j                  dkD  sJ t        j                  ||d      }t        |j                  |j                         t	        |j
                  d|j
                  dz  z
         t        j                  ||d	      }t        |j                  |j                         t	        |j
                  |j
                  dz         |j                          t        j                  ||d      }|j                  dk  sJ t        j                  ||d	      }t        |j                  |j                         t	        |j
                  d|j
                  dz  z
         t        j                  ||d      }t        |j                  |j                         t	        |j
                  |j
                  dz         t        j                  t        d
      5  t        j                  ||d       d d d        y # 1 sw Y   y xY w)Nr   )r-   r.   r0   r1   r0   r   r   r   r   r   r+   r   z`alternative` must be...r   	ekki-ekki)
r9  r[  rQ   r   r   rR   reverserC  r   rI   )r"   rn  ro  r   rS   s        r'   test_somersd_alternativez$TestSomersD.test_somersd_alternative  s     ==R[A!!A%%% mmB7S]]H$6$67

A1)<$=> mmB	:S]]H$6$67

HOOa$78 	

 ==R[A!!A%%% mmB	:S]]H$6$67

A1)<$=> mmB7S]]H$6$67

HOOa$78]]:-GH 	;MM"bk:	; 	; 	;s   8HH#positive_correlation)FTc                    t        j                  d      }|r|nt        j                  |      }|rdnd}t        j                  ||d      }|j
                  |k(  sJ |j                  dk(  sJ t        j                  ||d      }|j
                  |k(  sJ |j                  |rdndk(  sJ t        j                  ||d      }|j
                  |k(  sJ |j                  |rdndk(  sJ y )	Nr/   r   r   r   r   r   r   r   )r   r<   flipr9  r[  rQ   rR   )r"   r  rn  ro  expected_statisticrS   s         r'    test_somersd_perfect_correlationz,TestSomersD.test_somersd_perfect_correlation  s     YYr]'RRWWR["6QB mmB<}} 2222zzQ mmB7}} 2222zz#7aQ??? mmB	:}} 2222zz#7aQ???r)   c                     ddg}d}t        j                  d       t        j                  ||      }t        j                  ||      }d}t        j                  ||      j
                  }t        ||d       y )	Nr   r+   @B i_ )r   g Hz	Yr=  r3   )r:   r;   choicesr9  r[  rQ   r   )r"   classes	n_samplesr#   r$   val_sklearn	val_scipys          r'   !test_somersd_large_inputs_gh18132z-TestSomersD.test_somersd_large_inputs_gh18132  si     a&	GNN7i0NN7i0 , MM!Q'11	YU;r)   N)rV   rW   rX   r   r`  rh  rp  ru  r{  r  r  r  r  r  rC  rD  rE  r  r  rY   r)   r'   rS  rS    sl    7F
	>m7^.2?,1>!F	.,';R [[3]C@ D@0<r)   rS  c                      e Zd ZdZej
                  j                  d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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g      d         Zej
                  j                  d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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g      d+        Zd, Z	ej
                  j                  dddgddggd-fg      d.        Z
ej
                  j                  dddgddggd/ej                  ffddgddggd/ej                  ffg      d0        Zej
                  j                  dd	dgdd	ggd1fdd2gd3dggd4fd5d6gd7dggd8fg      ej
                  j                  d9d:d;g      d<               Zy=)>TestBarnardExactz8Some tests to show that barnard_exact() works correctly.input_sample,expected+   r   r/   '   )gXyq@g{2s&Q7?rt   r+   rh   r-   )gllgEA]0K?r0   r1   )*)1%g_  ?r   )g_c1?g= ?   rP   )g5PyQgQ@2?r   rb  )ggJ"?)g_c1gwݝل?r   r,   )g7@g      ?r   )g~t,?3O?r.   )gr?~CY7?c                 f    t        |      }|j                  |j                  }}t        ||g|       y)zThe expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-6 :
        ```R
        library(Barnard)
        options(digits=10)
        barnard.test(43, 40, 10, 39, dp=1e-6, pooled=TRUE)
        ```
        Nr   rQ   rR   r   r"   input_sampler   rS   rQ   rR   s         r'   test_precisezTestBarnardExact.test_precise  s.    2 L)MM3::6	F+X6r)   )g7\@gA2?)gXS;gh?)g>!Ɏg6  ?)gSy@?g^F?)g-gXI#?)gaЍgo?)gb]?gFugH	?)g6ҭ@g      ?)gi(	r  )gNXzr  c                 j    t        |d      }|j                  |j                  }}t        ||g|       y)zThe expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-6 :
        ```R
        library(Barnard)
        options(digits=10)
        barnard.test(43, 40, 10, 39, dp=1e-6, pooled=FALSE)
        ```
        F)pooledNr  r  s         r'   test_pooled_paramz"TestBarnardExact.test_pooled_param<  s0    2 L7MM3::6	F+X6r)   c                    d}t        t        |      5  t        ddgddggd       d d d        d	}t        t        |      5  t        t        j                  d
      j                  dd             d d d        d}t        t        |      5  t        ddgddgg       d d d        d}t        t        |      5  t        ddgddggd       d d d        y # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   PxY w# 1 sw Y   y xY w)N7Number of points `n` must be strictly positive, found 0r   r   r+   r   r,   r   r   ,The input `table` must be of shape \(2, 2\).r.   *All values in `table` must be nonnegative.r   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)rH   rI   r   r   r<   r  r"   	error_msgs     r'   test_raiseszTestBarnardExact.test_raisesY  s    F 	 :Y7 	1Aq6Aq6*a0	1 E	:Y7 	6"))A,..q!45	6 A	:Y7 	-B7QF+,	-
 	 :Y7 	;Aq6Aq6*M:	; 	;%	1 	1
	6 	6
	- 	-	; 	;/   C/C"C.:C:C"C+.C7:Drl  c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y Nr   r   r   rQ   rR   r   r  s         r'   test_edge_casesz TestBarnardExact.test_edge_casess  s;     L)MM3::6	VXa[)Y,r)   rx   c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y r  r  r  s         r'   test_row_or_col_zeroz%TestBarnardExact.test_row_or_col_zero  s;     L)MM3::6	VXa[)Y,r)   )r  gE\/??   ,  )ggQ5rk     r9   i  )g&X}>rk  r   r   r   c                     |\  }}|dk(  r"t        j                  |      dddddf   }| }t        ||      }|j                  |j                  }}t        ||g||gd       y)a  
        "The expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-6 :
        ```R
        library(Barnard)
        options(digits=10)
        a = barnard.test(2, 7, 8, 2, dp=1e-6, pooled=TRUE)
        a$p.value[1]
        ```
        In this test, we are using the "one-sided" return value `a$p.value[1]`
        to test our pvalue.
        r   Nr   r   Hz>r3   )r   r    r   rQ   rR   r   )	r"   r  r   r   expected_statless_pvalue_expectrS   rQ   rR   s	            r'   test_less_greaterz"TestBarnardExact.test_less_greater  sp    , -5)))#88L1!TrT':L*NMLkBMM3::6	-1C!D4	
r)   N)rV   rW   rX   __doc__rC  rD  rE  r  r  r  r  r   r  r  r  rY   r)   r'   r  r    su   B[[2hR!#CDAhq	"$EF!fq!f@A!fr2h!AB"gBx "CD"gBx "CD1gAw!BC!fq!f?@!fq!f@A!fq!f@A!fq!f@A	
 7! 7 [[2hR!#CDAhq	"$EF!fq!f@A!fr2h!AB"gBx "CD"gBx "CD1gAw!BC!fq!f?@!fq!f@A!fq!f@A!fq!f@A	
 7! 7;4 [[!fq!fx(	
-- [[!fq"gbff.!fr1gbff.	
-- [[!fq!f@A#ha!#:;2hq	"$;<	
 [[]Y,?@
 A
r)   r  c                      e Zd ZdZdZej                  j                  d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dfd
dgddggdfg	      d        Zej                  j                  d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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g      d)        Z	ej                  j                  d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d0fg      d1        Z
d2 Zej                  j                  dddgdd
ggej                  ej                  ffddgd
dggej                  ej                  ffg      d3        Zd4 Zej                  j                  d5d6      d7        Zy8)9TestBoschlooExactz9Some tests to show that boschloo_exact() works correctly.r  r  r+   r0   r1   )<vB\?g/??r-   r   r/   )gM?gA>?r   rP   rb  )_VѶ?g֭?)u %?gc'?r   r,   r   r   r   )r`   g      ?r{   )+f?gXc}v?   %   )gZыD?ggi]?c                     t        |d      }|j                  |j                  }}t        ||g|| j                         y)a  The expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-8 :
        ```R
        library(Exact)
        options(digits=10)
        data <- matrix(c(43, 10, 40, 39), 2, 2, byrow=TRUE)
        a = exact.test(data, method="Boschloo", alternative="less",
                       tsmethod="central", np.interval=TRUE, beta=1e-8)
        ```
        r   r   r3   Nr   rQ   rR   r   ATOLr  s         r'   	test_lesszTestBoschlooExact.test_less  s6    2 \v>MM3::6	F+XDIIFr)   r  r   r  )k\2?g0,%?)gKv?gN3?)r  g'&5?r  )gw@_?g7?)gi{?gɑ)z?)օa?g1|?r.   )gY<;?gND?)ge?gG`?c                     t        |d      }|j                  |j                  }}t        ||g|| j                         y)a  The expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-8 :
        ```R
        library(Exact)
        options(digits=10)
        data <- matrix(c(43, 10, 40, 39), 2, 2, byrow=TRUE)
        a = exact.test(data, method="Boschloo", alternative="greater",
                       tsmethod="central", np.interval=TRUE, beta=1e-8)
        ```
        r   r   r3   Nr  r  s         r'   test_greaterzTestBoschlooExact.test_greater  s6    6 \yAMM3::6	F+XDIIFr)   )r  gqQS,5?)r  gG?/??)r  gKE`?)r  ghr1ֽ?)r  grfb?)r`   g      ?)r  gP:pRv?c                     t        |dd      }|j                  |j                  }}t        ||g|| j                         y)a  The expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-8 :
        ```R
        library(Exact)
        options(digits=10)
        data <- matrix(c(43, 10, 40, 39), 2, 2, byrow=TRUE)
        a = exact.test(data, method="Boschloo", alternative="two.sided",
                       tsmethod="central", np.interval=TRUE, beta=1e-8)
        ```
        r   @   )r   r   r3   Nr  r  s         r'   test_two_sidedz TestBoschlooExact.test_two_sided  s8    0 \{bIMM3::6	F+XDIIFr)   c                    d}t        t        |      5  t        ddgddggd       d d d        d	}t        t        |      5  t        t        j                  d
      j                  dd             d d d        d}t        t        |      5  t        ddgddgg       d d d        d}t        t        |      5  t        ddgddggd       d d d        y # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   PxY w# 1 sw Y   y xY w)Nr  r   r   r+   r   r,   r   r  r  r.   r  r   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r  )rH   rI   r   r   r<   r  r  s     r'   r  zTestBoschlooExact.test_raises  s    F 	 :Y7 	2QFQF+q1	2 E	:Y7 	7299Q<//156	7 A	:Y7 	.RGaV,-	.
% 	 :Y7 	<QFQF+];	< 	<%	2 	2
	7 	7
	. 	.	< 	<r  c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y r  )r   rQ   rR   r   r  s         r'   r  z&TestBoschlooExact.test_row_or_col_zero'  s;     \*MM3::6	VXa[)Y,r)   c                     ddgddgg}t        |d      j                  }t        |d      j                  }dt        ||      z  dkD  sJ t        |d      j                  }|d	k(  sJ y )
Nr   r   r{   r   r   r   r+   r   rx   )r   rR   min)r"   tblplpgpts        r'   test_two_sided_gt_1z%TestBoschlooExact.test_two_sided_gt_14  sp     1vBx CV4;;CY7>>R}q   C[9@@Syyr)   r   )r   r   c                     ddgddgg}t        ||      j                  }t        j                  ||      d   }t	        ||       y )Nr+   r0   r1   r   r   )r   rQ   r9  fisher_exactr   )r"   r   r  boschloo_statfisher_ps        r'   test_against_fisher_exactz+TestBoschlooExact.test_against_fisher_exact>  sI     1v1v&sDNN%%c{CAFx0r)   N)rV   rW   rX   r  r  rC  rD  rE  r  r  r  r  r   r  r  r  r  rY   r)   r'   r  r    s   CD[[!fq!f89!fr2h!78"gBx ":;1gAw!89!fq!fv&!fq!f~.!fq!f89"g1v 892hR!#9:
	
GG [[2hR!#?@!fq!f56!fr2h!89"gBx "89"gBx "78!fq!f89!fq!fv&!fq!fv&!fq!f56"g1v 672hR!#9:	
 G! G [[2hR!#?@!fq!f78!fr2h!78"gBx "89!fq!f78!fq!f}-!fq!f78"g1v 89		
GG <4 [[!fq"g 01!fr1g 01	
-- [[],?@1 A1r)   r  c                   ~    e Zd Zd Zd Zd Zej                  j                  dg d      d        Z	d Z
d Zd	 Zd
 Zy)TestCvm_2sampc                    t        j                  d      }d}t        j                  t        |      5  t        g |       d d d        t        j                  t        |      5  t        |dg       d d d        d}t        j                  t        |      5  t        ||d       d d d        y # 1 sw Y   nxY w# 1 sw Y   IxY w# 1 sw Y   y xY w)Nr-   z/x and y must contain at least two observations.r   r   z/method must be either auto, exact or asymptoticxyz)r   r<   rC  r   rI   r   )r"   r$   msgs      r'   r   z TestCvm_2samp.test_invalid_inputI  s    IIaL?]]:S1 	( Q'	(]]:S1 	) QC(	)?]]:S1 	. Au-	. 	.	( 	(	) 	)	. 	.s#   B-#B9C-B69CCc                     g d}g d}t        ||      }t        t        j                  |      t        j                  |            }t        |j                  |j
                  f|j                  |j
                  f       y )N)r+   r   r,   r0   r.   )r   r   r{   rd  )r   r   r    r   rQ   rR   r"   r#   r$   r   r   s        r'   test_list_inputzTestCvm_2samp.test_list_inputT  sX    !!Q'!"((1+rxx{;bllBII.ryy0IJr)   c                     g d}g d}t        ||      }t        |j                  dd       t        |j                  dd       y )N)	gffffff@g @r   gffffff!@皙"@g#@g333333$@g333333%@gffffff&@)g@g@g@      @333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?r2   r3   g
ףp=
?r^   )r   r   rQ   rR   r"   r#   r$   rs       r'   test_example_conoverz"TestCvm_2samp.test_example_conover[  s<     = A&U6$T2r)   zstatistic, m, n, pval))i  r-   r.   gcj`?)ii  r0   r0   gtE]t?)i@  r,   r.   g88?)i  r.   r0   gXwS?c                 2    t        t        |||      |       y r   )r   r   )r"   rQ   r   r   pvals        r'   test_exact_pvaluezTestCvm_2samp.test_exact_pvaluee  s     	*9a;TBr)   c                    t         j                  j                  d       t        j                  j                  d      }t        j                  j                  d      }t        ||      }t        d|j                  cxk  xr dk  nc        t        ||dz         }t        d|j                  cxk  xr
 dk         y c        y )Ni  r  r4  i r   r   r   )	r   r:   r;   r	   r}   r  r   r   rR   r  s       r'   test_large_samplezTestCvm_2samp.test_large_samplep  s     			t"""0"""/ A&AHH q ! AcE*AHH q ! !r)   c                 z   t         j                  j                  d       t         j                  j                  d      }t         j                  j                  d      }t	        ||d      }t	        ||d      }t        |j                  |j                         t        |j                  |j                  d       y )	Nr   r0   r1   r   r   r   r^   r3   )	r   r:   r;   r   r   r   rQ   r   rR   r  s        r'   test_exact_vs_asymptoticz&TestCvm_2samp.test_exact_vs_asymptotic{  sx    
		qIINN1IINN1!!Qw7!!Q|<R\\2<<0		29948r)   c                 P   t        j                  d      }g d}t        ||d      }t        ||d      }t        |j                  |j                         t        j                  d      }t        ||d      }t        ||d      }t        |j                  |j                         y )NrP   )r`   g@g333333*@r   r   r   r  r   )r   r<   r   r   rR   r  s        r'   test_method_autozTestCvm_2samp.test_method_auto  s}    IIbM!!Qw7!!Qv6RYY		*IIbM!!Q|<!!Qv6RYY		*r)   c                     t        j                  d      }t        ||      }t        |j                  |j
                  fd       t        |d d |d d       }t        |j                  |j
                  fd       y )Nr  rj  r,   )r   r<   r   r   rQ   rR   )r"   r#   rS   s      r'   test_same_inputzTestCvm_2samp.test_same_input  sc     IIbM"1a(cmmSZZ0*="1Ra5!BQ%0cmmSZZ0*=r)   N)rV   rW   rX   r   r  r  rC  rD  rE  r  r  r
  r  r  rY   r)   r'   r  r  H  sS    	.K3 [[456
C6
C	"9
+	>r)   r  c                      e Zd Zg dg dg dfZg dg dg dfZg dg dg dfZdZdZd	Ze	j                  j                  d
eedfeedfeedffg d      d        ZdZdZe	j                  j                  d
eedfeedffddg      d        Zd Zd Zd Zd Zd Zd Ze	j                  j                  dd      d        Ze	j                  j                  d g d!      d"        Zd# Zy$)%TestTukeyHSD)r       7@ffffff:@皙;@fffff=@)ffffff<@皙A@     =@皙@@皙>@)g:@gL<@gL8@g333333:@g;@)r  r  gHzG:@r  r  r  r  r  )r  r  r  )
r  r  r  r  r  r  r  r  r  r  aK  
    Comparison LowerCL Difference UpperCL Significance
    2 - 3	0.6908830568	4.34	7.989116943	    1
    2 - 1	0.9508830568	4.6 	8.249116943 	1
    3 - 2	-7.989116943	-4.34	-0.6908830568	1
    3 - 1	-3.389116943	0.26	3.909116943	    0
    1 - 2	-8.249116943	-4.6	-0.9508830568	1
    1 - 3	-3.909116943	-0.26	3.389116943	    0
    aS  
    Comparison LowerCL Difference UpperCL Significance
    2 - 1	0.2679292645	3.645	7.022070736	    1
    2 - 3	0.5934764007	4.34	8.086523599	    1
    1 - 2	-7.022070736	-3.645	-0.2679292645	1
    1 - 3	-2.682070736	0.695	4.072070736	    0
    3 - 2	-8.086523599	-4.34	-0.5934764007	1
    3 - 1	-4.072070736	-0.695	2.682070736	    0
    aS  
    Comparison LowerCL Difference UpperCL Significance
    2 - 3	1.561605075	    4.34	7.118394925	    1
    2 - 1	2.740784879	    6.08	9.419215121	    1
    3 - 2	-7.118394925	-4.34	-1.561605075	1
    3 - 1	-1.964526566	1.74	5.444526566	    0
    1 - 2	-9.419215121	-6.08	-2.740784879	1
    1 - 3	-5.444526566	-1.74	1.964526566	    0
    zdata,res_expect_str,atolra   g|=)equal size samplezunequal sample sizezextreme sample size differences)idsc                 "   t        j                  |j                  dd      j                         dd t              j                  d      }t        j                  | }|j                         }|D ]  \  }}}	}
}}t        |      dz
  t        |      dz
  }}t        |j                  ||f   |	|       t        |j                  ||f   |
|       t        |j                  ||f   ||       t        |j                  ||f   d	k  |dk(          y)
a  
        SAS code used to generate results for each sample:
        DATA ACHE;
        INPUT BRAND RELIEF;
        CARDS;
        1 24.5
        ...
        3 27.8
        ;
        ods graphics on;   ODS RTF;ODS LISTING CLOSE;
           PROC ANOVA DATA=ACHE;
           CLASS BRAND;
           MODEL RELIEF=BRAND;
           MEANS BRAND/TUKEY CLDIFF;
           TITLE 'COMPARE RELIEF ACROSS MEDICINES  - ANOVA EXAMPLE';
           ods output  CLDiffs =tc;
        proc print data=tc;
            format LowerCL 17.16 UpperCL 17.16 Difference 17.16;
            title "Output with many digits";
        RUN;
        QUIT;
        ODS RTF close;
        ODS LISTING;
         -  r-   Ndtype)r.   r.   r   r3   r_   r   asarrayreplacesplitfloatr  r9  	tukey_hsdconfidence_intervalintr   lowrQ   highrR   )r"   datares_expect_strr4   
res_expect	res_tukeyconfr  jlr  hsigs                r'   test_compare_saszTestTukeyHSD.test_compare_sas  s   B ZZ 6 6uc B H H J12 N&+--4WV_ 	OOT*	,,.", 	GAq!Q3q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:Y--ad3s:SAXF	Gr)   z
        1	2	-8.2491590248597	-4.6	-0.9508409751403	0.0144483269098
        1	3	-3.9091590248597	-0.26	3.3891590248597	0.9803107240900
        2	3	0.6908409751403	4.34	7.9891590248597	0.0203311368795
        z
        1	2	-7.02207069748501	-3.645	-0.26792930251500 0.03371498443080
        1	3	-2.68207069748500	0.695	4.07207069748500 0.85572267328807
        2	3	0.59347644287720	4.34	8.08652355712281 0.02259047020620
        r   r  r  zunequal size samplec                    t        j                  |j                         t              j	                  d      }t        j                  | }|j                         }|D ]  \  }}}	}
}}t        |      dz
  t        |      dz
  }}t        |j                  ||f   |	|       t        |j                  ||f   |
|       t        |j                  ||f   ||       t        |j                  ||f   ||        y)an  
        vals = [24.5, 23.5,  26.4, 27.1, 29.9, 28.4, 34.2, 29.5, 32.2, 30.1,
         26.1, 28.3, 24.3, 26.2, 27.8]
        names = {'zero', 'zero', 'zero', 'zero', 'zero', 'one', 'one', 'one',
         'one', 'one', 'two', 'two', 'two', 'two', 'two'}
        [p,t,stats] = anova1(vals,names,"off");
        [c,m,h,nms] = multcompare(stats, "CType","hsd");
        r  r   r.   r   r3   N)r   r"  r$  r%  r  r9  r&  r'  r(  r   r)  rQ   r*  rR   )r"   r+  r,  r4   r-  r.  r/  r  r0  r1  r  r2  r&   s                r'   test_compare_matlabz TestTukeyHSD.test_compare_matlab   s     ZZ 4 4 6&+--4WV_ 	OOT*	,,. * 	BAq!Q1q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:I,,QT2ADA	Br)   c                 4   d}t        j                  |j                  dd      j                         dd t              j                  d      }g dg d	g d
f}t        j                  | }|j                         }|D ]  \  }}}}	}
}t        |      dz
  t        |      dz
  }}t        |j                  ||f   |	d       t        |j                  ||f   |d       t        |j                  ||f   |
d       t        |j                  ||f   |d        y)a+  
        Testing against results and p-values from R:
        from: https://www.rdocumentation.org/packages/stats/versions/3.6.2/
        topics/TukeyHSD
        > require(graphics)
        > summary(fm1 <- aov(breaks ~ tension, data = warpbreaks))
        > TukeyHSD(fm1, "tension", ordered = TRUE)
        > plot(TukeyHSD(fm1, "tension"))
        Tukey multiple comparisons of means
        95% family-wise confidence level
        factor levels have been ordered
        Fit: aov(formula = breaks ~ tension, data = warpbreaks)
        $tension
        z
                diff        lwr      upr     p adj
        2 - 3  4.722222 -4.8376022 14.28205 0.4630831
        1 - 3 14.722222  5.1623978 24.28205 0.0014315
        1 - 2 10.000000  0.4401756 19.55982 0.0384598
        r  r  r-   Nr  r6  )   r8   6   rb  F   4   3   r9  C   rq   rc        r?     )   rP   ,   )rd  r  r?  re  r{   rd  r$  r8   $   *   r9  r@  r   r  r9   r  r  r?  )rD  r  r  rd  r/   r  r9   r  r9  rP   r  r  re  r   r  r  r   r9   r   r  r3   r   gh㈵>r!  )r"   str_resr-  r+  r.  r/  r  r0  r  r1  r2  r&   s               r'   test_compare_rzTestTukeyHSD.test_compare_r  s    ZZs ; A A CAB G&+--4WV_ 	555	6 OOT*	,,. * 	BAq!Q1q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:I,,QT2ADA	Br)   c                    g d}g d}g d}g d}t        j                  ||||      }|j                         }t        j                  g dg dg dg dg      }t        j                  g d	g d
g dg dg      }dD ]I  \  }	}
t        |j                  |	|
f   ||	|
f   d       t        |j                  |	|
f   ||	|
f   d       K y)zp
        Example sourced from:
        https://www.itl.nist.gov/div898/handbook/prc/section4/prc471.htm
        )皙@g@333333@gffffff@g      @)g @r   g333333@gffffff"@r  )g       @g      %@g333333 @rI  r  )rJ  gffffff@gffffff@gffffff@g@)r   r   r   g      )g(\?r   gq=
ףpgp=
ף?)gGz?r   r   g
ףp=
?)r   r   r   r   )r   r   r   gzG?)gzG@r   g      ?g=
ףp=@)g=
ףp=@r   r   g@)r   r   )r+   r   )r   r   r  rr  r^   r3   N)r9  r&  r'  r   r"  r   r)  r*  )r"   group1group2group3group4rS   r/  lowerupperr  r0  s              r'   test_engineering_stat_handbookz+TestTukeyHSD.test_engineering_stat_handbookC  s    
 +*+*ooffff=&&(

 	 
 

!	  ? 	EFQDHHQTNE!Q$KdCDIIadOU1a4[tD	Er)   c                 B   t         j                  j                  d       t         j                  j                  dd      }t	        j
                  | }|j                         }t        |j                  |j                  j                          t        t        j                  |j                        |j                  d          t        t        j                  |j                        |j                  d          t        |j                  |j                  j                          t        t        j                  |j                        d       t        |j                  |j                  j                         t        t        j                  |j                        d       y )Nr7   r   rt   r   r   r   r   )r   r:   r;   r   r9  r&  r'  r   r)  r*  rx  diagonalrQ   rR   )r"   r+  rS   r/  s       r'   test_rand_symmzTestTukeyHSD.test_rand_symm]  s    
		tyy~~a%oot$&&(TXX		|, 	R[[+TYYt_=R[[*DHHTN;S]]S]]__$45R[[/3SZZ.R[[,a0r)   c                     t        t        d      5  t        j                  g ddt        j
                  gg d       d d d        y # 1 sw Y   y xY w)Nz...must be finite.r   r   r+   )r.   r0   r   )rH   rI   r9  r&  r   rM   rc   s    r'   test_no_infzTestTukeyHSD.test_no_infp  s:    :-AB 	?OOI266{I>	? 	? 	?s   ,AAc                     t        t        d      5  t        j                  ddgddggddgg d       d d d        y # 1 sw Y   y xY w)Nz...must be one-dimensionalr   r   r+   r   r-   )r-   r   r.   rH   rI   r9  r&  rc   s    r'   
test_is_1dzTestTukeyHSD.test_is_1dt  sG    :-IJ 	BOOaVaV,q!fjA	B 	B 	Bs	   "=Ac                     t        t        d      5  t        j                  g ddgg d       d d d        y # 1 sw Y   y xY w)Nz...must be greater than oner   r+   r-   )r,   r-   r.   rZ  rc   s    r'   test_no_emptyzTestTukeyHSD.test_no_emptyx  s6    :-JK 	3OOBA	2	3 	3 	3s	   7A nargsr  c                     t        t        d      5  t        j                  g dg|z    d d d        y # 1 sw Y   y xY w)Nz...more than 1 treatment.r   r   r0   r   rZ  )r"   r^  s     r'   test_not_enough_treatmentsz'TestTukeyHSD.test_not_enough_treatments|  s5    :-HI 	5OOzlU24	5 	5 	5s   4=cl)rm  r   r   r+   c                     t        t        d      5  t        j                  g dddgddg      }|j	                  |       d d d        y # 1 sw Y   y xY w)Nzmust be between 0 and 1r   r`  r   r,   r   )rH   rI   r9  r&  r'  )r"   rb  r  s      r'   test_conf_level_invalidz$TestTukeyHSD.test_conf_level_invalid  sJ    :-FG 	&
QFQF;A!!"%	& 	& 	&s   /A

Ac                    t        j                  | j                  d d  }t        j                  | j                  d d  }t	        |j
                  |j
                  d          t	        |j
                  |j
                  d          y )Nr+   r  rK  )r9  r&  data_diff_size	ttest_indr   rR   )r"   r.  	res_ttests      r'   test_2_args_ttestzTestTukeyHSD.test_2_args_ttest  sn    OOT%8%8!%<=	OOT%8%8!%<=		(()*:*:4*@A	(()*:*:4*@Ar)   N)rV   rW   rX   data_same_sizerf  extreme_sizesas_same_sizesas_diff_sizesas_extremerC  rD  rE  r4  matlab_sm_sizmatlab_diff_szr7  rG  rR  rV  rX  r[  r]  ra  rd  ri  rY   r)   r'   r  r    sy   4446N H446N '24L
MMK [[7-}dC-}dC+[%@ "E  F#GF#GJMN [[7-}eD-~tDF"5"7"9  :
B:
B*'BRE41&?B3 [[Wf-5 .5 [[T>2& 3&
Br)   r  c                       e Zd Zej                  j                  dg dg df      d        Zej                  j                  dg dg dg dg d	g d
g dg dg df      d        Zd Zd Z	d Z
y)TestPoissonMeansTestzc1, n1, c2, n2, p_expect)r   rt   r   rt   gea?)r+   rt   r.   rt   g	c?c                 d    t        j                  ||||      }t        |j                  |d       y )Nra   r3   r9  poisson_means_testr   rR   )r"   c1n1c2n2p_expectrS   s          r'   test_paper_examplesz(TestPoissonMeansTest.test_paper_examples  s*     &&r2r26

H48r)   z c1, n1, c2, n2, p_expect, alt, d)rP   r/   rP   r/   g{}?r   r   )r/   r/   r/   r/   goPF?r   r   )2   r  r   r   gae?r   r_   )r   rt   rP   r  g/V-=?r   r   )r   r{   r,   rP   g")?r   r   )r,   rP   r   rt   g_'Qm~?r   r   )r,   rP   r   r/   g|?r   r   )r   r   r|  r  g0ݷ?r   r   c                 l    t        j                  ||||||      }t        |j                  |dd       y )N)r   diffg>gؗҜ<r4   r0  rt  )	r"   rv  rw  rx  ry  rz  altdrS   s	            r'   test_fortran_authorsz)TestPoissonMeansTest.test_fortran_authors  s0    $ &&r2r23QO

H4eDr)   c                 t    d\  }}d\  }}t        j                  ||||      }t        |j                  d       y )N)ru   ru   r   rt  r"   count1count2nobs1nobs2rS   s         r'   test_different_resultsz+TestPoissonMeansTest.test_different_results  s:     &#u&&vufeD

A&r)   c                 t    d\  }}d\  }}t        j                  ||||      }t        |j                  d       y )NrT  r  r   rt  r  s         r'   test_less_than_zero_lambda_hat2z4TestPoissonMeansTest.test_less_than_zero_lambda_hat2  s:     u&&vufeD

A&r)   c                    d\  }}d\  }}d}t        t        |      5  t        j                  d|||       d d d        t        t        |      5  t        j                  ||d|       d d d        d}t        t        |      5  t        j                  d|||       d d d        t        t        |      5  t        j                  ||d|       d d d        d}t        t        |      5  t        j                  |d||       d d d        t        t        |      5  t        j                  |||d       d d d        d	}t        t        |      5  t        j                  ||||d
       d d d        d}t        t        |      5  t        j                  ddddd       d d d        y # 1 sw Y   uxY w# 1 sw Y   PxY w# 1 sw Y   )xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrT  r  z`k1` and `k2` must be integers.r   r   z1`k1` and `k2` must be greater than or equal to 0.r   z%`n1` and `n2` must be greater than 0.z(diff must be greater than or equal to 0.)r~  zAlternative must be one of ...r   r+   errorr   )rH   	TypeErrorr9  ru  rI   )r"   r  r  r  r  r  s         r'   r   z*TestPoissonMeansTest.test_input_validation  s   u 49G4 	?$$R>	?9G4 	?$$VUB>	? F:W5 	?$$R>	?:W5 	?$$VUB>	? ::W5 	@$$VR?	@:W5 	@$$VUFB?	@ =:W5 	L$$VUFEK	L 3:W5 	F$$Q1aWE	F 	F5	? 	?	? 	?
	? 	?	? 	?
	@ 	@	@ 	@
	L 	L
	F 	Fs_   F*F7G6G*GG*G6H*F47GGGG'*G36G?HN)rV   rW   rX   rC  rD  rE  r{  r  r  r  r   rY   r)   r'   rr  rr    s    [[7  : 
9
9 [[?
 	=<=>9; 	66B "E#"E''!Fr)   rr  c                       e Zd Zd Zd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Z	d Z
d	 Zy
)TestBWSTestc                 l   t         j                  j                  d      }|j                  d      \  }}d}t        j                  t
        |      5  t        j                  ||g||g       d d d        d}t        j                  t
        |      5  t        j                  t         j                  g|       d d d        d}t        j                  t
        |      5  t        j                  |g        d d d        d}t        j                  t
        |      5  t        j                  ||d	
       d d d        d}t        j                  t
        |      5  t        j                  ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   y xY w)N   <ovT{ r+   r0   r4  z,`x` and `y` must be exactly one-dimensional.r   z"`x` and `y` must not contain NaNs.z$`x` and `y` must be of nonzero size.zalternative` must be one of...r  r   z!method` must be an instance of...rE  r   )	r   r:   r7  rC  r   rI   r9  bws_testr  )r"   r:  r#   r$   r  s        r'   test_bws_input_validationz%TestBWSTest.test_bws_input_validation  sX   ii##$78zzvz&1@]]:W5 	+NNAq6Aq6*	+ 7]]:W5 	(NNBFF8Q'	( 9]]:W5 	"NN1b!	" 3]]:W5 	:NN1a[9	: 6]]:W5 	,NN1a+	, 	,!	+ 	+	( 	(	" 	"	: 	:	, 	,s<   E9&FFFF*9FFFF'*F3c                     g d}g d}t        j                  ||d      }t        |j                  dd       t	        |j
                  d       y )	N)r   r+   r   r,   r.   r0   r1   )r-   r   r/   r   r{   r   rc  r   r   gI+@r2   r3   gf$/g?)r9  r  r   rQ   r   rR   r  s       r'    test_against_published_referencez,TestBWSTest.test_against_published_reference  s>     "&nnQ{;u48SZZ)r)   )r   rQ   rR   ))r   g
-?g4B/?)r   
-g0&v?)r   r  g(?c                     t         j                  j                  d      }|j                  d      \  }}t        j                  |||      }t        |j                  |d       t        |j                  |dd	       y )
Nr  r  r4  r   vIh%<=r/  r^   r   r  r   r:   r7  r9  r  r   rQ   rR   r"   r   rQ   rR   r:  r#   r$   rS   s           r'   test_against_RzTestBWSTest.test_against_R	  sa     ii##$78zzvz&1nnQ{;yu=

FDAr)   ))r   gD5H?gdԕ?)r   `ч?gȲךX?)r   r  g4)?c                    t         j                  j                  d      }|j                  d      }|j                  d      }t        j                  |||      }t        |j                  |d       t        |j                  |dd	
       y )Nl   .sZ r   r4  r1   r   r  r/  r^   r   r  r  r  s           r'   test_against_R_imbalancedz%TestBWSTest.test_against_R_imbalanced  sm     ii##$78JJAJJJAJnnQ{;yu=

FDAr)   c                    t         j                  j                  d      }|j                  d      \  }}t         j                  j                  d      }t        j                  d|      }t        j
                  |||      }t        |j                        dk(  sJ t         j                  j                  d      }t        j                  d|      }t        j
                  |||      }t        |j                  |j                         t         j                  j                  d      }t        j                  d|      }t        j
                  |||      }t        j                  |j                  |j                        rJ y )N   /HN( )r+   r/   r4  r/   )n_resamplesrandom_stater   l   VC	A )
r   r:   r7  r9  r>  r  r   null_distributionr   allclose)r"   r:  r#   r$   r   r   r   r  s           r'   test_methodzTestBWSTest.test_method,  s(   ii##$78zzwz'1ii##$78((RcJ~~a624))*b000ii##$78((RcJ~~a62..0F0FGii##$78((RcJ~~a62;;t55t7M7MNNNNr)   c                    t         j                  j                  d      }|j                  d      }|dz
  }t        j                  ||d      }|j
                  dkD  sJ t        |j                  dt        |j                        z         t        j                  ||d      }|j
                  dkD  sJ t        |j                  d       t        j                  ||d      }|j
                  dk  sJ t        |j                  dt        |j                        z         t        j                  ||d      }|j
                  dk  sJ t        |j                  d       y )	Nr  r-   r4  r   r   r   r   r   )
r   r:   r7  r9  r  rQ   r   rR   r   r  )r"   r:  r#   r$   rS   s        r'   test_directionszTestBWSTest.test_directionsC  s   ii##$78JJAJEnnQy9}}q   SZZS)>)>%?!?@nnQv6}}q   SZZ#nnQv6}}q   SZZS)>)>%?!?@nnQy9}}q   SZZ#r)   N)rV   rW   rX   r  r  rC  rD  rE  r  r  r  r  rY   r)   r'   r  r    sw    ,4* [[CNOB	OB [[CNOB	OBO.$r)   r  ).	itertoolsr   numpyr   r:   rY  rC  numpy.testingr   r   r   r   r   rH   scipy.statsr9  r	   scipy.stats._hypotestsr
   r   r   r   r   r   r   scipy.stats._mannwhitneyur   r   common_testsr   scipy._lib._testutilsr   r   r[   r   rL  rD  xslowrQ  rS  r  r  r  r  rr  r  rY   r)   r'   <module>r     s        0 0 *  %4 4 4 ? - 21- 1-hWK WKtf% f%R%!1 % / /2j<" j<ZP
 P
fV1 V1rQ> Q>hpB pBfQF QFht$ t$r)   