
    >qjA                       d dl mZ d dlZd dlZd dlZd dlmZmZm	Z	 d dlm
Z d dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZ d d	lmZ d d
lm Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z. egZ/ej`                  jb                  Z1 e#e       G d d             Z2 e#ej&                         G d d             Z3 e#ej4                         G d d             Z4 G d de      Z5 G d d      Z6 G d d      Z7 e#e       G d d             Z8 G d d      Z9 G d d      Z: G d  d!      Z; e#ejx                         G d" d#             Z=y)$    )productN)assert_assert_equalassert_allclose)raises)statsspecial)distributions)epps_singleton_2sampcramervonmises_cdf_cvmcramervonmises_2samp_pval_cvm_2samp_exactbarnard_exactboschloo_exact)mannwhitneyu
_mwu_state_MWU)_TestPythranFunc)array_api_extra)make_xp_test_casexp_default_dtypeis_numpyeager_warnsxp_ravelis_jax)xp_assert_equalxp_assert_close)SmallSampleWarningtoo_small_1d_not_omitc                   r    e Zd Zd Zej
                  j                  dg d      d        Zd Zd Z	d Z
d Zy	)
TestEppsSingletonc                    |j                  g d      }|j                  g d      }|j                  ddg      }t        |      r\t        |||      \  }}t        ||j                  |j                               t        ||j                  |j                               y d}t        j                  t        |      5  t        |||       d d d        y # 1 sw Y   y xY w)N)ffffffֿffffff@Gz?\(\?ffffff?)ffffff333333ÿףp=
@      
@Gz@皙?gٿ)tz&t must contain positive elements only.match)asarrayr   r   r   nanpytestr   
ValueError)selfxpxyr/   wpmessages           _/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/stats/tests/test_hypotests.pytest_epps_singleton_ivz(TestEppsSingleton.test_epps_singleton_iv   s     JJ67JJ78JJT{#":'12DAqArzz"&&12Arzz"&&12>Gz9 0$QQ/0 0 0s   >CCdtypeNfloat32float64c                 $   |t        |      nt        ||      }|j                  g d|      }|j                  g d|      }t        ||      \  }}t	        ||j                  d|      d       t	        ||j                  d|      d       y )	N)
r$   r%   r&   r'   r(   gQ@gq=
ףp?gGzgGz׿gp=
#(@r?   )
r)   r*   r+   r,   r-   g)\(@      @g(\@g(\ @333333!@gHzG.@gQ?atolgQ,r?-C6?)r   getattrr2   r   r   )r6   r?   r7   r8   r9   r:   r;   s          r=   test_statistic_1z"TestEppsSingleton.test_statistic_1,   s     ). $72u;MJJ 9@E  GJJ 3:?  A#Aq)12::e5:9E2::gU:;&I    c                     |j                  g d      }|j                  g d      }t        ||      \  }}t        ||j                  d      d       t        ||j                  d      d       y )N)r         rO   rO   rO      rP   rP   rP         rR   rR   rR      
   rT   rT   rT   )rT   rQ   r   rR   rT   rT   r   rR   rS      rT   rP   rN   rU   r      rN   rR   rV   rT   g!@MbP?rG   g&J?g-C6
?)r2   r   r   )r6   r7   r8   r9   r:   r;   s         r=   test_statistic_2z"TestEppsSingleton.test_statistic_2;   sb    JJ 7 8JJ 8 9#Aq)12::e,482::g.T:rL   c                 h   t        j                  d      t        j                  d      }}t        t        |      t        |            \  }}t        t	        |      t	        |            \  }}t        ||      \  }}t        ||cxk(  xr |k(  nc        t        ||cxk(  xr
 |k(         y c        y )N      )nparanger   listtupler   )	r6   r8   r9   w1p1w2p2w3p3s	            r=   test_epps_singleton_array_likez0TestEppsSingleton.test_epps_singleton_array_likeE   s    yy}biim1%d1gtAw7B%eAha9B%a+BbBbBrL   c                 v   |j                  g d      |j                  d      }}t        t        t        |      5  t        ||      }t        |j                  |j                  |j                               t        |j                  |j                  |j                               d d d        y # 1 sw Y   y xY w)NrN   rO   rP   rQ   rT   r1   r7   )
r2   r]   r   r   r    r   r   	statisticr3   pvalue)r6   r7   r8   r9   ress        r=   test_epps_singleton_sizez*TestEppsSingleton.test_epps_singleton_sizeO   s    zz,'21+3HRP 	<&q!,CCMM2::bff+=>CJJ

266(:;	< 	< 	<s   A+B//B8c                    t         j                  j                  d      }|j                  d      }|j                  d      }t        j                  g d      }t	        ||d      \  }}t         j
                  ||<   t         j
                  ||<   t         j
                  ||d   df<   t         j                  ||d	   d	f<   t         j                   ||d
   d
f<   |j                  |      |j                  |      }}t	        ||d      \  }}	t        ||j                  |             t        |	|j                  |             y )Nl   2$>. )rT      size)rT      )rN   rQ   	   axisr   rN   rO   )r\   randomdefault_rngr2   r   r3   infr   )
r6   r7   rngr8   r9   iw_refp_refw_resp_ress
             r=   test_epps_singleton_nonfinitez/TestEppsSingleton.test_epps_singleton_nonfiniteW   s   ii##N3JJHJ%JJHJ%JJy!+Aqr:u66a66aVV!A$'
VV!A$'
ffW!A$'
zz!}bjjm1+Aqr:urzz%01rzz%01rL   N)__name__
__module____qualname__r>   r4   markparametrizerK   rX   rf   rm   r    rL   r=   r"   r"      sD    0 [[W&BCJ DJ; <2rL   r"   c            
       @   e Zd Zej                  j                  ddg dg dfdg dg dfdg d	g dfd
g dg dfg      d        Zd Zd Zd Z	d Z
ej                  j                  dddgg      d        Zej                  j                  dg d      d        Zd Zy
)TestCvmz	n, x, refrQ   )gy;i?g#^?gE>?gD
)?){Gz?皙?      ?g+?rT   )g8*5?g@߾?gHm?g%1 ?)r   r   r   g333333?  )g}tg?g`?gI5o?gׁsF?N)a+e?+?&pn?+MJA?c                 p    t        t        |j                  |      |      |j                  |      d       y NrI   rG   )r   r   r2   )r6   nr8   refr7   s        r=   test_cdf_refzTestCvm.test_cdf_refp   s'     	A2BJJsO$OrL   c                     t        t        |j                  ddg      d      |j                  ddg             t        t        |j                  ddg      d      |j                  ddg             y )	NgX(~$?gUUUUU5f@i                ?gaah?g"@   )r   r   r2   )r6   r7   s     r=   test_cdf_supportzTestCvm.test_cdf_supporty   s`    Z,?!@#F

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

B8,	.rL   c                 l    |j                  g d      }t        t        |d      t        |      d       y )N)r   r   r   r   d   '  rI   rG   )r2   r   r   r6   r7   r8   s      r=   test_cdf_large_nzTestCvm.test_cdf_large_n   s(    JJ@AE*HQKdCrL   c                     |j                  d|j                        }dt        |d      cxk  rdk  sJ  J dt        |      cxk  rdk  sJ  J y )Ngt@rD   gwJ?r   r   )r2   rB   r   r   s      r=   test_large_xzTestCvm.test_large_x   sW     JJuBJJJ/(1d+1c12121(1+++,+,+rL   c                     d}t        |j                  |      dz  t        j                        }t	        |j
                  ||      dkD  sJ t        |j                  |j                  d             y )Nrr   皙?)r7   r   r   )	r   onesr	   ndtrr   rj   r   rk   r2   )r6   r7   r   rl   s       r=   
test_low_pzTestCvm.test_low_p   sV     RWWQZ^W\\:qR03666

BJJrN3rL   r8   r         ?c                 z   t        j                  t        t              5  t	        |j                  |      t        j                        }t        |j                  |j                  |j                               t        |j                  |j                  |j                               d d d        y # 1 sw Y   y xY w)Nr0   )r4   warnsr   r    r   r2   r	   r   r   rj   r3   rk   )r6   r8   r7   rl   s       r=   test_invalid_inputzTestCvm.test_invalid_input   su    \\,4IJ 	< A=CCMM2::bff+=>CJJ

266(:;	< 	< 	<s   BB11B:r?   r@   c                    |t              nt        |      }t        j                  g d|      t        j
                        }t        |j                  j                  d|             t        |j                  j                  d|             t        j                  g d|      d       }t        |j                  j                  d|             t        |j                  j                  d|             t        j                  g d|      fd	      }t        |j                  j                  d
