
    e!hj8                       d dl mZ d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZ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#  G d d      Z$ G d d      Z% G d d      Z& G d de       Z' G d d      Z( G d d      Z) G d d      Z* G d d      Z+ G d d      Z, G d d      Z-y)     )productN)assert_assert_equalassert_allcloseassert_almost_equal)raises)distributions)epps_singleton_2sampcramervonmises_cdf_cvmcramervonmises_2samp_pval_cvm_2samp_exactbarnard_exactboschloo_exact)mannwhitneyu
_mwu_state_MWU   )check_named_results)_TestPythranFunc)SmallSampleWarningtoo_small_1d_not_omitc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestEppsSingletonc                     t        j                  g d      }t        j                  g d      }t        ||      \  }}t        |dd       t        |dd       y )N)
gffffffֿgffffff@gGz?\(\?ffffff?gQ@gq=
ףp?gGzgGz׿gp=
#(@)
gffffffg333333ÿgףp=
@g      
@gGz@g)\(@g      @g(\@g(\ @333333!@gHzG.@r   decimalgQ,r?   )nparrayr
   r   selfxywps        h/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/stats/tests/test_hypotests.pytest_statistic_1z"TestEppsSingleton.test_statistic_1   sR    
 HH 7 8HH 4 5#Aq)1Aua0Aw2    c                     t        j                  d      }t        j                  d      }t        ||      \  }}t        |dd       t	        |dd       y )	N)r   r      r.   r.   r.   r!   r!   r!   r!         r0   r0   r0      
   r2   r2   r2   )r2   r/   r   r0   r2   r2   r   r0   r1      r2   r!   r   r3   r      r   r0   r4   r2   g!@MbP?atolg&J?r!   r   )r"   r#   r
   r   r   r$   s        r*   test_statistic_2z"TestEppsSingleton.test_statistic_2%   sP    HH " #HH   !#Aq)15u-Aw2r,   c                    t         j                  j                  d       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        )r"   randomseedaranger
   listtupler   )	r%   r&   r'   w1p1w2p2w3p3s	            r*   test_epps_singleton_array_likez0TestEppsSingleton.test_epps_singleton_array_like/   s    
		tyy}biim1%d1gtAw7B%eAha9B%a+BbBbBr,   c                 B   dt        j                  d      }}t        j                  t        t
              5  t        ||      }t        |j                  t         j                         t        |j                  t         j                         d d d        y # 1 sw Y   y xY w)Nr   r.   r!   r/   r2   match)r"   r?   pytestwarnsr   r   r
   r   	statisticnanpvaluer%   r&   r'   ress       r*   test_epps_singleton_sizez*TestEppsSingleton.test_epps_singleton_size:   sh    RYYr]1\\,4IJ 	-&q!,C/RVV,	- 	- 	-s   ABBc                     dddddt         j                  ft        j                  d      }}t        t        t
        ||       y )Nr   r.   r!   r/   r0   r2   )r"   infr?   assert_raises
ValueErrorr
   r%   r&   r'   s      r*   test_epps_singleton_nonfinitez/TestEppsSingleton.test_epps_singleton_nonfiniteB   s3    1aArvv&		"1j"61=r,   c                     t        j                  d      t        j                  d      }}t        ||      }d}t        ||       y )N   r;   )rO   rQ   )r"   r?   r
   r   )r%   r&   r'   rS   
attributess        r*   
test_nameszTestEppsSingleton.test_namesG   s6    yy}biim1"1a(,
C,r,   N)	__name__
__module____qualname__r+   r8   rH   rT   rZ   r^    r,   r*   r   r      s     33	 ->
-r,   r   c                       e 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gg      d        Zd Zd Zy)TestCvmc                 <    t        t        g dd      g dd       y )N)gy;i?g#^?gE>?gD
)?r/   {Gz?皙?      ?g+?-C6?r6   r   r   r%   s    r*   
test_cdf_4zTestCvm.test_cdf_4R   s    =qA(	r,   c                 <    t        t        g dd      g dd       y )N)g8*5?g@߾?gHm?g%1 ?r2   )rg   rh   ri   g333333?rj   r6   rk   rl   s    r*   test_cdf_10zTestCvm.test_cdf_10X   s    =rB(	r,   c                 <    t        t        g dd      g dd       y )N)g}tg?g`?gI5o?gׁsF?  rf   rj   r6   rk   rl   s    r*   test_cdf_1000zTestCvm.test_cdf_1000^   s    =tD(	r,   c                 :    t        t        g d      g dd       y )N)a+e?+?&pn?+MJA?rf   rj   r6   rk   rl   s    r*   test_cdf_infzTestCvm.test_cdf_infd   s    =>(	r,   c                 l    t        t        ddgd      ddg       t        t        ddgd      ddg       y )	NgX(~$?gUUUUU5f@i  r   r   gaah?g"@   )r   r   rl   s    r*   test_cdf_supportzTestCvm.test_cdf_supportj   s6    Xz5137!Q@X
;R@1a&Ir,   c                 N    t        t        g dd      t        g d      d       y )N)rt   ru   rv   rw   d   '  rj   r6   rk   rl   s    r*   test_cdf_large_nzTestCvm.test_cdf_large_no   s!    BEJBC	r,   c                     t        dt        dd      cxk  xr dk  nc        t        dt        d      cxk  xr
 dk         y c        y )NgwJ?gt@rq         ?)r   r   rl   s    r*   test_large_xzTestCvm.test_large_xv   s9     	(5$/5#56(5//C/0/0r,   c                     d}t        t        j                  |      dz  d      }t        t	        |j
                  |      dkD         t        |j                  d       y )N   皙?normr   r   )r   r"   onesr   r   rO   r   rQ   )r%   nrS   s      r*   
test_low_pzTestCvm.test_low_p   sG     RWWQZ^V4*S01SZZ#r,   r&   rb         ?c                    t        j                  t        t              5  t	        |d      }t        |j                  t        j                         t        |j                  t        j                         d d d        y # 1 sw Y   y xY w)NrK   r   )
rM   rN   r   r   r   r   rO   r"   rP   rQ   r%   r&   rS   s      r*   test_invalid_inputzTestCvm.test_invalid_input   sW    \\,4IJ 	- F+C/RVV,	- 	- 	-s   AA>>Bc                 z   t        g dd      }t        |j                  dd       t        |j                  dd       t        g ddd      }t        |j                  dd       t        |j                  d	d       t        g d
d      }t        |j                  dd       t        |j                  dd       y )N)g333333r.   r   g?r/   皙?333333?r   gZ	%q?ư>r6   gEж?)r!   r   g!O!W*?gz"W`?)	r   r.   r0   ffffff?gQ?      ?      @exponge.?gnz\(r?)r   r   rO   rQ   )r%   rS   s     r*   test_values_RzTestCvm.test_values_R   s     ;VDxd;

