
    _Mhj8                       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-dS )     )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                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestEppsSingletonc                     t          j        g d          }t          j        g d          }t          ||          \  }}t          |dd           t          |dd           d S )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/test/jupyter/venv/lib/python3.11/site-packages/scipy/stats/tests/test_hypotests.pytest_statistic_1z"TestEppsSingleton.test_statistic_1   s    
 H 7 7 7 8 8H 4 4 4 5 5#Aq))1Aua0000Aw222222    c                     t          j        d          }t          j        d          }t          ||          \  }}t          |dd           t	          |dd           d S )	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%   sq    H " # #H   ! !#Aq))15u----Aw222222r,   c                    t           j                            d           t          j        d          t          j        d          }}t	          t          |          t          |                    \  }}t	          t          |          t          |                    \  }}t	          ||          \  }}t          ||cxk    o|k    nc            t          ||cxk    o|k    nc            d S )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y}}bimm1%d1ggtAww77B%eAhha99B%a++BbBbBr,   c                 @   dt          j        d          }}t          j        t          t
                    5  t          ||          }t          |j        t           j	                   t          |j
        t           j	                   d d d            d S # 1 swxY w Y   d S )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:   s    RYr]]1\,4IJJJ 	- 	-&q!,,C///RV,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   ABBBc                     dddddt           j        ft          j        d          }}t          t          t
          ||           d S )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   s=    1aArv&	"1j"61=====r,   c                     t          j        d          t          j        d          }}t          ||          }d}t          ||           d S )N   r;   )rO   rQ   )r"   r?   r
   r   )r%   r&   r'   rS   
attributess        r*   
test_nameszTestEppsSingleton.test_namesG   sE    y}}bimm1"1a((,
C,,,,,r,   N)	__name__
__module____qualname__r+   r8   rH   rT   rZ   r^    r,   r*   r   r      sn        3 3 33 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                            d	d
dgg          d             Zd Zd ZdS )TestCvmc                 N    t          t          g dd          g dd           d S )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   sC    ===qAA(((	 	 	 	 	 	r,   c                 N    t          t          g dd          g dd           d S )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   sC    ===rBB(((	 	 	 	 	 	r,   c                 N    t          t          g dd          g dd           d S )N)g}tg?g`?gI5o?gׁsF?  rf   rj   r6   rk   rl   s    r*   test_cdf_1000zTestCvm.test_cdf_1000^   sC    ===tDD(((	 	 	 	 	 	r,   c                 L    t          t          g d          g dd           d S )N)a+e?+?&pn?+MJA?rf   rj   r6   rk   rl   s    r*   test_cdf_infzTestCvm.test_cdf_infd   sA    ===>>(((	 	 	 	 	 	r,   c                     t          t          ddgd          ddg           t          t          ddgd          ddg           d S )	NgX(~$?gUUUUU5f@i  r   r   gaah?g"@   )r   r   rl   s    r*   test_cdf_supportzTestCvm.test_cdf_supportj   sN    Xz51377!Q@@@X
;R@@1a&IIIIIr,   c                 h    t          t          g dd          t          g d          d           d S )N)rt   ru   rv   rw   d   '  rj   r6   rk   rl   s    r*   test_cdf_large_nzTestCvm.test_cdf_large_no   sL    BBBEJJBBBCC	 	 	 	 	 	r,   c                     t          dt          dd          cxk     odk     nc            t          dt          d          cxk     odk     nc            d S )NgwJ?gt@rq         ?)r   r   rl   s    r*   test_large_xzTestCvm.test_large_xv   sn     	(5$//5555#5555666(5//////C////00000r,   c                     d}t          t          j        |          dz  d          }t          t	          |j        |          dk               t          |j        d           d S )N   皙?normr   r   )r   r"   onesr   r   rO   r   rQ   )r%   nrS   s      r*   
test_low_pzTestCvm.test_low_p   s[     RWQZZ^V44**S0111SZ#####r,   r&   rb         ?c                    t          j        t          t                    5  t	          |d          }t          |j        t          j                   t          |j	        t          j                   d d d            d S # 1 swxY w Y   d S )NrK   r   )
rM   rN   r   r   r   r   rO   r"   rP   rQ   r%   r&   rS   s      r*   test_invalid_inputzTestCvm.test_invalid_input   s    \,4IJJJ 	- 	- F++C///RV,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   AA==BBc                    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           d S )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Dxd;;;;
ID9999 ;;;VXNNyt<<<<
Kd;;;; CCCWM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           d S )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677Aw''blBI.ry0IJJJA}15t<<Avt,,blBI.ry0IJJJJJr,   N)r_   r`   ra   rm   ro   rr   rx   r{   r   r   r   rM   markparametrizer   r   r   rb   r,   r*   rd   rd   N   s                J J J
  1 1 1$ $ $ [S2u+..- - /.-< < <$K K K K Kr,   rd   c                      e Zd Ze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                            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                            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                            d?e          d@             ZdA Ze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                            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                            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                            g dme#          dn             Z$do Z%ej                            dpg dq          dr             Z&dsS )tTestMannWhitneyUkwargs_updater&   r'   r&   r'   c                    t          j        ddg          }t          j        ddg          }t          ||          }|                    |           t	          j        t          t                    5  t          di |}t          |j
        t           j                   t          |j        t           j                   d d d            d S # 1 swxY w Y   d S )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    HaVHaVQm$$$\,4IJJJ 	- 	-((((C///RV,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   3ACCCc                 `   t          j        ddg          }t          j        ddg          }t          t          d          5  t	          ||d           d d d            n# 1 swxY w Y   t          t          d	          5  t	          ||d
           d d d            n# 1 swxY w Y   t          t          d          5  t	          ||d           d d d            n# 1 swxY w Y   t          t          d          5  t	          ||d           d d d            d S # 1 swxY w Y   d S )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/   HaVHaV:-KLLL 	6 	6Af5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6:-KLLL 	3 	3A62222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3:-HIII 	) 	)AC((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	):-FGGG 	. 	.Af----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.sH   A""A&)A&B""B&)B&C""C&)C&D##D'*D'c                    t           j                            d           d}t           j                            |dz
            }t           j                            |dz
            }t	          ||          }t	          ||d          }t	          ||d          }|j        |j        k    sJ |j        |j        k    sJ t           j                            |dz
            }t           j                            |dz             }t	          ||          }t	          ||d          }t	          ||d          }|j        |j        k    sJ |j        |j        k    sJ t	          ||          }t	          ||d          }t	          ||d          }|j        |j        k    sJ |j        |j        k    sJ t           j                            |dz             }t           j                            |dz             }t	          ||          }t	          ||d          }t	          ||d          }|j        |j        k    sJ |j        |j        k    sJ t           j                            |dz
            }t           j                            |dz
            }|d         |d<   t	          ||          }t	          ||d          }t	          ||d          }|j        |j        k    sJ |j        |j        k    sJ d S )Nr   r4   
