a
    ˆù»jA ã                   @   sf  d dl mZ d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZmZ dd	lmZ d d
lmZ G dd„ dƒZ G dd„ dƒZ!G dd„ dƒZ"G dd„ de"ƒZ#ej$j%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é   )Úcheck_named_results)Ú_TestPythranFuncc                   @   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$   úFE:\soccer\ml_env\Lib\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)   r-   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op|kn  ƒ t||  koŒ|kn  ƒ d S )NéÒ  é   é   )r   ÚrandomÚseedÚaranger	   ÚlistÚtupler   )	r   r    r!   Zw1Úp1Zw2Zp2Zw3Zp3r$   r$   r%   Útest_epps_singleton_array_like.   s    z0TestEppsSingleton.test_epps_singleton_array_likec                 C   s"   dt  d¡ }}ttt||ƒ d S )N©r   r'   r   r(   r+   )r   r7   Úassert_raisesÚ
ValueErrorr	   ©r   r    r!   r$   r$   r%   Útest_epps_singleton_size9   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   Úinfr7   r=   r>   r	   r?   r$   r$   r%   Útest_epps_singleton_nonfinite>   s    z/TestEppsSingleton.test_epps_singleton_nonfinitec                 C   s2   t  d¡t  d¡ }}t||ƒ}d}t||ƒ d S )Né   r3   )Ú	statisticÚpvalue)r   r7   r	   r   )r   r    r!   ÚresÚ
attributesr$   r$   r%   Ú
test_namesC   s    
zTestEppsSingleton.test_namesN)	Ú__name__Ú
__module__Ú__qualname__r&   r1   r;   r@   rB   rH   r$   r$   r$   r%   r      s   
r   c                   @   sd   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dS )ÚTestCvmc                 C   s    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?r/   ©r   r   ©r   r$   r$   r%   Ú
test_cdf_4N   s
    ýzTestCvm.test_cdf_4c                 C   s    t tg d¢dƒg d¢dd� d S )N)g…8„*5›?g@¤ß¾œ£?g÷Hmâä¾?g%¯Î1 â?r+   )rN   rO   rP   g333333ï?rQ   r/   rR   rS   r$   r$   r%   Útest_cdf_10T   s
    ýzTestCvm.test_cdf_10c                 C   s    t tg d¢dƒg d¢dd� d S )N)g€}têÊg™?g˜`�º¢?gäIÒ5“o¾?gÜ×�sF”ò?éè  rM   rQ   r/   rR   rS   r$   r$   r%   Útest_cdf_1000Z   s
    ýzTestCvm.test_cdf_1000c                 C   s   t tg d¢ƒg d¢dd� d S )N)çaÃÓ+e™?ç+û®þ·¢?çÉ&pën¾?ç+MJA·—ò?rM   rQ   r/   rR   rS   r$   r$   r%   Útest_cdf_inf`   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   rS   r$   r$   r%   Útest_cdf_supportf   s    zTestCvm.test_cdf_supportc                 C   s$   t tg d¢dƒtg d¢ƒdd� d S )N)rX   rY   rZ   r[   éd   é'  rQ   r/   rR   rS   r$   r$   r%   Útest_cdf_large_nk   s
    
ýzTestCvm.test_cdf_large_nc                 C   sF   t dtddƒ  k odk n  ƒ t dtdƒ  k o:dk n  ƒ d S )NgwJëÿï?gÍÌÌÌÌÔt@rV   ç      ð?)r   r   rS   r$   r$   r%   Útest_large_xr   s    "zTestCvm.test_large_xc                 C   s<   d}t t |¡d dƒ}tt|j|ƒdkƒ t|jdƒ d S )Né   çš™™™™™é?Únormrb   r   )r
   r   Úonesr   r   rD   r   rE   )r   ÚnrF   r$   r$   r%   Ú
test_low_p{   s    zTestCvm.test_low_pc                 C   s"   t ttdgdƒ t ttddƒ d S )Nç      ø?rf   r$   )r=   r>   r
   rS   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ã?rf   góZ	Ý%qÒ?ç�íµ ÷Æ°>r/   g®EÐ¶šÂ?)r   rj   g!O!W*î?gz"ÇW´™`?)	r   r'   r)   çffffffö?gìQ¸…ëÁ?é   é   çÍÌÌÌÌÌì?ç      @ÚexpongÐeÅË.óê?gnz\Ã(r?)r
   r   rD   rE   )r   rF   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)   )ro   çffffffæ?rt   Úbeta)
r   r7   r
   r   rt   Úcdfr   rD   rE   rw   )r   r    ÚargsÚr1Úr2r$   r$   r%   Útest_callable_cdf™   s    
zTestCvm.test_callable_cdfN)rI   rJ   rK   rT   rU   rW   r\   r^   ra   rc   ri   rk   ru   r|   r$   r$   r$   r%   rL   J   s   	rL   c                   @   s^  e Zd Z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 d,¢d-œZg d.¢g d/¢g d0¢g d1¢g d2¢d3œZg d4¢g d5¢g d6¢g d7¢g d8¢g d9¢d:œZd;d<„ Zd=d>„ Zd?d@„ Zd	d
dœdAgdd
dœdBgdd
dœdCgd	ddœdAgdddœdBgdddœdAggZe	j
 dDe¡dEdF„ ƒZdGdH„ Ze	j
 dId
