
    bi{                    J   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& d dl'm(Z(m)Z) d dl*m+Z+m,Z,  e#e       G d d             Z- e#ej&                         G d d             Z. e#ej4                         G d d             Z/ G d de      Z0 G d d      Z1 G d d      Z2 e#e       G d d             Z3 G d d      Z4 G d d      Z5 G d  d!      Z6 G d" d#      Z7y)$    )productN)assert_assert_equalassert_allclose)raises)statsspecial)distributions)epps_singleton_2sampcramervonmises_cdf_cvmcramervonmises_2samp_pval_cvm_2samp_exactbarnard_exactboschloo_exact)mannwhitneyu
_mwu_state_MWU)_TestPythranFunc)array_api_extra)make_xp_test_casexp_default_dtypeis_numpyeager_warns)xp_assert_equalxp_assert_close)SmallSampleWarningtoo_small_1d_not_omitc                   l    e Zd Zej                  j                  dg d      d        Zd Zd Zd Z	d Z
y)	TestEppsSingletondtypeNfloat32float64c                    t        |      r)|j                  dk  r|dk(  rt        j                  d       |t	        |      nt        ||      }|j                  g d|      }|j                  g d|      }t        ||      \  }}t        ||j                  d|      d	       t        ||j                  d
|      d	       y )N2.0r#   !Pre-NEP 50 doesn't respect dtypes)
gffffffֿgffffff@gGz?\(\?ffffff?gQ@gq=
ףp?gGzgGz׿gp=
#(@r!   )
gffffffg333333ÿgףp=
@g      
@gGz@g)\(@      @g(\@g(\ @333333!@gHzG.@gQ?atolgQ,r?-C6?)	r   __version__pytestskipr   getattrasarrayr   r   )selfr!   xpxywps          [/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/stats/tests/test_hypotests.pytest_statistic_1z"TestEppsSingleton.test_statistic_1   s     B<BNNU2u	7IKK;<(- $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         r@   r@   r@      rA   rA   rA         rC   rC   rC      
   rE   rE   rE   )rE   rB   r   rC   rE   rE   r   rC   rD      rE   rA   r?   rF   r      r?   rC   rG   rE   g!@MbP?r-   g&J?g-C6
?)r4   r   r   )r5   r6   r7   r8   r9   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:r=   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   )	r5   r7   r8   w1p1w2p2w3p3s	            r;   test_epps_singleton_array_likez0TestEppsSingleton.test_epps_singleton_array_like5   s    yy}biim1%d1gtAw7B%eAha9B%a+BbBbBr=   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r?   r@   rA   rB   rE   matchr6   )
r4   rN   r   r   r   r   r   	statisticnanpvaluer5   r6   r7   r8   ress        r;   test_epps_singleton_sizez*TestEppsSingleton.test_epps_singleton_size?   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$>. )rE      size)rE      )r?   rB   	   axisr   r?   r@   )rM   randomdefault_rngr4   r   r]   infr   )
r5   r6   rngr7   r8   iw_refp_refw_resp_ress
             r;   test_epps_singleton_nonfinitez/TestEppsSingleton.test_epps_singleton_nonfiniteG   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1r=   N)__name__
__module____qualname__r1   markparametrizer<   rI   rW   ra   rt    r=   r;   r    r       s=    [[W&BCJ DJ ; <2r=   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      ej                  j                  dddgg      d               Zej                  j                  dg d      d        Zd Zy
)TestCvmz	n, x, refrB   )gy;i?g#^?gE>?gD
)?){Gz?皙?      ?g+?rE   )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 Nr/   r-   )r   r   r4   )r5   nr7   refr6   s        r;   test_cdf_refzTestCvm.test_cdf_ref`   s'     	A2BJJsO$Or=   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   r4   )r5   r6   s     r;   test_cdf_supportzTestCvm.test_cdf_supporti   s`    Z,?!@#F

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

B8,	.r=   c                 l    |j                  g d      }t        t        |d      t        |      d       y )N)r   r   r   r   d   '  r/   r-   )r4   r   r   r5   r6   r7   s      r;   test_cdf_large_nzTestCvm.test_cdf_large_np   s(    JJ@AE*HQKdCr=   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@r*   gwJ?r   r   )r4   r$   r   r   s      r;   test_large_xzTestCvm.test_large_xu   sW     JJuBJJJ/(1d+1c12121(1+++,+,+r=   c                     d}t        |j                  |      dz  t        j                        }t	        |j
                  ||      dkD  sJ t        |j                  |j                  d             y )Nrf   皙?)r6   r   r   )	r   onesr	   ndtrr   r\   r   r^   r4   )r5   r6   r   r`   s       r;   
test_low_pzTestCvm.test_low_p   sV     RWWQZ^W\\:qR03666

BJJrN3r=   	jax.numpylazy -> no _axis_nan_policyreasonr7   rz         ?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)Nr[   )r1   warnsr   r   r   r4   r	   r   r   r\   r]   r^   )r5   r7   r6   r`   s       r;   test_invalid_inputzTestCvm.test_invalid_input   sw     \\,4IJ 	< A=CCMM2::bff+=>CJJ

