
    -ii{                       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	 d dlm
Z d dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZ d d	lmZ d d
lm Z! d dl"m#Z#m$Z$m%Z%m&Z& d dl'm(Z(m)Z) d dl*m+Z+m,Z,  e#e           G d d                      Z- e#ej                   G d d                      Z. e#ej                   G d d                      Z/ G d de          Z0 G d d          Z1 G d d          Z2 e#e           G d d                      Z3 G d d          Z4 G d d          Z5 G d  d!          Z6 G d" d#          Z7dS )$    )productN)assert_assert_equalassert_allclose)raises)statsspecial)distributions)epps_singleton_2sampcramervonmises_cdf_cvmcramervonmises_2samp_pval_cvm_2samp_exactbarnard_exactboschloo_exact)mannwhitneyu
_mwu_state_MWU)_TestPythranFunc)array_api_extra)make_xp_test_casexp_default_dtypeis_numpyeager_warns)xp_assert_equalxp_assert_close)SmallSampleWarningtoo_small_1d_not_omitc                   r    e Zd Zej                            dg d          d             Zd Zd Zd Z	d Z
dS )	TestEppsSingletondtypeNfloat32float64c                    t          |          r%|j        dk     r|dk    rt          j        d           |t	          |          nt          ||          }|                    g d|          }|                    g d|          }t          ||          \  }}t          ||                    d|          d	           t          ||                    d
|          d	           d S )N2.0r#   !Pre-NEP 50 doesn't respect dtypes)
gffffffֿgffffff@gGz?\(\?ffffff?gQ@gq=
ףp?gGzgGz׿gp=
#(@r!   )
gffffffg333333ÿgףp=
@g      
@gGz@g)\(@      @g(\@g(\ @333333!@gHzG.@gQ?atolgQ,r?-C6?)	r   __version__pytestskipr   getattrasarrayr   r   )selfr!   xpxywps          f/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/stats/tests/test_hypotests.pytest_statistic_1z"TestEppsSingleton.test_statistic_1   s    B<< 	=BNU22u	7I7IK;<<<(- $$$72u;M;MJJ 9 9 9@E  G GJJ 3 3 3:?  A A#Aq))12::e5:99EEEE2::gU:;;&IIIIII    c                    |                     g d          }|                     g d          }t          ||          \  }}t          ||                     d          d           t          ||                     d          d           d S )N)r         r@   r@   r@      rA   rA   rA         rC   rC   rC      
   rE   rE   rE   )rE   rB   r   rC   rE   rE   r   rC   rD      rE   rA   r?   rF   r      r?   rC   rG   rE   g!@MbP?r-   g&J?g-C6
?)r4   r   r   )r5   r6   r7   r8   r9   r:   s         r;   test_statistic_2z"TestEppsSingleton.test_statistic_2+   s    JJ 7 7 7 8 8JJ 8 8 8 9 9#Aq))12::e,,488882::g..T::::::r=   c                    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      )nparanger   listtupler   )	r5   r7   r8   w1p1w2p2w3p3s	            r;   test_epps_singleton_array_likez0TestEppsSingleton.test_epps_singleton_array_like5   s    y}}bimm1%d1ggtAww77B%eAhha99B%a++BbBbBr=   c                    |                     g d          |                    d          }}t          t          t          |          5  t          ||          }t          |j        |                     |j                             t          |j	        |                     |j                             d d d            d S # 1 swxY w Y   d S )Nr?   r@   rA   rB   rE   matchr6   )
r4   rN   r   r   r   r   r   	statisticnanpvaluer5   r6   r7   r8   ress        r;   test_epps_singleton_sizez*TestEppsSingleton.test_epps_singleton_size?   s    zz,,,''21+3HRPPP 	< 	<&q!,,CCM2::bf+=+=>>>CJ

26(:(:;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   	A+CCCc                    t           j                            d          }|                    d          }|                    d          }t          j        g d          }t	          ||d          \  }}t           j        ||<   t           j        ||<   t           j        ||d         df<   t           j        ||d	         d	f<   t           j         ||d
         d
f<   |                    |          |                    |          }}t	          ||d          \  }}	t          ||                    |                     t          |	|                    |                     d S )Nl   2$>. )rE      size)rE      )r?   rB   	   axisr   r?   r@   )rM   randomdefault_rngr4   r   r]   infr   )
r5   r6   rngr7   r8   iw_refp_refw_resp_ress
             r;   test_epps_singleton_nonfinitez/TestEppsSingleton.test_epps_singleton_nonfiniteG   s,   i##N33JJHJ%%JJHJ%%Jyyy!!+Aqr:::u6a6aV!A$'
V!A$'
fW!A$'
zz!}}bjjmm1+Aqr:::urzz%00111rzz%0011111r=   N)__name__
__module____qualname__r1   markparametrizer<   rI   rW   ra   rt    r=   r;   r    r       s        [W&B&B&BCCJ J DCJ ; ; ;     < < <2 2 2 2 2r=   r    c            
          e Zd Zej                            ddg dg dfdg dg dfdg d	g dfd
g dg dfg          d             Zd Zd Zd Z	d Z
ej                            dd          ej                            dddgg          d                         Zej                            dg d          d             Zd Zd
S )TestCvmz	n, x, refrB   )gy;i?g#^?gE>?gD
)?){Gz?皙?      ?g+?rE   )g8*5?g@߾?gHm?g%1 ?)r}   r~   r   g333333?  )g}tg?g`?gI5o?gׁsF?N)a+e?+?&pn?+MJA?c                     t          t          |                    |          |          |                    |          d           d S Nr/   r-   )r   r   r4   )r5   nr7   refr6   s        r;   test_cdf_refzTestCvm.test_cdf_ref`   s=     	A22BJJsOO$OOOOOOr=   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                ?gaah?g"@   )r   r   r4   )r5   r6   s     r;   test_cdf_supportzTestCvm.test_cdf_supporti   s    Z,?!@!@#FF

B8,,	. 	. 	._j,I!J!JBOO

B8,,	. 	. 	. 	. 	.r=   c                     |                     g d          }t          t          |d          t          |          d           d S )N)r   r   r   r   d   '  r/   r-   )r4   r   r   r5   r6   r7   s      r;   test_cdf_large_nzTestCvm.test_cdf_large_np   sE    JJ@@@AAE**HQKKdCCCCCCr=   c                     |                     d|j                  }dt          |d          cxk     rdk     sn J dt          |          cxk     rdk     sn J d S )Ngt@r*   gwJ?r   r   )r4   r$   r   r   s      r;   test_large_xzTestCvm.test_large_xu   s{     JJuBJJ//(1d++1111c111111(1++++++++++++++r=   c                     d}t          |                    |          dz  t          j                  }t	          |j        ||          dk    sJ t          |j        |                    d                     d S )Nrf   皙?)r6   r   r   )	r   onesr	   ndtrr   r\   r   r^   r4   )r5   r6   r   r`   s       r;   
test_low_pzTestCvm.test_low_p   sl     RWWQZZ^W\::qR00036666
BJJrNN33333r=   	jax.numpylazy -> no _axis_nan_policyreasonr7   rz         ?c                    t          j        t          t                    5  t	          |                    |          t          j                  }t          |j	        |                    |j
                             t          |j        |                    |j
                             d d d            d S # 1 swxY w Y   d S )Nr[   )r1   warnsr   r   r   r4   r	   r   r   r\   r]   r^   )r5   r7   r6   r`   s       r;   test_invalid_inputzTestCvm.test_invalid_input   s     \,4IJJJ 	< 	< A==CCM2::bf+=+=>>>CJ