|             t        |j                  j                  d|             y )N)g333333rO   r   g?rQ   皙?333333?rD   gӈk&q?gDC+?c                 8    t        j                  | dz
  dz        S )NrP   r   )r	   r   )r8   s    r=   <lambda>z'TestCvm.test_values_R.<locals>.<lambda>   s    w||QUCK'@ rL   grW*?gju2`?)	rN   rO   rR   ffffff?gQ?ro      ?      @c                 *    j                  |         S N)expm1)r8   r7   s    r=   r   z'TestCvm.test_values_R.<locals>.<lambda>   s    rxx|m rL   g  .?g`(r?)	r   rJ   r   r2   r	   r   r   rj   rk   )r6   r?   r7   rl   s     ` r=   test_values_RzTestCvm.test_values_R   s'   (- $72u;M
 RZZ(FeZT$\\+rzz2B%z'PQ

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

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

BJJ/@J$NOrL   c                    t        |      sDd}t        j                  t        |      5  t	        |j                  g d      d       d d d        y t        j                  d      d}}t	        |t        j                  j                        }t	        |d      }t        |j                  |j                  f|j                  |j                  f       t	        |t        j                  j                  |      }t	        |d|      }t        |j                  |j                  f|j                  |j                  f       y # 1 sw Y   y xY w)Nz7`cdf` must be a callable if `rvs` is a non-NumPy array.r0   rN   rO   rP   betarR   )r   ffffff?expon)r   r4   r   r5   r   r2   r\   r]   r
   r   cdfr   rj   rk   r   )r6   r7   r<   r8   argsr   rl   s          r=   test_str_cdfz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>s   D::E)r   r   r   r4   r   r   r   r   r   r   r   r   r   r   r   rL   r=   r   r   k   s    
 [[[	
02JK	13KL	35MN	35MN	+ PP.D
-4 [[S2u+.< /< [[W&BCP DP0OrL   r   c                   4   e Zd Zd Zd Zd Zd Zg dZg dZddd	d
gddd	dgddd	dgddd	dgddd	dgddd	dggZ	e
j                  j                  de	      e
j                  j                  dg d      d               ZddddgddddgddddgddddgddddgddddggZe
j                  j                  de      d         Zd! Zg d"g d#g d$d%Zg d&g d'g d(g d)d*Zg d+g d,g d-g d.g d/d0Zg d1g d2g d3g d4g d5g d6d7Zd8 Zd9 Zd: Zddd	d;gddd	d<gddd	d=gddd	d>gddd	d<gddd	d>ggZe
j                  j                  d?e      d@        ZdA Ze
j                  j                  dBddg      dC        ZdD Z edEdFG      dH        Zg dIdJdKdLdMej@                  dJdNdOdPdPdQgdRdSfg dIdJdKdLdMej@                  ej@                  dNdOdPdPdQgdTdUfdOdNej@                  dPgdJdKdLdMej@                  dJdNdOdPdPdQgdVdWfdOdNej@                  dPgdJdKdLdMej@                  ej@                  dNdOdPdPdQgdXdYfdOej@                  ej@                  dPgdJdKdLdMej@                  ej@                  dNdOdPdPdQgdZd[fgZ!e
j                  j                  d\e!      d]        Z"g d^g d_g d`g dag dbg dcg ddg deg dfg	Z#e
j                  j                  dge#      dh        Z$ edEdFG      di        Z%g djdkdlgddmgg djdkdlgddmgg djdkdlgddngg d%dNgddogg d%dNgddogg d%dNgddpgdOdNgdOdNgddqgdOdNgdOdNgddqgdOdNgdOdNgddrgg	Z&e
j                  j                  g dse&      dt        Z'du Z(e
j                  j                  dvg dw      dx        Z)g dyZ*g dzZ+d{Z,d| Z-d} Z.d~ Z/d Z0d Z1y)TestMannWhitneyUc                     |dk(  rt        j                  |      }|S |dk(  rt        j                  |       }|S |||z  dz  k  rt        j                  |dz        nt        j                  |dz         }|S )NlessgreaterrO   )r	   ndtri)r6   r;   Un1n2alternativezs          r=   get_zstatistic_from_pvaluez+TestMannWhitneyU.get_zstatistic_from_pvalue   sz    & a A
 	 I%q!!A  '("R%'kac"ac8J7JArL   c                 H   |j                  ddg      }|j                  ddg      }|j                  g |j                        }|j                  |j                        }t        j                  t
        t              5  t        ||      }t        |j                  |       t        |j                  |       d d d        t        j                  t
        t              5  t        ||      }t        |j                  |       t        |j                  |       d d d        t        j                  t
        t              5  t        ||      }t        |j                  |       t        |j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   y xY w)NrN   rO   rP   rQ   rD   r0   )r2   r?   r3   r4   r   r   r    r   r   rj   rk   )r6   r7   r8   r9   emptyr3   rl   s          r=   
test_emptyzTestMannWhitneyU.test_empty   s>   JJ1vJJ1v

2QWW
-jj \\,4IJ 	-q%(CCMM3/CJJ,	-
 \\,4IJ 	-ua(CCMM3/CJJ,	-
 \\,4IJ 	-ue,CCMM3/CJJ,	- 	-	- 	-
	- 	-
	- 	-s$   >9F 9F>9F F	FF!c                    |j                  ddg      }|j                  ddg      }t        t        d      5  t        ||d       d d d        t        t        d	      5  t        ||d
       d d d        t        t        d      5  t        ||d       d d d        t        t        d      5  t        ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   JxY w# 1 sw Y   y xY w)NrN   rO   rP   rQ   z`use_continuity` must be oner0   ekki)use_continuityz`alternative` must be one ofr   z`axis` must be an integerr   ru   z`method` must be one ofmethod)r2   assert_raisesr5   r   )r6   r7   r8   r9   s       r=   test_input_validationz&TestMannWhitneyU.test_input_validation   s    JJ1vJJ1v:-KL 	6Af5	6:-KL 	3A62	3:-HI 	)AC(	):-FG 	.Af-	. 	.	6 	6	3 	3	) 	)	. 	.s/   C CC 0C,CC C),C5c                 F   t        |      rQd}t        j                  t        |      5  t	        |j                  d      |j                  d             d d d        y t        j                  j                  d      }d}|j                  |j                  |dz
              }|j                  |j                  |dz
              }t	        ||      }t	        ||d      }t	        ||d	      }	|j                  |	j                  k(  sJ |j                  |j                  k7  sJ |j                  |j                  |dz
              }|j                  |j                  |dz               }t	        ||      }t	        ||d      }t	        ||d	      }	|j                  |	j                  k(  sJ |j                  |j                  k7  sJ t	        ||      }t	        ||d      }t	        ||d	      }	|j                  |	j                  k(  sJ |j                  |j                  k7  sJ |j                  |j                  |dz               }|j                  |j                  |dz               }t	        ||      }t	        ||d      }t	        ||d	      }	|j                  |	j                  k7  sJ |j                  |j                  k(  sJ |j                  |j                  |dz
              }|j                  |j                  |dz
              }t        j                  |      d
   j                  |d
         }t	        ||      }t	        ||d      }t	        ||d	      }	|j                  |	j                  k7  sJ |j                  |j                  k(  sJ y # 1 sw Y   y xY w)Nz0`method='auto'` is incompatible with JAX arrays.r0   rT   l   nEQWSfrV   rN   
asymptoticr   exactrP   )r   r4   r   r5   r   r]   r\   rw   rx   r2   rk   xpxatset)
r6   r7   r<   rz   r   r8   r9   autor   r   s
             r=   	test_autozTestMannWhitneyU.test_auto   s   ":HGz9 ;RYYr]BIIbM:;ii##$67 JJszz!A#'JJszz!A#'Aq!!!Q|<
Q'2{{ell***{{j///// JJszz!A#'JJszz!A#'Aq!!!Q|<
Q'2{{ell***{{j///// Aq!!!Q|<
Q'2{{ell***{{j///// JJszz!A#'JJszz!A#'Aq!!!Q|<
Q'2{{ell***{{j///// JJszz!A#'JJszz!A#'FF1IaLQqT"Aq!!!Q|<
Q'2{{ell***{{j/////e;s   +NN )gm9Aj@g+H3[@gi>s@)g#hA{@glz@gcDf@gǳ*h@gZA@gI9^YQa@g`@g՞p@g:q@g&@gZ|@g`r@gMc3g@	two-sidedr   r   r   )      0@
+?r   )r   
+?r   )r   缌%c?r   )r   g9:?)r   g9:?)r   g*::?)kwdsexpectedr?   r@   c                 Z   |t        |      nt        ||      }|j                  | j                  |      |j                  | j                  |      }}t        ||fi |}t        |j                  |j                  |d   |             t        |j                  |j                  |d   |             |d   dk(  ro| j                  |j                  |j                  |j                  d   |j                  d   |d         }t        |j                  |j                  ||             y y )NrD   r   rN   r   r   r   r   )r   rJ   r2   r8   r9   r   r   rj   rk   r   shape
zstatistic)	r6   r   r   r?   r7   r8   r9   rl   r   s	            r=   
test_basiczTestMannWhitneyU.test_basicU  s    ). $72u;Mzz$&&z.

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

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

CMM01
AGGAJ<@<O 0 QA CNNBJJqJ,FG	 *rL   T)r   r   )      7@r   )r   r   )r   r   F)r   gl,KNh?)r   giژ?)r   gl,KNh?c                    |j                  | j                        |j                  | j                        }}t        ||fddi|}t	        |j
                  |j                  |d                t	        |j                  |j                  |d                | j                  |j                  |j
                  |j                  d   |j                  d   |d         }t	        |j                  |j                  |             y )Nr   r   r   rN   r   r   )
r2   r8   r9   r   r   rj   rk   r   r   r   )r6   r   r   r7   r8   r9   rl   r   s           r=   test_continuityz TestMannWhitneyU.test_continuityp  s     zz$&&!2::dff#511a===rzz(1+'>?

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

16rL   c           
         |j                  g d      }|j                  g d      }|j                  g d      dz  }|j                  g d      dz  }|j                  |dz
  ||z
  ||z
  |||z   ||z   |dz   g      }t        ||dd      }g d	}g d
}	t        |j                  |j                  |             t        |j                  |j                  |	             y )Nr          @      @      @)r   r   r   r   rE   )r   r   r   r   r   r   )r   r   r   r   r   rt   r   )rv   r   )rT   rs         !@rV   r   rU   rS   )rN   g]U?g[?gi\?gZX<_?gx.?g 
?)r2   stackr   r   rj   r   rk   )
r6   r7   r8   y0dydy2r9   rl   
U_expected
p_expecteds
             r=   test_tie_correctz!TestMannWhitneyU.test_tie_correct  s     JJ'(ZZ,-ZZ,-d2jj-.t3HHbgr"ubfb"S&"R%DIJ1ab>/
I
rzz*'=>

BJJz$:;rL   )g      ?r   g      ?)r   皙?r.   r   )r   r   r   r(   r   g?r   )r   r.   r   )gx&?g/$?gJ+?r.   r   )y&1?v/?gv/?r   gjt?~jt?ʡE?)	gy&1?gV-?r   r   gS?gv?gʡE?g'1Z?gm?rh   )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+?rN   rO   rP   rQ   rR   )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?)rW   r  r  r  g9v?g/$?r  r   gL7A`?g
ףp=
?gQ?r  gK7?g`"?g7A`?r(   gV-?gjt?gˡE?)rN   rO   rP   rQ   rR   rS   c           	         t        t        dt        dd             | j                  | j                  | j
                  | j                  d}|j                         D ]  \  }}|j                         D ]w  \  }}t        j                  dt        |            }t        j                  j                  ||       t        t        j                  j                  |      |d       t        j                  d||z  dz         }t        t        j                  j                  |      t        j                  j                  |      z   t        j                  j!                  |      z
  d       t        j                  j!                  |      }t        ||d d d          t        j                  j                  ||       t        j                  j!                  |      }	t        ||	       z  y )	Nsr   )rP   rQ   rR   rS   )krW   rG   rN   rt   )setattrr   r   pn3pn4pm5pm6itemsr\   r]   lenr  
