
    Ug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,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   )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/surfInsights/venv3-11/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          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%   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.   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    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.   r/   r1   )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:   )rN   rP   )r!   r>   r
   r   )r$   r%   r&   rR   
attributess        r)   
test_nameszTestEppsSingleton.test_namesG   sE    y}}bimm1"1a((,
C,,,,,r+   N)	__name__
__module____qualname__r*   r7   rG   rS   rY   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?r5   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 ?r1   )rf   rg   rh   g333333?ri   r5   rj   rk   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?  re   ri   r5   rj   rk   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?re   ri   r5   rj   rk   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   rk   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)rs   rt   ru   rv   d   '  ri   r5   rj   rk   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@rp         ?)r   r   rk   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   rN   r   rP   )r$   nrR   s      r)   
test_low_pzTestCvm.test_low_p   s[     RWQZZ^V44**S0111SZ#####r+   r%   ra         ?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 )NrJ   r   )
rL   rM   r   r   r   r   rN   r!   rO   rP   r$   r%   rR   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?ư>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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 )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677Aw''blBI.ry0IJJJA}15t<<Avt,,blBI.ry0IJJJJJr+   N)r^   r_   r`   rl   rn   rq   rw   rz   r~   r   r   rL   markparametrizer   r   r   ra   r+   r)   rc   rc   N   s                J J J
  1 1 1$ $ $ [S2u+..- - /.-< < <$K K K K Kr+   rc   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   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    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 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/   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   r3   
asymptoticr   exactr    )r!   r<   r=   randr   rP   )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   rR   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 )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     LLXooo&&Xooo&&t+h'',WbeRVRCB4@1ab>>>///
I I 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}|                                D ]P\  }}|                                D ]4\  }}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          ||	           6Rd S )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   xDHdhGG (( 	+ 	+HAu + +1IaQ((%a+++
 3 3 3QTBBBB Yq!A#a%((
 4 4 4",-""5"5"5!6",.2"6"6"6!789; ; ;
 !nr***S2Y/// %a+++!~+++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   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 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   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  s     YYYc
$+- - -YYYc
	$+- - -U\5<000|c!!!!999sCjk")+ + +S&!!!!!r+   r   r   )r   rh   )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   )rh   r   r   F)r   r   rh   )r   r   r!   rO   rk   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   )r2   r1   r    r3   r0   r   r   )r   r   )r0   r    r3   r   )N.c                 ,    g | ]}t          |          S ra   )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   rP   shaperN   moveaxisndimbroadcast_tozerosr   testingr   )r$   r   r   r   r   r%   r&   rR   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 )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    LL---Aq!! v!Aq!!T^T^444T[$+... v!Aq!!T^RV,,,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           d S )Nr   r   -q=r5   )r   r   rN   rP   )r$   r%   r&   rN   rP   rR   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   rN   r   rP   )	r$   r   r   r   r0  statistic_expr%   r&   rR   s	            r)   test_gh_9184zTestMannWhitneyU.test_gh_9184/  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"   rO   r   r   rN   rP   )r$   abrR   s       r)   test_gh_4067zTestMannWhitneyU.test_gh_4067N  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   r3  r.  rtol)r   r   )r$   r%   r&   r   r   rR   s         r)   test_gh_2118zTestMannWhitneyU.test_gh_2118f  s>     1a+".0 0 0XE222222r+   c                    t           j                            d          }d\  }}|                    |          }|                    |          }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 d S )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  s`   
 i##$7881JJAJJJAJ Ag666)/RyCqsS]/BCCaGGGGG1a0000
177777
 	1ac'yIIII)/RyA~~~~1Q3'yIIII
