
     hk                       d dl mZ d dlZd dlZd dlZd dlmZmZm	Z	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  G d d          Z G d d          Z  G d d          Z! G d de!          Z"ej#        j$        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+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)_TestPythranFuncc                   8    e Zd 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/Sam_Eipo/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         r-   r-   r-      
   r/   r/   r/   )r/   r,   r   r-   r/   r/   r   r-   r.      r/   r   r   r0   r      r   r-   r1   r/   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                 j    dt          j        d          }}t          t          t          ||           d S )Nr   r+   r   r,   r/   )r   r<   assert_raises
ValueErrorr
   r"   r#   r$   s      r'   test_epps_singleton_sizez*TestEppsSingleton.test_epps_singleton_size8   s.    RYr]]1j"61=====r)   c                    dddddt           j        ft          j        d          }}t          t          t
          ||           t          j        d          dddddt           j        f}}t          t          t
          ||           d S )Nr   r+   r   r,   r-   r/   )r   infr<   rH   rI   r
   nanrJ   s      r'   test_epps_singleton_nonfinitez/TestEppsSingleton.test_epps_singleton_nonfinite=   sr    1aArv&	"1j"61===y}}q!Q1bf51j"61=====r)   c                     t          j        d                              dd          }t          t          t
          ||           d S )Nd   r   )r   r<   reshaperH   rI   r
   r"   r#   s     r'   test_epps_singleton_1d_inputz.TestEppsSingleton.test_epps_singleton_1d_inputD   s:    IcNN""2q))j"61=====r)   c                     t          j        d          t          j        d          }}t          ||          }d}t          ||           d S )N   r8   )	statisticpvalue)r   r<   r
   r   )r"   r#   r$   res
attributess        r'   
test_nameszTestEppsSingleton.test_namesH   sE    y}}bimm1"1a((,
C,,,,,r)   N)
__name__
__module____qualname__r(   r5   rE   rK   rO   rU   r\    r)   r'   r   r      s}        3 3 33 3 3	  	  	 > > >
> > >> > >- - - - -r)   r   c                   P    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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?r3   r   r   r"   s    r'   
test_cdf_4zTestCvm.test_cdf_4S   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 ?r/   )re   rf   rg   g333333?rh   r3   ri   rj   s    r'   test_cdf_10zTestCvm.test_cdf_10Y   sC    ===rBB(((	 	 	 	 	 	r)   c                 N    t          t          g dd          g dd           d S )N)g}tg?g`?gI5o?gׁsF?  rd   rh   r3   ri   rj   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?rd   rh   r3   ri   rj   s    r'   test_cdf_infzTestCvm.test_cdf_infe   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   rj   s    r'   test_cdf_supportzTestCvm.test_cdf_supportk   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)rr   rs   rt   ru   rQ   '  rh   r3   ri   rj   s    r'   test_cdf_large_nzTestCvm.test_cdf_large_np   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@ro         ?)r   r   rj   s    r'   test_large_xzTestCvm.test_large_xw   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   rX   r   rY   )r"   nrZ   s      r'   
test_low_pzTestCvm.test_low_p   s[     RWQZZ^V44**S0111SZ#####r)   c                     t          j        d                              d          }t          t          t
          |d           t          t          t
          dgd           t          t          t
          dd           d S )Nr/   r+   r-   r         ?r`   )r   r<   rS   rH   rI   r   rT   s     r'   test_invalid_inputzTestCvm.test_invalid_input   sa    IbMM!!&))j.!V<<<j.3%@@@j."f=====r)   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?ư>r3   gEж?)r   r   g!O!W*?gz"W`?)	r   r+   r-   ffffff?gQ?      ?      @exponge.?gnz\(r?)r   r   rX   rY   )r"   rZ   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   rX   rY   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_   rk   rm   rp   rv   ry   r|   r   r   r   r   r   r`   r)   r'   rb   rb   O   s                J J J
  1 1 1$ $ $> > >< < <$K K K K Kr)   rb   c                      e Zd Z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 d,d-Zg d.g d/g d0g d1g d2g d3d4Zd5 Zd6 Zd7 Zdddd8gd
