
    5[g8                       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 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   )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        [/var/www/html/bid-api/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          r/   r/   r/      
   r1   r1   r1   )r1   r.   r   r/   r1   r1   r   r/   r0      r1   r    r   r2   r      r   r/   r3   r1   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.   r1   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:   s`    RYYr]1\\,4IJ&q!,C/RVV, KJJs   ABBc                     dddddt         j                  ft        j                  d      }}t        t        t
        ||       y )Nr   r-   r    r.   r/   r1   )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:   )rN   rP   )r!   r>   r
   r   )r$   r%   r&   rR   
attributess        r)   
test_nameszTestEppsSingleton.test_namesG   s6    yy}biim1"1a(,
C,r+   N)	__name__
__module____qualname__r*   r7   rG   rS   rY   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?r5   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 ?r1   )rf   rg   rh   g333333?ri   r5   rj   rk   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?  re   ri   r5   rj   rk   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?re   ri   r5   rj   rk   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   rk   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)rs   rt   ru   rv   d   '  ri   r5   rj   rk   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@rp         ?)r   r   rk   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   rN   r   rP   )r$   nrR   s      r)   
test_low_pzTestCvm.test_low_p   sG     RWWQZ^V4*S01SZZ#r+   r%   ra         ?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)NrJ   r   )
rL   rM   r   r   r   r   rN   r!   rO   rP   r$   r%   rR   s      r)   test_invalid_inputzTestCvm.test_invalid_input   sO    \\,4IJ F+C/RVV, KJJs   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?ư>r5   gEж?)r    r   g!O!W*?gz"W`?)	r   r-   r/   ffffff?gQ?      ?      @exponge.?gnz\(r?)r   r   rN   rP   )r$   rR   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 )Nr/   )r   ffffff?r   beta)
r!   r>   r   r	   r   cdfr   rN   rP   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_   r`   rl   rn   rq   rw   rz   r~   r   r   rL   markparametrizer   r   r   ra   r+   r)   rc   rc   N   sa    J
1$ [[S2u+.- /-<$Kr+   rc   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   rJ   ra   )r!   r"   dictupdaterL   rM   r   r   r   r   rN   rO   rP   )r$   r   r%   r&   kwargsrR   s         r)   
test_emptyzTestMannWhitneyU.test_empty   s     HHaVHHaVQm$\\,4IJ((C/RVV, KJJs   ,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 onerJ   ekki)use_continuityz`alternative` must be one ofalternativez`axis` must be an integerr   axisz`method` must be one ofmethod)r!   r"   rV   rW   r   rX   s      r)   test_input_validationz&TestMannWhitneyU.test_input_validation   s    HHaVHHaV:-KLAf5 M:-KLA62 M:-HIAC( J:-FGAf- HG MLLLIIGGs0    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   r3   
asymptoticr   exactr    )r!   r<   r=   randr   rP   )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   rR   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 )NrI   r   r-   r    r.   r/   )r   r   r   r   r   rf   )r   r   r   r   r   r   )r   r   )r1   	         !@r3   r   r2   r0   )r   g]U?g[?gi\?gZX<_?gx.?g 
?)r!   r"   r   r   rN   r   rP   )	r$   r%   y0dydy2r&   rR   
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      ?rh   g      ?)r   皙?皙?r   )rg   r   r   r   rh   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?rI   )gK7A`?gZd;O?rh   gMbX?)Mb?RQ?RQ?M?r   r   )	g;On?;On?V-?g      ?gJ+?r   gx&?rh   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?rh   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?rf   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?)r4   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.   r/   r0   c           	         | j                   | j                  | j                  | j                  d}|j	                         D ]A  \  }}|j	                         D ]'  \  }}t        j                  dt        |            }t        j                  ||       t        t        j                  |      |d       t        j                  d||z  dz         }t        t        j                  |      t        j                  |      z   t        j                  |      z
  d       t        j                  |      }t        ||d d d          t        j                  ||       t        j                  |      }	t        ||	       * D y )N)r    r.   r/   r0   r   kr4   r5   r   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  s    xxDHHdhhG (HAu1IIaQ(%%a+
 3QTB YYq!A#a%(
 4",--""5!6",..2"6!789;
 !nnr*S2Y/ %%a+!~~+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   r/   r   r   r   rf   (   r4   )r!   r<   r=   r   r   rN   absrP   )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   rh   r   )r    r   )r   r   rP   )r$   res_lres_grR   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   rh   )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   )rh   r   r   F)r   r   rh   )r   r   r!   rO   rk   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   )r2   r1   r    r3   r0   r   r   )r   r   )r0   r    r3   r   )N.r   )r!   r<   r=   r   r   rP   shaperN   moveaxisndimbroadcast_tozerosr   rangetestingr   )r$   r   r   r   r   r%   r&   rR   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 95aq5 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 )NrI   )r    r0   r2   r3   r   r    r-   r   r.   r.   r/   r.   )r   r!   rU   r   rN   rP   rO   )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    r0   r2   r3   r-   r   r.   r/   r1   g+zQ?r   g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r%   r&   rN   rP   c                     t        ||d      }t        |j                  |d       t        |j                  |d       y )Nr   r   -q=r5   )r   r   rN   rP   )r$   r%   r&   rN   rP   rR   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   rN   r   rP   )	r$   r   r   r   r-  statistic_expr%   r&   rR   s	            r)   test_gh_9184zTestMannWhitneyU.test_gh_9184/  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"   rO   r   r   rN   rP   )r$   abrR   s       r)   test_gh_4067zTestMannWhitneyU.test_gh_4067N  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   r0  r+  rtol)r   r   )r$   r%   r&   r   r   rR   s         r)   test_gh_2118zTestMannWhitneyU.test_gh_2118f  s%     1a+".0XE2r+   c                    t         j                  j                  d      }d\  }}|j                  |      }|j                  |      }t        j                          t        j                  ||d      }t        j                  j                  }|d   t        |j                  ||z  |j                  z
        dz   k(  sJ t        j                  ||d       |t        j                  j                  k(  sJ t        j                          t        j                  |d|z  dd	
       t        j                  j                  }|d   dk(  sJ t        j                  d|z  |dd	
       |t        j                  j                  k(  sJ y )N   g>mjK )r/   r   sizer   r   r   r   r   r   )r   r   )r!   r<   default_rngr   resetstatsr   configurationsr  minrN   )r$   rngr   r   r%   r&   rR   r  s           r)   test_gh19692_smaller_tablez+TestMannWhitneyU.test_gh19692_smaller_tablen  sG   
 ii##$781JJAJJJAJ  Ag6))//RyCqsS]]/BCaGGGG1a0