set_shapesr   r   sfpmf)
r6   p_tablesr   tablemr;   uu2r  pmf2s
             r=   test_exact_distributionz(TestMannWhitneyU.test_exact_distribution  sw   
Ca,xxDHHdhhG ( 	+HAu +1IIaQ(''1-
 0 01 0 5qtD YYq!A#a%(
 0 02 0 6",,,//B/"7!8",,,"2"2R"2"8!9:;=
 !ll&&&,S2Y/ ''1-!||''"'-T*)+	+rL   c                    t         j                  j                  d      }|j                  |j                  d            }|j                  |j                  d            }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ |j                  |j                  |j                  z
        dkD  sJ |j                  |j                  d            }|j                  |j                  d            }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ |j                  |j                  |j                  z
        dk  sJ y )	Ni0  rR   r   r   r   r   (   rW   )r\   rw   rx   r2   r   rj   absrk   )r6   r7   rz   r8   r9   res1res2s          r=   test_asymptotic_behaviorz)TestMannWhitneyU.test_asymptotic_behavior  s   ii##E* JJszz!}%JJszz!}%Aq1Aq6~~///vvdkkDKK/04777 JJszz"~&JJszz"~&Aq1Aq6~~///vvdkkDKK/04777rL   c                    |j                  g d      |j                  ddg      }}t        ||dd      }t        ||dd      }t        |j                  |j                         |j                  dkD  sJ t        ||d	d      }t        |j                  |j                  d
             t        |j                  |j                  d             y )Nr   r   r   r         @r   r   r   r   r   r   r   r   )r2   r   r   rk   rj   )r6   r7   r8   r9   res_lres_grl   s          r=   test_exact_U_equals_meanz)TestMannWhitneyU.test_exact_U_equals_mean  s     zz,'S#J)?1QvgFQyIell3||c!!!1a[Irzz"~6

BJJrN3rL   r   r   )r   r   )r   g郡E?)r   rN   )r   resultc                 .    t        t        di ||       y )NrN   rO   )r   r   )r6   r   r4  s      r=   test_scalar_dataz!TestMannWhitneyU.test_scalar_data   s     	2T2F;rL   c           	         t        t        ddd      d       t        t        dddd      d       t        t        dddd      d       t        t        ddd      d	t        j                  f       t        t        ddddd
      d	t        j                  f       t        t        ddddd
      d	t        j                  f       t        t        dddd
      d	t        j                  f       y )NrN   r   r   )r   rN   r   r   r   r   r   r   F)r   r   r   )r   r   )r   r   r\   r3   r6   s    r=   test_equal_scalar_dataz'TestMannWhitneyU.test_equal_scalar_data  s     	\!Qw7B\!Q|P	\!Q|S	\!Q|<266]	$
 	\!Q|168:=rvv	H\!Q|168:=rvv	H\!Q|168:=rvv	HrL   r   c                 t   t         j                  j                  d      }d}d\  }}|j                  |ddf      }|j                  d|ddf      dz   }t        |j	                  |      |j	                  |      ||	      }	d
}
|	j
                  j                  |
k(  sJ |	j                  j                  |
k(  sJ t        j                  ||d      t        j                  ||d      }}|d   }|j                  |j                  k(  sJ t        j                  ||
|fz         }t        j                  ||
|fz         }|j                  d d |
k(  sJ |j                  d d |
k(  sJ t        j                  |
      }t        j                  |
      }t        |
D cg c]  }t        |       c} D ]8  }||   }||   }t        |||      }|j                  ||<   |j
                  ||<   : t        |	j
                  |j	                  |      d       t        |	j                  |j	                  |      d       y c c}w )Nl   2=U )rU   rT   rP   rV   rS   rN   r   )r   rv   )rS   rP   rV   rt   )N.r   缉ؗҜ<rG   )r\   rw   rx   r   r2   rk   r   rj   moveaxisndimbroadcast_tozerosr   ranger   )r6   r   r7   rz   rv   r"  r   r8   r9   rl   r   
statisticspvaluesr{   indicesxiyitemps                     r=   test_gh_12837_11113z$TestMannWhitneyU.test_gh_12837_11113  s     ii##J/ 1JJ1ay!JJ1a|$s*2::a="**Q-TRzz5(((}}""e+++ {{1dB'Qb)A1iLvvOOAut|,OOAut|,wws|u$$$wws|u$$$ XXe_
((5/5 9aq 9: 	+G7B7BBv6D"&..Jw#{{GG	+ 	

BJJw$7eDrzz*'=EJ !:s   H5c                 t   g d}g d}t        |j                  |      |j                  |      d      }d|d<   t        j                  |d<   t        |j                  |      |j                  |      d      }t	        |j
                  |j
                         t	        |j                  |j                         y )Nrh   )rP   rS   rU   rV   rs   rP   rO   rN   rQ   rQ   rR   r   r   r   r   rQ   )r   r2   r\   ry   r   rj   rk   )r6   r7   r8   r9   r*  r+  s         r=   test_gh_11355zTestMannWhitneyU.test_gh_11355H  s    -BJJqM2::a=N !vv!BJJqM2::a=N7T[[1rL   z	jax.numpyzneeds jax-ml/jax#34490)reasonc                 R   g d}dddt         j                  ddddddd	g}t        |j                  |      |j                  |            }t	        |j
                  |j                  |j                               t	        |j                  |j                  |j                               y )
Nr   rP   rS   rU   rs   rO   rN   rQ   rR   )r\   r3   r   r2   r   rj   rk   )r6   r7   r8   r9   res3s        r=   test_gh11355_nanz!TestMannWhitneyU.test_gh11355_nanV  s{     1bffaAq!Q2BJJqM2::a=9

266(:;RZZ%78rL   )r   rO   rP   rQ   rP   rS   rU   rV   rO   rN   rQ   rR         $@g+zQ?r   g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r8   r9   rj   rk   c                     t        |j                  |      |j                  |      d      }t        |j                  |j                  |      d       t        |j                  |j                  |      d       y )Nr   r   -q=rG   )r   r2   r   rj   rk   )r6   r8   r9   rj   rk   r7   rl   s          r=   test_gh_11355bzTestMannWhitneyU.test_gh_11355bo  sT     2::a="**Q-Mrzz)'<5I

BJJv$6UCrL   )Tr   r   g&?)Tr   r   gO?)Tr   r   gO?)Fr   r   g9@VN!x?)Fr   r   g9M>?)Fr   r   g9M>?)Tr   r   g?UV?)Tr   r   gߺVJH?)Tr   r   gVJH?)r   r   r   
pvalue_expc                    d}|j                  g d      }|j                  g d      }t        |||||      }	t        |	j                  |j                  |             t	        |	j
                  |j                  |             y )Ng     A@)
r   g(\?g=
ףp=?gp=
ף?g333333?gGz?g(\?g=
ףp=?r'   g\(\?)gffffff?g)\(?r   gGz?g\(\?r   r   r   )r2   r   r   rj   r   rk   )
r6   r   r   r   rV  r7   statistic_expr8   r9   rl   s
             r=   test_gh_9184zTestMannWhitneyU.test_gh_9184  sk    . JJSTJJ561a'26Crzz-'@A

BJJz$:;rL   c                     |j                  |j                        }|j                  |||||g      }|j                  |||||g      }t        ||      }t	        |j
                  |j                  |             t	        |j                  |       y r   )r2   r3   r   r   r   rj   rk   )r6   r7   r3   abrl   s         r=   test_gh_4067zTestMannWhitneyU.test_gh_4067  sx     jj HHc3S#./HHc3S#./1a rzz#7

C(rL   r.  r   r/  )r   ga׀}?)r   r   )r   g?h?)r   r   )r   g5&#\?)r   r   )r8   r9   r   r   c                 @   t        |j                  |      |j                  |      d|d      }t        |      |j                  k(  rdnd}t	        |j
                  |j                  |d         |       t	        |j                  |j                  |d         |       y )	NTr   rX  ư>rT  r   rtolrN   )r   r2   r   rA   r   rj   rk   )r6   r8   r9   r   r   r7   rl   rb  s           r=   test_gh_2118zTestMannWhitneyU.test_gh_2118  s{     2::a="**Q-'2<I'+rzz9turzz(1+'>TJ

BJJx{$;$GrL   c                 0   t         j                  j                  d      }d\  }}|j                  |j                  |      j	                               }|j                  |j                  |      j	                               }t        t        dt        dd             t        j                  j                          t        j                  ||d      }t        j                  j                  j                  }|d   t        |j                  ||z  |j                  z
        d	z   k(  sJ t        j                  ||d       |t        j                  j                  j                  k(  sJ t        j                  j                          t        j                  |d|z  dd
       t        j                  j                  j                  }|d   d	k(  sJ t        j                  d|z  |dd
       |t        j                  j                  j                  k(  sJ y )N   g>mjK )rR   ro   rp   r  r   r   r   rt   rN   r   r9  )r\   rw   rx   r2   tolistr  r   r   r  resetr   r   configurationsr   minrj   )	r6   r7   rz   r"  r   r8   r9   rl   r   s	            r=   test_gh19692_smaller_tablez+TestMannWhitneyU.test_gh19692_smaller_table  s   
 ii##$781JJszzqz)0023JJszzqz)0023
Ca,  Ag6++11RyCqsS]]/BCaGGGG1a0
3399999
 	1ac'yI++11RyA~~1Q3'yI
3399999rL   r   )r   r   r   c                    t         j                  j                  d      }|j                  |j                  d            }|j                  |j                  d            }t	        j
                  ||t	        j                         |d      }t	        j
                  ||d|d      }t        |j                  |j                  d	       t        |j                  |j                  d	       y )
Nre  )rO   rR   rp   )rO   rS   rN   )r   r   rv   r   V瞯<ra  )
r\   rw   rx   r2   r   r   PermutationMethodr   rj   rk   )r6   r   r7   rz   r8   r9   rl   r+  s           r=   test_permutation_methodz(TestMannWhitneyU.test_permutation_method  s    ii##$78JJszzvz./JJszzvz./  Ae.E.E.G-8qB!!!Qw.9Ct~~EB

DKKe<rL   )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                 V   |j                  | j                        |j                  | j                        }}t        d      }t	        j
                  ||fddi|\  }}t	        j
                  ||fddi|\  }}t	        j
                  ||fddi|\  }	}
t	        j
                  ||fddi|\  }}t        ||       t        |
|       ||
k7  sJ t        ||j                  d             t        ||j                  d             t        |	|j                  d             t        ||j                  d             t        ||j                  d      | j                  	       |j                  |j                  k(  r| j                  nd
}t        |
|j                  d      |d       y )Nr   r   r   r   r         @     Y@g=_A?ra  Mb@?glPz.?r>  rb  rH   )r2   XYdictr   r   r   r   rb  r?   rB   r6   r7   rt  ru  kwargsu1ra   r$  rc   u3re   u4p4rb  s                 r=   test_mannwhitneyu_one_sidedz,TestMannWhitneyU.test_mannwhitneyu_one_sided  sf   zz$&&!2::dff#51\*##AqGfGGB##AqJiJ6JB##AqJiJ6JB##AqGfGGBBBRxxBJJt,-BJJt,-BJJt,-BJJt,-BJJ'89		JGGrzz1tyytBJJ':;$USrL   c                     |j                  | j                        |j                  | j                        }}t        dd      }t	        j
                  ||fi |\  }}t	        j
                  ||fi |\  }}t        ||       t        ||j                  d             t        ||j                  d             |j                  |j                  k(  r| j                  nd}	t        ||j                  d      |	d	       y )