ddd9gdddd:gdddd8gd
ddd9gdddd8ggZe	j
                            d;e          d<             Zd= Ze	j
                            d>ddg          d?             Zd@ Zg d'dAdBdCdDej        dAdEdFdGdGdHgdIdJfg d'dAdBdCdDej        ej        dEdFdGdGdHgdKdLfdFdEej        dGgdAdBdCdDej        dAdEdFdGdGdHgdMdNfdFdEej        dGgdAdBdCdDej        ej        dEdFdGdGdHgdOdPfdFej        ej        dGgdAdBdCdDej        ej        dEdFdGdGdHgdQdRfgZe	j
                            dSe          dT             Zg dUg dVg dWg dXg dYg dZg d[g d\g d]g	Z e	j
                            d^e           d_             Z!d` Z"da Z#g d"dbdcgdddgg d"dbdcgd
ddgg d"dbdcgddegg d"dEgddfgg d"dEgd
dfgg d"dEgddggdFdEgdFdEgddhgdFdEgdFdEgd
dhgdFdEgdFdEgddigg	Z$e	j
                            g dje$          dk             Z%dl Z&dmS )nTestMannWhitneyUc                     dt           _        d S )NTr   
_recursiverj   s    r'   setup_methodzTestMannWhitneyU.setup_method        $
r)   c                 X   t          j        ddg          }t          j        ddg          }t          t          d          5  t	          g |           d d d            n# 1 swxY w Y   t          t          d          5  t	          |g            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            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,   `x` and `y` must be of nonzeromatchz`use_continuity` must be oneekki)use_continuityz`alternative` must be one ofalternativez`axis` must be an integerr   axisz`method` must be one ofmethod)r   r    rH   rI   r   rJ   s      r'   test_input_validationz&TestMannWhitneyU.test_input_validation   s!   HaVHaV:-MNNN 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 :-MNNN 	  	 B	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 :-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----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.sl   A  A$'A$BB"%B"?CC"%C"?DD"%D"?EE"%E"?FF#&F#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   r1   
asymptoticr   exactr   )r   r:   r;   randr   rY   )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   rZ   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_continuity,  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 )NrG   r   r+   r   r,   r-   )r   r   r   r   r   re   )r   r   r   r   r   rR   r   )r   r   )r/   	         !@r1   r   r0   r.   )r   g]U?g[?gi\?gZX<_?gx.?g 
?)r   r    r   r   rX   r   rY   )	r"   r#   y0dydy2r$   rZ   
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      ?rg   g      ?)r   皙?皙?r   )rf   r   r   r   rg   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?rG   )gK7A`?gZd;O?rg   gMbX?)Mb?RQ?RQ?M?r   r   )	g;On?;On?V-?g      ?gJ+?r   gx&?rg   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?rg   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?re   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?)r2   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-   r.   c           
         | j         | j        | j        | j        d}|                                D ]2\  }}|                                D ]\  }}t          j        dt          |                    }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          ||	           4d S )N)r   r,   r-   r.   r   )kmr   r2   r3   r   rR   )pn3pn4pm5pm6itemsr   r<   lenr   r   r   sfpmf)
r"   p_tablesr   tabler   r&   uu2r   pmf2s
             r'   test_exact_distributionz(TestMannWhitneyU.test_exact_distributionj  sv   xDHdhGG (( 	+ 	+HAu + +1IaQ((