ID9 ;VXNyt<

Kd; CWMyt<

Kd;r,   c                    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 )Nr0   )r   ffffff?r   beta)
r"   r?   r   r	   r   cdfr   rO   rQ   r   )r%   r&   argsr1r2s        r*   test_callable_cdfzTestCvm.test_callable_cdf   s    ))A,
4A}22667Aw'bllBII.ryy0IJA}1155t<Avt,bllBII.ryy0IJr,   N)r_   r`   ra   rm   ro   rr   rx   r{   r   r   r   rM   markparametrizer   r   r   rb   r,   r*   rd   rd   N   sa    J
1$ [[S2u+.- /-<$Kr,   rd   c                      e Zd Zej                  j                  ddg idg ig g dg      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      d        Zd
dddgddddgddddgd
dddgddddgdddd ggZej                  j                  de      d!        Zd" Zg d#g d$g d%d&Zg d'g d(g d)g d*d+Zg d,g d-g d.g d/g d0d1Zg d2g d3g d4g d5g d6g d7d8Zd9 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                  d?e      d@        ZdA Zej                  j                  dBddg      dC        ZdD Zg d+dEdFdGdHej:                  dEdIdJdKdKdLgdMdNfg d+dEdFdGdHej:                  ej:                  dIdJdKdKdLgdOdPfdJdIej:                  dKgdEdFdGdHej:                  dEdIdJdKdKdLgdQdRfdJdIej:                  dKgdEdFdGdHej:                  ej:                  dIdJdKdKdLgdSdTfdJej:                  ej:                  dKgdEdFdGdHej:                  ej:                  dIdJdKdKdLgdUdVfgZej                  j                  dWe      dX        Zg dYg dZg d[g d\g d]g d^g d_g d`g dag	Z ej                  j                  dbe       dc        Z!dd Z"g d&dedfgddggg d&dedfgddggg d&dedfgd
dhgg d&dIgddigg d&dIgddigg d&dIgd
djgdJdIgdJdIgddkgdJdIgdJdIgddkgdJdIgdJdIgd
dlgg	Z#ej                  j                  g dme#      dn        Z$do Z%ej                  j                  dpg dq      dr        Z&ys)tTestMannWhitneyUkwargs_updater&   r'   r&   r'   c                    t        j                  ddg      }t        j                  ddg      }t        ||      }|j                  |       t	        j
                  t        t              5  t        di |}t        |j                  t         j                         t        |j                  t         j                         d d d        y # 1 sw Y   y xY w)Nr   r.   r!   r/   r   rK   rb   )r"   r#   dictupdaterM   rN   r   r   r   r   rO   rP   rQ   )r%   r   r&   r'   kwargsrS   s         r*   
test_emptyzTestMannWhitneyU.test_empty   s     HHaVHHaVQm$\\,4IJ 	-((C/RVV,	- 	- 	-s   ,AC		Cc                     t        j                  ddg      }t        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.   r!   r/   z`use_continuity` must be onerK   ekki)use_continuityz`alternative` must be one ofalternativez`axis` must be an integerr   axisz`method` must be one ofmethod)r"   r#   rW   rX   r   rY   s      r*   test_input_validationz&TestMannWhitneyU.test_input_validation   s    HHaVHHaV:-KL 	6Af5	6:-KL 	3A62	3:-HI 	)AC(	):-FG 	.Af-	. 	.	6 	6	3 	3	) 	)	. 	.s0    C(CC(8C4CC%(C14C=c                 "   t         j                  j                  d       d}t         j                  j                  |dz
        }t         j                  j                  |dz
        }t	        ||      }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ |j
                  |j
                  k7  sJ t         j                  j                  |dz
        }t         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 t         j                  j                  |dz         }t         j                  j                  |dz         }t	        ||      }t	        ||d      }t	        ||d      }|j
                  |j
                  k7  sJ |j
                  |j
                  k(  sJ t         j                  j                  |dz
        }t         j                  j                  |dz
        }|d   |d<   t	        ||      }t	        ||d      }t	        ||d      }|j
                  |j
                  k7  sJ |j
                  |j
                  k(  sJ y )Nr   r4   