Nr   r   r   rp  rq  rr  glPz.?r>  rs  r2   rt  ru  rv  r   r   r   r?   rB   rb  r   
r6   r7   rt  ru  rx  ry  ra   r$  rc   rb  s
             r=   test_mannwhitneyu_two_sidedz,TestMannWhitneyU.test_mannwhitneyu_two_sided  s    zz$&&!2::dff#51+lC##Aq3F3B##Aq3F3BBBJJt,-BJJt,-GGrzz1tyytBJJ'9:ERrL   c                 F   |j                  | j                        |j                  | j                        }}t        dd      }t	        j
                  ||fddi|\  }}t	        j
                  ||fddi|\  }}t	        j
                  ||fddi|\  }	}
t	        j
                  ||fddi|\  }}t        ||       t        |
|       ||
k7  sJ t        ||j                  d             t        ||j                  d             t        |	|j                  d             t        ||j                  d             |j                  |j                  k(  r| j                  nd	}t        ||j                  d
      |d       t        |
|j                  d      |d       y )NFr   r   r   r   r   r   rp  rq  rr  gii5?r>  rs  g22?r  rw  s                 r=   &test_mannwhitneyu_no_correct_one_sidedz7TestMannWhitneyU.test_mannwhitneyu_no_correct_one_sided  sf   zz$&&!2::dff#51U<@##AqGfGGB##AqJiJ6JB##AqJiJ6JB##AqGfGGBBBRxxBJJt,-BJJt,-BJJt,-BJJt,-GGrzz1tyytBJJ'895QBJJ';<4eTrL   c                     |j                  | j                        |j                  | j                        }}t        dd      }t	        j
                  ||fi |\  }}t	        j
                  ||fi |\  }}t        ||       t        ||j                  d             t        ||j                  d             |j                  |j                  k(  r| j                  nd}	t        ||j                  d      |	d	       y )
NFr   r  rp  rq  rr  g22?r>  rs  r  r  s
             r=   &test_mannwhitneyu_no_correct_two_sidedz7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sided0  s    zz$&&!2::dff#51U<@##Aq3F3B##Aq3F3BBBJJt,-BJJt,-GGrzz1tyytBJJ';<4eTrL   c                    |j                  g d      }|j                  g d      }t        d      }t        j                  ||fddi|}t	        |j
                  |j                  d             t	        |j                  |j                  d             t        j                  ||fdd	i|}t	        |j
                  |j                  d             t	        |j                  |j                  d
             t        j                  ||fddi|}t	        |j
                  |j                  d             t	        |j                  |j                  d             y )N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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?չ?)r2   rv  r   r   r   rj   rk   )r6   r7   r8   r9   rx  rl   s         r=   test_mannwhitneyu_onesz'TestMannWhitneyU.test_mannwhitneyu_ones<  s   JJ 0 1& JJ ( ) \*  AD6DVDrzz'':;

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

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

BJJ/@$ABrL   N)2r   r   r   r   r   r   r   r8   r9   cases_basicr4   r   r   r   cases_continuityr   r   r  r  r  r  r&  r,  r2  cases_scalarr7  r;  rJ  rL  skip_xp_backendsrP  r\   ry   cases_11355rU  
cases_9184rZ  r^  
cases_2118rc  rj  rn  rt  ru  rb  r}  r  r  r  r  r   rL   r=   r   r      s   -*
.60t 	-A	A& %0<H*,$*lC*,$-F*,$/7C*,$*g>*,$-A*,-K [[1;?[[W&BC
H D @
H *5M/1)/4H/1)2dK/1)4N/1)/5I/1)2eL/12 [[13CD7 E7&<,  $8.0C"A<KMC )7K2<=C +?19G$%C+88*4" &1LI%+|D %.,G)+%0GDgN%+w?K%.'BGLNL [[/>< ?<H. [[Xg'>?)K @)KV2 k*BC9 D9 "1aAq!Q:* "1aAq!Q?)+ 2661%1aAq!Q:/+ 2661%1aAq!Q?* *1aAq!Q?/+,K  [[>LD MD ?BC@CE:=?AJ [[ 67AC<C<: k*BC) D)  #sY8MN#sV5JK#s[)Dqc9.CDqc6+@Aqc;	:q6Aq69.BCq6Aq66+?@q6Aq6;9;J [[BJOH PH:: [[],LM	= N	=	-A	NA DT&
SU&
U,CrL   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zej                  j!                  dd      d        Zd Zy)TestSomersDc                    | j                   | j                  z   | _        t        j                  d      | j                   | j                  z   ft        j                  d      | j                   | j                  z   fd| _        | j
                  D cg c]  }| j
                  |   d    }}t        j                  t        j                  d      | _
         | j                  | | _        y c c}w )NrT   r   rN   r   r   r   )ALL_INTEGER	ALL_FLOATdtypesr\   r]   	arguments	functoolspartialr   somersdpartialfuncr   )r6   idxinput_arrays      r=   setup_methodzTestSomersD.setup_methodl  s    &&7 iim"..?A iim"..?AB :>H#t~~c*1-HH
 %,,U]]9DF(((+6 Is   C)c                      | j                   | }t        |j                  | j                  j                  d       t        |j                  | j                  j                  d       y )Nrl  rG   )r  r   rj   r   rk   )r6   r   rl   s      r=   pythranfunczTestSomersD.pythranfunc{  sH    d%t}}'>'>UK

DMM$8$8uErL   c                 6   g dg dg dg}t        j                  |      }| j                  t         j                        }t        j                  |fi |}t        |j                  |j                  d       t        |j
                  |j
                  d       y )N)r         rU   r   )rU   r     #   rr   )rN   rP   rO   rU      rl  rG   )r   r  get_optional_argsr   rj   rk   )r6   r!  r*  optional_argsr+  s        r=   test_pythranfunc_keywordsz%TestSomersD.test_pythranfunc_keywords  sm    #%8:JK}}U#..u}}=}}U4m4UCT[[u=rL   c                 
   g d}g d}d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       g d}g d	}d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       g d
}g d}d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  d      }t        j                  d      }d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  d      }t        j                  g d      }d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  d      }t        j                  d      d d d   }d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  d      }t        j                  g d      }d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       g d}g d}d}t        j                  ||      }t        |j                  |d   d       t        |j                  |d   d       t        j                  g dg d      }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  g dg d      }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  g dg d      }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  dgdg      }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  g g       }t        |j                  t
        j                         t        |j                  t
        j                         t        j                  d      }t        j                  d      }t        t        t         j                  ||       y )N)rR   rO   rN   rP   rS   rQ   rU   rV   )rR   rO   rS   rP   rN   rV   rU   rQ   r3  r   rl  rG   rN   )	r   rR   rO   rN   rP   rS   rQ   rU   rV   )	rR   rO   r   rS   rP   rN   rV   rU   rQ   )rR   rO   rN   rP   rS   rQ   rU   )rR   rO   rS   rP   rN   rU   rQ   )g+$I$I¿g=/3n+?rT   r   r   )
r   rO   rN   rP   rQ   rS   rR   rU   rV   rs   )gs'}'?r   rt   )g      r   )
rs   rU   rV   rS   rR   rP   rQ   rO   rN   r   )g}'}'r   )rr   rO   rN   rr   rO   )rN   rQ   rU   rN   r   )      g.ʂ?)rO   rO   rO   )rO   r   rO   rQ        4@)r   r  r   rj   rk   r\   r]   arrayr3   r   r5   )r6   r8   r9   r   rl   x1x2s          r=   test_like_kendalltauz TestSomersD.test_like_kendalltau  s    %$9mmAq!x{?

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

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

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

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

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

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

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

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

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

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

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

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

BFF+ IIcNIIcNj%--A6rL   c                    g d}g d}d}d}d}t        j                  ||      }t        |j                  |d       t        |j                  |d       t        |j                  j                  d	       t        j                  ||      }t        |j                  |d       t        |j                  |d       t        |j                  j                  d
       y )N)rN   rN   rN   rO   rO   rO   rO   rO   rP   rP   rN   rO   rO   rO   rO   rO   rO   rO   rP   rP   rP   rP   rP   rP   )rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   gCE]t?g^_?gO((Ƿ?rl  rG   rI   )rP   rO   rO   rP   )r   r  r   rj   rk   r   r!  r   )r6   r8   r9   d_crd_rcr;   rl   s          r=   test_asymmetryzTestSomersD.test_asymmetry  s    11 ! mmAq!t%8

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

AE2SYY__f-rL   c                 ^   t        j                  ddgddgddgddgddgg      }|j                  }d}t        t	        j
                  |      j                  |       t        j                  d	d
gdd
gd
dgg      }d\  }}t        t	        j
                  |      j                  |       t        t	        j
                  |j                        j                  |       t        j                  d	d
gd
dgdd
gg      }d}t        t	        j
                  |j                        j                  |       y )NrV   rO   rS   rR   rP   rQ   rN   gHHHHHH?r  r   U   rZ   )gM&w?r   gtE]t)r\   r  Tr   r   r  rj   )r6   r!  dyxdxys       r=   test_somers_originalz TestSomersD.test_somers_original  s    
 1a&1a&1a&1a&1a&ABe,66< 2q'B7QG45'Se,66<egg.88#> 2q'Ar7RG45egg.88#>rL   c                    d}d}t        j                  |      }t         j                  j                  d      }t        j
                  j                  |t        j                  |      |z  |      j                  |      }t	        j                  |      }t        j                  |dt        j                  |d         d      }t	        j                  |      }t        j                  |dt        j                  |d         d      }	t	        j                  |	      }
t        j                  |dt        j                  |d   dz         d      }t	        j                  |      }t        |j                  dd	
       t        |j                  |j                         t        |j                  |
j                         t        |j                  |j                         t        |j                  dd	
       t        |j                  |j                         t        |j                  |