266(:;	< 	< 	<s   BB11B:r!   r"   c                 R   t              r)j                  dk  r|dk(  rt        j                  d       |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 )Nr&   r#   r'   )g333333r@   r   g?rB   皙?333333?r*   gӈk&q?gDC+?c                 8    t        j                  | dz
  dz        S )NrA   r   )r	   r   )r7   s    r;   <lambda>z'TestCvm.test_values_R.<locals>.<lambda>   s    w||QUCK'@ r=   grW*?gju2`?)	r?   r@   rC   ffffff?gQ?rc      ?      @c                 *    j                  |         S N)expm1)r7   r6   s    r;   r   z'TestCvm.test_values_R.<locals>.<lambda>   s    rxx|m r=   g  .?g`(r?)r   r0   r1   r2   r   r3   r   r4   r	   r   r   r\   r^   )r5   r!   r6   r`   s     ` r;   test_values_RzTestCvm.test_values_R   sM   B<BNNU2u	7IKK;<(- $72u;M
 RZZ(FeZT$\\+rzz2B%z'PQ

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

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

BJJ/@J$NOr=   c                    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.r   r?   r@   rA   betarC   )r   ffffff?expon)r   r1   r   
ValueErrorr   r4   rM   rN   r
   r   cdfr   r\   r^   r   )r5   r6   messager7   argsr   r`   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)ru   rv   rw   r1   rx   ry   r   r   r   r   r   skip_xp_backendsr   r   r   rz   r=   r;   r|   r|   [   s    
 [[[	
02JK	13KL	35MN	35MN	+ PP.D
-4 [[!!+6S!T[[S2u+.< / U< [[W&BCP DP4Or=   r|   c                      e Zd Zej                  j                  dd      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 d0g d1d2Zg d3g d4g d5g d6g d7g d8d9Zd: Zd; 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                  dAe      dB        ZdC Zej                  j                  dd      ej                  j                  dDd
dg      dE               ZdF Zej                  j                  dd      dG        Zg dHdIdJdKdLej>                  dIdMdNdOdOdPgdQdRfg dHdIdJdKdLej>                  ej>                  dMdNdOdOdPgdSdTfdNdMej>                  dOgdIdJdKdLej>                  dIdMdNdOdOdPgdUdVfdNdMej>                  dOgdIdJdKdLej>                  ej>                  dMdNdOdOdPgdWdXfdNej>                  ej>                  dOgdIdJdKdLej>                  ej>                  dMdNdOdOdPgdYdZfgZ ej                  j                  d[e       d\        Z!g d]g d^g d_g d`g dag dbg dcg ddg deg	Z"ej                  j                  dfe"      dg        Z#ej                  j                  dd      dh        Z$g didjdkgddlgg didjdkgddlgg didjdkgd	dmgg d'dMgddngg d'dMgddngg d'dMgd	dogdNdMgdNdMgddpgdNdMgdNdMgddpgdNdMgdNdMgd	dqgg	Z%ej                  j                  g dre%      ds        Z&dt Z'ej                  j                  dug dv      dw        Z(g dxZ)g dyZ*dzZ+d{ Z,d| Z-d} Z.d~ Z/d Z0y)TestMannWhitneyUr   r   r   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)Nr?   r@   rA   rB   r*   r   )r4   r!   r]   r1   r   r   r   r   r   r\   r^   )r5   r6   r7   r8   emptyr]   r`   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)Nr?   r@   rA   rB   z`use_continuity` must be oner   ekki)use_continuityz`alternative` must be one ofalternativez`axis` must be an integerr   ri   z`method` must be one ofmethod)r4   assert_raisesr   r   )r5   r6   r7   r8   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                 v   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 )Nl   nEQWSfrG   r?   
asymptoticr   exactrA   )	rM   rk   rl   r4   r   r^   xpxatset)	r5   r6   rn   r   r7   r8   autor   r   s	            r;   	test_autozTestMannWhitneyU.test_auto   s    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/////r=   )gm9Aj@g+H3[@gi>s@)g#hA{@glz@gcDf@gǳ*h@gZA@gI9^YQa@g`@g՞p@g:q@g&@gZ|@g`r@gMc3g@	two-sidedr   r   r   )      0@
+?less)r   
+?greater)r   缌%c?r   )r   g9:?)r   g9:?)r   g*::?)kwdsexpectedr!   r"   c                    t        |      r)|j                  dk  r|dk(  rt        j                  d       |t	        |      nt        ||      }|j                  | j                  |      |j                  | j                  |      }}t        ||fi |}t        |j                  |j                  |d   |             t        |j                  |j                  |d   |             y )Nr&   r#   z*Scalar dtypes only respected after NEP 50.r*   r   r?   )r   r0   r1   r2   r   r3   r4   r7   r8   r   r   r\   r^   )r5   r   r   r!   r6   r7   r8   r`   s           r;   
test_basiczTestMannWhitneyU.test_basic;  s     B<BNNU2u	7IKKDE(- $72u;Mzz$&&z.

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

BJJx{%J$HIr=   T)r   r   )      7@r   )r   r   )r   r   F)r   gl,KNh?)r   giژ?)r   gl,KNh?c                 .   |j                  | j                        |j                  | j                        }}t        ||fddi|}t	        |j
                  |j                  |d                t	        |j                  |j                  |d                y )Nr   r   r   r?   )r4   r7   r8   r   r   r\   r^   )r5   r   r   r6   r7   r8   r`   s          r;   test_continuityz TestMannWhitneyU.test_continuityS  ss     zz$&&!2::dff#511a===rzz(1+'>?

BJJx{$;<r=   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   r+   )r   r   r   r   r   r}   )r   r   r   r   r   rh   r   )rj   r   )rE   rg         !@rG   r   rF   rD   )r?   g]U?g[?gi\?gZX<_?gx.?g 
?)r4   stackr   r   r\   r   r^   )
r5   r6   r7   y0dydy2r8   r`   
U_expected
p_expecteds
             r;   test_tie_correctz!TestMannWhitneyU.test_tie_correctc  s     JJ'(ZZ,-ZZ,-d2jj-.t3HHbgr"ubfb"S&"R%DIJ1ab>/
I
rzz*'=>

BJJz$:;r=   )g      ?r   g      ?)r   皙?皙?r   )r~   r   r   r)   r   g?r   )r   r   r   )gx&?g/$?gJ+?r   r   )y&1?v/?gv/?r   gjt?~jt?ʡE?)	gy&1?gV-?r   r   gS?gv?gʡE?g'1Z?gm?rY   )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+?r?   r@   rA   rB   rC   )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?)rH   r  r   r   g9v?g/$?r   r   gL7A`?g
ףp=
?gQ?r  gK7?g`"?g7A`?r)   gV-?gjt?gˡE?)r?   r@   rA   rB   rC   rD   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   )rA   rB   rC   rD   )krH   r-   r?   rh   )setattrr   r   pn3pn4pm5pm6itemsrM   rN   lenr  
set_shapesr   r   sfpmf)
r5   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*)+	+r=   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  rC   r   r   r   r}   (   rH   )rM   rk   rl   r4   r   r\   absr^   )r5   r6   rn   r7   r8   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7r=   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   )r4   r   r   r^   r\   )r5   r6   r7   r8   res_lres_gr`   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3r=   r   r   )r   r   )r   g郡E?)r   r?   )r   resultc                 .    t        t        di ||       y )Nr?   r@   )r   r   )r5   r   r(  s      r;   test_scalar_dataz!TestMannWhitneyU.test_scalar_data  s     	2T2F;r=   c                     t        t        ddd      d       t        t        ddd      d       t        t        dddd      dt        j                  f       y )	Nr?   r   r   )r   r?   r   F)r   r   r   )r   r   rM   r]   r5   s    r;   test_equal_scalar_dataz'TestMannWhitneyU.test_equal_scalar_data  sP    
 	\!Qw7B\!Q|<hG 	\!Q|168:=rvv	Hr=   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 )rF   rE   rA   rG   rD   r?   r   )r   rj   )rD   rA   rG   rh   )N.r   缉ؗҜ<r-   )rM   rk   rl   r   r4   r^   shaper\   moveaxisndimbroadcast_tozerosr   ranger   )r5   r   r6   rn   rj   r  r   r7   r8   r`   r2  
