
    CpjA                       S SK Jr  S SKrS SKrS SKrS SKJrJrJ	r	  S SKJ
r  S SKJr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$J%r%J&r&J'r'J(r(  S SK)J*r*J+r+  S SK,J-r-J.r.  \/r/\R`                  Rb                  r1\#" \5       " S S5      5       r2\#" \R&                  5       " S S5      5       r3\#" \R4                  5       " S S5      5       r4 " S S\5      r5 " S S5      r6 " S S5      r7\#" \5       " S S5      5       r8 " S S5      r9 " S S5      r: " S  S!5      r;\#" \Rx                  5       " S" S#5      5       r=g)$    )productN)assert_assert_equalassert_allclose)raises)statsspecial)distributions)epps_singleton_2sampcramervonmises_cdf_cvmcramervonmises_2samp_pval_cvm_2samp_exactbarnard_exactboschloo_exact)mannwhitneyu
_mwu_state_MWU)_TestPythranFunc)array_api_extra)make_xp_test_casexp_default_dtypeis_numpyeager_warnsxp_ravelis_jax)xp_assert_equalxp_assert_close)SmallSampleWarningtoo_small_1d_not_omitc                   z    \ rS rSrS r\R                  R                  S/ SQ5      S 5       rS r	S r
S rS	 rS
rg)TestEppsSingleton   c                    UR                  / SQ5      nUR                  / SQ5      nUR                  SS/5      n[        U5      (       aU  [        X#US9u  pV[        XQR                  UR                  5      5        [        XaR                  UR                  5      5        g Sn[
        R                  " [        US9   [        X#US9  S S S 5        g ! , (       d  f       g = f)N)ffffffֿffffff@Gz?\(\?ffffff?)ffffff333333ÿףp=
@      
@Gz@皙?gٿ)tz&t must contain positive elements only.match)asarrayr   r   r   nanpytestr   
ValueError)selfxpxyr0   wpmessages           \/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/stats/tests/test_hypotests.pytest_epps_singleton_iv(TestEppsSingleton.test_epps_singleton_iv   s     JJ67JJ78JJT{#"::'2DAAzz"&&12Azz"&&12>Gz9$QQ/ :99s   :C
CdtypeNfloat32float64c                     Uc  [        U5      O
[        X!5      nUR                  / SQUS9nUR                  / SQUS9n[        X45      u  pV[	        XRR                  SUS9SS9  [	        XbR                  SUS9SS9  g )	N)
r%   r&   r'   r(   r)   gQ@gq=
ףp?gGzgGz׿gp=
#(@rA   )
r*   r+   r,   r-   r.   g)\(@      @g(\@g(\ @333333!@gHzG.@gQ?atolgQ,r?-C6?)r   getattrr3   r   r   )r7   rA   r8   r9   r:   r;   r<   s          r>   test_statistic_1"TestEppsSingleton.test_statistic_1,   s     ). $72;MJJ 9@E  GJJ 3:?  A#A)::e5:9E::gU:;&I    c                     UR                  / SQ5      nUR                  / SQ5      n[        X#5      u  pE[        XAR                  S5      SS9  [        XQR                  S5      SS9  g )N)r         rR   rR   rR      rS   rS   rS         rU   rU   rU      
   rW   rW   rW   )rW   rT   r   rU   rW   rW   r   rU   rV      rW   rS   rQ   rX   r      rQ   rU   rY   rW   g!@MbP?rI   g&J?g-C6
?)r3   r   r   )r7   r8   r9   r:   r;   r<   s         r>   test_statistic_2"TestEppsSingleton.test_statistic_2;   sZ    JJ 7 8JJ 8 9#A)::e,48::g.T:rO   c                 r   [         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      )nparanger   listtupler   )	r7   r9   r:   w1p1w2p2w3p3s	            r>   test_epps_singleton_array_like0TestEppsSingleton.test_epps_singleton_array_likeE   sv    yy}biim1%d1gtAw7%eAha9%a+BBrO   c                 v   UR                  / SQ5      UR                  S5      p2[        [        [        US9   [        X#5      n[        UR                  UR                  UR                  5      5        [        UR                  UR                  UR                  5      5        S S S 5        g ! , (       d  f       g = f)NrQ   rR   rS   rT   rW   r2   r8   )
r3   ra   r   r   r    r   r   	statisticr4   pvalue)r7   r8   r9   r:   ress        r>   test_epps_singleton_size*TestEppsSingleton.test_epps_singleton_sizeO   su    zz,'21+3HRP&q,CCMM2::bff+=>CJJ

266(:; QPPs   A*B**
B8c                 \   [         R                  R                  S5      nUR                  SS9nUR                  SS9n[         R                  " / SQ5      n[	        X4SS9u  pg[         R
                  Xe'   [         R
                  Xu'   [         R
                  X5S   S4'   [         R                  X5S	   S	4'   [         R                  * XES
   S
4'   UR                  U5      UR                  U5      pC[	        X4SS9u  p[        XR                  U5      5        [        XR                  U5      5        g )Nl   2$>. )rW      size)rW      )rQ   rT   	   axisr   rQ   rR   )r`   randomdefault_rngr3   r   r4   infr   )
r7   r8   rngr9   r:   iw_refp_refw_resp_ress
             r>   test_epps_singleton_nonfinite/TestEppsSingleton.test_epps_singleton_nonfiniteW   s    ii##N3JJHJ%JJHJ%JJy!+Ar:6666VVA$'
VVA$'
ffWA$'
zz!}bjjm1+Ar:zz%01zz%01rO    N)__name__
__module____qualname____firstlineno__r?   r5   markparametrizerM   r[   rj   rr   r   __static_attributes__r   rO   r>   r"   r"      sD    0 [[W&BCJ DJ; <2rO   r"   c            
       H   \ rS rSr\R
                  R                  SS/ SQ/ SQ4S/ SQ/ SQ4S	/ S
Q/ SQ4S/ SQ/ SQ4/5      S 5       rS rS r	S r
S r\R
                  R                  SSS//5      S 5       r\R
                  R                  S/ SQ5      S 5       rS rSrg)TestCvmk   z	n, x, refrT   )gy;i?g#^?gE>?gD
)?){Gz?皙?      ?g+?rW   )g8*5?g@߾?gHm?g%1 ?)r   r   r   g333333?  )g}tg?g`?gI5o?gׁsF?N)a+e?+?&pn?+MJA?c                 j    [        [        UR                  U5      U5      UR                  U5      SS9  g NrK   rI   )r   r   r3   )r7   nr9   refr8   s        r>   test_cdf_refTestCvm.test_cdf_refp   s'     	A2BJJsO$OrO   c                     [        [        UR                  SS/5      S5      UR                  SS/5      5        [        [        UR                  SS/5      S5      UR                  SS/5      5        g )	NgX(~$?gUUUUU5f@i                ?gaah?g"@r#   )r   r   r3   )r7   r8   s     r>   test_cdf_supportTestCvm.test_cdf_supporty   s`    Z,?!@#F

B8,	._j,I!JBO

B8,	.rO   c                 f    UR                  / SQ5      n[        [        US5      [        U5      SS9  g )N)r   r   r   r   d   '  rK   rI   )r3   r   r   r7   r8   r9   s      r>   test_cdf_large_nTestCvm.test_cdf_large_n   s(    JJ@AE*HQKdCrO   c                     UR                  SUR                  S9nS[        US5      s=:  a  S:  d   e   eS[        U5      s=:  a  S:  d   e   eg )Ngt@rF   gwJ?r   r   )r3   rD   r   r   s      r>   test_large_xTestCvm.test_large_x   sW     JJuBJJJ/(1d+1c12121(1+++,+,+rO   c                     Sn[        UR                  U5      S-  [        R                  5      n[	        UR
                  X!S9S:  d   e[        UR                  UR                  S5      5        g )Nrx   皙?)r8   r   r   )	r   onesr	   ndtrr   ro   r   rp   r3   )r7   r8   r   rq   s       r>   
test_low_pTestCvm.test_low_p   sT     RWWQZ^W\\:q03666