1177777
 	1ac'yI))//RyA~~1Q3'yI
1177777r+   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-   r/   r=  )r-   r0   r   )r   r   r   r   V瞯<r8  )	r!   r<   r?  rA  r   PermutationMethodr   rN   rP   )r$   r   rD  r%   r&   rR   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_   r`   rL   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!   rU   cases_11355r,  
cases_9184r2  r6  
cases_2118r:  rE  rI  ra   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+4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84 [[],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 )Nr1   r  r   r   r   )ALL_INTEGER	ALL_FLOATdtypesr!   r>   	arguments	functoolspartialrA  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
 %,,U]]9DF(((+6 Is   C)c                      | j                   | }t        |j                  | j                  j                  d       t        |j                  | j                  j                  d       y )NrG  r5   )rZ  r   rN   r   rP   r$   r   rR   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)ry         r2   r   )r2   rc     r/  r   )r   r    r-   r2      rG  r5   )rA  rY  get_optional_argsr   rN   rP   )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)r/   r-   r   r    r0   r.   r2   r3   )r/   r-   r0   r    r   r3   r2   r.           r   r   rG  r5   r   )	r   r/   r-   r   r    r0   r.   r2   r3   )	r/   r-   r   r0   r    r   r3   r2   r.   )r/   r-   r   r    r0   r.   r2   )r/   r-   r0   r    r   r2   r.   )g+$I$I¿g=/3n+?r1   r   r   )
r   r-   r   r    r.   r0   r/   r2   r3   r   )gs'}'?rk  r   )g      r   )
r   r2   r3   r0   r/   r    r.   r-   r   r   )g}'}'rk  )r   r-   r   r   r-   )r   r.   r2   r   r   )      g.ʂ?)r-   r-   r-   )r-   r   r-   g      $@g      4@)rA  rY  r   rN   rP   r!   r>   r"   rO   rV   rW   )r$   r%   r&   r   rR   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((Ƿ?rG  r5   ri   )r    r-   r-   r    )rA  rY  r   rN   rP   r   r   r  )r$   r%   r&   d_crd_rcr(   rR   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 )Nr3   r-   r0   r/   r    r.   r   gHHHHHH?rb  r   U   r:   )gM&w?r   gtE]t)r!   r"   Tr   rA  rY  rN   )r$   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|   r.   r0   r   r(   r-   r   r   gayrG  r5   gPj$?)r!   prodr<   r=   rA  multinomialrvsr   reshaperY  insertr  r   rN   rP   )r$   Nr  r>  srR   s2r  s3r'  s4res4s               r)   *test_contingency_table_with_zero_rows_colsz6TestSomersD.test_contingency_table_with_zero_rows_colsS  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-negativerJ   rf   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=   rA  r  r  r   r  rV   rW   rY  r  )	r$   r  r  r>  r  s5messages6s7s	            r)   test_invalid_contingency_tablesz+TestSomersD.test_invalid_contingency_tablesr  s   wwu~
		q!!!rwwt}T'9!:BB5IUN:W5MM" 6 XI:W5MM" 6,:W5MM2$ 6 :W5MMA3%  6 XXf:W5MM" 6 4:W5MM" 65+ 65
 65
 65 65 65 65sH   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   rm  )r!   rU   rA  rY  r   rN   rP   )r$   r%   ro  r&   y2rR   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 )Nr1   )r!   r>   rA  rY  r   r   eyerQ   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   )r/   r0   r2   r3   r2   r   r   r   r   r   r-   r   z`alternative` must be...rJ   	ekki-ekki)
rA  rY  rN   r   r   rP   reverserL   r   rW   )r$   rn  ro  r   rR   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: IHHs   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 )	Nr1   r   r   r   r   r   r   r   )r!   r>   fliprA  rY  rN   rP   )r$   r  rn  ro  expected_statisticrR   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	YrG  r5   )r<   r=   choicesrA  rY  rN   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_   r`   r]  r`  rh  rp  ru  r{  r  r  r  r  r  rL   r   r   r  r  ra   r+   r)   rQ  rQ    sl    7F
	>m7^.2?,1>!F	.,';R [[3]C@ D@0<r+   rQ  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  r1   '   )gXyq@g{2s&Q7?r|   r-   rp   r/   )gllgEA]0K?r2   r3   )*)1%g_  ?r   )g_c1?g= ?   r[   )g5PyQgQ@2?r   rb  )ggJ"?)g_c1gwݝل?r   r.   )g7@g      ?r    )g~t,?3O?r0   )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   rN   rP   r   r$   input_sampler   rR   rN   rP   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 0rJ   r   r-   r    r.   r   r   ,The input `table` must be of shape \(2, 2\).r0   *All values in `table` must be nonnegative.r   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)rV   rW   r   r!   r>   r  r$   	error_msgs     r)   test_raiseszTestBarnardExact.test_raises?  s     F 	 :Y7Aq6Aq6*a0 8 E	:Y7"))A,..q!45 8 A	:Y7B7QF+, 8
 	 :Y7Aq6Aq6*M: 87% 87
 87
 87 87/   C/C"C.:C:C"C+.C7:Drl  c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y Nr   r   r   rN   rP   r   r  s         r)   test_edge_casesz TestBarnardExact.test_edge_casesY  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_zeroe  s;     L)MM3::6	VXa[)Y,r+   )r  gE\/??   ,  )ggQ5rk     r;   i  )g&X}>rk  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>r5   )r!   r"   r   rN   rP   r   )	r$   r  r   r   expected_statless_pvalue_expectrR   rN   rP   s	            r)   test_less_greaterz"TestBarnardExact.test_less_greaterr  sp    , -5)))#88L1!TrT':L*NMLkBMM3::6	-1C!D4	
r+   N)r^   r_   r`   __doc__rL   r   r   r  r  r  r  r!   rO   r  r  ra   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-   r2   r3   )<vB\?g/??r/   r   r1   )gM?gA>?r   r[   rb  )_VѶ?g֭?)u %?gc'?r   r.   r   r   r    )rh   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   r5   Nr   rN   rP   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|?r0   )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   r5   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?)rh   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   r5   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  rJ   r   r-   r    r.   r   r  r  r0   r  r   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r  )rV   rW   r   r!   r>   r  r  s     r)   r  zTestBoschlooExact.test_raises  s     F 	 :Y7QFQF+q1 8 E	:Y7299Q<//156 8 A	:Y7RGaV,- 8
% 	 :Y7QFQF+]; 87% 87
 87
 87 87r  c                     t        |      }|j                  |j                  }}t        ||d          t        ||d          y r  )r   rN   rP   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   rP   rC  )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-   r2   r3   r   r   )r   rN   rA  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_   r`   r  r  rL   r   r   r  r  r  r  r!   rO   r  r  r  ra   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   r/   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)NrJ   )
rL   rM   r   r   r   r   rN   r!   rO   rP   r_  s      r)   test_too_small_inputz"TestCvm_2samp.test_too_small_input/  sO     \\,4IJ&-C/RVV, KJJs   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)Nr/   z/method must be either auto, exact or asymptoticrJ   xyz)r!   r>   rL   r   rW   r   )r$   r&   msgs      r)   r   z TestCvm_2samp.test_invalid_input7  s:    IIaL?]]:S1 Au- 211s   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.   r2   r0   )r   r   r   rd  )r   r!   r"   r   rN   rP   r$   r%   r&   r   r   s        r)   test_list_inputzTestCvm_2samp.test_list_input=  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㥛?r4   r5   g
ףp=
?rf   )r   r   rN   rP   r$   r%   r&   rs       r)   test_example_conoverz"TestCvm_2samp.test_example_conoverD  s<     = A&U6$T2r+   zstatistic, m, n, pval))i  r/   r0   gcj`?)ii  r2   r2   gtE]t?)i@  r.   r0   g88?)i  r0   r2   gXwS?c                 2    t        t        |||      |       y r   )r   r   )r$   rN   r   r   pvals        r)   test_exact_pvaluezTestCvm_2samp.test_exact_pvalueN  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   rP   r  s       r)   test_large_samplezTestCvm_2samp.test_large_sampleY  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   r2   r3   r   r   r   rf   r5   )	r!   r<   r=   r   r   r   rN   r   rP   r  s        r)   test_exact_vs_asymptoticz&TestCvm_2samp.test_exact_vs_asymptotice  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[   )rh   g@g333333*@r   r   r   r  r   )r!   r>   r   r   rP   r  s        r)   test_method_autozTestCvm_2samp.test_method_auton  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  rj  r.   )r!   r>   r   r   rN   rP   r   s      r)   test_same_inputzTestCvm_2samp.test_same_inputz  sc     IIbM"1a(cmmSZZ0*="1Ra5!BQ%0cmmSZZ0*=r+   N)r^   r_   r`   rL   r   r   r!   r>   r  r   r  r  r  xslowr  r
  r  r  ra   r+   r)   r  r  .  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,atolri   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;
         -  r/   Ndtype)r0   r0   r   r5   rg   r!   asarrayreplacesplitfloatr  rA  	tukey_hsdconfidence_intervalintr   lowrN   highrP   )r$   datares_expect_strr6   
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*	,,.",Aq!Q3q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:Y--ad3s:SAXF #-r+   z
        1	2	-8.2491590248597	-4.6	-0.9508409751403	0.0144483269098
        1	3	-3.9091590248597	-0.26	3.3891590248597	0.9803107240900
        2	3	0.6908409751403	4.34	7.9891590248597	0.0203311368795
        z
        1	2	-7.02207069748501	-3.645	-0.26792930251500 0.03371498443080
        1	3	-2.68207069748500	0.695	4.07207069748500 0.85572267328807
        2	3	0.59347644287720	4.34	8.08652355712281 0.02259047020620
        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    r0   r   r5   N)r!   r#  r%  r&  r  rA  r'  r(  r)  r   r*  rN   r+  rP   )r$   r,  r-  r6   r.  r/  r0  r   r1  r2  r  r3  r(   s                r)   test_compare_matlabz TestTukeyHSD.test_compare_matlab  s     ZZ 4 4 6&+--4WV_ 	OOT*	,,. *Aq!Q1q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:I,,QT2ADA !+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  r/   Nr   r7  )   r:   6   rb  F   4   3   r:  C   ry   rc        r@     )   r[   ,   )rd  r  r@  re  r   rd  r/  r:   $   *   r:  rA  r   r  r;   r  r  r@  )rE  r  r  rd  r1   r  r;   r  r:  r[   r  r  re  r   r  r  r   r;   r   r  r5   r   gh㈵>r"  )r$   str_resr.  r,  r/  r0  r   r1  r  r2  r3  r(   s               r)   test_compare_rzTestTukeyHSD.test_compare_r  s    ZZs ; A A CAB G&+--4WV_ 	555	6 OOT*	,,. *Aq!Q1q6A:s1vzqADHHQTNAD9I//15qtDDIIadOQT:I,,QT2ADA !+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 @rJ  r  )rK  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  rr  rf   r5   N)rA  r'  r(  r!   r#  r   r*  r+  )r$   group1group2group3group4rR   r0  lowerupperr   r1  s              r)   test_engineering_stat_handbookz+TestTukeyHSD.test_engineering_stat_handbook-  s    
 +*+*ooffff=&&(

 	 
 

!	  ?FQDHHQTNE!Q$KdCDIIadOU1a4[tD ?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 )Nr9   r    r|   r   r   r   r   )r!   r<   r=   r   rA  r'  r(  r   r*  r+  rx  diagonalrN   rP   )r$   r,  rR   r0  s       r)   test_rand_symmzTestTukeyHSD.test_rand_symmG  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.rJ   r   r-   )r0   r2   r    )rV   rW   rA  r'  r!   rU   rk   s    r)   test_no_infzTestTukeyHSD.test_no_infZ  s2    :-ABOOI266{I> CBBs   ,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-dimensionalrJ   r   r-   r    r/   )r/   r   r0   rV   rW   rA  r'  rk   s    r)   
test_is_1dzTestTukeyHSD.test_is_1d^  s;    :-IJOOaVaV,q!fjA KJJs	   "=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 onerJ   r-   r/   )r.   r/   r0   r[  rk   s    r)   test_no_emptyzTestTukeyHSD.test_no_emptyb  s.    :-JKOOBA	2 LKKs	   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.rJ   r   r2   r    r[  )r$   r_  s     r)   test_not_enough_treatmentsz'TestTukeyHSD.test_not_enough_treatmentsf  s-    :-HIOOzlU24 JIIs   4=cl)rm  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 1rJ   ra  r    r.   r   )rV   rW   rA  r'  r(  )r$   rc  r  s      r)   test_conf_level_invalidz$TestTukeyHSD.test_conf_level_invalidk  sB    :-FG
QFQF;A!!"% HGGs   /A

Ac                    t        j                  | j                  d d  }t        j                  | j                  d d  }t	        |j
                  |j
                  d          t	        |j
                  |j
                  d          y )Nr-   r  rL  )rA  r'  data_diff_size	ttest_indr   rP   )r$   r/  	res_ttests      r)   test_2_args_ttestzTestTukeyHSD.test_2_args_ttestq  sn    OOT%8%8!%<=	OOT%8%8!%<=		(()*:*:4*@A	(()*:*:4*@Ar+   N)r^   r_   r`   data_same_sizerg  extreme_sizesas_same_sizesas_diff_sizesas_extremerL   r   r   r5  matlab_sm_sizmatlab_diff_szr8  rH  rS  rW  rY  r\  r^  rb  re  rj  ra   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|   r0   r|   g	c?c                 d    t        j                  ||||      }t        |j                  |d       y )Nri   r5   rA  poisson_means_testr   rP   )r$   c1n1c2n2p_expectrR   s          r)   test_paper_examplesz(TestPoissonMeansTest.test_paper_examplesz  s*     &&r2r26

H48r+   z c1, n1, c2, n2, p_expect, alt, d)r[   r1   r[   r1   g{}?r   r   )r1   r1   r1   r1   goPF?r   r   )2   r  r   r   gae?r   rg   )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    r1   g|?r   r   )r   r   r}  r  g0ݷ?r   r   c                 l    t        j                  ||||||      }t        |j                  |dd       y )N)r   diffg>gؗҜ<r6   r9  ru  )	r$   rw  rx  ry  rz  r{  altdrR   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   ru  r$   count1count2nobs1nobs2rR   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 )NrU  r  r   ru  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)NrU  r  z`k1` and `k2` must be integers.rJ   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   )rV   	TypeErrorrA  rv  rW   )r$   r  r  r  r  r  s         r)   r   z*TestPoissonMeansTest.test_input_validation  s   u 49G4$$R> 59G4$$VUB> 5 F:W5$$R> 6:W5$$VUB> 6 ::W5$$VR? 6:W5$$VUFB? 6 =:W5$$VUFEK 6 3:W5$$Q1aWE 655 5444
 6555
 6555
 65
 65s_   F*F7G6G*GG*G6H*F47GGGG'*G36G?HN)r^   r_   r`   rL   r   r   r|  r  r  r  r   ra   r+   r)   rs  rs  y  s    [[7  : 