asymptoticr   exactr!   )r"   r=   r>   randr   rQ   )r%   r   r&   r'   autor   r   s          r*   	test_autozTestMannWhitneyU.test_auto   s    			q IINN1Q3IINN1Q3Aq!!!Q|<
Q'2{{ell***{{j///// IINN1Q3IINN1Q3Aq!!!Q|<
Q'2{{ell***{{j///// Aq!!!Q|<
Q'2{{ell***{{j///// IINN1Q3IINN1Q3Aq!!!Q|<
Q'2{{ell***{{j///// IINN1Q3IINN1Q3t!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   )   
+?less)r   
+?greater)r   缌%c?r   )r   g9:?)r   g9:?)r   g*::?)kwdsexpectedc                 ^    t        | j                  | j                  fi |}t        ||       y N)r   r&   r'   r   r%   r   r   rS   s       r*   
test_basiczTestMannWhitneyU.test_basic   s%    4664662T2X&r,   T)r   r   )   r   )r   r   )r   r   F)r   gl,KNh?)r   giژ?)r   gl,KNh?c                 b    t        | j                  | j                  fddi|}t        ||       y )Nr   r   )r   r'   r&   r   r   s       r*   test_continuityz TestMannWhitneyU.test_continuity2  s,     466466G,G$GX&r,   c                 ^   g d}t        j                  g d      }t        j                  g d      dz  }t        j                  g d      dz  }|dz
  ||z
  ||z
  |||z   ||z   |dz   g}t        ||dd      }g d	}g d
}t        |j                  |       t        |j                  |       y )NrJ   r   r.   r!   r/   r0   )r   r   r   r   r   rg   )r   r   r   r   r   r   )r   r   )r2   	         !@r4   r   r3   r1   )r   g]U?g[?gi\?gZX<_?gx.?g 
?)r"   r#   r   r   rO   r   rQ   )	r%   r&   y0dydy2r'   rS   
U_expected
p_expecteds	            r*   test_tie_correctz!TestMannWhitneyU.test_tie_correct@  s     XXo&XXo&t+hh',WbeRVRCB4@1ab>/
I
S]]J/

J/r,   )g      ?ri   g      ?)r   皙?皙?r   )rh   r   r   r   ri   g?r   r.   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?rJ   )gK7A`?gZd;O?ri   gMbX?)Mb?RQ?RQ?M?r   r   )	g;On?;On?V-?g      ?gJ+?r   gx&?ri   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?ri   gI+?r   )r   r   g1Zd?r   )r   r   r   1Zd?g%C?r   r   )
g~jt?g~jt?r   gsh|??gS㥛?r   r   g+?r   r   )g{Gzt?rg   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?)r5   r   r   r   g9v?g/$?r   r   gL7A`?g
ףp=
?gQ?r   gK7?g`"?g7A`?r   gV-?gjt?gˡE?)r   r.   r!   r/   r0   r1   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   )r!   r/   r0   r1   kr5   r6   r   r   )setattrr   r   pn3pn4pm5pm6itemsr"   r?   lenr   
set_shapesr   r   sfpmf)
r%   p_tablesr   tablemr)   uu2r   pmf2s
             r*   test_exact_distributionz(TestMannWhitneyU.test_exact_distributionp  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       t         j                  j                  d      }t         j                  j                  d      }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ t        j                  |j                  |j                  z
        dkD  sJ t         j                  j                  d      }t         j                  j                  d      }t	        ||d      }t	        ||d      }|j
                  |j
                  k(  sJ t        j                  |j                  |j                  z
        dk  sJ y )	Nr   r0   r   r   r   rg   (   r5   )r"   r=   r>   r   r   rO   absrQ   )r%   r&   r'   res1res2s        r*   test_asymptotic_behaviorz)TestMannWhitneyU.test_asymptotic_behavior  s
   
		q IINN1IINN1Aq1Aq6~~///vvdkkDKK/04777 IINN2IINN2Aq1Aq6~~///vvdkkDKK/04777r,   c                     t        g dddgdd      }t        g dddgdd      }t        |j                  |j                         |j                  dkD  sJ t        g dddgd	d      }t        |d
       y )Nr   r         @r   r   r   r   ri   r   )r!   r   )r   r   rQ   )r%   res_lres_grS   s       r*   test_exact_U_equals_meanz)TestMannWhitneyU.test_exact_U_equals_mean  sw     Yc
$+-Yc
	$+-U\\5<<0||c!!!9sCjk")+S&!r,   r   r   )r   ri   )r   g郡E?)r   resultc                 .    t        t        di ||       y )Nr   r.   )r   r   )r%   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   )ri   r   r   F)r   r   ri   )r   r   r"   rP   rl   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                 x   t         j                  j                  d       d}d\  }}t         j                  j                  |dd      }t         j                  j                  d|dd      dz   }t	        ||||	      }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                  |j
                  |
       t         j                  j                  |j                  |	       y c c}w )Nr   )r3   r2   r!   r4   r1   r   r   )r   r   )r1   r!   r4   r   )N.r   )r"   r=   r>   r   r   rQ   shaperO   moveaxisndimbroadcast_tozerosr   rangetestingr   )r%   r   r   r  r   r&   r'   rS   r  
statisticspvaluesiindicesxiyitemps                   r*   test_gh_12837_11113z$TestMannWhitneyU.test_gh_12837_11113  s    			q 1IINN1a#IINN1aA&,1aT: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	+ 	



G4


