B
    0d.                 @   s  d dl mZmZmZ d dlm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 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%G dd dZ&dS )    )divisionprint_functionabsolute_import)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_resultsc               @   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S )TestEppsSingletonc             C   sj   t ddddddddd	d
g
}t ddddddddddg
}t||\}}t|ddd t|ddd d S )Ngffffffֿgffffff@gGz?g\(\?gffffff?gQ@gq=
ףp?gGzgGz׿gp=
#(@gffffffg333333ÿgףp=
@g      
@gGz@g)\(@g      @g(\@g(\ @g333333!@gHzG.@r   )decimalgQ,r?   )nparrayr   r	   )selfxywp r!   R/var/www/html/venv/lib/python3.7/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!@gMbP?)atolg&J?r   )r   )r   r   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 )Ni        )r   randomseedaranger   listtupler   )	r   r   r   Zw1p1Zw2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   r1   assert_raises
ValueErrorr   )r   r   r   r!   r!   r"   test_epps_singleton_size8   s    z*TestEppsSingleton.test_epps_singleton_sizec             C   s\   dddddt jft d }}ttt|| t ddddddt jf }}ttt|| d S )Nr   r$   r   r%   r&   r(   )r   infr1   r7   r8   r   nan)r   r   r   r!   r!   r"   test_epps_singleton_nonfinite=   s    z/TestEppsSingleton.test_epps_singleton_nonfinitec             C   s$   t ddd}ttt|| d S )Nd   r   )r   r1   reshaper7   r8   r   )r   r   r!   r!   r"   test_epps_singleton_1d_inputD   s    z.TestEppsSingleton.test_epps_singleton_1d_inputc             C   s2   t dt d }}t||}d}t|| d S )N   r-   )	statisticpvalue)r   r1   r   r   )r   r   r   res
attributesr!   r!   r"   
test_namesH   s    
zTestEppsSingleton.test_namesN)
__name__
__module____qualname__r#   r,   r6   r9   r<   r@   rF   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ddddgddddd	gd
d d S )Ngy;i?g#^?gE>?gD
)?r%   g{Gz?g?g      ?g+?g-C6?)r+   )r   r   )r   r!   r!   r"   
test_cdf_4S   s    
zTestCvm.test_cdf_4c             C   s(   t tddddgddddd	gd
d d S )Ng8*5?g@߾?gHm?g%1 ?r(   g{Gz?g?g      ?g333333?g-C6?)r+   )r   r   )r   r!   r!   r"   test_cdf_10Y   s    
zTestCvm.test_cdf_10c             C   s(   t tddddgddddd	gd
d d S )Ng}tg?g`?gI5o?gׁsF?i  g{Gz?g?g      ?g+?g-C6?)r+   )r   r   )r   r!   r!   r"   test_cdf_1000_   s    
zTestCvm.test_cdf_1000c             C   s&   t tddddgddddgd	d
 d S )Nga+e?g+?g&pn?g+MJA?g{Gz?g?g      ?g+?g-C6?)r+   )r   r   )r   r!   r!   r"   test_cdf_infe   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   )r   r!   r!   r"   test_cdf_supportk   s    zTestCvm.test_cdf_supportc             C   s0   t tdddddgdtdddddgdd d S )	Nga+e?g+?g&pn?g+MJA?r=   i'  g-C6?)r+   )r   r   )r   r!   r!   r"   test_cdf_large_np   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?gt@i  g      ?)r   r   )r   r!   r!   r"   test_large_xw   s    "zTestCvm.test_large_xc             C   s<   d}t t|d d}tt|j|dk t|jd d S )N   g?normg      ?r   )r   r   onesr   r   rB   r   rC   )r   nrD   r!   r!   r"   
test_low_p   s    zTestCvm.test_low_pc             C   s@   t dd}ttt|d tttdgd tttdd d S )Nr(   )r$   r&   rT   g      ?r!   )r   r1   r?   r7   r8   r   )r   r   r!   r!   r"   test_invalid_input   s    zTestCvm.test_invalid_inputc          
   C   s   t dddddddgd}t|jd	d
d t|jdd
d t dddddddgdd}t|jdd
d t|jdd
d t dddddddddg	d}t|jdd
d t|jdd
d d S )Ng333333r$   r   g?r%   g?g333333?rT   gZ	%q?gư>)r+   gEж?)r   g      ?g!O!W*?gz"W`?r   r&   gffffff?gQ?      g?g      @exponge.?gnz\(r?)r   r   rB   rC   )r   rD   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&   )gffffff?gffffff?r[   beta)
r   r1   r   r   r[   cdfr   rB   rC   r]   )r   r   argsr1r2r!   r!   r"   test_callable_cdf   s    
zTestCvm.test_callable_cdfN)rG   rH   rI   rK   rL   rM   rN   rP   rQ   rR   rW   rX   r\   rb   r!   r!   r!   r"   rJ   O   s   	rJ   c               @   sd  e Zd Zdd Zdd ZdddgZdd	d
ddddddddddg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/d0 Zd1d2d3gd4d5d6d7gd8d4d5d9d2d:gd;Zd5d6d7gd<d=d>d6d7gd?d@dAd5dBdCdDgdEdFd@d4dGdHdIdJdKg	dLZdMdNd2dOgdPdQdRdSdCdDgdTdUdVdWdXdSdYd2dZg	d[d\d]d^dQd_d`dadbdcddgded[d\d?dfdgdhdidjdkdldmd2dngdoZd_dSdpdDgdUdVd_dqdrdCdDgdsdtdfdudvdRdkdwdcddg
dxdydzd{d@d|d}d~dddddgddedddddddddqdddddgddded[ddd]dPddddidddd9dddgdZdd Zdd Zdd ZddddgddddgddddgddddgddddgddddggZej	
dedd Zdd Zej	
dddgdd Zdd ZddddgddddejddddddgddfddddgddddejejdddddgddfddejdgddddejddddddgddfddejdgddddejejdddddgddfdejejdgddddejejdddddgddfgZej	
deddƄ Zd$dddgd$dddgd$dddgd)dddgd)dddgd)dddgd$dddgd$dddgd$dddgg	Zej	
dedd҄ Z ddԄ Z!ddք Z"dddgddgddgdddgddgddgdddgddgddgdddgdgddgdddgdgddgdddgdgddgddgddgddgddgddgddgddgddgddgg	Z#ej	
ddddge#dd Z$dS )TestMannWhitneyUc          	   C   s$  t ddg}t ddg}ttdd tg | W d Q R X ttdd t|g  W d Q R X ttdd tt jdg| W d Q R X ttdd t||d	d
 W d Q R X ttdd t||d	d W d Q R X ttdd t||dd W d Q R X ttdd t||d	d W d Q R X d S )Nr   r$   r   r%   z`x` and `y` must be of nonzero)matchz`x` and `y` must not containz`use_continuity` must be oneZekki)use_continuityz`alternative` must be one of)alternativez`axis` must be an integerg      ?)axisz`method` must be one of)method)r   r   r7   r8   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sft|j|jksvtt j|d }t j|d }t||}t||dd}t||dd}|j|jkst|j|jkstt||}t||dd}t||dd}|j|jkst|j|jks&tt j|d }t j|d }t||}t||dd}t||dd}|j|jks~t|j|jkstt j|d }t j|d }|d |d< t||}t||dd}t||dd}|j|jkst|j|jkstd S )Nr   r*   
asymptotic)rh   exactr   )r   r/   r0   randr   rC   AssertionError)r   rV   r   r   autorj   rk   r!   r!   r"   	test_auto   sH    




zTestMannWhitneyU.test_autogm9Aj@g+H3[@gi>s@g#hA{@glz@gcDf@gǳ*h@gZA@gI9^YQa@g`@g՞p@g:q@g&@gZ|@g`r@gMc3g@z	two-sidedrj   )rf   rh   )   g
+?less)rp   g
+?greater)rp   g%c?rk   )rp   g9:?)rp   g9:?)rp   g*::?)kwdsexpectedc             C   s    t | j| jf|}t|| d S )N)r   r   r   r   )r   rs   rt   rD   r!   r!   r"   
test_basic  s    zTestMannWhitneyU.test_basicT)rf   re   )   g
+?)rv   g%c?)rv   g
+?F)rv   gl,KNh?)rv   giژ?)rv   gl,KNh?c             C   s(   t | j| jfddi|}t|| d S )Nrh   rj   )r   r   r   r   )r   rs   rt   rD   r!   r!   r"   test_continuity+  s    z TestMannWhitneyU.test_continuityc       	      C   s   ddddg}t dddddg}t dddddgd }t dddddgd }|d || || ||| || |d g}t||dd	d
}dddddddg}dddddddg}t|j| t|j| d S )Nr   r$   r   r%   r&   r   g{Gz?r>   rj   )rg   rh   r(   	   g      !@r*   g      @r)   r'   g]U?g[?gi\?gZX<_?gx.?g 
?)r   r   r   r   rB   r   rC   )	r   r   Zy0ZdyZdy2r   rD   Z
U_expectedZ
p_expectedr!   r!   r"   test_tie_correct9  s    *
z!TestMannWhitneyU.test_tie_correctg      ?g      ?g      ?g?g?g?g333333?g?gffffff?g?)r   r$   r   gx&?g/$?gJ+?gy&1?gv/?gv/?gjt?g~jt?gʡE?gy&1?gV-?gS?gv?gʡE?g'1Z?gm?)r   r$   r   r%   gK7A`?gZd;O?gMbX?gMb?gRQ?gRQ?gM?g;On?g;On?gV-?g      ?gJ+?gx&?gCl?gMb?gMb?gMb?gy&1?gM?g|?5^?gn?g\(\?g!rh?gK7?gMbp?g~jt?g333333?g"~j?gףp=
?gzG?gK7?gGz?gl?gI+?)r   r$   r   r%   r&   g1Zd?g1Zd?g%C?g~jt?g~jt?gsh|??gS㥛?g+?g{Gzt?g{Gz?g~jt?gL7A`?gjt?gPn?gI+?gX9v?gQ?gMb?gsh|??gK7A`?gMb`?g;On?gQ?g9v?gˡE?gT㥛 ?gbX9ȶ?grh|?gQ?gx&?gv/?gMbX?g(\?gQ?gMbP?g9v?g/$?gL7A`?g
ףp=
?gQ?gK7?g`"?g7A`?gV-?gjt?gˡE?)r   r$   r   r%   r&   r'   c       
   	   C   s   | j | j| j| jd}x| D ]\}}x| 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||	 q2W q W d S )N)r   r%   r&   r'   r   )kmrV   gMbP?)r+   r   r>   )pn3pn4pm5pm6itemsr   r1   lenr   r   r^   Zsfpmf)