dg¡dJdK„ ƒZdLdM„ Zg d-¢dNdOdPdQejdNdRdSdTdTdUgdVdWfg d-¢dNdOdPdQejejdRdSdTdTdUgdXdYfdSdRejdTgdNdOdPdQejdNdRdSdTdTdUgdZd[fdSdRejdTgdNdOdPdQejejdRdSdTdTdUgd\d]fdSejejdTgdNdOdPdQejejdRdSdTdTdUgd^d_fgZe	j
 d`e¡dadb„ ƒZg dc¢g dd¢g de¢g df¢g dg¢g dh¢g di¢g dj¢g dk¢g	Z e	j
 dle ¡dmdn„ ƒZ!dodp„ Z"dqdr„ Z#g d(¢dsdtgddugg d(¢dsdtgddugg d(¢dsdtgd	dvgg d(¢dRgddwgg d(¢dRgddwgg d(¢dRgd	dxgdSdRgdSdRgddygdSdRgdSdRgddygdSdRgdSdRgd	dzgg	Z$e	j
 g d{¢e$¡d|d}„ ƒZ%d~d„ Z&e	j
 d€g d�¢¡d‚dƒ„ ƒZ'd„d…„ Z(d†S )‡ÚTestMannWhitneyUc                 C   s
   dt _d S )NT©r   Ú
_recursiverS   r$   r$   r%   Úsetup_method¥   s    zTestMannWhitneyU.setup_methodc                 C   sx  t  ddg¡}t  ddg¡}ttdd�� tg |ƒ W d   ƒ n1 sH0    Y  ttdd�� t|g ƒ W d   ƒ n1 s~0    Y  ttdd�� t||dd	� W d   ƒ n1 s¸0    Y  ttd
d�� t||dd� W d   ƒ n1 sò0    Y  ttdd�� t||dd� W d   ƒ n1 �s.0    Y  ttdd�� t||dd� W d   ƒ n1 �sj0    Y  d S )Nr   r'   r   r(   ú`x` and `y` must be of nonzero©Úmatchz`use_continuity` must be oneZekki)Úuse_continuityz`alternative` must be one of©Úalternativez`axis` must be an integerrj   ©Úaxisz`method` must be one of©Úmethod)r   r   r=   r>   r   r?   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sfJ ‚|j|jksvJ ‚t j |d ¡}t j |d ¡}t||ƒ}t||dd�}t||dd�}|j|jksÌJ ‚|j|jksÜJ ‚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   r-   Ú
asymptoticr‰   Úexactr   )r   r5   r6   Úrandr   rE   )r   rh   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š   rF   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_continuity%  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 )Nr<   ©r   r'   r   r(   r)   )r   r   r   r   r   rN   )r   r   r   r   r   éÿÿÿÿrŒ   )rˆ   rŠ   )r+   é	   ç      !@r-   rs   r,   r*   )r   g]�UÄÚì?g…æ[»é?giœ…\­æ?g°ZX<_Õã?gãžxº.á?gåß ê…
Ù?)r   r   r   r   rD   r   rE   )	r   r    Zy0ZdyZdy2r!   rF   Z
U_expectedZ
p_expectedr$   r$   r%   Útest_tie_correct3  s    *z!TestMannWhitneyU.test_tie_correct)g      Ð?rP   g      è?)rl   çš™™™™™É?çš™™™™™Ù?rm   )rO   rl   r¥   r   rP   gÍÌÌÌÌÌä?©r   r'   r   )r¥   r¦   rm   )gôýÔxé&±?g /Ý$Á?gJ+‡Ñ?r¦   rm   )çyé&1¬œ?çÉv¾Ÿ/­?gÉv¾Ÿ/½?r¥   gj¼t“Ô?çÛù~j¼tÛ?çƒÀÊ¡Eâ?)	gyé&1¬Œ?gV-²�?r©   rl   gÙÎ÷SãÅ?g´Èv¾ŸÏ?gÁÊ¡E¶óÕ?g'1¬ZÜ?gmçû©ñÒá?r<   )gÇK7‰A`Å?gZd;ßOÕ?rP   gòÒMbXå?)çªñÒMb¨?çR¸…ëQ¸?çR¸…ëQÈ?ççû©ñÒMÒ?rª   r«   )	g;ßO�—n’?ç;ßO�—n¢?ç“V-²?g      À?gJ+‡É?r¯   gôýÔxé&Ù?rP   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çû©ñÚ?rP   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?rN   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¸á?)r.   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ð   | j | j| j| jdœ}| ¡ D ]Ì\}}| ¡ D ]º\}}t dt|ƒ¡}tt	j
|||d�|dd� t d|| d ¡}tt	j
|||d�t	j|||d� t	j|||d� dƒ t	j|||d�}t||d d d… ƒ t	j|||d�}	t||	ƒ q.qd S )N)r   r(   r)   r*   r   )ÚkÚmrh   r.   r/   r   r¡   )Úpn3Úpn4Úpm5Úpm6Úitemsr   r7   Úlenr   r   rx   ZsfÚpmf)
r   Zp_tablesrh   Útabler¿   r#   ÚuÚu2rÆ   Zpmf2r$   r$   r%   Útest_exact_distributionc  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sPJ ‚t  |j|j ¡dksjJ ‚t j d¡}t j d¡}t||dd�}t||dd�}|j|jks®J ‚t  |j|j ¡dk sÈJ ‚d S )	Nr   r)   r�   r‰   rŒ   rN   é(   r.   )r   r5   r6   rŽ   r   rD   ÚabsrE   )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sLJ ‚t g d¢ddgd	dd�}t|d
ƒ d S )Nr§   rj   ç      @r•   r�   r’   r—   rP   r‘   )r   r   )r   r   rE   )r   Zres_lZres_grF   r$   r$   r%   Útest_exact_U_equals_mean�  s    ÿÿÿz)TestMannWhitneyU.test_exact_U_equals_mean©r   r   )r   rP   )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‰   )rP   r   rŒ   F)rŠ   r„   rP   )r   r   r   ÚnanrS   r$   r$   r%   Útest_equal_scalar_data±  s    
ÿÿz'TestMannWhitneyU.test_equal_scalar_datarŠ   c                 C   s|  t j d¡ d}d\}}t j |dd¡}t j d|dd¡d }t||||d	�}d
}|jj|ksbJ ‚|jj|ksrJ ‚t  ||d¡t  ||d¡ }}|d }|j	|j	ks¨J ‚t  
|||f ¡}t  
|||f ¡}|jd d… |ksâJ ‚|jd d… |ksøJ ‚t  |¡}	t  |¡}
tdd„ |D ƒŽ D ]8}|| }|| }t|||d�}|j|	|< |j|
|< �qt j |j|
¡ t j |j|	¡ d S )Nr   éýÿÿÿ)r,   r+   r   r-   r*   r   rl   )rŠ   rˆ   )r*   r   r-   r¡   )N.c                 S   s   g | ]}t |ƒ‘qS r$   )Úrange)Ú.0Úir$   r$   r%   Ú
<listcomp>â  ó    z8TestMannWhitneyU.test_gh_12837_11113.<locals>.<listcomp>r‰   )r   r5   r6   rŽ   r   rE   ÚshaperD   ZmoveaxisÚndimZbroadcast_toÚzerosr   Ztestingr   )r   rŠ   rˆ   r¿   rh   r    r!   rF   rÝ   Ú
statisticsZ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 )Nr<   )r   r*   r,   r-   r¢   r   r'   r   r(   r(   r)   r(   )r   r   rA   r   rD   rE   rÕ   )r   r    r!   rÍ   rÎ   Úres3r$   r$   r%   Útest_gh_11355ì  s    




