o
    Ö­jj8 ã                   @   sZ  d dl mZ d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZ dd	lmZ d d
lm Z  d dl!m"Z"m#Z# G dd„ dƒZ$G dd„ dƒZ%G dd„ dƒZ&G dd„ de ƒZ'G dd„ dƒZ(G dd„ dƒZ)G dd„ dƒZ*G dd„ dƒZ+G dd„ dƒZ,G dd„ dƒZ-dS ) é    )ÚproductN)Úassert_Úassert_equalÚassert_allcloseÚassert_almost_equal)Úraises)Údistributions)Úepps_singleton_2sampÚcramervonmisesÚ_cdf_cvmÚcramervonmises_2sampÚ_pval_cvm_2samp_exactÚbarnard_exactÚboschloo_exact)ÚmannwhitneyuÚ
_mwu_stateÚ_MWUé   )Úcheck_named_results)Ú_TestPythranFunc)ÚSmallSampleWarningÚtoo_small_1d_not_omitc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestEppsSingletonc                 C   sJ   t  g d¢¡}t  g d¢¡}t||ƒ\}}t|ddd� t|ddd� d S )N)
gffffffÖ¿gffffff@g®Gáz®û?ç\�Âõ(\ç?çffffffÖ?g…ëQ¸…@gq=
×£pÝ?g®Gázî¿g®Gáz®×¿g¤p=
×#(@)
gffffffò¿g333333Ã¿g×£p=
×@g      
@g®Gáz®@g)\�Âõ(@g      @gö(\�Âõ@gÃõ(\�Â @ç333333!@gHáz®G.@r   ©Údecimalg˜Q,·´r?é   )ÚnpÚarrayr	   r   ©ÚselfÚxÚyÚwÚp© r'   ú]/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/tests/test_hypotests.pyÚtest_statistic_1   s
   z"TestEppsSingleton.test_statistic_1c                 C   sB   t  d¡}t  d¡}t||ƒ\}}t|ddd� t|ddd� d S )	N)r   r   é   r*   r*   r*   r   r   r   r   é   é   r,   r,   r,   é   é
   r.   r.   r.   )r.   r+   r   r,   r.   r.   r   r,   r-   é   r.   r   r   r/   r   é   r   r,   r0   r.   gÍÌÌÌÌÌ!@çü©ñÒMbP?©Úatolg&ª·¶J°?r   r   )r   r    r	   r   r   r!   r'   r'   r(   Útest_statistic_2%   s
   

z"TestEppsSingleton.test_statistic_2c           	      C   sž   t j d¡ t  d¡t  d¡}}tt|ƒt|ƒƒ\}}tt|ƒt|ƒƒ\}}t||ƒ\}}t||  ko8|kn  ƒ t||  koI|kƒ d S   ƒ d S )NéÒ  é   é   )r   ÚrandomÚseedÚaranger	   ÚlistÚtupler   )	r"   r#   r$   Úw1Úp1Úw2Úp2Úw3Úp3r'   r'   r(   Útest_epps_singleton_array_like/   s   &z0TestEppsSingleton.test_epps_singleton_array_likec                 C   sj   dt  d¡}}tjttd�� t||ƒ}t|jt j	ƒ t|j
t j	ƒ W d   ƒ d S 1 s.w   Y  d S )N©r   r*   r   r+   r.   ©Úmatch)r   r:   ÚpytestÚwarnsr   r   r	   r   Ú	statisticÚnanÚpvalue©r"   r#   r$   Úresr'   r'   r(   Útest_epps_singleton_size:   s   
"ýz*TestEppsSingleton.test_epps_singleton_sizec                 C   s0   dddddt jft  d¡}}ttt||ƒ d S )Nr   r*   r   r+   r,   r.   )r   Úinfr:   Úassert_raisesÚ
ValueErrorr	   ©r"   r#   r$   r'   r'   r(   Útest_epps_singleton_nonfiniteB   s   z/TestEppsSingleton.test_epps_singleton_nonfinitec                 C   s2   t  d¡t  d¡}}t||ƒ}d}t||ƒ d S )Né   r6   )rI   rK   )r   r:   r	   r   )r"   r#   r$   rM   Ú
attributesr'   r'   r(   Ú
test_namesG   s   
zTestEppsSingleton.test_namesN)	Ú__name__Ú
__module__Ú__qualname__r)   r4   rC   rN   rS   rV   r'   r'   r'   r(   r      s    
r   c                   @   sx   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
ej dddgg¡dd„ ƒZdd„ Zdd„ ZdS )ÚTestCvmc                 C   ó    t tg d¢dƒg d¢dd� d S )N)gy;ÂiÁ‹ž?g#¾³^¥?gþE�>‘¿?gåD»
)î?r+   ©ç{®Gáz„?çš™™™™™©?ç      à?g+‡ÙÎ÷ï?ç-Cëâ6?r2   ©r   r   ©r"   r'   r'   r(   Ú
test_cdf_4R   ó
   
ýzTestCvm.test_cdf_4c                 C   r[   )N)g…8„*5›?g@¤ß¾œ£?g÷Hmâä¾?g%¯Î1 â?r.   )r]   r^   r_   g333333ï?r`   r2   ra   rb   r'   r'   r(   Útest_cdf_10X   rd   zTestCvm.test_cdf_10c                 C   r[   )N)g€}têÊg™?g˜`�º¢?gäIÒ5“o¾?gÜ×�sF”ò?éè  r\   r`   r2   ra   rb   r'   r'   r(   Útest_cdf_1000^   rd   zTestCvm.test_cdf_1000c                 C   s   t tg d¢ƒg d¢dd� d S )N)çaÃÓ+e™?ç+û®þ·¢?çÉ&pën¾?ç+MJA·—ò?r\   r`   r2   ra   rb   r'   r'   r(   Útest_cdf_infd   s
   

ýzTestCvm.test_cdf_infc                 C   s4   t tddgdƒddgƒ t tddgdƒddgƒ d S )	Ng²Xª(~$?gUUUUU5f@i  r   r   g†a†ah?g«ªªªªª"@é   )r   r   rb   r'   r'   r(   Útest_cdf_supportj   s   zTestCvm.test_cdf_supportc                 C   s$   t tg d¢dƒtg d¢ƒdd� d S )N)rh   ri   rj   rk   éd   é'  r`   r2   ra   rb   r'   r'   r(   Útest_cdf_large_no   s
   

ýzTestCvm.test_cdf_large_nc                 C   sL   t dtddƒ  k odk n  ƒ t dtdƒ  k o dk ƒ d S   ƒ d S )NgwJëÿï?gÍÌÌÌÌÔt@rf   ç      ð?)r   r   rb   r'   r'   r(   Útest_large_xv   s   "*zTestCvm.test_large_xc                 C   s<   d}t t |¡d dƒ}tt|j|ƒdkƒ t|jdƒ d S )Né   çš™™™™™é?Únormrr   r   )r
   r   Úonesr   r   rI   r   rK   )r"   ÚnrM   r'   r'   r(   Ú
test_low_p   s   zTestCvm.test_low_pr#   r'   ç      ø?c                 C   sZ   t jttd�� t|dƒ}t|jtjƒ t|j	tjƒ W d   ƒ d S 1 s&w   Y  d S )NrE   rv   )
rG   rH   r   r   r
   r   rI   r   rJ   rK   ©r"   r#   rM   r'   r'   r(   Útest_invalid_input‡   s
   
"ýzTestCvm.test_invalid_inputc                 C   s�   t g d¢dƒ}t|jddd� t|jddd� t g d¢ddƒ}t|jddd� t|jd	dd� t g d
¢dƒ}t|jddd� t|jddd� d S )N)g333333û¿r*   r   gÍÌÌÌÌÌô?r+   çš™™™™™¹?ç333333ã?rv   góZ	Ý%qÒ?ç�íµ ÷Æ°>r2   g®EÐ¶šÂ?)r   rz   g!O!W*î?gz"ÇW´™`?)	r   r*   r,   çffffffö?gìQ¸…ëÁ?é   é   çÍÌÌÌÌÌì?ç      @ÚexpongÐeÅË.óê?gnz\Ã(r?)r
   r   rI   rK   )r"   rM   r'   r'   r(   Útest_values_RŽ   s   zTestCvm.test_values_Rc                 C   s|   t  d¡d}}t|tjjƒ}t|dƒ}t|j|jf|j|jfƒ t|tj	j|ƒ}t|d|ƒ}t|j|jf|j|jfƒ d S )Nr,   )r€   çffffffæ?r…   Úbeta)
r   r:   r
   r   r…   Úcdfr   rI   rK   rˆ   )r"   r#   ÚargsÚr1Úr2r'   r'   r(   Útest_callable_cdf    s   