9
9 [[?
 	=<=>9; 	66B "E#"E''!Fr+   rs  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-   r2   r=  z,`x` and `y` must be exactly one-dimensional.rJ   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...rF  r   )	r!   r<   r?  rL   r   rW   rA  bws_testrO   )r$   rD  r%   r&   r  s        r)   test_bws_input_validationz%TestBWSTest.test_bws_input_validation  s3   ii##$78zzvz&1@]]:W5NNAq6Aq6* 6 7]]:W5NNBFF8Q' 6 9]]:W5NN1b! 6 3]]:W5NN1a[9 6 6]]:W5NN1a+ 65! 65 65 65 65 65s<   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.   r0   r2   r3   )r/   r   r1   r   r   r   rc  r   r   gI+@r4   r5   gf$/g?)rA  r  r   rN   r   rP   rQ   s       r)    test_against_published_referencez,TestBWSTest.test_against_published_reference  s>     "&nnQ{;u48SZZ)r+   )r   rN   rP   ))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%<=r8  rf   r   r  r!   r<   r?  rA  r  r   rN   rP   r$   r   rN   rP   rD  r%   r&   rR   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=  r3   r   r  r8  rf   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-   r1   r=  r1   )n_resamplesrandom_stater   l   VC	A )
r!   r<   r?  rA  rH  r  r   null_distributionr   allclose)r$   rD  r%   r&   r   r  r  r'  s           r)   test_methodzTestBWSTest.test_method  s(   ii##$78zzwz'1ii##$78((RcJ~~a624))*b000ii##$78((RcJ~~a62..0F0FGii##$78((RcJ~~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  r/   r=  r   r   r   r   r   )
r!   r<   r?  rA  r  rN   r   rP   r   r  )r$   rD  r%   r&   rR   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)r^   r_   r`   r  r  rL   r   r   r  r  r  r  ra   r+   r)   r  r    sw    ,4* [[CNOB	OB [[CNOB	OBO.$r+   r  )-	itertoolsr   numpyr!   r<   rW  rL   numpy.testingr   r   r   r   r   rV   scipy.statsrA  r	   scipy.stats._hypotestsr
   r   r   r   r   r   r   scipy.stats._mannwhitneyur   r   common_testsr   scipy._lib._testutilsr   scipy.stats._axis_nan_policyr   r   r   rc   r   rQ  r  r  r  r  rs  r  ra   r+   r)   <module>r     s        0 0 *  %4 4 4 ? - 2 R4- 4-nZK ZKzg= g=T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+   