zTestMannWhitneyU.test_gh_11355r   r*   r,   r-   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!   rD   rE   c                 C   s2   t ||dd�}t|j|dd� t|j|dd� d S )NrŒ   r‰   çê-�™—q=r/   )r   r   rD   rE   )r   r    r!   rD   rE   rF   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é#   )
re   g�Âõ(\�ê?g=
×£p=þ?g¤p=
×£ð?g333333÷?g®Gázö?g�Âõ(\�þ?g=
×£p=ú?r   g\�Âõ(\÷?)gffffffò?g)\�Âõ(ì?rr   g®Gáz®ç?g\�Âõ(\ó?©r„   r†   rŠ   )r   r   rD   r   rE   )	r   r„   r†   rŠ   rë   Zstatistic_expr    r!   rF   r$   r$   r%   Útest_gh_9184   s    ÿzTestMannWhitneyU.test_gh_9184c                 C   s:   t tdd�� tg g ƒ W d   ƒ n1 s,0    Y  d S )Nr�   r‚   )r=   r>   r   rS   r$   r$   r%   Útest_gh_6897?  s    zTestMannWhitneyU.test_gh_6897c                 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   rÕ   r   r   rD   rE   )r   ÚaÚbrF   r$   r$   r%   Útest_gh_4067D  s
    
zTestMannWhitneyU.test_gh_4067rj   rÐ   )r   ga×€}¢ã?)r   rb   )rj   g¤Û?hÍå?)rj   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š   rF   r$   r$   r%   Útest_gh_2118\  s    
ÿzTestMannWhitneyU.test_gh_2118c                 C   sì   t j d¡}|jdd�}|jdd�}t  d¡ t_tj||dd� tjj}|d d	krb|d
 dksfJ ‚tj||dd� |tjjks†J ‚t  d¡ t_tj|d| ddd� tjj}|d d