statisticspvaluesro   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                 l   g d}g d}t        |j                  |      |j                  |            }d|d<   t        j                  |d<   t        |j                  |      |j                  |            }t	        |j
                  |j
                         t	        |j                  |j                         y )NrY   )rA   rD   rF   rG   rg   rA   r@   r?   rB   rB   rC   r   r   rB   )r   r4   rM   rm   r   r\   r^   )r5   r6   r7   r8   r  r  s         r;   test_gh_11355zTestMannWhitneyU.test_gh_11355   s    -BJJqM2::a=9 !vv!BJJqM2::a=97T[[1r=   c                 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   rA   rD   rF   rg   r@   r?   rB   rC   )rM   r]   r   r4   r   r\   r^   )r5   r6   r7   r8   res3s        r;   test_gh11355_nanz!TestMannWhitneyU.test_gh11355_nan.  s{     1bffaAq!Q2BJJqM2::a=9

266(:;RZZ%78r=   )r   r@   rA   rB   rA   rD   rF   rG   r@   r?   rB   rC         $@g+zQ?r   g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r7   r8   r\   r^   c                     t        |j                  |      |j                  |      d      }t        |j                  |j                  |      d       t        |j                  |j                  |      d       y )Nr   r   -q=r-   )r   r4   r   r\   r^   )r5   r7   r8   r\   r^   r6   r`   s          r;   test_gh_11355bzTestMannWhitneyU.test_gh_11355bG  sT     2::a="**Q-Mrzz)'<5I

BJJv$6UCr=   )Tr   r   g&?)Tr   r   gO?)Tr   r   gO?)Fr   r   g9@VN!x?)Fr   r   g9M>?)Fr   r   g9M>?)Tr   r   g?UV?)Tr   r   gߺVJH?)Tr   r   gVJH?)r   r   r   
pvalue_expc                    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   )r4   r   r   r\   r   r^   )
r5   r   r   r   rI  r6   statistic_expr7   r8   r`   s
             r;   test_gh_9184zTestMannWhitneyU.test_gh_9184X  sk    . JJSTJJ561a'26Crzz-'@A

BJJz$:;r=   c                     |j                  |j                        }|j                  |||||g      }|j                  |||||g      }t        ||      }t	        |j
                  |j                  |             t	        |j                  |       y r   )r4   r]   r   r   r   r\   r^   )r5   r6   r]   abr`   s         r;   test_gh_4067zTestMannWhitneyU.test_gh_4067w  sx     jj HHc3S#./HHc3S#./1a rzz#7

C(r=   r"  r   r#  )r   ga׀}?)r   r   )r   g?h?)r   r   )r   g5&#\?)r   r   )r7   r8   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   rK  ư>rG  r   rtolr?   )r   r4   r   r#   r   r\   r^   )r5   r7   r8   r   r   r6   r`   rU  s           r;   test_gh_2118zTestMannWhitneyU.test_gh_2118  s{     2::a="**Q-'2<I'+rzz9turzz(1+'>TJ

BJJx{$;$Gr=   c                    t         j                  j                  d      }d\  }}|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 )rC   rc   rd   r  r   r   r   rh   r?   r   )r   r   )rM   rk   rl   r
  r   r   r  resetr   r   configurationsr2  minr\   )r5   rn   r  r   r7   r8   r`   r2  s           r;   test_gh19692_smaller_tablez+TestMannWhitneyU.test_gh19692_smaller_table  sq   
 ii##$781JJAJJJAJ
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9r=   r   )r   r   r   c                    t         j                  j                  d      }|j                  d      }|j                  d      }t        j                  ||t        j
                         |d      }t        j                  ||d|d      }t        |j                  |j                  d	       t        |j                  |j                  d	       y )
NrX  )r@   rC   rd   )r@   rD   r?   )r   r   rj   r   V瞯<rT  )	rM   rk   rl   r   r   PermutationMethodr   r\   r^   )r5   r   rn   r7   r8   r`   r  s          r;   test_permutation_methodz(TestMannWhitneyU.test_permutation_method  s    ii##$78JJFJ#JJFJ#  Ae.E.E.G-8qB!!!Qw.9Ct~~EB

DKKe<r=   )g	U3@g^3@gt3@g]o5@gzS4@gt< 4@gM	X3@gXmCk4@gLo&3@gfɘ2@g{m;^3@ga A$|3@gMѢ_4@g#3@g19T_3@ggC2@gqR4@gKk/4@g܁3@gZ2@g_
3@g$`3@g
x4@g3#л5@g;VND1@g >H2@gr4@gyܤ2@g?4@g=bɇ3@)gpG3@gL:j0@g2@gJNnC1@gR;`(3@g+Pi,2@g6:Z2@gZ"3=2@gF	uSa	3@gXҀ2@gX3^83@g21@gJ2@gZ)E2@gU83@g50@gԆ3@gFz33@gz3@gڴ3@g+=c                 6   |j                  | j                        |j                  | j                        }}t        j                  ||d      \  }}t        j                  ||d      \  }}t        j                  ||d      \  }}	t        j                  ||d      \  }
}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         @     Y@g=_A?rT  Mb@?glPz.?r1  rU  r.   )
r4   XYr   r   r   r   rU  r!   r$   r5   r6   rf  rg  u1rR   r  rT   u3rV   u4p4rU  s                r;   test_mannwhitneyu_one_sidedz,TestMannWhitneyU.test_mannwhitneyu_one_sided  s<   zz$&&!2::dff#51##Aqf=B##Aqi@B##Aqi@B##Aqf=BBBRxxBJJt,-BJJt,-BJJt,-BJJt,-BJJ'89		JGGrzz1tyytBJJ':;$USr=   c                    |j                  | j                        |j                  | j                        }}t        j                  ||d      \  }}t        j                  ||d      \  }}t        ||       t        ||j                  d             t        ||j                  d             |j                  |j                  k(  r| j                  nd}t        ||j                  d      |d       y )	Nr   r   rb  rc  rd  glPz.?r1  re  
r4   rf  rg  r   r   r   r!   r$   rU  r   	r5   r6   rf  rg  ri  rR   r  rT   rU  s	            r;   test_mannwhitneyu_two_sidedz,TestMannWhitneyU.test_mannwhitneyu_two_sided  s    zz$&&!2::dff#51##AqkBB##AqkBBBBJJt,-BJJt,-GGrzz1tyytBJJ'9:ERr=   c                 ,   |j                  | j                        |j                  | j                        }}t        j                  ||dd      \  }}t        j                  ||dd      \  }}t        j                  ||dd      \  }}	t        j                  ||dd      \  }
}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   rb  rc  rd  gii5?r1  re  g22?ro  rh  s                r;   &test_mannwhitneyu_no_correct_one_sidedz7TestMannWhitneyU.test_mannwhitneyu_no_correct_one_sided  sB   zz$&&!2::dff#51##Aq%VDB##Aq%YGB##Aq%YGB##Aq%VDBBBRxxBJJt,-BJJt,-BJJt,-BJJt,-GGrzz1tyytBJJ'895QBJJ';<4eTr=   c                    |j                  | j                        |j                  | j                        }}t        j                  ||dd      \  }}t        j                  ||dd      \  }}t        ||       t        ||j                  d             t        ||j                  d             |j                  |j                  k(  r| j                  nd}t        ||j                  d      |d	       y )
NFr   r   rb  rc  rd  g22?r1  re  ro  rp  s	            r;   &test_mannwhitneyu_no_correct_two_sidedz7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sided  s    zz$&&!2::dff#51##Aq%[IB##Aq%[IBBBJJt,-BJJt,-GGrzz1tyytBJJ';<4eTr=   c                    |j                  g d      }|j                  g d      }t        j                  ||d      }t        |j                  |j                  d             t        |j
                  |j                  d             t        j                  ||d      }t        |j                  |j                  d             t        |j
                  |j                  d             t        j                  ||d	      }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   g     @g ?չ>r   g&)E?r   g?չ?)r4   r   r   r   r\   r^   r_   s        r;   test_mannwhitneyu_onesz'TestMannWhitneyU.test_mannwhitneyu_ones  s    JJ 0 1& JJ ( )   A6:rzz'':;

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

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

