
    doi{                    J   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&  S SK'J(r(J)r)  S SK*J+r+J,r,  \#" \5       " S S5      5       r-\#" \R&                  5       " S S5      5       r.\#" \R4                  5       " S S5      5       r/ " S S\5      r0 " S S5      r1 " S S5      r2\#" \5       " S S5      5       r3 " S S5      r4 " S S5      r5 " S  S!5      r6 " S" S#5      r7g)$    )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_assert_equalxp_assert_close)SmallSampleWarningtoo_small_1d_not_omitc                   t    \ 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   dtypeNfloat32float64c                 p   [        U5      (       a,  UR                  S:  a  US:X  a  [        R                  " S5        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2.0r$   !Pre-NEP 50 doesn't respect dtypes)
gffffffֿgffffff@gGz?\(\?ffffff?gQ@gq=
ףp?gGzgGz׿gp=
#(@r"   )
gffffffg333333ÿgףp=
@g      
@gGz@g)\(@      @g(\@g(\ @333333!@gHzG.@gQ?atolgQ,r?-C6?)	r   __version__pytestskipr   getattrasarrayr   r   )selfr"   xpxywps          \/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/stats/tests/test_hypotests.pytest_statistic_1"TestEppsSingleton.test_statistic_1   s     B<<BNNU2u	7IKK;<(- $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         rB   rB   rB      rC   rC   rC         rE   rE   rE      
   rG   rG   rG   )rG   rD   r   rE   rG   rG   r   rE   rF      rG   rC   rA   rH   r      rA   rE   rI   rG   g!@MbP?r.   g&J?g-C6
?)r5   r   r   )r6   r7   r8   r9   r:   r;   s         r<   test_statistic_2"TestEppsSingleton.test_statistic_2+   sZ    JJ 7 8JJ 8 9#A)::e,48::g.T:r?   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   )	r6   r8   r9   w1p1w2p2w3p3s	            r<   test_epps_singleton_array_like0TestEppsSingleton.test_epps_singleton_array_like5   sv    yy}biim1%d1gtAw7%eAha9%a+BBr?   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rA   rB   rC   rD   rG   matchr7   )
r5   rQ   r   r   r   r   r   	statisticnanpvaluer6   r7   r8   r9   ress        r<   test_epps_singleton_size*TestEppsSingleton.test_epps_singleton_size?   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$>. )rG      size)rG      )rA   rD   	   axisr   rA   rB   )rP   randomdefault_rngr5   r   ra   infr   )
r6   r7   rngr8   r9   iw_refp_refw_resp_ress
             r<   test_epps_singleton_nonfinite/TestEppsSingleton.test_epps_singleton_nonfiniteG   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1r?    N)__name__
__module____qualname____firstlineno__r2   markparametrizer=   rK   rZ   re   ry   __static_attributes__r{   r?   r<   r    r       s=    [[W&BCJ DJ ; <2r?   r    c            
          \ 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9\R
                  R                  SSS//5      S 5       5       r\R
                  R                  S/ SQ5      S 5       rS rSrg)TestCvm[   z	n, x, refrD   )gy;i?g#^?gE>?gD
)?){Gz?皙?      ?g+?rG   )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 Nr0   r.   )r   r   r5   )r6   nr8   refr7   s        r<   test_cdf_refTestCvm.test_cdf_ref`   s'     	A2BJJsO$Or?   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   r5   )r6   r7   s     r<   test_cdf_supportTestCvm.test_cdf_supporti   s`    Z,?!@#F

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

B8,	.r?   c                 f    UR                  / SQ5      n[        [        US5      [        U5      SS9  g )N)r   r   r   r   d   '  r0   r.   )r5   r   r   r6   r7   r8   s      r<   test_cdf_large_nTestCvm.test_cdf_large_np   s(    JJ@AE*HQKdCr?   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@r+   gwJ?r   r   )r5   r%   r   r   s      r<   test_large_xTestCvm.test_large_xu   sW     JJuBJJJ/(1d+1c12121(1+++,+,+r?   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 )Nrk   皙?)r7   r   r   )	r   onesr	   ndtrr   r`   r   rb   r5   )r6   r7   r   rd   s       r<   
test_low_pTestCvm.test_low_p   sT     RWWQZ^W\\:q03666

BJJrN3r?   	jax.numpylazy -> no _axis_nan_policyreasonr8   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)Nr_   )r2   warnsr   r   r   r5   r	   r   r   r`   ra   rb   )r6   r8   r7   rd   s       r<   test_invalid_inputTestCvm.test_invalid_input   so     \\,4IJ A=CCMM2::bff+=>CJJ

266(:; KJJs   BB//
B=r"   r#   c                 0  ^ [        T5      (       a,  TR                  S:  a  US:X  a  [        R                  " S5        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 )Nr'   r$   r(   )g333333rB   r   g?rD   皙?333333?r+   gӈk&q?gDC+?c                 :    [         R                  " U S-
  S-  5      $ )NrC   r   )r	   r   )r8   s    r<   <lambda>'TestCvm.test_values_R.<locals>.<lambda>   s    w||QUCK'@r?   grW*?gju2`?)	rA   rB   rE   ffffff?gQ?rh      ?      @c                 *   > TR                  U * 5      * $ N)expm1)r8   r7   s    r<   r   r      s    rxx|mr?   g  .?g`(r?)r   r1   r2   r3   r   r4   r   r5   r	   r   r   r`   rb   )r6   r"   r7   rd   s     ` r<   test_values_RTestCvm.test_values_R   sO   B<<BNNU2u	7IKK;<(- $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Or?   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.r   rA   rB   rC   betarE   )r   ffffff?expon)r   r2   r   
ValueErrorr   r5   rP   rQ   r
   r   cdfr   r`   rb   r   )r6   r7   messager8   argsr   rd   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   r2   r   r   r   r   r   r   r   skip_xp_backendsr   r   r   r   r{   r?   r<   r   r   [   s    
 [[[	
02JK	13KL	35MN	35MN	+ PP.D
-4 [[!!+6S!T[[S2u+.< / U< [[W&BCP DP4Or?   r   c                      \ rS rSr\R
                  R                  SSS9S 5       rS rS r	/ SQr
/ S	QrS
SS.S/SSS.S/SSS.S/S
SS.S/SSS.S/SSS.S//r\R
                  R                  S\5      \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/ S0Q/ S1Q/ S2QS3.r/ S4Q/ S5Q/ S6Q/ S7Q/ S8Q/ S9QS:.rS; rS< rS= rS
SS.S>/SSS.S?/SSS.S@/S
SS.SA/SSS.S?/SSS.SA//r\R
                  R                  SB\5      SC 5       rSD r\R
                  R                  SSS9\R
                  R                  SESS/5      SF 5       5       rSG r\R
                  R                  SSS9SH 5       r/ SIQSJSKSLSM\R@                  SJSNSOSPSPSQ/SRSS4/ SIQSJSKSLSM\R@                  \R@                  SNSOSPSPSQ/STSU4SOSN\R@                  SP/SJSKSLSM\R@                  SJSNSOSPSPSQ/SVSW4SOSN\R@                  SP/SJSKSLSM\R@                  \R@                  SNSOSPSPSQ/SXSY4SO\R@                  \R@                  SP/SJSKSLSM\R@                  \R@                  SNSOSPSPSQ/SZS[4/r!\R
                  R                  S\\!5      S] 5       r"/ S^Q/ S_Q/ S`Q/ SaQ/ SbQ/ ScQ/ SdQ/ SeQ/ SfQ/	r#\R
                  R                  Sg\#5      Sh 5       r$\R
                  R                  SSS9Si 5       r%/ SjQSkSl/SSm// SjQSkSl/SSm// SjQSkSl/S