r   Zp_tablesrV   tabler{   r    uu2r   Zpmf2r!   r!   r"   test_exact_distributioni  s    4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sPtt |j|j dksjtt jd}t jd}t||dd}t||dd}|j|jkstt |j|j dk std S )	Nr   r&   rk   )rh   rj   g{Gz?(   gMbP?)	r   r/   r0   rl   r   rB   rm   absrC   )r   r   r   res1res2r!   r!   r"   test_asymptotic_behavior  s    z)TestMannWhitneyU.test_asymptotic_behaviorc             C   sx   t dddgddgddd}t dddgddgd	dd}t|j|j |jd
ksPtt dddgddgddd}t|d d S )Nr   r$   r   g      ?g      @rq   rk   )rf   rh   rr   g      ?z	two-sided)r   r   )r   r   rC   rm   )r   Zres_lZres_grD   r!   r!   r"   test_exact_U_equals_mean  s    z)TestMannWhitneyU.test_exact_U_equals_mean)r   r   )r   g      ?)r   g郡E?)rs   resultc             C   s   t td|| d S )Nr   r$   )r   r$   )r   r   )r   rs   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   rk   )rh   )g      ?r   rj   F)rh   re   g      ?)r   r   r   r;   )r   r!   r!   r"   test_equal_scalar_data  s    
z'TestMannWhitneyU.test_equal_scalar_datarh   c             C   s  t jd d}d\}}t j|dd}t jd|ddd }t||||d	}d
}|jj|ksbt|jj|ksrtt 	||dt 	||d }}|d }|j
|j
kstt |||f }t |||f }|jd d |kst|jd d |kstt |}	t |}
xNtdd |D  D ]8}|| }|| }t|||d}|j|	|< |j|
|< q W t j|j|
 t j|j|	 d S )Nr   )r)   r(   r   r*   r'   r   g?)rh   rg   )r'   r   r*   r>   )N.c             S   s   g | ]}t |qS r!   )range).0ir!   r!   r"   