26(:(:;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   BB66B:=B:r!   r"   c                    t                    r%j        dk     r|dk    rt          j        d           |t	                    nt          |          }t                              g d|          t          j	                  }t          |j                            d|                     t          |j                            d|                     t                              g d|          d           }t          |j                            d	|                     t          |j                            d
|                     t                              g d|          fd          }t          |j                            d|                     t          |j                            d|                     d S )Nr&   r#   r'   )g333333r@   r   g?rB   皙?333333?r*   gӈk&q?gDC+?c                 6    t          j        | dz
  dz            S )NrA   r   )r	   r   )r7   s    r;   <lambda>z'TestCvm.test_values_R.<locals>.<lambda>   s    w|QUCK'@'@ r=   grW*?gju2`?)	r?   r@   rC   ffffff?gQ?rc      ?      @c                 2                         |             S N)expm1)r7   r6   s    r;   r   z'TestCvm.test_values_R.<locals>.<lambda>   s    rxx||m r=   g  .?g`(r?)r   r0   r1   r2   r   r3   r   r4   r	   r   r   r\   r^   )r5   r!   r6   r`   s     ` r;   test_values_RzTestCvm.test_values_R   s   B<< 	=BNU22u	7I7IK;<<<(- $$$72u;M;M
 RZZ(F(F(FeZTT$\+ +rzz2B%z'P'PQQQ
BJJuJ$M$MNNN RZZ(F(F(FeZTT@@B Brzz2B%z'P'PQQQ
BJJ/@J$N$NOOO JJ===UJKK####% % 	rzz2B%z'P'PQQQ
BJJ/@J$N$NOOOOOr=   c                 h   t          |          s\d}t          j        t          |          5  t	          |                    g d          d           d d d            n# 1 swxY w Y   d S 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 )Nz7`cdf` must be a callable if `rvs` is a non-NumPy array.r   r?   r@   rA   betarC   )r   ffffff?expon)r   r1   r   
ValueErrorr   r4   rM   rN   r
   r   cdfr   r\   r^   r   )r5   r6   messager7   argsr   r`   s          r;   test_str_cdfzTestCvm.test_str_cdf   sK   || 	OGz999 > >rzz)))44f===> > > > > > > > > > > > > > >F)A,,
4Q 3 788Q((cmSZ03=#*2MNNNQ 2 6==Q--cmSZ03=#*2MNNNNNs   &AA#&A#)ru   rv   rw   r1   rx   ry   r   r   r   r   r   skip_xp_backendsr   r   r   rz   r=   r;   r|   r|   [   s       
 [[	
0002J2J2JK	1113K3K3KL	3335M5M5MN	3335M5M5MN	+  P P P. . .D D D
- - -4 4 4 [!!+6S!TT[S2u+..< < /. UT< [W&B&B&BCCP P DCP4O O O O Or=   r|   c                      e Zd Zej                            dd          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          ej                            dg d          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 d0g d1d2Zg d3g d4g d5g d6g d7g d8d9Zd: 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                            dAe          dB             ZdC Zej                            dd          ej                            dDd
dg          dE                         ZdF Zej                            dd          dG             Zg dHdIdJdKdLej        dIdMdNdOdOdPgdQdRfg dHdIdJdKdLej        ej        dMdNdOdOdPgdSdTfdNdMej        dOgdIdJdKdLej        dIdMdNdOdOdPgdUdVfdNdMej        dOgdIdJdKdLej        ej        dMdNdOdOdPgdWdXfdNej        ej        dOgdIdJdKdLej        ej        dMdNdOdOdPgdYdZfgZ ej                            d[e           d\             Z!g d]g d^g d_g d`g dag dbg dcg ddg deg	Z"ej                            dfe"          dg             Z#ej                            dd          dh             Z$g didjdkgddlgg didjdkgddlgg didjdkgd	dmgg d'dMgddngg d'dMgddngg d'dMgd	dogdNdMgdNdMgddpgdNdMgdNdMgddpgdNdMgdNdMgd	dqgg	Z%ej                            g dre%          ds             Z&dt Z'ej                            dug dv          dw             Z(g dxZ)g dyZ*dzZ+d{ Z,d| Z-d} Z.d~ Z/d Z0dS )TestMannWhitneyUr   r   r   c                 |   |                     ddg          }|                     ddg          }|                     g |j                  }|                     |j                  }t          j        t
          t                    5  t          ||          }t          |j	        |           t          |j
        |           d d d            n# 1 swxY w Y   t          j        t
          t                    5  t          ||          }t          |j	        |           t          |j
        |           d d d            n# 1 swxY w Y   t          j        t
          t                    5  t          ||          }t          |j	        |           t          |j
        |           d d d            d S # 1 swxY w Y   d S )Nr?   r@   rA   rB   r*   r   )r4   r!   r]   r1   r   r   r   r   r   r\   r^   )r5   r6   r7   r8   emptyr]   r`   s          r;   
test_emptyzTestMannWhitneyU.test_empty   sF   JJ1vJJ1v

2QW
--jj  \,4IJJJ 	- 	-q%((CCM3///CJ,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 \,4IJJJ 	- 	-ua((CCM3///CJ,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 \,4IJJJ 	- 	-ue,,CCM3///CJ,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s6   ;CCC7;D>>EE);F11F58F5c                 d   |                     ddg          }|                     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@   rA   rB   z`use_continuity` must be oner   ekki)use_continuityz`alternative` must be one ofalternativez`axis` must be an integerr   ri   z`method` must be one ofmethod)r4   assert_raisesr   r   )r5   r6   r7   r8   s       r;   test_input_validationz&TestMannWhitneyU.test_input_validation   s3   JJ1vJJ1v:-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}|                    |                    |dz
                      }|                    |                    |dz
                      }t	          ||          }t	          ||d          }t	          ||d          }|j        |j        k    sJ |j        |j        k    sJ |                    |                    |dz
                      }|                    |                    |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 |                    |                    |dz                       }|                    |                    |dz                       }t	          ||          }t	          ||d          }t	          ||d          }|j        |j        k    sJ |j        |j        k    sJ |                    |                    |dz
                      }|                    |                    |dz
                      }t          j        |          d                             |d                   }t	          ||          }t	          ||d          }t	          ||d          }|j        |j        k    sJ |j        |j        k    sJ d S )Nl   nEQWSfrG   r?   