asymptoticr   exactr!   )r"   r=   r>   randr   rQ   )r%   r   r&   r'   autor   r   s          r*   	test_autozTestMannWhitneyU.test_auto   s    		q INN1Q3INN1Q3Aq!!!!Q|<<<
Q'222{el****{j///// INN1Q3INN1Q3Aq!!!!Q|<<<
Q'222{el****{j///// Aq!!!!Q|<<<
Q'222{el****{j///// INN1Q3INN1Q3Aq!!!!Q|<<<
Q'222{el****{j///// INN1Q3INN1Q3t!Aq!!!!Q|<<<
Q'222{el****{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                 V    t          | j        | j        fi |}t          ||           d S N)r   r&   r'   r   r%   r   r   rS   s       r*   
test_basiczTestMannWhitneyU.test_basic   s3    464622T22X&&&&&r,   T)r   r   )   r   )r   r   )r   r   F)r   gl,KNh?)r   giژ?)r   gl,KNh?c                 Z    t          | j        | j        fddi|}t          ||           d S )Nr   r   )r   r'   r&   r   r   s       r*   test_continuityz TestMannWhitneyU.test_continuity2  s:     4646GG,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        |           d S )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     LLXooo&&Xooo&&t+h'',WbeRVRCB4@1ab>>>///
I I 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}|                                D ]\  }}|                                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 S )	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  s   
Ca,,,xDHdhGG (( 	+ 	+HAu + +1IaQ((''1---
 0 01 0 5 5qtDDDD Yq!A#a%((
 0 02 0 6 6",,//B/"7"7!8",,"2"2R"2"8"8!9:;= = =
 !l&&&,,S2Y/// ''1---!|''"'--T****)+	+ 	+r,   c                    t           j                            d           t           j                            d          }t           j                            d          }t	          ||d          }t	          ||d          }|j        |j        k    sJ t          j        |j        |j        z
            dk    sJ t           j                            d          }t           j                            d          }t	          ||d          }t	          ||d          }|j        |j        k    sJ t          j        |j        |j        z
            dk     sJ d S )	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 INN1INN1Aq111Aq666~////vdkDK/0047777 INN2INN2Aq111Aq666~////vdkDK/004777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k    sJ t          g dddgd	d          }t          |d
           d S )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  s     YYYc
$+- - -YYYc
	$+- - -U\5<000|c!!!!999sCjk")+ + +S&!!!!!r,   r   r   )r   ri   )r   g郡E?)r   resultc                 :    t          t          di ||           d S )Nr   r.   r   r.   )r   r   )r%   r   r  s      r*   test_scalar_dataz!TestMannWhitneyU.test_scalar_data  s(     	22T2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           d S )	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  s    
 	\!Qw777BBB\!Q|<<<hGGG 	\!Q|168 8 8:=rv	H 	H 	H 	H 	Hr,   r   c                    t           j                            d           d}d\  }}t           j                            |dd          }t           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 |D              D ]8}||         }||         }t	          |||          }|j        |	|<   |j        |
|<   9t           j                            |j        |
           t           j                            |j        |	           d S )Nr   )r3   r2   r!   r4   r1   r   r   )r   r   )r1   r!   r4   r   )N.c                 ,    g | ]}t          |          S rb   )range).0is     r*   
<listcomp>z8TestMannWhitneyU.test_gh_12837_11113.<locals>.<listcomp>  s     9 9 9aq 9 9 9r,   r   )r"   r=   r>   r   r   rQ   shaperO   moveaxisndimbroadcast_tozerosr   testingr   )r%   r   r   r  r   r&   r'   rS   r  
statisticspvaluesindicesxiyitemps                  r*   test_gh_12837_11113z$TestMannWhitneyU.test_gh_12837_11113  s    		q 1INN1a##INN1aA&&,1aT:::z5((((}"e++++ {1dB''Qb)A)A1iLvOAut|,,OAut|,,wss|u$$$$wss|u$$$$ Xe__
(5// 9 95 9 9 9: 	+ 	+G7B7BBv666D"&.Jw#{GG


G444

z:::::r,   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                   d S )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    LL---Aq!! v!Aq!!T^T^444T[$+... v!Aq!!T^RV,,,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           d S )Nr   r   -q=r6   )r   r   rO   rQ   )r%   r&   r'   rO   rQ   rS   s         r*   test_gh_11355bzTestMannWhitneyU.test_gh_11355b   sL     1a555yu====
F77777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        |           d S )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   r3  statistic_expr&   r'   rS   s	            r*   test_gh_9184zTestMannWhitneyU.test_gh_91841  s_    . H*1a'26C C CS]M22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                   d S r   )r"   r#   rP   r   r   rO   rQ   )r%   abrS   s       r*   test_gh_4067zTestMannWhitneyU.test_gh_4067P  s    Hbfbfbfbfbf=>>Hbfbfbfbfbf=>>1a  S]BF+++SZ(((((r,   r   r  )r!   ga׀}?)r!   r   )r   g?h?)r   r   )r.   g5&#\?)r.   r   )r&   r'   r   r   c                 R    t          ||d|d          }t          ||d           d S )NTr   r6  r1  rtol)r   r   )r%   r&   r'   r   r   rS   s         r*   test_gh_2118zTestMannWhitneyU.test_gh_2118h  s>     1a+".0 0 0XE222222r,   c                 p   t           j                            d          }d\  }}|                    |          }|                    |          }t          t          dt          dd                     t          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                                         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 d S )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  s   
 i##$7881JJAJJJAJ