<listcomp>  s    z8TestMannWhitneyU.test_gh_12837_11113.<locals>.<listcomp>)rh   )r   r/   r0   rl   r   rC   shaperm   rB   ZmoveaxisndimZbroadcast_tozerosr   testingr   )r   rh   rg   r{   rV   r   r   rD   r   
statisticsZpvaluesindicesxiyitempr!   r!   r"   test_gh_12837_11113  s4    


z$TestMannWhitneyU.test_gh_12837_11113c             C   s   ddddg}ddddddddddd	g}t ||}tj|d< t ||}t|j|j t|j|j tj|d< ttd
d t || W d Q R X d S )Nr   r$   r   r%   r'   r)   r*   rx   r&   z`x` and `y` must not contain)rd   )	r   r   r:   r   rB   rC   r;   r7   r8   )r   r   r   r   r   r!   r!   r"   test_gh_11355  s    



zTestMannWhitneyU.test_gh_11355r   r$   r   r%   r'   r)   r*   r&   r(   g+zQ?g      !@g}$k\?g     1@g!˛G*?rp   g,s?g     8@gFHQ?)r   r   rB   rC   c             C   s2   t ||dd}t|j|dd t|j|dd d S )Nrj   )rh   g-q=)r+   )r   r   rB   rC   )r   r   r   rB   rC   rD   r!   r!   r"   test_gh_11355b  s    zTestMannWhitneyU.test_gh_11355bg&?gO?gO?g9@VN!x?g9M>?g9M>?g?UV?gߺVJH?gVJH?)re   rf   rh   
pvalue_expc       	      C   s:   d}d}d}t |||||d}t|j| t|j| d S )N#   )
g?g(\?g=
ףp=?gp=
ף?g333333?gGz?g(\?g=
ףp=?g\(\?g\(\?)gffffff?g)\(?g?gGz?g\(\?)re   rf   rh   )r   r   rB   r   rC   )	r   re   rf   rh   r   Zstatistic_expr   r   rD   r!   r!   r"   test_gh_9184%  s    
zTestMannWhitneyU.test_gh_9184c          	   C   s&   t tdd tg g  W d Q R X d S )Nz`x` and `y` must be of nonzero)rd   )r7   r8   r   )r   r!   r!   r"   test_gh_6897D  s    zTestMannWhitneyU.test_gh_6897c          	   C   sb   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dd t|| W d Q R X d S )Nz`x` and `y` must not contain)rd   )r   r   r;   r7   r8   r   )r   abr!   r!   r"   test_gh_4067I  s    zTestMannWhitneyU.test_gh_4067g      ?g      @)r   ga׀}?)r   g      ?)g      ?g?h?)g      ?r   )r$   g5&#\?)r$   r   r   r   rf   rt   c             C   s$   t ||d|dd}t||dd d S )NTrj   )re   rf   rh   g-q=)Zrtol)r   r   )r   r   r   rf   rt   rD   r!   r!   r"   test_gh_2118`  s    
zTestMannWhitneyU.test_gh_2118N)%rG   rH   rI   ri   ro   r   r   Zcases_basicpytestmarkparametrizeru   Zcases_continuityrw   ry   r|   r}   r~   r   r   r   r   Zcases_scalarr   r   r   r   r   r:   Zcases_11355r   Z
cases_9184r   r   r   Z
cases_2118r   r!   r!   r!   r"   rc      s   5