z: !:s   H7c                    g d}g d}t        ||      }t        j                  |d<   t        ||      }t        |j                  |j                         t        |j
                  |j
                         t        j                  |d<   t        ||      }t        |j                  t        j                         t        |j
                  t        j                         y )NrJ   )r!   r1   r3   r4   r   r!   r.   r   r/   r/   r0   r/   )r   r"   rV   r   rO   rQ   rP   )r%   r&   r'   r	  r
  res3s         r*   test_gh_11355zTestMannWhitneyU.test_gh_11355  s    -Aq! vv!Aq!T^^T^^4T[[$++. vv!Aq!T^^RVV,T[["&&)r,   r!   r1   r3   r4   r.   r   r/   r0   r2   g+zQ?r   g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r&   r'   rO   rQ   c                     t        ||d      }t        |j                  |d       t        |j                  |d       y )Nr   r   -q=r6   )r   r   rO   rQ   )r%   r&   r'   rO   rQ   rS   s         r*   test_gh_11355bzTestMannWhitneyU.test_gh_11355b   s2     1a5yu=

F7r,   )Tr   r   g&?)Tr   r   gO?)Tr   r   gO?)Fr   r   g9@VN!x?)Fr   r   g9M>?)Fr   r   g9M>?)Tr   r   g?UV?)Tr   r   gߺVJH?)Tr   r   gVJH?)r   r   r   
pvalue_expc                     d}d}d}t        |||||      }t        |j                  |       t        |j                  |       y )N#   )
r   g(\?g=
ףp=?gp=
ף?g333333?gGz?g(\?g=
ףp=?r   g\(\?)gffffff?g)\(?r   gGz?g\(\?r   r   r   )r   r   rO   r   rQ   )	r%   r   r   r   r0  statistic_expr&   r'   rS   s	            r*   test_gh_9184zTestMannWhitneyU.test_gh_91841  sE    . H*1a'26CS]]M2

J/r,   c                 ,   t        j                  t         j                  t         j                  t         j                  t         j                  t         j                  g      }t        j                  t         j                  t         j                  t         j                  t         j                  t         j                  g      }t        ||      }t	        |j
                  t         j                         t	        |j                  t         j                         y r   )r"   r#   rP   r   r   rO   rQ   )r%   abrS   s       r*   test_gh_4067zTestMannWhitneyU.test_gh_4067P  s    HHbffbffbffbffbff=>HHbffbffbffbffbff=>1a S]]BFF+SZZ(r,   r   r  )r!   ga׀}?)r!   r   )r   g?h?)r   r   )r.   g5&#\?)r.   r   )r&   r'   r   r   c                 @    t        ||d|d      }t        ||d       y )NTr   r3  r.  rtol)r   r   )r%   r&   r'   r   r   rS   s         r*   test_gh_2118zTestMannWhitneyU.test_gh_2118h  s%     1a+".0XE2r,   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 )r0   r   sizer   r   r   r   r   r   r   )r   r   )r"   r=   default_rngr   r   r   r   resetstatsr   configurationsr  minrO   )r%   rngr  r   r&   r'   rS   r  s           r*   test_gh19692_smaller_tablez+TestMannWhitneyU.test_gh19692_smaller_tablep  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 )