j                         t        |j                  |j                         y )Nr   rQ   rS   r   r;   random_staterO   rN   ru   gayrl  rG   gPj$?)r\   prodrw   RandomStater   multinomialrvsr   reshaper  insertrB  r   rj   rk   )r6   Nr   rq   rz   r  rl   s2r+  s3rO  s4res4s                r=   *test_contingency_table_with_zero_rows_colsz6TestSomersD.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0rL   c                 "   d}d}t        j                  |      }t         j                  j                  d      }t        j
                  j                  |t        j                  |      |z  |      j                  |      }|dz
  }d}t        t        |      5  t	        j                  |       d d d        |dz   }d	}t        t        |      5  t	        j                  |       d d d        d
}t        t        |      5  t	        j                  g g       d d d        t        t        |      5  t	        j                  dgg       d d d        t        j                  d      }	t        t        |      5  t	        j                  |	       d d d        d|	d<   t        t        |      5  t	        j                  |	       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   y xY w)Nr   r  r   r  rO   z:All elements of the contingency table must be non-negativer0   r   z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.rN   )rP   rP   r  )r\   r  rw   rx   r   r  r  r   r  r   r5   r  rB  )
r6   r  r   rq   rz   r  s5r<   s6s7s
             r=   test_invalid_contingency_tablesz+TestSomersD.test_invalid_contingency_tablesI  s   wwu~ii##A&!!!rwwt}T'9/2 " 44;GEN 	
 UN:W5 	MM"	 XI:W5 	MM"	,:W5 	 MM2$	  :W5 	!MMA3% 	! XXf:W5 	MM"	 4:W5 	MM"	 	+	 	
	 	
	  	 	! 	!	 		 	sH   GG?G!/G-5G9)HGG!G*-G69HHc                 :   g d}ddt         j                  g}g d}ddt         j                   g}t        j                  ||      }t        j                  ||      }t	        |j
                  |j
                         t	        |j                  |j                         y )Nr   rt   g @)rP   rO   rN   r   r  )r\   ry   r   r  r   rj   rk   )r6   r8   r  r9   y2rl   r+  s          r=   test_only_ranks_matterz"TestSomersD.test_only_ranks_matterm  sr    #rvvwmmAq!}}R$S]]DNN3SZZ-rL   c                     t        j                  d      }t        j                  d      }t        j                  ||      }t	        |j
                  t        j                  d             y )NrT   )r\   r]   r   r  r   r!  eye)r6   r8   r9   rl   s       r=   test_contingency_table_returnz)TestSomersD.test_contingency_table_returnx  sB    IIbMIIbMmmAq!SYYr
+rL   c                 L   g d}g d}t        j                  ||d      }|j                  dkD  sJ t        j                  ||d      }t        |j                  |j                         t	        |j
                  d|j
                  dz  z
         t        j                  ||d	      }t        |j                  |j                         t	        |j
                  |j
                  dz         |j                          t        j                  ||d      }|j                  dk  sJ t        j                  ||d	      }t        |j                  |j                         t	        |j
                  d|j
                  dz  z
         t        j                  ||d      }t        |j                  |j                         t	        |j
                  |j
                  dz         t        j                  t        d
      5  t        j                  ||d       d d d        y # 1 sw Y   y xY w)Nr  )rR   rS   rU   rV   rU   r   r   r   r   rN   rO   r   z`alternative` must be...r0   	ekki-ekki)
r   r  rj   r   r   rk   reverser4   r   r5   )r6   r  r  r   rl   s        r=   test_somersd_alternativez$TestSomersD.test_somersd_alternative  s     ==R[A!!A%%% mmB7S]]H$6$67

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

HOOa$78 	

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

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

HOOa$78]]:-GH 	;MM"bk:	; 	; 	;s   8HH#positive_correlation)FTc                    t        j                  d      }|r|nt        j                  |      }|rdnd}t        j                  ||d      }|j
                  |k(  sJ |j                  dk(  sJ t        j                  ||d      }|j
                  |k(  sJ |j                  |rdndk(  sJ t        j                  ||d      }|j
                  |k(  sJ |j                  |rdndk(  sJ y )	NrT   rN   rt   r   r   r   r   r   )r\   r]   flipr   r  rj   rk   )r6   r  r  r  expected_statisticrl   s         r=    test_somersd_perfect_correlationz,TestSomersD.test_somersd_perfect_correlation  s     YYr]'RRWWR["6QB mmB<}} 2222zzQ mmB7}} 2222zz#7aQ??? mmB	:}} 2222zz#7aQ???rL   c                     ddg}d}t         j                  j                  d      }|j                  ||      }|j                  ||      }d}t	        j
                  ||      j                  }t        ||d       y )NrN   rO   @B l   .E5 g 0uD?rl  rG   )r\   rw   rx   choicer   r  rj   r   )r6   classes	n_samplesrz   r8   r9   val_sklearn	val_scipys           r=   !test_somersd_large_inputs_gh18132z-TestSomersD.test_somersd_large_inputs_gh18132  sq     a&	ii##J/JJw	*JJw	* + MM!Q'11	YU;rL   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r4   r   r   r  r  r   rL   r=   r  r  k  sm    7F
	>m7^.2?,1@"H	.,';R [[3]C@ D@0<rL   r  c                      e Zd ZdZej
                  j                  dddgddggdfdd	gd
dggdfd	dgdd	ggdfddgddggdfddgddggdfddgddggdfddgddggdfddgddggdfddgdd	ggdfdd	gddggdfd	dgdd	ggdfg      d         Zej
                  j                  dddgddggd!fdd	gd
dggd"fd	dgdd	ggd#fddgddggd$fddgddggd%fddgddggd&fddgddggd'fddgddggd(fddgdd	ggd)fdd	gddggd*fd	dgdd	ggd#fg      d+        Zd, Z	ej
                  j                  dddgddggd-fg      d.        Z
ej
                  j                  dddgddggd/ej                  ffddgddggd/ej                  ffg      d0        Zej
                  j                  dd	dgdd	ggd1fdd2gd3dggd4fd5d6gd7dggd8fg      ej
                  j                  d9d:d;g      d<               Zy=)>TestBarnardExactz8Some tests to show that barnard_exact() works correctly.input_sample,expected+   r(  rT   '   )gXyq@g{2s&Q7?r   rO   r   rR   )gllgEA]0K?rU   rV   )*)1%g_  ?rN   )g_c1?g= ?      )g5PyQgQ@2?   r  )ggJ"?)g_c1gwݝل?r   rQ   )g7@g      ?rP   )g~t,?3O?rS   )gr?~CY7?c                 f    t        |      }|j                  |j                  }}t        ||g|       y)zThe expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-6 :
        ```R
        library(Barnard)
        options(digits=10)
        barnard.test(43, 40, 10, 39, dp=1e-6, pooled=TRUE)
        ```
        Nr   rj   rk   r   r6   input_sampler   rl   rj   rk   s         r=   test_precisezTestBarnardExact.test_precise  s.    2 L)MM3::6	F+X6rL   )g7\@gA2?)gXS;gh?)g>!Ɏg6  ?)gSy@?g^F?)g-gXI#?)gaЍgo?)gb]?gFugH	?)g6ҭ@g      ?)gi(	r  )gNXzr  c                 j    t        |d      }|j                  |j                  }}t        ||g|       y)zThe expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-6 :
        ```R
        library(Barnard)
        options(digits=10)
        barnard.test(43, 40, 10, 39, dp=1e-6, pooled=FALSE)
        ```
        F)pooledNr  r  s         r=   test_pooled_paramz"TestBarnardExact.test_pooled_param  s0    2 L7MM3::6	F+X6rL   c                    d}t        t        |      5  t        ddgddggd       d d d        d	}t        t        |      5  t        t        j                  d
      j                  dd             d d d        d}t        t        |      5  t        ddgddgg       d d d        d}t        t        |      5  t        ddgddggd       d d d        y # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   PxY w# 1 sw Y   y xY w)N7Number of points `n` must be strictly positive, found 0r0   rN   rO   rP   rQ   r   r   ,The input `table` must be of shape \(2, 2\).rS   *All values in `table` must be nonnegative.rt   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)r   r5   r   r\   r]   r  r6   	error_msgs     r=   test_raiseszTestBarnardExact.test_raises  s    F 	 :Y7 	1Aq6Aq6*a0	1 E	:Y7 	6"))A,..q!45	6 A	:Y7 	-B7QF+,	-
 	 :Y7 	;Aq6Aq6*M:	; 	;%	1 	1
	6 	6
	- 	-	; 	;/   C/C"C.:C:C"C+.C7:Dr  c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y Nr   rN   r   rj   rk   r   r  s         r=   test_edge_casesz TestBarnardExact.test_edge_cases1  s;     L)MM3::6	VXa[)Y,rL   r   c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y r  r  r  s         r=   test_row_or_col_zeroz%TestBarnardExact.test_row_or_col_zero=  s;     L)MM3::6	VXa[)Y,rL   )r  gE\/??   ,  )ggQ5r      r[   i  )g&X}>r   r   r   r   c                     |\  }}|dk(  r"t        j                  |      dddddf   }| }t        ||      }|j                  |j                  }}t        ||g||gd       y)a  
        "The expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-6 :
        ```R
        library(Barnard)
        options(digits=10)
        a = barnard.test(2, 7, 8, 2, dp=1e-6, pooled=TRUE)
        a$p.value[1]
        ```
        In this test, we are using the "one-sided" return value `a$p.value[1]`
        to test our pvalue.
        r   Nrt   r   Hz>rG   )r\   r  r   rj   rk   r   )	r6   r  r   r   expected_statless_pvalue_expectrl   rj   rk   s	            r=   test_less_greaterz"TestBarnardExact.test_less_greaterJ  sp    , -5)))#88L1!TrT':L*NMLkBMM3::6	-1C!D4	
rL   N)r   r   r   __doc__r4   r   r   r  r  r  r	  r\   r3   r  r  r   rL   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
rL   r  c                      e Zd ZdZdZej                  j                  dddgddggdfdd	gd
d
ggdfddgddggdfd
dgd
d	ggdfddgd	dggdfdd	gddggdfddgddggdfddgddggdfd
dgddggdfg	      d        Zej                  j                  dddgd
dggdfddgddggd fdd	gd
d
ggd!fdd"gddggd#fddgddggd$fddgd	dggd%fdd	gddggdfddgd&dggdfddgddggd fddgddggd'fd
dgddggd(fg      d)        Z	ej                  j                  dddgd
dggd*fddgddggd+fdd	gd
d
ggd,fddgddggd-fddgd	dggd.fdd	gddggd/fddgddggd+fddgddggd0fg      d1        Z
d2 Zej                  j                  dddgdd
ggej                  ej                  ffddgd
dggej                  ej                  ffg      d3        Zd4 Zej                  j                  d5d6      d7        Zy8)9TestBoschlooExactz9Some tests to show that boschloo_exact() works correctly.r  r  rO   rU   rV   )<vB\?g/??rR   rN   rT   )gM?gA>?r  r  r  )_VѶ?g֭?)u %?gc'?r   rQ   rN   rN   rP   )r   g      ?rr   )+f?gXc}v?   %   )gZыD?ggi]?c                     t        |d      }|j                  |j                  }}t        ||g|| j                         y)a  The expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-8 :
        ```R
        library(Exact)
        options(digits=10)
        data <- matrix(c(43, 10, 40, 39), 2, 2, byrow=TRUE)
        a = exact.test(data, method="Boschloo", alternative="less",
                       tsmethod="central", np.interval=TRUE, beta=1e-8)
        ```
        r   r   rG   Nr   rj   rk   r   ATOLr  s         r=   	test_lesszTestBoschlooExact.test_lessr  s6    2 \v>MM3::6	F+XDIIFrL   r  r(  r  )k\2?g0,%?)gKv?gN3?)r  g'&5?r  )gw@_?g7?)gi{?gɑ)z?)օa?g1|?rS   )gY<;?gND?)ge?gG`?c                     t        |d      }|j                  |j                  }}t        ||g|| j                         y)a  The expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-8 :
        ```R
        library(Exact)
        options(digits=10)
        data <- matrix(c(43, 10, 40, 39), 2, 2, byrow=TRUE)
        a = exact.test(data, method="Boschloo", alternative="greater",
                       tsmethod="central", np.interval=TRUE, beta=1e-8)
        ```
        r   r   rG   Nr  r  s         r=   test_greaterzTestBoschlooExact.test_greater  s6    6 \yAMM3::6	F+XDIIFrL   )r"  gqQS,5?)r  gG?/??)r  gKE`?)r  ghr1ֽ?)r#  grfb?)r   g      ?)r  gP:pRv?c                     t        |dd      }|j                  |j                  }}t        ||g|| j                         y)a  The expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-8 :
        ```R
        library(Exact)
        options(digits=10)
        data <- matrix(c(43, 10, 40, 39), 2, 2, byrow=TRUE)
        a = exact.test(data, method="Boschloo", alternative="two.sided",
                       tsmethod="central", np.interval=TRUE, beta=1e-8)
        ```
        r   @   )r   r   rG   Nr  r  s         r=   test_two_sidedz TestBoschlooExact.test_two_sided  s8    0 \{bIMM3::6	F+XDIIFrL   c                    d}t        t        |      5  t        ddgddggd       d d d        d	}t        t        |      5  t        t        j                  d
      j                  dd             d d d        d}t        t        |      5  t        ddgddgg       d d d        d}t        t        |      5  t        ddgddggd       d d d        y # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   PxY w# 1 sw Y   y xY w)Nr  r0   rN   rO   rP   rQ   r   r  r  rS   r   rt   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r  )r   r5   r   r\   r]   r  r  s     r=   r  zTestBoschlooExact.test_raises  s    F 	 :Y7 	2QFQF+q1	2 E	:Y7 	7299Q<//156	7 A	:Y7 	.RGaV,-	.