BJJ/@$ABr=   N)1ru   rv   rw   r1   rx   r   r   r   r   r7   r8   cases_basicry   r   cases_continuityr   r   r  r  r  r  r  r   r&  cases_scalarr+  r.  r>  r@  rC  rM   rm   cases_11355rH  
cases_9184rM  rQ  
cases_2118rV  r\  r`  rf  rg  rU  rm  rq  rs  ru  rw  rz   r=   r;   r   r      s    [[!!+6S!T- U-*
.10j 	-A	A& %0<H*,$*lC*,$-F*,$/7C*,$*g>*,$-A*,-K [[1;?[[W&BCJ D @J *5M/1)/4H/1)2dK/1)4N/1)/5I/1)2eL/12 [[13CD= E=<,  $8.0C"A<KMC )7K2<=C +?19G$%C+88*4" &1LI%+|D %.,G)+%0GDgN%+w?K%.'BGLNL [[/>< ?<H [[!!+6S!T[[Xg'>?)K @ U)KV2 [[!!+6S!T9 U9 "1aAq!Q:* "1aAq!Q?)+ 2661%1aAq!Q:/+ 2661%1aAq!Q?* *1aAq!Q?/+,K  [[>LD MD ?BC@CE:=?AJ [[ 67AC<C<: [[!!+6S!T) U)  #sY8MN#sV5JK#s[)Dqc9.CDqc6+@Aqc;	:q6Aq69.BCq6Aq66+?@q6Aq6;9;J [[BJOH PH:: [[],LM	= N	=	-A	NA DT$	SU$	U+Cr=   r   c                       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 )NrE   r   r?   r   r   r   )ALL_INTEGER	ALL_FLOATdtypesrM   rN   	arguments	functoolspartialr   somersdpartialfuncr   )r5   idxinput_arrays      r;   setup_methodzTestSomersD.setup_method?  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 )Nr^  r-   )r  r   r\   r   r^   )r5   r   r`   s      r;   pythranfunczTestSomersD.pythranfuncN  sH    d%t}}'>'>UK

DMM$8$8uEr=   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         rF   r   )rF   r     #   rf   )r?   rA   r@   rF      r^  r-   )r   r  get_optional_argsr   r\   r^   )r5   r  r  optional_argsr  s        r;   test_pythranfunc_keywordsz%TestSomersD.test_pythranfunc_keywordsS  sm    #%8:JK}}U#..u}}=}}U4m4UCT[[u=r=   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)rC   r@   r?   rA   rD   rB   rF   rG   )rC   r@   rD   rA   r?   rG   rF   rB   r'  r   r^  r-   r?   )	r   rC   r@   r?   rA   rD   rB   rF   rG   )	rC   r@   r   rD   rA   r?   rG   rF   rB   )rC   r@   r?   rA   rD   rB   rF   )rC   r@   rD   rA   r?   rF   rB   )g+$I$I¿g=/3n+?rE   r   r   )
r   r@   r?   rA   rB   rD   rC   rF   rG   rg   )gs'}'?r   rh   )g      r   )
rg   rF   rG   rD   rC   rA   rB   r@   r?   r   )g}'}'r   )rf   r@   r?   rf   r@   )r?   rB   rF   r?   r   )      g.ʂ?)r@   r@   r@   )r@   r   r@   rD        4@)r   r  r   r\   r^   rM   rN   arrayr]   r   r   )r5   r7   r8   r   r`   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6r=   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)r?   r?   r?   r@   r@   r@   r@   r@   rA   rA   r?   r@   r@   r@   r@   r@   r@   r@   rA   rA   rA   rA   rA   rA   )r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   gCE]t?g^_?gO((Ƿ?r^  r-   r/   )rA   r@   r@   rA   )r   r  r   r\   r^   r   r  r2  )r5   r7   r8   d_crd_rcr:   r`   s          r;   test_asymmetryzTestSomersD.test_asymmetry  s    11 ! mmAq!t%8

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

