
    (phj8                       S SK Jr  S SKrS SKrS SKrS SKrS SKJrJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJr  S SKJrJrJr  SS	KJr  S S
KJ r   S SK!J"r"J#r#   " S S5      r$ " S S5      r% " S S5      r& " S S\ 5      r' " S S5      r( " S S5      r) " S S5      r* " S S5      r+ " S S5      r, " S S5      r-g)     )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_MWU   )check_named_results)_TestPythranFunc)SmallSampleWarningtoo_small_1d_not_omitc                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestEppsSingleton   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      u  p4[        USSS9  [        USSS9  g )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        S/var/www/html/venv/lib/python3.13/site-packages/scipy/stats/tests/test_hypotests.pytest_statistic_1"TestEppsSingleton.test_statistic_1   sN    
 HH 7 8HH 4 5#A)Aua0Aw2    c                     [         R                  " S5      n[         R                  " S5      n[        X5      u  p4[        USSS9  [	        USSS9  g )	N)r   r      r0   r0   r0   r"   r"   r"   r"         r2   r2   r2      
   r4   r4   r4   )r4   r1   r   r2   r4   r4   r   r2   r3      r4   r"   r   r5   r      r   r2   r6   r4   g!@MbP?atolg&J?r"   r    )r#   r$   r
   r   r   r%   s        r+   test_statistic_2"TestEppsSingleton.test_statistic_2%   sL    HH " #HH   !#A)5u-Aw2r.   c                    [         R                  R                  S5        [         R                  " S5      [         R                  " S5      p![	        [        U5      [        U5      5      u  p4[	        [        U5      [        U5      5      u  pV[	        X5      u  px[        X5s=:H  =(       a    U:H  Os  5        [        XFs=:H  =(       a
    U:H  5        g s  5        g )N        )r#   randomseedaranger
   listtupler   )	r&   r'   r(   w1p1w2p2w3p3s	            r+   test_epps_singleton_array_like0TestEppsSingleton.test_epps_singleton_array_like/   s    
		tyy}biim1%d1gtAw7%eAha9%a+BBr.   c                 F   S[         R                  " S5      p![        R                  " [        [
        S9   [        X5      n[        UR                  [         R                  5        [        UR                  [         R                  5        S S S 5        g ! , (       d  f       g = f)Nr   r0   r"   r1   r4   match)r#   rB   pytestwarnsr   r   r
   r   	statisticnanpvaluer&   r'   r(   ress       r+   test_epps_singleton_size*TestEppsSingleton.test_epps_singleton_size:   s\    RYYr]1\\,4IJ&q,C/RVV, KJJs   AB
B c                     SSSSS[         R                  4[         R                  " S5      p![        [        [
        X5        g )Nr   r0   r"   r1   r2   r4   )r#   infrB   assert_raises
ValueErrorr
   r&   r'   r(   s      r+   test_epps_singleton_nonfinite/TestEppsSingleton.test_epps_singleton_nonfiniteB   s/    1aArvv&		"1j"6=r.   c                     [         R                  " S5      [         R                  " S5      p![        X5      nSn[        X45        g )N   r>   )rS   rU   )r#   rB   r
   r   )r&   r'   r(   rW   
attributess        r+   
test_namesTestEppsSingleton.test_namesG   s0    yy}biim1"1(,
C,r.    N)__name__
__module____qualname____firstlineno__r,   r:   rK   rX   r_   rd   __static_attributes__rf   r.   r+   r   r      s     33	 ->
-r.   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
SS//5      S 5       rS rS rSrg)TestCvmN   c                 6    [        [        / SQS5      / SQSS9  g )N)gy;i?g#^?gE>?gD
)?r1   {Gz?皙?      ?g+?-C6?r8   r   r   r&   s    r+   
test_cdf_4TestCvm.test_cdf_4R   s    =qA(	r.   c                 6    [        [        / SQS5      / SQSS9  g )N)g8*5?g@߾?gHm?g%1 ?r4   )rq   rr   rs   g333333?rt   r8   ru   rv   s    r+   test_cdf_10TestCvm.test_cdf_10X   s    =rB(	r.   c                 6    [        [        / SQS5      / SQSS9  g )N)g}tg?g`?gI5o?gׁsF?  rp   rt   r8   ru   rv   s    r+   test_cdf_1000TestCvm.test_cdf_1000^   s    =tD(	r.   c                 4    [        [        / SQ5      / SQSS9  g )N)a+e?+?&pn?+MJA?rp   rt   r8   ru   rv   s    r+   test_cdf_infTestCvm.test_cdf_infd   s    =>(	r.   c                 l    [        [        SS/S5      SS/5        [        [        SS/S5      SS/5        g )	NgX(~$?gUUUUU5f@i  r   r   gaah?g"@   )r   r   rv   s    r+   test_cdf_supportTestCvm.test_cdf_supportj   s6    Xz5137!Q@X
;R@1a&Ir.   c                 H    [        [        / SQS5      [        / SQ5      SS9  g )N)r   r   r   r   d   '  rt   r8   ru   rv   s    r+   test_cdf_large_nTestCvm.test_cdf_large_no   s!    BEJBC	r.   c                     [        S[        SS5      s=:  =(       a    S:  Os  5        [        S[        S5      s=:  =(       a
    S:  5        g s  5        g )NgwJ?gt@r}         ?)r   r   rv   s    r+   test_large_xTestCvm.test_large_xv   s?     	(5$/55#56(5///C/0/0r.   c                     Sn[        [        R                  " U5      S-  S5      n[        [	        UR
                  U5      S:  5        [        UR                  S5        g )N   皙?normr   r   )r   r#   onesr   r   rS   r   rU   )r&   nrW   s      r+   
test_low_pTestCvm.test_low_p   sG     RWWQZ^V4*S01SZZ#r.   r'   rf         ?c                    [         R                  " [        [        S9   [	        US5      n[        UR                  [        R                  5        [        UR                  [        R                  5        S S S 5        g ! , (       d  f       g = f)NrO   r   )
rQ   rR   r   r   r   r   rS   r#   rT   rU   r&   r'   rW   s      r+   test_invalid_inputTestCvm.test_invalid_input   sO    \\,4IJ F+C/RVV, KJJs   AA<<
B
c                 V   [        / SQS5      n[        UR                  SSS9  [        UR                  SSS9  [        / SQSS5      n[        UR                  SSS9  [        UR                  S	SS9  [        / S
QS5      n[        UR                  SSS9  [        UR                  SSS9  g )N)g333333r0   r   g?r1   皙?333333?r   gZ	%q?ư>r8   gEж?)r"   r   g!O!W*?gz"W`?)	r   r0   r2   ffffff?gQ?      ?      @exponge.?gnz\(r?)r   r   rS   rU   )r&   rW   s     r+   test_values_RTestCvm.test_values_R   s     ;VDxd;

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

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

Kd;r.   c                    [         R                  " S5      Sp![        U[        R                  R
                  5      n[        US5      n[        UR                  UR                  4UR                  UR                  45        [        U[        R                  R
                  U5      n[        USU5      n[        UR                  UR                  4UR                  UR                  45        g )Nr2   )r   ffffff?r   beta)
r#   rB   r   r	   r   cdfr   rS   rU   r   )r&   r'   argsr1r2s        r+   test_callable_cdf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)rg   rh   ri   rj   rw   rz   r~   r   r   r   r   r   rQ   markparametrizer   r   r   rk   rf   r.   r+   rm   rm   N   sa    J
1$ [[S2u+.- /-<$Kr.   rm   c                      \ rS rSr\R
                  R                  SS/ 0S/ 0/ / S./5      S 5       rS rS r	/ S	Qr
/ S
QrSSS.S/SSS.S/SSS.S/SSS.S/SSS.S/SSS.S//r\R
                  R                  S\5      S 5       rSSS.S/SSS.S/SSS.S/SSS.S/SSS.S /SSS.S!//r\R
                  R                  S\5      S" 5       rS# r/ S$Q/ S%Q/ S&QS'.r/ S(Q/ S)Q/ S*Q/ S+QS,.r/ S-Q/ S.Q/ S/Q/ S0Q/ S1QS2.r/ S3Q/ S4Q/ S5Q/ S6Q/ S7Q/ S8QS9.rS: rS; rS< rSSS.S=/SSS.S>/SSS.S?/SSS.S=/SSS.S>/SSS.S=//r\R
                  R                  S@\5      SA 5       rSB r\R
                  R                  SCSS/5      SD 5       rSE r/ S,QSFSGSHSI\R<                  SFSJSKSLSLSM/SNSO4/ S,QSFSGSHSI\R<                  \R<                  SJSKSLSLSM/SPSQ4SKSJ\R<                  SL/SFSGSHSI\R<                  SFSJSKSLSLSM/SRSS4SKSJ\R<                  SL/SFSGSHSI\R<                  \R<                  SJSKSLSLSM/STSU4SK\R<                  \R<                  SL/SFSGSHSI\R<                  \R<                  SJSKSLSLSM/SVSW4/r\R
                  R                  SX\5      SY 5       r / SZQ/ S[Q/ S\Q/ S]Q/ S^Q/ S_Q/ S`Q/ SaQ/ SbQ/	r!\R
                  R                  Sc\!5      Sd 5       r"Se r#/ S'QSfSg/SSh// S'QSfSg/SSh// S'QSfSg/SSi// S'QSJ/SSj// S'QSJ/SSj// S'QSJ/SSk/SKSJ/SKSJ/SSl/SKSJ/SKSJ/SSl/SKSJ/SKSJ/SSm//	r$\R
                  R                  / SnQ\$5      So 5       r%Sp r&\R
                  R                  Sq/ SrQ5      Ss 5       r'Str(gu)vTestMannWhitneyU   kwargs_updater'   r(   r'   r(   c                    [         R                  " SS/5      n[         R                  " SS/5      n[        X#S9nUR                  U5        [        R
                  " [        [        S9   [        S0 UD6n[        UR                  [         R                  5        [        UR                  [         R                  5        S S S 5        g ! , (       d  f       g = f)Nr   r0   r"   r1   r   rO   rf   )r#   r$   dictupdaterQ   rR   r   r   r   r   rS   rT   rU   )r&   r   r'   r(   kwargsrW   s         r+   
test_emptyTestMannWhitneyU.test_empty   s     HHaVHHaVm$\\,4IJ((C/RVV, KJJs   (AC
Cc                    [         R                  " SS/5      n[         R                  " SS/5      n[        [        SS9   [	        XSS9  S S S 5        [        [        S	S9   [	        XSS
9  S S S 5        [        [        SS9   [	        XSS9  S S S 5        [        [        SS9   [	        XSS9  S S S 5        g ! , (       d  f       Nr= f! , (       d  f       Nb= f! , (       d  f       NR= f! , (       d  f       g = f)Nr   r0   r"   r1   z`use_continuity` must be onerO   ekki)use_continuityz`alternative` must be one ofalternativez`axis` must be an integerr   axisz`method` must be one ofmethod)r#   r$   r\   r]   r   r^   s      r+   test_input_validation&TestMannWhitneyU.test_input_validation   s    HHaVHHaV:-KLf5 M:-KL62 M:-HIC( J:-FGf- HG MLLLIIGGs/   B6 CC"C)6
C
C
C&)
C7c                    [         R                  R                  S5        Sn[         R                  R                  US-
  5      n[         R                  R                  US-
  5      n[	        X#5      n[	        X#SS9n[	        X#SS9nUR
                  UR
                  :X  d   eUR
                  UR
                  :w  d   e[         R                  R                  US-
  5      n[         R                  R                  US-   5      n[	        X#5      n[	        X#SS9n[	        X#SS9nUR
                  UR
                  :X  d   eUR
                  UR
                  :w  d   e[	        X25      n[	        X#SS9n[	        X#SS9nUR
                  UR
                  :X  d   eUR
                  UR
                  :w  d   e[         R                  R                  US-   5      n[         R                  R                  US-   5      n[	        X#5      n[	        X#SS9n[	        X#SS9nUR
                  UR
                  :w  d   eUR
                  UR
                  :X  d   e[         R                  R                  US-
  5      n[         R                  R                  US-
  5      nUS   US'   [	        X#5      n[	        X#SS9n[	        X#SS9nUR
                  UR
                  :w  d   eUR
                  UR
                  :X  d   eg )Nr   r6   
asymptoticr   exactr"   )r#   r@   rA   randr   rU   )r&   r   r'   r(   autor   r   s          r+   	test_autoTestMannWhitneyU.test_auto   sp    			q IINN1Q3IINN1Q3A!!!|<
Q'2{{ell***{{j///// IINN1Q3IINN1Q3A!!!|<
Q'2{{ell***{{j///// A!!!|<
Q'2{{ell***{{j///// IINN1Q3IINN1Q3A!!!|<
Q'2{{ell***{{j///// IINN1Q3IINN1Q3t!A!!!|<
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                 \    [        U R                  U R                  40 UD6n[        X25        g N)r   r'   r(   r   r&   r   r   rW   s       r+   
test_basicTestMannWhitneyU.test_basic   s#    4664662T2&r.   T)r   r   )r   r   )r   r   )r   r   F)r   gl,KNh?)r   giژ?)r   gl,KNh?c                 `    [        U R                  U R                  4SS0UD6n[        X25        g )Nr   r   )r   r(   r'   r   r   s       r+   test_continuity TestMannWhitneyU.test_continuity2  s*     466466G,G$G&r.   c                 T   / SQn[         R                  " / SQ5      n[         R                  " / SQ5      S-  n[         R                  " / SQ5      S-  nUS-
  X#-
  X$-
  X"U-   X#-   US-   /n[        XSSS9n/ S	Qn/ S
Qn[        UR                  U5        [        UR                  U5        g )NrN   r   r0   r"   r1   r2   )r   r   r   r   r   rq   )r   r   r   r   r   r   )r   r   )r4   	         !@r6   r   r5   r3   )r   g]U?g[?gi\?gZX<_?gx.?g 
?)r#   r$   r   r   rS   r   rU   )	r&   r'   y0dydy2r(   rW   
U_expected
p_expecteds	            r+   test_tie_correct!TestMannWhitneyU.test_tie_correct@  s     XXo&XXo&t+hh',WbeRVRC4@1b>/
I
S]]J/

J/r.   )g      ?rs   g      ?)r   皙?皙?r   )rr   r   r   r   rs   g?r   r0   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?rN   )gK7A`?gZd;O?rs   gMbX?)Mb?RQ?RQ?M?r   r   )	g;On?;On?V-?g      ?gJ+?r   gx&?rs   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?rs   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?rq   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?)r7   r  r  r   g9v?g/$?r  r   gL7A`?g
ףp=
?gQ?r  gK7?g`"?g7A`?r   gV-?gjt?gˡE?)r   r0   r"   r1   r2   r3   c           	         [        [        S[        SS5      5        U R                  U R                  U R
                  U R                  S.nUR                  5        GHz  u  p#UR                  5        GH_  u  pE[        R                  " S[        U5      5      n[        R                  R                  XB5        [        [        R                  R                  US9USS9  [        R                  " SXB-  S-   5      n[        [        R                  R                  US9[        R                  R                  US9-   [        R                  R!                  US9-
  S5        [        R                  R!                  US9n[        XS S S2   5        [        R                  R                  X$5        [        R                  R!                  US9n	[        X5        GMb     GM}     g )	Nsr   )r"   r1   r2   r3   kr7   r8   r   r   )setattrr   r   pn3pn4pm5pm6itemsr#   rB   lenr  
set_shapesr   r   sfpmf)
r&   p_tablesr   tablemr*   uu2r  pmf2s
             r+   test_exact_distribution(TestMannWhitneyU.test_exact_distributionp  s_   
Ca,xxDHHdhhG (HAIIaQ(''-
 0 01 0 5qtD YYq!#a%(
 0 02 0 6",,,//B/"7!8",,,"2"2R"2"8!9:;=
 !ll&&&,2Y/ ''-!||''"'-*) & )r.   c                    [         R                  R                  S5        [         R                  R                  S5      n[         R                  R                  S5      n[	        XSS9n[	        XSS9nUR
                  UR
                  :X  d   e[         R                  " UR                  UR                  -
  5      S:  d   e[         R                  R                  S5      n[         R                  R                  S5      n[	        XSS9n[	        XSS9nUR
                  UR
                  :X  d   e[         R                  " UR                  UR                  -
  5      S:  d   eg )	Nr   r2   r   r   r   rq   (   r7   )r#   r@   rA   r   r   rS   absrU   )r&   r'   r(   res1res2s        r+   test_asymptotic_behavior)TestMannWhitneyU.test_asymptotic_behavior  s   
		q IINN1IINN1A1A6~~///vvdkkDKK/04777 IINN2IINN2A1A6~~///vvdkkDKK/04777r.   c                     [        / SQSS/SSS9n[        / SQSS/SSS9n[        UR                  UR                  5        UR                  S:  d   e[        / SQSS/S	SS9n[        US
5        g )Nr   r         @r   r   r   r   rs   r   )r"   r   )r   r   rU   )r&   res_lres_grW   s       r+   test_exact_U_equals_mean)TestMannWhitneyU.test_exact_U_equals_mean  sw     Yc
$+-Yc
	$+-U\\5<<0||c!!!9sCjk")+S&!r.   r   r   )r   rs   )r   g郡E?)r   resultc                 .    [        [        S0 UD6U5        g )Nr   r0   )r   r   )r&   r   r0  s      r+   test_scalar_data!TestMannWhitneyU.test_scalar_data  s     	2T2F;r.   c           	          [        [        SSSS9S5        [        [        SSSS9S5        [        [        SSSSS9S[        R                  45        g )	Nr   r   r   )rs   r   r   F)r   r   rs   )r   r   r#   rT   rv   s    r+   test_equal_scalar_data'TestMannWhitneyU.test_equal_scalar_data  sP    
 	\!Qw7B\!Q|<hG 	\!Q|168:=rvv	Hr.   r   c                 r   [         R                  R                  S5        SnSu  p4[         R                  R                  USS5      n[         R                  R                  SUSS5      S-   n[	        XVXS	9nS
nUR
                  R                  U:X  d   eUR                  R                  U:X  d   e[         R                  " XRS5      [         R                  " XbS5      peUS   nUR                  UR                  :X  d   e[         R                  " XXU4-   5      n[         R                  " XhU4-   5      nUR                  S S U:X  d   eUR                  S S U:X  d   e[         R                  " U5      n	[         R                  " U5      n
[        U Vs/ s H  n[        U5      PM     sn6  H1  nX\   nXl   n[	        XUS9nUR                  X'   UR
                  X'   M3     [         R                  R                  UR
                  U
5        [         R                  R                  UR                  U	5        g s  snf )Nr   )r5   r4   r"   r6   r3   r   r   )r   r   )r3   r"   r6   r   )N.r   )r#   r@   rA   r   r   rU   shaperS   moveaxisndimbroadcast_tozerosr   rangetestingr   )r&   r   r   r  r   r'   r(   rW   r:  
statisticspvaluesiindicesxiyitemps                   r+   test_gh_12837_11113$TestMannWhitneyU.test_gh_12837_11113  s    			q IINN1a#IINN1aA&,1:zz5(((}}""e+++ {{1B'Qb)A1iLvvOOAt|,OOAt|,wws|u$$$wws|u$$$ XXe_
((5/5 95aq5 9:GBBv6D"&..J#{{G ; 	



G4


z: !:s   H4c                    / SQn/ SQn[        X5      n[        R                  US'   [        X5      n[        UR                  UR                  5        [        UR
                  UR
                  5        [        R                  US'   [        X5      n[        UR                  [        R                  5        [        UR
                  [        R                  5        g )NrN   )r"   r3   r5   r6   r   r"   r0   r   r1   r1   r2   r1   )r   r#   r[   r   rS   rU   rT   )r&   r'   r(   r%  r&  res3s         r+   test_gh_11355TestMannWhitneyU.test_gh_11355  s    -A! vv!A!T^^T^^4T[[$++. vv!A!T^^RVV,T[["&&)r.   r"   r3   r5   r6   r0   r   r1   r2   r4   g+zQ?r   g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r'   r(   rS   rU   c                 l    [        XSS9n[        UR                  USS9  [        UR                  USS9  g )Nr   r   -q=r8   )r   r   rS   rU   )r&   r'   r(   rS   rU   rW   s         r+   test_gh_11355bTestMannWhitneyU.test_gh_11355b   s0     1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                 ~    SnSnSn[        XgUX#S9n[        UR                  U5        [        UR                  U5        g )N#   )
r   g(\?g=
ףp=?gp=
ף?g333333?gGz?g(\?g=
ףp=?r   g\(\?)gffffff?g)\(?r   gGz?g\(\?r   r   r   )r   r   rS   r   rU   )	r&   r   r   r   rS  statistic_expr'   r(   rW   s	            r+   test_gh_9184TestMannWhitneyU.test_gh_91841  sA    . H*1'2CS]]M2

J/r.   c                 .   [         R                  " [         R                  [         R                  [         R                  [         R                  [         R                  /5      n[         R                  " [         R                  [         R                  [         R                  [         R                  [         R                  /5      n[        X5      n[	        UR
                  [         R                  5        [	        UR                  [         R                  5        g r   )r#   r$   rT   r   r   rS   rU   )r&   abrW   s       r+   test_gh_4067TestMannWhitneyU.test_gh_4067P  s    HHbffbffbffbffbff=>HHbffbffbffbffbff=>1 S]]BFF+SZZ(r.   r   r*  )r"   ga׀}?)r"   r   )r   g?h?)r   r   )r0   g5&#\?)r0   r   )r'   r(   r   r   c                 0    [        XSUSS9n[        XTSS9  g )NTr   rV  rP  rtol)r   r   )r&   r'   r(   r   r   rW   s         r+   test_gh_2118TestMannWhitneyU.test_gh_2118h  s!     1+".0E2r.   c                    [         R                  R                  S5      nSu  p#UR                  US9nUR                  US9n[        [        S[        SS5      5        [        R                  R                  5         [        R                  " XESS9n[        R                  R                  R                  nUS   [        UR                  X#-  UR                  -
  5      S	-   :X  d   e[        R                  " XTSS9  U[        R                  R                  R                  :X  d   e[        R                  R                  5         [        R                  " USU-  SS
S9  [        R                  R                  R                  nUS   S	:X  d   e[        R                  " SU-  USS
S9  U[        R                  R                  R                  :X  d   eg )N   g>mjK )r2   r   sizer  r   r   r   r   r   r   )r   r   )r#   r@   default_rngr  r   r   r  resetstatsr   configurationsr:  minrS   )r&   rngr  r   r'   r(   rW   r:  s           r+   test_gh19692_smaller_table+TestMannWhitneyU.test_gh19692_smaller_tablep  si   
 ii##$78JJAJJJAJ
Ca,  g6++11RyCqsS]]/BCaGGGG10
3399999
 	1ac'yI++11RyA~~1Q3'yI
3399999r.   r   )r   r   r   c                 |   [         R                  R                  S5      nUR                  SS9nUR                  SS9n[        R                  " X4[        R
                  " 5       USS9n[        R                  " X4SUSS9n[        UR                  UR                  SS	9  [        UR                  UR                  SS	9  g )
Nre  )r0   r2   rf  )r0   r3   r   )r   r   r   r   V瞯<r`  )	r#   r@   rh  rj  r   PermutationMethodr   rS   rU   )r&   r   rm  r'   r(   rW   r&  s          r+   test_permutation_method(TestMannWhitneyU.test_permutation_method  s    ii##$78JJFJ#JJFJ#  e.E.E.G-8qB!!!w.9Ct~~EB

DKKe<r.   rf   N))rg   rh   ri   rj   rQ   r   r   r   r   r   r'   r(   cases_basicr   cases_continuityr   r   r  r  r  r  r   r'  r-  cases_scalarr3  r6  rH  rL  r#   r[   cases_11355rQ  
cases_9184rX  r]  
cases_2118rb  rn  rs  rk   rf   r.   r+   r   r      sL    [[_Ry3)57b/A/C D-D-
.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+8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:: [[],LM	= N	=r.   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS r\R                   R#                  SS5      S 5       rS rSrg)TestSomersDi  c                    U R                   U R                  -   U l        [        R                  " S5      U R                   U R                  -   4[        R                  " S5      U R                   U R                  -   4S.U l        U R
                   Vs/ s H  oR
                  U   S   PM     nn[        R                  " [        R                  SS9U l
        U R                  " U6 U l        g s  snf )Nr4   r/  r   r   r   )ALL_INTEGER	ALL_FLOATdtypesr#   rB   	arguments	functoolspartialrj  somersdpartialfuncr   )r&   idxinput_arrays      r+   setup_methodTestSomersD.setup_method  s    &&7 iim"..?A iim"..?AB :>H#~~c*1-H
 %,,U]]9DF((+6 Is   C+c                     U R                   " U6 n[        UR                  U R                  R                  SS9  [        UR                  U R                  R                  SS9  g )Nrq  r8   )r  r   rS   r   rU   r&   r   rW   s      r+   pythranfuncTestSomersD.pythranfunc  sF    %t}}'>'>UK

DMM$8$8uEr.   c                 .   / SQ/ SQ/ SQ/n[         R                  " U5      nU R                  [         R                  5      n[         R                  " U40 UD6n[        UR                  UR                  SS9  [        UR
                  UR
                  SS9  g )N)r         r5   r   )r5   r     rU  r   )r   r"   r0   r5      rq  r8   )rj  r  get_optional_argsr   rS   rU   )r&   r  r%  optional_argsr&  s        r+   test_pythranfunc_keywords%TestSomersD.test_pythranfunc_keywords  sm    #%8:JK}}U#..u}}=}}U4m4UCT[[u=r.   c                 
   / SQn/ SQnSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  / SQn/ S	QnSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  / S
Qn/ SQnSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  [
        R                  " S5      n[
        R                  " S5      nSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  [
        R                  " S5      n[
        R                  " / SQ5      nSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  [
        R                  " S5      n[
        R                  " S5      S S S2   nSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  [
        R                  " S5      n[
        R                  " / SQ5      nSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  / SQn/ SQnSn[         R                  " XV5      n[        UR                  US   SS9  [        UR                  US   SS9  [         R                  " / SQ/ SQ5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [         R                  " / SQ/ SQ5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [         R                  " / SQ/ SQ5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [         R                  " S/S/5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [         R                  " / / 5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [
        R                  " S5      n[
        R                  " S5      n[        [        [         R                  X5        g )N)r2   r0   r   r"   r3   r1   r5   r6   )r2   r0   r3   r"   r   r6   r5   r1           r   r   rq  r8   r   )	r   r2   r0   r   r"   r3   r1   r5   r6   )	r2   r0   r   r3   r"   r   r6   r5   r1   )r2   r0   r   r"   r3   r1   r5   )r2   r0   r3   r"   r   r5   r1   )g+$I$I¿g=/3n+?r4   r   r   )
r   r0   r   r"   r1   r3   r2   r5   r6   r   )gs'}'?r  r   )g      r   )
r   r5   r6   r3   r2   r"   r1   r0   r   r   )g}'}'r  )r   r0   r   r   r0   )r   r1   r5   r   r   )      g.ʂ?)r0   r0   r0   )r0   r   r0   g      $@g      4@)rj  r  r   rS   rU   r#   rB   r$   rT   r\   r]   )r&   r'   r(   r   rW   x1x2s          r+   test_like_kendalltau TestSomersD.test_like_kendalltau  s    %$9mmA!x{?

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

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

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

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

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

HQKe< IIbMHH34;mmA!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%--6r.   c                    / SQn/ SQnSnSnSn[         R                  " X5      n[        UR                  USS9  [        UR                  USS9  [        UR                  R                  S	5        [         R                  " X!5      n[        UR                  USS9  [        UR                  USS9  [        UR                  R                  S
5        g )N)r   r   r   r0   r0   r0   r0   r0   r"   r"   r   r0   r0   r0   r0   r0   r0   r0   r"   r"   r"   r"   r"   r"   )r   r   r   r   r   r   r   r   r   r   r0   r0   r0   r0   r0   r0   r0   r0   r0   r0   r0   r0   r0   r0   gCE]t?g^_?gO((Ƿ?rq  r8   rt   )r"   r0   r0   r"   )rj  r  r   rS   rU   r   r  r:  )r&   r'   r(   d_crd_rcr*   rW   s          r+   test_asymmetryTestSomersD.test_asymmetry)  s    11 ! mmA!t%8

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

AE2SYY__f-r.   c                 j   [         R                  " SS/SS/SS/SS/SS//5      nUR                  nSn[        [        R
                  " U5      R                  U5        [         R                  " S	S
/SS
/S
S//5      nSu  p2[        [        R
                  " U5      R                  U5        [        [        R
                  " UR                  5      R                  U5        [         R                  " S	S
/S
S/SS
//5      nSn[        [        R
                  " UR                  5      R                  U5        g )Nr6   r0   r3   r2   r"   r1   r   gHHHHHH?r  r   U   r>   )gM&w?r   gtE]t)r#   r$   Tr   rj  r  rS   )r&   r  dyxdxys       r+   test_somers_original TestSomersD.test_somers_originalB  s    
 1a&1a&1a&1a&1a&ABe,66< 2q'B7QG45'e,66<egg.88#> 2q'Ar7RG45egg.88#>r.   c                    SnSn[         R                  " U5      n[         R                  R                  S5        [        R
                  R                  U[         R                  " U5      U-  S9R                  U5      n[        R                  " U5      n[         R                  " US[         R                  " US   5      SS9n[        R                  " U5      n[         R                  " US[         R                  " US   5      SS9n[        R                  " U5      n	[         R                  " US[         R                  " US   S-   5      SS9n
[        R                  " U
5      n[        UR                  SS	S
9  [        UR                  UR                  5        [        UR                  U	R                  5        [        UR                  UR                  5        [        UR                  SS	S
9  [        UR                  UR                  5        [        UR                  U	R                  5        [        UR                  UR                  5        g )Nr   r1   r3   r   r*   r0   r   r   gayrq  r8   gPj$?)r#   prodr@   rA   rj  multinomialrvsr   reshaper  insertr>  r   rS   rU   )r&   Nr:  rg  r  rW   s2r&  s3rK  s4res4s               r+   *test_contingency_table_with_zero_rows_cols6TestSomersD.test_contingency_table_with_zero_rows_colsX  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   SnSn[         R                  " U5      n[         R                  R                  S5        [        R
                  R                  U[         R                  " U5      U-  S9R                  U5      nUS-
  nSn[        [        US9   [        R                  " U5        S S S 5        US-   nS	n[        [        US9   [        R                  " U5        S S S 5        S
n[        [        US9   [        R                  " / /5        S S S 5        [        [        US9   [        R                  " S//5        S S S 5        [         R                  " S5      n[        [        US9   [        R                  " U5        S S S 5        SUS'   [        [        US9   [        R                  " U5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r  r   r  r0   z:All elements of the contingency table must be non-negativerO   rq   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@   rA   rj  r  r  r   r  r\   r]   r  r>  )	r&   r  r:  rg  r  s5messages6s7s	            r+   test_invalid_contingency_tables+TestSomersD.test_invalid_contingency_tablesw  s   wwu~
		q!!!rwwt}T'9!:BB5IUN:W5MM" 6 XI:W5MM" 6,:W5MM2$ 6 :W5MMA3%  6 XXf:W5MM" 6 4:W5MM" 65+ 65
 65
 65 65 65 65sH   F;G6G$G/)H H;
G

G
G,/
G= 
H
Hc                 :   / SQnSS[         R                  /n/ SQnSS[         R                  * /n[        R                  " X5      n[        R                  " X$5      n[	        UR
                  UR
                  5        [	        UR                  UR                  5        g )Nr   r   g @)r"   r0   r   r   r  )r#   r[   rj  r  r   rS   rU   )r&   r'   r  r(   y2rW   r&  s          r+   test_only_ranks_matter"TestSomersD.test_only_ranks_matter  sn    #rvvwmmA!}}R$S]]DNN3SZZ-r.   c                     [         R                  " S5      n[         R                  " S5      n[        R                  " X5      n[	        UR
                  [         R                  " S5      5        g )Nr4   )r#   rB   rj  r  r   r  eyerV   s       r+   test_contingency_table_return)TestSomersD.test_contingency_table_return  s@    IIbMIIbMmmA!SYYr
+r.   c                 ,   / SQn/ SQn[         R                  " XSS9nUR                  S:  d   e[         R                  " XSS9n[        UR                  UR                  5        [	        UR
                  SUR
                  S-  -
  5        [         R                  " XS	S9n[        UR                  UR                  5        [	        UR
                  UR
                  S-  5        UR                  5         [         R                  " XSS9nUR                  S:  d   e[         R                  " XS	S9n[        UR                  UR                  5        [	        UR
                  SUR
                  S-  -
  5        [         R                  " XSS9n[        UR                  UR                  5        [	        UR
                  UR
                  S-  5        [        R                  " [        S
S9   [         R                  " XSS9  S S S 5        g ! , (       d  f       g = f)Nr   )r2   r3   r5   r6   r5   r   r   r   r   r   r0   r   z`alternative` must be...rO   	ekki-ekki)
rj  r  rS   r   r   rU   reverserQ   r   r]   )r&   r  r  r   rW   s        r+   test_somersd_alternative$TestSomersD.test_somersd_alternative  s     ==[A!!A%%% mmB7S]]H$6$67

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

HOOa$78 	

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

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

HOOa$78]]:-GHMM"k: IHHs   &H
Hpositive_correlation)FTc                    [         R                  " S5      nU(       a  UO[         R                  " U5      nU(       a  SOSn[        R                  " X#SS9nUR
                  U:X  d   eUR                  S:X  d   e[        R                  " X#SS9nUR
                  U:X  d   eUR                  U(       a  SOS:X  d   e[        R                  " X#SS9nUR
                  U:X  d   eUR                  U(       a  SOS:X  d   eg )	Nr4   r   r   r   r   r   r   r   )r#   rB   fliprj  r  rS   rU   )r&   r  r  r  expected_statisticrW   s         r+    test_somersd_perfect_correlation,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                     SS/nSn[         R                  " S5        [         R                  " XS9n[         R                  " XS9nSn[        R                  " X45      R
                  n[        XVSS9  g )	Nr   r0   @B i_ r  g Hz	Yrq  r8   )r@   rA   choicesrj  r  rS   r   )r&   classes	n_samplesr'   r(   val_sklearn	val_scipys          r+   !test_somersd_large_inputs_gh18132-TestSomersD.test_somersd_large_inputs_gh18132  sa     a&	GNN70NN70 , MM!'11	U;r.   )r  r  r   r  N)rg   rh   ri   rj   r  r  r  r  r  r  r  r  r  r  r  rQ   r   r   r  r  rk   rf   r.   r+   r|  r|    sl    7F
	>m7^.2?,1>!F	.,';R [[3]C@ D@0<r.   r|  c                      \ rS rSrSr\R                  R                  SSS/SS//S4S	S
/SS//S4S
S/SS
//S4SS/SS//S4SS/SS//S4SS/SS//S4SS/SS//S4SS/SS//S4SS/SS
//S4SS
/SS//S 4S
S/SS
//S4/5      S! 5       r\R                  R                  SSS/SS//S"4S	S
/SS//S#4S
S/SS
//S$4SS/SS//S%4SS/SS//S&4SS/SS//S'4SS/SS//S(4SS/SS//S)4SS/SS
//S*4SS
/SS//S+4S
S/SS
//S$4/5      S, 5       r	S- r
\R                  R                  SSS/SS//S.4/5      S/ 5       r\R                  R                  SSS/SS//S0\R                  44SS/SS//S0\R                  44/5      S1 5       r\R                  R                  SS
S/SS
//S24SS3/S4S//S54S6S7/S8S//S94/5      \R                  R                  S:S;S</5      S= 5       5       rS>rg?)@TestBarnardExacti  z8Some tests to show that barnard_exact() works correctly.input_sample,expected+   r#  r4   '   )gXyq@g{2s&Q7?r   r0   r}   r2   )gllgEA]0K?r5   r6   )*)1%g_  ?r   )g_c1?g= ?   rb   )g5PyQgQ@2?r   r  )ggJ"?)g_c1gwݝل?r   r1   )g7@g      ?r"   )g~t,?3O?r3   )gr?~CY7?c                 b    [        U5      nUR                  UR                  pT[        XE/U5        g)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   rS   rU   r   r&   input_sampler   rW   rS   rU   s         r+   test_preciseTestBarnardExact.test_precise
  s*    2 L)MM3::6+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                 `    [        USS9nUR                  UR                  pT[        XE/U5        g)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_param"TestBarnardExact.test_pooled_param'  s,    2 L7MM3::6+X6r.   c                    Sn[        [        US9   [        SS/SS//SS9  S S S 5        S	n[        [        US9   [        [        R                  " S
5      R                  SS5      5        S S S 5        Sn[        [        US9   [        SS/SS//5        S S S 5        Sn[        [        US9   [        SS/SS//S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       N\= f! , (       d  f       g = f)N7Number of points `n` must be strictly positive, found 0rO   r   r0   r"   r1   r   r   ,The input `table` must be of shape \(2, 2\).r3   *All values in `table` must be nonnegative.r   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)r\   r]   r   r#   rB   r  r&   	error_msgs     r+   test_raisesTestBarnardExact.test_raisesD  s     F 	 :Y7Aq6Aq6*a0 8 E	:Y7"))A,..q!45 8 A	:Y7B7QF+, 8
 	 :Y7Aq6Aq6*M: 87% 87
 87
 87 87.   C0CC*,C;
C
C'*
C8;
D	r  c                     [        U5      nUR                  UR                  pT[        XRS   5        [        XBS   5        g Nr   r   r   rS   rU   r   r  s         r+   test_edge_cases TestBarnardExact.test_edge_cases^  s5     L)MM3::6Va[)Y,r.   r   c                     [        U5      nUR                  UR                  pT[        XRS   5        [        XBS   5        g r  r  r  s         r+   test_row_or_col_zero%TestBarnardExact.test_row_or_col_zeroj  s5     L)MM3::6Va[)Y,r.   )r  gE\/??   ,  )ggQ5r     r?   i  )g&X}>r  r   r   r   c                     Uu  pEUS:X  a#  [         R                  " U5      SS2SSS24   nU* n[        XS9nUR                  UR                  p[        Xx/XE/SS9  g)a0  
"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>r8   )r#   r$   r   rS   rU   r   )	r&   r  r   r   expected_statless_pvalue_expectrW   rS   rU   s	            r+   test_less_greater"TestBarnardExact.test_less_greaterw  sd    , -5))#88L1!TrT':L*NMLBMM3::6-!D4	
r.   rf   N)rg   rh   ri   rj   __doc__rQ   r   r   r  r  r  r   r#   rT   r  r  rk   rf   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                      \ rS rSrSrSr\R                  R                  SSS/SS//S4S	S
/SS//S4S	S/SS//S4SS	/SS
//S4S	S/S
S//S4SS
/SS//S4SS/SS//S4SS/SS//S4SS/SS//S4/	5      S 5       r	\R                  R                  SSS/SS//S 4SS/SS//S!4S	S
/SS//S"4S	S#/SS//S$4S	S/SS//S%4S	S/S
S//S&4SS
/SS//S4SS/S'S//S4SS/SS//S!4SS/SS//S(4SS/SS//S)4/5      S* 5       r
\R                  R                  SSS/SS//S+4SS/SS//S,4S	S
/SS//S-4S	S/SS//S.4S	S/S
S//S/4SS
/SS//S04SS/SS//S,4SS/SS//S14/5      S2 5       rS3 r\R                  R                  SSS	/SS//\R                  \R                  44S	S/SS//\R                  \R                  44/5      S4 5       rS5 r\R                  R                  S6S75      S8 5       rS9rg:);TestBoschlooExacti  z9Some tests to show that boschloo_exact() works correctly.r	  r  r0   r5   r6   )<vB\?g/??r2   r   r4   )gM?gA>?r   rb   r  )_VѶ?g֭?)u %?gc'?r   r1   r   r   r"   )rs   g      ?r   )+f?gXc}v?   %   )gZыD?ggi]?c                 p    [        USS9nUR                  UR                  pT[        XE/X R                  S9  g)aA  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   r8   Nr   rS   rU   r   ATOLr  s         r+   	test_lessTestBoschlooExact.test_less  s0    2 \v>MM3::6+XIIFr.   r  r#  r  )k\2?g0,%?)gKv?gN3?)r  g'&5?r  )gw@_?g7?)gi{?gɑ)z?)օa?g1|?r3   )gY<;?gND?)ge?gG`?c                 p    [        USS9nUR                  UR                  pT[        XE/X R                  S9  g)aD  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   r8   Nr  r  s         r+   test_greaterTestBoschlooExact.test_greater  s0    6 \yAMM3::6+XIIFr.   )r  gqQS,5?)r  gG?/??)r  gKE`?)r  ghr1ֽ?)r  grfb?)rs   g      ?)r  gP:pRv?c                 r    [        USSS9nUR                  UR                  pT[        XE/X R                  S9  g)aF  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   r8   Nr  r  s         r+   test_two_sided TestBoschlooExact.test_two_sided  s2    0 \{bIMM3::6+XIIFr.   c                    Sn[        [        US9   [        SS/SS//SS9  S S S 5        S	n[        [        US9   [        [        R                  " S
5      R                  SS5      5        S S S 5        Sn[        [        US9   [        SS/SS//5        S S S 5        Sn[        [        US9   [        SS/SS//S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       N\= f! , (       d  f       g = f)Nr  rO   r   r0   r"   r1   r   r  r  r3   r  r   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r  )r\   r]   r   r#   rB   r  r  s     r+   r  TestBoschlooExact.test_raises  s     F 	 :Y7QFQF+q1 8 E	:Y7299Q<//156 8 A	:Y7RGaV,- 8
% 	 :Y7QFQF+]; 87% 87
 87
 87 87r  c                     [        U5      nUR                  UR                  pT[        XRS   5        [        XBS   5        g r  )r   rS   rU   r   r  s         r+   r  &TestBoschlooExact.test_row_or_col_zero  s5     \*MM3::6Va[)Y,r.   c                     SS/SS//n[        USS9R                  n[        USS9R                  nS[        X#5      -  S:  d   e[        USS9R                  nUS	:X  d   eg )
Nr   r   r   r   r   r   r0   r   r   )r   rU   rl  )r&   tblplpgpts        r+   test_two_sided_gt_1%TestBoschlooExact.test_two_sided_gt_1  sn     1vBx CV4;;CY7>>R}q   C[9@@Syyr.   r   )r   r   c                 ~    SS/SS//n[        X!S9R                  n[        R                  " X!S9S   n[	        X45        g )Nr0   r5   r6   r   r   )r   rS   rj  fisher_exactr   )r&   r   r+  boschloo_statfisher_ps        r+   test_against_fisher_exact+TestBoschlooExact.test_against_fisher_exact)  sC     1v1v&sDNN%%cCAF0r.   rf   N)rg   rh   ri   rj   r  r  rQ   r   r   r  r   r$  r  r#   rT   r  r/  r5  rk   rf   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                   J   \ rS rSr\R
                  R                  S/ \R                  " S5      4\R                  " S5      S/4/5      S 5       r	S r
S rS r\R
                  R                  S	/ S
Q5      S 5       r\R
                  R                  S 5       rS rS rS rSrg)TestCvm_2sampi3  r   r2   r   c                    [         R                  " [        [        S9   [	        U6 n[        UR                  [        R                  5        [        UR                  [        R                  5        S S S 5        g ! , (       d  f       g = f)NrO   )
rQ   rR   r   r   r   r   rS   r#   rT   rU   r  s      r+   test_too_small_input"TestCvm_2samp.test_too_small_input4  sO     \\,4IJ&-C/RVV, KJJs   AA88
Bc                     [         R                  " S5      nSn[        R                  " [        US9   [        XS5        S S S 5        g ! , (       d  f       g = f)Nr2   z/method must be either auto, exact or asymptoticrO   xyz)r#   rB   rQ   r   r]   r   )r&   r(   msgs      r+   r    TestCvm_2samp.test_invalid_input<  s8    IIaL?]]:S1 u- 211s   A
Ac                    / SQn/ SQn[        X5      n[        [        R                  " U5      [        R                  " U5      5      n[        UR                  UR
                  4UR                  UR
                  45        g )N)r0   r"   r1   r5   r3   )r   r   r   r  )r   r#   r$   r   rS   rU   r&   r'   r(   r   r   s        r+   test_list_inputTestCvm_2samp.test_list_inputB  sV    !!'!"((1+rxx{;bllBII.ryy0IJr.   c                 ~    / SQn/ SQn[        X5      n[        UR                  SSS9  [        UR                  SSS9  g )N)	gffffff@g @r   gffffff!@皙"@g#@g333333$@g333333%@gffffff&@)g@g@g@      @333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?r7   r8   g
ףp=
?rq   )r   r   rS   rU   r&   r'   r(   rs       r+   test_example_conover"TestCvm_2samp.test_example_conoverI  s:     = &U6$T2r.   zstatistic, m, n, pval))i  r2   r3   gcj`?)ii  r5   r5   gtE]t?)i@  r1   r3   g88?)i  r3   r5   gXwS?c                 0    [        [        XU5      U5        g r   )r   r   )r&   rS   r  r   pvals        r+   test_exact_pvalueTestCvm_2samp.test_exact_pvalueS  s     	*9;TBr.   c                    [         R                  R                  S5        [        R                  R                  SS9n[        R                  R                  SS9n[        X5      n[        SUR                  s=:  =(       a    S:  Os  5        [        XS-   5      n[        SUR                  s=:  =(       a
    S:  5        g s  5        g )Ni  r  rf  i r   r   r   )	r#   r@   rA   r	   r   r  r   r   rU   rH  s       r+   test_large_sampleTestCvm_2samp.test_large_sample^  s     			t"""0"""/ &AHH  q ! cE*AHH  q ! !r.   c                 d   [         R                  R                  S5        [         R                  R                  S5      n[         R                  R                  S5      n[	        XSS9n[	        XSS9n[        UR                  UR                  5        [        UR                  UR                  SS9  g )	Nr   r5   r6   r   r   r   rq   r8   )	r#   r@   rA   r   r   r   rS   r   rU   rA  s        r+   test_exact_vs_asymptotic&TestCvm_2samp.test_exact_vs_asymptoticj  st    
		qIINN1IINN1!!w7!!|<R\\2<<0		29948r.   c                 4   [         R                  " S5      n/ SQn[        XSS9n[        XSS9n[        UR                  UR                  5        [         R                  " S5      n[        XSS9n[        XSS9n[        UR                  UR                  5        g )Nrb   )rs   g@g333333*@r   r   r   r  r   )r#   rB   r   r   rU   rA  s        r+   test_method_autoTestCvm_2samp.test_method_autos  su    IIbM!!w7!!v6RYY		*IIbM!!|<!!v6RYY		*r.   c                     [         R                  " S5      n[        X5      n[        UR                  UR
                  4S5        [        US S US S 5      n[        UR                  UR
                  4S5        g )Nr  r  r1   )r#   rB   r   r   rS   rU   r   s      r+   test_same_inputTestCvm_2samp.test_same_input  sa     IIbM"1(cmmSZZ0*="1Ra5!BQ%0cmmSZZ0*=r.   rf   N)rg   rh   ri   rj   rQ   r   r   r#   rB   r:  r   rB  rJ  rN  xslowrQ  rT  rW  rZ  rk   rf   r.   r+   r8  r8  3  s    [[Vr299Q<&8')yy|aS&9&; <-<-.K3 [[456
C6
C [[	" 	"9
+	>r.   r8  c                      \ rS rSr/ SQ/ SQ/ SQ4r/ SQ/ SQ/ SQ4r/ SQ/ SQ/ SQ4rSrS	rS
r	\
R                  R                  S\\S4\\S4\\	S44/ SQS9S 5       rSrSr\
R                  R                  S\\S4\\S44SS/S9S 5       rS rS rS rS rS rS r\
R                  R                  SS5      S  5       r\
R                  R                  S!/ S"Q5      S# 5       rS$ rS%rg&)'TestTukeyHSDi  )rN       7@ffffff:@皙;@fffff=@)ffffff<@皙A@     =@皙@@皙>@)g:@gL<@gL8@g333333:@g;@)rN  r_  gHzG:@r`  ra  rb  rg  rg  )rN  r_  r`  )
rc  rd  re  rf  rg  rc  rd  re  rf  rg  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,atolrt   g|=)equal size samplezunequal sample sizezextreme sample size differences)idsc                    [         R                  " UR                  SS5      R                  5       SS [        S9R                  S5      n[        R                  " U6 nUR                  5       nU H  u  pxpp[        U5      S-
  [        U5      S-
  p[        UR                  Xx4   XS9  [        UR                  Xx4   XS9  [        UR                  Xx4   XS9  [        UR                  Xx4   S	:*  US:H  5        M     g)
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;
 -  r2   Ndtype)r3   r3   r   r8   rr   r#   asarrayreplacesplitfloatr  rj  	tukey_hsdconfidence_intervalintr   lowrS   highrU   )r&   datares_expect_strr9   
res_expect	res_tukeyconfrC  jlr  hsigs                r+   test_compare_sasTestTukeyHSD.test_compare_sas  s    B ZZ 6 6uc B H H J12 N&+--4WV_ 	OOT*	,,.",A!q6A:s1vzqDHHQTNA9I//5qDDIIadOQ:Y--ad3s:SAXF #-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
        rP  r	  rh  zunequal size samplec                    [         R                  " UR                  5       [        S9R	                  S5      n[
        R                  " U6 nUR                  5       nU H  u  pxpp[        U5      S-
  [        U5      S-
  p[        UR                  Xx4   XS9  [        UR                  Xx4   XS9  [        UR                  Xx4   XS9  [        UR                  Xx4   XS9  M     g)a6  
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");
rm  r"   r3   r   r8   N)r#   rp  rr  rs  r  rj  rt  ru  rv  r   rw  rS   rx  rU   )r&   ry  rz  r9   r{  r|  r}  rC  r~  r  r  r  r*   s                r+   test_compare_matlab TestTukeyHSD.test_compare_matlab  s     ZZ 4 4 6&+--4WV_ 	OOT*	,,. *A!q6A:s1vzqDHHQTNA9I//5qDDIIadOQ:I,,QT2AA !+r.   c                    Sn[         R                  " UR                  SS5      R                  5       SS [        S9R                  S5      n/ SQ/ S	Q/ S
Q4n[        R                  " U6 nUR                  5       nU H  u  pgpp[        U5      S-
  [        U5      S-
  pv[        UR                  Xg4   U	SS9  [        UR                  Xg4   USS9  [        UR                  Xg4   U
SS9  [        UR                  Xg4   USS9  M     g)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
        rk  rl  r2   Nrm  r  )   r>   6   r  F   4   3   r  C   r   r        r     )   rb   ,   )r  r  r  r  r   r  rU  r>   $   *   r  r  r   r  r?   r  r  r  )r  r  r  r  r4   r  r?   r  r  rb   r  r  r  r   r  r  r   r?   r   r	  r8   r   gh㈵>ro  )r&   str_resr{  ry  r|  r}  rC  r~  r  r  r  r*   s               r+   test_compare_rTestTukeyHSD.test_compare_r	  s     ZZs ; A A CAB G&+--4WV_ 	555	6 OOT*	,,. *A!q6A:s1vzqDHHQTNAD9I//5qtDDIIadOQT:I,,QT2ADA !+r.   c                    / SQn/ SQn/ SQn/ SQn[         R                  " XX45      nUR                  5       n[        R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  " / S	Q/ S
Q/ SQ/ SQ/5      nS H?  u  p[        UR                  X4   XyU
4   SS9  [        UR                  X4   XU
4   SS9  MA     g)zX
Example sourced from:
https://www.itl.nist.gov/div898/handbook/prc/section4/prc471.htm
)皙@g@333333@gffffff@g      @)g @rG  g333333@gffffff"@rF  )g       @g      %@g333333 @r  rE  )r  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   )r0   r   )r   r"   r2  r  rq   r8   N)rj  rt  ru  r#   rp  r   rw  rx  )r&   group1group2group3group4rW   r}  lowerupperrC  r~  s              r+   test_engineering_stat_handbook+TestTukeyHSD.test_engineering_stat_handbook2  s    
 +*+*ooff=&&(

 	 
 

!	  ?FQDHHQTNEQ$KdCDIIadOUa4[tD ?r.   c                 L   [         R                  R                  S5        [         R                  R                  SS5      n[        R
                  " U6 nUR                  5       n[        UR                  UR                  R                  * 5        [        [         R                  " UR                  5      UR                  S   5        [        [         R                  " UR                  5      UR                  S   5        [        UR                  UR                  R                  * 5        [        [         R                  " UR                  5      S5        [        UR                  UR                  R                  5        [        [         R                  " UR                  5      S5        g )Nr=   r"   r   r   r   r   r   )r#   r@   rA   r   rj  rt  ru  r   rw  rx  r  diagonalrS   rU   )r&   ry  rW   r}  s       r+   test_rand_symmTestTukeyHSD.test_rand_symmL  s    
		tyy~~a%oot$&&(TXX		|, 	R[[+TYYt_=R[[*DHHTN;S]]S]]__$45R[[/3SZZ.R[[,a0r.   c                     [        [        SS9   [        R                  " / SQS[        R
                  // SQ5        S S S 5        g ! , (       d  f       g = f)Nz...must be finite.rO   r   r0   )r3   r5   r"   )r\   r]   rj  rt  r#   r[   rv   s    r+   test_no_infTestTukeyHSD.test_no_inf_  s2    :-ABOOI266{I> CBBs   -A
Ac                     [        [        SS9   [        R                  " SS/SS//SS// SQ5        S S S 5        g ! , (       d  f       g = f)Nz...must be one-dimensionalrO   r   r0   r"   r2   )r2   r   r3   r\   r]   rj  rt  rv   s    r+   
test_is_1dTestTukeyHSD.test_is_1dc  s;    :-IJOOaVaV,q!fjA KJJs	   #;
A	c                     [        [        SS9   [        R                  " / SS// SQ5        S S S 5        g ! , (       d  f       g = f)Nz...must be greater than onerO   r0   r2   )r1   r2   r3   r  rv   s    r+   test_no_emptyTestTukeyHSD.test_no_emptyg  s.    :-JKOOBA	2 LKKs	   5
Anargsr/  c                     [        [        SS9   [        R                  " / SQ/U-  6   S S S 5        g ! , (       d  f       g = f)Nz...more than 1 treatment.rO   r   r5   r"   r  )r&   r  s     r+   test_not_enough_treatments'TestTukeyHSD.test_not_enough_treatmentsk  s-    :-HIOOzlU24 JIIs	   2
A cl)r  r   r   r0   c                     [        [        SS9   [        R                  " / SQSS/SS/5      nUR	                  U5        S S S 5        g ! , (       d  f       g = f)Nzmust be between 0 and 1rO   r  r"   r1   r   )r\   r]   rj  rt  ru  )r&   r  rI  s      r+   test_conf_level_invalid$TestTukeyHSD.test_conf_level_invalidp  sB    :-FG
QFQF;A!!"% HGGs   0A
Ac                    [         R                  " U R                  S S 6 n[         R                  " U R                  S S 6 n[	        UR
                  UR
                  S   5        [	        UR
                  UR
                  S   5        g )Nr0   r/  r  )rj  rt  data_diff_size	ttest_indr   rU   )r&   r|  	res_ttests      r+   test_2_args_ttestTestTukeyHSD.test_2_args_ttestv  sn    OOT%8%8!%<=	OOT%8%8!%<=		(()*:*:4*@A	(()*:*:4*@Ar.   rf   N)rg   rh   ri   rj   data_same_sizer  extreme_sizesas_same_sizesas_diff_sizesas_extremerQ   r   r   r  matlab_sm_sizmatlab_diff_szr  r  r  r  r  r  r  r  r  r  rk   rf   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                       \ rS rSr\R
                  R                  S/ SQ/ SQ45      S 5       r\R
                  R                  S/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ45      S 5       rS r	S r
S rSrg)TestPoissonMeansTesti~  zc1, n1, c2, n2, p_expect)r   r   r"   r   gea?)r0   r   r3   r   g	c?c                 \    [         R                  " XX45      n[        UR                  USS9  g )Nrt   r8   rj  poisson_means_testr   rU   )r&   c1n1c2n2p_expectrW   s          r+   test_paper_examples(TestPoissonMeansTest.test_paper_examples  s&     &&rr6

H48r.   z c1, n1, c2, n2, p_expect, alt, d)rb   r4   rb   r4   g{}?r   r   )r4   r4   r4   r4   goPF?r   r   )2   r  r   r   gae?r   rr   )r"   r   rb   r  g/V-=?r   r   )r"   r   r1   rb   g")?r   r   )r1   rb   r"   r   g_'Qm~?r   r   )r1   rb   r"   r4   g|?r   r   )r   r   r  r  g0ݷ?r   r   c           	      \    [         R                  " XX4XgS9n[        UR                  USSS9  g )N)r   diffg>gؗҜ<r9   ra  r  )	r&   r  r  r  r  r  altdrW   s	            r+   test_fortran_authors)TestPoissonMeansTest.test_fortran_authors  s*    $ &&rr3O

H4eDr.   c                 n    Su  pSu  p4[         R                  " XX$5      n[        UR                  S5        g )N)r   r   r   r  r&   count1count2nobs1nobs2rW   s         r+   test_different_results+TestPoissonMeansTest.test_different_results  s2     &#&&vfD

A&r.   c                 n    Su  pSu  p4[         R                  " XX$5      n[        UR                  S5        g )Nr  r  r   r  r  s         r+   test_less_than_zero_lambda_hat24TestPoissonMeansTest.test_less_than_zero_lambda_hat2  s2     &&vfD

A&r.   c           	      ,   Su  pSu  p4Sn[        [        US9   [        R                  " SX2U5        S S S 5        [        [        US9   [        R                  " XSU5        S S S 5        Sn[        [        US9   [        R                  " SX2U5        S S S 5        [        [        US9   [        R                  " XSU5        S S S 5        Sn[        [        US9   [        R                  " USX$5        S S S 5        [        [        US9   [        R                  " XUS5        S S S 5        S	n[        [        US9   [        R                  " XX$SS
9  S S S 5        Sn[        [        US9   [        R                  " SSSSSS9  S S S 5        g ! , (       d  f       GN_= f! , (       d  f       GNB= f! , (       d  f       GN#= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr  r  z`k1` and `k2` must be integers.rO   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   r0   errorr   )r\   	TypeErrorrj  r  r]   )r&   r  r  r  r  r  s         r+   r   *TestPoissonMeansTest.test_input_validation  s    49G4$$R> 59G4$$VB> 5 F:W5$$R> 6:W5$$VB> 6 ::W5$$VR? 6:W5$$VFB? 6 =:W5$$VFK 6 3:W5$$Q1aWE 655 5444
 6555
 6555
 65
 65s_   F
F9F.(G GG#9G4(H

F
F+.
F= 
G
G #
G14
H
Hrf   N)rg   rh   ri   rj   rQ   r   r   r  r  r  r  r   rk   rf   r.   r+   r  r  ~  s    [[7  : 
9
9 [[?
 	=<=>9; 	66B "E#"E''!Fr.   r  c                       \ rS rSrS rS r\R                  R                  S/ SQ5      S 5       r	\R                  R                  S/ SQ5      S 5       r
S	 rS
 rSrg)TestBWSTesti  c                 x   [         R                  R                  S5      nUR                  SS9u  p#Sn[        R                  " [
        US9   [        R                  " X"/X3/5        S S S 5        Sn[        R                  " [
        US9   [        R                  " [         R                  /U5        S S S 5        Sn[        R                  " [
        US9   [        R                  " U/ 5        S S S 5        Sn[        R                  " [
        US9   [        R                  " X#S	S
9  S S S 5        Sn[        R                  " [
        US9   [        R                  " X#SS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f! , (       d  f       g = f)N   <ovT{ r0   r5   rf  z,`x` and `y` must be exactly one-dimensional.rO   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...r  r   )	r#   r@   rh  rQ   r   r]   rj  bws_testrT   )r&   rm  r'   r(   r  s        r+   test_bws_input_validation%TestBWSTest.test_bws_input_validation  s)   ii##$78zzvz&@]]:W5NNA6A6* 6 7]]:W5NNBFF8Q' 6 9]]:W5NN1b! 6 3]]:W5NN1[9 6 6]]:W5NN1+ 65! 65 65 65 65 65s<   E&	'E8F	FF+&
E58
F	
F
F(+
F9c                     / SQn/ SQn[         R                  " XSS9n[        UR                  SSS9  [	        UR
                  S5        g )	N)r   r0   r"   r1   r3   r5   r6   )r2   r   r4   r   r   r   r  r   r   gI+@r7   r8   gf$/g?)rj  r  r   rS   r   rU   rV   s       r+    test_against_published_reference,TestBWSTest.test_against_published_reference  s<     "&nnQ{;u48SZZ)r.   )r   rS   rU   ))r   g
-?g4B/?)r   
-g0&v?)r   r  g(?c                     [         R                  R                  S5      nUR                  SS9u  pV[        R                  " XVUS9n[        UR                  USS9  [        UR                  USSS	9  g )
Nr  r  rf  r   vIh%<=r`  rq   r   r  r#   r@   rh  rj  r  r   rS   rU   r&   r   rS   rU   rm  r'   r(   rW   s           r+   test_against_RTestBWSTest.test_against_R  s]     ii##$78zzvz&nnQ{;yu=

FDAr.   ))r   gD5H?gdԕ?)r   `ч?gȲךX?)r   r  g4)?c                     [         R                  R                  S5      nUR                  SS9nUR                  SS9n[        R                  " XVUS9n[        UR                  USS9  [        UR                  USS	S
9  g )Nl   .sZ r   rf  r6   r   r  r`  rq   r   r  r  r  s           r+   test_against_R_imbalanced%TestBWSTest.test_against_R_imbalanced	  sk     ii##$78JJAJJJAJnnQ{;yu=

FDAr.   c                    [         R                  R                  S5      nUR                  SS9u  p#[         R                  R                  S5      n[        R                  " SUS9n[        R
                  " X#US9n[        UR                  5      S:X  d   e[         R                  R                  S5      n[        R                  " SUS9n[        R
                  " X#US9n[        UR                  UR                  5        [         R                  R                  S5      n[        R                  " SUS9n[        R
                  " X#US9n[         R                  " UR                  UR                  5      (       a   eg )N   /HN( )r0   r4   rf  r4   )n_resamplesrm  r   l   VC	A )
r#   r@   rh  rj  rr  r  r  null_distributionr   allclose)r&   rm  r'   r(   r   r%  r&  rK  s           r+   test_methodTestBWSTest.test_method  s#   ii##$78zzwz'ii##$78((RSA~~a624))*b000ii##$78((RSA~~a62..0F0FGii##$78((RSA~~a62;;t55t7M7MNNNNNr.   c                    [         R                  R                  S5      nUR                  SS9nUS-
  n[        R                  " X#SS9nUR
                  S:  d   e[        UR                  S[        UR                  5      -  5        [        R                  " X#SS9nUR
                  S:  d   e[        UR                  S5        [        R                  " X2SS9nUR
                  S:  d   e[        UR                  S[        UR                  5      -  5        [        R                  " X2SS9nUR
                  S:  d   e[        UR                  S5        g )	Nr  r2   rf  r   r   r   r   r   )
r#   r@   rh  rj  r  rS   r   rU   r  r  )r&   rm  r'   r(   rW   s        r+   test_directionsTestBWSTest.test_directions2  s   ii##$78JJAJEnnQy9}}q   SZZS)>)>%?!?@nnQv6}}q   SZZ#nnQv6}}q   SZZS)>)>%?!?@nnQy9}}q   SZZ#r.   rf   N)rg   rh   ri   rj   r  r  rQ   r   r   r  r  r  r  rk   rf   r.   r+   r  r    sw    ,4* [[CNOB	OB [[CNOB	OBO.$r.   r  ).	itertoolsr   numpyr#   r@   r  rQ   numpy.testingr   r   r   r   r   r\   scipy.statsrj  r	   scipy.stats._hypotestsr
   r   r   r   r   r   r   scipy.stats._mannwhitneyur   r   r   common_testsr   scipy._lib._testutilsr   scipy.stats._axis_nan_policyr   r   r   rm   r   r|  r  r  r8  r^  r  r  rf   r.   r+   <module>r     s        0 0 *  %4 4 4 E D - 2 R4- 4-nZK ZKzl= l=^j<" j<ZP
 P
fV1 V1rU> U>ppB pBfQF QFht$ t$r.   