zTestCvm.test_callable_cdfN)rW   rX   rY   rc   re   rg   rl   rn   rq   rs   ry   rG   ÚmarkÚparametrizer|   r†   r�   r'   r'   r'   r(   rZ   N   s    	
rZ   c                   @   sp  e Zd Zej ddg idg ig g dœg¡dd„ ƒZdd„ Zd	d
„ Zg d¢Z	g d¢Z
dddœdgdddœdgdddœdgdddœdgdddœdgdddœdggZej de¡d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%d&„ ƒZd'd(„ Zg d)¢g d*¢g d+¢d,œZg d-¢g d.¢g d/¢g d0¢d1œZg d2¢g d3¢g d4¢g d5¢g d6¢d7œZg d8¢g d9¢g d:¢g d;¢g d<¢g d=¢d>œZd?d@„ ZdAdB„ ZdCdD„ ZdddœdEgdddœdFgdddœdGgdddœdEgdddœdFgdddœdEggZej dHe¡dIdJ„ ƒZdKdL„ Zej dMddg¡dNdO„ ƒZdPdQ„ Zg d1¢dRdSdTdUejdRdVdWdXdXdYgdZd[fg d1¢dRdSdTdUejejdVdWdXdXdYgd\d]fdWdVejdXgdRdSdTdUejdRdVdWdXdXdYgd^d_fdWdVejdXgdRdSdTdUejejdVdWdXdXdYgd`dafdWejejdXgdRdSdTdUejejdVdWdXdXdYgdbdcfgZej dde¡dedf„ ƒZg dg¢g dh¢g di¢g dj¢g dk¢g dl¢g dm¢g dn¢g do¢g	Z ej dpe ¡dqdr„ ƒZ!dsdt„ Z"g d,¢dudvgddwgg d,¢dudvgddwgg d,¢dudvgddxgg d,¢dVgddygg d,¢dVgddygg d,¢dVgddzgdWdVgdWdVgdd{gdWdVgdWdVgdd{gdWdVgdWdVgdd|gg	Z#ej g d}¢e#¡d~d„ ƒZ$d€d�„ Z%ej d‚g dƒ¢¡d„d…„ ƒZ&d†S )‡ÚTestMannWhitneyUÚkwargs_updater#   r$   ©r#   r$   c                 C   s�   t  ddg¡}t  ddg¡}t||d�}| |¡ tjttd�� tdi |¤Ž}t	|j
t jƒ t	|jt jƒ W d   ƒ d S 1 sAw   Y  d S )Nr   r*   r   r+   r’   rE   r'   )r   r    ÚdictÚupdaterG   rH   r   r   r   r   rI   rJ   rK   )r"   r‘   r#   r$   ÚkwargsrM   r'   r'   r(   Ú
test_empty²   s   
"ýzTestMannWhitneyU.test_emptyc                 C   s
  t  ddg¡}t  ddg¡}ttdd�� t||dd� W d   ƒ n1 s&w   Y  ttd	d�� t||dd
� W d   ƒ n1 sCw   Y  ttdd�� t||dd� W d   ƒ n1 s`w   Y  ttdd�� t||dd� W d   ƒ d S 1 s~w   Y  d S )Nr   r*   r   r+   z`use_continuity` must be onerE   Úekki)Úuse_continuityz`alternative` must be one of©Úalternativez`axis` must be an integerrz   ©Úaxisz`method` must be one of©Úmethod)r   r    rP   rQ   r   rR   r'   r'   r(   Útest_input_validation¾   s   ÿÿÿ"ÿz&TestMannWhitneyU.test_input_validationc                 C   sþ  t j d¡ d}t j |d ¡}t j |d ¡}t||ƒ}t||dd�}t||dd�}|j|jks3J ‚|j|jks;J ‚t j |d ¡}t j |d ¡}t||ƒ}t||dd�}t||dd�}|j|jksfJ ‚|j|jksnJ ‚t||ƒ}t||dd�}t||dd�}|j|jks‰J ‚|j|jks‘J ‚t j |d ¡}t j |d ¡}t||ƒ}t||dd�}t||dd�}|j|jks¼J ‚|j|jksÄJ ‚t j |d ¡}t j |d ¡}|d |d< t||ƒ}t||dd�}t||dd�}|j|jksõJ ‚|j|jksýJ ‚d S )Nr   r0   Ú
asymptoticr�   Úexactr   )r   r8   r9   Úrandr   rK   )r"   rx   r#   r$   Úautor    r¡   r'   r'   r(   Ú	test_autoÊ   sH   




zTestMannWhitneyU.test_auto)gm9—âªAj@g¼è+H3Œ[@gi¢²>s@)g›#ëhA{@gð±lËûz@gcžÚDf@gÇ³*âú¹h@gZ¬£ÿõA@gI9^¿YQa@g­ò§Ü`@g©î£ÞÕžp@gÑ¥Š–:q@gõó&º‚‚@g§Zµ|@g’`À×ÖÉr@gM‡cä3g@ú	two-sidedr    ©rš   rž   )é   ç
+ž×÷å?Úless)r§   ç
+ž×÷Õ?Úgreater)r§   ç¼ŒÉ%c�æ?r¡   )r§   g9§ƒ:¨ƒæ?)r§   g9§ƒ:¨ƒÖ?)r§   g*…:¨ƒ:æ?)ÚkwdsÚexpectedc                 C   s$   t | j| jfi |¤Ž}t||ƒ d S ©N)r   r#   r$   r   ©r"   r­   r®   rM   r'   r'   r(   Ú
test_basic   s   zTestMannWhitneyU.test_basicT)rš   r˜   )é   r¨   )r²   r¬   )r²   rª   F)r²   gl,KÎNhä?)r²   gÊiÚ˜ØËå?)r²   gl,KÎNhÔ?c                 C   s(   t | j| jfddi|¤Ž}t||ƒ d S )Nrž   r    )r   r$   r#   r   r°   r'   r'   r(   Útest_continuity2  s   z TestMannWhitneyU.test_continuityc           	      C   s    g d¢}t  g d¢¡}t  g d¢¡d }t  g d¢¡d }|d || || ||| || |d g}t||ddd�}g d	¢}g d
¢}t|j|ƒ t|j|ƒ d S )NrD   ©r   r*   r   r+   r,   )r   r   r   r   r   r]   )r   r   r   r   r   éÿÿÿÿr    )rœ   rž   )r.   é	   ç      !@r0   r„   r/   r-   )r   g]�UÄÚì?g…æ[»é?giœ…\­æ?g°ZX<_Õã?gãžxº.á?gåß ê…
Ù?)r   r    r   r   rI   r   rK   )	r"   r#   Úy0ÚdyÚdy2r$   rM   Ú
U_expectedÚ
p_expectedr'   r'   r(   Útest_tie_correct@  s   *z!TestMannWhitneyU.test_tie_correct)g      Ð?r_   g      è?)r}   çš™™™™™É?çš™™™™™Ù?r~   )r^   r}   r¾   r   r_   gÍÌÌÌÌÌä?©r   r*   r   )r¾   r¿   r~   )gôýÔxé&±?g /Ý$Á?gJ+‡Ñ?r¿   r~   )çyé&1¬œ?çÉv¾Ÿ/­?gÉv¾Ÿ/½?r¾   gj¼t“Ô?çÛù~j¼tÛ?çƒÀÊ¡Eâ?)	gyé&1¬Œ?gV-²�?rÂ   r}   gÙÎ÷SãÅ?g´Èv¾ŸÏ?gÁÊ¡E¶óÕ?g'1¬ZÜ?gmçû©ñÒá?rD   )gÇK7‰A`Å?gZd;ßOÕ?r_   gòÒMbXå?)çªñÒMb¨?çR¸…ëQ¸?çR¸…ëQÈ?ççû©ñÒMÒ?rÃ   rÄ   )	g;ßO�—n’?ç;ßO�—n¢?ç“V-²?g      À?gJ+‡É?rÈ   gôýÔxé&Ù?r_   g�•C‹lã?)çü©ñÒMb€?çü©ñÒMb�?çü©ñÒMb ?gyé&1¬¬?rÆ   ççû©ñÒMÂ?g‘í|?5^Ê?g˜nƒÀÊÑ?g\�Âõ(\×?ç!°rh‘íÜ?çð§ÆK7‰á?)çü©ñÒMbp?rË   rÌ   rÁ   çú~j¼t“¨?g333333³?gÑ"Ûù~j¼?ç×£p=
×Ã?gáz®GáÊ?çð§ÆK7‰Ñ?g®GázÖ?g‹lçû©ñÚ?r_   gºI+‡â?r´   )rÎ   rÈ   g1¬ZdÛ?rÄ   )rÉ   rÊ   rÎ   ç1¬ZdË?g%�•C‹Ô?rÃ   rÄ   )
gú~j¼t“ˆ?gú~j¼t“˜?rÒ   gsh‘í|?µ?gøSã¥›ÄÀ?rÇ   rÔ   g+‡ÙÖ?rÏ   rÐ   )g{®Gázt?r]   gÛù~j¼t“?gL7‰A`å ?rÂ   gj¼t“¶?gP�—nƒÀ?gºI+‡Æ?gX9´ÈvÎ?g…ëQ¸…Ó?gü©ñÒMbØ?gsh‘í|?Ý?gÇK7‰A`á?)çü©ñÒMb`?rÑ   g;ßO�—n‚?g¸…ëQ¸Ž?g9´Èv¾Ÿš?gË¡E¶óý¤?gTã¥›Ä °?gbX9´È¶?g°rh‘í|¿?g…ëQ¸Å?rÕ   gôýÔxé&Ñ?gÉv¾Ÿ/Õ?gòÒMbXÙ?gÃõ(\�ÂÝ?g…ëQ¸á?)r1   rÖ   rÑ   rË   g9´Èv¾ŸŠ?g/Ý$�•?rÍ   rÅ   gL7‰A`å°?g
×£p=
·?g¸…ëQ¸¾?rÓ   gžï§ÆK7É?g`åÐ"ÛùÎ?g7‰A`åÐÒ?r   g“V-Ú?gj¼t“Þ?gË¡E¶óýà?)r   r*   r   r+   r,   r-   c           
      C   s  t tdtddƒƒ | j| j| j| jdœ}| ¡ D ]n\}}| ¡ D ]e\}}t 	dt