asymptoticr   exactrA   )	rM   rk   rl   r4   r   r^   xpxatset)	r5   r6   rn   r   r7   r8   autor   r   s	            r;   	test_autozTestMannWhitneyU.test_auto   s4    i##$677 JJszz!A#''JJszz!A#''Aq!!!!Q|<<<
Q'222{el****{j///// JJszz!A#''JJszz!A#''Aq!!!!Q|<<<
Q'222{el****{j///// Aq!!!!Q|<<<
Q'222{el****{j///// JJszz!A#''JJszz!A#''Aq!!!!Q|<<<
Q'222{el****{j///// JJszz!A#''JJszz!A#''F1IIaLQqT""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   )      0@
+?less)r   
+?greater)r   缌%c?r   )r   g9:?)r   g9:?)r   g*::?)kwdsexpectedr!   r"   c                    t          |          r%|j        dk     r|dk    rt          j        d           |t	          |          nt          ||          }|                    | j        |          |                    | j        |          }}t          ||fi |}t          |j        |                    |d         |                     t          |j        |                    |d         |                     d S )Nr&   r#   z*Scalar dtypes only respected after NEP 50.r*   r   r?   )r   r0   r1   r2   r   r3   r4   r7   r8   r   r   r\   r^   )r5   r   r   r!   r6   r7   r8   r`   s           r;   
test_basiczTestMannWhitneyU.test_basic;  s     B<< 	FBNU22u	7I7IKDEEE(- $$$72u;M;Mzz$&z..

46
0O0O11a((4((rzz(1+Uz'K'KLLL
BJJx{%J$H$HIIIIIr=   T)r   r   )      7@r   )r   r   )r   r   F)r   gl,KNh?)r   giژ?)r   gl,KNh?c                 F   |                     | j                  |                     | j                  }}t          ||fddi|}t	          |j        |                     |d                              t	          |j        |                     |d                              d S )Nr   r   r   r?   )r4   r7   r8   r   r   r\   r^   )r5   r   r   r6   r7   r8   r`   s          r;   test_continuityz TestMannWhitneyU.test_continuityS  s     zz$&!!2::df#5#511a=====rzz(1+'>'>???
BJJx{$;$;<<<<<r=   c           
         |                     g d          }|                     g d          }|                     g d          dz  }|                     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 )Nr          @      @      @)r   r   r   r   r+   )r   r   r   r   r   r}   )r   r   r   r   r   rh   r   )rj   r   )rE   rg         !@rG   r   rF   rD   )r?   g]U?g[?gi\?gZX<_?gx.?g 
?)r4   stackr   r   r\   r   r^   )
r5   r6   r7   y0dydy2r8   r`   
U_expected
p_expecteds
             r;   test_tie_correctz!TestMannWhitneyU.test_tie_correctc  s    JJ'''((ZZ,,,--ZZ,,,--d2jj---..t3HHbgr"ubfb"S&"R%DIJJ1ab>>>///
I I I
rzz*'='=>>>
BJJz$:$:;;;;;r=   )g      ?r   g      ?)r   皙?皙?r   )r~   r   r   r)   r   g?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?rY   )gK7A`?gZd;O?r   gMbX?)Mb?RQ?RQ?M?r   r   )	g;On?;On?V-?g      ?gJ+?r   gx&?r   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?r   gI+?r?   r@   rA   rB   rC   )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?r}   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?)rH   r  r   r   g9v?g/$?r   r   gL7A`?g
ףp=
?gQ?r  gK7?g`"?g7A`?r)   gV-?gjt?gˡE?)r?   r@   rA   rB   rC   rD   c           	          t          t          dt          dd                     | j        | j        | j        | j        d}|                                D ]\  }}|                                D ]\  }}t          j	        dt          |                    }t          j                            ||           t          t          j                            |          |d           t          j	        d||z  dz             }t          t          j                            |          t          j                            |          z   t          j                            |          z
  d           t          j                            |          }t          ||d d d                    t          j                            ||           t          j                            |          }	t          ||	           d S )	Nsr   )rA   rB   rC   rD   )krH   r-   r?   rh   )setattrr   r   pn3pn4pm5pm6itemsrM   rN   lenr  
set_shapesr   r   sfpmf)
r5   p_tablesr   tablemr:   uu2r  pmf2s
             r;   test_exact_distributionz(TestMannWhitneyU.test_exact_distribution  s   
Ca,,,xDHdhGG (( 	+ 	+HAu + +1IaQ((''1---
 0 01 0 5 5qtDDDD Yq!A#a%((
 0 02 0 6 6",,//B/"7"7!8",,"2"2R"2"8"8!9:;= = =
 !l&&&,,S2Y/// ''1---!|''"'--T****)+	+ 	+r=   c                    t           j                            d          }|                    |                    d                    }|                    |                    d                    }t	          ||d          }t	          ||d          }|j        |j        k    sJ |                    |j        |j        z
            dk    sJ |                    |                    d                    }|                    |                    d                    }t	          ||d          }t	          ||d          }|j        |j        k    sJ |                    |j        |j        z
            dk     sJ d S )	Ni0  rC   r   r   r   r}   (   rH   )rM   rk   rl   r4   r   r\   absr^   )r5   r6   rn   r7   r8   res1res2s          r;   test_asymptotic_behaviorz)TestMannWhitneyU.test_asymptotic_behavior  sS   i##E** JJszz!}}%%JJszz!}}%%Aq111Aq666~////vvdkDK/0047777 JJszz"~~&&JJszz"~~&&Aq111Aq666~////vvdkDK/004777777r=   c                    |                     g d          |                     ddg          }}t          ||dd          }t          ||dd          }t          |j        |j                   |j        dk    sJ t          ||d	d          }t          |j        |                     d
                     t          |j        |                     d                     d S )Nr   r   r   r         @r   r   r   r   r   r   r   r   )r4   r   r   r^   r\   )r5   r6   r7   r8   res_lres_gr`   s          r;   test_exact_U_equals_meanz)TestMannWhitneyU.test_exact_U_equals_mean  s     zz,,,''S#J)?)?1QvgFFFQyIIIel333|c!!!!1a[IIIrzz"~~666
BJJrNN33333r=   r   r   )r   r   )r   g郡E?)r   r?   )r   resultc                 :    t          t          di ||           d S )Nr?   r@   r?   r@   )r   r   )r5   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   )r   r?   r   F)r   r   r   )r   r   rM   r]   r5   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                 L   t           j                            d          }d}d\  }}|                    |ddf          }|                    d|ddf          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        |                    |          d           t          |	j        |                    |          d           d S )Nl   2=U )rF   rE   rA   rG   rD   r?   r   )r   rj   )rD   rA   rG   rh   )N.c                 ,    g | ]}t          |          S rz   )range).0ro   s     r;   
<listcomp>z8TestMannWhitneyU.test_gh_12837_11113.<locals>.<listcomp>  s     9 9 9aq 9 9 9r=   r   缉ؗҜ<r-   )rM   rk   rl   r   r4   r^   shaper\   moveaxisndimbroadcast_tozerosr   r   )r5   r   r6   rn   rj   r  r   r7   r8   r`   r6  
statisticspvaluesindicesxiyitemps                    r;   test_gh_12837_11113z$TestMannWhitneyU.test_gh_12837_11113  s.    i##J// 1JJ1ay!!JJ1a|$$s*2::a=="**Q--TRRR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
BJJw$7$7eDDDDrzz*'='=EJJJJJJr=   c                 ~   g d}g d}t          |                    |          |                    |                    }d|d<   t          j        |d<   t          |                    |          |                    |                    }t	          |j        |j                   t	          |j        |j                   d S )NrY   )rA   rD   rF   rG   rg   rA   r@   r?   rB   rB   rC   r   r   rB   )r   r4   rM   rm   r   r\   r^   )r5   r6   r7   r8   r  r  s         r;   test_gh_11355zTestMannWhitneyU.test_gh_11355   s    LL---BJJqMM2::a==99 !v!BJJqMM2::a==99777T[11111r=   c                 \   g d}dddt           j        ddddddd	g}t          |                    |          |                    |                    }t	          |j        |                    |j                             t	          |j        |                    |j                             d S )
Nr   rA   rD   rF   rg   r@   r?   rB   rC   )rM   r]   r   r4   r   r\   r^   )r5   r6   r7   r8   res3s        r;   test_gh11355_nanz!TestMannWhitneyU.test_gh11355_nan.  s     1bfaAq!Q2BJJqMM2::a==99

26(:(:;;;RZZ%7%788888r=   )r   r@   rA   rB   rA   rD   rF   rG   r@   r?   rB   rC         $@g+zQ?r   g}$k\?g     1@g!˛G*?r   g,s?     8@gFHQ?)r7   r8   r\   r^   c                    t          |                    |          |                    |          d          }t          |j        |                    |          d           t          |j        |                    |          d           d S )Nr   r   -q=r-   )r   r4   r   r\   r^   )r5   r7   r8   r\   r^   r6   r`   s          r;   test_gh_11355bzTestMannWhitneyU.test_gh_11355bG  sx     2::a=="**Q--MMMrzz)'<'<5IIII
BJJv$6$6UCCCCCCr=   )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}|                     g d          }|                     g d          }t          |||||          }	t          |	j        |                     |                     t	          |	j        |                     |                     d S )Ng     A@)
r   g(\?g=
ףp=?gp=
ף?g333333?gGz?g(\?g=
ףp=?r(   g\(\?)gffffff?g)\(?r   gGz?g\(\?r   r   r   )r4   r   r   r\   r   r^   )
r5   r   r   r   rL  r6   statistic_expr7   r8   r`   s
             r;   test_gh_9184zTestMannWhitneyU.test_gh_9184X  s    . JJSSSTTJJ555661a'26C C Crzz-'@'@AAA
BJJz$:$:;;;;;r=   c                 <   |                     |j                  }|                    |||||g          }|                    |||||g          }t          ||          }t	          |j        |                     |                     t	          |j        |           d S r   )r4   r]   r   r   r   r\   r^   )r5   r6   r]   abr`   s         r;   test_gh_4067zTestMannWhitneyU.test_gh_4067w  s     jj  HHc3S#.//HHc3S#.//1a  rzz#777
C(((((r=   r"  r   r#  )r   ga׀}?)r   r   )r   g?h?)r   r   )r   g5&#\?)r   r   )r7   r8   r   r   c                 r   t          |                    |          |                    |          d|d          }t          |          |j        k    rdnd}t	          |j        |                    |d                   |           t	          |j        |                    |d                   |           d S )	NTr   rN  ư>rJ  r   rtolr?   )r   r4   r   r#   r   r\   r^   )r5   r7   r8   r   r   r6   r`   rX  s           r;   test_gh_2118zTestMannWhitneyU.test_gh_2118  s     2::a=="**Q--'2<I I I'++rz99tturzz(1+'>'>TJJJJ
BJJx{$;$;$GGGGGGr=   c                 p   t           j                            d          }d\  }}|                    |          }|                    |          }t          t          dt          dd                     t          j                                         t          j	        ||d          }t          j        j
        j        }|d         t          |j        ||z  |j        z
            d	z   k    sJ t          j	        ||d           |t          j        j
        j        k    sJ t          j                                         t          j	        |d|z  dd
           t          j        j
        j        }|d         d	k    sJ t          j	        d|z  |dd
           |t          j        j
        j        k    sJ d S )N   g>mjK )rC   rc   rd   r  r   r   r   rh   r?   r   )r   r   )rM   rk   rl   r
  r   r   r  resetr   r   configurationsr6  minr\   )r5   rn   r  r   r7   r8   r`   r6  s           r;   test_gh19692_smaller_tablez+TestMannWhitneyU.test_gh19692_smaller_table  s   
 i##$7881JJAJJJAJ
Ca,,, Ag666+1RyCqsS]/BCCaGGGGG1a0000
399999
 	1ac'yIIII+1RyA~~~~1Q3'yIIII
39999999r=   r   )r   r   r   c                    t           j                            d          }|                    d          }|                    d          }t          j        ||t          j                    |d          }t          j        ||d|d          }t          |j        |j        d	           t          |j        |j        d	           d S )
Nr[  )r@   rC   rd   )r@   rD   r?   )r   r   rj   r   V瞯<rW  )	rM   rk   rl   r   r   PermutationMethodr   r\   r^   )r5   r   rn   r7   r8   r`   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=   )g	U3@g^3@gt3@g]o5@gzS4@gt< 4@gM	X3@gXmCk4@gLo&3@gfɘ2@g{m;^3@ga A$|3@gMѢ_4@g#3@g19T_3@ggC2@gqR4@gKk/4@g܁3@gZ2@g_
3@g$`3@g
x4@g3#л5@g;VND1@g >H2@gr4@gyܤ2@g?4@g=bɇ3@)gpG3@gL:j0@g2@gJNnC1@gR;`(3@g+Pi,2@g6:Z2@gZ"3=2@gF	uSa	3@gXҀ2@gX3^83@g21@gJ2@gZ)E2@gU83@g50@gԆ3@gFz33@gz3@gڴ3@g+=c                 x   |                     | j                  |                     | j                  }}t          j        ||d          \  }}t          j        ||d          \  }}t          j        ||d          \  }}	t          j        ||d          \  }
}t          ||           t          |	|           ||	k    sJ t          ||                     d                     t          ||                     d                     t          ||                     d                     t          |
|                     d                     t          ||                     d          | j                   |j        |j	        k    r| j        nd}t          |	|                     d	          |d
           d S )Nr   r   r         @     Y@g=_A?rW  Mb@?glPz.?r5  rX  r.   )
r4   XYr   r   r   r   rX  r!   r$   r5   r6   ri  rj  u1rR   r  rT   u3rV   u4p4rX  s                r;   test_mannwhitneyu_one_sidedz,TestMannWhitneyU.test_mannwhitneyu_one_sided  s   zz$&!!2::df#5#51#Aqf===B#Aqi@@@B#Aqi@@@B#Aqf===BBBRxxxxBJJt,,---BJJt,,---BJJt,,---BJJt,,---BJJ'899	JJJJGrz11tyytBJJ':;;$USSSSSSr=   c                     |                     | j                  |                     | j                  }}t          j        ||d          \  }}t          j        ||d          \  }}t          ||           t          ||                     d                     t          ||                     d                     |j        |j        k    r| j        nd}t          ||                     d          |d           d S )	Nr   r   re  rf  rg  glPz.?r5  rh  
r4   ri  rj  r   r   r   r!   r$   rX  r   	r5   r6   ri  rj  rl  rR   r  rT   rX  s	            r;   test_mannwhitneyu_two_sidedz,TestMannWhitneyU.test_mannwhitneyu_two_sided  s    zz$&!!2::df#5#51#AqkBBBB#AqkBBBBBBJJt,,---BJJt,,---Grz11tyytBJJ'9::ERRRRRRr=   c                 x   |                     | j                  |                     | j                  }}t          j        ||dd          \  }}t          j        ||dd          \  }}t          j        ||dd          \  }}	t          j        ||dd          \  }
}t          ||           t          |	|           ||	k    sJ t          ||                     d                     t          ||                     d                     t          ||                     d                     t          |
|                     d                     |j        |j        k    r| j        nd}t          ||                     d          |d	
           t          |	|                     d          |d	
           d S )NFr   r   r   re  rf  rg  gii5?r5  rh  g22?rr  rk  s                r;   &test_mannwhitneyu_no_correct_one_sidedz7TestMannWhitneyU.test_mannwhitneyu_no_correct_one_sided  s   zz$&!!2::df#5#51#Aq%VDDDB#Aq%YGGGB#Aq%YGGGB#Aq%VDDDBBBRxxxxBJJt,,---BJJt,,---BJJt,,---BJJt,,---Grz11tyytBJJ'8995QQQQBJJ';<<4eTTTTTTr=   c                    |                     | j                  |                     | j                  }}t          j        ||dd          \  }}t          j        ||dd          \  }}t          ||           t          ||                     d                     t          ||                     d                     |j        |j        k    r| j        nd}t          ||                     d          |d	           d S )
NFr   r   re  rf  rg  g22?r5  rh  rr  rs  s	            r;   &test_mannwhitneyu_no_correct_two_sidedz7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sided  s    zz$&!!2::df#5#51#Aq%[IIIB#Aq%[IIIBBBJJt,,---BJJt,,---Grz11tyytBJJ';<<4eTTTTTTr=   c                    |                     g d          }|                     g d          }t          j        ||d          }t          |j        |                     d                     t          |j        |                     d                     t          j        ||d          }t          |j        |                     d                     t          |j        |                     d                     t          j        ||d	          }t          |j        |                     d                     t          |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   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   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   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   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   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   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   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   g     @g ?չ>r   g&)E?r   g?չ?)r4   r   r   r   r\   r^   r_   s        r;   test_mannwhitneyu_onesz'TestMannWhitneyU.test_mannwhitneyu_ones  sK   JJ 0 0 0 1 1& JJ ( ( ( ) )  A6:::rzz'':':;;;
BJJ/D$E$EFFF A9===rzz'':':;;;
BJJ$?$?@@@ A;???rzz'':':;;;
BJJ/@$A$ABBBBBr=   N)1ru   rv   rw   r1   rx   r   r   r   r   r7   r8   cases_basicry   r   cases_continuityr   r   r  r  r  r  r  r   r&  cases_scalarr+  r.  rA  rC  rF  rM   rm   cases_11355rK  
cases_9184rP  rT  
cases_2118rY  r_  rc  ri  rj  rX  rp  rt  rv  rx  rz  rz   r=   r;   r   r      s_        [!!+6S!TT- - UT-*
. 
. 
.10 10 10j 	-,,A	 	 	A& %0<HH*,$*lCC*,$-FF*,$/7CC*,$*g>>*,$-AA*,-K [1;??[W&B&B&BCCJ J DC @?J *5MM/1)/4HH/1)2dKK/1)4NN/1)/5II/1)2eLL/12 [13CDD= = ED=< < <,  $8$8$8...0 0Coo"A"A"A<<<KKKM MC )((777KKK2 2 2< < <= =C +**???1 1 19 9 9G G G$ $ $% %C+ + +88 8 8*4 4 4" &1LII%+|DD %.,GG)+%0GDDgN%+w??K%.'BBGLNL [/>>< < ?><H H H [!!+6S!TT[Xg'>??)K )K @? UT)KV2 2 2 [!!+6S!TT9 9 UT9 "MM1aAq!Q:* "MM1aAq!Q?)+ 261%1aAq!Q:/+ 261%1aAq!Q?* *1aAq!Q?/+,K  [>LLD D MLD ?>>BBBCCC@@@CCCEEE:::===???AJ [ 67AC C< <C C<: [!!+6S!TT) ) UT)  <<#sY8MN<<#sV5JK<<#s[)D99qc9.CD99qc6+@A99qc;	:q6Aq69.BCq6Aq66+?@q6Aq6;9;J [BBBJOOH H POH: : :: [],L,L,LMM	= 	= NM	=	- 	- 	-A	N 	N 	NA DT T T$	S 	S 	SU U U$	U 	U 	U+C +C +C +C +C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 )NrE   r   r?   c                 6    g | ]}j         |         d          S )r   )	arguments)r3  idxr5   s     r;   r4  z,TestSomersD.setup_method.<locals>.<listcomp>E  s%    HHH#t~c*1-HHHr=   r   r   )ALL_INTEGER	ALL_FLOATdtypesrM   rN   r  	functoolspartialr   somersdpartialfuncr   )r5   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 )Nra  r-   )r  r   r\   r   r^   )r5   r   r`   s      r;   pythranfunczTestSomersD.pythranfuncN  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)r         rF   r   )rF   r     #   rf   )r?   rA   r@   rF      ra  r-   )r   r  get_optional_argsr   r\   r^   )r5   r  r  optional_argsr  s        r;   test_pythranfunc_keywordsz%TestSomersD.test_pythranfunc_keywordsS  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)rC   r@   r?   rA   rD   rB   rF   rG   )rC   r@   rD   rA   r?   rG   rF   rB   r'  r   ra  r-   r?   )	r   rC   r@   r?   rA   rD   rB   rF   rG   )	rC   r@   r   rD   rA   r?   rG   rF   rB   )rC   r@   r?   rA   rD   rB   rF   )rC   r@   rD   rA   r?   rF   rB   )g+$I$I¿g=/3n+?rE   r   r   )
r   r@   r?   rA   rB   rD   rC   rF   rG   rg   )gs'}'?r   rh   )g      r   )
rg   rF   rG   rD   rC   rA   rB   r@   r?   r   )g}'}'r   )rf   r@   r?   rf   r@   )r?   rB   rF   r?   r   )      g.ʂ?)r@   r@   r@   )r@   r   r@   rG        4@)r   r  r   r\   r^   rM   rN   arrayr]   r   r   )r5   r7   r8   r   r`   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@   rA   rA   r?   r@   r@   r@   r@   r@   r@   r@   rA   rA   rA   rA   rA   rA   )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((Ƿ?ra  r-   r/   )rA   r@   r@   rA   )r   r  r   r\   r^   r   r  r6  )r5   r7   r8   d_crd_rcr:   r`   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 )NrG   r@   rD   rC   rA   rB   r?   gHHHHHH?r  r   U   rK   )gM&w?r   gtE]t)rM   r  Tr   r   r  r\   )r5   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                 b   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   rB   rD   r   r:   random_stater@   r?   ri   gayra  r-   gPj$?)rM   prodrk   RandomStater   multinomialrvsr   reshaper  insertr:  r   r\   r^   )r5   Nr6  re   rn   r  r`   s2r  s3rE  s4res4s                r;   *test_contingency_table_with_zero_rows_colsz6TestSomersD.test_contingency_table_with_zero_rows_cols  s    wu~~i##A&&!!!rwt}}T'9/2 " 4 44;GENN 	
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                 z   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-negativer   r}   z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.r?   )rA   rA   r  )rM   r  rk   rl   r   r  r  r   r  r   r   r  r:  )
r5   r  r6  re   rn   r  s5r   s6s7s
             r;   test_invalid_contingency_tablesz+TestSomersD.test_invalid_contingency_tables  s   wu~~i##A&&!!!rwt}}T'9/2 " 4 44;GENN 	
 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   C  CC(D		DD,EEE/FFFG((G,/G,H00H47H4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   rh   g @)rA   r@   r?   r   r  )rM   rm   r   r  r   r\   r^   )r5   r7   r  r8   y2r`   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 )NrE   )rM   rN   r   r  r   r  eyer5   r7   r8   r`   s       r;   test_contingency_table_returnz)TestSomersD.test_contingency_table_returnK  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  )rC   rD   rF   rG   rF   r   r   r   r   r?   r@   r   z`alternative` must be...r   	ekki-ekki)
r   r  r\   r   r   r^   reverser1   r   r   )r5   r  r  r   r`   s        r;   test_somersd_alternativez$TestSomersD.test_somersd_alternativeR  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 )	NrE   r?   rh   r   r   r   r   r   )rM   rN   flipr   r  r\   r^   )r5   r  r  r  expected_statisticr`   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          }|                    ||          }|                    ||          }d}t	          j        ||          j        }t          ||d           d S )Nr?   r@   @B l   .E5 g 0uD?ra  r-   )rM   rk   rl   choicer   r  r\   r   )r5   classes	n_samplesrn   r7   r8   val_sklearn	val_scipys           r;   !test_somersd_large_inputs_gh18132z-TestSomersD.test_somersd_large_inputs_gh18132  s     a&	i##J//JJw	**JJw	** + M!Q''1	YU;;;;;;r=   N)ru   rv   rw   r  r  r  r  r  r  r  r  r  r  r  r1   rx   ry   r  r  rz   r=   r;   r  r  >  s       7 7 7F F F
	> 	> 	>m7 m7 m7^. . .2? ? ?,1 1 1@" " "H	. 	. 	., , ,'; '; ';R [3]CC@ @ DC@0< < < < <r=   r  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  rE   '   )gXyq@g{2s&Q7?r   r@   r   rC   )gllgEA]0K?rF   rG   )*)1%g_  ?r?   )g_c1?g= ?      )g5PyQgQ@2?   r  )ggJ"?)g_c1gwݝل?r   rB   )g7@g      ?rA   )g~t,?3O?rD   )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   r\   r^   r   r5   input_sampler   r`   r\   r^   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@   rA   rB   r   r   ,The input `table` must be of shape \(2, 2\).rD   *All values in `table` must be nonnegative.rh   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)r   r   r   rM   rN   r  r5   	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r  c                     t          |          }|j        |j        }}t          ||d                    t          ||d                    d S Nr   r?   r   r\   r^   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_zero  sL     L))M3:6	VXa[)))Y,,,,,r=   )r  gE\/??   ,  )ggQ5r      rL   i  )g&X}>r   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   Nrh   r   Hz>r-   )rM   r  r   r\   r^   r   )	r5   r  r   r   expected_statless_pvalue_expectr`   r\   r^   s	            r;   test_less_greaterz"TestBarnardExact.test_less_greater  s    , -5)))##8L11!!!TTrT':L*NMLkBBBM3:6	-1C!D4	
 	
 	
 	
 	
 	
r=   N)ru   rv   rw   __doc__r1   rx   ry   r  r  r  r  rM   r]   r  r  rz   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@   rF   rG   )<vB\?g/??rC   r?   rE   )gM?gA>?r  r  r  )_VѶ?g֭?)u %?gc'?r   rB   r?   r?   rA   )r   g      ?rf   )+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   r-   Nr   r\   r^   r   ATOLr  s         r;   	test_lesszTestBoschlooExact.test_lessE  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|?rD   )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   r-   Nr  r  s         r;   test_greaterzTestBoschlooExact.test_greaterb  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?)r   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   r-   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@   rA   rB   r   r  r  rD   r  rh   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r  )r   r   r   rM   rN   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   r\   r^   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   rf   r   r   r   r@   r   r   )r   r^   r^  )r5   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@   rF   rG   r   r?   )r   r\   r   fisher_exactr   )r5   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)ru   rv   rw   r  r  r1   rx   ry   r  r  r  r  rM   r]   r  r#  r(  rz   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                      e Zd Zej                            dg  ej        d          f ej        d          dgfg          ej                            dd          d                         Z	d Z
d	 Zej                            d
g d          d             Zej                            dg d          d             Zej        j        d             Zd Zd Zd ZdS )TestCvm_2sampr   rC   r?   r   zlazy -> no axis_nan_policyr   c                 T   fd|D             }t          t          t                    5  t          | }t	          |j                            j                             t	          |j                            j                             d d d            d S # 1 swxY w Y   d S )Nc              3   `   K   | ](}                     |t                               V  )dS )r*   N)r4   r   )r3  argr6   s     r;   	<genexpr>z5TestCvm_2samp.test_too_small_input.<locals>.<genexpr>  s<      LL

3&6r&:&:
;;LLLLLLr=   rZ   )	r   r   r   r   r   r\   r4   r]   r^   )r5   r   r6   r`   s     ` r;   test_too_small_inputz"TestCvm_2samp.test_too_small_input  s     MLLLtLLL+3HRPPP 	< 	<&-CCM2::bf+=+=>>>CJ

26(:(:;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   A$BB!$B!c                     |                     d          }d}t          j        t          |          5  t	          ||d           d d d            d S # 1 swxY w Y   d S )NrC   z/method must be either auto, exact or asymptoticr   xyz)rN   r1   r   r   r   )r5   r6   r8   msgs       r;   r   z TestCvm_2samp.test_invalid_input  s    IIaLL?]: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@   rA   rB   rF   rD   )r   r   rf   r  )r   rM   r  r   r\   r^   )r5   r7   r8   r1r2s        r;   test_list_inputzTestCvm_2samp.test_list_input  sl    OO!!Q''!"(1++rx{{;;blBI.ry0IJJJJJr=   r!   r"   c                    t          |          r%|j        dk     r|dk    rt          j        d           |t	          |          nt          ||          }|                    g d|          }|                    g d|          }t          ||          }t          |j	        |                    d|          d	           t          |j
        |                    d
|          d	           d S )Nr&   r#   r'   )	gffffff@g @r,   gffffff!@皙"@g#@g333333$@g333333%@gffffff&@r*   )g@g@g@      @333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?rH   r-   g
ףp=
?r}   )r   r0   r1   r2   r   r3   r4   r   r   r\   r^   )r5   r!   r6   r7   r8   rs         r;   test_example_conoverz"TestCvm_2samp.test_example_conover  s    B<< 	=BNU22u	7I7IK;<<<(- $$$72u;M;MJJGGGuJUUJJ B B BIN  P P A&&RZZUZ%C%C$OOOO"**S*">">TJJJJJJr=   zstatistic, m, n, pval))i  rC   rD   gcj`?)ii  rF   rF   gtE]t?)i@  rB   rD   g88?)i  rD   rF   gXwS?c                 D    t          t          |||          |           d S r   )r   r   )r5   r\   r  r   pvals        r;   test_exact_pvaluezTestCvm_2samp.test_exact_pvalue   s'     	*9a;;TBBBBBr=   c                    t           j                            d          }t          j                            d|          }t          j                            d|          }|                    |          |                    |          }}t          ||          }d|j        cxk     rdk     sn J t          ||dz             }d|j        cxk     rdk     sn J d S )Ni  r  )re   r  i r   r?   r   )	rM   rk   rl   r
   normr  r4   r   r^   )r5   r6   rn   r7   r8   r;  s         r;   test_large_samplezTestCvm_2samp.test_large_sample  s     i##D))""c"BB""S"AAzz!}}bjjmm1 A&&18a AcE**18ar=   c                    t           j                            d          }|                    |                    d                    }|                    |                    d                    }t	          ||d          }t	          ||d          }t          |j        |j                   t          |j        |j        d           d S )	Nr   rF   rG   r   r   r   r}   r-   )	rM   rk   r  r4   r   r   r\   r   r^   )r5   r6   rn   r7   r8   r4  r5  s          r;   test_exact_vs_asymptoticz&TestCvm_2samp.test_exact_vs_asymptotic  s    i##A&&JJszz!}}%%JJszz!}}%%!!Qw777!!Q|<<<bl333	294888888r=   c                    |                     d          }|                    g d          }t          ||d          }t          ||d          }t          |j        |j                   |                     d          }t          ||d          }t          ||d          }t          |j        |j                   d S )Nr  )r   g@g333333*@r   r   r   g      5@r   )rN   r4   r   r   r^   )r5   r6   r7   r8   r4  r5  s         r;   test_method_autozTestCvm_2samp.test_method_auto!  s    IIcNNJJ'''((!!Qw777!!Qv666	29---IIcNN!!Q|<<<!!Qv666	29-----r=   c                    |                     d          }t          ||          }t          |j        |                    d                     t          |j        |                    d                     t          |d d         |d d                   }t          |j        |                    d                     t          |j        |                    d                     d S )Nr  r   r   rB   )rN   r   r   r\   r4   r^   )r5   r6   r7   r`   s       r;   test_same_inputzTestCvm_2samp.test_same_input-  s     IIbMM"1a((rzz"~~666
BJJrNN333"1RaR5!BQB%00rzz"~~666
BJJrNN33333r=   N)ru   rv   rw   r1   rx   ry   rM   rN   r   r/  r   r6  r<  r?  xslowrB  rD  rF  rH  rz   r=   r;   r*  r*    s}       [Vr929Q<<&8'0ry||aS&9&; < <[!!+6R!SS< < TS< <<. . .K K K [W&B&B&BCCK K DCK [45 5 56 6
C C6 6
C [
  
  
 9 9 9
. 
. 
.4 4 4 4 4r=   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d Ze	j
                            dd          d              Ze	j
                            d!g d"          d#             Zd$ Zd%S )&TestTukeyHSD)rH       7@ffffff:@皙;@fffff=@)ffffff<@皙A@     =@皙@@皙>@)g:@gL<@gL8@g333333:@g;@)rH  rL  gHzG:@rM  rN  rO  rT  rT  )rH  rL  rM  )
rP  rQ  rR  rS  rT  rP  rQ  rR  rS  rT  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,atolr/   g|=)equal size sample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;
         -  rC   Nr*   )rD   rD   r?   r-   r~   rM   r4   replacesplitfloatr  r   	tukey_hsdconfidence_intervalintr   lowr\   highr^   )r5   datares_expect_strr.   
res_expect	res_tukeyconfro   jlr  hsigs                r;   test_compare_saszTestTukeyHSD.test_compare_sasf  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
        rJ  r  rU  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*   rA   rD   r?   r-   N)rM   r4   r^  r_  r  r   r`  ra  rb  r   rc  r\   rd  r^   )r5   re  rf  r.   rg  rh  ri  ro   rj  rk  r  rl  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
        rZ  r[  rC   Nr*   rp  )   rK   6   r  F   4   3   rs  C   r   r        ry     )   r  ,   )r  r  ry  r  rf   r  r  rK   $   *   rs  rz  r  r  rL   r  r  ry  )r~  r  r  r  rE   r  rL   r  rs  r  r  r  r  r   r  r  r  rL   r?   r  r-   rV  h㈵>r\  )r5   str_resrg  re  rh  ri  ro   rj  r  rk  rl  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@r   )g @r:  g333333@gffffff"@r9  )g       @g      %@g333333 @r  r8  )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   rA   r*  r  r}   r-   N)r   r`  ra  rM   r4   r   rc  rd  )r5   group1group2group3group4r`   ri  lowerupperro   rj  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          }|                    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 )Nl   ]A )rA   r   r   r   r   r?   )rM   rk   rl   r   r`  ra  r   rc  rd  r  diagonalr\   r^   )r5   rn   re  r`   ri  s        r;   test_rand_symmzTestTukeyHSD.test_rand_symm  s   i##J//zz(##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@   )rD   rF   rA   )r   r   r   r`  rM   rm   r-  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@   rA   rC   )rC      rD   r   r   r   r`  r-  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 oner   r@   rC   )rB   rC   rD   r  r-  s    r;   test_no_emptyzTestTukeyHSD.test_no_empty  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c                     d}t          t          |          5  t          j        g dddgddgd	           d d d            d S # 1 swxY w Y   d S )