Sn// S(QSN/SSo// S(QSN/SSo// S(QSN/S
Sp/SOSN/SOSN/SSq/SOSN/SOSN/SSq/SOSN/SOSN/S
Sr//	r&\R
                  R                  / SsQ\&5      St 5       r'Su r(\R
                  R                  Sv/ SwQ5      Sx 5       r)/ SyQr*/ SzQr+S{r,S| r-S} r.S~ r/S r0S r1Sr2g)TestMannWhitneyU   r   r   r   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)NrA   rB   rC   rD   r+   r   )r5   r"   ra   r2   r   r   r   r   r   r`   rb   )r6   r7   r8   r9   emptyra   rd   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)NrA   rB   rC   rD   z`use_continuity` must be oner   ekki)use_continuityz`alternative` must be one ofalternativez`axis` must be an integerr   rn   z`method` must be one ofmethod)r5   assert_raisesr   r   )r6   r7   r8   r9   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                 2   [         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[	        XE5      n[	        XESS9n[	        XES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[	        XE5      n[	        XESS9n[	        XESS9nUR
                  UR
                  :X  d   eUR
                  UR
                  :w  d   e[	        XT5      n[	        XESS9n[	        XES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[	        XE5      n[	        XESS9n[	        XES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[	        XE5      n[	        XESS9n[	        XESS9nUR
                  UR
                  :w  d   eUR
                  UR
                  :X  d   eg )Nl   nEQWSfrI   rA   
asymptoticr   exactrC   )	rP   rp   rq   r5   r   rb   xpxatset)	r6   r7   rs   r   r8   r9   autor   r   s	            r<   	test_autoTestMannWhitneyU.test_auto   s    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/////r?   )gm9Aj@g+H3[@gi>s@)g#hA{@glz@gcDf@gǳ*h@gZA@gI9^YQa@g`@g՞p@g:q@g&@gZ|@g`r@gMc3g@	two-sidedr   r   r   )      0@
+?less)r   
+?greater)r   缌%c?r   )r   g9:?)r   g9:?)r   g*::?)kwdsexpectedr"   r#   c                    [        U5      (       a,  UR                  S:  a  US:X  a  [        R                  " S5        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        g )Nr'   r$   z*Scalar dtypes only respected after NEP 50.r+   r   rA   )r   r1   r2   r3   r   r4   r5   r8   r9   r   r   r`   rb   )r6   r   r   r"   r7   r8   r9   rd   s           r<   
test_basicTestMannWhitneyU.test_basic;  s     B<<BNNU2u	7IKKDE(- $72;Mzz$&&z.

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

BJJx{%J$HIr?   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        g )Nr   r   r   rA   )r5   r8   r9   r   r   r`   rb   )r6   r   r   r7   r8   r9   rd   s          r<   test_continuity TestMannWhitneyU.test_continuityS  so     zz$&&!2::dff#511===rzz(1+'>?

BJJx{$;<r?   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   r,   )r   r   r   r   r   r   )r   r   r   r   r   rm   r   )ro   r   )rG   rl         !@rI   r   rH   rF   )rA   g]U?g[?gi\?gZX<_?gx.?g 
?)r5   stackr   r   r`   r   rb   )
r6   r7   r8   y0dydy2r9   rd   
U_expected
p_expecteds
             r<   test_tie_correct!TestMannWhitneyU.test_tie_correctc  s     JJ'(ZZ,-ZZ,-d2jj-.t3HHbgrubfbS&"%DIJ1b>/
I
rzz*'=>

BJJz$:;r?   )g      ?r   g      ?)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?r]   )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+?rA   rB   rC   rD   rE   )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?)rJ   r  r  r  g9v?g/$?r  r  gL7A`?g
ףp=
?gQ?r  gK7?g`"?g7A`?r*   gV-?gjt?gˡE?)rA   rB   rC   rD   rE   rF   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   )rC   rD   rE   rF   )krJ   r.   rA   rm   )setattrr   r   pn3pn4pm5pm6itemsrP   rQ   lenr!  
set_shapesr   r   sfpmf)
r6   p_tablesr   tablemr;   uu2r,  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/ ''-!||''"'-*) & )r?   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  rE   r   r   r   r   (   rJ   )rP   rp   rq   r5   r   r`   absrb   )r6   r7   rs   r8   r9   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7r?   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   )r5   r   r   rb   r`   )r6   r7   r8   r9   res_lres_grd   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3r?   r   r   )r   r   )r   g郡E?)r   rA   )r   resultc                 .    [        [        S0 UD6U5        g )NrA   rB   )r   r   )r6   r   rD  s      r<   test_scalar_data!TestMannWhitneyU.test_scalar_data  s     	2T2F;r?   c           	          [        [        SSSS9S5        [        [        SSSS9S5        [        [        SSSSS9S[        R                  45        g )	NrA   r   r   )r   rA   r   F)r   r   r   )r   r   rP   ra   r6   s    r<   test_equal_scalar_data'TestMannWhitneyU.test_equal_scalar_data  sP    
 	\!Qw7B\!Q|<hG 	\!Q|168:=rvv	Hr?   r   c                 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 )rH   rG   rC   rI   rF   rA   r   )r   ro   )rF   rC   rI   rm   )N.r   缉ؗҜ<r.   )rP   rp   rq   r   r5   rb   shaper`   moveaxisndimbroadcast_tozerosr   ranger   )r6   r   r7   rs   ro   r/  r   r8   r9   rd   rP  
statisticspvaluesrt   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                 l   / SQn/ SQn[        UR                  U5      UR                  U5      5      nSUS'   [        R                  US'   [        UR                  U5      UR                  U5      5      n[	        UR
                  UR
                  5        [	        UR                  UR                  5        g )Nr]   )rC   rF   rH   rI   rl   rC   rB   rA   rD   rD   rE   r   r   rD   )r   r5   rP   rr   r   r`   rb   )r6   r7   r8   r9   r8  r9  s         r<   test_gh_11355TestMannWhitneyU.test_gh_11355   s    -BJJqM2::a=9 !vv!BJJqM2::a=97T[[1r?   c                 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   rC   rF   rH   rl   rB   rA   rD   rE   )rP   ra   r   r5   r   r`   rb   )r6   r7   r8   r9   res3s        r<   test_gh11355_nan!TestMannWhitneyU.test_gh11355_nan.  s{     1bffaAq!Q2BJJqM2::a=9

266(:;RZZ%78r?   )r   rB   rC   rD   rC   rF   rH   rI   rB   rA   rD   rE         $@g+zQ?r   g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r8   r9   r`   rb   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=r.   )r   r5   r   r`   rb   )r6   r8   r9   r`   rb   r7   rd   s          r<   test_gh_11355bTestMannWhitneyU.test_gh_11355bG  sT     2::a="**Q-Mrzz)'<5I

BJJv$6UCr?   )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   )r5   r   r   r`   r   rb   )
r6   r   r   r   rk  r7   statistic_expr8   r9   rd   s
             r<   test_gh_9184TestMannWhitneyU.test_gh_9184X  sg    . JJSTJJ561'2Crzz-'@A

BJJz$:;r?   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   )r5   ra   r   r   r   r`   rb   )r6   r7   ra   abrd   s         r<   test_gh_4067TestMannWhitneyU.test_gh_4067w  sn     jj HHc#./HHc#./1 rzz#7

C(r?   r=  r   r>  )r   ga׀}?)r   r   )r   g?h?)r   r   )r   g5&#\?)r   r   )r8   r9   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   rm  ư>rh  r   rtolrA   )r   r5   r   r$   r   r`   rb   )r6   r8   r9   r   r   r7   rd   ry  s           r<   test_gh_2118TestMannWhitneyU.test_gh_2118  s{     2::a="**Q-'2<I'+rzz9turzz(1+'>TJ