BJJrN3rO   r9   r         ?c                    [         R                  " [        [        S9   [	        UR                  U5      [        R                  5      n[        UR                  UR                  UR                  5      5        [        UR                  UR                  UR                  5      5        S S S 5        g ! , (       d  f       g = f)Nr1   )r5   warnsr   r    r   r3   r	   r   r   ro   r4   rp   )r7   r9   r8   rq   s       r>   test_invalid_inputTestCvm.test_invalid_input   sm    \\,4IJ A=CCMM2::bff+=>CJJ

266(:; KJJs   BB//
B=rA   rB   c                   ^ Uc  [        T5      O[        TU5      n[        TR                  / SQUS9[        R
                  5      n[        UR                  TR                  SUS95        [        UR                  TR                  SUS95        [        TR                  / SQUS9S 5      n[        UR                  TR                  SUS95        [        UR                  TR                  SUS95        [        TR                  / SQUS9U4S	 j5      n[        UR                  TR                  S
US95        [        UR                  TR                  SUS95        g )N)g333333rR   r   g?rT   皙?333333?rF   gӈk&q?gDC+?c                 :    [         R                  " U S-
  S-  5      $ )NrS   r   )r	   r   )r9   s    r>   <lambda>'TestCvm.test_values_R.<locals>.<lambda>   s    w||QUCK'@rO   grW*?gju2`?)	rQ   rR   rU   ffffff?gQ?ru      ?      @c                 *   > TR                  U * 5      * $ N)expm1)r9   r8   s    r>   r   r      s    rxx|mrO   g  .?g`(r?)	r   rL   r   r3   r	   r   r   ro   rp   )r7   rA   r8   rq   s     ` r>   test_values_RTestCvm.test_values_R   s'   (- $72u;M
 RZZ(FeZT$\\+rzz2B%z'PQ

BJJuJ$MN RZZ(FeZT@Brzz2B%z'PQ

BJJ/@J$NO JJ=UJK#% 	rzz2B%z'PQ

BJJ/@J$NOrO   c                    [        U5      (       dB  Sn[        R                  " [        US9   [	        UR                  / SQ5      S5        S S S 5        g [        R                  " S5      SpC[	        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 ! , (       d  f       g = f)Nz7`cdf` must be a callable if `rvs` is a non-NumPy array.r1   rQ   rR   rS   betarU   )r   ffffff?expon)r   r5   r   r6   r   r3   r`   ra   r
   r   cdfr   ro   rp   r   )r7   r8   r=   r9   argsr   rq   s          r>   test_str_cdfTestCvm.test_str_cdf   s    ||OGz9rzz)4f= :))A,
4Q 3 3 7 78Q(cmmSZZ03==#**2MNQ 2 2 6 6=Q-cmmSZZ03==#**2MN :9s   D==
E)r   r   r   r   r5   r   r   r   r   r   r   r   r   r   r   r   r   rO   r>   r   r   k   s    
 [[[	
02JK	13KL	35MN	35MN	+ PP.D
-4 [[S2u+.< /< [[W&BCP DP0OrO   r   c                   0   \ rS rSrS rS 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      \R                  R                  S/ SQ5      S 5       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/ S/Q/ S0QS1.r/ S2Q/ S3Q/ S4Q/ S5Q/ S6Q/ S7QS8.rS9 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\" SFSGSH9SI 5       r/ SJQSKSLSMSN\ RB                  SKSOSPSQSQSR/SSST4/ SJQSKSLSMSN\ RB                  \ RB                  SOSPSQSQSR/SUSV4SPSO\ RB                  SQ/SKSLSMSN\ RB                  SKSOSPSQSQSR/SWSX4SPSO\ RB                  SQ/SKSLSMSN\ RB                  \ RB                  SOSPSQSQSR/SYSZ4SP\ RB                  \ RB                  SQ/SKSLSMSN\ RB                  \ RB                  SOSPSQSQSR/S[S\4/r"\R                  R                  S]\"5      S^ 5       r#/ S_Q/ S`Q/ SaQ/ SbQ/ ScQ/ SdQ/ SeQ/ SfQ/ SgQ/	r$\R                  R                  Sh\$5      Si 5       r%\" SFSGSH9Sj 5       r&/ SkQSlSm/SSn// SkQSlSm/SSn// SkQSlSm/SSo// S&QSO/SSp// S&QSO/SSp// S&QSO/SSq/SPSO/SPSO/SSr/SPSO/SPSO/SSr/SPSO/SPSO/SSs//	r'\R                  R                  / StQ\'5      Su 5       r(Sv r)\R                  R                  Sw/ SxQ5      Sy 5       r*/ SzQr+/ S{Qr,S|r-S} r.S~ r/S r0S r1S r2Sr3g)TestMannWhitneyU   c                     US:X  a  [         R                  " U5      nU$ US:X  a  [         R                  " U5      * nU$ X#U-  S-  :  a  [         R                  " US-  5      O[         R                  " US-  5      * nU$ )NlessgreaterrR   )r	   ndtri)r7   r<   Un1n2alternativezs          r>   get_zstatistic_from_pvalue+TestMannWhitneyU.get_zstatistic_from_pvalue   sx    & a A
 	 I%q!!A  '(R%'kac"ac8J7JArO   c                 N   UR                  SS/5      nUR                  SS/5      nUR                  / UR                  S9nUR                  UR                  5      n[        R                  " [
        [        S9   [        X$5      n[        UR                  U5        [        UR                  U5        S S S 5        [        R                  " [
        [        S9   [        XC5      n[        UR                  U5        [        UR                  U5        S S S 5        [        R                  " [
        [        S9   [        XD5      n[        UR                  U5        [        UR                  U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N}= f! , (       d  f       g = f)NrQ   rR   rS   rT   rF   r1   )r3   rA   r4   r5   r   r   r    r   r   ro   rp   )r7   r8   r9   r:   emptyr4   rq   s          r>   
test_emptyTestMannWhitneyU.test_empty   s'   JJ1vJJ1v

2QWW
-jj \\,4IJq(CCMM3/CJJ, K
 \\,4IJu(CCMM3/CJJ, K
 \\,4IJu,CCMM3/CJJ, KJ KJ
 KJ
 KJs$   98E48F38F4
F
F
F$c                    UR                  SS/5      nU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)NrQ   rR   rS   rT   z`use_continuity` must be oner1   ekki)use_continuityz`alternative` must be one ofr   z`axis` must be an integerr   r{   z`method` must be one ofmethod)r3   assert_raisesr6   r   )r7   r8   r9   r:   s       r>   test_input_validation&TestMannWhitneyU.test_input_validation   s    JJ1vJJ1v:-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/   B,B=7CC,
B:=
C
C
C-c                    [        U5      (       aO  Sn[        R                  " [        US9   [	        UR                  S5      UR                  S5      5        S S S 5        g [        R                  R                  S5      nSnUR                  UR                  US-
  5      5      nUR                  UR                  US-
  5      5      n[	        XV5      n[	        XVSS9n[	        XVS	S9n	UR                  U	R                  :X  d   eUR                  UR                  :w  d   eUR                  UR                  US-
  5      5      nUR                  UR                  US-   5      5      n[	        XV5      n[	        XVSS9n[	        XVS	S9n	UR                  U	R                  :X  d   eUR                  UR                  :w  d   e[	        Xe5      n[	        XVSS9n[	        XVS	S9n	UR                  U	R                  :X  d   eUR                  UR                  :w  d   eUR                  UR                  US-   5      5      nUR                  UR                  US-   5      5      n[	        XV5      n[	        XVSS9n[	        XVS	S9n	UR                  U	R                  :w  d   eUR                  UR                  :X  d   eUR                  UR                  US-
  5      5      nUR                  UR                  US-
  5      5      n[        R                  " U5      S
   R                  US
   5      n[	        XV5      n[	        XVSS9n[	        XVS	S9n	UR                  U	R                  :w  d   eUR                  UR                  :X  d   eg ! , (       d  f       g = f)Nz0`method='auto'` is incompatible with JAX arrays.r1   rW   l   nEQWSfrY   rQ   
asymptoticr   exactrS   )r   r5   r   r6   r   ra   r`   r}   r~   r3   rp   xpxatset)
r7   r8   r=   r   r   r9   r:   autor   r   s
             r>   	test_autoTestMannWhitneyU.test_auto   s   "::HGz9RYYr]BIIbM: :ii##$67 JJszz!A#'JJszz!A#'A!!!|<
Q'2{{ell***{{j///// JJszz!A#'JJszz!A#'A!!!|<
Q'2{{ell***{{j///// A!!!|<
Q'2{{ell***{{j///// JJszz!A#'JJszz!A#'A!!!|<
Q'2{{ell***{{j///// JJszz!A#'JJszz!A#'FF1IaLQqT"A!!!|<
Q'2{{ell***{{j/////e :9s   +M88
N)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   )      0@
+?r   )r   
+?r   )r   缌%c?r   )r   g9:?)r   g9:?)r   g*::?)kwdsexpectedrA   rB   c                 2   Uc  [        U5      O
[        XC5      nUR                  U R                  US9UR                  U R                  US9pe[        XV40 UD6n[        UR                  UR                  US   US95        [        UR                  UR                  US   US95        US   S:X  ah  U R                  UR                  UR                  UR                  S   UR                  S   US   S9n[        UR                  UR                  XS95        g g )NrF   r   rQ   r   r   r   r   )r   rL   r3   r9   r:   r   r   ro   rp   r   shape
zstatistic)	r7   r   r   rA   r8   r9   r:   rq   r   s	            r>   
test_basicTestMannWhitneyU.test_basicU  s     ). $72;Mzz$&&z.

466
0O11(4(rzz(1+Uz'KL

BJJx{%J$HI>\)//

CMM01
AGGAJ<@<O 0 QA CNNBJJqJ,FG	 *rO   T)r   r   )      7@r   )r  r   )r  r   F)r  gl,KNh?)r  giژ?)r  gl,KNh?c                    UR                  U R                  5      UR                  U R                  5      pT[        XT4SS0UD6n[	        UR
                  UR                  US   5      5        [	        UR                  UR                  US   5      5        U R                  UR                  UR
                  UR                  S   UR                  S   US   S9n[	        UR                  UR                  U5      5        g )Nr   r   r   rQ   r   r   )
r3   r9   r:   r   r   ro   rp   r   r   r   )r7   r   r   r8   r9   r:   rq   r   s           r>   test_continuity TestMannWhitneyU.test_continuityp  s     zz$&&!2::dff#511===rzz(1+'>?

BJJx{$;<++CJJ,-GGAJ
8<]8K , M 	

16rO   c           
         UR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      S-  nUR                  / SQ5      S-  nUR                  US-
  X4-
  X5-
  X3U-   X4-   US-   /5      n[        X&SSS9n/ S	Qn/ S
Qn	[        UR                  UR                  U5      5        [        UR                  UR                  U	5      5        g )Nr          @      @      @)r   r	  r
  r  rG   )r   r   r   r   r   r   )r   r   r   r   r   rz   r   )r|   r   )rW   ry         !@rY   r   rX   rV   )rQ   g]U?g[?gi\?gZX<_?gx.?g 
?)r3   stackr   r   ro   r   rp   )
r7   r8   r9   y0dydy2r:   rq   
U_expected
p_expecteds
             r>   test_tie_correct!TestMannWhitneyU.test_tie_correct  s     JJ'(ZZ,-ZZ,-d2jj-.t3HHbgrubfbS&"%DIJ1b>/
I
rzz*'=>

BJJz$:;rO   )g      ?r   g      ?)r   皙?r/   r   )r   r   r  r)   r   g?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?rm   )gK7A`?gZd;O?r   gMbX?)Mb?RQ?RQ?M?r  r  )	g;On?;On?V-?g      ?gJ+?r  gx&?r   gCl?)Mb?Mb?Mb?gy&1?r  M?g|?5^?gn?g\(\?!rh?K7?)Mbp?r   r!  r  ~jt?g333333?g"~j?ףp=
?gzG?K7?gGz?gl?r   gI+?rQ   rR   rS   rT   rU   )r#  r  g1Zd?r  )r  r  r#  1Zd?g%C?r  r  )
g~jt?g~jt?r'  gsh|??gS㥛?r  r)  g+?r$  r%  )g{Gzt?r   g~jt?gL7A`?r  gjt?gPn?gI+?gX9v?gQ?gMb?gsh|??gK7A`?)Mb`?r&  g;On?gQ?g9v?gˡE?gT㥛 ?gbX9ȶ?grh|?gQ?r+  gx&?gv/?gMbX?g(\?gQ?)rZ   r,  r&  r   g9v?g/$?r"  r  gL7A`?g
ףp=
?gQ?r(  gK7?g`"?g7A`?r)   gV-?gjt?gˡE?)rQ   rR   rS   rT   rU   rV   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   )rS   rT   rU   rV   )krZ   rI   rQ   rz   )setattrr   r   pn3pn4pm5pm6itemsr`   ra   lenr.  
set_shapesr   r   sfpmf)
r7   p_tablesr   tablemr<   uu2r9  pmf2s
             r>   test_exact_distribution(TestMannWhitneyU.test_exact_distribution  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/ ''-!||''"'-*) & )rO   c                    [         R                  R                  S5      nUR                  UR                  S5      5      nUR                  UR                  S5      5      n[	        X4SS9n[	        X4SS9nUR
                  UR
                  :X  d   eUR                  UR                  UR                  -
  5      S:  d   eUR                  UR                  S5      5      nUR                  UR                  S5      5      n[	        X4SS9n[	        X4SS9nUR
                  UR
                  :X  d   eUR                  UR                  UR                  -
  5      S:  d   eg )	Ni0  rU   r   r   r   r   (   rZ   )r`   r}   r~   r3   r   ro   absrp   )r7   r8   r   r9   r:   res1res2s          r>   test_asymptotic_behavior)TestMannWhitneyU.test_asymptotic_behavior  s   ii##E* JJszz!}%JJszz!}%A1A6~~///vvdkkDKK/04777 JJszz"~&JJszz"~&A1A6~~///vvdkkDKK/04777rO   c                    UR                  / SQ5      UR                  SS/5      p2[        X#SSS9n[        X#SSS9n[        UR                  UR                  5        UR                  S:  d   e[        X#S	SS9n[        UR                  UR                  S
5      5        [        UR                  UR                  S5      5        g )Nr   r	  r
  r         @r   r   r   r   r   r   r
  r   )r3   r   r   rp   ro   )r7   r8   r9   r:   res_lres_grq   s          r>   test_exact_U_equals_mean)TestMannWhitneyU.test_exact_U_equals_mean  s     zz,'S#J)?1QvgFQyIell3||c!!!1[Irzz"~6

BJJrN3rO   r   r   )r   r   )r   g郡E?)r   rQ   )r   resultc                 .    [        [        S0 UD6U5        g )NrQ   rR   )r   r   )r7   r   rQ  s      r>   test_scalar_data!TestMannWhitneyU.test_scalar_data   s     	2T2F;rO   c           
         [        [        SSSS9S5        [        [        SSSSS9S5        [        [        SSSSS9S5        [        [        SSSS9S	[        R                  45        [        [        SSSSS
S9S	[        R                  45        [        [        SSSSS
S9S	[        R                  45        [        [        SSSS
S9S	[        R                  45        g )NrQ   r   r   )r   rQ   r   r   r   r   r   r   F)r   r   r   )r   r   )r   r   r`   r4   r7   s    r>   test_equal_scalar_data'TestMannWhitneyU.test_equal_scalar_data  s     	\!Qw7B\!Q|P	\!Q|S	\!Q|<266]	$
 	\!Q|168:=rvv	H\!Q|168:=rvv	H\!Q|168:=rvv	HrO   r   c                 f   [         R                  R                  S5      nSnSu  pVUR                  USS45      nUR                  SUSS45      S-   n[        UR	                  U5      UR	                  U5      XS	9n	S
n
U	R
                  R                  U
:X  d   eU	R                  R                  U
:X  d   e[         R                  " XtS5      [         R                  " XS5      pUS   nUR                  UR                  :X  d   e[         R                  " XzU4-   5      n[         R                  " XU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  H2  nX~   nX   n[        UUUS9nUR                  X'   UR
                  X'   M4     [        U	R
                  UR	                  U5      SS9  [        U	R                  UR	                  U5      SS9  g s  snf )Nl   2=U )rX   rW   rS   rY   rV   rQ   r   )r   r|   )rV   rS   rY   rz   )N.r   缉ؗҜ<rI   )r`   r}   r~   r   r3   rp   r   ro   moveaxisndimbroadcast_tozerosr   ranger   )r7   r   r8   r   r|   r<  r   r9   r:   rq   r   
statisticspvaluesr   indicesxiyitemps                     r>   test_gh_12837_11113$TestMannWhitneyU.test_gh_12837_11113  s    ii##J/ JJ1ay!JJ1a|$s*2::a="**Q-R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Bv6D"&..J#{{G ; 	

BJJw$7eDrzz*'=EJ !:s   H.c                 h   / SQn/ SQn[        UR                  U5      UR                  U5      SS9nSUS'   [        R                  US'   [        UR                  U5      UR                  U5      SS9n[	        UR
                  UR
                  5        [	        UR                  UR                  5        g )Nrm   )rS   rV   rX   rY   ry   rS   rR   rQ   rT   rT   rU   r   r   r   r   rT   )r   r3   r`   r   r   ro   rp   )r7   r8   r9   r:   rE  rF  s         r>   test_gh_11355TestMannWhitneyU.test_gh_11355H  s    -BJJqM2::a=N !vv!BJJqM2::a=N7T[[1rO   z	jax.numpyzneeds jax-ml/jax#34490)reasonc                 R   / SQnSSS[         R                  SSSSSSS	/n[        UR                  U5      UR                  U5      5      n[	        UR
                  UR                  UR                  5      5        [	        UR                  UR                  UR                  5      5        g )
Nr  rS   rV   rX   ry   rR   rQ   rT   rU   )r`   r4   r   r3   r   ro   rp   )r7   r8   r9   r:   res3s        r>   test_gh11355_nan!TestMannWhitneyU.test_gh11355_nanV  s{     1bffaAq!Q2BJJqM2::a=9

266(:;RZZ%78rO   )r   rR   rS   rT   rS   rV   rX   rY   rR   rQ   rT   rU         $@g+zQ?r  g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r9   r:   ro   rp   c                     [        UR                  U5      UR                  U5      SS9n[        UR                  UR                  U5      SS9  [        UR                  UR                  U5      SS9  g )Nr   r   -q=rI   )r   r3   r   ro   rp   )r7   r9   r:   ro   rp   r8   rq   s          r>   test_gh_11355bTestMannWhitneyU.test_gh_11355bo  sT     2::a="**Q-Mrzz)'<5I

BJJv$6UCrO   )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UR                  / SQ5      nUR                  / SQ5      n[        XxUX#S9n	[        U	R                  UR                  U5      5        [	        U	R
                  UR                  U5      5        g )Ng     A@)
r   g(\?g=
ףp=?gp=
ף?g333333?gGz?g(\?g=
ףp=?r(   g\(\?)gffffff?g)\(?r   gGz?g\(\?r   r   r   )r3   r   r   ro   r   rp   )
r7   r   r   r   ry  r8   statistic_expr9   r:   rq   s
             r>   test_gh_9184TestMannWhitneyU.test_gh_9184  sg    . JJSTJJ561'2Crzz-'@A

BJJz$:;rO   c                    UR                  UR                  5      nUR                  X"X"U/5      nUR                  X"X"U/5      n[        X45      n[	        UR
                  UR                  U5      5        [	        UR                  U5        g r   )r3   r4   r  r   r   ro   rp   )r7   r8   r4   abrq   s         r>   test_gh_4067TestMannWhitneyU.test_gh_4067  sn     jj HHc#./HHc#./1 rzz#7

C(rO   rJ  r   rK  )r
  ga׀}?)r
  r   )r   g?h?)r   r   )r	  g5&#\?)r	  r   )r9   r:   r   r   c                 0   [        UR                  U5      UR                  U5      SUSS9n[        U5      UR                  :X  a  SOSn[	        UR
                  UR                  US   5      US9  [	        UR                  UR                  US   5      US9  g )	NTr   r{  ư>rv  r   rtolrQ   )r   r3   r   rC   r   ro   rp   )r7   r9   r:   r   r   r8   rq   r  s           r>   test_gh_2118TestMannWhitneyU.test_gh_2118  s{     2::a="**Q-'2<I'+rzz9turzz(1+'>TJ

BJJx{$;$GrO   c                    [         R                  R                  S5      nSu  p4UR                  UR                  US9R	                  5       5      nUR                  UR                  US9R	                  5       5      n[        [        S[        SS5      5        [        R                  R                  5         [        R                  " XVSS9n[        R                  R                  R                  nUS   [        UR                  X4-  UR                  -
  5      S	-   :X  d   e[        R                  " XeS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 )rU   ru   rv   r.  r   r   r   rz   rQ   r   rW  )r`   r}   r~   r3   tolistr0  r   r   r.  resetr   r   configurationsr   minro   )	r7   r8   r   r<  r   r9   r:   rq   r   s	            r>   test_gh19692_smaller_table+TestMannWhitneyU.test_gh19692_smaller_table  s   
 ii##$78JJszzqz)0023JJszzqz)0023
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9rO   r   )r   r   r   c                    [         R                  R                  S5      nUR                  UR                  SS95      nUR                  UR                  SS95      n[        R
                  " XE[        R                  " 5       USS9n[        R
                  " XESUSS9n[        UR                  UR                  SS	9  [        UR                  UR                  SS	9  g )
Nr  )rR   rU   rv   )rR   rV   rQ   )r   r   r|   r   V瞯<r  )
r`   r}   r~   r3   r   r   PermutationMethodr   ro   rp   )r7   r   r8   r   r9   r:   rq   rF  s           r>   test_permutation_method(TestMannWhitneyU.test_permutation_method  s    ii##$78JJszzvz./JJszzvz./  e.E.E.G-8qB!!!w.9Ct~~EB

DKKe<rO   )g	U3@g^3@gt3@g]o5@gzS4@gt< 4@gM	X3@gXmCk4@gLo&3@gfɘ2@g{m;^3@ga A$|3@gMѢ_4@g#3@g19T_3@ggC2@gqR4@gKk/4@g܁3@gZ2@g_
3@g$`3@g
x4@g3#л5@g;VND1@g >H2@gr4@gyܤ2@g?4@g=bɇ3@)gpG3@gL:j0@g2@gJNnC1@gR;`(3@g+Pi,2@g6:Z2@gZ"3=2@gF	uSa	3@gXҀ2@gX3^83@g21@gJ2@gZ)E2@gU83@g50@gԆ3@gFz33@gz3@gڴ3@g+=c                 ,   UR                  U R                  5      UR                  U R                  5      p2[        SS9n[        R
                  " X#4SS0UD6u  pV[        R
                  " X24SS0UD6u  px[        R
                  " X#4SS0UD6u  p[        R
                  " X24SS0UD6u  p[        Xh5        [        X5        Xj:w  d   e[        XQR                  S5      5        [        XqR                  S5      5        [        XR                  S5      5        [        XR                  S5      5        [        XaR                  S5      U R                  S	9  UR                  UR                  :X  a  U R                  OS
n[        XR                  S5      USS9  g )Nr   r   r   r   r         @     Y@g=_A?r  Mb@?glPz.?r]  r  rJ   )r3   XYdictr   r   r   r   r  rA   rD   r7   r8   r  r  kwargsu1re   r>  rg   u3ri   u4p4r  s                 r>   test_mannwhitneyu_one_sided,TestMannWhitneyU.test_mannwhitneyu_one_sided  sB   zz$&&!2::dff#51\*##AGfGG##AJiJ6J##AJiJ6J##AGfGGxxJJt,-JJt,-JJt,-JJt,-JJ'89		JGGrzz1tyytJJ':;$USrO   c                    UR                  U R                  5      UR                  U R                  5      p2[        SSS9n[        R
                  " X#40 UD6u  pV[        R
                  " X240 UD6u  px[        Xh5        [        XQR                  S5      5        [        XqR                  S5      5        UR                  UR                  :X  a  U R                  OSn	[        XaR                  S5      U	SS	9  g )
Nr   r   r   r  r  r  glPz.?r]  r  r3   r  r  r  r   r   r   rA   rD   r  r   
r7   r8   r  r  r  r  re   r>  rg   r  s
             r>   test_mannwhitneyu_two_sided,TestMannWhitneyU.test_mannwhitneyu_two_sided  s    zz$&&!2::dff#51+lC##A3F3##A3F3JJt,-JJt,-GGrzz1tyytJJ'9:ERrO   c                    UR                  U R                  5      UR                  U R                  5      p2[        SSS9n[        R
                  " X#4SS0UD6u  pV[        R
                  " X24SS0UD6u  px[        R
                  " X#4SS0UD6u  p[        R
                  " X24SS0UD6u  p[        Xh5        [        X5        Xj:w  d   e[        XQR                  S5      5        [        XqR                  S5      5        [        XR                  S5      5        [        XR                  S5      5        UR                  UR                  :X  a  U R                  OS	n[        XaR                  S
5      USS9  [        XR                  S5      USS9  g )NFr   r   r   r   r   r   r  r  r  gii5?r]  r  g22?r  r  s                 r>   &test_mannwhitneyu_no_correct_one_sided7TestMannWhitneyU.test_mannwhitneyu_no_correct_one_sided  sB   zz$&&!2::dff#51U<@##AGfGG##AJiJ6J##AJiJ6J##AGfGGxxJJt,-JJt,-JJt,-JJt,-GGrzz1tyytJJ'895QJJ';<4eTrO   c                    UR                  U R                  5      UR                  U R                  5      p2[        SSS9n[        R
                  " X#40 UD6u  pV[        R
                  " X240 UD6u  px[        Xh5        [        XQR                  S5      5        [        XqR                  S5      5        UR                  UR                  :X  a  U R                  OSn	[        XaR                  S5      U	SS	9  g )
NFr   r  r  r  r  g22?r]  r  r  r  s
             r>   &test_mannwhitneyu_no_correct_two_sided7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sided0  s    zz$&&!2::dff#51U<@##A3F3##A3F3JJt,-JJt,-GGrzz1tyytJJ';<4eTrO   c                    UR                  / SQ5      nUR                  / SQ5      n[        SS9n[        R                  " X#4SS0UD6n[	        UR
                  UR                  S5      5        [	        UR                  UR                  S5      5        [        R                  " X#4SS	0UD6n[	        UR
                  UR                  S5      5        [	        UR                  UR                  S
5      5        [        R                  " X#4SS0UD6n[	        UR
                  UR                  S5      5        [	        UR                  UR                  S5      5        g )N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r   r	  r   r   r	  r   r   r	  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r   r   r   r   r   r   r	  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r	  r   r	  r   r   r   r   r	  r   r   r   r	  r   r   r   r   r   r	  r   r   r
  r   r   r   r   r   r   r   r   r   r   r	  r   r	  r   r   r   r   r   r   r	  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r   r   r	  r	  r   r   r	  r   r   r	  r   r	  r   r   r   r   r	  r	  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r   r   r	  r	  r	  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r	  r   r   r   r   r	  r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   r	  r   r   r   r   r   r   r   r   r   r   g     @g ?չ>r   g&)E?r   g?չ?)r3   r  r   r   r   ro   rp   )r7   r8   r9   r:   r  rq   s         r>   test_mannwhitneyu_ones'TestMannWhitneyU.test_mannwhitneyu_ones<  s   JJ 0 1& JJ ( ) \*  D6DVDrzz'':;

BJJ/D$EF  G9GGrzz'':;

BJJ$?@  I;I&Irzz'':;

BJJ/@$ABrO   r   N)4r   r   r   r   r   r   r   r   r9   r:   cases_basicr5   r   r   r  cases_continuityr  r  r1  r2  r3  r4  r@  rG  rN  cases_scalarrT  rY  ri  rl  skip_xp_backendsrq  r`   r   cases_11355rw  
cases_9184r}  r  
cases_2118r  r  r  r  r  r  r  r  r  r  r  r   r   rO   r>   r   r      s   -*
.60t 	-A	A& %0<H*,$*lC*,$-F*,$/7C*,$*g>*,$-A*,-K [[1;?[[W&BC
H D @
H *5M/1)/4H/1)2dK/1)4N/1)/5I/1)2eL/12 [[13CD7 E7&<,  $8.0C"A<KMC )7K2<=C +?19G$%C+88*4" &1LI%+|D %.,G)+%0GDgN%+w?K%.'BGLNL [[/>< ?<H. [[Xg'>?)K @)KV2 k*BC9 D9 "1aAq!Q:* "1aAq!Q?)+ 2661%1aAq!Q:/+ 2661%1aAq!Q?* *1aAq!Q?/+,K  [[>LD MD ?BC@CE:=?AJ [[ 67AC<C<: k*BC) D)  #sY8MN#sV5JK#s[)Dqc9.CDqc6+@Aqc;	:q6Aq69.BCq6Aq66+?@q6Aq6;9;J [[BJOH PH:: [[],LM	= N	=	-A	NA DT&
SU&
U,CrO   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)TestSomersDik  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 )NrW   r   rQ   r   r   r   )ALL_INTEGER	ALL_FLOATdtypesr`   ra   	arguments	functoolspartialr   somersdpartialfuncr   )r7   idxinput_arrays      r>   setup_methodTestSomersD.setup_methodl  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 )Nr  rI   )r  r   ro   r   rp   )r7   r   rq   s      r>   pythranfuncTestSomersD.pythranfunc{  sF    %t}}'>'>UK

DMM$8$8uErO   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#         rX   r   )rX   r     #   rx   )rQ   rS   rR   rX      r  rI   )r   r  get_optional_argsr   ro   rp   )r7   r;  rE  optional_argsrF  s        r>   test_pythranfunc_keywords%TestSomersD.test_pythranfunc_keywords  sm    #%8:JK}}U#..u}}=}}U4m4UCT[[u=rO   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)rU   rR   rQ   rS   rV   rT   rX   rY   )rU   rR   rV   rS   rQ   rY   rX   rT   rP  r   r  rI   rQ   )	r   rU   rR   rQ   rS   rV   rT   rX   rY   )	rU   rR   r   rV   rS   rQ   rY   rX   rT   )rU   rR   rQ   rS   rV   rT   rX   )rU   rR   rV   rS   rQ   rX   rT   )g+$I$I¿g=/3n+?rW   r   r   )
r   rR   rQ   rS   rT   rV   rU   rX   rY   ry   )gs'}'?r   rz   )g      r   )
ry   rX   rY   rV   rU   rS   rT   rR   rQ   r   )g}'}'r   )rx   rR   rQ   rx   rR   )rQ   rT   rX   rQ   r   )      g.ʂ?)rR   rR   rR   )rR   r   rR   rs        4@)r   r  r   ro   rp   r`   ra   arrayr4   r   r6   )r7   r9   r:   r   rq   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%--6rO   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)rQ   rQ   rQ   rR   rR   rR   rR   rR   rS   rS   rQ   rR   rR   rR   rR   rR   rR   rR   rS   rS   rS   rS   rS   rS   )rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   gCE]t?g^_?gO((Ƿ?r  rI   rK   )rS   rR   rR   rS   )r   r  r   ro   rp   r   r;  r   )r7   r9   r:   d_crd_rcr<   rq   s          r>   test_asymmetryTestSomersD.test_asymmetry  s    11 ! mmA!t%8

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

AE2SYY__f-rO   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 )NrY   rR   rV   rU   rS   rT   rQ   gHHHHHH?r  r   U   r^   )gM&w?r   gtE]t)r`   r  Tr   r   r  ro   )r7   r;  dyxdxys       r>   test_somers_original TestSomersD.test_somers_original  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#>rO   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   rT   rV   r   r<   random_staterR   rQ   r{   gayr  rI   gPj$?)r`   prodr}   RandomStater   multinomialrvsr   reshaper  insertra  r   ro   rp   )r7   Nr   rw   r   r.  rq   s2rF  s3rp  s4res4s                r>   *test_contingency_table_with_zero_rows_cols6TestSomersD.test_contingency_table_with_zero_rows_cols)  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0rO   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  rR   z:All elements of the contingency table must be non-negativer1   r   z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.rQ   )rS   rS   r  )r`   r  r}   r~   r   r  r  r   r  r   r6   r  ra  )
r7   r  r   rw   r   r.  s5r=   s6s7s
             r>   test_invalid_contingency_tables+TestSomersD.test_invalid_contingency_tablesI  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   rz   g @)rS   rR   rQ   r   r  )r`   r   r   r  r   ro   rp   )r7   r9   r  r:   y2rq   rF  s          r>   test_only_ranks_matter"TestSomersD.test_only_ranks_matterm  sn    #rvvwmmA!}}R$S]]DNN3SZZ-rO   c                     [         R                  " S5      n[         R                  " S5      n[        R                  " X5      n[	        UR
                  [         R                  " S5      5        g )NrW   )r`   ra   r   r  r   r;  eye)r7   r9   r:   rq   s       r>   test_contingency_table_return)TestSomersD.test_contingency_table_returnx  s@    IIbMIIbMmmA!SYYr
+rO   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*  )rU   rV   rX   rY   rX   r   r   r   r   rQ   rR   r   z`alternative` must be...r1   	ekki-ekki)
r   r  ro   r   r   rp   reverser5   r   r6   )r7   r  r  r   rq   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 )	NrW   rQ   rz   r   r   r   r   r   )r`   ra   flipr   r  ro   rp   )r7   r  r  r  expected_statisticrq   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???rO   c                     SS/nSn[         R                  R                  S5      nUR                  X5      nUR                  X5      nSn[        R
                  " XE5      R                  n[        XgSS9  g )NrQ   rR   @B l   .E5 g 0uD?r  rI   )r`   r}   r~   choicer   r  ro   r   )r7   classes	n_samplesr   r9   r:   val_sklearn	val_scipys           r>   !test_somersd_large_inputs_gh18132-TestSomersD.test_somersd_large_inputs_gh18132  si     a&	ii##J/JJw*JJw* + MM!'11	U;rO   )r  r  r   r  N)r   r   r   r   r  r  r  r  r  r  r  r  r	  r  r  r5   r   r   r  r!  r   r   rO   r>   r  r  k  sm    7F
	>m7^.2?,1@"H	.,';R [[3]C@ D@0<rO   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+   rC  rW   '   )gXyq@g{2s&Q7?r   rR   r   rU   )gllgEA]0K?rX   rY   )*)1%g_  ?rQ   )g_c1?g= ?      )g5PyQgQ@2?   r  )ggJ"?)g_c1gwݝل?r   rT   )g7@g      ?rS   )g~t,?3O?rV   )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   ro   rp   r   r7   input_sampler   rq   ro   rp   s         r>   test_preciseTestBarnardExact.test_precise  s*    2 L)MM3::6+X6rO   )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/  r0  s         r>   test_pooled_param"TestBarnardExact.test_pooled_param  s,    2 L7MM3::6+X6rO   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 0r1   rQ   rR   rS   rT   r   r   ,The input `table` must be of shape \(2, 2\).rV   *All values in `table` must be nonnegative.rz   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)r   r6   r   r`   ra   r  r7   	error_msgs     r>   test_raisesTestBarnardExact.test_raises  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   rQ   r   ro   rp   r   r0  s         r>   test_edge_cases TestBarnardExact.test_edge_cases1  s5     L)MM3::6Va[)Y,rO   r   c                     [        U5      nUR                  UR                  pT[        XRS   5        [        XBS   5        g rD  rE  r0  s         r>   test_row_or_col_zero%TestBarnardExact.test_row_or_col_zero=  s5     L)MM3::6Va[)Y,rO   )r(  gE\/??r   ,  )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   Nrz   r   Hz>rI   )r`   r  r   ro   rp   r   )	r7   r1  r   r   expected_statless_pvalue_expectrq   ro   rp   s	            r>   test_less_greater"TestBarnardExact.test_less_greaterJ  sd    , -5))#88L1!TrT':L*NMLBMM3::6-!D4	