% 	 :Y7 	<QFQF+];	< 	<%	2 	2
	7 	7
	. 	.	< 	<r  c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y r  )r   rj   rk   r   r  s         r=   r  z&TestBoschlooExact.test_row_or_col_zero  s;     \*MM3::6	VXa[)Y,rL   c                     ddgddgg}t        |d      j                  }t        |d      j                  }dt        ||      z  dkD  sJ t        |d      j                  }|d	k(  sJ y )
NrN   r   rr   r   r   r   rO   r   r   )r   rk   ri  )r6   tblplpgpts        r=   test_two_sided_gt_1z%TestBoschlooExact.test_two_sided_gt_1  sp     1vBx CV4;;CY7>>R}q   C[9@@SyyrL   r   )r   r   c                     ddgddgg}t        ||      j                  }t        j                  ||      d   }t	        ||       y )NrO   rU   rV   r   rN   )r   rj   r   fisher_exactr   )r6   r   r,  boschloo_statfisher_ps        r=   test_against_fisher_exactz+TestBoschlooExact.test_against_fisher_exact  sI     1v1v&sDNN%%c{CAFx0rL   N)r   r   r   r  r   r4   r   r   r!  r%  r(  r  r\   r3   r  r0  r5  r   rL   r=   r  r  m  s   CD[[!fq!f89!fr2h!78"gBx ":;1gAw!89!fq!fv&!fq!f~.!fq!f89"g1v 892hR!#9:
	
GG [[2hR!#?@!fq!f56!fr2h!89"gBx "89"gBx "78!fq!f89!fq!fv&!fq!fv&!fq!f56"g1v 672hR!#9:	
 G! G [[2hR!#?@!fq!f78!fr2h!78"gBx "89!fq!f78!fq!f}-!fq!f78"g1v 89		
GG <4 [[!fq"g 01!fr1g 01	
-- [[],?@1 A1rL   r  c                      e Zd Zej                  j                  dg  ej                  d      f ej                  d      dgfg      d        Zd Z	d Z
ej                  j                  dg d      d	        Zej                  j                  d
g d      d        Zej                  j                  d        Zd Zd Zd Zy)TestCvm_2sampr   rR   rN   c                 >   fd|D        }t        t        t              5  t        | }t	        |j
                  j                  j                               t	        |j                  j                  j                               d d d        y # 1 sw Y   y xY w)Nc              3   V   K   | ]   }j                  |t                      " yw)rD   N)r2   r   ).0argr7   s     r=   	<genexpr>z5TestCvm_2samp.test_too_small_input.<locals>.<genexpr>  s$     L

3&6r&:
;Ls   &)ri   )	r   r   r    r   r   rj   r2   r3   rk   )r6   r   r7   rl   s     ` r=   test_too_small_inputz"TestCvm_2samp.test_too_small_input  ss     MtL+3HRP 	<&-CCMM2::bff+=>CJJ

266(:;	< 	< 	<s   A'BBc                     |j                  d      }d}t        j                  t        |      5  t	        ||d       d d d        y # 1 sw Y   y xY w)NrR   z/method must be either auto, exact or asymptoticr0   xyz)r]   r4   r   r5   r   )r6   r7   r9   msgs       r=   r   z TestCvm_2samp.test_invalid_input  sC    IIaL?]]:S1 	. Au-	. 	. 	.s   AAc                     g d}g d}t        ||      }t        t        j                  |      t        j                  |            }t        |j                  |j
                  f|j                  |j
                  f       y )N)rO   rP   rQ   rU   rS   )r   r   rr   r  )r   r\   r  r   rj   rk   )r6   r8   r9   r1r2s        r=   test_list_inputzTestCvm_2samp.test_list_input  sX    !!Q'!"((1+rxx{;bllBII.ryy0IJrL   r?   r@   c                 F   |t        |      nt        ||      }|j                  g d|      }|j                  g d|      }t        ||      }t	        |j
                  |j                  d|      d       t	        |j                  |j                  d|      d       y )	N)	gffffff@g @rF   gffffff!@皙"@g#@g333333$@g333333%@gffffff&@rD   )g@g@g@      @333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?rW   rG   g
ףp=
?r   )r   rJ   r2   r   r   rj   rk   )r6   r?   r7   r8   r9   rs         r=   test_example_conoverz"TestCvm_2samp.test_example_conover  s     ). $72u;MJJGuJUJJ BIN  P A&RZZUZ%C$O"**S*">TJrL   zstatistic, m, n, pval))i  rR   rS   gcj`?)ii  rU   rU   gtE]t?)i@  rQ   rS   g88?)i  rS   rU   gXwS?c                 2    t        t        |||      |       y r   )r   r   )r6   rj   r"  r   pvals        r=   test_exact_pvaluezTestCvm_2samp.test_exact_pvalue*  s     	*9a;TBrL   c                    t         j                  j                  d      }t        j                  j                  d|      }t        j                  j                  d|      }|j                  |      |j                  |      }}t        ||      }d|j                  cxk  rdk  sJ  J t        ||dz         }d|j                  cxk  rdk  sJ  J y )Ni  r  )rq   r  i r   rN   r   )	r\   rw   rx   r
   normr  r2   r   rk   )r6   r7   rz   r8   r9   rI  s         r=   test_large_samplezTestCvm_2samp.test_large_sample5  s     ii##D)""c"B""S"Azz!}bjjm1 A&188a AcE*188arL   c                 ~   t         j                  j                  d      }|j                  |j                  d            }|j                  |j                  d            }t	        ||d      }t	        ||d      }t        |j                  |j                         t        |j                  |j                  d       y )	Nr   rU   rV   r   r   r   r   rG   )	r\   rw   r  r2   r   r   rj   r   rk   )r6   r7   rz   r8   r9   rB  rC  s          r=   test_exact_vs_asymptoticz&TestCvm_2samp.test_exact_vs_asymptoticB  s    ii##A&JJszz!}%JJszz!}%!!Qw7!!Q|<bll3		29948rL   c                 ^   |j                  d      }|j                  g d      }t        ||d      }t        ||d      }t        |j                  |j                         |j                  d      }t        ||d      }t        ||d      }t        |j                  |j                         y )Nr  )r   g@g333333*@r   r   r   g      5@r   )r]   r2   r   r   rk   )r6   r7   r8   r9   rB  rC  s         r=   test_method_autozTestCvm_2samp.test_method_autoK  s    IIcNJJ'(!!Qw7!!Qv6		299-IIcN!!Q|<!!Qv6		299-rL   c                    |j                  d      }t        ||      }t        |j                  |j	                  d             t        |j
                  |j	                  d             t        |d d |d d       }t        |j                  |j	                  d             t        |j
                  |j	                  d             y )Nr  r   r   rQ   )r]   r   r   rj   r2   rk   )r6   r7   r8   rl   s       r=   test_same_inputzTestCvm_2samp.test_same_inputW  s     IIbM"1a(rzz"~6

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

BJJrN3rL   N)r   r   r   r4   r   r   r\   r]   r=  r   rD  rJ  rM  xslowrP  rR  rT  rV  r   rL   r=   r7  r7    s    [[Vr9299Q<&8'0ryy|aS&9&; <<<<.K [[W&BC	K D	K [[456
C6
C [[
  
 9
.4rL   r7  c                      e Zd Zg dg dg dfZg dg dg dfZg dg dg dfZdZdZd	Ze	j                  j                  d
eedfeedfeedffg d      d        ZdZdZe	j                  j                  d
eedfeedffddg      d        Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  dd      d         Ze	j                  j                  d!g d"      d#        Zd$ Zy%)&TestTukeyHSD)rR       7@ffffff:@皙;@fffff=@)ffffff<@皙A@     =@皙@@皙>@)g:@gL<@gL8@g333333:@g;@)rR  rZ  gHzG:@r[  r\  r]  rb  rb  )rR  rZ  r[  )
r^  r_  r`  ra  rb  r^  r_  r`  ra  rb  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,atolrI   g|=)equal size sampleunequal sample sizezextreme sample size differencesidsc                 "   t        j                  |j                  dd      j                         dd t              j                  d      }t        j                  | }|j                         }|D ]  \  }}}	}
}}t        |      dz
  t        |      dz
  }}t        |j                  ||f   |	|       t        |j                  ||f   |
|       t        |j                  ||f   ||       t        |j                  ||f   d	k  |dk(          y)
a  
        SAS code used to generate results for each sample:
        DATA ACHE;
        INPUT BRAND RELIEF;
        CARDS;
        1 24.5
        ...
        3 27.8
        ;
        ods graphics on;   ODS RTF;ODS LISTING CLOSE;
           PROC ANOVA DATA=ACHE;
           CLASS BRAND;
           MODEL RELIEF=BRAND;
           MEANS BRAND/TUKEY CLDIFF;
           TITLE 'COMPARE RELIEF ACROSS MEDICINES  - ANOVA EXAMPLE';
           ods output  CLDiffs =tc;
        proc print data=tc;
            format LowerCL 17.16 UpperCL 17.16 Difference 17.16;
            title "Output with many digits";
        RUN;
        QUIT;
        ODS RTF close;
        ODS LISTING;
         -  rR   NrD   )rS   rS   rN   rG   r   r\   r2   replacesplitfloatr  r   	tukey_hsdconfidence_intervalintr   lowrj   highrk   )r6   datares_expect_strrH   