|ƒ¡}tj ||¡ ttjj|d�|dd� t 	d|| d ¡}ttjj|d�tjj|d� tjj|d� dƒ tjj|d�}t||d d d… ƒ tj ||¡ tjj|d�}	t||	ƒ q qd S )	NÚsr   )r   r+   r,   r-   ©Úkr1   r2   r   rµ   )Úsetattrr   r   Úpn3Úpn4Úpm5Úpm6Úitemsr   r:   Úlenr×   Ú
set_shapesr   r‰   ÚsfÚpmf)
r"   Úp_tablesrx   ÚtableÚmr&   ÚuÚu2rã   Úpmf2r'   r'   r(   Útest_exact_distributionp  s,   ÿþþìÿz(TestMannWhitneyU.test_exact_distributionc                 C   sÌ   t j d¡ t j d¡}t j d¡}t||dd�}t||dd�}|j|jks(J ‚t  |j|j ¡dks5J ‚t j d¡}t j d¡}t||dd�}t||dd�}|j|jksWJ ‚t  |j|j ¡dk sdJ ‚d S )	Nr   r,   r¡   r�   r    r]   é(   r1   )r   r8   r9   r¢   r   rI   ÚabsrK   )r"   r#   r$   Úres1Úres2r'   r'   r(   Útest_asymptotic_behaviorŒ  s   z)TestMannWhitneyU.test_asymptotic_behaviorc                 C   sr   t g d¢ddgddd�}t g d¢ddgddd�}t|j|jƒ |jdks&J ‚t g d¢ddgd	dd�}t|d
ƒ d S )NrÀ   rz   ç      @r©   r¡   r¦   r«   r_   r¥   )r   r   )r   r   rK   )r"   Úres_lÚres_grM   r'   r'   r(   Útest_exact_U_equals_mean¡  s   ÿÿÿz)TestMannWhitneyU.test_exact_U_equals_mean©r   r   )r   r_   )r   g‹·éƒ¡Eï?)r­   Úresultc                 C   s   t tdi |¤Ž|ƒ d S )Nr   r*   ©r   r*   )r   r   )r"   r­   rõ   r'   r'   r(   Útest_scalar_data½  s   z!TestMannWhitneyU.test_scalar_datac                 C   sH   t tdddd�dƒ t tdddd�dƒ t tddddd�dtjfƒ d S )	Nr   r¡   r�   )r_   r   r    F)rž   r˜   r_   )r   r   r   rJ   rb   r'   r'   r(   Útest_equal_scalar_dataÂ  s   
ÿÿz'TestMannWhitneyU.test_equal_scalar_datarž   c                 C   sz  t j d¡ d}d\}}t j |dd¡}t j d|dd¡d }t||||d	�}d
}|jj|ks1J ‚|jj|ks9J ‚t  ||d¡t  ||d¡}}|d }|j	|j	ksTJ ‚t  
|||f ¡}t  
|||f ¡}|jd d… |ksqJ ‚|jd d… |ks|J ‚t  |¡}	t  |¡}
tdd„ |D ƒŽ D ]}|| }|| }t|||d�}|j|	|< |j|
|< q�t j |j|
¡ t j |j|	¡ d S )Nr   éýÿÿÿ)r/   r.   r   r0   r-   r   r}   )rž   rœ   )r-   r   r0   rµ   )N.c                 S   s   g | ]}t |ƒ‘qS r'   )Úrange)Ú.0Úir'   r'   r(   Ú
<listcomp>ó  s    z8TestMannWhitneyU.test_gh_12837_11113.<locals>.<listcomp>r�   )r   r8   r9   r¢   r   rK   ÚshaperI   ÚmoveaxisÚndimÚbroadcast_toÚzerosr   Útestingr   )r"   rž   rœ   ræ   rx   r#   r$   rM   rþ   Ú
statisticsÚpvaluesÚindicesÚxiÚyiÚtempr'   r'   r(   Útest_gh_12837_11113Ñ  s4   


z$TestMannWhitneyU.test_gh_12837_11113c                 C   s~   g d¢}g d¢}t ||ƒ}tj|d< t ||ƒ}t|j|jƒ t|j|jƒ tj|d< t ||ƒ}t|jtjƒ t|jtjƒ d S )NrD   )r   r-   r/   r0   r¶   r   r*   r   r+   r+   r,   r+   )r   r   rO   r   rI   rK   rJ   )r"   r#   r$   rí   rî   Úres3r'   r'   r(   Útest_gh_11355ý  s   




zTestMannWhitneyU.test_gh_11355r   r-   r/   r0   r*   r   r+   r,   r.   g+z’¿QœÀ?r·   g}$kù\¶?g     €1@g!Ë›G*ã?r§   g›Á,ÖsÿÝ?ç     €8@gêFÏHïQé?)r#   r$   rI   rK   c                 C   s2   t ||dd�}t|j|dd� t|j|dd� d S )Nr    r�   çê-�™—q=r2   )r   r   rI   rK   )r"   r#   r$   rI   rK   rM   r'   r'   r(   Útest_gh_11355b   s   zTestMannWhitneyU.test_gh_11355b)Tr©   r    g¾ˆ²Ò&Óì?)Tr«   r    g„Ïì‡ÓO¿?)Tr¥   r    g„Ïì‡ÓOÏ?)Fr©   r    g9@VN!xì?)Fr«   r    g9þM�õ>¼?)Fr¥   r    g9þM�õ>Ì?)Tr©   r¡   g ?UÈV²ì?)Tr«   r¡   gßºVJHÀ?)Tr¥   r¡   gèÁVJHÐ?)r˜   rš   rž   Ú
pvalue_expc           	      C   s:   d}d}d}t |||||d�}t|j|ƒ t|j|ƒ d S )Né#   )
ru   g�Âõ(\�ê?g=
×£p=þ?g¤p=
×£ð?g333333÷?g®Gázö?g�Âõ(\�þ?g=
×£p=ú?r   g\�Âõ(\÷?)gffffffò?g)\�Âõ(ì?rƒ   g®Gáz®ç?g\�Âõ(\ó?©r˜   rš   rž   )r   r   rI   r   rK   )	r"   r˜   rš   rž   r  Ústatistic_expr#   r$   rM   r'   r'   r(   Útest_gh_91841  s   ÿzTestMannWhitneyU.test_gh_9184c                 C   sf   t  t jt jt jt jt jg¡}t  t jt jt jt jt jg¡}t||ƒ}t|jt jƒ t|jt jƒ d S r¯   )r   r    rJ   r   r   rI   rK   )r"   ÚaÚbrM   r'   r'   r(   Útest_gh_4067P  s
   
zTestMannWhitneyU.test_gh_4067rz   rð   )r   ga×€}¢ã?)r   rr   )rz   g¤Û?hÍå?)rz   r   )r*   gæ5&#\å?)r*   r   )r#   r$   rš   r®   c                 C   s$   t ||d|dd�}t||dd� d S )NTr    r  r  ©Úrtol)r   r   )r"   r#   r$   rš   r®   rM   r'   r'   r(   Útest_gh_2118h  s   
ÿzTestMannWhitneyU.test_gh_2118c                 C   s  t j d¡}d\}}|j|d�}|j|d�}ttdtddƒƒ tj ¡  tj	||dd�}tjj
j}|d t|j|| |j ƒd	 ksDJ ‚tj	||dd� |tjj
jksUJ ‚tj ¡  tj	|d| dd
d� tjj
j}|d d	ksrJ ‚tj	d| |dd
d� |tjj
jks†J ‚d S )Nì   g>·mŽjÑK )r,   r�   ©Úsizer×   r   r¡   r�   rµ   r   r«   )rž   rš   )r   r8   Údefault_rngrÚ   r   r   r×   ÚresetÚstatsr   Úconfigurationsrþ   ÚminrI   )r"   Úrngræ   rx   r#   r$   rM   rþ   r'   r'   r(   Útest_gh19692_smaller_tablep  s"   

&