AE2SYY__f-r=   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 )NrG   r@   rD   rC   rA   rB   r?   gHHHHHH?r  r   U   rK   )gM&w?r   gtE]t)rM   r  Tr   r   r  r\   )r5   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#>r=   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   rB   rD   r   r:   random_stater@   r?   ri   gayr^  r-   gPj$?)rM   prodrk   RandomStater   multinomialrvsr   reshaper  insertr6  r   r\   r^   )r5   Nr2  re   rn   r  r`   s2r  s3rB  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0r=   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  r@   z:All elements of the contingency table must be non-negativer   r}   z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.r?   )rA   rA   r  )rM   r  rk   rl   r   r  r  r   r  r   r   r  r6  )
r5   r  r2  re   rn   r  s5r   s6s7s
             r;   test_invalid_contingency_tablesz+TestSomersD.test_invalid_contingency_tables  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   rh   g @)rA   r@   r?   r   r  )rM   rm   r   r  r   r\   r^   )r5   r7   r  r8   y2r`   r  s          r;   test_only_ranks_matterz"TestSomersD.test_only_ranks_matter@  sr    #rvvwmmAq!}}R$S]]DNN3SZZ-r=   c                     t        j                  d      }t        j                  d      }t        j                  ||      }t	        |j
                  t        j                  d             y )NrE   )rM   rN   r   r  r   r  eyer5   r7   r8   r`   s       r;   test_contingency_table_returnz)TestSomersD.test_contingency_table_returnK  sB    IIbMIIbMmmAq!SYYr
+r=   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  )rC   rD   rF   rG   rF   r   r   r   r   r?   r@   r   z`alternative` must be...r   	ekki-ekki)
r   r  r\   r   r   r^   reverser1   r   r   )r5   r  r  r   r`   s        r;   test_somersd_alternativez$TestSomersD.test_somersd_alternativeR  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 )	NrE   r?   rh   r   r   r   r   r   )rM   rN   flipr   r  r\   r^   )r5   r  r  r  expected_statisticr`   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???r=   c                     ddg}d}t         j                  j                  d      }|j                  ||      }|j                  ||      }d}t	        j
                  ||      j                  }t        ||d       y )Nr?   r@   @B l   .E5 g 0uD?r^  r-   )rM   rk   rl   choicer   r  r\   r   )r5   classes	n_samplesrn   r7   r8   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;r=   N)ru   rv   rw   r  r  r  r  r  r  r  r  r  r  r  r1   rx   ry   r  r  rz   r=   r;   r  r  >  sm    7F
	>m7^.2?,1@"H	.,';R [[3]C@ D@0<r=   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  rE   '   )gXyq@g{2s&Q7?r   r@   r   rC   )gllgEA]0K?rF   rG   )*)1%g_  ?r?   )g_c1?g= ?      )g5PyQgQ@2?   r  )ggJ"?)g_c1gwݝل?r   rB   )g7@g      ?rA   )g~t,?3O?rD   )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   r\   r^   r   r5   input_sampler   r`   r\   r^   s         r;   test_precisezTestBarnardExact.test_precise  s.    2 L)MM3::6	F+X6r=   )g7\@gA2?)gXS;gh?)g>!Ɏg6  ?)gSy@?g^F?)g-gXI#?)gaЍgo?)gb]?gFugH	?)g6ҭ@g      ?)gi(	r  )gNXzr  c                 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6r=   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 0r   r?   r@   rA   rB   r   r   ,The input `table` must be of shape \(2, 2\).rD   *All values in `table` must be nonnegative.rh   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)r   r   r   rM   rN   r  r5   	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   r?   r   r\   r^   r   r  s         r;   test_edge_casesz TestBarnardExact.test_edge_cases  s;     L)MM3::6	VXa[)Y,r=   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,r=   )r  gE\/??   ,  )ggQ5r      rL   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   Nrh   r   Hz>r-   )rM   r  r   r\   r^   r   )	r5   r  r   r   expected_statless_pvalue_expectr`   r\   r^   s	            r;   test_less_greaterz"TestBarnardExact.test_less_greater  sp    , -5)))#88L1!TrT':L*NMLkBMM3::6	-1C!D4	