a1 = = =qtLLLL Yq!A#a%((
qA > > >",-"Q"?"?"?!@",.2a"@"@"@!ABCE E E
 !nrQ!444S2Y/// "~a1555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   re   (   r2   )r   r:   r;   r   r   rX   absrY   )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   rg   r   )r   r   )r   r   rY   )r"   res_lres_grZ   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   rg   )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   )rg   r   r   F)r   r   rg   )r   r   r   rN   rj   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   )r0   r/   r   r1   r.   r   r   )r   r   )r.   r   r1   rR   )N.c                 ,    g | ]}t          |          S r`   )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   rY   shaperX   moveaxisndimbroadcast_tozerosr   testingr   )r"   r   r   r   r   r#   r$   rZ   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 )NrG   )r   r.   r0   r1   r   r   r+   r   r,   r,   r-   r,   )r   r   rM   r   rX   rY   rN   )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   r.   r0   r1   r+   r   r,   r-   r/   g+zQ?r   g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r#   r$   rX   rY   c                     t          ||d          }t          |j        |d           t          |j        |d           d S )Nr   r   -q=r3   )r   r   rX   rY   )r"   r#   r$   rX   rY   rZ   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   rX   r   rY   )	r"   r   r   r   r*  statistic_expr#   r$   rZ   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          t          d          5  t          g g            d d d            d S # 1 swxY w Y   d S )Nr   r   )rH   rI   r   rj   s    r'   test_gh_6897zTestMannWhitneyU.test_gh_6897F  s    :-MNNN 	! 	!R   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   599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    rN   r   r   rX   rY   )r"   abrZ   s       r'   test_gh_4067zTestMannWhitneyU.test_gh_4067K  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   r-  r(  )rtol)r   r   )r"   r#   r$   r   r   rZ   s         r'   test_gh_2118zTestMannWhitneyU.test_gh_2118c  s>     1a+".0 0 0XE222222r)   c                     d t           _        d S r   r   rj   s    r'   teardown_methodz TestMannWhitneyU.teardown_methodk  r   r)   N)'r]   r^   r_   r   r   r   r#   r$   cases_basicpytestmarkparametrizer   cases_continuityr   r   r   r   r   r   r   r  r  cases_scalarr  r  r"  r%  r   rM   cases_11355r)  
cases_9184r/  r1  r5  
cases_2118r8  r:  r`   r)   r'   r   r      s       % % %. . . 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+ + +0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% % % % %r)   r   c                       e Zd Zd Zd ZdS )TestMannWhitneyU_iterativec                     dt           _        d S )NFr   rj   s    r'   r   z'TestMannWhitneyU_iterative.setup_methodp  s     %
r)   c                     d t           _        d S r   r   rj   s    r'   r:  z*TestMannWhitneyU_iterative.teardown_methods  r   r)   N)r]   r^   r_   r   r:  r`   r)   r'   rE  rE  o  s2        & & &% % % % %r)   rE  c                     d t           _        t          j        d           t           _        t          j                            d          } |                     d          }|                     d          }t          j        ||d           t          j	        t           j        dk              sJ |                     d          }t          j        ||d           t          j	        t           j        dk              rJ d S )	N)r   r   r   l   7cE"r-   i  r   r   rR   i  )
r   r   r   r   _fmnksr:   default_rngstatsr   all)rngr#   r$   s      r'   test_mann_whitney_u_switchrN  w  s     !J+++J
)


.
.C

1A 	

3A	q!G,,,,6*#r)***** 	