z+TestMannWhitneyU.test_gh19692_smaller_tablerš   )r©   r«   r¥   c                 C   sx   t j d¡}|jdd�}|jdd�}tj||t ¡ |dd�}tj||d|dd�}t|j|jdd	� t|j|jdd	� d S )
Nr  )r*   r,   r  )r*   r-   r   )rž   rš   rœ   r¡   çVçž¯Ò<r  )	r   r8   r  r   r   ÚPermutationMethodr   rI   rK   )r"   rš   r#  r#   r$   rM   rî   r'   r'   r(   Útest_permutation_method�  s   ÿ
ÿz(TestMannWhitneyU.test_permutation_methodN)'rW   rX   rY   rG   rŽ   r�   r–   rŸ   r¤   r#   r$   Úcases_basicr±   Úcases_continuityr³   r½   rÛ   rÜ   rÝ   rÞ   rê   rï   ró   Úcases_scalarr÷   rø   r
  r  r   rO   Úcases_11355r  Ú
cases_9184r  r  Ú
cases_2118r  r$  r'  r'   r'   r'   r(   r�   «   s&   ÿ

5ÿÿÿÿÿÿö
ÿÿÿÿÿÿö
ÿþûöÿÿÿø


+þþþþþô
ø
ÿ
ø

r�   c                   @   s‚   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zej dd¡dd„ ƒZdd„ ZdS )ÚTestSomersDc                    st   ˆ j ˆ j ˆ _t d¡ˆ j ˆ j ft d¡ˆ j ˆ j fdœˆ _‡ fdd„ˆ jD ƒ}tjtj	dd�ˆ _
ˆ j
|Ž ˆ _d S )Nr.   rô   c                    s   g | ]	}ˆ j | d  ‘qS )r   )Ú	arguments)rû   Úidxrb   r'   r(   rý   ¡  s    z,TestSomersD.setup_method.<locals>.<listcomp>r¥   r™   )ÚALL_INTEGERÚ	ALL_FLOATÚdtypesr   r:   r/  Ú	functoolsÚpartialr   ÚsomersdÚpartialfuncr®   )r"   Úinput_arrayr'   rb   r(   Úsetup_method›  s   
ÿ
ÿþÿzTestSomersD.setup_methodc                 G   s6   | j |Ž }t|j| jjdd� t|j| jjdd� d S )Nr%  r2   )r7  r   rI   r®   rK   ©r"   rŠ   rM   r'   r'   r(   Úpythranfuncª  s   
zTestSomersD.pythranfuncc                 C   sf   g d¢g d¢g d¢g}t  |¡}|  t j¡}t j|fi |¤Ž}t|j|jdd� t|j|jdd� d S )N)rm   é   é   r/   r   )r/   r=  é   r  rt   )r   r   r*   r/   é   r%  r2   )r   r6  Úget_optional_argsr   rI   rK   )r"   rå   rí   Úoptional_argsrî   r'   r'   r(   Útest_pythranfunc_keywords¯  s   
z%TestSomersD.test_pythranfunc_keywordsc                 C   sn  g d¢}g d¢}d}t  ||¡}t|j|d dd� t|j|d dd� g d¢}g d	¢}d}t  ||¡}t|j|d dd� t|j|d dd� g d
¢}g d¢}d}t  ||¡}t|j|d dd� t|j|d dd� t d¡}t d¡}d}t  ||¡}t|j|d dd� t|j|d dd� t d¡}t g d¢¡}d}t  ||¡}t|j|d dd� t|j|d dd� t d¡}t d¡d d d… }d}t  ||¡}t|j|d dd� t|j|d dd� t d¡}t g d¢¡}d}t  ||¡}t|j|d dd� t|j|d dd� g d¢}g d¢}d}t  ||¡}t|j|d dd� t|j|d dd� t  g d¢g d¢¡}t|jtjƒ t|jtjƒ t  g d¢g d¢¡}t|jtjƒ t|jtjƒ t  g d¢g d¢¡}t|jtjƒ t|jtjƒ t  dgdg¡}t|jtjƒ t|jtjƒ t  g g ¡}t|jtjƒ t|jtjƒ t d¡}t d¡}t	t
t j||ƒ d S )N)r,   r*   r   r   r-   r+   r/   r0   )r,   r*   r-   r   r   r0   r/   r+   ©ç        rr   r   r%  r2   r   )	r   r,   r*   r   r   r-   r+   r/   r0   )	r,   r*   r   r-   r   r   r0   r/   r+   )r,   r*   r   r   r-   r+   r/   )r,   r*   r-   r   r   r/   r+   )g+$I’$IÂ¿g=/3n£+ä?r.   ©rr   r   )
r   r*   r   r   r+   r-   r,   r/   r0   r¶   )gsÒ'}Ò'í?rD  rµ   )g      ð¿r   )
r¶   r/   r0   r-   r,   r   r+   r*   r   r   )g}Ò'}Ò'í¿rD  )rt   r*   r   rt   r*   )r   r+   r/   r   r   )ç      à¿gÞ.Ê‚ƒÓ?)r*   r*   r*   )r*   r   r*   g      $@g      4@)r   r6  r   rI   rK   r   r:   r    rJ   rP   rQ   )r"   r#   r$   r®   rM   Úx1Úx2r'   r'   r(   Útest_like_kendalltauº  s„   