ksÂJ ‚tjd| |ddd� |tjjksèJ ‚d S )Nì   g>·mŽjÑK r)   ©Úsizerp   ©r   r   r   r�   r‰   r   r*   r   rd   r—   )rŠ   r†   r¡   )	r   r5   Údefault_rngrg   r   Ú_fmnksÚstatsr   rÝ   )r   Úrngr    r!   rÝ   r$   r$   r%   Útest_gh19692_smaller_tabled  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   r5   rú   rü   r   ÚPermutationMethodr   rD   rE   )r   r†   rý   r    r!   rF   rÎ   r$   r$   r%   Útest_permutation_method}  s    ÿ
ÿz(TestMannWhitneyU.test_permutation_methodc                 C   s
   d t _d S r›   r~   rS   r$   r$   r%   Úteardown_method‰  s    z TestMannWhitneyU.teardown_methodN))rI   rJ   rK   r€   r‹   r�   r    r!   Zcases_basicÚpytestÚmarkÚparametrizer�   Zcases_continuityrŸ   r¤   rÀ   rÁ   rÂ   rÃ   rÊ   rÏ   rÑ   Zcases_scalarrÔ   rÖ   rå   rç   r   rA   Zcases_11355rê   Z
cases_9184rî   rï   rò   Z
cases_2118rõ   rþ   r  r  r$   r$   r$   r%   r}   ¤   s"  5ÿÿÿÿÿÿö
ÿÿÿÿÿÿö
ÿþûöÿÿÿø


+þþþþþô
ø
ÿ
ø


r}   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestMannWhitneyU_iterativec                 C   s
   dt _d S )NFr~   rS   r$   r$   r%   r€   Ž  s    z'TestMannWhitneyU_iterative.setup_methodc                 C   s
   d t _d S r›   r~   rS   r$   r$   r%   r  ‘  s    z*TestMannWhitneyU_iterative.teardown_methodN)rI   rJ   rK   r€   r  r$   r$   r$   r%   r  �  s   r  c                  C   sŠ   d t _t d¡ t _tj d¡} |  d¡}|  d¡}tj||dd� t 	t jdk¡sXJ ‚|  d¡}tj||dd� t 	t jdk¡r†J ‚d S )	Nrù   l   ä7cEº"r)   iõ  r�   r‰   r¡   iô  )
r   r   r   rg   rû   r5   rú   rü   r   Úall)rý   r    r!   r$   r$   r%   Útest_mann_whitney_u_switch•  s    


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Ù   ÚidxrS   r$   r%   rÛ   ¶  rÜ   z,TestSomersD.setup_method.<locals>.<listcomp>r‘   r…   )ZALL_INTEGERZ	ALL_FLOATZdtypesr   r7   r
  Ú	functoolsÚpartialrü   ÚsomersdÚpartialfuncrš   )r   Zinput_arrayr$   rS   r%   r€   °  s    