17777777r+   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 )
Nr?  )r-   r/   r@  )r-   r0   r   )r   r   r   r   V瞯<r;  )	r!   r<   rB  rD  r   PermutationMethodr   rN   rP   )r$   r   rG  r%   r&   rR   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_   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_9184r5  r9  
cases_2118r=  rH  rL  ra   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+ + +4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8 8 84 [],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 )Nr1   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>   rW  	functoolspartialrD  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 )NrJ  r5   )r_  r   rN   r   rP   r$   r   rR   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)ry         r2   r   )r2   rg     r2  r   )r   r    r-   r2      rJ  r5   )rD  r^  get_optional_argsr   rN   rP   )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)r/   r-   r   r    r0   r.   r2   r3   )r/   r-   r0   r    r   r3   r2   r.           r   r   rJ  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'}'?ro  r   )g      r   )
r   r2   r3   r0   r/   r    r.   r-   r   r   )g}'}'ro  )r   r-   r   r   r-   )r   r.   r2   r   r   )      g.ʂ?)r-   r-   r-   )r-   r   r-   g      $@g      4@)rD  r^  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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((Ƿ?rJ  r5   ri   )r    r-   r-   r    )rD  r^  r   rN   rP   r   r   r  )r$   r%   r&   d_crd_rcr(   rR   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 )Nr3   r-   r0   r/   r    r.   r   gHHHHHH?rf  r   U   r:   )gM&w?r   gtE]t)r!   r"   Tr   rD  r^  rN   )r$   r   dyxdxys       r)   test_somers_originalz TestSomersD.test_somers_original=  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.   r0   r   r(   r-   r   r   gayrJ  r5   gPj$?)r!   prodr<   r=   rD  multinomialrvsr   reshaper^  insertr   r   rN   rP   )r$   Nr  rA  srR   s2r  s3r*  s4res4s               r)   *test_contingency_table_with_zero_rows_colsz6TestSomersD.test_contingency_table_with_zero_rows_colsS  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-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=   rD  r  r  r   r  rV   rW   r^  r   )	r$   r  r  rA  r  s5messages6s7s	            r)   test_invalid_contingency_tablesz+TestSomersD.test_invalid_contingency_tablesr  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   rq  )r!   rU   rD  r^  r   rN   rP   )r$   r%   rs  r&   y2rR   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 )Nr1   )r!   r>   rD  r^  r   r   eyerQ   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   )r/   r0   r2   r3   r2   r   r   r   r   r   r-   r   z`alternative` must be...rJ   	ekki-ekki)
rD  r^  rN   r   r   rP   reverserL   r   rW   )r$   rr  rs  r   rR   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 )	Nr1   r   r   r   r   r   r   r   )r!   r>   fliprD  r^  rN   rP   )r$   r  rr  rs  expected_statisticrR   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	YrJ  r5   )r<   r=   choicesrD  r^  rN   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_   r`   ra  rd  rl  rt  ry  r  r  r  r  r  r  rL   r   r   r  r  ra   r+   r)   rT  rT    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+   rT  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  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   rf  )ggJ"?)g_c1gwݝل?r   r.   )g7@g      ?r    )g~t,?3O?r0   )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   rN   rP   r   r$   input_sampler   rR   rN   rP   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 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?  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rp  c                     t          |          }|j        |j        }}t          ||d                    t          ||d                    d S Nr   r   r   rN   rP   r   r  s         r)   test_edge_casesz TestBarnardExact.test_edge_casesY  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_zeroe  sL     L))M3:6	VXa[)))Y,,,,,r+   )r  gE\/??   ,  )ggQ5ro     r;   i  )g&X}>ro  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>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  s    , -5)))##8L11!!!TTrT':L*NMLkBBBM3: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    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-   r2   r3   )<vB\?g/??r/   r   r1   )gM?gA>?r   r[   rf  )_VѶ?g֭?)u %?gc'?r   r.   r   r   r    )rh   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   r5   Nr   rN   rP   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|?r0   )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   r5   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?)rh   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   r5   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  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  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   rN   rP   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   rP   rF  )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-   r2   r3   r   r   )r   rN   rD  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_   r`   r  r  rL   r   r   r  r  r  r  r!   rO   r  r  r  ra   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   r/   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 )NrJ   )
rL   rM   r   r   r   r   rN   r!   rO   rP   rc  s      r)   test_too_small_inputz"TestCvm_2samp.test_too_small_input/  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 )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    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.   r2   r0   )r   r   r   rh  )r   r!   r"   r   rN   rP   r$   r%   r&   r   r   s        r)   test_list_inputzTestCvm_2samp.test_list_input=  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㥛?r4   r5   g
ףp=
?rf   )r   r   rN   rP   r$   r%   r&   rs       r)   test_example_conoverz"TestCvm_2samp.test_example_conoverD  sc     =<<   A&&U6666$T22222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                 D    t          t          |||          |           d S r   )r   r   )r$   rN   r   r   pvals        r)   test_exact_pvaluezTestCvm_2samp.test_exact_pvalueN  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  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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   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  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[   )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    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  rn  r.   )r!   r>   r   r   rN   rP   r   s      r)   test_same_inputzTestCvm_2samp.test_same_inputz  sw     IbMM"1a((cmSZ0*==="1RaR5!BQB%00cmSZ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  .  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,atolri   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;
         -  r/   Ndtype)r0   r0   r   r5   rg   r!   asarrayreplacesplitfloatr  rD  	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 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
        r.  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    r0   r   r5   N)r!   r'  r)  r*  r  rD  r+  r,  r-  r   r.  rN   r/  rP   )r$   r0  r1  r6   r2  r3  r4  r  r5  r6  r  r7  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#  r/   Nr$  r;  )   r:   6   rf  F   4   3   r>  C   ry   rg        rD     )   r[   ,   )rh  r  rD  ri  r   rh  r2  r:   $   *   r>  rE  r   r  r;   r  r  rD  )rI  r  r  rh  r1   r  r;   r  r>  r[   r  r  ri  r   r  r  r   r;   r   r  r5   r   gh㈵>r&  )r$   str_resr2  r0  r3  r4  r  r5  r  r6  r7  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 @rN  r  )rO  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  rv  rf   r5   N)rD  r+  r,  r!   r'  r   r.  r/  )r$   group1group2group3group4rR   r4  lowerupperr  r5  s              r)   test_engineering_stat_handbookz+TestTukeyHSD.test_engineering_stat_handbook-  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 )Nr9   r    r|   r   r   r   r   )r!   r<   r=   r   rD  r+  r,  r   r.  r/  r|  diagonalrN   rP   )r$   r0  rR   r4  s       r)   test_rand_symmzTestTukeyHSD.test_rand_symmG  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.rJ   r   r-   )r0   r2   r    )rV   rW   rD  r+  r!   rU   rk   s    r)   test_no_infzTestTukeyHSD.test_no_infZ  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-dimensionalrJ   r   r-   r    r/   )r/   r   r0   rV   rW   rD  r+  rk   s    r)   