z TestSomersD.test_like_kendalltauc                 C   s”   g d¢}g d¢}d}d}d}t  ||¡}t|j|dd� t|j|dd� t|jjd	ƒ t  ||¡}t|j|dd� t|j|dd� t|jjd
ƒ d S )N)r   r   r   r*   r*   r*   r*   r*   r   r   r   r*   r*   r*   r*   r*   r*   r*   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   r*   gCÑE]tÑ?gâ^ñ_ñÕ?gO((ÄÇ·?r%  r2   r`   )r   r*   ©r*   r   )r   r6  r   rI   rK   r   rå   rþ   )r"   r#   r$   Úd_crÚd_rcr&   rM   r'   r'   r(   Útest_asymmetry)  s   zTestSomersD.test_asymmetryc                 C   sÆ   t  ddgddgddgddgddgg¡}|j}d}tt |¡j|ƒ t  d	d
gdd
gd
dgg¡}d\}}tt |¡j|ƒ tt |j¡j|ƒ t  d	d
gd
dgdd
gg¡}d}tt |j¡j|ƒ d S )Nr0   r*   r-   r,   r   r+   r   gHHHHHHØ?r<  r   éU   r6   )gœÜMî&wã?rr   gtÑE]tá¿)r   r    ÚTr   r   r6  rI   )r"   rå   ÚdyxÚdxyr'   r'   r(   Útest_somers_originalB  s   (z TestSomersD.test_somers_originalc                 C   s6  d}d}t  |¡}t j d¡ tjj|t  |¡| d� |¡}t 	|¡}t j
|dt  |d ¡dd�}t 	|¡}t j
|dt  |d ¡dd�}t 	|¡}	t j
|dt  |d d ¡dd�}
t 	|
¡}t|jdd	d
� t|j|jƒ t|j|	jƒ t|j|jƒ t|jdd	d
� t|j|jƒ t|j|	jƒ t|j|jƒ d S )Nro   ©r+   r-   r   ©r&   r*   r   r›   gaƒ¸yò½¿r%  r2   gP—j¹$Ä?)r   Úprodr8   r9   r   ÚmultinomialÚrvsrw   Úreshaper6  Úinsertr  r   rI   rK   )r"   ÚNrþ   r  r×   rM   Ús2rî   Ús3r  Ús4Úres4r'   r'   r(   Ú*test_contingency_table_with_zero_rows_colsX  s(   
 


 
z6TestSomersD.test_contingency_table_with_zero_rows_colsc           	      C   s¼  d}d}t  |¡}t j d¡ tjj|t  |¡| d� |¡}|d }d}t	t
|d�� t |¡ W d   ƒ n1 s;w   Y  |d }d	}t	t
|d�� t |¡ W d   ƒ n1 s\w   Y  d
}t	t
|d�� t g g¡ W d   ƒ n1 szw   Y  t	t
|d�� t dgg¡ W d   ƒ n1 s—w   Y  t  d¡}t	t
|d�� t |¡ W d   ƒ n1 s·w   Y  d|d< t	t
|d�� t |¡ W d   ƒ d S 1 s×w   Y  d S )Nro   rS  r   rT  r*   z:All elements of the contingency table must be non-negativerE   r]   z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.r   )r   r   rô   )r   rU  r8   r9   r   rV  rW  rw   rX  rP   rQ   r6  r  )	r"   rZ  rþ   r  r×   Ús5ÚmessageÚs6Ús7r'   r'   r(   Útest_invalid_contingency_tablesw  s<   
 ÿÿÿÿ
ÿ"ÿz+TestSomersD.test_invalid_contingency_tablesc                 C   sb   g d¢}ddt jg}g d¢}ddt j g}t ||¡}t ||¡}t|j|jƒ t|j|jƒ d S )NrÀ   rµ   gÍÌÌÌÌÌ @)r   r*   r   r   rF  )r   rO   r   r6  r   rI   rK   )r"   r#   rH  r$   Úy2rM   rî   r'   r'   r(   Útest_only_ranks_matterš  s   z"TestSomersD.test_only_ranks_matterc                 C   s6   t  d¡}t  d¡}t ||¡}t|jt  d¡ƒ d S )Nr.   )r   r:   r   r6  r   rå   ÚeyerL   r'   r'   r(   Útest_contingency_table_return¥  s   

z)TestSomersD.test_contingency_table_returnc                 C   s`  g d¢}g d¢}t j||dd�}|jdksJ ‚t j||dd�}t|j|jƒ t|jd|jd  ƒ t j||d	d�}t|j|jƒ t|j|jd ƒ | ¡  t j||dd�}|jdk s\J ‚t j||d	d�}t|j|jƒ t|jd|jd  ƒ t j||dd�}t|j|jƒ t|j|jd ƒ tjt	d
d�� t j||dd� W d   ƒ d S 1 s©w   Y  d S )Nr´   )r,   r-   r/   r0   r/   r¥   r™   r   r©   r   r*   r«   z`alternative` must be...rE   ú	ekki-ekki)
r   r6  rI   r   r   rK   ÚreverserG   r   rQ   )r"   rG  rH  r®   rM   r'   r'   r(   Útest_somersd_alternative¬  s,   "ÿz$TestSomersD.test_somersd_alternativeÚpositive_correlation)FTc                 C   sÀ   t  d¡}|r	|nt  |¡}|rdnd}tj||dd�}|j|ks#J ‚|jdks*J ‚tj||dd�}|j|ks9J ‚|j|r?dndksDJ ‚tj||dd�}|j|ksSJ ‚|j|rYdndks^J ‚d S )	Nr.   r   rµ   r¥   r™   r   r©   r«   )r   r:   Úflipr   r6  rI   rK   )r"   rl  rG  rH  Úexpected_statisticrM   r'   r'   r(   Ú test_somersd_perfect_correlationÕ  s   
z,TestSomersD.test_somersd_perfect_correlationc                 C   sV   ddg}d}t  d¡ t j||d�}t j||d�}d}t ||¡j}t||dd� d S )	Nr   r*   é@B i¡´_ rØ   g H�„z	Y¿r%  r2   )r8   r9   Úchoicesr   r6  rI   r   )r"   ÚclassesÚ	n_samplesr#   r$   Úval_sklearnÚ	val_scipyr'   r'   r(   Ú!test_somersd_large_inputs_gh18132î  s   
z-TestSomersD.test_somersd_large_inputs_gh18132N)rW   rX   rY   r9  r;  rB  rI  rM  rR  r_  rd  rf  rh  rk  rG   rŽ   r�   ro  rv  r'   r'   r'   r(   r.  š  s    o#)
r.  c                   @   sœ  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 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,d-„ ƒZd.d/„ Z	ej dddgddggd0fg¡d1d2„ ƒZ
ej dddgddggd3ejffddgddggd3ejffg¡d4d5„ ƒZej dd	dgdd	ggd6fdd7gd8dggd9fd:d;gd<dggd=fg¡ej d>d?d@g¡dAdB„ ƒƒZdCS )DÚTestBarnardExactz8Some tests to show that barnard_exact() works correctly.úinput_sample,expectedé+   rë   r.   é'   )gÏXyq@g{2s&QÇ7?ro   r*   rf   r,   )gøl¯€lü¿gEA]0×KÁ?r/   r0   )ç*õ)1Ö%ÀgØ_  ¬“?r   )g_½Òc1÷?gèß=ç Ä?é   rT   )g5PyQ ý¿g�Q@Ì2ý°?r§   r<  )g»ÔÌÑÁù¿g¼ÂJ"¸ò½?)g_½Òc1÷¿gwÝ�Ù„¹Æ?r   r+   )gý7ŠËé§@g      Œ?r   )gš~øtñ†ñ¿ç,À�?3Oà?r-   )gÝr?ô~Éø¿çCæ°Yð7É?c                 C   s(   t |ƒ}|j|j}}t||g|ƒ dS )zþThe 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   rI   rK   r   ©r"   Úinput_sampler®   rM   rI   rK   r'   r'   r(   Útest_precise
  s   zTestBarnardExact.test_precise)gµ’¹7ç\@gAÞÄƒø2?)gXS‘ç;ò¿gÙŽþ hî?)g>!ÉŽ¢Àg6¦  ¨”?)gS¡y@õù?gúÒ^¶ÛFÃ?)g‘ª-º©˜ÿ¿g¼X«I#°?)g°a£ÑÐ�û¿goÇÜðÁ?)gbø]?ü¿gFug¹H	Ð?)g§6Ò­è@g      €?)gi(	Ž˜ó¿r}  )gÓNXèz¶û¿r~  c                 C   s,   t |dd�}|j|j}}t||g|ƒ dS )zÿThe 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€  r'   r'   r(   Útest_pooled_param'  s   z"TestBarnardExact.test_pooled_paramc                 C   ó  d}t t|d�� tddgddggdd� W d   ƒ n1 sw   Y  d	}t t|d�� tt d
¡ dd¡ƒ W d   ƒ n1 sBw   Y  d}t t|d�� tddgddggƒ W d   ƒ n1 sdw   Y  d}t t|d�� tddgddggdƒ W d   ƒ d S 1 sˆw   Y  d S )Nú7Number of points `n` must be strictly positive, found 0rE   r   r*   r   r+   r   ©rx   ú,The input `table` must be of shape \(2, 2\).r-   ú*All values in `table` must be nonnegative.rµ   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*únot-correct)rP   rQ   r   r   r:   rX  ©r"   Ú	error_msgr'   r'   r(   Útest_raisesD  ó$   ÿÿÿÿÿ"ÿzTestBarnardExact.test_raisesrE  c                 C   ó6   t |ƒ}|j|j}}t||d ƒ t||d ƒ d S ©Nr   r   ©r   rI   rK   r   r€  r'   r'   r(   Útest_edge_cases^  s   z TestBarnardExact.test_edge_casesrr   c                 C   r�  r�  r‘  r€  r'   r'   r(   Útest_row_or_col_zeroj  ó   z%TestBarnardExact.test_row_or_col_zero)r{  gEç\/?„?éÈ   é,  )gÐgÑìíQ5ÀrD  é   r7   i¥  )gü&çìX}>ÀrD  rš   r«   r©   c           	      C   sf   |\}}|dkrt  |¡dd…ddd…f }| }t||d�}|j|j}}t||g||gdd� dS )aˆ  
        "The expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-6 :
        ```R
        library(Barnard)
        options(digits=10)
        a = barnard.test(2, 7, 8, 2, dp=1e-6, pooled=TRUE)
        a$p.value[1]
        ```
        In this test, we are using the "one-sided" return value `a$p.value[1]`
        to test our pvalue.
        r«   Nrµ   r™   çH¯¼šò×z>r2   )r   r    r   rI   rK   r   )	r"   r�  r®   rš   Úexpected_statÚless_pvalue_expectrM   rI   rK   r'   r'   r(   Útest_less_greaterw  s   