rO   r   N)r   r   r   r   __doc__r5   r   r   r2  r6  r@  rF  r`   r4   rI  rQ  r   r   rO   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
rO   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:);TestBoschlooExactim  z9Some tests to show that boschloo_exact() works correctly.rN  r%  rR   rX   rY   )<vB\?g/??rU   rQ   rW   )gM?gA>?r+  r*  r  )_VѶ?g֭?)u %?gc'?r   rT   rQ   rQ   rS   )r   g      ?rx   )+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   rI   Nr   ro   rp   r   ATOLr0  s         r>   	test_lessTestBoschlooExact.test_lessr  s0    2 \v>MM3::6+XIIFrO   r&  rC  r'  )k\2?g0,%?)gKv?gN3?)rX  g'&5?r)  )gw@_?g7?)gi{?gɑ)z?)օa?g1|?rV   )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   rI   Nr^  r0  s         r>   test_greaterTestBoschlooExact.test_greater  s0    6 \yAMM3::6+XIIFrO   )rb  gqQS,5?)rV  gG?/??)rX  gKE`?)rW  ghr1ֽ?)rc  grfb?)r   g      ?)rZ  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   rI   Nr^  r0  s         r>   test_two_sided TestBoschlooExact.test_two_sided  s2    0 \{bIMM3::6+XIIFrO   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)Nr9  r1   rQ   rR   rS   rT   r   r:  r;  rV   r<  rz   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r=  )r   r6   r   r`   ra   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7rB  c                     [        U5      nUR                  UR                  pT[        XRS   5        [        XBS   5        g rD  )r   ro   rp   r   r0  s         r>   rI  &TestBoschlooExact.test_row_or_col_zero  s5     \*MM3::6Va[)Y,rO   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 )
NrQ   r   rx   r   r   r   rR   r   r   )r   rp   r  )r7   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yrO   r   )r   r   c                 ~    SS/SS//n[        X!S9R                  n[        R                  " X!S9S   n[	        X45        g )NrR   rX   rY   r   rQ   )r   ro   r   fisher_exactr   )r7   r   rp  boschloo_statfisher_ps        r>   test_against_fisher_exact+TestBoschlooExact.test_against_fisher_exact  sC     1v1v&sDNN%%cCAF0rO   r   N)r   r   r   r   rS  r_  r5   r   r   r`  re  ri  r@  r`   r4   rI  rt  rz  r   r   rO   r>   rU  rU  m  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1rO   rU  c                      \ 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\R
                  R                  S/ S	Q5      S
 5       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_2sampi  r   rU   rQ   c                 D  ^ U4S jU 5       n[        [        [        TS9   [        U6 n[	        UR
                  TR                  TR                  5      5        [	        UR                  TR                  TR                  5      5        S S S 5        g ! , (       d  f       g = f)Nc              3   V   >#    U  H  nTR                  U[        T5      S 9v   M      g7f)rF   N)r3   r   ).0argr8   s     r>   	<genexpr>5TestCvm_2samp.test_too_small_input.<locals>.<genexpr>  s$     Lt

3&6r&:
;ts   &)rn   )	r   r   r    r   r   ro   r3   r4   rp   )r7   r   r8   rq   s     ` r>   test_too_small_input"TestCvm_2samp.test_too_small_input  sk     MtL+3HRP&-CCMM2::bff+=>CJJ