test_is_1dzTestTukeyHSD.test_is_1d^  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 onerJ   r-   r/   )r.   r/   r0   r_  rk   s    r)   test_no_emptyzTestTukeyHSD.test_no_emptyb  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.rJ   r   r2   r    r_  )r$   rc  s     r)   test_not_enough_treatmentsz'TestTukeyHSD.test_not_enough_treatmentsf  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)rq  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 1rJ   re  r    r.   r   )rV   rW   rD  r+  r,  )r$   rg  r  s      r)   test_conf_level_invalidz$TestTukeyHSD.test_conf_level_invalidk  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  rP  )rD  r+  data_diff_size	ttest_indr   rP   )r$   r3  	res_ttests      r)   test_2_args_ttestzTestTukeyHSD.test_2_args_ttestq  sn    OT%8!%<=	OT%8!%<=		()*:4*@AAA	()*:4*@AAAAAr+   N)r^   r_   r`   data_same_sizerk  extreme_sizesas_same_sizesas_diff_sizesas_extremerL   r   r   r9  matlab_sm_sizmatlab_diff_szr<  rL  rW  r[  r]  r`  rb  rf  ri  rn  ra   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|   r0   r|   g	c?c                 b    t          j        ||||          }t          |j        |d           d S )Nri   r5   rD  poisson_means_testr   rP   )r$   c1n1c2n2p_expectrR   s          r)   test_paper_examplesz(TestPoissonMeansTest.test_paper_examplesz  s7     &r2r266
H488888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                 j    t          j        ||||||          }t          |j        |dd           d S )N)r   diffg>gؗҜ<r6   r<  ry  )	r$   r{  r|  r}  r~  r  altdrR   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   ry  r$   count1count2nobs1nobs2rR   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 )NrY  r  r   ry  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 )NrY  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   	TypeErrorrD  rz  rW   )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_   r`   rL   r   r   r  r  r  r  r   ra   r+   r)   rw  rw  y  s       [7      :  
9 9 
9 [?
 	=<<<<<===>>>999;;; 	655666B  "E E# "E' ' '' ' '!F !F !F !F !Fr+   rw  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-   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...rJ  r   )	r!   r<   rB  rL   r   rW   rD  bws_testrO   )r$   rG  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.   r0   r2   r3   )r/   r   r1   r   r   r   rg  r   r   gI+@r4   r5   gf$/g?)rD  r  r   rN   r   rP   rQ   s       r)    test_against_published_referencez,TestBWSTest.test_against_published_reference  s_     "!!&&&nQ{;;;u48888SZ)))))r+   )r   rN   rP   ))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  r@  r   vIh%<=r;  rf   r   r  r!   r<   rB  rD  r  r   rN   rP   r$   r   rN   rP   rG  r%   r&   rR   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   r@  r3   r   r  r;  rf   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-   r1   r@  r1   )n_resamplesrandom_stater   l   VC	A )
r!   r<   rB  rD  rK  r  r   null_distributionr   allclose)r$   rG  r%   r&   r   r  r  r*  s           r)   test_methodzTestBWSTest.test_method  sH   i##$788zzwz''1i##$788(RcJJJ~a62224)**b0000i##$788(RcJJJ~a6222.0FGGGi##$788(RcJJJ~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  r/   r@  r   r   r   r   r   )
r!   r<   rB  rD  r  rN   r   rP   r   r  )r$   rG  r%   r&   rR   s        r)   test_directionszTestBWSTest.test_directions-  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_   r`   r  r  rL   r   r   r  r  r  r  ra   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\  rL   numpy.testingr   r   r   r   r   rV   scipy.statsrD  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   rT  r  r  r  r  rw  r  ra   r+   r)   <module>r     sk                  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 ? > > > > > > > - - - - - - 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g= g= g= g= g= g= g= g=T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+   