Ca,,, Ag666+1RyCqsS]/BCCaGGGGG1a0000
399999
 	1ac'yIIII+1RyA~~~~1Q3'yIIII
39999999r,   r   )r   r   r   c                    t           j                            d          }|                    d          }|                    d          }t          j        ||t          j                    |d          }t          j        ||d|d          }t          |j        |j        d	           t          |j        |j        d	           d S )
NrB  )r.   r0   rC  )r.   r1   r   )r   r   r   r   V瞯<r>  )	r"   r=   rE  rG  r   PermutationMethodr   rO   rQ   )r%   r   rJ  r&   r'   rS   r
  s          r*   test_permutation_methodz(TestMannWhitneyU.test_permutation_method  s    i##$788JJFJ##JJFJ## Ae.E.G.G-8qB B B!!Qw.9C C Ct~EBBBB
DKe<<<<<<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_11355r2  
cases_9184r8  r<  
cases_2118r@  rK  rO  rb   r,   r*   r   r      sM        [_Ry3)57b/A/A/C D D- -D D-
. 
. 
.10 10 10j 	-,,A	 	 	A& %0<HH)+$*lCC)+$-FF)+$/7CC)+$*g>>)+$-AA)+,K [1;??' ' @?' *5MM.0)/4HH.0)2dKK.0)4NN.0)/5II.0)2eLL.01 [13CDD' ' ED'0 0 0,  $8$8$8...0 0Coo"A"A"A<<<KKKM MC )((777KKK2 2 2< < <= =C +**???1 1 19 9 9G G G$ $ $% %C+ + +88 8 8*" " "$ &1LII%+|DD%.,GG(*%0GDDfM%+w??J%.'BBFKML [/>>< < ?><H H H [Xg'>??); ); @?);V* * *& !LL1aAq!Q:) !LL1aAq!Q?)+ 261%1aAq!Q:/+ 261%1aAq!Q?) *1aAq!Q?/+,K  [>LL8 8 ML8 ?>>BBBCCC@@@CCCEEE:::===???AJ [ 67AC C0 0C C0:) ) ) 99sCj)5IJ99sCj&2FG99sCj+x@99qc9.CD99qc6+@A99qc;9q6Aq69.ABq6Aq66+>?q6Aq6;79J [BBBJOO3 3 PO3: : :: [],L,L,LMM	= 	= NM	= 	= 	=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                            dd          d             Zd ZdS )TestSomersDc                 V     j          j        z    _        t          j        d           j          j        z   ft          j        d           j          j        z   fd _         fd j        D             }t          j        t          j	        d           _
          j
        |  _        d S )Nr2   r  c                 6    g | ]}j         |         d          S )r   )	arguments)r  idxr%   s     r*   r  z,TestSomersD.setup_method.<locals>.<listcomp>  s%    HHH#t~c*1-HHHr,   r   r   )ALL_INTEGER	ALL_FLOATdtypesr"   r?   rZ  	functoolspartialrG  somersdpartialfuncr   )r%   input_arrays   ` r*   setup_methodzTestSomersD.setup_method  s    &7 imm".?A imm".?AB B IHHHHHH
 %,U]9DF F F((+6r,   c                      | j         | }t          |j        | j        j        d           t          |j        | j        j        d           d S )NrM  r6   )rb  r   rO   r   rQ   r%   r   rS   s      r*   pythranfunczTestSomersD.pythranfunc  sO    d%t}'>UKKKK
DM$8uEEEEEEr,   c                    g dg dg dg}t          j        |          }|                     t           j                  }t          j        |fi |}t          |j        |j        d           t          |j        |j        d           d S )N)rz         r3   r   )r3   rj     r5  r   )r   r!   r.   r3      rM  r6   )rG  ra  get_optional_argsr   rO   rQ   )r%   r   r	  optional_argsr
  s        r*   test_pythranfunc_keywordsz%TestSomersD.test_pythranfunc_keywords  s    ###%8%8%8:J:J:JK}U##..u}==}U44m44UCCC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        ||           d S )N)r0   r.   r   r!   r1   r/   r3   r4   )r0   r.   r1   r!   r   r4   r3   r/           r   r   rM  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'}'?rr  r   )g      r   )