res_expect	res_tukeyconfr{   jlr  hsigs                r=   test_compare_saszTestTukeyHSD.test_compare_sas  s   B ZZ 6 6uc B H H J12 N&+--4WV_ 	OOT*	,,.", 	GAq!Q3q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:Y--ad3s:SAXF	GrL   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
        rT  r  rc  zunequal size samplec                    t        j                  |j                         t              j	                  d      }t        j                  | }|j                         }|D ]  \  }}}	}
}}t        |      dz
  t        |      dz
  }}t        |j                  ||f   |	|       t        |j                  ||f   |
|       t        |j                  ||f   ||       t        |j                  ||f   ||        y)an  
        vals = [24.5, 23.5,  26.4, 27.1, 29.9, 28.4, 34.2, 29.5, 32.2, 30.1,
         26.1, 28.3, 24.3, 26.2, 27.8]
        names = {'zero', 'zero', 'zero', 'zero', 'zero', 'one', 'one', 'one',
         'one', 'one', 'two', 'two', 'two', 'two', 'two'}
        [p,t,stats] = anova1(vals,names,"off");
        [c,m,h,nms] = multcompare(stats, "CType","hsd");
        rD   rP   rS   rN   rG   N)r\   r2   rl  rm  r  r   rn  ro  rp  r   rq  rj   rr  rk   )r6   rs  rt  rH   ru  rv  rw  r{   rx  ry  r  rz  r;   s                r=   test_compare_matlabz TestTukeyHSD.test_compare_matlab  s     ZZ 4 4 6&+--4WV_ 	OOT*	,,. * 	BAq!Q1q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:I,,QT2ADA	BrL   c                 4   d}t        j                  |j                  dd      j                         dd t              j                  d      }g dg d	g d
f}t        j                  | }|j                         }|D ]  \  }}}}	}
}t        |      dz
  t        |      dz
  }}t        |j                  ||f   |	d       t        |j                  ||f   |d       t        |j                  ||f   |
d       t        |j                  ||f   |d        y)a+  
        Testing against results and p-values from R:
        from: https://www.rdocumentation.org/packages/stats/versions/3.6.2/
        topics/TukeyHSD
        > require(graphics)
        > summary(fm1 <- aov(breaks ~ tension, data = warpbreaks))
        > TukeyHSD(fm1, "tension", ordered = TRUE)
        > plot(TukeyHSD(fm1, "tension"))
        Tukey multiple comparisons of means
        95% family-wise confidence level
        factor levels have been ordered
        Fit: aov(formula = breaks ~ tension, data = warpbreaks)
        $tension
        z
                diff        lwr      upr     p adj
        2 - 3  4.722222 -4.8376022 14.28205 0.4630831
        1 - 3 14.722222  5.1623978 24.28205 0.0014315
        1 - 2 10.000000  0.4401756 19.55982 0.0384598
        rh  ri  rR   NrD   r~  )   rZ   6   r  F   4   3   r  C   r   r        r     )   r  ,   )r  r  r  r  rr   r  r  rZ   $   *   r  r  r  r  r[   r  r  r  )r  r  r  r  rT   r  r[   r  r  r  r  r  r  r   r  r  r  r[   rN   r  rG   r`  h㈵>rj  )r6   str_resru  rs  rv  rw  r{   rx  r  ry  rz  r;   s               r=   test_compare_rzTestTukeyHSD.test_compare_r  s    ZZs ; A A CAB G&+--4WV_ 	555	6 OOT*	,,. * 	BAq!Q1q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:I,,QT2ADA	BrL   c                    g d}g d}g d}g d}t        j                  ||||      }|j                         }t        j                  g dg dg dg dg      }t        j                  g d	g d
g dg dg      }dD ]I  \  }	}
t        |j                  |	|
f   ||	|
f   d       t        |j                  |	|
f   ||	|
f   d       K y)zp
        Example sourced from:
        https://www.itl.nist.gov/div898/handbook/prc/section4/prc471.htm
        )皙@g@333333@gffffff@r   )g @rH  g333333@gffffff"@rG  )g       @g      %@g333333 @r  rF  )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@)rN   r   )rO   r   )r   rP   r6  r  r   rG   N)r   rn  ro  r\   r2   r   rq  rr  )r6   group1group2group3group4rl   rw  lowerupperr{   rx  s              r=   test_engineering_stat_handbookz+TestTukeyHSD.test_engineering_stat_handbook  s    
 +*+*ooffff=&&(

 	 
 

!	  ? 	EFQDHHQTNE!Q$KdCDIIadOU1a4[tD	ErL   c                 $   t         j                  j                  d      }|j                  d      }t        j                  | }|j                         }t        |j                  |j                  j                          t        t        j                  |j                        |j                  d          t        t        j                  |j                        |j                  d          t        |j                  |j                  j                          t        t        j                  |j                        d       t        |j                  |j                  j                         t        t        j                  |j                        d       y )Nl   ]A )rP   r   r   r   r   rN   )r\   rw   rx   r   rn  ro  r   rq  rr  r  diagonalrj   rk   )r6   rz   rs  rl   rw  s        r=   test_rand_symmzTestTukeyHSD.test_rand_symm&  s    ii##J/zz(#oot$&&(TXX		|, 	R[[+TYYt_=R[[*DHHTN;S]]S]]__$45R[[/3SZZ.R[[,a0rL   c                     t        t        d      5  t        j                  g ddt        j
                  gg d       d d d        y # 1 sw Y   y xY w)Nz...must be finite.r0   r   rO   )rS   rU   rP   )r   r5   r   rn  r\   ry   r:  s    r=   test_no_infzTestTukeyHSD.test_no_inf9  s:    :-AB 	?OOI266{I>	? 	? 	?s   ,AAc                     t        t        d      5  t        j                  ddgddggddgg d       d d d        y # 1 sw Y   y xY w)Nz...must be one-dimensionalr0   rN   rO   rP   rR   )rR      rS   r   r5   r   rn  r:  s    r=   
test_is_1dzTestTukeyHSD.test_is_1d=  sG    :-IJ 	BOOaVaV,q!fjA	B 	B 	Bs	   "=Ac                     t        t        d      5  t        j                  g ddgg d       d d d        y # 1 sw Y   y xY w)Nz...must be greater than oner0   rO   rR   )rQ   rR   rS   r  r:  s    r=   test_no_emptyzTestTukeyHSD.test_no_emptyA  s6    :-JK 	3OOBA	2	3 	3 	3s	   7A c                     d}t        t        |      5  t        j                  g dddgddgd	       d d d        y # 1 sw Y   y xY w)
Nz(Expected a boolean value for 'equal_var'r0   r   rO   rR   rS   rU   False)	equal_var)r   	TypeErrorr   rn  )r6   r@  s     r=   test_equal_var_input_validationz,TestTukeyHSD.test_equal_var_input_validationE  sD    89C0 	JOOI1v1vI	J 	J 	Js	    =Anargsr  c                     t        t        d      5  t        j                  g dg|z    d d d        y # 1 sw Y   y xY w)Nz...more than 1 treatment.r0   r  rU   rP   r  )r6   r  s     r=   test_not_enough_treatmentsz'TestTukeyHSD.test_not_enough_treatmentsJ  s5    :-HI 	5OOzlU24	5 	5 	5s   4=cl)r  r   rN   rO   c                     t        t        d      5  t        j                  g dddgddg      }|j	                  |       d d d        y # 1 sw Y   y xY w)Nzmust be between 0 and 1r0   r  rP   rQ   rs   )r   r5   r   rn  ro  )r6   r  rI  s      r=   test_conf_level_invalidz$TestTukeyHSD.test_conf_level_invalidO  sJ    :-FG 	&
QFQF;A!!"%	& 	& 	&s   /A

Ac                    t        j                  | j                  d d  }t        j                  | j                  d d  }t	        |j
                  |j
                  d          t	        |j
                  |j
                  d          y )NrO   r  r  )r   rn  data_diff_size	ttest_indr   rk   )r6   rv  	res_ttests      r=   test_2_args_ttestzTestTukeyHSD.test_2_args_ttestU  sn    OOT%8%8!%<=	OOT%8%8!%<=		(()*:*:4*@A	(()*:*:4*@ArL   N)r   r   r   data_same_sizer  extreme_sizesas_same_sizesas_diff_sizesas_extremer4   r   r   r|  matlab_sm_sizmatlab_diff_szr  r  r  r  r  r  r  r  r  r  r  r   rL   r=   rY  rY  e  s   4446N H446N '24L
MMK [[7-}dC-}dC+[%@ "E  F#GF#GJMN [[7-}eD-~tDF"5"7"9  :
B:
B*'BRE41&?B3J
 [[Wf-5 .5 [[T>2& 3&
BrL   rY  c                   0   e Zd Zg dg dg dfZg dg dg dg dfZdZd	Zej                  j                  ej                  j                  d
eefeeffddg      d               ZdZdZej                  j                  d
eefeeffddg      d        Zy)TestGamesHowell)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_strrc  rd  re  c                    t        j                  |j                  dd      j                         dd t              j                  dd      }t        j                  |dd	i}|j                         }|D ]  \  }}}}	}
}t        |      t        |      }}t        |j                  ||f   |d
       t        |j                  ||f   |d
       t        |j                  ||f   |	d       t        |j                  ||f   |
d        y)a^  
        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).
        rh  ri  rU   NrD   rt   rS   r  Fg:0yE>rG   r`  r  )r\   r2   rk  rl  rm  r  r   rn  ro  rp  r   rj   rk   rq  rr  )r6   rs  rt  ru  	res_gamesrw  r{   rx  r  ry  rz  r;   s               r=   test_compare_spssz!TestGamesHowell.test_compare_spssy  s    8 ZZ""5#.446qr: Q 	 OOT;U;	,,. * 	;Aq!Q1q63q6qAI//15qtDI,,QT2ADADHHQTNAD9DIIadOQT:	;rL   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                 f   t        j                  |j                  dd      j                  dd      j                         dd t              j                  dd      }t        j                  |d	d
i}|D ];  \  }}}}}t        |      t        |      }}t        |j                  ||f   |d       = y)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)
        rh  ri  z == rP   NrD   rt   rR   r  Fr  rG   )r\   r2   rk  rl  rm  r  r   rn  rp  r   rk   )	r6   rs  rt  ru  r  rx  r{   _r;   s	            r=   r  zTestGamesHowell.test_compare_r  s    ( ZZ""5#.WVS!%%'!". !Q 	 OOT;U;	 ( 	BMAq!Qq63q6qAI,,QT2ADA	BrL   N)r   r   r   r  r  spss_same_sizespss_diff_sizer4   r   rW  r   r  r_same_sizer_diff_sizer  r   rL   r=   r  r  ]  s    ***,N &,/.0N
NN [[[[3,n=+^<>!4!6!8  9
!;9 !;FKK [[3,k:+[9;!4!6!8  9
B9
BrL   r  c                       e Zd Zej                  j                  dg dg df      d        Zej                  j                  dg dg dg dg d	g d
g dg dg df      d        Zd Zd Z	d Z
y)TestPoissonMeansTestzc1, n1, c2, n2, p_expect)r   r   rP   r   gea?)rO   r   rS   r   g	c?c                 d    t        j                  ||||      }t        |j                  |d       y r   r   poisson_means_testr   rk   )r6   c1r   c2r   p_expectrl   s          r=   test_paper_examplesz(TestPoissonMeansTest.test_paper_examples  s*     &&r2r26

H48rL   z c1, n1, c2, n2, p_expect, alt, d)r  rT   r  rT   g{}?r   r   )rT   rT   rT   rT   goPF?r   r   )2   r  rN   rN   gae?r   r   )rP   r   r  r  g/V-=?r   r   )rP   rr   rQ   r  g")?r   r   )rQ   r  rP   r   g_'Qm~?r   r   )rQ   r  rP   rT   g|?r   r   )rN   rN   r  r  g0ݷ?r   r   c                 l    t        j                  ||||||      }t        |j                  |dd       y )N)r   diffg>r>  rH   rb  r  )	r6   r  r   r  r   r  altdrl   s	            r=   test_fortran_authorsz)TestPoissonMeansTest.test_fortran_authors  s0    $ &&r2r23QO