ÿ
ÿþÿzTestSomersD.setup_methodc                 G   s6   | j |Ž }t|j| jjdd� t|j| jjdd� d S )Nrÿ   r/   )r  r   rD   rš   rE   )r   ry   rF   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)r]   é   é   r,   r   )r,   r  é   rì   rd   )r   r   r'   r,   é   rÿ   r/   )rü   r  Zget_optional_argsr   rD   rE   )r   rÇ   rÍ   Z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,   r-   )r)   r'   r*   r   r   r-   r,   r(   ©ç        rb   r   rÿ   r/   r   )	r   r)   r'   r   r   r*   r(   r,   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+$I’$IÂ¿g=/3n£+ä?r+   ©rb   r   )
r   r'   r   r   r(   r*   r)   r,   r-   r¢   )gsÒ'}Ò'í?r  r¡   )g      ð¿r   )
r¢   r,   r-   r*   r)   r   r(   r'   r   r   )g}Ò'}Ò'í¿r  )rd   r'   r   rd   r'   )r   r(   r,   r   r   )ç      à¿gÞ.Ê‚ƒÓ?)r'   r'   r'   )r'   r   r'   g      $@g      4@)rü   r  r   rD   rE   r   r7   r   rÕ   r=   r>   )r   r    r!   rš   rF   Ú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ÿ   r/   rQ   )r   r'   ©r'   r   )rü   r  r   rD   rE   r   rÇ   rÝ   )r   r    r!   Zd_crZd_rcr#   rF   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 )Nr-   r'   r*   r)   r   r(   r   gHHHHHHØ?r  r   éU   r3   )gœÜMî&wã?rb   gtÑE]tá¿)r   r   ÚTr   rü   r  rD   )r   rÇ   ZdyxZdxyr$   r$   r%   Útest_somers_originalW  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 )Nr_   ©r(   r*   r   ©r#   r'   r   r‡   gaƒ¸yò½¿rÿ   r/   gP—j¹$Ä?)r   Úprodr5   r6   rü   ÚmultinomialÚrvsrg   Úreshaper  Úinsertrß   r   rD   rE   )r   ÚNrÝ   rø   ÚsrF   Ús2rÎ   Zs3ræ   Zs4Zres4r$   r$   r%   Ú*test_contingency_table_with_zero_rows_colsm  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 sv0    Y  |d }d	}t	t
|d�� t |¡ W d   ƒ n1 s¸0    Y  d
}t	t
|d�� t g g¡ W d   ƒ n1 sô0    Y  t	t
|d�� t dgg¡ W d   ƒ n1 �s00    Y  t  d¡}t	t
|d�� t |¡ W d   ƒ n1 �sr0    Y  d|d< t	t
|d�� t |¡ W d   ƒ n1 �s²0    Y  d S )Nr_   r"  r   r#  r'   z:All elements of the contingency table must be non-negativer‚   rN   z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.r   )r   r   rÒ   )r   r$  r5   r6   rü   r%  r&  rg   r'  r=   r>   r  rß   )	r   r)  rÝ   rø   r*  Zs5ÚmessageZs6Zs7r$   r$   r%   Útest_invalid_contingency_tablesŒ  s0    
 ((*.
*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   r  )r   rA   rü   r  r   rD   rE   )r   r    r  r!   Úy2rF   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   r7   rü   r  r   rÇ   Úeye©r   r    r!   rF   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   ƒ n1 �sR0    Y  d S )Nr    )r)   r*   r,   r-   r,   r‘   r…   r   r•   r   r'   r—   z`alternative` must be...r‚   ú	ekki-ekki)
rü   r  rD   r   r   rE   Úreverser  r   r>   )r   r  r  rš   rF   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sFJ ‚|jdksTJ ‚tj||dd�}|j|ksrJ ‚|j|r~dndksˆJ ‚tj||dd�}|j|ks¦J ‚|j|r²dndks¼J ‚d S )	Nr+   r   r¡   r‘   r…   r   r•   r—   )r   r7   Úfliprü   r  rD   rE   )r   r7  r  r  Zexpected_statisticrF   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ÿ   r/   )r5   r6   Úchoicesrü   r  rD   r   )r   ÚclassesZ	n_samplesr    r!   Zval_sklearnZ	val_scipyr$   r$   r%   Ú!test_somersd_large_inputs_gh18132  s    
z-TestSomersD.test_somersd_large_inputs_gh18132N)rI   rJ   rK   r€   r  r  r  r  r!  r,  r.  r0  r3  r6  r  r  r  r9  r=  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?r_   r'   rV   r)   )gøl¯€lü¿gEA]0×KÁ?r,   r-   )ç*õ)1Ö%ÀgØ_  ¬“?r   )g_½Òc1÷?gèß=ç Ä?é   rC   )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   rD   rE   r   ©r   Úinput_samplerš   rF   rD   rE   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(	Ž˜ó¿rD  )gÓNXèz¶û¿rE  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)ZpooledNrF  rG  r$   r$   r%   Útest_pooled_param<  s    z"TestBarnardExact.test_pooled_paramc                 C   s  d}t t|d��( tddgddggdd� W d   ƒ n1 s>0    Y  d	}t t|d��& tt d
¡ dd¡ƒ W d   ƒ n1 s„0    Y  d}t t|d��$ tddgddggƒ W d   ƒ n1 sÈ0    Y  d}t t|d��& tddgddggdƒ W d   ƒ n1 �s0    Y  d S )Nú7Number of points `n` must be strictly positive, found 0r‚   r   r'   r   r(   r   ©rh   ú,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)r=   r>   r   r   r7   r'  ©r   Ú	error_msgr$   r$   r%   Útest_raisesY  s    ÿ642ÿzTestBarnardExact.test_raisesr  c                 C   s6   t |ƒ}|j|j }}t||d ƒ t||d ƒ d S ©Nr   r   ©r   rD   rE   r   rG  r$   r$   r%   Útest_edge_casess  s    z TestBarnardExact.test_edge_casesrb   c                 C   s6   t |ƒ}|j|j }}t||d ƒ t||d ƒ d S rS  rT  rG  r$   r$   r%   Útest_row_or_col_zero  s    z%TestBarnardExact.test_row_or_col_zero)rB  gEç\/?„?éÈ   é,  )gÐgÑìíQ5Àr  é   r4   i¥  )gü&çìX}>Àr  r†   r—   r•   c           	      C   sf   |\}}|dkr2t  |¡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>r/   )r   r   r   rD   rE   r   )	r   rH  rš   r†   Zexpected_statZless_pvalue_expectrF   rD   rE   r$   r$   r%   Útest_less_greaterŒ  s    ÿz"TestBarnardExact.test_less_greaterN)rI   rJ   rK   Ú__doc__r  r  r  rI  rJ  rR  rU  r   rÕ   rV  r[  r$   r$   r$   r%   r>    sp   õþ
õþ
ÿþ
þþ
ýþr>  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.rZ  r?  r'   r,   r-   )ç<vB\÷’?gèÁ–„/?„?r)   r   r+   )g¬“ŽÍéMï?gßÏA>î?r“   rC   r  )ç_¬VÃÑ¶?gÂñ¥…Ö­?)ç‘uÝ Ø%Å?gc'�íµ?r   r(   ©r   r   r   )rP   g      Ö?rd   )çß+Âf°?gXc}Áv¡?é   é%   )gZÑ‹D¸É?g‰¦¢gi]Ã?c                 C   s2   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…   r/   N©r   rD   rE   r   ÚATOLrG  r$   r$   r%   Ú	test_less´  s    zTestBoschlooExact.test_lessr@  rË   rA  )çòk¾\Ø2?g–ìà0í,%?)gKïvî÷ï?gâN3î½ï?)r`  g‡'&5Õ·?rC  )gÏw@_„ï?g™•7Ñøï?)gµ‹i¦{ï?g€ÁÉ‘)zî?)ç˜ïÖ…a˜?g³1×ëÛ|?r*   )gYðì<;ªï?g¨ýÖN”Dï?)gê­e×ì?g™Gþ` ë?c                 C   s2   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="greater",
                       tsmethod="central", np.interval=TRUE, beta=1e-8)
        ```
        r—   r…   r/   Nre  rG  r$   r$   r%   Útest_greaterÑ  s    zTestBoschlooExact.test_greater)rh  gôqQSé,5?)r^  gG’Þ?/?”?)r`  gKE`ÕÇ?)r_  gÓhr1Ö½?)ri  grÒfbÛŒ?)rP   g      æ?)rb  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†   rh   r/   Nre  rG  r$   r$   r%   Útest_two_sidedð  s    z TestBoschlooExact.test_two_sidedc                 C   s  d}t t|d��( tddgddggdd� W d   ƒ n1 s>0    Y  d	}t t|d��& tt d
¡ dd¡ƒ W d   ƒ n1 s„0    Y  d}t t|d��$ tddgddggƒ W d   ƒ n1 sÈ0    Y  d}t t|d��& tddgddggdƒ W d   ƒ n1 �s0    Y  d S )NrK  r‚   r   r'   r   r(   r   rL  rM  r*   rN  r¡   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*rO  )r=   r>   r   r   r7   r'  rP  r$   r$   r%   rR    s    ÿ642ÿzTestBoschlooExact.test_raisesc                 C   s6   t |ƒ}|j|j }}t||d ƒ t||d ƒ d S rS  )r   rD   rE   r   rG  r$   r$   r%   rV  '  s    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sBJ ‚t |dd�j}|d	ks\J ‚d S )
Nr   rq   rd   r•   r…   r—   r'   r‘   rb   )r   rE   Úmin)r   ÚtblÚplZpgÚptr$   r$   r%   Útest_two_sided_gt_14  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,   r-   r…   r   )r   rD   rü   Zfisher_exactr   )r   r†   rn  Zboschloo_statZfisher_pr$   r$   r%   Útest_against_fisher_exact>  s    z+TestBoschlooExact.test_against_fisher_exactN)rI   rJ   rK   r\  rf  r  r  r  rg  rj  rl  rR  r   rÕ   rV  rq  rr  r$   r$   r$   r%   r]  ¯  sp   ÷þ
õþ
øþ
þþ

r]  c                   @   s^   e Zd Zdd„ Zdd„ Zdd„ Zej dg d¢¡d	d
„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestCvm_2sampc                 C   sÂ   t  d¡}d}tjt|d�� tg |ƒ W d   ƒ n1 s<0    Y  tjt|d�� t|dgƒ W d   ƒ n1 sv0    Y  d}tjt|d�� t||dƒ W d   ƒ n1 s´0    Y  d S )Nr)   z/x and y must contain at least two observations.r‚   r   z/method must be either auto, exact or asymptoticZxyz)r   r7   r  r   r>   r   )r   r!   Úmsgr$   r$   r%   rk   I  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¥   rv   rd   r  )r   r   r   r   rD   rE   ©r   r    r!   rz   r{   r$   r$   r%   Útest_list_inputT  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ã¥›ÄÐ?r.   r/   g
×£p=
Ç?rN   )r   r   rD   rE   ©r   r    r!   Úrr$   r$   r%   Útest_example_conover[  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   rD   r¿   rh   Zpvalr$   r$   r%   Útest_exact_pvaluee  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 oHdk n  ƒ t||d ƒ}td|j  k otdk n  ƒ d S )Ni  r:  r÷   i » r   r   rl   )	r   r5   r6   r   rf   r&  r   r   rE   rz  r$   r$   r%   Útest_large_samplep  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,   r-   r�   r‰   rŒ   rN   r/   )	r   r5   r6   rŽ   r   r   rD   r   rE   ru  r$   r$   r%   Útest_exact_vs_asymptotic{  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 )NrC   )rP   gÍÌÌÌÌÌ@g333333*@r�   r‰   r�   rY  rŒ   )r   r7   r   r   rE   ru  r$   r$   r%   Útest_method_auto„  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 )NrC  r  r(   )r   r7   r   r   rD   rE   )r   r    rF   r$   r$   r%   Útest_same_input�  s
    

zTestCvm_2samp.test_same_inputN)rI   rJ   rK   rk   rv  r|  r  r  r  r}  r~  r  r€  r�  r$   r$   r$   r%   rs  H  s   
ÿ
	rs  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,atolrQ   g»½×Ùß|Û=)úequal size samplezunequal sample sizezextreme sample size differences)Zidsc                 C   sÒ   t j| dd¡ ¡ dd… td� d¡}tj|Ž }| ¡ }|D ]Ž\}}}	}
}}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©Zdtype)r*   r*   r   r/   rO   ©r   ÚasarrayÚreplaceÚsplitÚfloatr'  rü   Ú	tukey_hsdÚconfidence_intervalÚintr   ÚlowrD   ÚhighrE   )r   ÚdataÚres_expect_strr0   Ú
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é   rZ  rŒ  zunequal size samplec                 C   s¾   t j| ¡ td� d¡}tj|Ž }| ¡ }|D ]Š\}}}	}
}}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   r/   N)r   r‘  r“  r”  r'  rü   r•  r–  r—  r   r˜  rD   r™  rE   )r   rš  r›  r0   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 ]Š\}}}}	}
}t	|ƒd t	|ƒd  }}t
|j||f |	dd� t
|j||f |dd� t
|j||f |
dd� t
|j||f |dd� qXd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¤  )é   r3   é6   r  éF   é4   é3   r¦  éC   r]   r  é   é   r¬  é   é)   rC   é,   )r  rY  r¬  r  rd   r  rì   r3   é$   é*   r¦  r­  r“   rA  r4   rY  rA  r¬  )r±  rY  rc  r  r+   r@  r4   rC  r¦  rC   rY  rc  r  rq   rC  rC  r“   r4   r   rZ  r/   rn   gñhãˆµøä>r�  )r   Z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 ]H\}	}
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š™™™™™ @ry  g333333@gffffff"@rx  )g       @g      %@g333333 @r´  rw  )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   r'   r  rN   r/   N)rü   r•  r–  r   r‘  r   r˜  r™  )r   Zgroup1Zgroup2Zgroup3Zgroup4rF   rž  ÚlowerÚupperrÚ   rŸ  r$   r$   r%   Útest_engineering_stat_handbookC  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 )Nr2   r   r_   ©r   r   r   r   )r   r5   r6   rŽ   rü   r•  r–  r   r˜  r™  r   ZdiagonalrD   rE   )r   rš  rF   rž  r$   r$   r%   Útest_rand_symm]  s    
zTestTukeyHSD.test_rand_symmc                 C   sL   t tdd��, t g d¢dtjgg d¢¡ W d   ƒ n1 s>0    Y  d S )Nz...must be finite.r‚   r§   r'   )r*   r,   r   )r=   r>   rü   r•  r   rA   rS   r$   r$   r%   Útest_no_infp  s    zTestTukeyHSD.test_no_infc                 C   sR   t tdd��2 t ddgddggddgg d¢¡ W d   ƒ n1 sD0    Y  d S )Nz...must be one-dimensionalr‚   r   r'   r   r)   )r)   rž   r*   ©r=   r>   rü   r•  rS   r$   r$   r%   Ú
test_is_1dt  s    zTestTukeyHSD.test_is_1dc                 C   sF   t tdd��& t g ddgg d¢¡ W d   ƒ n1 s80    Y  d S )Nz...must be greater than oner‚   r'   r)   )r(   r)   r*   r½  rS   r$   r$   r%   Útest_no_emptyx  s    zTestTukeyHSD.test_no_emptyÚnargsrÒ   c                 C   sD   t tdd��$ tjg d¢g| Ž  W d   ƒ n1 s60    Y  d S )Nz...more than 1 treatment.r‚   ©rž   r,   r   r½  )r   rÀ  r$   r$   r%   Útest_not_enough_treatments|  s    z'TestTukeyHSD.test_not_enough_treatmentsÚcl)r  r   r   r'   c                 C   sT   t tdd��4 t g d¢ddgddg¡}| |¡ W d   ƒ n1 sF0    Y  d S )Nzmust be between 0 and 1r‚   rÁ  r   r(   r¢   )r=   r>   rü   r•  r–  )r   rÃ  r{  r$   r$   r%   Útest_conf_level_invalid�  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_sizeZ	ttest_indr   rE   )r   r�  Z	res_ttestr$   r$   r%   Útest_2_args_ttest‡  s    zTestTukeyHSD.test_2_args_ttestN)rI   rJ   rK   Zdata_same_sizerÅ  Zextreme_sizeZsas_same_sizeZsas_diff_sizeZsas_extremer  r  r  r£  Zmatlab_sm_sizZmatlab_diff_szr¥  r³  r¹  r»  r¼  r¾  r¿  rÂ  rÄ  rÆ  r$   r$   r$   r%   r‚  œ  sZ   þþý


þû
%ÿÿý
)

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   r_   r   r_   gþe÷äa¡¶?)r'   r_   r*   r_   gÞ	ŠcÆ?c                 C   s$   t  ||||¡}t|j|dd� d S )NrQ   r/   ©rü   Úpoisson_means_testr   rE   )r   Úc1Ún1Úc2Ún2Úp_expectrF   r$   r$   r%   Útest_paper_examples�  s    z(TestPoissonMeansTest.test_paper_examplesz c1, n1, c2, n2, p_expect, alt, d)rC   r+   rC   r+   gŽŸ{}ÿÿï?r‘   r   )r+   r+   r+   r+   goPFªÿÿï?r‘   r   )é2   rC  r   r   góæ°ae¹?r‘   rO   )r   r_   rC   rX  gò/V›-=¿?r‘   r   )r   rd   r(   rC   g"Ü)‘ÅÝÙ?r—   r   )r(   rC   r   r_   g_ù'Qm~€?r—   r   )r(   rC   r   r+   g|¨Š»Ó?r•   r   )r   r   rÐ  rC  gï0�ëÝ·?r•   r   c           	      C   s,   t j||||||d�}t|j|ddd� d S )N)r†   Údiffg�íµ ÷ÆÀ>g¼‰Ø—²Òœ<©r0   rô   rÈ  )	r   rÊ  rË  rÌ  rÍ  rÎ  ZaltÚdrF   r$   r$   r%   Útest_fortran_authors™  s    z)TestPoissonMeansTest.test_fortran_authorsc                 C   s0   d\}}d\}}t  ||||¡}t|jdƒ d S )N)r`   r`   r   rÈ  ©r   Úcount1Úcount2Únobs1Únobs2rF   r$   r$   r%   Útest_different_results®  s    z+TestPoissonMeansTest.test_different_resultsc                 C   s0   d\}}d\}}t  ||||¡}t|jdƒ d S )Nrº  ra  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 sF0    Y  t t|d��  t ||d|¡ W d   ƒ n1 s‚0    Y  d}t t|d��  t d|||¡ W d   ƒ n1 sÂ0    Y  t t|d��  t ||d|¡ W d   ƒ n1 sþ0    Y  d}t t|d��  t |d||¡ W d   ƒ n1 �s@0    Y  t t|d��  t |||d¡ W d   ƒ n1 �s~0    Y  d	}t t|d��$ tj||||dd
� W d   ƒ n1 �sÄ0    Y  d}t t|d��$ tjdddddd� W d   ƒ n1 �s
0    Y  d S )Nrº  ra  z`k1` and `k2` must be integers.r‚   rv   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…   )r=   Ú	TypeErrorrü   rÉ  r>   )r   rÖ  r×  rØ  rÙ  r-  r$   r$   r%   r‹   ¿  s.    ....004z*TestPoissonMeansTest.test_input_validationN)rI   rJ   rK   r  r  r  rÏ  rÔ  rÚ  rÛ  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   sn  t j d¡}|jdd�\}}d}tjt|d��$ t ||g||g¡ W d   ƒ n1 sX0    Y  d}tjt|d��  t t jg|¡ W d   ƒ n1 sš0    Y  d}tjt|d�� t |g ¡ W d   ƒ n1 sØ0    Y  d}tjt|d��  tj||d	d
� W d   ƒ n1 �s0    Y  d}tjt|d��  tj||dd� W d   ƒ n1 �s`0    Y  d S )Nì   <oôvêT‘{ ©r'   r,   r÷   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...r4  r…   z!method` must be an instance of...r²  r‰   )	r   r5   rú   r  r   r>   rü   Úbws_testrÕ   )r   rý   r    r!   r-  r$   r$   r%   Útest_bws_input_validationå  s"    2.*0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,   r-   )r)   r¢   r+   rp   rd   rq   r  r‘   r…   gºI+‡@r.   r/   g¤f$/•Þg?)rü   rá  r   rD   r   rE   r2  r$   r$   r%   Ú test_against_published_referenceÿ  s
    z,TestBWSTest.test_against_published_reference)r†   rD   rE   ))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 )