ÿz"TestBarnardExact.test_less_greaterN)rW   rX   rY   Ú__doc__rG   rŽ   r�   r‚  r„  r�  r’  r   rJ   r“  r›  r'   r'   r'   r(   rw    sr    õþ
õþ
ÿþ
þþ
ýþrw  c                   @   s¾  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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*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d0fdd	gddggd1fddgddggd-fddgddggd2fg¡d3d4„ ƒZ
d5d6„ 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¡d7d8„ ƒZd9d:„ Zej d;d<¡d=d>„ ƒZd?S )@ÚTestBoschlooExactz9Some tests to show that boschloo_exact() works correctly.r˜  rx  r*   r/   r0   )ç<vB\÷’?gèÁ–„/?„?r,   r   r.   )g¬“ŽÍéMï?gßÏA>î?r§   rT   r<  )ç_¬VÃÑ¶?gÂñ¥…Ö­?)ç‘uÝ Ø%Å?gc'�íµ?r   r+   ©r   r   r   )r_   g      Ö?rt   )çß+Âf°?gXc}Áv¡?é   é%   )gZÑ‹D¸É?g‰¦¢gi]Ã?c                 C   ó2   t |dd�}|j|j}}t||g|| jd� 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™   r2   N©r   rI   rK   r   ÚATOLr€  r'   r'   r(   Ú	test_lessŸ  s   zTestBoschlooExact.test_lessry  rë   rz  )çòk¾\Ø2?g–ìà0í,%?)gKïvî÷ï?gâN3î½ï?)r   g‡'&5Õ·?r|  )gÏw@_„ï?g™•7Ñøï?)gµ‹i¦{ï?g€ÁÉ‘)zî?)ç˜ïÖ…a˜?g³1×ëÛ|?r-   )gYðì<;ªï?g¨ýÖN”Dï?)gê­e×ì?g™Gþ` ë?c                 C   r¥  )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™   r2   Nr¦  r€  r'   r'   r(   Útest_greater¼  s   zTestBoschlooExact.test_greater)r©  gôqQSé,5?)rž  gG’Þ?/?”?)r   gKE`ÕÇ?)rŸ  gÓhr1Ö½?)rª  grÒfbÛŒ?)r_   g      æ?)r¢  gP:pRÁv±?c                 C   s4   t |ddd�}|j|j}}t||g|| jd� 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š   rx   r2   Nr¦  r€  r'   r'   r(   Útest_two_sidedÛ  s   z TestBoschlooExact.test_two_sidedc                 C   r…  )Nr†  rE   r   r*   r   r+   r   r‡  rˆ  r-   r‰  rµ   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*rŠ  )rP   rQ   r   r   r:   rX  r‹  r'   r'   r(   r�  ø  rŽ  zTestBoschlooExact.test_raisesc                 C   r�  r�  )r   rI   rK   r   r€  r'   r'   r(   r“    r”  z&TestBoschlooExact.test_row_or_col_zeroc                 C   s`   ddgddgg}t |dd�j}t |dd�j}dt||ƒ dks!J ‚t |dd�j}|d	ks.J ‚d S )
Nr   r‚   rt   r©   r™   r«   r*   r¥   rr   )r   rK   r"  )r"   ÚtblÚplÚpgÚptr'   r'   r(   Útest_two_sided_gt_1  s   z%TestBoschlooExact.test_two_sided_gt_1rš   )r©   r«   c                 C   s>   ddgddgg}t ||d�j}tj||d�d }t||ƒ d S )Nr*   r/   r0   r™   r   )r   rI   r   Úfisher_exactr   )r"   rš   r®  Úboschloo_statÚfisher_pr'   r'   r(   Útest_against_fisher_exact)  s   z+TestBoschlooExact.test_against_fisher_exactN)rW   rX   rY   rœ  r§  rG   rŽ   r�   r¨  r«  r­  r�  r   rJ   r“  r²  r¶  r'   r'   r'   r(   r�  š  sr    ÷þ
õþ
øþ
þþ

r�  c                   @   s–   e Zd Zej dg e d¡fe d¡dgfg¡dd„ ƒZdd„ Z	dd	„ Z
d
d„ Zej dg d¢¡dd„ ƒZejjdd„ ƒZdd„ Zdd„ Zdd„ ZdS )ÚTestCvm_2samprŠ   r,   r   c                 C   sX   t jttd�� t|Ž }t|jtjƒ t|j	tjƒ W d   ƒ d S 1 s%w   Y  d S )NrE   )
rG   rH   r   r   r   r   rI   r   rJ   rK   r:  r'   r'   r(   Útest_too_small_input4  s
   "ýz"TestCvm_2samp.test_too_small_inputc                 C   sN   t  d¡}d}tjt|d�� t||dƒ W d   ƒ d S 1 s w   Y  d S )Nr,   z/method must be either auto, exact or asymptoticrE   Úxyz)r   r:   rG   r   rQ   r   )r"   r$   Úmsgr'   r'   r(   r|   <  s
   
"ÿz TestCvm_2samp.test_invalid_inputc                 C   sN   g d¢}g d¢}t ||ƒ}t t |¡t |¡ƒ}t|j|jf|j|jfƒ d S )N)r*   r   r+   r/   r-   )r¾   r‡   rt   r>  )r   r   r    r   rI   rK   ©r"   r#   r$   r‹   rŒ   r'   r'   r(   Útest_list_inputB  s
   
zTestCvm_2samp.test_list_inputc                 C   s>   g d¢}g d¢}t ||ƒ}t|jddd� t|jddd� d S )N)	gffffff@gÍÌÌÌÌÌ @r   gffffff!@çš™™™™™"@gÍÌÌÌÌÌ#@g333333$@g333333%@gffffff&@)gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@gš™™™™™@ç      @ç333333@gffffff @g333333"@gš™™™™™#@gš™™™™™%@gš™™™™™&@g      '@gš™™™™™(@g      )@gÍÌÌÌÌÌ*@g333333-@gøSã¥›ÄÐ?r1   r2   g
×£p=
Ç?r]   )r   r   rI   rK   ©r"   r#   r$   Úrr'   r'   r(   Útest_example_conoverI  s
   
z"TestCvm_2samp.test_example_conoverzstatistic, m, n, pval))iÆ  r,   r-   g¾cj`ï˜º?)ii  r/   r/   gtÑE]t±?)i@  r+   r-   g8�8�ƒ?)iä  r-   r/   g¶ëéXwS?c                 C   s   t t|||ƒ|ƒ d S r¯   )r   r   )r"   rI   ræ   rx   Úpvalr'   r'   r(   Útest_exact_pvalueS  s   	zTestCvm_2samp.test_exact_pvaluec                 C   s†   t j d¡ tjjdd�}tjjdd�}t||ƒ}td|j  k o$dk n  ƒ t||d ƒ}td|j  k o=dk ƒ d S   ƒ d S )Ni  rp  r  i » r   r   r}   )	r   r8   r9   r   rv   rW  r   r   rK   rÀ  r'   r'   r(   Útest_large_sample^  s   
(zTestCvm_2samp.test_large_samplec                 C   sd   t j d¡ t j d¡}t j d¡}t||dd�}t||dd�}t|j|jƒ t|j|jdd� d S )	Nr   r/   r0   r¡   r�   r    r]   r2   )	r   r8   r9   r¢   r   r   rI   r   rK   r»  r'   r'   r(   Útest_exact_vs_asymptoticj  s   z&TestCvm_2samp.test_exact_vs_asymptoticc                 C   st   t  d¡}g d¢}t||dd�}t||dd�}t|j|jƒ t  d¡}t||dd�}t||dd�}t|j|jƒ d S )NrT   )r_   gÍÌÌÌÌÌ@g333333*@r¡   r�   r£   r—  r    )r   r:   r   r   rK   r»  r'   r'   r(   Útest_method_autos  s   

zTestCvm_2samp.test_method_autoc                 C   sV   t  d¡}t||ƒ}t|j|jfdƒ t|d d… |d d… ƒ}t|j|jfdƒ d S )Nr|  rC  r+   )r   r:   r   r   rI   rK   r{   r'   r'   r(   Útest_same_input  s
   

zTestCvm_2samp.test_same_inputN)rW   rX   rY   rG   rŽ   r�   r   r:   r¸  r|   r¼  rÂ  rÄ  ÚxslowrÅ  rÆ  rÇ  rÈ  r'   r'   r'   r(   r·  3  s"    ÿ

ÿ

	r·  c                   @   s.  e Zd Zg d¢g d¢g d¢fZg d¢g d¢g d¢fZg d¢g d¢g d¢fZdZdZd	Ze	j
jd
eedfeedfeedffg d¢d�dd„ ƒZdZdZe	j
jd
eedfeedffddgd�dd„ ƒZdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Ze	j
 d%d&¡d'd(„ ƒZe	j
 d)g d*¢¡d+d,„ ƒZd-d.„ Zd/S )0ÚTestTukeyHSD)r  ç     €7@çffffff:@çš™™™™;@çfffffæ=@)çffffff<@çš™™™™A@ç     €=@çš™™™™@@çš™™™™>@)gš™™™™:@gÍÌÌÌÌL<@gÍÌÌÌÌL8@g333333:@gÍÌÌÌÌÌ;@)r  rË  gHáz®G:@rÌ  rÍ  rÎ  rÓ  rÓ  )r  rË  rÌ  )