Nr?  )r.   r0   r@  )r.   r1   r   )r   r   r   r   V瞯<r;  )	r"   r=   rB  rD  r   PermutationMethodr   rO   rQ   )r%   r   rG  r&   r'   rS   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,   N)'r_   r`   ra   rM   r   r   r   r   r   r&   r'   cases_basicr   cases_continuityr   r   r   r   r   r   r  r  r  cases_scalarr  r  r(  r+  r"   rV   cases_11355r/  
cases_9184r5  r9  
cases_2118r=  rH  rL  rb   r,   r*   r   r      sL    [[_Ry3)57b/A/C D-D-
.10j 	-A	A& %0<H)+$*lC)+$-F)+$/7C)+$*g>)+$-A)+,K [[1;?' @' *5M.0)/4H.0)2dK.0)4N.0)/5I.0)2eL.01 [[13CD' E'0,  $8.0C"A<KMC )7K2<=C +?19G$%C+88*"$ &1LI%+|D%.,G(*%0GDfM%+w?J%.'BFKML [[/>< ?<H [[Xg'>?); @);V*& !1aAq!Q:) !1aAq!Q?)+ 2661%1aAq!Q:/+ 2661%1aAq!Q?) *1aAq!Q?/+,K  [[>L8 M8 ?BC@CE:=?AJ [[ 67AC0C0:) sCj)5IJsCj&2FGsCj+x@qc9.CDqc6+@Aqc;9q6Aq69.ABq6Aq66+>?q6Aq6;79J [[BJO3 P3:: [[],LM	= N	=r,   r   c                       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 )Nr2   r  r   r   r   )ALL_INTEGER	ALL_FLOATdtypesr"   r?   	arguments	functoolspartialrD  somersdpartialfuncr   )r%   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 )NrJ  r6   )r]  r   rO   r   rQ   r%   r   rS   s      r*   pythranfunczTestSomersD.pythranfunc  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)rz         r3   r   )r3   rf     r2  r   )r   r!   r.   r3      rJ  r6   )rD  r\  get_optional_argsr   rO   rQ   )r%   r   r	  optional_argsr
  s        r*   test_pythranfunc_keywordsz%TestSomersD.test_pythranfunc_keywords  sm    #%8:JK}}U#..u}}=}}U4m4UCT[[u=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)r0   r.   r   r!   r1   r/   r3   r4   )r0   r.   r1   r!   r   r4   r3   r/           r   r   rJ  r6   r   )	r   r0   r.   r   r!   r1   r/   r3   r4   )	r0   r.   r   r1   r!   r   r4   r3   r/   )r0   r.   r   r!   r1   r/   r3   )r0   r.   r1   r!   r   r3   r/   )g+$I$I¿g=/3n+?r2   r   r   )
r   r.   r   r!   r/   r1   r0   r3   r4   r   )gs'}'?rn  r   )g      r   )
r   r3   r4   r1   r0   r!   r/   r.   r   r   )g}'}'rn  )r   r.   r   r   r.   )r   r/   r3   r   r   )      g.ʂ?)r.   r.   r.   )r.   r   r.   g      $@g      4@)rD  r\  r   rO   rQ   r"   r?   r#   rP   rW   rX   )r%   r&   r'   r   rS   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.   r!   r!   r   r.   r.   r.   r.   r.   r.   r.   r!   r!   r!   r!   r!   r!   )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((Ƿ?rJ  r6   rj   )r!   r.   r.   r!   )rD  r\  r   rO   rQ   r   r   r  )r%   r&   r'   d_crd_rcr)   rS   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 )Nr4   r.   r1   r0   r!   r/   r   gHHHHHH?re  r   U   r;   )gM&w?r   gtE]t)r"   r#   Tr   rD  r\  rO   )r%   r   dyxdxys       r*   test_somers_originalz TestSomersD.test_somers_originalB  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}   r/   r1   r   r)   r.   r   r   gayrJ  r6   gPj$?)r"   prodr=   r>   rD  multinomialrvsr   reshaper\  insertr  r   rO   rQ   )r%   Nr  rA  r   rS   s2r
  s3r*  s4res4s               r*   *test_contingency_table_with_zero_rows_colsz6TestSomersD.test_contingency_table_with_zero_rows_colsX  s    wwu~
		q!!!rwwt}T'9!:BB5I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-negativerK   rg   z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.r   )r!   r!   r  )r"   r  r=   r>   rD  r  r  r   r  rW   rX   r\  r  )	r%   r  r  rA  r   s5messages6s7s	            r*   test_invalid_contingency_tablesz+TestSomersD.test_invalid_contingency_tablesw  s   wwu~
		q!!!rwwt}T'9!:BB5I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,4G8(HGG G),G58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   r   g @)r!   r.   r   r   rp  )r"   rV   rD  r\  r   rO   rQ   )r%   r&   rr  r'   y2rS   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 )Nr2   )r"   r?   rD  r\  r   r   eyerR   s       r*   test_contingency_table_returnz)TestSomersD.test_contingency_table_return  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   )r0   r1   r3   r4   r3   r   r   r   r   r   r.   r   z`alternative` must be...rK   	ekki-ekki)
rD  r\  rO   r   r   rQ   reverserM   r   rX   )r%   rq  rr  r   rS   s        r*   test_somersd_alternativez$TestSomersD.test_somersd_alternative  s     ==R[A!!A%%% mmB7S]]H$6$67

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

HOOa$78 	

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

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

HOOa$78]]:-GH 	;MM"bk:	; 	; 	;s   8HH#positive_correlation)FTc                    t        j                  d      }|r|nt        j                  |      }|rdnd}t        j                  ||d      }|j
                  |k(  sJ |j                  dk(  sJ t        j                  ||d      }|j
                  |k(  sJ |j                  |rdndk(  sJ t        j                  ||d      }|j
                  |k(  sJ |j                  |rdndk(  sJ y )	Nr2   r   r   r   r   r   r   r   )r"   r?   fliprD  r\  rO   rQ   )r%   r  rq  rr  expected_statisticrS   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                  d       t        j                  ||      }t        j                  ||      }d}t        j                  ||      j
                  }t        ||d       y )	Nr   r.   @B i_ r   g Hz	YrJ  r6   )r=   r>   choicesrD  r\  rO   r   )r%   classes	n_samplesr&   r'   val_sklearn	val_scipys          r*   !test_somersd_large_inputs_gh18132z-TestSomersD.test_somersd_large_inputs_gh18132  si     a&	GNN7i0NN7i0 , MM!Q'11	YU;r,   N)r_   r`   ra   r`  rc  rk  rs  rx  r~  r  r  r  r  r  rM   r   r   r  r  rb   r,   r*   rT  rT    sl    7F
	>m7^.2?,1>!F	.,';R [[3]C@ D@0<r,   rT  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  r2   '   )gXyq@g{2s&Q7?r}   r.   rq   r0   )gllgEA]0K?r3   r4   )*)1%g_  ?r   )g_c1?g= ?   r\   )g5PyQgQ@2?r   re  )ggJ"?)g_c1gwݝل?r   r/   )g7@g      ?r!   )g~t,?3O?r1   )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   rO   rQ   r   r%   input_sampler   rS   rO   rQ   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 0rK   r   r.   r!   r/   r   r   ,The input `table` must be of shape \(2, 2\).r1   *All values in `table` must be nonnegative.r   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)rW   rX   r   r"   r?   r  r%   	error_msgs     r*   test_raiseszTestBarnardExact.test_raisesD  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ro  c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y Nr   r   r   rO   rQ   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_zeroj  s;     L)MM3::6	VXa[)Y,r,   )r  gE\/??   ,  )ggQ5rn     r<   i  )g&X}>rn  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   Nr   r   Hz>r6   )r"   r#   r   rO   rQ   r   )	r%   r  r   r   expected_statless_pvalue_expectrS   rO   rQ   s	            r*   test_less_greaterz"TestBarnardExact.test_less_greaterw  sp    , -5)))#88L1!TrT':L*NMLkBMM3::6	-1C!D4	