266(:; QPPs   A'B
Bc                     UR                  S5      nSn[        R                  " [        US9   [	        X"S5        S S S 5        g ! , (       d  f       g = f)NrU   z/method must be either auto, exact or asymptoticr1   xyz)ra   r5   r   r6   r   )r7   r8   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)rR   rS   rT   rX   rV   )r  r   rx   r  )r   r`   r  r   ro   rp   )r7   r9   r:   r1r2s        r>   test_list_inputTestCvm_2samp.test_list_input  sV    !!'!"((1+rxx{;bllBII.ryy0IJrO   rA   rB   c                     Uc  [        U5      O
[        X!5      nUR                  / SQUS9nUR                  / SQUS9n[        X45      n[	        UR
                  UR                  SUS9SS9  [	        UR                  UR                  SUS9SS9  g )	N)	gffffff@g @rH   gffffff!@皙"@g#@g333333$@g333333%@gffffff&@rF   )g@g@g@      @333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?rZ   rI   g
ףp=
?r   )r   rL   r3   r   r   ro   rp   )r7   rA   r8   r9   r:   rs         r>   test_example_conover"TestCvm_2samp.test_example_conover  s     ). $72;MJJGuJUJJ BIN  P &RZZUZ%C$O"**S*">TJrO   zstatistic, m, n, pval))i  rU   rV   gcj`?)ii  rX   rX   gtE]t?)i@  rT   rV   g88?)i  rV   rX   gXwS?c                 0    [        [        XU5      U5        g r   )r   r   )r7   ro   r<  r   pvals        r>   test_exact_pvalueTestCvm_2samp.test_exact_pvalue*  s     	*9;TBrO   c                    [         R                  R                  S5      n[        R                  R                  SUS9n[        R                  R                  SUS9nUR                  U5      UR                  U5      pC[        X45      nSUR                  s=:  a  S:  d   e   e[        X4S-   5      nSUR                  s=:  a  S:  d   e   eg )Ni  r  )rw   r  i r   rQ   r   )	r`   r}   r~   r
   normr  r3   r   rp   )r7   r8   r   r9   r:   r  s         r>   test_large_sampleTestCvm_2samp.test_large_sample5  s     ii##D)""c"B""S"Azz!}bjjm1 &188a cE*188arO   c                 h   [         R                  R                  S5      nUR                  UR                  S5      5      nUR                  UR                  S5      5      n[	        X4SS9n[	        X4SS9n[        UR                  UR                  5        [        UR                  UR                  SS9  g )	Nr   rX   rY   r   r   r   r   rI   )	r`   r}   r  r3   r   r   ro   r   rp   )r7   r8   r   r9   r:   r  r  s          r>   test_exact_vs_asymptotic&TestCvm_2samp.test_exact_vs_asymptoticB  s    ii##A&JJszz!}%JJszz!}%!!w7!!|<bll3		29948rO   c                 >   UR                  S5      nUR                  / SQ5      n[        X#SS9n[        X#SS9n[        UR                  UR                  5        UR                  S5      n[        X#SS9n[        X#SS9n[        UR                  UR                  5        g )Nr  )r   g@g333333*@r   r   r   g      5@r   )ra   r3   r   r   rp   )r7   r8   r9   r:   r  r  s         r>   test_method_autoTestCvm_2samp.test_method_autoK  s    IIcNJJ'(!!w7!!v6		299-IIcN!!|<!!v6		299-rO   c                    UR                  S5      n[        X"5      n[        UR                  UR	                  S5      5        [        UR
                  UR	                  S5      5        [        US S US S 5      n[        UR                  UR	                  S5      5        [        UR
                  UR	                  S5      5        g )Nr)  r   r   rT   )ra   r   r   ro   r3   rp   )r7   r8   r9   rq   s       r>   test_same_inputTestCvm_2samp.test_same_inputW  s     IIbM"1(rzz"~6