,










rc   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S )TestSomersDc             C   s  ddddddddg}ddddddddg}d	}t ||}t|j|d
 dd t|j|d dd d
ddddddddg	}ddd
ddddddg	}d	}t ||}t|j|d
 dd t|j|d dd dddddddg}dddddddg}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d
dddddddddg
}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dddddddddd
g
}d}t ||}t|j|d
 dd t|j|d dd dddddg}ddddd
g}d}t ||}t|j|d
 dd t|j|d dd t dddgdddg}t|jtj t|jtj t dd
dgdddg}t|jtj t|jtj t dddgdd
dg}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 )Nr&   r$   r   r   r'   r%   r)   r*   )g        g      ?r   gV瞯<)r+   )g+$I$I¿g=/3n+?r(   )g      ?r   rx   )gs'}'?g        r>   )g      r   )g}'}'g        rS   )g      g.ʂ?g      $@g      4@)statssomersdr   rB   rC   r   r1   r   r;   r7   r8   )r   r   r   rt   rD   x1x2r!   r!   r"   test_like_kendalltauk  s    







z TestSomersD.test_like_kendalltauc             C   s   ddddddddddddddddddddddddg}ddddddddddddddddddddddddg}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 )Nr   r$   r   gCE]t?g^_?gO((Ƿ?gV瞯<)r+   g-C6?)r   r$   )r$   r   )r   r   r   rB   rC   r   r   r   )r   r   r   Zd_crZd_rcr    rD   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   U   r-   )gM&w?g      ?gtE]t)r   r   Tr   r   r   rB   )r   r   ZdyxZdxyr!   r!   r"   test_somers_original  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   )rg   gaygV瞯<)r+   gPj$?)r   prodr/   r0   r   multinomialrvsrU   r?   r   insertr   r   rB   rC   )r   Nr   sizesrD   s2r   Zs3Zres3Zs4Zres4r!   r!   r"   *test_contingency_table_with_zero_rows_cols	  s(    
 


 
z6TestSomersD.test_contingency_table_with_zero_rows_colsc       	   	   C   sB  d}d}t |}t jd tjj|t || d|}|d }d}t	t
|d t| W d Q R X |d }d	}t	t
|d t| W d Q R X d
}t	t
|d tg g W d Q R X t	t
|d tdgg W d Q R X t d}t	t
|d t| W d Q R X d|d< t	t
|d t| W d Q R X d S )Nr=   )r%   r'   r   )r    r$   z:All elements of the contingency table must be non-negative)rd   g{Gz?z5All elements of the contingency table must be integerz?At least two elements of the contingency table must be nonzero.r   )r   r   )r   r   )r   r   r/   r0   r   r   r   rU   r?   r7   r8   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   sf   dddg}ddt jg}dddg}ddt j g}t||}t||}t|j|j t|j|j d S )Nr   r$   r   r>   g @r   g      )r   r:   r   r   r   rB   rC   )r   r   r   r   y2rD   r   r!   r!   r"   test_only_ranks_matterK  s    