rÏ  rÐ  rÑ  rÒ  rÓ  rÏ  rÐ  rÑ  rÒ  rÓ  aK  
    Comparison LowerCL Difference UpperCL Significance
    2 - 3	0.6908830568	4.34	7.989116943	    1
    2 - 1	0.9508830568	4.6 	8.249116943 	1
    3 - 2	-7.989116943	-4.34	-0.6908830568	1
    3 - 1	-3.389116943	0.26	3.909116943	    0
    1 - 2	-8.249116943	-4.6	-0.9508830568	1
    1 - 3	-3.909116943	-0.26	3.389116943	    0
    aS  
    Comparison LowerCL Difference UpperCL Significance
    2 - 1	0.2679292645	3.645	7.022070736	    1
    2 - 3	0.5934764007	4.34	8.086523599	    1
    1 - 2	-7.022070736	-3.645	-0.2679292645	1
    1 - 3	-2.682070736	0.695	4.072070736	    0
    3 - 2	-8.086523599	-4.34	-0.5934764007	1
    3 - 1	-4.072070736	-0.695	2.682070736	    0
    aS  
    Comparison LowerCL Difference UpperCL Significance
    2 - 3	1.561605075	    4.34	7.118394925	    1
    2 - 1	2.740784879	    6.08	9.419215121	    1
    3 - 2	-7.118394925	-4.34	-1.561605075	1
    3 - 1	-1.964526566	1.74	5.444526566	    0
    1 - 2	-9.419215121	-6.08	-2.740784879	1
    1 - 3	-5.444526566	-1.74	1.964526566	    0
    zdata,res_expect_str,atolr`   g»½×Ùß|Û=)úequal size samplezunequal sample sizezextreme sample size differences)Úidsc                 C   sÒ   t j| dd¡ ¡ dd… td� d¡}tj|Ž }| ¡ }|D ]G\}}}	}
}}t	|ƒd t	|ƒd }}t
|j||f |	|d� t
|j||f |
|d� t
|j||f ||d� t
|j||f d	k|dkƒ qdS )
a£  
        SAS code used to generate results for each sample:
        DATA ACHE;
        INPUT BRAND RELIEF;
        CARDS;
        1 24.5
        ...
        3 27.8
        ;
        ods graphics on;   ODS RTF;ODS LISTING CLOSE;
           PROC ANOVA DATA=ACHE;
           CLASS BRAND;
           MODEL RELIEF=BRAND;
           MEANS BRAND/TUKEY CLDIFF;
           TITLE 'COMPARE RELIEF ACROSS MEDICINES  - ANOVA EXAMPLE';
           ods output  CLDiffs =tc;
        proc print data=tc;
            format LowerCL 17.16 UpperCL 17.16 Difference 17.16;
            title "Output with many digits";
        RUN;
        QUIT;
        ODS RTF close;
        ODS LISTING;
        ú - ú r,   N©Údtype)r-   r-   r   r2   r^   ©r   ÚasarrayÚreplaceÚsplitÚfloatrX  r   Ú	tukey_hsdÚconfidence_intervalÚintr   ÚlowrI   ÚhighrK   )r"   ÚdataÚres_expect_strr3   Ú
res_expectÚ	res_tukeyÚconfrü   ÚjÚlr×   ÚhÚsigr'   r'   r(   Útest_compare_sas¶  s   !ÿÿ
ûzTestTukeyHSD.test_compare_saszÐ
        1	2	-8.2491590248597	-4.6	-0.9508409751403	0.0144483269098
        1	3	-3.9091590248597	-0.26	3.3891590248597	0.9803107240900
        2	3	0.6908409751403	4.34	7.9891590248597	0.0203311368795
        zÛ
        1	2	-7.02207069748501	-3.645	-0.26792930251500 0.03371498443080
        1	3	-2.68207069748500	0.695	4.07207069748500 0.85572267328807
        2	3	0.59347644287720	4.34	8.08652355712281 0.02259047020620
        r  r˜  rÔ  zunequal size samplec                 C   s¾   t j| ¡ td� d¡}tj|Ž }| ¡ }|D ]E\}}}	}
}}t|ƒd t|ƒd }}t	|j
||f |	|d� t	|j||f |
|d� t	|j||f ||d� t	|j||f ||d� qdS )an  
        vals = [24.5, 23.5,  26.4, 27.1, 29.9, 28.4, 34.2, 29.5, 32.2, 30.1,
         26.1, 28.3, 24.3, 26.2, 27.8]
        names = {'zero', 'zero', 'zero', 'zero', 'zero', 'one', 'one', 'one',
         'one', 'one', 'two', 'two', 'two', 'two', 'two'}
        [p,t,stats] = anova1(vals,names,"off");
        [c,m,h,nms] = multcompare(stats, "CType","hsd");
        rØ  ©r   r-   r   r2   N)r   rÛ  rÝ  rÞ  rX  r   rß  rà  rá  r   râ  rI   rã  rK   )r"   rä  rå  r3   ræ  rç  rè  rü   ré  rê  r×   rë  r&   r'   r'   r(   Útest_compare_matlabï  s   
ÿÿ
ûz TestTukeyHSD.test_compare_matlabc                 C   sè   d}t j| dd¡ ¡ dd… td� d¡}g d¢g d	¢g d
¢f}tj|Ž }| ¡ }|D ]E\}}}}	}
}t	|ƒd t	|ƒd }}t
|j||f |	dd� t
|j||f |dd� t
|j||f |
dd� t
|j||f |dd� q,dS )a+  
        Testing against results and p-values from R:
        from: https://www.rdocumentation.org/packages/stats/versions/3.6.2/
        topics/TukeyHSD
        > require(graphics)
        > summary(fm1 <- aov(breaks ~ tension, data = warpbreaks))
        > TukeyHSD(fm1, "tension", ordered = TRUE)
        > plot(TukeyHSD(fm1, "tension"))
        Tukey multiple comparisons of means
        95% family-wise confidence level
        factor levels have been ordered
        Fit: aov(formula = breaks ~ tension, data = warpbreaks)
        $tension
        zÞ
                diff        lwr      upr     p adj
        2 - 3  4.722222 -4.8376022 14.28205 0.4630831
        1 - 3 14.722222  5.1623978 24.28205 0.0014315
        1 - 2 10.000000  0.4401756 19.55982 0.0384598
        rÖ  r×  r,   NrØ  rî  )é   r6   é6   r<  éF   é4   é3   rð  éC   rm   r=  é   é   rö  é   é)   rT   é,   )r>  r—  rö  r?  rt   r>  r  r6   é$   é*   rð  r÷  r§   rz  r7   r—  rz  rö  )rû  r—  r£  r>  r.   ry  r7   r|  rð  rT   r—  r£  r?  r‚   r|  r|  r§   r7   r   r˜  r2   r   gñhãˆµøä>rÚ  )r"   Ústr_resræ  rä  rç  rè  rü   ré  r×   rê  rë  r&   r'   r'   r(   Útest_compare_r	  s&   ÿÿü
úzTestTukeyHSD.test_compare_rc                 C   sÎ   g d¢}g d¢}g d¢}g d¢}t  ||||¡}| ¡ }t g d¢g d¢g d¢g d¢g¡}t g d	¢g d
¢g d¢g d¢g¡}dD ]$\}	}
t|j|	|
f ||	|
f dd� t|j|	|
f ||	|
f dd� q@dS )zp
        Example sourced from:
        https://www.itl.nist.gov/div898/handbook/prc/section4/prc471.htm
        )çš™™™™™@gš™™™™™@ç333333@gffffff@g      @)gš™™™™™ @r¿  g333333@gffffff"@r¾  )g       @g      %@g333333 @rÿ  r½  )r   gffffff@gffffff@gffffff@gÍÌÌÌÌÌ@)r   r   r   g      À)g�Âõ(\�Ò?r   gq=
×£pÀg¤p=
×£À?)g®Gázò?r   r   g
×£p=
ï?)r   r   r   r   )r   r   r   gáz®Gáþ?)gáz®Gá@r   g      ô?g=
×£p=@)g=
×£p=@r   r   gš™™™™™@)©r   r   )r*   r   )r   r   rö   rJ  r]   r2   N)r   rß  rà  r   rÛ  r   râ  rã  )r"   Úgroup1Úgroup2Úgroup3Úgroup4rM   rè  ÚlowerÚupperrü   ré  r'   r'   r(   Útest_engineering_stat_handbook2  s,   üü "þz+TestTukeyHSD.test_engineering_stat_handbookc                 C   s¸   t j d¡ t j dd¡}tj|Ž }| ¡ }t|j|j	j
 ƒ tt  |j	¡|j	d ƒ tt  |j¡|jd ƒ t|j|jj
 ƒ tt  |j¡dƒ t|j|jj
ƒ tt  |j¡dƒ d S )Nr5   r   ro   ©r   r   r   r   )r   r8   r9   r¢   r   rß  rà  r   râ  rã  rO  ÚdiagonalrI   rK   )r"   rä  rM   rè  r'   r'   r(   Útest_rand_symmL  s   
zTestTukeyHSD.test_rand_symmc                 C   sN   t tdd�� t g d¢dtjgg d¢¡ W d   ƒ d S 1 s w   Y  d S )Nz...must be finite.rE   rÀ   r*   )r-   r/   r   )rP   rQ   r   rß  r   rO   rb   r'   r'   r(   Útest_no_inf_  s   "ÿzTestTukeyHSD.test_no_infc                 C   sT   t tdd�� t ddgddggddgg d¢¡ W d   ƒ d S 1 s#w   Y  d S )Nz...must be one-dimensionalrE   r   r*   r   r,   )r,   r²   r-   ©rP   rQ   r   rß  rb   r'   r'   r(   Ú
test_is_1dc  s   $"ÿzTestTukeyHSD.test_is_1dc                 C   sH   t tdd�� t g ddgg d¢¡ W d   ƒ d S 1 sw   Y  d S )Nz...must be greater than onerE   r*   r,   )r+   r,   r-   r  rb   r'   r'   r(   Útest_no_emptyg  s   "ÿzTestTukeyHSD.test_no_emptyÚnargsrô   c                 C   sF   t tdd�� tjg d¢g| Ž  W d   ƒ d S 1 sw   Y  d S )Nz...more than 1 treatment.rE   ©r²   r/   r   r  )r"   r  r'   r'   r(   Útest_not_enough_treatmentsk  s   "ÿz'TestTukeyHSD.test_not_enough_treatmentsÚcl)rF  r   r   r*   c                 C   sV   t tdd�� t g d¢ddgddg¡}| |¡ W d   ƒ d S 1 s$w   Y  d S )Nzmust be between 0 and 1rE   r  r   r+   r¶   )rP   rQ   r   rß  rà  )r"   r  rÁ  r'   r'   r(   Útest_conf_level_invalidp  s   "þz$TestTukeyHSD.test_conf_level_invalidc                 C   sP   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   rK   )r"   rç  Ú	res_ttestr'   r'   r(   Útest_2_args_ttestv  s   zTestTukeyHSD.test_2_args_ttestN)rW   rX   rY   Údata_same_sizer  Úextreme_sizeÚsas_same_sizeÚsas_diff_sizeÚsas_extremerG   rŽ   r�   rí  Úmatlab_sm_sizÚmatlab_diff_szrï  rþ  r  r  r  r  r  r  r  r  r'   r'   r'   r(   rÊ  ‹  s\    þþý


þû
%ÿÿý
)

rÊ  c                   @   sŒ   e Zd Zej dg d¢g d¢f¡dd„ ƒZej dg d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢f¡dd„ ƒZdd„ Zdd„ Z	dd„ Z
dS )ÚTestPoissonMeansTestzc1, n1, c2, n2, p_expect)r   ro   r   ro   gþe÷äa¡¶?)r*   ro   r-   ro   gÞ	ŠcÆ?c                 C   s$   t  ||||¡}t|j|dd� d S )Nr`   r2   ©r   Úpoisson_means_testr   rK   )r"   Úc1Ún1Úc2Ún2Úp_expectrM   r'   r'   r(   Útest_paper_examples  s   z(TestPoissonMeansTest.test_paper_examplesz c1, n1, c2, n2, p_expect, alt, d)rT   r.   rT   r.   gŽŸ{}ÿÿï?r¥   r   )r.   r.   r.   r.   goPFªÿÿï?r¥   r   )é2   r|  r   r   góæ°ae¹?r¥   r^   )r   ro   rT   r–  gò/V›-=¿?r¥   r   )r   rt   r+   rT   g"Ü)‘ÅÝÙ?r«   r   )r+   rT   r   ro   g_ù'Qm~€?r«   r   )r+   rT   r   r.   g|¨Š»Ó?r©   r   )r   r   r)  r|  gï0�ëÝ·?r©   r   c           	      C   s,   t j||||||d�}t|j|ddd� d S )N)rš   Údiffg�íµ ÷ÆÀ>g¼‰Ø—²Òœ<©r3   r  r!  )	r"   r#  r$  r%  r&  r'  ÚaltÚdrM   r'   r'   r(   Útest_fortran_authorsˆ  s   z)TestPoissonMeansTest.test_fortran_authorsc                 C   s0   d\}}d\}}t  ||||¡}t|jdƒ d S )N)rp   rp   r   r!  ©r"   Úcount1Úcount2Únobs1Únobs2rM   r'   r'   r(   Útest_different_results�  s   z+TestPoissonMeansTest.test_different_resultsc                 C   s0   d\}}d\}}t  ||||¡}t|jdƒ d S )Nr	  r¡  r   r!  r/  r'   r'   r(   Útest_less_than_zero_lambda_hat2¦  s   z4TestPoissonMeansTest.test_less_than_zero_lambda_hat2c                 C   s  d\}}d\}}d}t t|d�� t d|||¡ W d   ƒ n1 s#w   Y  t t|d�� t ||d|¡ W d   ƒ n1 sAw   Y  d}t t|d�� t d|||¡ W d   ƒ n1 saw   Y  t t|d�� t ||d|¡ W d   ƒ n1 sw   Y  d}t t|d�� t |d||¡ W d   ƒ n1 sŸw   Y  t t|d�� t |||d¡ W d   ƒ n1 s½w   Y  d	}t t|d�� tj||||dd
� W d   ƒ n1 sßw   Y  d}t t|d�� tjdddddd� W d   ƒ d S 1 �sw   Y  d S )Nr	  r¡  z`k1` and `k2` must be integers.rE   r‡   z1`k1` and `k2` must be greater than or equal to 0.rµ   z%`n1` and `n2` must be greater than 0.z(diff must be greater than or equal to 0.)r*  zAlternative must be one of ...r   r*   Úerrorr™   )rP   Ú	TypeErrorr   r"  rQ   )r"   r0  r1  r2  r3  ra  r'   r'   r(   rŸ   ®  s>   ÿÿÿÿÿÿÿ$ÿz*TestPoissonMeansTest.test_input_validationN)rW   rX   rY   rG   rŽ   r�   r(  r.  r4  r5  rŸ   r'   r'   r'   r(   r   ~  s(    ý
ñ
	r   c                   @   s`   e Zd Zdd„ Zdd„ Zej dg d¢¡dd„ ƒZej dg d	¢¡d
d„ ƒZ	dd„ Z
dd„ ZdS )ÚTestBWSTestc                 C   sl  t j d¡}|jdd�\}}d}tjt|d�� t ||g||g¡ W d   ƒ n1 s,w   Y  d}tjt|d�� t t jg|¡ W d   ƒ n1 sMw   Y  d}tjt|d�� t |g ¡ W d   ƒ n1 slw   Y  d}tjt|d�� tj||d	d
� W d   ƒ n1 s�w   Y  d}tjt|d�� tj||dd� W d   ƒ d S 1 s¯w   Y  d S )Nì   <oôvêT‘{ ©r*   r/   r  z,`x` and `y` must be exactly one-dimensional.rE   z"`x` and `y` must not contain NaNs.z$`x` and `y` must be of nonzero size.zalternative` must be one of...ri  r™   z!method` must be an instance of...rü  r�   )	r   r8   r  rG   r   rQ   r   Úbws_testrJ   )r"   r#  r#   r$   ra  r'   r'   r(   Útest_bws_input_validationÔ  s,   ÿÿÿÿ"ÿz%TestBWSTest.test_bws_input_validationc                 C   s@   g d¢}g d¢}t j||dd�}t|jddd� t|jdƒ d S )	N)r   r*   r   r+   r-   r/   r0   )r,   r¶   r.   r�   rt   r‚   r=  r¥   r™   gºI+‡@r1   r2   g¤f$/•Þg?)r   r;  r   rI   r   rK   rL   r'   r'   r(   Ú test_against_published_referenceî  s
   z,TestBWSTest.test_against_published_reference)rš   rI   rK   ))r¥   g
»ù-ü?g4ˆñ³B/À?)r©   ç
»ù-ü¿g«î0&Àv­?)r«   r>  gÉñœý“(î?c                 C   sR   t j d¡}|jdd�\}}tj|||d�}t|j|dd� t|j|ddd	� d S )
Nr9  r:  r  r™   ç‚vIhÂ%<=r  r]   r}   r+  ©r   r8   r  r   r;  r   rI   rK   ©r"   rš   rI   rK   r#  r#   r$   rM   r'   r'   r(   Útest_against_Rø  s
   zTestBWSTest.test_against_R))r¥   góD 5Hò?g«ÒdüÔ•Ò?)r©   ç`�Ñ‡©áï?gÈ²µ×šXë?)r«   rC  gß4)¡”�Â?c                 C   sZ   t j d¡}|jdd�}|jdd�}tj|||d�}t|j|dd� t|j|dd	d
