
    -iL                       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- " 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      nSnUR                  US-
  5      nUR                  US-
  5      n[	        X45      n[	        X4SS9n[	        X4SS9nUR
                  UR
                  :X  d   eUR
                  UR
                  :w  d   eUR                  US-
  5      nUR                  US-   5      n[	        X45      n[	        X4SS9n[	        X4SS9nUR
                  UR
                  :X  d   eUR
                  UR
                  :w  d   e[	        XC5      n[	        X4SS9n[	        X4SS9nUR
                  UR
                  :X  d   eUR
                  UR
                  :w  d   eUR                  US-   5      nUR                  US-   5      n[	        X45      n[	        X4SS9n[	        X4SS9nUR
                  UR
                  :w  d   eUR
                  UR
                  :X  d   eUR                  US-
  5      nUR                  US-
  5      nUS   US'   [	        X45      n[	        X4SS9n[	        X4SS9nUR
                  UR
                  :w  d   eUR
                  UR
                  :X  d   eg )Nr   r6   
asymptoticr   exactr"   )r#   r@   RandomStaterandr   rU   )r&   rngr   r'   r(   autor   r   s           r+   	test_autoTestMannWhitneyU.test_auto   sL    ii##A& HHQqSMHHQqSMA!!!|<
Q'2{{ell***{{j///// HHQqSMHHQqSMA!!!|<
Q'2{{ell***{{j///// A!!!|<
Q'2{{ell***{{j///// HHQqSMHHQqSMA!!!|<
Q'2{{ell***{{j///// HHQqSMHHQqSM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                 V   [         R                  R                  S5      nUR                  S5      nU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UR                  S5      nU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 )	Ni0  r2   r   r   r   rq   (   r7   )r#   r@   default_rngr   rS   absrU   )r&   r   r'   r(   res1res2s         r+   test_asymptotic_behavior)TestMannWhitneyU.test_asymptotic_behavior  s    ii##E* JJqMJJqMA1A6~~///vvdkkDKK/04777 JJrNJJrN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   r3  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   rV  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   rY  rS  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@   r&  r  r   r   r  resetstatsr   configurationsr=  minrS   )r&   r   r  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 )
Nrh  )r0   r2   ri  )r0   r3   r   )r   r   r   r   V瞯<rc  )	r#   r@   r&  rl  r   PermutationMethodr   rS   rU   )r&   r   r   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*  r0  cases_scalarr6  r9  rK  rO  r#   r[   cases_11355rT  
cases_9184r[  r`  
cases_2118re  ro  rt  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\R                   R&                  S 5       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   r2  r   r   r   )ALL_INTEGER	ALL_FLOATdtypesr#   rB   	arguments	functoolspartialrl  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 )Nrr  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     rX  r   )r   r"   r0   r5      rr  r8   )rl  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   rr  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      $@      4@)rl  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((Ƿ?rr  r8   rt   )r"   r0   r0   r"   )rl  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   rl  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      n[        R
                  R                  U[         R                  " U5      U-  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*   random_stater0   r   r   gayrr  r8   gPj$?)r#   prodr@   r   rl  multinomialrvsr   reshaper  insertrA  r   rS   rU   )r&   Nr=  rj  r   r  rW   s2r)  s3rN  s4res4s                r+   *test_contingency_table_with_zero_rows_cols6TestSomersD.test_contingency_table_with_zero_rows_colsX  s    wwu~ii##A&!!!rwwt}T'9/2 " 44;GEN 	
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                 F   SnSn[         R                  " U5      n[         R                  R                  S5      n[        R
                  R                  U[         R                  " U5      U-  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"   r2  )r#   r  r@   r&  rl  r  r  r   r  r\   r]   r  rA  )
r&   r  r=  rj  r   r  s5messages6s7s
             r+   test_invalid_contingency_tables+TestSomersD.test_invalid_contingency_tablesx  s   wwu~ii##A&!!!rwwt}T'9/2 " 44;GEN 	
 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7G%G0*HH<
G
G
G-0
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[   rl  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   rl  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)
rl  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   fliprl  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	Yrr  r8   )r@   rA   choicesrl  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  thread_unsafer  rk   rf   r.   r+   r}  r}    s    7F
	>m7^.2?,1@"H	.,';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_raisesG  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_casesa  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_zerom  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_greaterz  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   rn  )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   rl  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  r3  r9  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_2sampi6  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_input7  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_inputE  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_conoverL  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_pvalueV  s     	*9;TBr.   c                    [         R                  R                  S5      n[        R                  R                  SUS9n[        R                  R                  SU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  )rj  r  i r   r   r   )	r#   r@   r&  r	   r   r  r   r   rU   )r&   r   r'   r(   rL  s        r+   test_large_sampleTestCvm_2samp.test_large_samplea  s     ii##D)""c"B""S"A &AHH  q ! cE*AHH  q ! !r.   c                 ,   [         R                  R                  S5      nUR                  S5      nU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@   r   r   r   r   rS   r   rU   )r&   r   r'   r(   r   r   s         r+   test_exact_vs_asymptotic&TestCvm_2samp.test_exact_vs_asymptoticm  sn    ii##A&HHQKHHQK!!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   rE  s        r+   test_method_autoTestCvm_2samp.test_method_autov  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   rF  rM  rQ  xslowrT  rW  rZ  r]  rk   rf   r.   r+   r<  r<  6  s    [[Vr299Q<&8')yy|aS&9&; <-<-.K3 [[456
C6
C [[	" 	"9
+	>r.   r<  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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  )rQ       7@ffffff:@皙;@fffff=@)ffffff<@皙A@     =@皙@@皙>@)g:@gL<@gL8@g333333:@g;@)rQ  rb  gHzG:@rc  rd  re  rj  rj  )rQ  rb  rc  )
rf  rg  rh  ri  rj  rf  rg  rh  ri  rj  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 sample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  rl  	tukey_hsdconfidence_intervalintr   lowrS   highrU   )r&   datares_expect_strr9   
res_expect	res_tukeyconfrF  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
        rS  r  rk  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");
rr  r"   r3   r   r8   N)r#   ru  rw  rx  r  rl  ry  rz  r{  r   r|  rS   r}  rU   )r&   r~  r  r9   r  r  r  rF  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
        rp  rq  r2   Nrr  r  )   r>   6   r  F   4   3   r  C   r   r        r     )   rb   ,   )r  r  r  r  r   r  rX  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   h㈵>rt  )r&   str_resr  r~  r  r  rF  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 @rK  g333333@gffffff"@rJ  )g       @g      %@g333333 @r  rI  )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"   r5  r  rq   r8   N)rl  ry  rz  r#   ru  r   r|  r}  )r&   group1group2group3group4rW   r  lowerupperrF  r  s              r+   test_engineering_stat_handbook+TestTukeyHSD.test_engineering_stat_handbook5  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   rl  ry  rz  r   r|  r}  r  diagonalrS   rU   )r&   r~  rW   r  s       r+   test_rand_symmTestTukeyHSD.test_rand_symmO  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]   rl  ry  r#   r[   rv   s    r+   test_no_infTestTukeyHSD.test_no_infb  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]   rl  ry  rv   s    r+   
test_is_1dTestTukeyHSD.test_is_1df  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_emptyj  s.    :-JKOOBA	2 LKKs	   5
Ac                     Sn[        [        US9   [        R                  " / SQSS/SS/SS	9  S S S 5        g ! , (       d  f       g = f)
Nz(Expected a boolean value for 'equal_var'rO   r   r0   r2   r3   r5   False)	equal_var)r\   	TypeErrorrl  ry  )r&   rB  s     r+   test_equal_var_input_validation,TestTukeyHSD.test_equal_var_input_validationn  s7    89C0OOI1v1vI 100s	   8
Anargsr2  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_treatmentss  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]   rl  ry  rz  )r&   r  rL  s      r+   test_conf_level_invalid$TestTukeyHSD.test_conf_level_invalidx  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   r2  r  )rl  ry  data_diff_size	ttest_indr   rU   )r&   r  	res_ttests      r+   test_2_args_ttestTestTukeyHSD.test_2_args_ttest~  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  r  rk   rf   r.   r+   ra  ra    s   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J
 [[Wf-5 .5 [[T>2& 3&
Br.   ra  c                   ,   \ rS rSr/ SQ/ SQ/ SQ4r/ SQ/ SQ/ SQ/ SQ4rS	rS
r\R                  R                  \R                  R                  S\\4\\44SS/S9S 5       5       rSrSr\R                  R                  S\\4\\44SS/S9S 5       rSrg)TestGamesHowelli  )g      8@      7@g      ?@     I@)g      A@      2@r  g      :@)g      1@g      Q@g     M@g      @)g      >@r  r  )g     @Tg     Q@g      ;g     O@)g      E@g      &@g      =@g      3@g      I@)r  g      6@r  r  g      "@aK  
            Mean Diff      Lower Bound         Upper Bound         Sig
    0 - 1   8.25000000    -16.5492749527311    33.0492749527311    0.558733632413559
    0 - 2  -5.50000000    -63.6702454316458    52.6702454316458    0.941147750599221
    1 - 2  -13.7500000    -74.3174374251372    46.8174374251372    0.682983914946841
    a+  
             Mean Diff       Lower Bound        Upper Bound         Sig
    0 - 1	 28.16666667    -141.985416377670   198.318749711003	0.8727542747886180
    0 - 2	 4.466666667	-37.2830676783904   46.2164010117237	0.9752628408671710
    0 - 3	 16.26666667	-35.0933112382470   67.6266445715803	0.4262506151302880
    1 - 2	-23.70000000	-195.315617201249   147.915617201249	0.9148950609000590
    1 - 3	-11.90000000	-188.105478728519   164.305478728519	0.9861432250093960
    2 - 3	 11.80000000	-16.2894857524254	39.8894857524254    0.4755344436335670
    zdata, res_expect_strrk  rl  rm  c                    [         R                  " UR                  SS5      R                  5       SS [        S9R                  SS5      n[        R                  " USS	06nUR                  5       nU H  u  pgpp[        U5      [        U5      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)z
DATA LIST LIST /Group (F1.0) Value (F8.2).
BEGIN DATA
0 24
0 23
0 31
0 51
1 34
1 18
1 18
1 26
2 17
2 68
2 59
2 7
END DATA.

ONEWAY Value BY Group
    /MISSING ANALYSIS
    /POSTHOC=GH ALPHA(0.05).
rp  rq  r5   Nrr  r   r3   r  Fg:0yE>r8   r   r  )r#   ru  rv  rw  rx  r  rl  ry  rz  r{  r   rS   rU   r|  r}  )r&   r~  r  r  	res_gamesr  rF  r  r  r  r  r*   s               r+   test_compare_spss!TestGamesHowell.test_compare_spss  s    8 ZZ""5#.446qr: Q 	 OOT;U;	,,. *A!q63q6qI//5qtDI,,QT2ADADHHQTNAD9DIIadOQT: !+r.   z
                  q value             Pr(>|q|)
    1 - 0 == 0   -1.5467805948856344  0.55873362851759
    2 - 0 == 0    0.4726721776628535  0.94114775035993
    2 - 1 == 0    1.246837541297872   0.68298393799782
    aw  
                 q value             Pr(>|q|)
    1 - 0 == 0  -1.0589317485313876  0.87275427357438
    2 - 0 == 0  -0.5716222106144833  0.97526284087419
    3 - 0 == 0  -2.6209678382077000  0.42625067714691
    2 - 1 == 0   0.8971899898179028  0.91489506061850
    3 - 1 == 0   0.4579447210555352  0.98614322544695
    3 - 2 == 0  -2.198800177874794   0.47553444364614
    c                 Z   [         R                  " UR                  SS5      R                  SS5      R                  5       SS [        S9R                  SS5      n[        R                  " US	S
06nU H5  u  pV  px[        U5      [        U5      pV[        UR                  Xe4   USS9  M7     g)a  
games-howell is provided by PMCMRplus package
https://search.r-project.org/CRAN/refmans/PMCMRplus/html/gamesHowellTest.html
> library("PMCMRplus")
> options(digits=16)
> table = data.frame(
    values = c(24., 23., 31., 51., 34., 18., 18., 26., 17., 68., 59.,  7.),
    groups = c("0", "0", "0", "0", "1", "1", "1", "1", "2", "2", "2", "2")
  )
> table$groups = as.factor(table$groups)
> fit <-aov(values ~ groups, table)
> res = gamesHowellTest(fit)
> summary(res)
rp  rq  z == r"   Nrr  r   r2   r  Fr  r8   )r#   ru  rv  rw  rx  r  rl  ry  r{  r   rU   )	r&   r~  r  r  r  r  rF  _r*   s	            r+   r  TestGamesHowell.test_compare_r  s    ( ZZ""5#.WVS!%%'!". !Q 	 OOT;U;	 (MA!Qq63q6qI,,QT2ADA (r.   rf   N)rg   rh   ri   rj   r  r  spss_same_sizespss_diff_sizerQ   r   r_  r   r  r_same_sizer_diff_sizer  rk   rf   r.   r+   r  r    s    ***,N &,/.0N
NN [[[[3,n=+^<>!4!6!8  9
!;9 !;FKK [[3,k:+[9;!4!6!8  9
B9
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   rl  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   rd  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\   r  rl  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)TestBWSTestiS  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   ri  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@   r&  rQ   r   r]   rl  bws_testrT   )r&   r   r'   r(   r  s        r+   test_bws_input_validation%TestBWSTest.test_bws_input_validationU  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?)rl  r  r   rS   r   rU   rV   s       r+    test_against_published_reference,TestBWSTest.test_against_published_referenceo  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  ri  r   vIh%<=rc  rq   r   r  r#   r@   r&  rl  r  r   rS   rU   r&   r   rS   rU   r   r'   r(   rW   s           r+   test_against_RTestBWSTest.test_against_Ry  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   ri  r6   r   r  rc  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   ri  r4   )n_resamplesr   r   l   VC	A )
r#   r@   r&  rl  rs  r  r  null_distributionr   allclose)r&   r   r'   r(   r   r(  r)  rN  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   ri  r   r   r   r   r   )
r#   r@   r&  rl  r  rS   r   rU   r  r!  )r&   r   r'   r(   rW   s        r+   test_directionsTestBWSTest.test_directions  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	  S  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.statsrl  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  r<  ra  r  r  r	  rf   r.   r+   <module>r1     s        0 0 *  %4 4 4 E D - 2 R4- 4-nZK ZKzl= l=^m<" m<`P
 P
fV1 V1rU> U>puB uBpsB sBrQF QFht$ t$r.   