H4eDrL   c                 t    d\  }}d\  }}t        j                  ||||      }t        |j                  d       y )N)r   r   rN   r  r6   count1count2nobs1nobs2rl   s         r=   test_different_resultsz+TestPoissonMeansTest.test_different_results  s:     &#u&&vufeD

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

A&rL   c                    d\  }}d\  }}d}t        t        |      5  t        j                  d|||       d d d        t        t        |      5  t        j                  ||d|       d d d        d}t        t        |      5  t        j                  d|||       d d d        t        t        |      5  t        j                  ||d|       d d d        d}t        t        |      5  t        j                  |d||       d d d        t        t        |      5  t        j                  |||d       d d d        d	}t        t        |      5  t        j                  ||||d
       d d d        d}t        t        |      5  t        j                  ddddd       d d d        y # 1 sw Y   uxY w# 1 sw Y   PxY w# 1 sw Y   )xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  z`k1` and `k2` must be integers.r0   r   z1`k1` and `k2` must be greater than or equal to 0.rt   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 ...rN   rO   errorr   )r   r  r   r  r5   )r6   r  r  r  r  r<   s         r=   r   z*TestPoissonMeansTest.test_input_validation  s   u 49G4 	?$$R>	?9G4 	?$$VUB>	? F:W5 	?$$R>	?:W5 	?$$VUB>	? ::W5 	@$$VR?	@:W5 	@$$VUFB?	@ =:W5 	L$$VUFEK	L 3:W5 	F$$Q1aWE	F 	F5	? 	?	? 	?
	? 	?	? 	?
	@ 	@	@ 	@
	L 	L
	F 	Fs_   F*F7G6G*GG*G6H*F47GGGG'*G36G?HN)r   r   r   r4   r   r   r  r  r  r  r   r   rL   r=   r  r    s    [[7  : 
9
9 [[?
 	=<=>9; 	66B "E#"E''!FrL   r  c                   D   e Zd Zd Zej
                  j                  dg d      d        Zej
                  j                  dg d      d        Zej
                  j                  dg d      d	        Z	d
 Z
d Zej
                  j                  dddg      d        Zd Zy)TestBWSTestc                    t         j                  j                  d      }|j                  d      \  }}|j                  |      |j                  |      }}d}t	        j
                  t        |      5  t        j                  ||d       d d d        d}t	        j
                  t        |      5  t        j                  ||d	       d d d        d
}t	        j
                  t        |      5  t        j                  ||j                  g |j                               d d d        d}t	        j
                  t        |      5  t        j                  ||d       d d d        d}t	        j
                  t        |      5  t        j                  ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   y xY w)N   <ovT{ rO   rU   rp   z"`axis` must be an integer or None.r0   r   ru   z7`axis` is not compatible with the shapes of the inputs.rP   z`x` and `y` must contain...rD   zalternative` must be one of...r  r   z!method` must be an instance of...r  r   )
r\   rw   rx   r2   r4   r   r5   r   bws_testr?   )r6   r7   rz   r8   r9   r<   s         r=   test_bws_input_validationz%TestBWSTest.test_bws_input_validation-  sy   ii##$78zzvz&1zz!}bjjm16]]:W5 	+NN1ac*	+ L]]:W5 	)NN1aa(	) 0]]:W5 	=NN1bjj177j;<	= 3]]:W5 	:NN1a[9	: 6]]:W5 	,NN1a+	, 	,!	+ 	+	) 	)	= 	=	: 	:	, 	,s<   4F'2F402G GG'F14F= G	GG!r?   r@   c                 Z   |t        |      nt        ||      }|j                  g d|      }|j                  g d|      }t        j                  ||d      }t        |j                  |j                  d|      d       t        |j                  |j                  d	|             y )
N)rN   rO   rP   rQ   rS   rU   rV   rD   )rR   rs   rT   ro   rr   r   r  r   r   gI+@rW   rG   gf$/g?)r   rJ   r2   r   r  r   rj   rk   )r6   r?   r7   r8   r9   rl   s         r=    test_against_published_referencez,TestBWSTest.test_against_published_referenceG  s     ). $72u;MJJ,EJ:JJ1J?nnQ{;rzz%uz'EDQ

BJJweJ$DErL   )r   rj   rk   ))r   g
-?g4B/?)r   
-g0&v?)r   r  g(?c                    t         j                  j                  d      }|j                  d      \  }}|j                  ||j                        |j                  ||j                        }}t        j                  |||      }|j                  ||j                        }|j                  ||j                        }t        |j                  |d       t        |j                  |dd	
       y )Nr  r  rp   rD   r   vIh%<=ra  r   r   r  )
r\   rw   rx   r2   rB   r   r  r   rj   rk   	r6   r   rj   rk   r7   rz   r8   r9   rl   s	            r=   test_against_RzTestBWSTest.test_against_RR  s     ii##$78zzvz&1zz!2::z.

1BJJ
0O1nnQ{;JJy

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

FDArL   ))r   gD5H?gdԕ?)r   `ч?gȲךX?)r   r  g4)?c                 x   t         j                  j                  d      }|j                  d      }|j                  d      }|j                  |      |j                  |      }}t	        j
                  |||      }|j                  ||j                        |j                  ||j                        }}t	        j
                  |||      }|j                  ||j                        }|j                  ||j                        }t        |j                  |d       t        |j                  |d	d
       y )Nl   .sZ rs   rp   rV   r   rD   r  ra  r   r   r  )
r\   rw   rx   r2   r   r  rB   r   rj   rk   r  s	            r=   test_against_R_imbalancedz%TestBWSTest.test_against_R_imbalancedf  s     ii##$78JJAJJJAJzz!}bjjm1nnQ{;zz!2::z.

1BJJ
0O1nnQ{;JJy

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

FDArL   c                 x   t         j                  j                  d      }|j                  d      \  }}|j                  |      |j                  |      }}t         j                  j                  d      }t	        j
                  d|      }t	        j                  |||      }|j                  j                  d   dk(  sJ t         j                  j                  d      }t	        j
                  d|      }t	        j                  |||      }t        |j                  |j                         t         j                  j                  d      }t	        j
                  d|      }t	        j                  |||      }|j                  |j                  |j                  |j                  z
        d	kD        sJ y )
N   /HN( )rO   rT   rp   rT   )n_resamplesrz   r   r      VC	A r   )r\   rw   rx   r2   r   rm  r  null_distributionr   r   allr)  )	r6   r7   rz   r8   r9   r   r*  r+  rO  s	            r=   test_methodzTestBWSTest.test_method}  sV   ii##$78zzwz'1zz!}bjjm1ii##$78((RSA~~a62%%++A."444ii##$78((RSA~~a62..0F0FGii##$78((RSA~~a62vvbffT33d6L6LLMPSSTTTrL   c                    t         j                  j                  d      }|j                  |j                  d            }|dz
  }|j                  d|j                        }|j                  d|j                        }t        j                  ||d	      }|j                  d
kD  sJ t        |j                  |       t        j                  ||d	      }|j                  d
kD  sJ t        |j                  |       t        j                  ||d	      }|j                  d
k  sJ t        |j                  |       t        j                  ||d	      }|j                  d
k  sJ t        |j                  |       y )Nr  rR   rp   r   gAAp?rD   rN   r   r   r   r   )
r\   rw   rx   r2   rB   r   r  rj   r   rk   )r6   r7   rz   r8   r9   pminpmaxrl   s           r=   test_directionszTestBWSTest.test_directions  s-   ii##$78JJszzqz)*Fzz'z4zz!2::z.nnQy9}}q   

D)nnQv6}}q   

D)nnQv6}}q   

D)nnQy9}}q   

D)rL   rv   r   rN   c                    t         j                  j                  d      }|j                  d      }|\  }}t        j                  |j                  |      |j                  |      |      }t        j                  ||dz   d      \  }}g g }	}t        ||      D ]o  \  }
}t        j                  |j                  |
      |j                  |            }|j                  |j                         |	j                  |j                         q |j                  |      |j                  |	      }	}t        |j                  |       t        |j                  |	       y )Nr  )rO   rP   rR   rp   ru   rN   rt   )r\   rw   rx   r   r  r2   r?  zipappendrj   rk   r   r   )r6   rv   r7   rz   r   r8   r9   rl   ref_statistic
ref_pvaluex_y_r   s                r=   test_ndzTestBWSTest.test_nd  s   ii##$78JJIJ&1nnRZZ]BJJqME{{1d1fb)1$&z!Qi 	*FB..BB@C  /cjj)	* %'HH]$;RXXj=Qz}5

J/rL   c                    t         j                  j                  d      }|j                  d      \  }}|j                  |      |j                  |      }}t	        j
                  ||d       }t	        j
                  t        |      t        |            }t        |j                  |j                         t        |j                  |j                         y )Nr  )rO   rO   rP   rp   ru   )
r\   rw   rx   r2   r   r  r   r   rj   rk   )r6   r7   rz   r8   r9   rl   r   s          r=   test_axis_NonezTestBWSTest.test_axis_None  s    ii##$78zzyz)1zz!}bjjm1nnQ-nnXa[(1+6s}}5

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