BJJrN3"1Ra5!BQ%0rzz"~6

BJJrN3rO   r   N)r   r   r   r   r5   r   r   r`   ra   r  r   r  r  r  xslowr  r  r  r  r   r   rO   r>   r}  r}    s    [[Vr299Q<&8')yy|aS&9&; <<<<.K [[W&BC	K D	K [[456
C6
C [[
  
 9
.4rO   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')(TestTukeyHSDie  )rt       7@ffffff:@皙;@fffff=@)ffffff<@皙A@     =@皙@@皙>@)g:@gL<@gL8@g333333:@g;@)rt  r  gHzG:@r  r  r  r  r  )rt  r  r  )
r  r  r  r  r  r  r  r  r  r  aK  
    Comparison LowerCL Difference UpperCL Significance
    2 - 3	0.6908830568	4.34	7.989116943	    1
    2 - 1	0.9508830568	4.6 	8.249116943 	1
    3 - 2	-7.989116943	-4.34	-0.6908830568	1
    3 - 1	-3.389116943	0.26	3.909116943	    0
    1 - 2	-8.249116943	-4.6	-0.9508830568	1
    1 - 3	-3.909116943	-0.26	3.389116943	    0
    aS  
    Comparison LowerCL Difference UpperCL Significance
    2 - 1	0.2679292645	3.645	7.022070736	    1
    2 - 3	0.5934764007	4.34	8.086523599	    1
    1 - 2	-7.022070736	-3.645	-0.2679292645	1
    1 - 3	-2.682070736	0.695	4.072070736	    0
    3 - 2	-8.086523599	-4.34	-0.5934764007	1
    3 - 1	-4.072070736	-0.695	2.682070736	    0
    aS  
    Comparison LowerCL Difference UpperCL Significance
    2 - 3	1.561605075	    4.34	7.118394925	    1
    2 - 1	2.740784879	    6.08	9.419215121	    1
    3 - 2	-7.118394925	-4.34	-1.561605075	1
    3 - 1	-1.964526566	1.74	5.444526566	    0
    1 - 2	-9.419215121	-6.08	-2.740784879	1
    1 - 3	-5.444526566	-1.74	1.964526566	    0
    zdata,res_expect_str,atolrK   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;
 -  rU   NrF   )rV   rV   rQ   rI   r   r`   r3   replacesplitfloatr  r   	tukey_hsdconfidence_intervalintr   lowro   highrp   )r7   datares_expect_strrJ   