Nrß  rà  r÷   r…   ç‚vIhÂ%<=ró   rN   rl   rÒ  ©r   r5   rú   rü   rá  r   rD   rE   ©r   r†   rD   rE   rý   r    r!   rF   r$   r$   r%   Útest_against_R	  s
    zTestBWSTest.test_against_R))r‘   góD 5Hò?g«ÒdüÔ•Ò?)r•   ç`�Ñ‡©áï?gÈ²µ×šXë?)r—   ré  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÷   r-   r…   rå  ró   rN   rl   rÒ  ræ  rç  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sXJ ‚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¡rÎJ ‚d S )Nì   /°HøNÏ( )r'   r+   r÷   r+   )Zn_resamplesZrandom_stater‰   l   ÝVC£	ãA )
r   r5   rú   rü   r   rá  rÅ   Únull_distributionr   Z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srJ ‚t|jdƒ tj||dd�}|jdk sœJ ‚t|jdt|j	ƒ ƒ tj||dd�}|jdk sÐJ ‚t|jdƒ d S )	Nrë  r)   r÷   r   r—   r…   r   r•   )
r   r5   rú   rü   rá  rD   r   rE   rÅ   rì  )r   rý   r    r!   rF   r$   r$   r%   Útest_directionsC  s    zTestBWSTest.test_directionsN)rI   rJ   rK   râ  rã  r  r  r  rè  rê  rí  rî  r$   r$   r$   r%   rÞ  ã  s   
ÿ
ÿ
rÞ  ).Ú	itertoolsr   Únumpyr   r5   r  r  Znumpy.testingr   r   r   r   r   r=   Zscipy.statsrü   r   Zscipy.stats._hypotestsr	   r
   r   r   r   r   r   Zscipy.stats._mannwhitneyur   r   Zcommon_testsr   Zscipy._lib._testutilsr   r   rL   r}   r  r  Zxslowr  r	  r>  r]  rs  r‚  rÇ  rÞ  r$   r$   r$   r%   Ú<module>   sB   $4Z   l
  o  T tT