Nz(Expected a boolean value for 'equal_var'r   r   r@   rC   rD   rF   False)	equal_var)r   	TypeErrorr   r`  )r5   r2  s     r;   test_equal_var_input_validationz,TestTukeyHSD.test_equal_var_input_validation  s    89C000 	J 	JOIII1v1vIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   A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  rF   rA   r  )r5   r  s     r;   test_not_enough_treatmentsz'TestTukeyHSD.test_not_enough_treatments   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)r  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   r  rA   rB   rg   )r   r   r   r`  ra  )r5   r  r;  s      r;   test_conf_level_invalidz$TestTukeyHSD.test_conf_level_invalid%  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  )r   r`  data_diff_size	ttest_indr   r^   )r5   rh  	res_ttests      r;   test_2_args_ttestzTestTukeyHSD.test_2_args_ttest+  sn    OT%8!%<=	OT%8!%<=		()*:4*@AAA	()*:4*@AAAAAr=   N)ru   rv   rw   data_same_sizer  extreme_sizesas_same_sizesas_diff_sizesas_extremer1   rx   ry   rn  matlab_sm_sizmatlab_diff_szrq  r  r  r  r  r  r  r  r  r  r  rz   r=   r;   rK  rK  ;  sg       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J J J
 [Wf--5 5 .-5 [T>>>22& & 32&
B B B B Br=   rK  c                   ,   e Zd Zg dg dg dfZg dg dg dg dfZdZd	Zej        j	        ej        
                    d
eefeeffddg          d                         ZdZdZej        
                    d
eefeeffddg          d             ZdS )TestGamesHowell)g      8@r   g      ?@     I@)g      A@      2@r  g      :@)g      1@g      Q@g     M@g      @)g      >@r   r  )g     @Tg     Q@g      ;g     O@)g      E@g      &@g      =@g      3@g      I@)r   g      6@r  r  g      "@aK  
            Mean Diff      Lower Bound         Upper Bound         Sig
    0 - 1   8.25000000    -16.5492749527311    33.0492749527311    0.558733632413559
    0 - 2  -5.50000000    -63.6702454316458    52.6702454316458    0.941147750599221
    1 - 2  -13.7500000    -74.3174374251372    46.8174374251372    0.682983914946841
    a+  
             Mean Diff       Lower Bound        Upper Bound         Sig
    0 - 1	 28.16666667    -141.985416377670   198.318749711003	0.8727542747886180
    0 - 2	 4.466666667	-37.2830676783904   46.2164010117237	0.9752628408671710
    0 - 3	 16.26666667	-35.0933112382470   67.6266445715803	0.4262506151302880
    1 - 2	-23.70000000	-195.315617201249   147.915617201249	0.9148950609000590
    1 - 3	-11.90000000	-188.105478728519   164.305478728519	0.9861432250093960
    2 - 3	 11.80000000	-16.2894857524254	39.8894857524254    0.4755344436335670
    zdata, res_expect_strrU  rV  rW  c                 V   t          j        |                    dd                                          dd         t                                        dd          }t          j        |dd	i}|                                }|D ]\  }}}}	}
}t          |          t          |          }}t          |j        ||f         |d
           t          |j        ||f         |d
           t          |j        ||f         |	d           t          |j        ||f         |
d           dS )a^  
        DATA LIST LIST /Group (F1.0) Value (F8.2).
        BEGIN DATA
        0 24
        0 23
        0 31
        0 51
        1 34
        1 18
        1 18
        1 26
        2 17
        2 68
        2 59
        2 7
        END DATA.

        ONEWAY Value BY Group
            /MISSING ANALYSIS
            /POSTHOC=GH ALPHA(0.05).
        rZ  r[  rF   Nr*   rh   rD   r  Fg:0yE>r-   rV  r  )rM   r4   r]  r^  r_  r  r   r`  ra  rb  r   r\   r^   rc  rd  )r5   re  rf  rg  	res_gamesri  ro   rj  r  rk  rl  r:   s               r;   test_compare_spssz!TestGamesHowell.test_compare_spssO  s:   8 Z""5#..4466qrr:   Q 	 OT;U;;	,,.. * 	; 	;Aq!Q1q663q66qAI/15qtDDDDI,QT2ADAAAADHQTNAD9999DIadOQT:::::	; 	;r=   z
                  q value             Pr(>|q|)
    1 - 0 == 0   -1.5467805948856344  0.55873362851759
    2 - 0 == 0    0.4726721776628535  0.94114775035993
    2 - 1 == 0    1.246837541297872   0.68298393799782
    aw  
                 q value             Pr(>|q|)
    1 - 0 == 0  -1.0589317485313876  0.87275427357438
    2 - 0 == 0  -0.5716222106144833  0.97526284087419
    3 - 0 == 0  -2.6209678382077000  0.42625067714691
    2 - 1 == 0   0.8971899898179028  0.91489506061850
    3 - 1 == 0   0.4579447210555352  0.98614322544695
    3 - 2 == 0  -2.198800177874794   0.47553444364614
    c                    t          j        |                    dd                              dd                                          dd         t                                        dd          }t          j        |d	d