� d S )Nl   ‚.ÅÇs½Z r¶   r  r0   r™   r?  r  r]   r}   r+  r@  rA  r'   r'   r(   Útest_against_R_imbalanced	  s   z%TestBWSTest.test_against_R_imbalancedc                 C   sÒ   t j d¡}|jdd�\}}t j d¡}tjd|d�}tj|||d�}t|jƒdks,J ‚t j d¡}tjd|d�}tj|||d�}t|j|jƒ t j d¡}tjd|d�}tj|||d�}t  	|j|j¡rgJ ‚d S )Nì   /°HøNÏ( )r*   r.   r  r.   )Ún_resamplesr#  r�   l   ÝVC£	ãA )
r   r8   r  r   r&  r;  rà   Únull_distributionr   Úallclose)r"   r#  r#   r$   rž   rí   rî   r  r'   r'   r(   Útest_method  s   zTestBWSTest.test_methodc                 C   sà   t j d¡}|jdd�}|d }tj||dd�}|jdksJ ‚t|jdt|j	ƒ ƒ tj||dd�}|jdks9J ‚t|jdƒ tj||dd�}|jdk sNJ ‚t|jdt|j	ƒ ƒ tj||dd�}|jdk shJ ‚t|jdƒ d S )	NrE  r,   r  r   r«   r™   r   r©   )
r   r8   r  r   r;  rI   r   rK   rà   rG  )r"   r#  r#   r$   rM   r'   r'   r(   Útest_directions2  s   zTestBWSTest.test_directionsN)rW   rX   rY   r<  r=  rG   rŽ   r�   rB  rD  rI  rJ  r'   r'   r'   r(   r8  Ò  s    
ÿ
ÿ
r8  ).Ú	itertoolsr   Únumpyr   r8   r4  rG   Únumpy.testingr   r   r   r   r   rP   Úscipy.statsr   r   Úscipy.stats._hypotestsr	   r
   r   r   r   r   r   Úscipy.stats._mannwhitneyur   r   r   Úcommon_testsr   Úscipy._lib._testutilsr   Úscipy.stats._axis_nan_policyr   r   r   rZ   r�   r.  rw  r�  r·  rÊ  r   r8  r'   r'   r'   r(   Ú<module>   s@    $7]   r  o  X tT