z"TestSomersD.test_only_ranks_matterc             C   s6   t d}t d}t||}t|jt d d S )Nr(   )r   r1   r   r   r   r   eye)r   r   r   rD   r!   r!   r"   test_contingency_table_returnV  s    

z)TestSomersD.test_contingency_table_returnN)
rG   rH   rI   r   r   r   r   r   r   r   r!   r!   r!   r"   r   i  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.zinput_sample,expected+   r   r(   '   )gXyq@g{2s&Q7?r=   r$   i  r&   )gllgEA]0K?r)   r*   )g*)1%g_  ?r   )g_c1?g= ?   rA   )g5PyQgQ@2?rp   r   )ggJ"?)g_c1gwݝل?r   r%   )g7@g      ?r   )g~tg,?3O?r'   )gr?~gCY7?c             C   s(   t |}|j|j }}t||g| dS )zThe expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-6 :
        ```R
        library(Barnard)
        options(digits=10)
        barnard.test(43, 40, 10, 39, dp=1e-6, pooled=TRUE)
        ```
        N)r   rB   rC   r   )r   input_samplert   rD   rB   rC   r!   r!   r"   test_precisea  s    zTestBarnardExact.test_precise)g7\@gA2?)gXS;gh?)g>!Ɏg6  ?)gSy@?g^F?)g-gXI#?)gaЍgo?)gb]?gFugH	?)g6ҭ@g      ?)gi(	g,?3O?)gNXzgCY7?c             C   s,   t |dd}|j|j }}t||g| dS )zThe expected values have been generated by R, using a resolution
        for the nuisance parameter of 1e-6 :
        ```R
        library(Barnard)
        options(digits=10)
        barnard.test(43, 40, 10, 39, dp=1e-6, pooled=FALSE)
        ```
        F)ZpooledN)r   rB   rC   r   )r   r   rt   rD   rB   rC   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 Q R X d	}t t|d ttd