i}|D ]E\  }}}}}t          |          t          |          }}t          |j
        ||f         |d           FdS )a;  
        games-howell is provided by PMCMRplus package
        https://search.r-project.org/CRAN/refmans/PMCMRplus/html/gamesHowellTest.html
        > library("PMCMRplus")
        > options(digits=16)
        > table = data.frame(
            values = c(24., 23., 31., 51., 34., 18., 18., 26., 17., 68., 59.,  7.),
            groups = c("0", "0", "0", "0", "1", "1", "1", "1", "2", "2", "2", "2")
          )
        > table$groups = as.factor(table$groups)
        > fit <-aov(values ~ groups, table)
        > res = gamesHowellTest(fit)
        > summary(res)
        rZ  r[  z == rA   Nr*   rh   rC   r  Fr  r-   )rM   r4   r]  r^  r_  r  r   r`  rb  r   r^   )	r5   re  rf  rg  r  rj  ro   _r:   s	            r;   r  zTestGamesHowell.test_compare_r  s    ( Z""5#..WVS!!%%''!"".   !Q 	 OT;U;;	 ( 	B 	BMAq!Qq663q66qAI,QT2ADAAAAA	B 	Br=   N)ru   rv   rw   r  r  spss_same_sizespss_diff_sizer1   rx   rI  ry   r  r_same_sizer_diff_sizer  rz   r=   r;   r  r  3  sC       *********,N &oo,,,///...0N
NN [[3,n=+^<>!4!6!8  9 9
!; !;9 9 !;FKK [3,k:+[9;!4!6!8  9 9
B B9 9
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   rA   r   gea?)r@   r   rD   r   g	c?c                 b    t          j        ||||          }t          |j        |d           d S r   r   poisson_means_testr   r^   )r5   c1n1c2n2p_expectr`   s          r;   test_paper_examplesz(TestPoissonMeansTest.test_paper_examples  s7     &r2r266
H4888888r=   z c1, n1, c2, n2, p_expect, alt, d)r  rE   r  rE   g{}?r   r   )rE   rE   rE   rE   goPF?r   r   )2   r  r?   r?   gae?r   r~   )rA   r   r  r   g/V-=?r   r   )rA   rf   rB   r  g")?r   r   )rB   r  rA   r   g_'Qm~?r   r   )rB   r  rA   rE   g|?r   r   )r?   r?   r  r  g0ݷ?r   r   c                 j    t          j        ||||||          }t          |j        |dd           d S )N)r   diffg>r5  r.   rX  r  )	r5   r  r  r  r  r  altdr`   s	            r;   test_fortran_authorsz)TestPoissonMeansTest.test_fortran_authors  s@    $ &r2r23QOOO
H4eDDDDDDr=   c                 r    d\  }}d\  }}t          j        ||||          }t          |j        d           d S )N)r   r   r?   r  r5   count1count2nobs1nobs2r`   s         r;   test_different_resultsz+TestPoissonMeansTest.test_different_results  sD     &#u&vufeDD
A&&&&&r=   c                 r    d\  }}d\  }}t          j        ||||          }t          |j        d           d S )Nr  r  r?   r  r  s         r;   test_less_than_zero_lambda_hat2z4TestPoissonMeansTest.test_less_than_zero_lambda_hat2  sD     u&vufeDD
A&&&&&r=   c                    d\  }}d\  }}d}t          t          |          5  t          j        d|||           d d d            n# 1 swxY w Y   t          t          |          5  t          j        ||d|           d d d            n# 1 swxY w Y   d}t          t          |          5  t          j        d|||           d d d            n# 1 swxY w Y   t          t          |          5  t          j        ||d|           d d d            n# 1 swxY w Y   d}t          t          |          5  t          j        |d||           d d d            n# 1 swxY w Y   t          t          |          5  t          j        |||d           d d d            n# 1 swxY w Y   d	}t          t          |          5  t          j        ||||d
           d d d            n# 1 swxY w Y   d}t          t          |          5  t          j        ddddd           d d d            d S # 1 swxY w Y   d S )Nr  r  z`k1` and `k2` must be integers.r   r   z1`k1` and `k2` must be greater than or equal to 0.rh   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   )r   r  r   r  r   )r5   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)ru   rv   rw   r1   rx   ry   r  r  r  r  r   rz   r=   r;   r  r    s       [7      :  
9 9 
9 [?
 	=<<<<<===>>>999;;; 	655666B  "E E# "E' ' '' ' '!F !F !F !F !Fr=   r  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@   rF   rd   z,`x` and `y` must be exactly one-dimensional.r   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...r  r   )	rM   rk   rl   r1   r   r   r   bws_testr]   )r5   rn   r7   r8   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@   rA   rB   rD   rF   rG   )rC   rg   rE   rc   rf   r   r  r   r   gI+@rH   r-   gf$/g?)r   r  r   r\   r   r^   r  s       r;    test_against_published_referencez,TestBWSTest.test_against_published_reference  s_     "!!&&&nQ{;;;u48888SZ)))))r=   )r   r\   r^   ))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  rd   r   vIh%<=rW  r}   r   r  rM   rk   rl   r   r  r   r\   r^   r5   r   r\   r^   rn   r7   r8   r`   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 rg   rd   rG   r   r  rW  r}   r   r  r  r  s           r;   test_against_R_imbalancedz%TestBWSTest.test_against_R_imbalanced7  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@   rE   rd   rE   )n_resamplesrn   r   l   VC	A )