r=   N)ru   rv   rw   __doc__r1   rx   ry   r  r  r  r  rM   r]   r  r  rz   r=   r;   r  r    su   B[[2hR!#CDAhq	"$EF!fq!f@A!fr2h!AB"gBx "CD"gBx "CD1gAw!BC!fq!f?@!fq!f@A!fq!f@A!fq!f@A	
 7! 7 [[2hR!#CDAhq	"$EF!fq!f@A!fr2h!AB"gBx "CD"gBx "CD1gAw!BC!fq!f?@!fq!f@A!fq!f@A!fq!f@A	
 7! 7;4 [[!fq!fx(	
-- [[!fq"gbff.!fr1gbff.	
-- [[!fq!f@A#ha!#:;2hq	"$;<	
 [[]Y,?@
 A
r=   r  c                      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  r@   rF   rG   )<vB\?g/??rC   r?   rE   )gM?gA>?r  r  r  )_VѶ?g֭?)u %?gc'?r   rB   r?   r?   rA   )r   g      ?rf   )+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   r-   Nr   r\   r^   r   ATOLr  s         r;   	test_lesszTestBoschlooExact.test_lessE  s6    2 \v>MM3::6	F+XDIIFr=   r  r  r  )k\2?g0,%?)gKv?gN3?)r  g'&5?r  )gw@_?g7?)gi{?gɑ)z?)օa?g1|?rD   )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   r-   Nr  r  s         r;   test_greaterzTestBoschlooExact.test_greaterb  s6    6 \yAMM3::6	F+XDIIFr=   )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   r-   Nr  r  s         r;   test_two_sidedz TestBoschlooExact.test_two_sided  s8    0 \{bIMM3::6	F+XDIIFr=   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  r   r?   r@   rA   rB   r   r  r  rD   r  rh   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r  )r   r   r   rM   rN   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   r\   r^   r   r  s         r;   r  z&TestBoschlooExact.test_row_or_col_zero  s;     \*MM3::6	VXa[)Y,r=   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 )
Nr?   r   rf   r   r   r   r@   r   r   )r   r^   r[  )r5   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yr=   r   )r   r   c                     ddgddgg}t        ||      j                  }t        j                  ||      d   }t	        ||       y )Nr@   rF   rG   r   r?   )r   r\   r   fisher_exactr   )r5   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0r=   N)ru   rv   rw   r  r  r1   rx   ry   r  r  r  r  rM   r]   r  r  r$  rz   r=   r;   r  r  @  s   CD[[!fq!f89!fr2h!78"gBx ":;1gAw!89!fq!fv&!fq!f~.!fq!f89"g1v 892hR!#9:
	
GG [[2hR!#?@!fq!f56!fr2h!89"gBx "89"gBx "78!fq!f89!fq!fv&!fq!fv&!fq!f56"g1v 672hR!#9:	
 G! G [[2hR!#?@!fq!f78!fr2h!78"gBx "89!fq!f78!fq!f}-!fq!f78"g1v 89		
GG <4 [[!fq"g 01!fr1g 01	
-- [[],?@1 A1r=   r  c                      e Zd Zej                  j                  dg  ej                  d      f ej                  d      dgfg      ej                  j                  dd      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   rC   r?   r   zlazy -> no axis_nan_policyr   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)r*   N)r4   r   ).0argr6   s     r;   	<genexpr>z5TestCvm_2samp.test_too_small_input.<locals>.<genexpr>  s$     L

3&6r&:
;Ls   &)rZ   )	r   r   r   r   r   r\   r4   r]   r^   )r5   r   r6   r`   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)NrC   z/method must be either auto, exact or asymptoticr   xyz)rN   r1   r   r   r   )r5   r6   r8   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)r@   rA   rB   rF   rD   )r   r   rf   r  )r   rM   r  r   r\   r^   )r5   r7   r8   r1r2s        r;   test_list_inputzTestCvm_2samp.test_list_input  sX    !!Q'!"((1+rxx{;bllBII.ryy0IJr=   r!   r"   c                    t        |      r)|j                  dk  r|dk(  rt        j                  d       |t	        |      nt        ||      }|j                  g d|      }|j                  g d|      }t        ||      }t        |j                  |j                  d|      d	       t        |j                  |j                  d
|      d	       y )Nr&   r#   r'   )	gffffff@g @r,   gffffff!@皙"@g#@g333333$@g333333%@gffffff&@r*   )g@g@g@      @333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?rH   r-   g
ףp=
?r}   )r   r0   r1   r2   r   r3   r4   r   r   r\   r^   )r5   r!   r6   r7   r8   rs         r;   test_example_conoverz"TestCvm_2samp.test_example_conover  s     B<BNNU2u	7IKK;<(- $72u;MJJGuJUJJ BIN  P A&RZZUZ%C$O"**S*">TJr=   zstatistic, m, n, pval))i  rC   rD   gcj`?)ii  rF   rF   gtE]t?)i@  rB   rD   g88?)i  rD   rF   gXwS?c                 2    t        t        |||      |       y r   )r   r   )r5   r\   r  r   pvals        r;   test_exact_pvaluezTestCvm_2samp.test_exact_pvalue   s     	*9a;TBr=   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  )re   r  i r   r?   r   )	rM   rk   rl   r
   normr  r4   r   r^   )r5   r6   rn   r7   r8   r8  s         r;   test_large_samplezTestCvm_2samp.test_large_sample  s     ii##D)""c"B""S"Azz!}bjjm1 A&188a AcE*188ar=   c                 ~   t         j                  j                  d      }|j                  |j                  d            }|j                  |j                  d            }t	        ||d      }t	        ||d      }t        |j                  |j                         t        |j                  |j                  d       y )	Nr   rF   rG   r   r   r   r}   r-   )	rM   rk   r  r4   r   r   r\   r   r^   )r5   r6   rn   r7   r8   r1  r2  s          r;   test_exact_vs_asymptoticz&TestCvm_2samp.test_exact_vs_asymptotic  s    ii##A&JJszz!}%JJszz!}%!!Qw7!!Q|<bll3		29948r=   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   )rN   r4   r   r   r^   )r5   r6   r7   r8   r1  r2  s         r;   test_method_autozTestCvm_2samp.test_method_auto!  s    IIcNJJ'(!!Qw7!!Qv6		299-IIcN!!Q|<!!Qv6		299-r=   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   rB   )rN   r   r   r\   r4   r^   )r5   r6   r7   r`   s       r;   test_same_inputzTestCvm_2samp.test_same_input-  s     IIbM"1a(rzz"~6

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

BJJrN3r=   N)ru   rv   rw   r1   rx   ry   rM   rN   r   r,  r   r3  r9  r<  xslowr?  rA  rC  rE  rz   r=   r;   r&  r&    s    [[Vr9299Q<&8'0ryy|aS&9&; <[[!!+6R!S< T<<.K [[W&BCK DK [[456
C6
C [[
  
 9
.4r=   r&  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)rE       7@ffffff:@皙;@fffff=@)ffffff<@皙A@     =@皙@@皙>@)g:@gL<@gL8@g333333:@g;@)rE  rI  gHzG:@rJ  rK  rL  rQ  rQ  )rE  rI  rJ  )
rM  rN  rO  rP  rQ  rM  rN  rO  rP  rQ  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,atolr/   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;
         -  rC   Nr*   )rD   rD   r?   r-   r~   rM   r4   replacesplitfloatr  r   	tukey_hsdconfidence_intervalintr   lowr\   highr^   )r5   datares_expect_strr.   