dd W d Q R X d}t t|d tddgddgg W d Q R X d}t t|d tddgddggd W d Q R X d S )Nz7Number of points `n` must be strictly positive, found 0)rd   r   r$   r   r%   r   )rV   z,The input `table` must be of shape \(2, 2\).r'   z*All values in `table` must be nonnegative.r>   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*znot-correct)r7   r8   r   r   r1   r?   )r   	error_msgr!   r!   r"   test_raises  s    " zTestBarnardExact.test_raises)g      ?r   c             C   s6   t |}|j|j }}t||d  t||d  d S )Nr   r   )r   rB   rC   r   )r   r   rt   rD   rB   rC   r!   r!   r"   test_edge_cases  s    z TestBarnardExact.test_edge_casesg      ?c             C   s6   t |}|j|j }}t||d  t||d  d S )Nr   r   )r   rB   rC   r   )r   r   rt   rD   rB   rC   r!   r!   r"   test_row_or_col_zero  s    z%TestBarnardExact.test_row_or_col_zero)g*)1%gE\/??   i,  )ggQ5g           r.   i  )g&X}>g        rf   rr   rq   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.
        rr   Nr>   )rf   gHz>)r+   )r   r   r   rB   rC   r   )	r   r   rt   rf   Zexpected_statZless_pvalue_expectrD   rB   rC   r!   r!   r"   test_less_greater  s    z"TestBarnardExact.test_less_greaterN)rG   rH   rI   __doc__r   r   r   r   r   r   r   r   r;   r   r   r!   r!   r!   r"   r   ^  sR      	&	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d9S ):TestBoschlooExactz9Some tests to show that boschloo_exact() works correctly.gHz>zinput_sample,expectedr$   r)   r*   )g<vB\?g/??r&   r   r(   )gM?gA>?rp   rA   r   )g_VѶ?g֭?)gu %?gc'?r   r%   )r   r   r   )g      ?g      ?rS   )g+f?gXc}v?   %   )gZыD?ggi]?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)
        ```
        rq   )rf   )r+   N)r   rB   rC   r   ATOL)r   r   rt   rD   rB   rC   r!   r!   r"   	test_less  s    zTestBoschlooExact.test_lessr   r   r   )gk\2?g0,%?)gKv?gN3?)gu %?g'&5?r   )gw@_?g7?)gi{?gɑ)z?)gօa?g1|?r'   )gY<;?gND?)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)
        ```
        rr   )rf   )r+   N)r   rB   rC   r   r   )r   r   rt   rD   rB   rC   r!   r!   r"   test_greater  s    zTestBoschlooExact.test_greater)gk\2?gqQS,5?)g<vB\?gG?/??)gu %?gKE`?)g_VѶ?ghr1ֽ?)gօa?grfb?)g      ?g      ?)g+f?gP:pRv?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)
        ```
        z	two-sided@   )rf   rV   )r+   N)r   rB   rC   r   r   )r   r   rt   rD   rB   rC   r!   r!   r"   test_two_sided1  s    z TestBoschlooExact.test_two_sidedc          	   C   s   d}t t|d tddgddggdd W d Q R X d	}t t|d ttd
dd W d Q R X d}t t|d tddgddgg W d Q R X d}t t|d tddgddggd W d Q R X d S )Nz7Number of points `n` must be strictly positive, found 0)rd   r   r$   r   r%   r   )rV   z,The input `table` must be of shape \(2, 2\).r'   z*All values in `table` must be nonnegative.r>   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*znot-correct)r7   r8   r   r   r1   r?   )r   r   r!   r!   r"   r   N  s    " zTestBoschlooExact.test_raisesc             C   s6   t |}|j|j }}t||d  t||d  d S )Nr   r   )r   rB   rC   r   )r   r   rt   rD   rB   rC   r!   r!   r"   r   h  s    z&TestBoschlooExact.test_row_or_col_zeroN)rG   rH   rI   r   r   r   r   r   r   r   r   r   r   r;   r   r!   r!   r!   r"   r     sR      r   c               @   sb   e Zd Zdd Zdd Zdd Zejddd	d
dg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 d}d}tjt|d t|| W d Q R X tjt|d t|| W d Q R X d}tjt|d tg | W d Q R X tjt|d t|dg W d Q R X d}tjt|d t||d	 W d Q R X d S )
Nr(   )r$   r&   r&   z#The samples must be one-dimensional)rd   z/x and y must contain at least two observations.r   z/method must be either auto, exact or asymptoticZxyz)r   r1   r?   r   r
   r8   r   )r   r   r   msgr!   r!   r"   rX   v  s    
z TestCvm_2samp.test_invalid_inputc             C   sX   dddddg}dddd	g}t ||}t t|t|}t|j|jf|j|jf d S )
Nr$   r   r%   r)   r'   g?gffffff?rS      )r   r   r   r   rB   rC   )r   r   r   r`   ra   r!   r!   r"   test_list_input  s
    