BJJx{$;$Gr?   c                    [         R                  R                  S5      nSu  p#UR                  US9nUR                  US9n[        [        S[        SS5      5        [        R                  R                  5         [        R                  " XESS9n[        R                  R                  R                  nUS   [        UR                  X#-  UR                  -
  5      S	-   :X  d   e[        R                  " XTSS9  U[        R                  R                  R                  :X  d   e[        R                  R                  5         [        R                  " USU-  SS
S9  [        R                  R                  R                  nUS   S	:X  d   e[        R                  " SU-  USS
S9  U[        R                  R                  R                  :X  d   eg )N   g>mjK )rE   rh   ri   r!  r   r   r   rm   rA   r   )r   r   )rP   rp   rq   r#  r   r   r!  resetr   r   configurationsrP  minr`   )r6   rs   r/  r   r8   r9   rd   rP  s           r<   test_gh19692_smaller_table+TestMannWhitneyU.test_gh19692_smaller_table  si   
 ii##$78JJAJJJAJ
Ca,  g6++11RyCqsS]]/BCaGGGG10
3399999
 	1ac'yI++11RyA~~1Q3'yI
3399999r?   r   )r   r   r   c                 |   [         R                  R                  S5      nUR                  SS9nUR                  SS9n[        R                  " X4[        R
                  " 5       USS9n[        R                  " X4SUSS9n[        UR                  UR                  SS	9  [        UR                  UR                  SS	9  g )
Nr}  )rB   rE   ri   )rB   rF   rA   )r   r   ro   r   V瞯<rx  )	rP   rp   rq   r   r   PermutationMethodr   r`   rb   )r6   r   rs   r8   r9   rd   r9  s          r<   test_permutation_method(TestMannWhitneyU.test_permutation_method  s    ii##$78JJFJ#JJFJ#  e.E.E.G-8qB!!!w.9Ct~~EB

DKKe<r?   )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[        R                  " X#SS9u  pE[        R                  " X2SS9u  pg[        R                  " X#SS9u  p[        R                  " X2SS9u  p[        XW5        [        X5        XY:w  d   e[        XAR                  S5      5        [        XaR                  S5      5        [        XR                  S5      5        [        XR                  S5      5        [        XQR                  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         @     Y@g=_A?rx  Mb@?glPz.?rO  ry  r/   )
r5   XYr   r   r   r   ry  r"   r%   r6   r7   r  r  u1rU   r1  rW   u3rY   u4p4ry  s                r<   test_mannwhitneyu_one_sided,TestMannWhitneyU.test_mannwhitneyu_one_sided  s   zz$&&!2::dff#51##Af=##Ai@##Ai@##Af=xxJJt,-JJt,-JJt,-JJt,-JJ'89		JGGrzz1tyytJJ':;$USr?   c                    UR                  U R                  5      UR                  U R                  5      p2[        R                  " X#SS9u  pE[        R                  " X2SS9u  pg[        XW5        [        XAR                  S5      5        [        XaR                  S5      5        UR                  UR                  :X  a  U R                  OSn[        XQR                  S5      USS9  g )	Nr   r   r  r  r  glPz.?rO  r  
r5   r  r  r   r   r   r"   r%   ry  r   	r6   r7   r  r  r  rU   r1  rW   ry  s	            r<   test_mannwhitneyu_two_sided,TestMannWhitneyU.test_mannwhitneyu_two_sided  s    zz$&&!2::dff#51##AkB##AkBJJt,-JJt,-GGrzz1tyytJJ'9:ERr?   c                    UR                  U R                  5      UR                  U R                  5      p2[        R                  " X#SSS9u  pE[        R                  " X2SSS9u  pg[        R                  " X#SSS9u  p[        R                  " X2SSS9u  p[        XW5        [        X5        XY:w  d   e[        XAR                  S5      5        [        XaR                  S5      5        [        XR                  S5      5        [        XR                  S5      5        UR                  UR                  :X  a  U R                  OSn[        XQR                  S5      US	S
9  [        XR                  S5      US	S
9  g )NFr   r   r   r  r  r  gii5?rO  r  g22?r  r  s                r<   &test_mannwhitneyu_no_correct_one_sided7TestMannWhitneyU.test_mannwhitneyu_no_correct_one_sided  s   zz$&&!2::dff#51##A%VD##A%YG##A%YG##A%VDxxJJt,-JJt,-JJt,-JJt,-GGrzz1tyytJJ'895QJJ';<4eTr?   c                    UR                  U R                  5      UR                  U R                  5      p2[        R                  " X#SSS9u  pE[        R                  " X2SSS9u  pg[        XW5        [        XAR                  S5      5        [        XaR                  S5      5        UR                  UR                  :X  a  U R                  OSn[        XQR                  S5      USS	9  g )
NFr   r   r  r  r  g22?rO  r  r  r  s	            r<   &test_mannwhitneyu_no_correct_two_sided7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sided  s    zz$&&!2::dff#51##A%[I##A%[IJJt,-JJt,-GGrzz1tyytJJ';<4eTr?   c                    UR                  / SQ5      nUR                  / SQ5      n[        R                  " X#SS9n[        UR                  UR                  S5      5        [        UR
                  UR                  S5      5        [        R                  " X#SS9n[        UR                  UR                  S5      5        [        UR
                  UR                  S5      5        [        R                  " X#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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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?չ?)r5   r   r   r   r`   rb   rc   s        r<   test_mannwhitneyu_ones'TestMannWhitneyU.test_mannwhitneyu_ones  s    JJ 0 1& JJ ( )   6:rzz'':;

BJJ/D$EF  9=rzz'':;

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