res_expect	res_tukeyconfro   jlr  hsigs                r;   test_compare_saszTestTukeyHSD.test_compare_sasf  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r=   z
        1	2	-8.2491590248597	-4.6	-0.9508409751403	0.0144483269098
        1	3	-3.9091590248597	-0.26	3.3891590248597	0.9803107240900
        2	3	0.6908409751403	4.34	7.9891590248597	0.0203311368795
        z
        1	2	-7.02207069748501	-3.645	-0.26792930251500 0.03371498443080
        1	3	-2.68207069748500	0.695	4.07207069748500 0.85572267328807
        2	3	0.59347644287720	4.34	8.08652355712281 0.02259047020620
        rG  r  rR  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");
        r*   rA   rD   r?   r-   N)rM   r4   r[  r\  r  r   r]  r^  r_  r   r`  r\   ra  r^   )r5   rb  rc  r.   rd  re  rf  ro   rg  rh  r  ri  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r=   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
        rW  rX  rC   Nr*   rm  )   rK   6   r  F   4   3   rp  C   r   r        rv     )   r  ,   )r  r  rv  r  rf   r  r  rK   $   *   rp  rw  r  r  rL   r  r  rv  )r{  r  r  r  rE   r  rL   r  rp  r  r  r  r  r   r  r  r  rL   r?   r  r-   rS  h㈵>rY  )r5   str_resrd  rb  re  rf  ro   rg  r  rh  ri  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r=   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 @r7  g333333@gffffff"@r6  )g       @g      %@g333333 @r  r5  )r  gffffff@gffffff@gffffff@g@)r   r   r   g      )g(\?r   gq=
ףpgp=
ף?)gGz?r   r   g
ףp=
?)r   r   r   r   )r   r   r   gzG?)gzG@r   g      ?g=
ףp=@)g=
ףp=@r   r   g@)r?   r   )r@   r   )r   rA   r*  r  r}   r-   N)r   r]  r^  rM   r4   r   r`  ra  )r5   group1group2group3group4r`   rf  lowerupperro   rg  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r=   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 )rA   r   r   r   r   r?   )rM   rk   rl   r   r]  r^  r   r`  ra  r  diagonalr\   r^   )r5   rn   rb  r`   rf  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0r=   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.r   r   r@   )rD   rF   rA   )r   r   r   r]  rM   rm   r-  s    r;   test_no_infzTestTukeyHSD.test_no_inf  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-dimensionalr   r?   r@   rA   rC   )rC      rD   r   r   r   r]  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 oner   r@   rC   )rB   rC   rD   r  r-  s    r;   test_no_emptyzTestTukeyHSD.test_no_empty  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'r   r   r@   rC   rD   rF   False)	equal_var)r   	TypeErrorr   r]  )r5   r/  s     r;   test_equal_var_input_validationz,TestTukeyHSD.test_equal_var_input_validation  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.r   r  rF   rA   r  )r5   r  s     r;   test_not_enough_treatmentsz'TestTukeyHSD.test_not_enough_treatments   s5    :-HI 	5OOzlU24	5 	5 	5s   4=cl)r  r   r?   r@   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 1r   r  rA   rB   rg   )r   r   r   r]  r^  )r5   r  r8  s      r;   test_conf_level_invalidz$TestTukeyHSD.test_conf_level_invalid%  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 )Nr@   r  r  )r   r]  data_diff_size	ttest_indr   r^   )r5   re  	res_ttests      r;   test_2_args_ttestzTestTukeyHSD.test_2_args_ttest+  sn    OOT%8%8!%<=	OOT%8%8!%<=		(()*:*:4*@A	(()*:*:4*@Ar=   N)ru   rv   rw   data_same_sizer  extreme_sizesas_same_sizesas_diff_sizesas_extremer1   rx   ry   rk  matlab_sm_sizmatlab_diff_szrn  r  r  r  r  r  r  r  r  r  r  rz   r=   r;   rH  rH  ;  s   4446N H446N '24L
MMK [[7-}dC-}dC+[%@ "E  F#GF#GJMN [[7-}eD-~tDF"5"7"9  :
B:
B*'BRE41&?B3J
 [[Wf-5 .5 [[T>2& 3&
Br=   rH  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_strrR  rS  rT  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).
        rW  rX  rF   Nr*   rh   rD   r  Fg:0yE>r-   rS  r}  )rM   r4   rZ  r[  r\  r  r   r]  r^  r_  r   r\   r^   r`  ra  )r5   rb  rc  rd  	res_gamesrf  ro   rg  r  rh  ri  r:   s               r;   test_compare_spssz!TestGamesHowell.test_compare_spssO  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:	;r=   z
                  q value             Pr(>|q|)
    1 - 0 == 0   -1.5467805948856344  0.55873362851759
    2 - 0 == 0    0.4726721776628535  0.94114775035993
    2 - 1 == 0    1.246837541297872   0.68298393799782
    aw  
                 q value             Pr(>|q|)
    1 - 0 == 0  -1.0589317485313876  0.87275427357438
    2 - 0 == 0  -0.5716222106144833  0.97526284087419
    3 - 0 == 0  -2.6209678382077000  0.42625067714691
    2 - 1 == 0   0.8971899898179028  0.91489506061850
    3 - 1 == 0   0.4579447210555352  0.98614322544695
    3 - 2 == 0  -2.198800177874794   0.47553444364614
    c                 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)
        rW  rX  z == rA   Nr*   rh   rC   r  Fr  r-   )rM   r4   rZ  r[  r\  r  r   r]  r_  r   r^   )	r5   rb  rc  rd  r  rg  ro   _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r=   N)ru   rv   rw   r  r  spss_same_sizespss_diff_sizer1   rx   rF  ry   r  r_same_sizer_diff_sizer  rz   r=   r;   r  r  3  s    ***,N &,/.0N