zTestCvm_2samp.test_list_inputc             C   sf   ddddddddd	g	}d
ddddddddddddddg}t ||}t|jddd t|jddd d S )Ngffffff@g @g333333!@gffffff!@g"@g#@g333333$@g333333%@gffffff&@g@g@g@g      @g333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?gMbP?)r+   g
ףp=
?g{Gz?)r   r   rB   rC   )r   r   r   rr!   r!   r"   test_example_conover  s    

z"TestCvm_2samp.test_example_conoverzstatistic, m, n, pval)i  r&   r'   gcj`?)ii  r)   r)   gtE]t?)i@  r%   r'   g88?)i  r'   r)   gXwS?c             C   s   t t|||| d S )N)r   r   )r   rB   r{   rV   Zpvalr!   r!   r"   test_exact_pvalue  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  i@B )r   i r   r   g?)	r   r/   r0   r   rT   r   r   r   rC   )r   r   r   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)   r*   rk   )rh   rj   g{Gz?)r+   )	r   r/   r0   rl   r   r   rB   r   rC   )r   r   r   r`   ra   r!   r!   r"   test_exact_vs_asymptotic  s    z&TestCvm_2samp.test_exact_vs_asymptoticc             C   sv   t d}dddg}t||dd}t||dd}t|j|j t d}t||d	d}t||dd}t|j|j d S )
Nr(   g      ?g@g333333*@rk   )rh   rn   rY   rj   )r   r1   r   r   rC   )r   r   r   r`   ra   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 )Nr   )g        g      ?r%   )r   r1   r   r   rB   rC   )r   r   rD   r!   r!   r"   test_same_input  s
    

zTestCvm_2samp.test_same_inputN)rG   rH   rI   rX   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r   u  s   
	r   )'
__future__r   r   r   	itertoolsr   numpyr   r   Znumpy.testingr   r   r   r	   r
   r7   Zscipy.statsr   r   Zscipy.stats._hypotestsr   r   r   r   r   r   r   Zscipy.stats._mannwhitneyur   r   Zcommon_testsr   r   rJ   rc   r   r   r   r   r!   r!   r!   r"   <module>   s.   $:\   A v  