3A	q!G,,,, vj'2-.......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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 )Nr/   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<   rS  	functoolspartialrK  somersdpartialfuncr   )r"   input_arrays   ` r'   r   z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 )NV瞯<r3   )r[  r   rX   r   rY   )r"   r   rZ   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)rx         r0   r   )r0   rb     r,  r   )r   r   r+   r0      r^  r3   )rK  rZ  get_optional_argsr   rX   rY   )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   r.   r,   r0   r1   )r-   r+   r.   r   r   r1   r0   r,           r~   r   r^  r3   r   )	r   r-   r+   r   r   r.   r,   r0   r1   )	r-   r+   r   r.   r   r   r1   r0   r,   )r-   r+   r   r   r.   r,   r0   )r-   r+   r.   r   r   r0   r,   )g+$I$I¿g=/3n+?r/   r~   r   )
r   r+   r   r   r,   r.   r-   r0   r1   r   )gs'}'?rj  rR   )g      r   )
r   r0   r1   r.   r-   r   r,   r+   r   r   )g}'}'rj  )r   r+   r   r   r+   )r   r,   r0   r   r   )      g.ʂ?)r+   r+   r+   )r+   r   r+   g      $@g      4@)rK  rZ  r   rX   rY   r   r<   r    rN   rH   rI   )r"   r#   r$   r   rZ   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((Ƿ?r^  r3   rh   )r   r+   r+   r   )rK  rZ  r   rX   rY   r   r   r  )r"   r#   r$   d_crd_rcr&   rZ   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 )Nr1   r+   r.   r-   r   r,   r   gHHHHHH?ra  r   U   r8   )gM&w?r~   gtE]t)r   r    Tr   rK  rZ  rX   )r"   r   dyxdxys       r'   test_somers_originalz TestSomersD.test_somers_original9  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 )NrQ   r,   r.   r   r&   r+   r   r   gayr^  r3   gPj$?)r   prodr:   r;   rK  multinomialrvsr   rS   rZ  insertr  r   rX   rY   )r"   Nr  sizesrZ   s2r  s3r$  s4res4s               r'   *test_contingency_table_with_zero_rows_colsz6TestSomersD.test_contingency_table_with_zero_rows_colsO  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 )NrQ   r|  r   r}  r+   z:All elements of the contingency table must be non-negativer   re   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;   rK  r  r  r   rS   rH   rI   rZ  r  )	r"   r  r  r  r  s5messages6s7s	            r'   test_invalid_contingency_tablesz+TestSomersD.test_invalid_contingency_tablesn  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   rR   g @)r   r+   r   r   rl  )r   rM   rK  rZ  r   rX   rY   )r"   r#   rn  r$   y2rZ   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 )Nr/   )r   r<   rK  rZ  r   r   eye)r"   r#   r$   rZ   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-   r.   r0   r1   r0   r   r   r   r   r   r+   r   zalternative must be 'less'...r   z	ekki-ekki)
rK  rZ  rX   r   r   rY   reverser<  r   rI   )r"   rm  rn  r   rZ   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]:-LMMM 	; 	;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 )	Nr/   r   rR   r   r   r   r   r   )r   r<   fliprK  rZ  rX   rY   )r"   r  rm  rn  expected_statisticrZ   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)   N)r]   r^   r_   r   r_  rg  ro  rt  rz  r  r  r  r  r  r<  r=  r>  r  r`   r)   r'   rP  rP    s        7 7 7F F F
	> 	> 	>m7 m7 m7^. . .2? ? ?,1 1 1>! ! !F	. 	. 	., , ,'; '; ';R [3]CC@ @ DC@ @ @r)   rP  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   r/   '   )gXyq@g{2s&Q7?rQ   r+   ro   r-   )gllgEA]0K?r0   r1   )*)1%g_  ?r   )g_c1?g= ?   rW   )g5PyQgQ@2?r   ra  )ggJ"?)g_c1gwݝل?r   r,   )g7@g      ?r   )g~t,?3O?r.   )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   rX   rY   r   r"   input_sampler   rZ   rX   rY   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 0r   r   r+   r   r,   r   r   ,The input `table` must be of shape \(2, 2\).r.   *All values in `table` must be nonnegative.rR   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)rH   rI   r   r   r<   rS   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rk  c                     t          |          }|j        |j        }}t          ||d                    t          ||d                    d S Nr   r   r   rX   rY   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_zeroI  sL     L))M3:6	VXa[)))Y,,,,,r)   )r  gE\/??   ,  )ggQ5rj     r9   i  )g&X}>rj  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   NrR   r   Hz>r3   )r   r    r   rX   rY   r   )	r"   r  r   r   expected_statless_pvalue_expectrZ   rX   rY   s	            r'   test_less_greaterz"TestBarnardExact.test_less_greaterV  s    , -5)))##8L11!!!TTrT':L*NMLkBBBM3:6	-1C!D4	
 	
 	
 	
 	
 	
r)   N)r]   r^   r_   __doc__r<  r=  r>  r  r  r  r  r   rN   r  r  r`   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+   r0   r1   )<vB\?g/??r-   r   r/   )gM?gA>?r   rW   ra  )_VѶ?g֭?)u %?gc'?r   r,   r   r   r   )rg   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   r3   Nr   rX   rY   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|?r.   )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   r3   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?)rg   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   r3   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  r   r   r+   r   r,   r   r  r  r.   r  rR   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r  )rH   rI   r   r   r<   rS   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   rX   rY   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   rY   min)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+   r0   r1   r   r   )r   rX   rK  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  r<  r=  r>  r  r  r  r  r   rN   r  r  r  r`   r)   r'   r  r  y  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                       e Zd Zd Zd Zd Zej                            dg d          d             Z	d Z
d Zd	 Zd
 ZdS )TestCvm_2sampc                 ,   t          j        d                              d          }t          j        d          }d}t          j        t
          |          5  t          ||           d d d            n# 1 swxY w Y   t          j        t
          |          5  t          ||           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t          g |           d d d            n# 1 swxY w Y   t          j        t
          |          5  t          |dg           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t          ||d	           d d d            d S # 1 swxY w Y   d S )