BJJ/@$ABr?   r{   N)3r|   r}   r~   r   r2   r   r   r   r   r   r8   r9   cases_basicr   r   cases_continuityr   r  r$  r%  r&  r'  r3  r:  rA  cases_scalarrG  rK  r\  r_  rc  rP   rr   cases_11355ri  
cases_9184ro  rt  
cases_2118rz  r  r  r  r  ry  r  r  r  r  r  r   r{   r?   r<   r   r      s    [[!!+6S!T- U-*
.10j 	-A	A& %0<H*,$*lC*,$-F*,$/7C*,$*g>*,$-A*,-K [[1;?[[W&BCJ D @J *5M/1)/4H/1)2dK/1)4N/1)/5I/1)2eL/12 [[13CD= E=<,  $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 [[!!+6S!T[[Xg'>?)K @ U)KV2 [[!!+6S!T9 U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<: [[!!+6S!T) U)  #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r?   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS r\R                   R#                  SS5      S 5       rS rSrg)TestSomersDi>  c                    U R                   U R                  -   U l        [        R                  " S5      U R                   U R                  -   4[        R                  " S5      U R                   U R                  -   4S.U l        U R
                   Vs/ s H  oR
                  U   S   PM     nn[        R                  " [        R                  SS9U l
        U R                  " U6 U l        g s  snf )NrG   r   rA   r   r   r   )ALL_INTEGER	ALL_FLOATdtypesrP   rQ   	arguments	functoolspartialr   somersdpartialfuncr   )r6   idxinput_arrays      r<   setup_methodTestSomersD.setup_method?  s    &&7 iim"..?A iim"..?AB :>H#~~c*1-H
 %,,U]]9DF((+6 Is   C+c                     U R                   " U6 n[        UR                  U R                  R                  SS9  [        UR                  U R                  R                  SS9  g )Nr  r.   )r  r   r`   r   rb   )r6   r   rd   s      r<   pythranfuncTestSomersD.pythranfuncN  sF    %t}}'>'>UK

DMM$8$8uEr?   c                 .   / SQ/ SQ/ SQ/n[         R                  " U5      nU R                  [         R                  5      n[         R                  " U40 UD6n[        UR                  UR                  SS9  [        UR
                  UR
                  SS9  g )N)r         rH   r   )rH   r     #   rk   )rA   rC   rB   rH      r  r.   )r   r  get_optional_argsr   r`   rb   )r6   r.  r8  optional_argsr9  s        r<   test_pythranfunc_keywords%TestSomersD.test_pythranfunc_keywordsS  sm    #%8:JK}}U#..u}}=}}U4m4UCT[[u=r?   c                 
   / SQn/ SQnSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  / SQn/ S	QnSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  / S
Qn/ SQnSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  [
        R                  " S5      n[
        R                  " S5      nSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  [
        R                  " S5      n[
        R                  " / SQ5      nSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  [
        R                  " S5      n[
        R                  " S5      S S S2   nSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  [
        R                  " S5      n[
        R                  " / SQ5      nSn[         R                  " X5      n[        UR                  US   SS9  [        UR                  US   SS9  / SQn/ SQnSn[         R                  " XV5      n[        UR                  US   SS9  [        UR                  US   SS9  [         R                  " / SQ/ SQ5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [         R                  " / SQ/ SQ5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [         R                  " / SQ/ SQ5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [         R                  " S/S/5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [         R                  " / / 5      n[        UR                  [
        R                  5        [        UR                  [
        R                  5        [
        R                  " S5      n[
        R                  " S5      n[        [        [         R                  X5        g )N)rE   rB   rA   rC   rF   rD   rH   rI   )rE   rB   rF   rC   rA   rI   rH   rD   rC  r   r  r.   rA   )	r   rE   rB   rA   rC   rF   rD   rH   rI   )	rE   rB   r   rF   rC   rA   rI   rH   rD   )rE   rB   rA   rC   rF   rD   rH   )rE   rB   rF   rC   rA   rH   rD   )g+$I$I¿g=/3n+?rG   r   r   )
r   rB   rA   rC   rD   rF   rE   rH   rI   rl   )gs'}'?r   rm   )g      r   )
rl   rH   rI   rF   rE   rC   rD   rB   rA   r   )g}'}'r   )rk   rB   rA   rk   rB   )rA   rD   rH   rA   r   )      g.ʂ?)rB   rB   rB   )rB   r   rB   re        4@)r   r  r   r`   rb   rP   rQ   arrayra   r   r   )r6   r8   r9   r   rd   x1x2s          r<   test_like_kendalltau TestSomersD.test_like_kendalltau^  s    %$9mmA!x{?

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

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

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

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

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

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

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

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

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

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

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

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

BFF+ IIcNIIcNj%--6r?   c                    / SQn/ SQnSnSnSn[         R                  " X5      n[        UR                  USS9  [        UR                  USS9  [        UR                  R                  S	5        [         R                  " X!5      n[        UR                  USS9  [        UR                  USS9  [        UR                  R                  S
5        g )N)rA   rA   rA   rB   rB   rB   rB   rB   rC   rC   rA   rB   rB   rB   rB   rB   rB   rB   rC   rC   rC   rC   rC   rC   )rA   rA   rA   rA   rA   rA   rA   rA   rA   rA   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   gCE]t?g^_?gO((Ƿ?r  r.   r0   )rC   rB   rB   rC   )r   r  r   r`   rb   r   r.  rP  )r6   r8   r9   d_crd_rcr;   rd   s          r<   test_asymmetryTestSomersD.test_asymmetry  s    11 ! mmA!t%8

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

AE2SYY__f-r?   c                 j   [         R                  " SS/SS/SS/SS/SS//5      nUR                  nSn[        [        R
                  " U5      R                  U5        [         R                  " S	S
/SS
/S
S//5      nSu  p2[        [        R
                  " U5      R                  U5        [        [        R
                  " UR                  5      R                  U5        [         R                  " S	S
/S
S/SS
//5      nSn[        [        R
                  " UR                  5      R                  U5        g )NrI   rB   rF   rE   rC   rD   rA   gHHHHHH?r  r   U   rN   )gM&w?r   gtE]t)rP   r  Tr   r   r  r`   )r6   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#>r?   c                    SnSn[         R                  " U5      n[         R                  R                  S5      n[        R
                  R                  U[         R                  " U5      U-  US9R                  U5      n[        R                  " U5      n[         R                  " US[         R                  " US   5      SS9n[        R                  " U5      n[         R                  " US[         R                  " US   5      SS9n	[        R                  " U	5      n
[         R                  " US[         R                  " US   S-   5      SS9n[        R                  " U5      n[        UR                  SS	S
9  [        UR                  UR                  5        [        UR                  U
R                  5        [        UR                  UR                  5        [        UR                  SS	S
9  [        UR                  UR                  5        [        UR                  U
R                  5        [        UR                  UR                  5        g )Nr   rD   rF   r   r;   random_staterB   rA   rn   gayr  r.   gPj$?)rP   prodrp   RandomStater   multinomialrvsr   reshaper  insertrT  r   r`   rb   )r6   NrP  rj   rs   r!  rd   s2r9  s3rb  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0r?   c                 F   SnSn[         R                  " U5      n[         R                  R                  S5      n[        R
                  R                  U[         R                  " U5      U-  US9R                  U5      nUS-
  nSn[        [        US9   [        R                  " U5        S S S 5        US-   nS	n[        [        US9   [        R                  " U5        S S S 5        S
n[        [        US9   [        R                  " / /5        S S S 5        [        [        US9   [        R                  " S//5        S S S 5        [         R                  " S5      n	[        [        US9   [        R                  " U	5        S S S 5        SU	S'   [        [        US9   [        R                  " U	5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r  r   r  rB   z:All elements of the contingency table must be non-negativer   r   z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.rA   )rC   rC   r  )rP   r  rp   rq   r   r  r  r   r  r   r   r  rT  )
r6   r  rP  rj   rs   r!  s5r   s6s7s
             r<   test_invalid_contingency_tables+TestSomersD.test_invalid_contingency_tables  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   rm   g @)rC   rB   rA   r   r  )rP   rr   r   r  r   r`   rb   )r6   r8   r  r9   y2rd   r9  s          r<   test_only_ranks_matter"TestSomersD.test_only_ranks_matter@  sn    #rvvwmmA!}}R$S]]DNN3SZZ-r?   c                     [         R                  " S5      n[         R                  " S5      n[        R                  " X5      n[	        UR
                  [         R                  " S5      5        g )NrG   )rP   rQ   r   r  r   r.  eyer6   r8   r9   rd   s       r<   test_contingency_table_return)TestSomersD.test_contingency_table_returnK  s@    IIbMIIbMmmA!SYYr
+r?   c                 ,   / SQn/ SQn[         R                  " XSS9nUR                  S:  d   e[         R                  " XSS9n[        UR                  UR                  5        [	        UR
                  SUR
                  S-  -
  5        [         R                  " XS	S9n[        UR                  UR                  5        [	        UR
                  UR
                  S-  5        UR                  5         [         R                  " XSS9nUR                  S:  d   e[         R                  " XS	S9n[        UR                  UR                  5        [	        UR
                  SUR
                  S-  -
  5        [         R                  " XSS9n[        UR                  UR                  5        [	        UR
                  UR
                  S-  5        [        R                  " [        S
S9   [         R                  " XSS9  S S S 5        g ! , (       d  f       g = f)Nr  )rE   rF   rH   rI   rH   r   r   r   r   rA   rB   r   z`alternative` must be...r   	ekki-ekki)
r   r  r`   r   r   rb   reverser2   r   r   )r6   r  r  r   rd   s        r<   test_somersd_alternative$TestSomersD.test_somersd_alternativeR  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 )	NrG   rA   rm   r   r   r   r   r   )rP   rQ   flipr   r  r`   rb   )r6   r  r  r  expected_statisticrd   s         r<    test_somersd_perfect_correlation,TestSomersD.test_somersd_perfect_correlation{  s     YYr]'RRWWR["6QB mmB<}} 2222zzQ mmB7}} 2222zz#7aQ??? mmB	:}} 2222zz#7aQ???r?   c                     SS/nSn[         R                  R                  S5      nUR                  X5      nUR                  X5      nSn[        R
                  " XE5      R                  n[        XgSS9  g )NrA   rB   @B l   .E5 g 0uD?r  r.   )rP   rp   rq   choicer   r  r`   r   )r6   classes	n_samplesrs   r8   r9   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;r?   )r  r  r   r  N)r|   r}   r~   r   r  r  r  r  r  r  r  r  r  r  r   r2   r   r   r  r  r   r{   r?   r<   r  r  >  sm    7F
	>m7^.2?,1@"H	.,';R [[3]C@ D@0<r?   r  c                      \ rS rSrSr\R                  R                  SSS/SS//S4S	S
/SS//S4S
S/SS
//S4SS/SS//S4SS/SS//S4SS/SS//S4SS/SS//S4SS/SS//S4SS/SS
//S4SS
/SS//S 4S
S/SS
//S4/5      S! 5       r\R                  R                  SSS/SS//S"4S	S
/SS//S#4S
S/SS
//S$4SS/SS//S%4SS/SS//S&4SS/SS//S'4SS/SS//S(4SS/SS//S)4SS/SS
//S*4SS
/SS//S+4S
S/SS
//S$4/5      S, 5       r	S- r
\R                  R                  SSS/SS//S.4/5      S/ 5       r\R                  R                  SSS/SS//S0\R                  44SS/SS//S0\R                  44/5      S1 5       r\R                  R                  SS
S/SS
//S24SS3/S4S//S54S6S7/S8S//S94/5      \R                  R                  S:S;S</5      S= 5       5       rS>rg?)@TestBarnardExacti  z8Some tests to show that barnard_exact() works correctly.input_sample,expected+   r6  rG   '   )gXyq@g{2s&Q7?r   rB   r   rE   )gllgEA]0K?rH   rI   )*)1%g_  ?rA   )g_c1?g= ?      )g5PyQgQ@2?   r  )ggJ"?)g_c1gwݝل?r   rD   )g7@g      ?rC   )g~t,?3O?rF   )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   r`   rb   r   r6   input_sampler   rd   r`   rb   s         r<   test_preciseTestBarnardExact.test_precise  s*    2 L)MM3::6+X6r?   )g7\@gA2?)gXS;gh?)g>!Ɏg6  ?)gSy@?g^F?)g-gXI#?)gaЍgo?)gb]?gFugH	?)g6ҭ@g      ?)gi(	r  )gNXzr  c                 `    [        USS9nUR                  UR                  pT[        XE/U5        g)zThe expected values have been generated by R, using a resolution
for the nuisance parameter of 1e-6 :
```R
library(Barnard)
options(digits=10)
barnard.test(43, 40, 10, 39, dp=1e-6, pooled=FALSE)
```
F)pooledNr  r  s         r<   test_pooled_param"TestBarnardExact.test_pooled_param  s,    2 L7MM3::6+X6r?   c                    Sn[        [        US9   [        SS/SS//SS9  S S S 5        S	n[        [        US9   [        [        R                  " S
5      R                  SS5      5        S S S 5        Sn[        [        US9   [        SS/SS//5        S S S 5        Sn[        [        US9   [        SS/SS//S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       N\= f! , (       d  f       g = f)N7Number of points `n` must be strictly positive, found 0r   rA   rB   rC   rD   r   r   ,The input `table` must be of shape \(2, 2\).rF   *All values in `table` must be nonnegative.rm   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)r   r   r   rP   rQ   r  r6   	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   rA   r   r`   rb   r   r  s         r<   test_edge_cases TestBarnardExact.test_edge_cases  s5     L)MM3::6Va[)Y,r?   r   c                     [        U5      nUR                  UR                  pT[        XRS   5        [        XBS   5        g r2  r3  r  s         r<   test_row_or_col_zero%TestBarnardExact.test_row_or_col_zero  s5     L)MM3::6Va[)Y,r?   )r  gE\/??   ,  )ggQ5r      rO   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   Nrm   r   Hz>r.   )rP   r  r   r`   rb   r   )	r6   r  r   r   expected_statless_pvalue_expectrd   r`   rb   s	            r<   test_less_greater"TestBarnardExact.test_less_greater  sd    , -5))#88L1!TrT':L*NMLBMM3::6-!D4	
r?   r{   N)r|   r}   r~   r   __doc__r2   r   r   r   r$  r.  r4  rP   ra   r7  r@  r   r{   r?   r<   r  r    su   B[[2hR!#CDAhq	"$EF!fq!f@A!fr2h!AB"gBx "CD"gBx "CD1gAw!BC!fq!f?@!fq!f@A!fq!f@A!fq!f@A	
 7! 7 [[2hR!#CDAhq	"$EF!fq!f@A!fr2h!AB"gBx "CD"gBx "CD1gAw!BC!fq!f?@!fq!f@A!fq!f@A!fq!f@A	
 7! 7;4 [[!fq!fx(	
-- [[!fq"gbff.!fr1gbff.	
-- [[!fq!f@A#ha!#:;2hq	"$;<	
 [[]Y,?@
 A
r?   r  c                      \ rS rSrSrSr\R                  R                  SSS/SS//S4S	S
/SS//S4S	S/SS//S4SS	/SS
//S4S	S/S
S//S4SS
/SS//S4SS/SS//S4SS/SS//S4SS/SS//S4/	5      S 5       r	\R                  R                  SSS/SS//S 4SS/SS//S!4S	S
/SS//S"4S	S#/SS//S$4S	S/SS//S%4S	S/S
S//S&4SS
/SS//S4SS/S'S//S4SS/SS//S!4SS/SS//S(4SS/SS//S)4/5      S* 5       r
\R                  R                  SSS/SS//S+4SS/SS//S,4S	S
/SS//S-4S	S/SS//S.4S	S/S
S//S/4SS
/SS//S04SS/SS//S,4SS/SS//S14/5      S2 5       rS3 r\R                  R                  SSS	/SS//\R                  \R                  44S	S/SS//\R                  \R                  44/5      S4 5       rS5 r\R                  R                  S6S75      S8 5       rS9rg:);TestBoschlooExacti@  z9Some tests to show that boschloo_exact() works correctly.r=  r  rB   rH   rI   )<vB\?g/??rE   rA   rG   )gM?gA>?r  r  r  )_VѶ?g֭?)u %?gc'?r   rD   rA   rA   rC   )r   g      ?rk   )+f?gXc}v?r!   %   )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   r.   Nr   r`   rb   r   ATOLr  s         r<   	test_lessTestBoschlooExact.test_lessE  s0    2 \v>MM3::6+XIIFr?   r  r6  r  )k\2?g0,%?)gKv?gN3?)rG  g'&5?r  )gw@_?g7?)gi{?gɑ)z?)օa?g1|?rF   )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   r.   NrL  r  s         r<   test_greaterTestBoschlooExact.test_greaterb  s0    6 \yAMM3::6+XIIFr?   )rP  gqQS,5?)rE  gG?/??)rG  gKE`?)rF  ghr1ֽ?)rQ  grfb?)r   g      ?)rI  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   r.   NrL  r  s         r<   test_two_sided TestBoschlooExact.test_two_sided  s2    0 \{bIMM3::6+XIIFr?   c                    Sn[        [        US9   [        SS/SS//SS9  S S S 5        S	n[        [        US9   [        [        R                  " S
5      R                  SS5      5        S S S 5        Sn[        [        US9   [        SS/SS//5        S S S 5        Sn[        [        US9   [        SS/SS//S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       N\= f! , (       d  f       g = f)Nr'  r   rA   rB   rC   rD   r   r(  r)  rF   r*  rm   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r+  )r   r   r   rP   rQ   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7r0  c                     [        U5      nUR                  UR                  pT[        XRS   5        [        XBS   5        g r2  )r   r`   rb   r   r  s         r<   r7  &TestBoschlooExact.test_row_or_col_zero  s5     \*MM3::6Va[)Y,r?   c                     SS/SS//n[        USS9R                  n[        USS9R                  nS[        X#5      -  S:  d   e[        USS9R                  nUS	:X  d   eg )
NrA   r   rk   r   r   r   rB   r   r   )r   rb   r  )r6   tblplpgpts        r<   test_two_sided_gt_1%TestBoschlooExact.test_two_sided_gt_1  sn     1vBx CV4;;CY7>>R}q   C[9@@Syyr?   r   )r   r   c                 ~    SS/SS//n[        X!S9R                  n[        R                  " X!S9S   n[	        X45        g )NrB   rH   rI   r   rA   )r   r`   r   fisher_exactr   )r6   r   r^  boschloo_statfisher_ps        r<   test_against_fisher_exact+TestBoschlooExact.test_against_fisher_exact  sC     1v1v&sDNN%%cCAF0r?   r{   N)r|   r}   r~   r   rB  rM  r2   r   r   rN  rS  rW  r.  rP   ra   r7  rb  rh  r   r{   r?   r<   rD  rD  @  s   CD[[!fq!f89!fr2h!78"gBx ":;1gAw!89!fq!fv&!fq!f~.!fq!f89"g1v 892hR!#9:
	
GG [[2hR!#?@!fq!f56!fr2h!89"gBx "89"gBx "78!fq!f89!fq!fv&!fq!fv&!fq!f56"g1v 672hR!#9:	
 G! G [[2hR!#?@!fq!f78!fr2h!78"gBx "89!fq!f78!fq!f}-!fq!f78"g1v 89		
GG <4 [[!fq"g 01!fr1g 01	
-- [[],?@1 A1r?   rD  c                      \ rS rSr\R
                  R                  S/ \R                  " S5      4\R                  " S5      S/4/5      \R
                  R                  SSS9S 5       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   rE   rA   r   zlazy -> no axis_nan_policyr   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)r+   N)r5   r   ).0argr7   s     r<   	<genexpr>5TestCvm_2samp.test_too_small_input.<locals>.<genexpr>  s$     Lt

3&6r&:
;ts   &)r^   )	r   r   r   r   r   r`   r5   ra   rb   )r6   r   r7   rd   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)NrE   z/method must be either auto, exact or asymptoticr   xyz)rQ   r2   r   r   r   )r6   r7   r9   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)rB   rC   rD   rH   rF   )r  r   rk   r  )r   rP   r  r   r`   rb   )r6   r8   r9   r1r2s        r<   test_list_inputTestCvm_2samp.test_list_input  sV    !!'!"((1+rxx{;bllBII.ryy0IJr?   r"   r#   c                    [        U5      (       a,  UR                  S:  a  US:X  a  [        R                  " S5        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 )Nr'   r$   r(   )	gffffff@g @r-   gffffff!@皙"@g#@g333333$@g333333%@gffffff&@r+   )g@g@g@      @333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?rJ   r.   g
ףp=
?r   )r   r1   r2   r3   r   r4   r5   r   r   r`   rb   )r6   r"   r7   r8   r9   rs         r<   test_example_conover"TestCvm_2samp.test_example_conover  s     B<<BNNU2u	7IKK;<(- $72;MJJGuJUJJ BIN  P &RZZUZ%C$O"**S*">TJr?   zstatistic, m, n, pval))i  rE   rF   gcj`?)ii  rH   rH   gtE]t?)i@  rD   rF   g88?)i  rF   rH   gXwS?c                 0    [        [        XU5      U5        g r   )r   r   )r6   r`   r/  r   pvals        r<   test_exact_pvalueTestCvm_2samp.test_exact_pvalue   s     	*9;TBr?   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	  )rj   r  i r   rA   r   )	rP   rp   rq   r
   normr  r5   r   rb   )r6   r7   rs   r8   r9   r  s         r<   test_large_sampleTestCvm_2samp.test_large_sample  s     ii##D)""c"B""S"Azz!}bjjm1 &188a cE*188ar?   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   rH   rI   r   r   r   r   r.   )	rP   rp   r  r5   r   r   r`   r   rb   )r6   r7   rs   r8   r9   ry  rz  s          r<   test_exact_vs_asymptotic&TestCvm_2samp.test_exact_vs_asymptotic  s    ii##A&JJszz!}%JJszz!}%!!w7!!|<bll3		29948r?   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   )rQ   r5   r   r   rb   )r6   r7   r8   r9   ry  rz  s         r<   test_method_autoTestCvm_2samp.test_method_auto!  s    IIcNJJ'(!!w7!!v6		299-IIcN!!|<!!v6		299-r?   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   rD   )rQ   r   r   r`   r5   rb   )r6   r7   r8   rd   s       r<   test_same_inputTestCvm_2samp.test_same_input-  s     IIbM"1(rzz"~6

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

BJJrN3r?   r{   N)r|   r}   r~   r   r2   r   r   rP   rQ   r   rr  r   r{  r  r  xslowr  r  r  r  r   r{   r?   r<   rk  rk    s    [[Vr299Q<&8')yy|aS&9&; <[[!!+6R!S< T<<.K [[W&BCK DK [[456
C6
C [[
  
 9
.4r?   rk  c                      \ rS rSr/ SQ/ SQ/ SQ4r/ SQ/ SQ/ SQ4r/ SQ/ SQ/ SQ4rSrS	rS
r	\
R                  R                  S\\S4\\S4\\	S44/ SQS9S 5       rSrSr\
R                  R                  S\\S4\\S44SS/S9S 5       rS rS rS rS rS rS rS r\
R                  R                  SS 5      S! 5       r\
R                  R                  S"/ S#Q5      S$ 5       rS% rS&rg')(TestTukeyHSDi;  )rf       7@ffffff:@皙;@fffff=@)ffffff<@皙A@     =@皙@@皙>@)g:@gL<@gL8@g333333:@g;@)rf  r  gHzG:@r  r  r  r  r  )rf  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,atolr0   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;
 -  rE   Nr+   )rF   rF   rA   r.   r   rP   r5   replacesplitfloatr  r   	tukey_hsdconfidence_intervalintr   lowr`   highrb   )r6   datares_expect_strr/   
res_expect	res_tukeyconfrt   jlr!  hsigs                r<   test_compare_sasTestTukeyHSD.test_compare_sasf  s    B ZZ 6 6uc B H H J12 N&+--4WV_ 	OOT*	,,.",A!q6A:s1vzqDHHQTNA9I//5qDDIIadOQ:Y--ad3s:SAXF #-r?   z
        1	2	-8.2491590248597	-4.6	-0.9508409751403	0.0144483269098
        1	3	-3.9091590248597	-0.26	3.3891590248597	0.9803107240900
        2	3	0.6908409751403	4.34	7.9891590248597	0.0203311368795
        z
        1	2	-7.02207069748501	-3.645	-0.26792930251500 0.03371498443080
        1	3	-2.68207069748500	0.695	4.07207069748500 0.85572267328807
        2	3	0.59347644287720	4.34	8.08652355712281 0.02259047020620
        rh  r=  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");
r+   rC   rF   rA   r.   N)rP   r5   r  r  r  r   r  r  r  r   r  r`   r  rb   )r6   r  r  r/   r  r  r  rt   r  r  r!  r  r;   s                r<   test_compare_matlab TestTukeyHSD.test_compare_matlab  s     ZZ 4 4 6&+--4WV_ 	OOT*	,,. *A!q6A:s1vzqDHHQTNA9I//5qDDIIadOQ:I,,QT2AA !+r?   c                    Sn[         R                  " UR                  SS5      R                  5       SS [        S9R                  S5      n/ SQ/ S	Q/ S
Q4n[        R                  " U6 nUR                  5       nU H  u  pgpp[        U5      S-
  [        U5      S-
  pv[        UR                  Xg4   U	SS9  [        UR                  Xg4   USS9  [        UR                  Xg4   U
SS9  [        UR                  Xg4   USS9  M     g)a  
Testing against results and p-values from R:
from: https://www.rdocumentation.org/packages/stats/versions/3.6.2/
topics/TukeyHSD
> require(graphics)
> summary(fm1 <- aov(breaks ~ tension, data = warpbreaks))
> TukeyHSD(fm1, "tension", ordered = TRUE)
> plot(TukeyHSD(fm1, "tension"))
Tukey multiple comparisons of means
95% family-wise confidence level
factor levels have been ordered
Fit: aov(formula = breaks ~ tension, data = warpbreaks)
$tension
z
                diff        lwr      upr     p adj
        2 - 3  4.722222 -4.8376022 14.28205 0.4630831
        1 - 3 14.722222  5.1623978 24.28205 0.0014315
        1 - 2 10.000000  0.4401756 19.55982 0.0384598
        r  r  rE   Nr+   r  )   rN   6   r  F   4   3   r  C   r   r        r     )   r  ,   )r  r;  r  r  rk   r  r  rN   $   *   r  r  r  r  rO   r;  r  r  )r  r;  r!   r  rG   r  rO   r  r  r  r;  r!   r  r   r  r  r  rO   rA   r=  r.   rw  h㈵>r  )r6   str_resr  r  r  r  rt   r  r!  r  r  r;   s               r<   test_compare_rTestTukeyHSD.test_compare_r  s     ZZs ; A A CAB G&+--4WV_ 	555	6 OOT*	,,. *A!q6A:s1vzqDHHQTNAD9I//5qtDDIIadOQT:I,,QT2ADA !+r?   c                    / SQn/ SQn/ SQn/ SQn[         R                  " XX45      nUR                  5       n[        R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  " / S	Q/ S
Q/ SQ/ SQ/5      nS H?  u  p[        UR                  X4   XyU
4   SS9  [        UR                  X4   XU
4   SS9  MA     g)zX
Example sourced from:
https://www.itl.nist.gov/div898/handbook/prc/section4/prc471.htm
)皙@g@333333@gffffff@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@)rA   r   )rB   r   )r   rC   rF  r  r   r.   N)r   r  r  rP   r5   r   r  r  )r6   group1group2group3group4rd   r  lowerupperrt   r  s              r<   test_engineering_stat_handbook+TestTukeyHSD.test_engineering_stat_handbook  s    
 +*+*ooff=&&(

 	 
 

!	  ?FQDHHQTNEQ$KdCDIIadOUa4[tD ?r?   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 )rC   r   r   r   r   rA   )rP   rp   rq   r   r  r  r   r  r  r  diagonalr`   rb   )r6   rs   r  rd   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0r?   c                     [        [        SS9   [        R                  " / SQS[        R
                  // SQ5        S S S 5        g ! , (       d  f       g = f)Nz...must be finite.r   r   rB   )rF   rH   rC   )r   r   r   r  rP   rr   rJ  s    r<   test_no_infTestTukeyHSD.test_no_inf  s2    :-ABOOI266{I> CBBs   -A
Ac                     [        [        SS9   [        R                  " SS/SS//SS// SQ5        S S S 5        g ! , (       d  f       g = f)Nz...must be one-dimensionalr   rA   rB   rC   rE   )rE      rF   r   r   r   r  rJ  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 oner   rB   rE   )rD   rE   rF   r  rJ  s    r<   test_no_emptyTestTukeyHSD.test_no_empty  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'r   r   rB   rE   rF   rH   False)	equal_var)r   	TypeErrorr   r  )r6   rv  s     r<   test_equal_var_input_validation,TestTukeyHSD.test_equal_var_input_validation  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.r   r  rH   rC   r  )r6   r  s     r<   test_not_enough_treatments'TestTukeyHSD.test_not_enough_treatments   s-    :-HIOOzlU24 JIIs	   2
A cl)r  r   rA   rB   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 1r   r  rC   rD   rl   )r   r   r   r  r  )r6   r  r  s      r<   test_conf_level_invalid$TestTukeyHSD.test_conf_level_invalid%  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 )NrB   r  r  )r   r  data_diff_size	ttest_indr   rb   )r6   r  	res_ttests      r<   test_2_args_ttestTestTukeyHSD.test_2_args_ttest+  sn    OOT%8%8!%<=	OOT%8%8!%<=		(()*:*:4*@A	(()*:*:4*@Ar?   r{   N)r|   r}   r~   r   data_same_sizer  extreme_sizesas_same_sizesas_diff_sizesas_extremer2   r   r   r  matlab_sm_sizmatlab_diff_szr  r  r  r  r  r  r  r  r  r  r  r   r{   r?   r<   r  r  ;  s   4446N H446N '24L
MMK [[7-}dC-}dC+[%@ "E  F#GF#GJMN [[7-}eD-~tDF"5"7"9  :
B:
B*'BRE41&?B3J
 [[Wf-5 .5 [[T>2& 3&
Br?   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)TestGamesHowelli3  )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  rH   Nr+   rm   rF   r  Fg:0yE>r.   rw  r  )rP   r5   r  r  r  r  r   r  r  r  r   r`   rb   r  r  )r6   r  r  r  	res_gamesr  rt   r  r!  r  r  r;   s               r<   test_compare_spss!TestGamesHowell.test_compare_spssO  s    8 ZZ""5#.446qr: Q 	 OOT;U;	,,. *A!q63q6qI//5qtDI,,QT2ADADHHQTNAD9DIIadOQT: !+r?   z
                  q value             Pr(>|q|)
    1 - 0 == 0   -1.5467805948856344  0.55873362851759
    2 - 0 == 0    0.4726721776628535  0.94114775035993
    2 - 1 == 0    1.246837541297872   0.68298393799782
    aw  
                 q value             Pr(>|q|)
    1 - 0 == 0  -1.0589317485313876  0.87275427357438
    2 - 0 == 0  -0.5716222106144833  0.97526284087419
    3 - 0 == 0  -2.6209678382077000  0.42625067714691
    2 - 1 == 0   0.8971899898179028  0.91489506061850
    3 - 1 == 0   0.4579447210555352  0.98614322544695
    3 - 2 == 0  -2.198800177874794   0.47553444364614
    c                 Z   [         R                  " UR                  SS5      R                  SS5      R                  5       SS [        S9R                  SS5      n[        R                  " US	S
06nU H5  u  pV  px[        U5      [        U5      pV[        UR                  Xe4   USS9  M7     g)a  
games-howell is provided by PMCMRplus package
https://search.r-project.org/CRAN/refmans/PMCMRplus/html/gamesHowellTest.html
> library("PMCMRplus")
> options(digits=16)
> table = data.frame(
    values = c(24., 23., 31., 51., 34., 18., 18., 26., 17., 68., 59.,  7.),
    groups = c("0", "0", "0", "0", "1", "1", "1", "1", "2", "2", "2", "2")
  )
> table$groups = as.factor(table$groups)
> fit <-aov(values ~ groups, table)
> res = gamesHowellTest(fit)
> summary(res)
r  r  z == rC   Nr+   rm   rE   r  Fr=  r.   )rP   r5   r  r  r  r  r   r  r  r   rb   )	r6   r  r  r  r  r  rt   _r;   s	            r<   r  TestGamesHowell.test_compare_r  s    ( ZZ""5#.WVS!%%'!". !Q 	 OOT;U;	 (MA!Qq63q6qI,,QT2ADA (r?   r{   N)r|   r}   r~   r   r  r  spss_same_sizespss_diff_sizer2   r   r  r   r  r_same_sizer_diff_sizer  r   r{   r?   r<   r  r  3  s    ***,N &,/.0N
NN [[[[3,n=+^<>!4!6!8  9
!;9 !;FKK [[3,k:+[9;!4!6!8  9
B9
Br?   r  c                       \ rS rSr\R
                  R                  S/ SQ/ SQ45      S 5       r\R
                  R                  S/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ45      S 5       rS r	S r
S rSrg)TestPoissonMeansTesti  zc1, n1, c2, n2, p_expect)r   r   rC   r   gea?)rB   r   rF   r   g	c?c                 \    [         R                  " XX45      n[        UR                  USS9  g r   r   poisson_means_testr   rb   )r6   c1n1c2n2p_expectrd   s          r<   test_paper_examples(TestPoissonMeansTest.test_paper_examples  s&     &&rr6

H48r?   z c1, n1, c2, n2, p_expect, alt, d)r  rG   r  rG   g{}?r   r   )rG   rG   rG   rG   goPF?r   r   )2   r  rA   rA   gae?r   r   )rC   r   r  r:  g/V-=?r   r   )rC   rk   rD   r  g")?r   r   )rD   r  rC   r   g_'Qm~?r   r   )rD   r  rC   rG   g|?r   r   )rA   rA   r%  r  g0ݷ?r   r   c           	      \    [         R                  " XX4XgS9n[        UR                  USSS9  g )N)r   diffg>rO  r/   ry  r  )	r6   r  r  r   r!  r"  altdrd   s	            r<   test_fortran_authors)TestPoissonMeansTest.test_fortran_authors  s*    $ &&rr3O

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

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

A&r?   c           	      ,   Su  pSu  p4Sn[        [        US9   [        R                  " SX2U5        S S S 5        [        [        US9   [        R                  " XSU5        S S S 5        Sn[        [        US9   [        R                  " SX2U5        S S S 5        [        [        US9   [        R                  " XSU5        S S S 5        Sn[        [        US9   [        R                  " USX$5        S S S 5        [        [        US9   [        R                  " XUS5        S S S 5        S	n[        [        US9   [        R                  " XX$SS
9  S S S 5        Sn[        [        US9   [        R                  " SSSSSS9  S S S 5        g ! , (       d  f       GN_= f! , (       d  f       GNB= f! , (       d  f       GN#= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr  rH  z`k1` and `k2` must be integers.r   r   z1`k1` and `k2` must be greater than or equal to 0.rm   z%`n1` and `n2` must be greater than 0.z(diff must be greater than or equal to 0.)r'  zAlternative must be one of ...rA   rB   errorr   )r   r  r   r  r   )r6   r/  r0  r1  r2  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   r2   r   r   r#  r+  r3  r6  r   r   r{   r?   r<   r  r    s    [[7  : 
9
9 [[?
 	=<=>9; 	66B "E#"E''!Fr?   r  c                       \ rS rSrS rS r\R                  R                  S/ SQ5      S 5       r	\R                  R                  S/ SQ5      S 5       r
S	 rS
 rSrg)TestBWSTesti   c                 x   [         R                  R                  S5      nUR                  SS9u  p#Sn[        R                  " [
        US9   [        R                  " X"/X3/5        S S S 5        Sn[        R                  " [
        US9   [        R                  " [         R                  /U5        S S S 5        Sn[        R                  " [
        US9   [        R                  " U/ 5        S S S 5        Sn[        R                  " [
        US9   [        R                  " X#S	S
9  S S S 5        Sn[        R                  " [
        US9   [        R                  " X#SS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f! , (       d  f       g = f)N   <ovT{ rB   rH   ri   z,`x` and `y` must be exactly one-dimensional.r   z"`x` and `y` must not contain NaNs.z$`x` and `y` must be of nonzero size.zalternative` must be one of...r  r   z!method` must be an instance of...r  r   )	rP   rp   rq   r2   r   r   r   bws_testra   )r6   rs   r8   r9   r   s        r<   test_bws_input_validation%TestBWSTest.test_bws_input_validation  s)   ii##$78zzvz&@]]:W5NNA6A6* 6 7]]:W5NNBFF8Q' 6 9]]:W5NN1b! 6 3]]:W5NN1[9 6 6]]:W5NN1+ 65! 65 65 65 65 65s<   E&	'E8F	FF+&
E58
F	
F
F(+
F9c                     / SQn/ SQn[         R                  " XSS9n[        UR                  SSS9  [	        UR
                  S5        g )	N)rA   rB   rC   rD   rF   rH   rI   )rE   rl   rG   rh   rk   r   r  r   r   gI+@rJ   r.   gf$/g?)r   r@  r   r`   r   rb   r  s       r<    test_against_published_reference,TestBWSTest.test_against_published_reference  s<     "&nnQ{;u48SZZ)r?   )r   r`   rb   ))r   g
-?g4B/?)r   
-g0&v?)r   rF  g(?c                     [         R                  R                  S5      nUR                  SS9u  pV[        R                  " XVUS9n[        UR                  USS9  [        UR                  USSS	9  g )
Nr>  r?  ri   r   vIh%<=rx  r   r   r(  rP   rp   rq   r   r@  r   r`   rb   r6   r   r`   rb   rs   r8   r9   rd   s           r<   test_against_RTestBWSTest.test_against_R&  s]     ii##$78zzvz&nnQ{;yu=

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

FDAr?   c                    [         R                  R                  S5      nUR                  SS9u  p#[         R                  R                  S5      n[        R                  " SUS9n[        R
                  " X#US9n[        UR                  5      S:X  d   e[         R                  R                  S5      n[        R                  " SUS9n[        R
                  " X#US9n[        UR                  UR                  5        [         R                  R                  S5      n[        R                  " SUS9n[        R
                  " X#US9n[         R                  " UR                  UR                  5      (       a   eg )N   /HN( )rB   rG   ri   rG   )n_resamplesrs   r   l   VC	A )
rP   rp   rq   r   r  r@  r)  null_distributionr   allclose)r6   rs   r8   r9   r   r8  r9  rb  s           r<   test_methodTestBWSTest.test_methodI  s#   ii##$78zzwz'ii##$78((RSA~~a624))*b000ii##$78((RSA~~a62..0F0FGii##$78((RSA~~a62;;t55t7M7MNNNNNr?   c                    [         R                  R                  S5      nUR                  SS9nUS-
  n[        R                  " X#SS9nUR
                  S:  d   e[        UR                  S[        UR                  5      -  5        [        R                  " X#SS9nUR
                  S:  d   e[        UR                  S5        [        R                  " X2SS9nUR
                  S:  d   e[        UR                  S[        UR                  5      -  5        [        R                  " X2SS9nUR
                  S:  d   e[        UR                  S5        g )	NrR  rE   ri   rA   r   r   r   r   )
rP   rp   rq   r   r@  r`   r   rb   r)  rT  )r6   rs   r8   r9   rd   s        r<   test_directionsTestBWSTest.test_directions`  s   ii##$78JJAJEnnQy9}}q   SZZS)>)>%?!?@nnQv6}}q   SZZ#nnQv6}}q   SZZS)>)>%?!?@nnQy9}}q   SZZ#r?   r{   N)r|   r}   r~   r   rA  rD  r2   r   r   rK  rO  rV  rY  r   r{   r?   r<   r<  r<     sw    ,4* [[CNOB	OB [[CNOB	OBO.$r?   r<  )8	itertoolsr   numpyrP   r  r2   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._libr   r   scipy._lib._array_apir   r   r   r   scipy._lib._array_api_no_0dr   r   scipy.stats._axis_nan_policyr   r   r    r   r   r  r  rD  rk  r  r  r  r<  r{   r?   r<   <module>rg     sJ       @ @ *   %4 4 4 E D 2 -0 0 H R '(?2 ?2 )?2D 5''(\O \O )\O~ 5%%&	C 	C '	CDl<" l<^P
 P
fV1 V1r '(^4 ^4 )^4BuB uBpsB sBrQF QFht$ t$r?   