r   r3   r4   r1   r0   r!   r/   r.   r   r   )g}'}'rr  )r   r.   r   r   r.   )r   r/   r3   r   r   )      g.ʂ?)r.   r.   r.   )r.   r   r.   g      $@g      4@)rG  ra  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mAq!!x{????
HQKe<<<< ('''''9mAq!!x{????
HQKe<<<< "!!!!!:mAq!!x{????
HQKe<<<< IbMMIbMM *mAq!!x{????
HQKe<<<< IbMMH333449mAq!!x{????
HQKe<<<< IbMMIbMM$$B$ +mAq!!x{????
HQKe<<<< IbMMH33344;mAq!!x{????
HQKe<<<< __:mB##x{????
HQKe<<<< mIIIyyy11rv...
BF+++mIIIyyy11rv...
BF+++mIIIyyy11rv...
BF+++mQC!%%rv...
BF+++ mB##rv...
BF+++ IcNNIcNNj%-A6666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
           d S )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((Ƿ?rM  r6   rj   )r!   r.   r.   r!   )rG  ra  r   rO   rQ   r   r   r  )r%   r&   r'   d_crd_rcr)   rS   s          r*   test_asymmetryzTestSomersD.test_asymmetry)  s    1 1 11 1 1 ! mAq!!t%8888
AD1111SY_f---mAq!!t%8888
AE2222SY_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        |           d S )Nr4   r.   r1   r0   r!   r/   r   gHHHHHH?ri  r   U   r;   )gM&w?r   gtE]t)r"   r#   Tr   rG  ra  rO   )r%   r   dyxdxys       r*   test_somers_originalz TestSomersD.test_somers_originalB  s   
 1a&1a&1a&1a&1a&ABBe,,6<<< 2q'B7QG455'Se,,6<<<eg..8#>>> 2q'Ar7RG455eg..8#>>>>>r,   c                 `   d}d}t          j        |          }t           j                            d           t          j                            |t          j        |          |z                                |          }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                   d S )Nr}   r/   r1   r   r)   r.   r   r   gayrM  r6   gPj$?)r"   prodr=   r>   rG  multinomialrvsr   reshapera  insertr#  r   rO   rQ   )r%   Nr  rD  r   rS   s2r
  s3r-  s4res4s               r*   *test_contingency_table_with_zero_rows_colsz6TestSomersD.test_contingency_table_with_zero_rows_colsX  s    wu~~
	q!!!rwt}}T'9!::BB5IImAYq!RXeAh//a888}R  Yq!RXeAh//a888}R  Yr1bhuQxz22;;;}R   	'9FFFFt~666t~666t~666
$5EBBBB
DK000
DK000
DK00000r,   c                 x   d}d}t          j        |          }t           j                            d           t          j                            |t          j        |          |z                                |          }|dz
  }d}t          t          |          5  t	          j        |           d d d            n# 1 swxY w Y   |dz   }d	}t          t          |          5  t	          j        |           d d d            n# 1 swxY w Y   d
}t          t          |          5  t	          j        g g           d d d            n# 1 swxY w Y   t          t          |          5  t	          j        dgg           d d d            n# 1 swxY w Y   t          j        d          }t          t          |          5  t	          j        |           d d d            n# 1 swxY w Y   d|d<   t          t          |          5  t	          j        |           d d d            d S # 1 swxY w Y   d S )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>   rG  r  r  r   r  rW   rX   ra  r#  )	r%   r  r  rD  r   s5messages6s7s	            r*   test_invalid_contingency_tablesz+TestSomersD.test_invalid_contingency_tablesw  s   wu~~
	q!!!rwt}}T'9!::BB5IIUN:W555 	 	M"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 XI:W555 	 	M"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,:W555 	  	 M2$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  :W555 	! 	!MA3%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! Xf:W555 	 	M"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 4:W555 	 	M"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sl   B??CC'DDD+EEE.FFFG''G+.G+H//H36H3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                   d S )Nr   r   g @)r!   r.   r   r   rt  )r"   rV   rG  ra  r   rO   rQ   )r%   r&   rv  r'   y2rS   r
  s          r*   test_only_ranks_matterz"TestSomersD.test_only_ranks_matter  s    II#rvIIwmAq!!}R$$S]DN333SZ-----r,   c                     t          j        d          }t          j        d          }t          j        ||          }t	          |j        t          j        d                     d S )Nr2   )r"   r?   rG  ra  r   r   eyerR   s       r*   test_contingency_table_returnz)TestSomersD.test_contingency_table_return  sM    IbMMIbMMmAq!!SYr

+++++r,   c                    g d}g d}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        ||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            d S # 1 swxY w Y   d S )Nr   )r0   r1   r3   r4   r3   r   r   r   r   r   r.   r   z`alternative` must be...rK   	ekki-ekki)
rG  ra  rO   r   r   rQ   reverserM   r   rX   )r%   ru  rv  r   rS   s        r*   test_somersd_alternativez$TestSomersD.test_somersd_alternative  s0    ____ =R[AAA!A%%%% mB777S]H$6777
A1)<$=>>> mB	:::S]H$6777
HOa$7888 	

 =R[AAA!A%%%% mB	:::S]H$6777
A1)<$=>>> mB777S]H$6777
HOa$7888]:-GHHH 	; 	;M"bk::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   >G##G'*G'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 d S )	Nr2   r   r   r   r   r   r   r   )r"   r?   fliprG  ra  rO   rQ   )r%   r  ru  rv  expected_statisticrS   s         r*    test_somersd_perfect_correlationz,TestSomersD.test_somersd_perfect_correlation  s	    Yr]]'8RRRWR[["6>QQB mB<<<} 22222zQ mB777} 22222z#7>aaQ???? mB	:::} 22222z#7>aaQ??????r,   c                     ddg}d}t          j        d           t          j        ||          }t          j        ||          }d}t          j        ||          j        }t          ||d           d S )	Nr   r.   @B i_ r   g Hz	YrM  r6   )r=   r>   choicesrG  ra  rO   r   )r%   classes	n_samplesr&   r'   val_sklearn	val_scipys          r*   !test_somersd_large_inputs_gh18132z-TestSomersD.test_somersd_large_inputs_gh18132  s     a&	GN7i000N7i000 , M!Q''1	YU;;;;;;r,   N)r_   r`   ra   rd  rg  ro  rw  r|  r  r  r  r  r  r  rM   r   r   r  r  rb   r,   r*   rW  rW    s       7 7 7F F F
	> 	> 	>m7 m7 m7^. . .2? ? ?,1 1 1>! ! !F	. 	. 	., , ,'; '; ';R [3]CC@ @ DC@0< < < < <r,   rW  c                      e Zd ZdZe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                            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                            dddgddggd-fg          d.             Z
e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                            dd	dgdd	ggd1fdd2gd3dggd4fd5d6gd7dggd8fg          ej                            d9d:d;g          d<                         Zd=S )>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   ri  )ggJ"?)g_c1gwݝل?r   r/   )g7@g      ?r!   )g~t,?3O?r1   )gr?~CY7?c                 d    t          |          }|j        |j        }}t          ||g|           dS )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
  s9    2 L))M3:6	F+X6666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                 h    t          |d          }|j        |j        }}t          ||g|           dS )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'  s>    2 L777M3:6	F+X66666r,   c                 v   d}t          t          |          5  t          ddgddggd           d d d            n# 1 swxY w Y   d	}t          t          |          5  t          t          j        d
                              dd                     d d d            n# 1 swxY w Y   d}t          t          |          5  t          ddgddgg           d d d            n# 1 swxY w Y   d}t          t          |          5  t          ddgddggd           d d d            d S # 1 swxY w Y   d S )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  sX    F 	 :Y777 	1 	1Aq6Aq6*a0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 E	:Y777 	6 	6")A,,..q!44555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 A	:Y777 	- 	-B7QF+,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 	 :Y777 	; 	;Aq6Aq6*M:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;E   =AA 6B""B&)B&C''C+.C+
D..D25D2rs  c                     t          |          }|j        |j        }}t          ||d                    t          ||d                    d S Nr   r   r   rO   rQ   r   r  s         r*   test_edge_casesz TestBarnardExact.test_edge_cases^  sL     L))M3:6	VXa[)))Y,,,,,r,   r   c                     t          |          }|j        |j        }}t          ||d                    t          ||d                    d S r  r  r  s         r*   test_row_or_col_zeroz%TestBarnardExact.test_row_or_col_zeroj  sL     L))M3:6	VXa[)))Y,,,,,r,   )r  gE\/??   ,  )ggQ5rr     r<   i  )g&X}>rr  r   r   r   c                     |\  }}|dk    r$t          j        |          dddddf         }| }t          ||          }|j        |j        }}t          ||g||gd           dS )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  s    , -5)))##8L11!!!TTrT':L*NMLkBBBM3: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    s       B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!  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!  7; ; ;4 [!fq!fx(	
 - - - [!fq"gbf.!fr1gbf.	
 - - - [!fq!f@A#ha!#:;2hq	"$;<	
  []Y,?@@
 
 A@ 
 
 
r,   r  c                      e Zd ZdZdZe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                            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                            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                            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                            d5d6          d7             Zd8S )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\   ri  )_VѶ?g֭?)u %?gc'?r   r/   r   r   r!   )ri   g      ?r   )+f?gXc}v?   %   )gZыD?ggi]?c                 v    t          |d          }|j        |j        }}t          ||g|| j                   dS )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  sE    2 \v>>>M3:6	F+XDIFFFFF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                 v    t          |d          }|j        |j        }}t          ||g|| j                   dS )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  sE    6 \yAAAM3:6	F+XDIFFFFFFr,   )r  gqQS,5?)r  gG?/??)r  gKE`?)r  ghr1ֽ?)r  grfb?)ri   g      ?)r  gP:pRv?c                 x    t          |dd          }|j        |j        }}t          ||g|| j                   dS )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  sG    0 \{bIIIM3:6	F+XDIFFFFFFr,   c                 v   d}t          t          |          5  t          ddgddggd           d d d            n# 1 swxY w Y   d	}t          t          |          5  t          t          j        d
                              dd                     d d d            n# 1 swxY w Y   d}t          t          |          5  t          ddgddgg           d d d            n# 1 swxY w Y   d}t          t          |          5  t          ddgddggd           d d d            d S # 1 swxY w Y   d S )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  sX    F 	 :Y777 	2 	2QFQF+q1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 E	:Y777 	7 	729Q<<//155666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 A	:Y777 	. 	.RGaV,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.
% 	 :Y777 	< 	<QFQF+];;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<r  c                     t          |          }|j        |j        }}t          ||d                    t          ||d                    d S r  )r   rO   rQ   r   r  s         r*   r  z&TestBoschlooExact.test_row_or_col_zero  sL     \**M3:6	VXa[)))Y,,,,,r,   c                     ddgddgg}t          |d          j        }t          |d          j        }dt          ||          z  dk    sJ t          |d          j        }|d	k    sJ d S )
Nr   r   r   r   r   r   r.   r   r   )r   rQ   rI  )r%   tblplpgpts        r*   test_two_sided_gt_1z%TestBoschlooExact.test_two_sided_gt_1  s     1vBx CV444;CY777>R}q    C[999@Syyyyyyr,   r   )r   r   c                     ddgddgg}t          ||          j        }t          j        ||          d         }t	          ||           d S )Nr.   r3   r4   r   r   )r   rO   rG  fisher_exactr   )r%   r   r  boschloo_statfisher_ps        r*   test_against_fisher_exactz+TestBoschlooExact.test_against_fisher_exact)  s[     1v1v&sDDDN%c{CCCAFx0000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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 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!  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 G < < <4 [!fq"g 01!fr1g 01	
 - - -   [],?@@1 1 A@1 1 1r,   r  c                   6   e Zd Zej                            dg  ej        d          f ej        d          dgfg          d             Zd Z	d Z
d Zej                            dg d	          d
             Zej        j        d             Zd Zd Zd ZdS )TestCvm_2sampr   r0   r   c                    t          j        t          t                    5  t	          | }t          |j        t          j                   t          |j	        t          j                   d d d            d S # 1 swxY w Y   d S )NrK   )
rM   rN   r   r   r   r   rO   r"   rP   rQ   rf  s      r*   test_too_small_inputz"TestCvm_2samp.test_too_small_input4  s     \,4IJJJ 	- 	-&-C///RV,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   AA66A:=A:c                     t          j        d          }d}t          j        t          |          5  t          ||d           d d d            d S # 1 swxY w Y   d S )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<  s    IaLL?]:S111 	. 	. Au---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   AAAc                     g d}g d}t          ||          }t          t          j        |          t          j        |                    }t          |j        |j        f|j        |j        f           d S )N)r.   r!   r/   r3   r1   )r   r   r   rk  )r   r"   r#   r   rO   rQ   r%   r&   r'   r   r   s        r*   test_list_inputzTestCvm_2samp.test_list_inputB  sl    OO!!Q''!"(1++rx{{;;blBI.ry0IJJJJJr,   c                     g d}g d}t          ||          }t          |j        dd           t          |j        dd           d S )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  sc     =<<   A&&U6666$T22222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                 D    t          t          |||          |           d S r   )r   r   )r%   rO   r  r   pvals        r*   test_exact_pvaluezTestCvm_2samp.test_exact_pvalueS  s'     	*9a;;TBBBBBr,   c                    t           j                            d           t          j                            d          }t          j                            d          }t          ||          }t          d|j        cxk     odk     nc            t          ||dz             }t          d|j        cxk     odk     nc            d S )Ni  r  rC  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0"""// A&&AH    q    !!! AcE**AH    q    !!!!!r,   c                 t   t           j                            d           t           j                            d          }t           j                            d          }t	          ||d          }t	          ||d          }t          |j        |j                   t          |j        |j        d           d S )	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  s    
	qINN1INN1!!Qw777!!Q|<<<R\2<000	294888888r,   c                 V   t          j        d          }g d}t          ||d          }t          ||d          }t          |j        |j                   t          j        d          }t          ||d          }t          ||d          }t          |j        |j                   d S )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    IbMM!!Qw777!!Qv666RY	***IbMM!!Q|<<<!!Qv666RY	*****r,   c                     t          j        d          }t          ||          }t          |j        |j        fd           t          |d d         |d d                   }t          |j        |j        fd           d S )Nr  rq  r/   )r"   r?   r   r   rO   rQ   r   s      r*   test_same_inputzTestCvm_2samp.test_same_input  sw     IbMM"1a((cmSZ0*==="1RaR5!BQB%00cmSZ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  s1       [Vr929Q<<&8'0ry||aS&9&; < <- -< <-. . .K K K3 3 3 [45 5 56 6
C C6 6
C [	" 	" 	"9 9 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
                            d
eedfeedfeedffg d          d             ZdZdZe	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
                            dd          d             Ze	j
                            d g d!          d"             Zd# Zd$S )%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                 f   t          j        |                    dd                                          dd         t                                        d          }t          j        | }|                                }|D ]\  }}}	}
}}t          |          dz
  t          |          dz
  }}t          |j        ||f         |	|           t          |j        ||f         |
|           t          |j        ||f         ||           t          |j        ||f         d	k    |dk               dS )
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  rG  	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 Z 6 6uc B B H H J J122 N&+- - --4WV__ 	OT*	,,..", 	G 	GAq!Q3q66A:s1vvzqADHQTNAD9999I/15qtDDDDDIadOQT::::Y-ad3s:SAXFFFF	G 	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
        r1  r  r!  zunequal size samplec                 "   t          j        |                                t                                        d          }t          j        | }|                                }|D ]\  }}}	}
}}t          |          dz
  t          |          dz
  }}t          |j
        ||f         |	|           t          |j        ||f         |
|           t          |j        ||f         ||           t          |j        ||f         ||           dS )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  rG  r-  r.  r/  r   r0  rO   r1  rQ   )r%   r2  r3  r7   r4  r5  r6  r  r7  r8  r   r9  r)   s                r*   test_compare_matlabz TestTukeyHSD.test_compare_matlab  s     Z 4 4 6 6&+- - --4WV__ 	OT*	,,.. * 	B 	BAq!Q1q66A:s1vvzqADHQTNAD9999I/15qtDDDDDIadOQT::::I,QT2ADAAAAA	B 	Br,   c                 t   d}t          j        |                    dd                                          dd         t                                        d          }g dg d	g d
f}t          j        | }|                                }|D ]\  }}}}	}
}t          |          dz
  t          |          dz
  }}t          |j        ||f         |	d           t          |j        ||f         |d           t          |j        ||f         |
d           t          |j        ||f         |d           dS )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&  r=  )   r;   6   ri  F   4   3   r@  C   rz   rj        rF     )   r\   ,   )rk  r  rF  rl  r   rk  r5  r;   $   *   r@  rG  r   r  r<   r  r  rF  )rK  r  r  rk  r2   r  r<   r  r@  r\   r  r  rl  r   r  r  r   r<   r   r  r6   r   gh㈵>r(  )r%   str_resr4  r2  r5  r6  r  r7  r   r8  r9  r)   s               r*   test_compare_rzTestTukeyHSD.test_compare_r	  st    Zs ; ; A A C CABB G&+- - --4WV__ 	5 5 55 5 55 5 5	6 OT*	,,.. * 	B 	BAq!Q1q66A:s1vvzqADHQTNAD9999I/15qtDDDDDIadOQT::::I,QT2ADAAAAA	B 	Br,   c                    g d}g d}g d}g d}t          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 ]S\  }	}
t          |j        |	|
f         ||	|
f         d           t          |j        |	|
f         ||	|
f         d           TdS )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 @rP  r  )rQ  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  ry  rg   r6   N)rG  r-  r.  r"   r)  r   r0  r1  )r%   group1group2group3group4rS   r6  lowerupperr  r7  s              r*   test_engineering_stat_handbookz+TestTukeyHSD.test_engineering_stat_handbook2  s:   
 +*****+++***offff==&&((
   LL	  
 
OO!!!LL	   ? 	E 	EFQDHQTNE!Q$KdCCCCDIadOU1a4[tDDDDD	E 	Er,   c                    t           j                            d           t           j                            dd          }t	          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           d S )Nr:   r!   r}   r   r   r   r   )r"   r=   r>   r   rG  r-  r.  r   r0  r1  r  diagonalrO   rQ   )r%   r2  rS   r6  s       r*   test_rand_symmzTestTukeyHSD.test_rand_symmL  s   
	ty~~a%%ot$&&((TX	|,,, 	R[++TYt_===R[**DHTN;;;S]S]_$4555R[//333SZ...R[,,a00000r,   c                     t          t          d          5  t          j        g ddt          j        gg d           d d d            d S # 1 swxY w Y   d S )Nz...must be finite.rK   r   r.   )r1   r3   r!   )rW   rX   rG  r-  r"   rV   rl   s    r*   test_no_infzTestTukeyHSD.test_no_inf_  s    :-ABBB 	? 	?OIII26{III>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   'AAAc                     t          t          d          5  t          j        ddgddggddgg d           d d d            d S # 1 swxY w Y   d S )Nz...must be one-dimensionalrK   r   r.   r!   r0   )r0   r   r1   rW   rX   rG  r-  rl   s    r*   
test_is_1dzTestTukeyHSD.test_is_1dc  s    :-IJJJ 	B 	BOaVaV,q!fjjjAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   !AA	A	c                     t          t          d          5  t          j        g ddgg d           d d d            d S # 1 swxY w Y   d S )Nz...must be greater than onerK   r.   r0   )r/   r0   r1   ra  rl   s    r*   test_no_emptyzTestTukeyHSD.test_no_emptyg  s    :-JKKK 	3 	3OBA			222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   ?AAnargsr  c                     t          t          d          5  t          j        g dg|z    d d d            d S # 1 swxY w Y   d S )Nz...more than 1 treatment.rK   r   r3   r!   ra  )r%   re  s     r*   test_not_enough_treatmentsz'TestTukeyHSD.test_not_enough_treatmentsk  s    :-HIII 	5 	5OzzzlU244	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   9= =cl)rt  r   r   r.   c                     t          t          d          5  t          j        g dddgddg          }|                    |           d d d            d S # 1 swxY w Y   d S )Nzmust be between 0 and 1rK   rg  r!   r/   r   )rW   rX   rG  r-  r.  )r%   ri  r  s      r*   test_conf_level_invalidz$TestTukeyHSD.test_conf_level_invalidp  s    :-FGGG 	& 	&


QFQF;;A!!"%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   2AAAc                     t          j        | j        d d          }t          j        | j        d d          }t	          |j        |j        d                    t	          |j        |j        d                    d S )Nr.   r  rR  )rG  r-  data_diff_size	ttest_indr   rQ   )r%   r5  	res_ttests      r*   test_2_args_ttestzTestTukeyHSD.test_2_args_ttestv  sn    OT%8!%<=	OT%8!%<=		()*:4*@AAA	()*:4*@AAAAAr,   N)r_   r`   ra   data_same_sizerm  extreme_sizesas_same_sizesas_diff_sizesas_extremerM   r   r   r;  matlab_sm_sizmatlab_diff_szr>  rN  rY  r]  r_  rb  rd  rh  rk  rp  rb   r,   r*   r  r    sU       4444444446N HGG4444446N '&&  2224L
MMK [7-}dC-}dC+[%@ "E "E "E  F F#G #GF F#GJMN [7-}eD-~tDF"5"7"9  : :
B B: :
B*'B 'B 'BRE E E41 1 1&? ? ?B B B3 3 3 [Wf--5 5 .-5 [T>>>22& & 32&
B B B B Br,   r  c                       e Zd Zej                            dg dg df          d             Ze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
dS )TestPoissonMeansTestzc1, n1, c2, n2, p_expect)r   r}   r!   r}   gea?)r.   r}   r1   r}   g	c?c                 b    t          j        ||||          }t          |j        |d           d S )Nrj   r6   rG  poisson_means_testr   rQ   )r%   c1n1c2n2p_expectrS   s          r*   test_paper_examplesz(TestPoissonMeansTest.test_paper_examples  s7     &r2r266
H488888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                 j    t          j        ||||||          }t          |j        |dd           d S )N)r   diffg>gؗҜ<r7   r?  r{  )	r%   r}  r~  r  r  r  altdrS   s	            r*   test_fortran_authorsz)TestPoissonMeansTest.test_fortran_authors  s@    $ &r2r23QOOO
H4eDDDDDDr,   c                 r    d\  }}d\  }}t          j        ||||          }t          |j        d           d S )N)r~   r~   r   r{  r%   count1count2nobs1nobs2rS   s         r*   test_different_resultsz+TestPoissonMeansTest.test_different_results  sD     &#u&vufeDD
A&&&&&r,   c                 r    d\  }}d\  }}t          j        ||||          }t          |j        d           d S )Nr[  r  r   r{  r  s         r*   test_less_than_zero_lambda_hat2z4TestPoissonMeansTest.test_less_than_zero_lambda_hat2  sD     u&vufeDD
A&&&&&r,   c                    d\  }}d\  }}d}t          t          |          5  t          j        d|||           d d d            n# 1 swxY w Y   t          t          |          5  t          j        ||d|           d d d            n# 1 swxY w Y   d}t          t          |          5  t          j        d|||           d d d            n# 1 swxY w Y   t          t          |          5  t          j        ||d|           d d d            n# 1 swxY w Y   d}t          t          |          5  t          j        |d||           d d d            n# 1 swxY w Y   t          t          |          5  t          j        |||d           d d d            n# 1 swxY w Y   d	}t          t          |          5  t          j        ||||d
           d d d            n# 1 swxY w Y   d}t          t          |          5  t          j        ddddd           d d d            d S # 1 swxY w Y   d S )Nr[  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   	TypeErrorrG  r|  rX   )r%   r  r  r  r  r  s         r*   r   z*TestPoissonMeansTest.test_input_validation  s   u 49G444 	? 	?$R>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?9G444 	? 	?$VUB>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? F:W555 	? 	?$R>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?:W555 	? 	?$VUB>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? ::W555 	@ 	@$VR???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@:W555 	@ 	@$VUFB???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ =:W555 	L 	L$VUFEKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 3:W555 	F 	F$Q1aWEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   AAA(BBB/CCC4DDD;EE#&E# F$$F(+F(G--G14G1H77H;>H;N)r_   r`   ra   rM   r   r   r  r  r  r  r   rb   r,   r*   ry  ry  ~  s       [7      :  
9 9 
9 [?
 	=<<<<<===>>>999;;; 	655666B  "E E# "E' ' '' ' '!F !F !F !F !Fr,   ry  c                       e Zd Zd Zd Zej                            dg d          d             Zej                            dg d          d             Z	d Z
d	 Zd
S )TestBWSTestc                    t           j                            d          }|                    d          \  }}d}t          j        t
          |          5  t          j        ||g||g           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t          j        t           j        g|           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t          j        |g            d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t          j        ||d	
           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t          j        ||d           d d d            d S # 1 swxY w Y   d S )N   <ovT{ r.   r3   rC  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...rL  r   )	r"   r=   rE  rM   r   rX   rG  bws_testrP   )r%   rJ  r&   r'   r  s        r*   test_bws_input_validationz%TestBWSTest.test_bws_input_validation  s   i##$788zzvz&&1@]:W555 	+ 	+NAq6Aq6***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 7]:W555 	( 	(NBF8Q'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 9]:W555 	" 	"N1b!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 3]:W555 	: 	:N1a[9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 6]:W555 	, 	,N1a++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,sZ   A<<B B $!CCC9DD"DE''E+.E+F44F8;F8c                     g d}g d}t          j        ||d          }t          |j        dd           t	          |j        d           d S )	N)r   r.   r!   r/   r1   r3   r4   )r0   r   r2   r   r   r   rj  r   r   gI+@r5   r6   gf$/g?)rG  r  r   rO   r   rQ   rR   s       r*    test_against_published_referencez,TestBWSTest.test_against_published_reference  s_     "!!&&&nQ{;;;u48888SZ)))))r,   )r   rO   rQ   ))r   g
-?g4B/?)r   
-g0&v?)r   r  g(?c                    t           j                            d          }|                    d          \  }}t          j        |||          }t          |j        |d           t          |j        |dd	           d S )
Nr  r  rC  r   vIh%<=r>  rg   r   r  r"   r=   rE  rG  r  r   rO   rQ   r%   r   rO   rQ   rJ  r&   r'   rS   s           r*   test_against_RzTestBWSTest.test_against_R  s}     i##$788zzvz&&1nQ{;;;yu====
FDAAAAAAr,   ))r   gD5H?gdԕ?)r   `ч?gȲךX?)r   r  g4)?c                 (   t           j                            d          }|                    d          }|                    d          }t          j        |||          }t          |j        |d           t          |j        |dd	
           d S )Nl   .sZ r   rC  r4   r   r  r>  rg   r   r  r  r  s           r*   test_against_R_imbalancedz%TestBWSTest.test_against_R_imbalanced	  s     i##$788JJAJJJAJnQ{;;;yu====
FDAAAAAAr,   c                    t           j                            d          }|                    d          \  }}t           j                            d          }t          j        d|          }t          j        |||          }t          |j                  dk    sJ t           j                            d          }t          j        d|          }t          j        |||          }t          |j        |j                   t           j                            d          }t          j        d|          }t          j        |||          }t          j	        |j        |j                  rJ d S )N   /HN( )r.   r2   rC  r2   )n_resamplesrJ  r   l   VC	A )
r"   r=   rE  rG  rN  r  r   null_distributionr   allclose)r%   rJ  r&   r'   r   r	  r
  r-  s           r*   test_methodzTestBWSTest.test_method  sH   i##$788zzwz''1i##$788(RSAAA~a62224)**b0000i##$788(RSAAA~a6222.0FGGGi##$788(RSAAA~a6222;t5t7MNNNNNNNr,   c                    t           j                            d          }|                    d          }|dz
  }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           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           d S )	Nr  r0   rC  r   r   r   r   r   )
r"   r=   rE  rG  r  rO   r   rQ   r   r  )r%   rJ  r&   r'   rS   s        r*   test_directionszTestBWSTest.test_directions2  sF   i##$788JJAJEnQy999}q    SZS)>%?%?!?@@@nQv666}q    SZ###nQv666}q    SZS)>%?%?!?@@@nQy999}q    SZ#####r,   N)r_   r`   ra   r  r  rM   r   r   r  r  r  r  rb   r,   r*   r  r    s        , , ,4* * * [CN N NO OB B	O OB [CN N NO OB B	O OBO O O.$ $ $ $ $r,   r  ).	itertoolsr   numpyr"   r=   r_  rM   numpy.testingr   r   r   r   r   rW   scipy.statsrG  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   rW  r  r  r  r  ry  r  rb   r,   r*   <module>r     sr                  0 0 0 0 0 0 0 0 0 0 0 0 * * * * * *       % % % % % %4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 E D D D D D D D D D - - - - - - 2 2 2 2 2 2 R R R R R R R R4- 4- 4- 4- 4- 4- 4- 4-nZK ZK ZK ZK ZK ZK ZK ZKzl= l= l= l= l= l= l= l=^j< j< j< j< j<" j< j< j<ZP
 P
 P
 P
 P
 P
 P
 P
fV1 V1 V1 V1 V1 V1 V1 V1rU> U> U> U> U> U> U> U>ppB pB pB pB pB pB pB pBfQF QF QF QF QF QF QF QFht$ t$ t$ t$ t$ t$ t$ t$ t$ t$r,   