r,   N)r_   r`   ra   __doc__rM   r   r   r  r  r  r  r"   rP   r  r  rb   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.   r3   r4   )<vB\?g/??r0   r   r2   )gM?gA>?r   r\   re  )_VѶ?g֭?)u %?gc'?r   r/   r   r   r!   )ri   g      ?r   )+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   r6   Nr   rO   rQ   r   ATOLr  s         r*   	test_lesszTestBoschlooExact.test_less  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|?r1   )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   r6   Nr  r  s         r*   test_greaterzTestBoschlooExact.test_greater  s6    6 \yAMM3::6	F+XDIIFr,   )r  gqQS,5?)r  gG?/??)r  gKE`?)r  ghr1ֽ?)r  grfb?)ri   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   r6   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  rK   r   r.   r!   r/   r   r  r  r1   r  r   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r  )rW   rX   r   r"   r?   r  r  s     r*   r  zTestBoschlooExact.test_raises  s    F 	 :Y7 	2QFQF+q1	2 E	:Y7 	7299Q<//156	7 A	:Y7 	.RGaV,-	.
% 	 :Y7 	<QFQF+];	< 	<%	2 	2
	7 	7
	. 	.	< 	<r  c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y r  )r   rO   rQ   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   r   r   r   r   r.   r   r   )r   rQ   rF  )r%   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.   r3   r4   r   r   )r   rO   rD  fisher_exactr   )r%   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)r_   r`   ra   r  r  rM   r   r   r  r  r  r  r"   rP   r  r  r  rb   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                   B   e Zd Zej                  j                  dg  ej                  d      f ej                  d      dgfg      d        Zd Z	d Z
d Zej                  j                  dg d	      d
        Zej                  j                  d        Zd Zd Zd Zy)TestCvm_2sampr   r0   r   c                    t        j                  t        t              5  t	        | }t        |j                  t        j                         t        |j                  t        j                         d d d        y # 1 sw Y   y xY w)NrK   )
rM   rN   r   r   r   r   rO   r"   rP   rQ   rb  s      r*   test_too_small_inputz"TestCvm_2samp.test_too_small_input4  sW     \\,4IJ 	-&-C/RVV,	- 	- 	-s   AA::Bc                     t        j                  d      }d}t        j                  t        |      5  t        ||d       d d d        y # 1 sw Y   y xY w)Nr0   z/method must be either auto, exact or asymptoticrK   xyz)r"   r?   rM   r   rX   r   )r%   r'   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.   r!   r/   r3   r1   )r   r   r   rg  )r   r"   r#   r   rO   rQ   r%   r&   r'   r   r   s        r*   test_list_inputzTestCvm_2samp.test_list_inputB  sX    !!Q'!"((1+rxx{;bllBII.ryy0IJr,   c                     g d}g d}t        ||      }t        |j                  dd       t        |j                  dd       y )N)	gffffff@g @r   gffffff!@皙"@g#@g333333$@g333333%@gffffff&@)g@g@g@      @333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?r5   r6   g
ףp=
?rg   )r   r   rO   rQ   r%   r&   r'   rs       r*   test_example_conoverz"TestCvm_2samp.test_example_conoverI  s<     = A&U6$T2r,   zstatistic, m, n, pval))i  r0   r1   gcj`?)ii  r3   r3   gtE]t?)i@  r/   r1   g88?)i  r1   r3   gXwS?c                 2    t        t        |||      |       y r   )r   r   )r%   rO   r  r   pvals        r*   test_exact_pvaluezTestCvm_2samp.test_exact_pvalueS  s     	*9a;TBr,   c                    t         j                  j                  d       t        j                  j                  d      }t        j                  j                  d      }t        ||      }t        d|j                  cxk  xr dk  nc        t        ||dz         }t        d|j                  cxk  xr
 dk         y c        y )Ni  r  r@  i r   r   r   )	r"   r=   r>   r	   r   r  r   r   rQ   r  s       r*   test_large_samplezTestCvm_2samp.test_large_sample^  s     			t"""0"""/ A&AHH q ! AcE*AHH q ! !r,   c                 z   t         j                  j                  d       t         j                  j                  d      }t         j                  j                  d      }t	        ||d      }t	        ||d      }t        |j                  |j                         t        |j                  |j                  d       y )	Nr   r3   r4   r   r   r   rg   r6   )	r"   r=   r>   r   r   r   rO   r   rQ   r  s        r*   test_exact_vs_asymptoticz&TestCvm_2samp.test_exact_vs_asymptoticj  sx    
		qIINN1IINN1!!Qw7!!Q|<R\\2<<0		29948r,   c                 P   t        j                  d      }g d}t        ||d      }t        ||d      }t        |j                  |j                         t        j                  d      }t        ||d      }t        ||d      }t        |j                  |j                         y )Nr\   )ri   g@g333333*@r   r   r   r  r   )r"   r?   r   r   rQ   r  s        r*   test_method_autozTestCvm_2samp.test_method_autos  s}    IIbM!!Qw7!!Qv6RYY		*IIbM!!Q|<!!Qv6RYY		*r,   c                     t        j                  d      }t        ||      }t        |j                  |j
                  fd       t        |d d |d d       }t        |j                  |j
                  fd       y )Nr  rm  r/   )r"   r?   r   r   rO   rQ   r   s      r*   test_same_inputzTestCvm_2samp.test_same_input  sc     IIbM"1a(cmmSZZ0*="1Ra5!BQ%0cmmSZZ0*=r,   N)r_   r`   ra   rM   r   r   r"   r?   r  r   r  r  r  xslowr
  r  r  r  rb   r,   r*   r  r  3  s    [[Vr9299Q<&8'0ryy|aS&9&; <-<-.K3 [[456
C6
C [[	" 	"9
+	>r,   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e	j                  j                  dd      d        Ze	j                  j                  d g d!      d"        Zd# Zy$)%TestTukeyHSD)r,       7@ffffff:@皙;@fffff=@)ffffff<@皙A@     =@皙@@皙>@)g:@gL<@gL8@g333333:@g;@)r,  r  gHzG:@r  r  r  r  r  )r,  r  r  )
r  r  r  r  r  r  r  r  r  r  aK  
    Comparison LowerCL Difference UpperCL Significance
    2 - 3	0.6908830568	4.34	7.989116943	    1
    2 - 1	0.9508830568	4.6 	8.249116943 	1
    3 - 2	-7.989116943	-4.34	-0.6908830568	1
    3 - 1	-3.389116943	0.26	3.909116943	    0
    1 - 2	-8.249116943	-4.6	-0.9508830568	1
    1 - 3	-3.909116943	-0.26	3.389116943	    0
    aS  
    Comparison LowerCL Difference UpperCL Significance
    2 - 1	0.2679292645	3.645	7.022070736	    1
    2 - 3	0.5934764007	4.34	8.086523599	    1
    1 - 2	-7.022070736	-3.645	-0.2679292645	1
    1 - 3	-2.682070736	0.695	4.072070736	    0
    3 - 2	-8.086523599	-4.34	-0.5934764007	1
    3 - 1	-4.072070736	-0.695	2.682070736	    0
    aS  
    Comparison LowerCL Difference UpperCL Significance
    2 - 3	1.561605075	    4.34	7.118394925	    1
    2 - 1	2.740784879	    6.08	9.419215121	    1
    3 - 2	-7.118394925	-4.34	-1.561605075	1
    3 - 1	-1.964526566	1.74	5.444526566	    0
    1 - 2	-9.419215121	-6.08	-2.740784879	1
    1 - 3	-5.444526566	-1.74	1.964526566	    0
    zdata,res_expect_str,atolrj   g|=)equal size samplez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;
         -  r0   Ndtype)r1   r1   r   r6   rh   r"   asarrayreplacesplitfloatr  rD  	tukey_hsdconfidence_intervalintr   lowrO   highrQ   )r%   datares_expect_strr7   
res_expect	res_tukeyconfr#  jlr   hsigs                r*   test_compare_saszTestTukeyHSD.test_compare_sas  s   B ZZ 6 6uc B H H J12 N&+--4WV_ 	OOT*	,,.", 	GAq!Q3q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:Y--ad3s:SAXF	G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
        r.  r  r  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"  r!   r1   r   r6   N)r"   r%  r'  r(  r  rD  r)  r*  r+  r   r,  rO   r-  rQ   )r%   r.  r/  r7   r0  r1  r2  r#  r3  r4  r   r5  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
        r   r!  r0   Nr"  r9  )   r;   6   re  F   4   3   r<  C   rz   rf        rB     )   r\   ,   )rg  r  rB  rh  r   rg  r2  r;   $   *   r<  rC  r   r  r<   r  r  rB  )rG  r  r  rg  r2   r  r<   r  r<  r\   r  r  rh  r   r  r  r   r<   r   r  r6   r   gh㈵>r$  )r%   str_resr0  r.  r1  r2  r#  r3  r   r4  r5  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@g      @)g @r  g333333@gffffff"@r  )g       @g      %@g333333 @rL  r   )rM  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   r!   r  ru  rg   r6   N)rD  r)  r*  r"   r%  r   r,  r-  )r%   group1group2group3group4rS   r2  lowerupperr#  r3  s              r*   test_engineering_stat_handbookz+TestTukeyHSD.test_engineering_stat_handbook2  s    
 +*+*ooffff=&&(

 	 
 

!	  ? 	EFQDHHQTNE!Q$KdCDIIadOU1a4[tD	Er,   c                 B   t         j                  j                  d       t         j                  j                  d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 )Nr:   r!   r}   r   r   r   r   )r"   r=   r>   r   rD  r)  r*  r   r,  r-  r{  diagonalrO   rQ   )r%   r.  rS   r2  s       r*   test_rand_symmzTestTukeyHSD.test_rand_symmL  s    
		tyy~~a%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.rK   r   r.   )r1   r3   r!   )rW   rX   rD  r)  r"   rV   rl   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-dimensionalrK   r   r.   r!   r0   )r0   r   r1   rW   rX   rD  r)  rl   s    r*   
test_is_1dzTestTukeyHSD.test_is_1dc  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 onerK   r.   r0   )r/   r0   r1   r]  rl   s    r*   test_no_emptyzTestTukeyHSD.test_no_emptyg  s6    :-JK 	3OOBA	2	3 	3 	3s	   7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.rK   r   r3   r!   r]  )r%   ra  s     r*   test_not_enough_treatmentsz'TestTukeyHSD.test_not_enough_treatmentsk  s5    :-HI 	5OOzlU24	5 	5 	5s   4=cl)rp  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 1rK   rc  r!   r/   r   )rW   rX   rD  r)  r*  )r%   re  r  s      r*   test_conf_level_invalidz$TestTukeyHSD.test_conf_level_invalidp  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  rN  )rD  r)  data_diff_size	ttest_indr   rQ   )r%   r1  	res_ttests      r*   test_2_args_ttestzTestTukeyHSD.test_2_args_ttestv  sn    OOT%8%8!%<=	OOT%8%8!%<=		(()*:*:4*@A	(()*:*:4*@Ar,   N)r_   r`   ra   data_same_sizeri  extreme_sizesas_same_sizesas_diff_sizesas_extremerM   r   r   r7  matlab_sm_sizmatlab_diff_szr:  rJ  rU  rY  r[  r^  r`  rd  rg  rl  rb   r,   r*   r  r    sy   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 [[Wf-5 .5 [[T>2& 3&
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}   r!   r}   gea?)r.   r}   r1   r}   g	c?c                 d    t        j                  ||||      }t        |j                  |d       y )Nrj   r6   rD  poisson_means_testr   rQ   )r%   c1n1c2n2p_expectrS   s          r*   test_paper_examplesz(TestPoissonMeansTest.test_paper_examples  s*     &&r2r26

H48r,   z c1, n1, c2, n2, p_expect, alt, d)r\   r2   r\   r2   g{}?r   r   )r2   r2   r2   r2   goPF?r   r   )2   r  r   r   gae?r   rh   )r!   r}   r\   r  g/V-=?r   r   )r!   r   r/   r\   g")?r   r   )r/   r\   r!   r}   g_'Qm~?r   r   )r/   r\   r!   r2   g|?r   r   )r   r   r  r  g0ݷ?r   r   c                 l    t        j                  ||||||      }t        |j                  |dd       y )N)r   diffg>gؗҜ<r7   r<  rw  )	r%   ry  rz  r{  r|  r}  altdrS   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   rw  r%   count1count2nobs1nobs2rS   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 )NrW  r  r   rw  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)NrW  r  z`k1` and `k2` must be integers.rK   r   z1`k1` and `k2` must be greater than or equal to 0.r   z%`n1` and `n2` must be greater than 0.z(diff must be greater than or equal to 0.)r  zAlternative must be one of ...r   r.   errorr   )rW   	TypeErrorrD  rx  rX   )r%   r  r  r  r  r  s         r*   r   z*TestPoissonMeansTest.test_input_validation  s   u 49G4 	?$$R>	?9G4 	?$$VUB>	? F:W5 	?$$R>	?:W5 	?$$VUB>	? ::W5 	@$$VR?	@:W5 	@$$VUFB?	@ =:W5 	L$$VUFEK	L 3:W5 	F$$Q1aWE	F 	F5	? 	?	? 	?
	? 	?	? 	?
	@ 	@	@ 	@
	L 	L
	F 	Fs_   F*F7G6G*GG*G6H*F47GGGG'*G36G?HN)r_   r`   ra   rM   r   r   r~  r  r  r  r   rb   r,   r*   ru  ru  ~  s    [[7  : 
9
9 [[?
 	=<=>9; 	66B "E#"E''!Fr,   ru  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.   r3   r@  z,`x` and `y` must be exactly one-dimensional.rK   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...rH  r   )	r"   r=   rB  rM   r   rX   rD  bws_testrP   )r%   rG  r&   r'   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.   r!   r/   r1   r3   r4   )r0   r   r2   r   r   r   rf  r   r   gI+@r5   r6   gf$/g?)rD  r  r   rO   r   rQ   rR   s       r*    test_against_published_referencez,TestBWSTest.test_against_published_reference  s>     "&nnQ{;u48SZZ)r,   )r   rO   rQ   ))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  r@  r   vIh%<=r;  rg   r   r  r"   r=   rB  rD  r  r   rO   rQ   r%   r   rO   rQ   rG  r&   r'   rS   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 r   r@  r4   r   r  r;  rg   r   r  r  r  s           r*   test_against_R_imbalancedz%TestBWSTest.test_against_R_imbalanced	  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.   r2   r@  r2   )n_resamplesrG  r   l   VC	A )
r"   r=   rB  rD  rK  r  r   null_distributionr   allclose)r%   rG  r&   r'   r   r	  r
  r*  s           r*   test_methodzTestBWSTest.test_method  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  r0   r@  r   r   r   r   r   )
r"   r=   rB  rD  r  rO   r   rQ   r   r  )r%   rG  r&   r'   rS   s        r*   test_directionszTestBWSTest.test_directions2  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)r_   r`   ra   r  r  rM   r   r   r  r  r  r  rb   r,   r*   r  r    sw    ,4* [[CNOB	OB [[CNOB	OBO.$r,   r  ).	itertoolsr   numpyr"   r=   rZ  rM   numpy.testingr   r   r   r   r   rW   scipy.statsrD  r	   scipy.stats._hypotestsr
   r   r   r   r   r   r   scipy.stats._mannwhitneyur   r   r   common_testsr   scipy._lib._testutilsr   scipy.stats._axis_nan_policyr   r   r   rd   r   rT  r  r  r  r  ru  r  rb   r,   r*   <module>r     s        0 0 *  %4 4 4 E D - 2 R4- 4-nZK ZKzl= l=^j<" j<ZP
 P
fV1 V1rU> U>ppB pBfQF QFht$ t$r,   