res_expect	res_tukeyconfr   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 #-rO   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
        rv  rN  r  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");
rF   rS   rV   rQ   rI   N)r`   r3   r  r  r  r   r  r  r  r   r  ro   r  rp   )r7   r  r  rJ   r  r  r  r   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 !+rO   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
        r  r  rU   NrF   r  )   r^   6   r  F   4   3   r  C   r#   r        r     )   r*  ,   )r  rL  r  r  rx   r  r  r^   $   *   r  r  r+  r'  r_   rL  r'  r  )r  rL  r[  r  rW   r&  r_   r)  r  r*  rL  r[  r  r   r)  r)  r+  r_   rQ   rN  rI   r  h㈵>r  )r7   str_resr  r  r  r  r   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 !+rO   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@r  )g @r  g333333@gffffff"@r  )g       @g      %@g333333 @r  r  )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@)rQ   r   )rR   r   )r   rS   rS  r  r   rI   N)r   r  r  r`   r3   r   r  r  )r7   group1group2group3group4rq   r  lowerupperr   r  s              r>   test_engineering_stat_handbook+TestTukeyHSD.test_engineering_stat_handbook  s    
 +*+*ooff=&&(

 	 
 

!	  ?FQDHHQTNEQ$KdCDIIadOUa4[tD ?rO   c                 .   [         R                  R                  S5      nUR                  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 )Nl   ]A )rS   r   r   r   r   rQ   )r`   r}   r~   r   r  r  r   r  r  r  diagonalro   rp   )r7   r   r  rq   r  s        r>   test_rand_symmTestTukeyHSD.test_rand_symm&  s    ii##J/zz(#oot$&&(TXX		|, 	R[[+TYYt_=R[[*DHHTN;S]]S]]__$45R[[/3SZZ.R[[,a0rO   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.r1   r   rR   )rV   rX   rS   )r   r6   r   r  r`   r   rX  s    r>   test_no_infTestTukeyHSD.test_no_inf9  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-dimensionalr1   rQ   rR   rS   rU   )rU      rV   r   r6   r   r  rX  s    r>   
test_is_1dTestTukeyHSD.test_is_1d=  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 oner1   rR   rU   )rT   rU   rV   r  rX  s    r>   test_no_emptyTestTukeyHSD.test_no_emptyA  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'r1   r   rR   rU   rV   rX   False)	equal_var)r   	TypeErrorr   r  )r7   r  s     r>   test_equal_var_input_validation,TestTukeyHSD.test_equal_var_input_validationE  s7    89C0OOI1v1vI 100s	   8
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.r1   r  rX   rS   r  )r7   r  s     r>   test_not_enough_treatments'TestTukeyHSD.test_not_enough_treatmentsJ  s-    :-HIOOzlU24 JIIs	   2
A cl)r  r   rQ   rR   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 1r1   r  rS   rT   ry   )r   r6   r   r  r  )r7   r  r  s      r>   test_conf_level_invalid$TestTukeyHSD.test_conf_level_invalidO  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 )NrR   r  r  )r   r  data_diff_size	ttest_indr   rp   )r7   r  	res_ttests      r>   test_2_args_ttestTestTukeyHSD.test_2_args_ttestU  sn    OOT%8%8!%<=	OOT%8%8!%<=		(()*:*:4*@A	(()*:*:4*@ArO   r   N)r   r   r   r   data_same_sizer  extreme_sizesas_same_sizesas_diff_sizesas_extremer5   r   r   r  matlab_sm_sizmatlab_diff_szr  r  r  r  r  r  r  r  r	  r  r  r   r   rO   r>   r  r  e  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rO   r  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@r  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_strr  r  r  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).
r  r  rX   NrF   rz   rV   r  Fg:0yE>rI   r  r  )r`   r3   r  r  r  r  r   r  r  r  r   ro   rp   r  r  )r7   r  r  r  	res_gamesr  r   r  r.  r  r  r<   s               r>   test_compare_spss!TestGamesHowell.test_compare_spssy  s    8 ZZ""5#.446qr: Q 	 OOT;U;	,,. *A!q63q6qI//5qtDI,,QT2ADADHHQTNAD9DIIadOQT: !+rO   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)
r  r  z == rS   NrF   rz   rU   r  FrN  rI   )r`   r3   r  r  r  r  r   r  r  r   rp   )	r7   r  r  r  r!  r  r   _r<   s	            r>   r  TestGamesHowell.test_compare_r  s    ( ZZ""5#.WVS!%%'!". !Q 	 OOT;U;	 (MA!Qq63q6qI,,QT2ADA (rO   r   N)r   r   r   r   r  r  spss_same_sizespss_diff_sizer5   r   r  r   r"  r_same_sizer_diff_sizer  r   r   rO   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rO   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   rS   r   gea?)rR   r   rV   r   g	c?c                 \    [         R                  " XX45      n[        UR                  USS9  g r   r   poisson_means_testr   rp   )r7   c1r   c2r   p_expectrq   s          r>   test_paper_examples(TestPoissonMeansTest.test_paper_examples  s&     &&rr6

H48rO   z c1, n1, c2, n2, p_expect, alt, d)r*  rW   r*  rW   g{}?r   r   )rW   rW   rW   rW   goPF?r   r   )2   r)  rQ   rQ   gae?r   r   )rS   r   r*  rK  g/V-=?r   r   )rS   rx   rT   r*  g")?r   r   )rT   r*  rS   r   g_'Qm~?r   r   )rT   r*  rS   rW   g|?r   r   )rQ   rQ   r5  r)  g0ݷ?r   r   c           	      \    [         R                  " XX4XgS9n[        UR                  USSS9  g )N)r   diffg>r]  rJ   r  r.  )	r7   r0  r   r1  r   r2  altdrq   s	            r>   test_fortran_authors)TestPoissonMeansTest.test_fortran_authors  s*    $ &&rr3O

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

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