NN [[[[3,n=+^<>!4!6!8  9
!;9 !;FKK [[3,k:+[9;!4!6!8  9
B9
Br=   r  c                       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   rA   r   gea?)r@   r   rD   r   g	c?c                 d    t        j                  ||||      }t        |j                  |d       y r   r   poisson_means_testr   r^   )r5   c1n1c2n2p_expectr`   s          r;   test_paper_examplesz(TestPoissonMeansTest.test_paper_examples  s*     &&r2r26

H48r=   z c1, n1, c2, n2, p_expect, alt, d)r  rE   r  rE   g{}?r   r   )rE   rE   rE   rE   goPF?r   r   )2   r  r?   r?   gae?r   r~   )rA   r   r  r  g/V-=?r   r   )rA   rf   rB   r  g")?r   r   )rB   r  rA   r   g_'Qm~?r   r   )rB   r  rA   rE   g|?r   r   )r?   r?   r  r  g0ݷ?r   r   c                 l    t        j                  ||||||      }t        |j                  |dd       y )N)r   diffg>r1  r.   rU  r  )	r5   r  r  r  r  r  altdr`   s	            r;   test_fortran_authorsz)TestPoissonMeansTest.test_fortran_authors  s0    $ &&r2r23QO

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

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

A&r=   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.r   r   z1`k1` and `k2` must be greater than or equal to 0.rh   z%`n1` and `n2` must be greater than 0.z(diff must be greater than or equal to 0.)r  zAlternative must be one of ...r?   r@   errorr   )r   r  r   r  r   )r5   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)ru   rv   rw   r1   rx   ry   r  r  r  r  r   rz   r=   r;   r  r    s    [[7  : 
9
9 [[?
 	=<=>9; 	66B "E#"E''!Fr=   r  c                       e Zd Zd Zd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Z	d Z
d	 Zy
)TestBWSTestc                 l   t         j                  j                  d      }|j                  d      \  }}d}t        j                  t
        |      5  t        j                  ||g||g       d d d        d}t        j                  t
        |      5  t        j                  t         j                  g|       d d d        d}t        j                  t
        |      5  t        j                  |g        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{ r@   rF   rd   z,`x` and `y` must be exactly one-dimensional.r   z"`x` and `y` must not contain NaNs.z$`x` and `y` must be of nonzero size.zalternative` must be one of...r  r   z!method` must be an instance of...r|  r   )	rM   rk   rl   r1   r   r   r   bws_testr]   )r5   rn   r7   r8   r   s        r;   test_bws_input_validationz%TestBWSTest.test_bws_input_validation  sX   ii##$78zzvz&1@]]:W5 	+NNAq6Aq6*	+ 7]]:W5 	(NNBFF8Q'	( 9]]:W5 	"NN1b!	" 3]]:W5 	:NN1a[9	: 6]]:W5 	,NN1a+	, 	,!	+ 	+	( 	(	" 	"	: 	:	, 	,s<   E9&FFFF*9FFFF'*F3c                     g d}g d}t        j                  ||d      }t        |j                  dd       t	        |j
                  d       y )	N)r?   r@   rA   rB   rD   rF   rG   )rC   rg   rE   rc   rf   r   r  r   r   gI+@rH   r-   gf$/g?)r   r  r   r\   r   r^   r  s       r;    test_against_published_referencez,TestBWSTest.test_against_published_reference  s>     "&nnQ{;u48SZZ)r=   )r   r\   r^   ))r   g
-?g4B/?)r   
-g0&v?)r   r  g(?c                     t         j                  j                  d      }|j                  d      \  }}t        j                  |||      }t        |j                  |d       t        |j                  |dd	       y )
Nr  r  rd   r   vIh%<=rT  r}   r   r  rM   rk   rl   r   r  r   r\   r^   r5   r   r\   r^   rn   r7   r8   r`   s           r;   test_against_RzTestBWSTest.test_against_R&  sa     ii##$78zzvz&1nnQ{;yu=

FDAr=   ))r   gD5H?gdԕ?)r   `ч?gȲךX?)r   r  g4)?c                    t         j                  j                  d      }|j                  d      }|j                  d      }t        j                  |||      }t        |j                  |d       t        |j                  |dd	
       y )Nl   .sZ rg   rd   rG   r   r  rT  r}   r   r  r  r  s           r;   test_against_R_imbalancedz%TestBWSTest.test_against_R_imbalanced7  sm     ii##$78JJAJJJAJnnQ{;yu=

FDAr=   c                    t         j                  j                  d      }|j                  d      \  }}t         j                  j                  d      }t        j                  d|      }t        j
                  |||      }t        |j                        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
                  |||      }t        j                  |j                  |j                        rJ y )N   /HN( )r@   rE   rd   rE   )n_resamplesrn   r   l   VC	A )
rM   rk   rl   r   r_  r  r  null_distributionr   allclose)r5   rn   r7   r8   r   r  r  rB  s           r;   test_methodzTestBWSTest.test_methodI  s(   ii##$78zzwz'1ii##$78((RSA~~a624))*b000ii##$78((RSA~~a62..0F0FGii##$78((RSA~~a62;;t55t7M7MNNNNr=   c                    t         j                  j                  d      }|j                  d      }|dz
  }t        j                  ||d      }|j
                  dkD  sJ t        |j                  dt        |j                        z         t        j                  ||d      }|j
                  dkD  sJ t        |j                  d       t        j                  ||d      }|j
                  dk  sJ t        |j                  dt        |j                        z         t        j                  ||d      }|j
                  dk  sJ t        |j                  d       y )	Nr  rC   rd   r?   r   r   r   r   )
rM   rk   rl   r   r  r\   r   r^   r  r  )r5   rn   r7   r8   r`   s        r;   test_directionszTestBWSTest.test_directions`  s   ii##$78JJAJEnnQy9}}q   SZZS)>)>%?!?@nnQv6}}q   SZZ#nnQv6}}q   SZZS)>)>%?!?@nnQy9}}q   SZZ#r=   N)ru   rv   rw   r  r  r1   rx   ry   r  r  r  r  rz   r=   r;   r  r     sw    ,4* [[CNOB	OB [[CNOB	OBO.$r=   r  )8	itertoolsr   numpyrM   r  r1   numpy.testingr   r   r   r   r   scipyr   r	   scipy.statsr
   scipy.stats._hypotestsr   r   r   r   r   r   r   scipy.stats._mannwhitneyur   r   r   scipy._lib._testutilsr   
scipy._libr   r   scipy._lib._array_apir   r   r   r   scipy._lib._array_api_no_0dr   r   scipy.stats._axis_nan_policyr   r   r    r|   r   r  r  r  r&  rH  r  r  r  rz   r=   r;   <module>r     sJ       @ @ *   %4 4 4 E D 2 -0 0 H R '(?2 ?2 )?2D 5''(\O \O )\O~ 5%%&	C 	C '	CDl<" l<^P
 P
fV1 V1r '(^4 ^4 )^4BuB uBpsB sBrQF QFht$ t$r=   