Nr/   r   r-   z#The samples must be one-dimensionalr   z/x and y must contain at least two observations.r   z/method must be either auto, exact or asymptoticxyz)r   r<   rS   r<  r   rI   r   )r"   r#   r$   msgs       r'   r   z TestCvm_2samp.test_invalid_input  s   IbMM!!&))IaLL3]:S111 	' 	' A&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	']:S111 	' 	' A&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'?]:S111 	( 	( Q'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]:S111 	) 	) QC(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)?]:S111 	. 	. Au---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.sZ   A66A:=A:B99B= B=!C>>DD$EE	E*F		FFc                     g d}g d}t          ||          }t          t          j        |          t          j        |                    }t          |j        |j        f|j        |j        f           d S )N)r+   r   r,   r0   r.   )r   r   r   rc  )r   r   r    r   rX   rY   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㥛?r2   r3   g
ףp=
?re   )r   r   rX   rY   r"   r#   r$   rs       r'   test_example_conoverz"TestCvm_2samp.test_example_conover+  sc     =<<   A&&U6666$T222222r)   zstatistic, m, n, pval))i  r-   r.   gcj`?)ii  r0   r0   gtE]t?)i@  r,   r.   g88?)i  r.   r0   gXwS?c                 D    t          t          |||          |           d S r   )r   r   )r"   rX   r   r   pvals        r'   test_exact_pvaluezTestCvm_2samp.test_exact_pvalue5  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  i@B )r  i r   r   r   )	r   r:   r;   r	   r   r  r   r   rY   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   r0   r1   r   r   r   re   r3   )	r   r:   r;   r   r   r   rX   r   rY   r  s        r'   test_exact_vs_asymptoticz&TestCvm_2samp.test_exact_vs_asymptoticK  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 )NrW   )rg   g@g333333*@r   r   r   r  r   )r   r<   r   r   rY   r  s        r'   test_method_autozTestCvm_2samp.test_method_autoT  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  ri  r,   )r   r<   r   r   rX   rY   )r"   r#   rZ   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^   r_   r   r  r  r<  r=  r>  r  r  r  r  r  r`   r)   r'   r  r    s        . . ."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,atolrh   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)r.   r.   r   r3   rf   r   asarrayreplacesplitfloatrS   rK  	tukey_hsdconfidence_intervalintr   lowrX   highrY   )r"   datares_expect_strr4   
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   r.   r   r3   N)r   r  r  r  rS   rK  r  r  r  r   r  rX   r  rY   )r"   r   r!  r4   r"  r#  r$  r  r%  r&  r  r'  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+  )   r8   6   ra  F   4   3   r.  C   rx   rb        r4     )   rW   ,   )rc  r  r4  rd  r   rc  r,  r8   $   *   r.  r5  r   r  r9   r  r  r4  )r9  r  r  rc  r/   r  r9   r  r.  rW   r  r  rd  r   r  r  r   r9   r   r  r3   r   gh㈵>r  )r"   str_resr"  r   r#  r$  r  r%  r  r&  r'  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 @r>  r  )r?  gffffff@gffffff@gffffff@g@)r   r   r   g      )g(\?r   gq=
ףpgp=
ף?)gGz?r   r   g
ףp=
?)r   r   r   r   )r   r   r   gzG?)gzG@r   g      ?g=
ףp=@)g=
ףp=@r   r   g@)r   r   )r+   r   )r   r   r  rq  re   r3   N)rK  r  r  r   r  r   r  r  )r"   group1group2group3group4rZ   r$  lowerupperr  r%  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 )Nr7   r   rQ   r   r   r   r   )r   r:   r;   r   rK  r  r  r   r  r  rw  diagonalrX   rY   )r"   r   rZ   r$  s       r'   test_rand_symmzTestTukeyHSD.test_rand_symm-  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.r   r   r+   )r.   r0   r   )rH   rI   rK  r  r   rM   rj   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-dimensionalr   r   r+   r   r-   )r-   r   r.   rH   rI   rK  r  rj   s    r'   
test_is_1dzTestTukeyHSD.test_is_1dD  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 oner   r+   r-   )r,   r-   r.   rO  rj   s    r'   test_no_emptyzTestTukeyHSD.test_no_emptyH  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.r   r   r0   r   rO  )r"   rS  s     r'   test_not_enough_treatmentsz'TestTukeyHSD.test_not_enough_treatmentsL  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)rl  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 1r   rU  r   r,   r   )rH   rI   rK  r  r  )r"   rW  r  s      r'   test_conf_level_invalidz$TestTukeyHSD.test_conf_level_invalidQ  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  r@  )rK  r  data_diff_size	ttest_indr   rY   )r"   r#  	res_ttests      r'   test_2_args_ttestzTestTukeyHSD.test_2_args_ttestW  sn    OT%8!%<=	OT%8!%<=		()*:4*@AAA	()*:4*@AAAAAr)   N)r]   r^   r_   data_same_sizer[  extreme_sizesas_same_sizesas_diff_sizesas_extremer<  r=  r>  r)  matlab_sm_sizmatlab_diff_szr,  r<  rG  rK  rM  rP  rR  rV  rY  r^  r`   r)   r'   r  r  l  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   rQ   r   rQ   gea?)r+   rQ   r.   rQ   g	c?c                 b    t          j        ||||          }t          |j        |d           d S )Nrh   r3   rK  poisson_means_testr   rY   )r"   c1n1c2n2p_expectrZ   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)rW   r/   rW   r/   g{}?r   r   )r/   r/   r/   r/   goPF?r   r   )2   r  r   r   gae?r   rf   )r   rQ   rW   r  g/V-=?r   r   )r   r   r,   rW   g")?r   r   )r,   rW   r   rQ   g_'Qm~?r   r   )r,   rW   r   r/   g|?r   r   )r   r   rq  r  g0ݷ?r   r   c                 j    t          j        ||||||          }t          |j        |dd           d S )N)r   diffg>gؗҜ<)r4   r7  ri  )	r"   rk  rl  rm  rn  ro  altdrZ   s	            r'   test_fortran_authorsz)TestPoissonMeansTest.test_fortran_authorsi  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   ri  r"   count1count2nobs1nobs2rZ   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 )NrI  r  r   ri  rx  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 )NrI  r  z`k1` and `k2` must be integers.r   r   z1`k1` and `k2` must be greater than or equal to 0.rR   z%`n1` and `n2` must be greater than 0.z(diff must be greater than or equal to 0.)rs  zAlternative must be one of ...r   r+   errorr   )rH   	TypeErrorrK  rj  rI   )r"   ry  rz  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_   r<  r=  r>  rp  rv  r}  r  r   r`   r)   r'   rg  rg  _  s       [7      :  
9 9 
9 [?
 	=<<<<<===>>>999;;; 	655666B  "E E# "E' ' '' ' '!F !F !F !F !Fr)   rg  ),	itertoolsr   numpyr   rX  r<  numpy.testingr   r   r   r   r   rH   scipy.statsrK  r	   scipy.stats._hypotestsr
   r   r   r   r   r   r   scipy.stats._mannwhitneyur   r   common_testsr   scipy._lib._testutilsr   r   rb   r   rE  r=  xslowrN  rP  r  r  r  r  rg  r`   r)   r'   <module>r     so                 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7- 7- 7- 7- 7- 7- 7- 7-tYK YK YK YK YK YK YK YKxA% A% A% A% A% A% A% A%H% % % % %!1 % % % / / /2R@ R@ R@ R@ R@" R@ R@ R@j
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W> W> W> W> W> W> W> W>t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 QF QFr)   