rM   rk   rl   r   rb  r  r  null_distributionr   allclose)r5   rn   r7   r8   r   r  r  rE  s           r;   test_methodzTestBWSTest.test_methodI  sH   i##$788zzwz''1i##$788(RSAAA~a62224)**b0000i##$788(RSAAA~a6222.0FGGGi##$788(RSAAA~a6222;t5t7MNNNNNNNr=   c                    t           j                            d          }|                    d          }|dz
  }t          j        ||d          }|j        dk    sJ t          |j        dt          |j	                  z             t          j        ||d          }|j        dk    sJ t          |j        d           t          j        ||d          }|j        dk     sJ t          |j        dt          |j	                  z             t          j        ||d          }|j        dk     sJ t          |j        d           d S )	Nr  rC   rd   r?   r   r   r   r   )
rM   rk   rl   r   r  r\   r   r^   r  r  )r5   rn   r7   r8   r`   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)ru   rv   rw   r  r  r1   rx   ry   r  r  r  r  rz   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  )8	itertoolsr   numpyrM   r  r1   numpy.testingr   r   r   r   r   scipyr   r	   scipy.statsr
   scipy.stats._hypotestsr   r   r   r   r   r   r   scipy.stats._mannwhitneyur   r   r   scipy._lib._testutilsr   
scipy._libr   r   scipy._lib._array_apir   r   r   r   scipy._lib._array_api_no_0dr   r   scipy.stats._axis_nan_policyr   r   r    r|   r   r  r  r	  r*  rK  r  r  r  rz   r=   r;   <module>r     sN                  @ @ @ @ @ @ @ @ @ @ * * * * * *                 % % % % % %4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 E D D D D D D D D D 2 2 2 2 2 2 - - - - - -0 0 0 0 0 0 0 0 0 0 0 0 H H H H H H H H R R R R R R R R '((?2 ?2 ?2 ?2 ?2 ?2 ?2 )(?2D 5'((\O \O \O \O \O \O \O )(\O~ 5%&&	C 	C 	C 	C 	C 	C 	C '&	CDl< l< l< l< l<" l< l< l<^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 '((^4 ^4 ^4 ^4 ^4 ^4 ^4 )(^4BuB uB uB uB uB uB uB uBpsB sB sB sB sB sB sB sBr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=   