A&rO   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  rY  z`k1` and `k2` must be integers.r1   r   z1`k1` and `k2` must be greater than or equal to 0.rz   z%`n1` and `n2` must be greater than 0.z(diff must be greater than or equal to 0.)r7  zAlternative must be one of ...rQ   rR   errorr   )r   r  r   r/  r6   )r7   r?  r@  rA  rB  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r   N)r   r   r   r   r5   r   r   r3  r;  rC  rF  r   r   r   rO   r>   r,  r,    s    [[7  : 
9
9 [[?
 	=<=>9; 	66B "E#"E''!FrO   r,  c                   L   \ 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	\R                  R                  S/ S	Q5      S
 5       r
S rS r\R                  R                  SSS/5      S 5       rS rSrg)TestBWSTesti*  c           	         [         R                  R                  S5      nUR                  SS9u  p4UR                  U5      UR                  U5      pCSn[        R
                  " [        US9   [        R                  " X4SS9  S S S 5        Sn[        R
                  " [        US9   [        R                  " X4S	S9  S S S 5        S
n[        R
                  " [        US9   [        R                  " X1R                  / UR                  S95        S S S 5        Sn[        R
                  " [        US9   [        R                  " X4SS9  S S S 5        Sn[        R
                  " [        US9   [        R                  " X4S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{ rR   rX   rv   z"`axis` must be an integer or None.r1   r   r{   z7`axis` is not compatible with the shapes of the inputs.rS   z`x` and `y` must contain...rF   zalternative` must be one of...r  r   z!method` must be an instance of...r  r   )
r`   r}   r~   r3   r5   r   r6   r   bws_testrA   )r7   r8   r   r9   r:   r=   s         r>   test_bws_input_validation%TestBWSTest.test_bws_input_validation-  sF   ii##$78zzvz&zz!}bjjm16]]:W5NN1c* 6 L]]:W5NN1a( 6 0]]:W5NN1jj177j;< 6 3]]:W5NN1[9 6 6]]:W5NN1+ 65! 65 65 65 65 65s<   -F	&F/F,1F=*G	
F
F),
F:=
G
GrA   rB   c                 6   Uc  [        U5      O
[        X!5      nUR                  / SQUS9nUR                  / SQUS9n[        R                  " X4SS9n[        UR                  UR                  SUS9SS9  [        UR                  UR                  S	US95        g )
N)rQ   rR   rS   rT   rV   rX   rY   rF   )rU   ry   rW   ru   rx   r   r  r   r   gI+@rZ   rI   gf$/g?)r   rL   r3   r   rP  r   ro   rp   )r7   rA   r8   r9   r:   rq   s         r>    test_against_published_reference,TestBWSTest.test_against_published_referenceG  s     ). $72;MJJ,EJ:JJ1J?nnQ{;rzz%uz'EDQ

BJJweJ$DErO   )r   ro   rp   ))r   g
-?g4B/?)r   
-g0&v?)r   rV  g(?c                    [         R                  R                  S5      nUR                  SS9u  pgUR                  XdR                  S9UR                  XtR                  S9pv[
        R                  " XgUS9nUR                  X$R                  S9nUR                  X4R                  S9n[        UR                  USS9  [        UR                  USS	S
9  g )NrN  rO  rv   rF   r   vIh%<=r  r   r   r8  )
r`   r}   r~   r3   rD   r   rP  r   ro   rp   	r7   r   ro   rp   r8   r   r9   r:   rq   s	            r>   test_against_RTestBWSTest.test_against_RR  s     ii##$78zzvz&zz!::z.

1JJ
0O1nnQ{;JJy

J;	F**5yu=

FDArO   ))r   gD5H?gdԕ?)r   `ч?gȲךX?)r   r\  g4)?c                 0   [         R                  R                  S5      nUR                  SS9nUR                  SS9nUR                  U5      UR                  U5      pv[        R
                  " XgUS9nUR                  XdR                  S9UR                  XtR                  S9pv[        R
                  " XgUS9nUR                  X$R                  S9nUR                  X4R                  S9n[        UR                  USS9  [        UR                  US	S
S9  g )Nl   .sZ ry   rv   rY   r   rF   rX  r  r   r   r8  )
r`   r}   r~   r3   r   rP  rD   r   ro   rp   rY  s	            r>   test_against_R_imbalanced%TestBWSTest.test_against_R_imbalancedf  s     ii##$78JJAJJJAJzz!}bjjm1nnQ{;zz!::z.

1JJ
0O1nnQ{;JJy

J;	F**5yu=

FDArO   c                 \   [         R                  R                  S5      nUR                  SS9u  p4UR                  U5      UR                  U5      pC[         R                  R                  S5      n[        R
                  " SUS9n[        R                  " X4US9nUR                  R                  S   S:X  d   e[         R                  R                  S5      n[        R
                  " SUS9n[        R                  " X4US9n[        UR                  UR                  5        [         R                  R                  S5      n[        R
                  " SUS9n[        R                  " X4US9nUR                  UR                  UR                  UR                  -
  5      S	:  5      (       d   eg )
N   /HN( )rR   rW   rv   rW   )n_resamplesr   r   r      VC	A r   )r`   r}   r~   r3   r   r  rP  null_distributionr   r   allrD  )	r7   r8   r   r9   r:   r   rE  rF  rp  s	            r>   test_methodTestBWSTest.test_method}  sO   ii##$78zzwz'zz!}bjjm1ii##$78((RSA~~a62%%++A."444ii##$78((RSA~~a62..0F0FGii##$78((RSA~~a62vvbffT33d6L6LLMPSSTTTTrO   c                    [         R                  R                  S5      nUR                  UR                  SS95      nUS-
  nUR                  SUR                  S9nUR                  SUR                  S9n[
        R                  " X4SS	9nUR                  S
:  d   e[        UR                  U5        [
        R                  " X4SS	9nUR                  S
:  d   e[        UR                  U5        [
        R                  " XCSS	9nUR                  S
:  d   e[        UR                  U5        [
        R                  " XCSS	9nUR                  S
:  d   e[        UR                  U5        g )Nra  rU   rv   r   gAAp?rF   rQ   r   r   r   r   )
r`   r}   r~   r3   rD   r   rP  ro   r   rp   )r7   r8   r   r9   r:   pminpmaxrq   s           r>   test_directionsTestBWSTest.test_directions  s%   ii##$78JJszzqz)*Fzz'z4zz!2::z.nnQy9}}q   

D)nnQv6}}q   

D)nnQv6}}q   

D)nnQy9}}q   

D)rO   r|   r   rQ   c                    [         R                  R                  S5      nUR                  SS9nUu  pV[        R                  " UR                  U5      UR                  U5      US9n[         R                  " XAS-   S5      u  pV/ / p[        XV5       Hp  u  p[        R                  " UR                  U
5      UR                  U5      5      nUR                  UR                  5        U	R                  UR                  5        Mr     UR                  U5      UR                  U	5      p[        UR                  U5        [        UR                  U	5        g )Nra  )rR   rS   rU   rv   r{   rQ   rz   )r`   r}   r~   r   rP  r3   r^  zipappendro   rp   r  r   )r7   r|   r8   r   r   r9   r:   rq   ref_statistic
ref_pvaluex_y_r   s                r>   test_ndTestBWSTest.test_nd  s    ii##$78JJIJ&nnRZZ]BJJqME{{11fb)$&z!iFB..BB@C  /cjj)   %'HH]$;RXXj=Qz}5

J/rO   c                    [         R                  R                  S5      nUR                  SS9u  p4UR                  U5      UR                  U5      pC[        R
                  " X4S S9n[        R
                  " [        U5      [        U5      5      n[        UR                  UR                  5        [        UR                  UR                  5        g )Nrc  )rR   rR   rS   rv   r{   )
r`   r}   r~   r3   r   rP  r   r   ro   rp   )r7   r8   r   r9   r:   rq   r   s          r>   test_axis_NoneTestBWSTest.test_axis_None  s    ii##$78zzyz)zz!}bjjm1nnQ-nnXa[(1+6s}}5

CJJ/rO   r   N)r   r   r   r   rQ  r5   r   r   rT  rZ  r^  rf  rk  rt  rw  r   r   rO   r>   rL  rL  *  s    ,4 [[W&BCF DF [[CNOB	OB  [[CNOB	OB&U0*2 [[VaV,0 -0$0rO   rL  )>	itertoolsr   numpyr`   r  r5   numpy.testingr   r   r   r   r   scipyr   r	   scipy.statsr
   scipy.stats._hypotestsr   r   r   r   r   r   r   scipy.stats._mannwhitneyur   r   r   scipy._lib._testutilsr   scipy._externalr   r   scipy._lib._array_apir   r   r   r   r   r   scipy._lib._array_api_no_0dr   r   scipy.stats._axis_nan_policyr   r    lazy_xp_modulesr   r  r"   r   r   r  r$  rU  r}  r  r  r,  rP  rL  r   rO   r>   <module>r     s       @ @ *   %4 4 4 E D 2 2B B H R';;//  '(L2 L2 )L2^ 5''(YO YO )YOx 5%%&_
C _
C '_
CDl<" l<^P
 P
fV1 V1r '([4 [4 )[4|uB uBpsB sBrQF QFh 5>>"]0 ]0 #]0rO   