a
    /'a.                     @   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 g d}t g d}t||\}}t|ddd t|ddd d S )N)
gffffffֿgffffff@gGz?\(\?ffffff?gQ@gq=
ףp?gGzgGz׿gp=
#(@)
gffffffg333333ÿgףp=
@g      
@gGz@g)\(@g      @g(\@g(\ @333333!@gHzG.@r   ZdecimalgQ,r?   )nparrayr   r	   selfxywp r%   ?lib/python3.9/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?Z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 )Ni        )r   randomseedaranger   listtupler   )	r    r!   r"   Zw1Z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   r6   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   infr6   r;   r<   r   nanr=   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   r6   reshaper;   r<   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   r2   )	statisticpvalue)r   r6   r   r   )r    r!   r"   resZ
attributesr%   r%   r&   
test_namesH   s    
zTestEppsSingleton.test_namesN)
__name__
__module____qualname__r'   r1   r9   r>   rA   rF   rK   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)   {Gz?皙?      ?g+?-C6?r0   r   r   r    r%   r%   r&   
test_cdf_4S   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,   )rQ   rR   rS   g333333?rT   r0   rU   rV   r%   r%   r&   test_cdf_10Y   s
    zTestCvm.test_cdf_10c                 C   s    t tg ddg ddd d S )N)g}tg?g`?gI5o?gׁsF?  rP   rT   r0   rU   rV   r%   r%   r&   test_cdf_1000_   s
    zTestCvm.test_cdf_1000c                 C   s   t tg dg ddd d S )N)a+e?+?&pn?+MJA?rP   rT   r0   rU   rV   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   rV   r%   r%   r&   test_cdf_supportk   s    zTestCvm.test_cdf_supportc                 C   s$   t tg ddtg ddd d S )N)r[   r\   r]   r^   rB   i'  rT   r0   rU   rV   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@rY         ?)r   r   rV   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   皙?normrc   r   )r   r   onesr   r   rH   r   rI   )r    nrJ   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*   rg         ?r%   )r   r6   rD   r;   r<   r   rE   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)g333333r(   r   g?r)   皙?333333?rg   gZ	%q?gư>r0   gEж?)r   rl   g!O!W*?gz"W`?)	r   r(   r*   ffffff?gQ?      ?      @exponge.?gnz\(r?)r   r   rH   rI   )r    rJ   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*   )rp   ffffff?ru   beta)
r   r6   r   r   ru   cdfr   rH   rI   rx   )r    r!   argsr1r2r%   r%   r&   test_callable_cdf   s    
zTestCvm.test_callable_cdfN)rL   rM   rN   rW   rX   rZ   r_   ra   rb   rd   rj   rm   rv   r}   r%   r%   r%   r&   rO   O   s   	rO   c                   @   s,  e Z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 d.g d/g d0d1Zg d2g d3g d4g d5g d6g d7d8Zd9d: Zd;d< Zd=d> Zddd	d?gddd	d@gddd	dAgddd	d?gddd	d@gddd	d?ggZej	
dBedCdD ZdEdF Zej	
dGddgdHdI ZdJdK Zg d+dLdMdNdOejdLdPdQdRdRdSgdTdUfg d+dLdMdNdOejejdPdQdRdRdSgdVdWfdQdPejdRgdLdMdNdOejdLdPdQdRdRdSgdXdYfdQdPejdRgdLdMdNdOejejdPdQdRdRdSgdZd[fdQejejdRgdLdMdNdOejejdPdQdRdRdSgd\d]fgZej	
d^ed_d` Zg dag dbg dcg ddg deg dfg dgg dhg dig	Zej	
djedkdl Z dmdn Z!dodp Z"g d&dqdrgddsgg d&dqdrgddsgg d&dqdrgddtgg d&dPgddugg d&dPgddugg d&dPgddvgdQdPgdQdPgddwgdQdPgdQdPgddwgdQdPgdQdPgddxgg	Z#ej	
g dye#dzd{ Z$d|S )}TestMannWhitneyUc                 C   s  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t jdg| W d    n1 s0    Y  ttdd t||d	d
 W d    n1 s0    Y  ttdd t||d	d W d    n1 s00    Y  ttdd t||dd W d    n1 sl0    Y  ttdd t||d	d W d    n1 s0    Y  d S )Nr   r(   r   r)   `x` and `y` must be of nonzeromatch`x` and `y` must not containz`use_continuity` must be oneZekki)use_continuityz`alternative` must be one ofalternativez`axis` must be an integerrl   axisz`method` must be one ofmethod)r   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sJ |j|jksJ 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sJ t j|d }t j|d }|d |d< t||}t||dd}t||dd}|j|jksJ |j|jksJ d S )Nr   r.   
asymptoticr   exactr   )r   r4   r5   randr   rI   )r    ri   r!   r"   autor   r   r%   r%   r&   	test_auto   sH    




zTestMannWhitneyU.test_auto)gm9Aj@g+H3[@gi>s@)g#hA{@glz@gcDf@gǳ*h@gZA@gI9^YQa@g`@g՞p@g:q@g&@gZ|@g`r@gMc3g@	two-sidedr   r   r   )   
+?less)r   
+?greater)r   缌%c?r   )r   g9:?)r   g9:?)r   g*::?)kwdsexpectedc                 C   s$   t | j| jfi |}t|| d S N)r   r!   r"   r   r    r   r   rJ   r%   r%   r&   
test_basic  s    zTestMannWhitneyU.test_basicT)r   r   )   r   )r   r   )r   r   F)r   gl,KNh?)r   giژ?)r   gl,KNh?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   rQ   )r   r   r   r   r   rC   r   )r   r   )r,   	         !@r.   rt   r-   r+   )r   g]U?g[?gi\?gZX<_?gx.?g 
?)r   r   r   r   rH   r   rI   )	r    r!   Zy0ZdyZdy2r"   rJ   Z
U_expectedZ
p_expectedr%   r%   r&   test_tie_correct9  s    *z!TestMannWhitneyU.test_tie_correct)g      ?rS   g      ?)rn   皙?皙?ro   )rR   rn   r   r   rS   g?r   r(   r   )r   r   ro   )gx&?g/$?gJ+?r   ro   )y&1?v/?gv/?r   gjt?~jt?ʡE?)	gy&1?gV-?r   rn   gS?gv?gʡE?g'1Z?gm?r:   )gK7A`?gZd;O?rS   gMbX?)Mb?RQ?RQ?M?r   r   )	g;On?;On?V-?g      ?gJ+?r   gx&?rS   gCl?)Mb?Mb?Mb?gy&1?r   M?g|?5^?gn?g\(\?!rh?K7?)Mbp?r   r   r   ~jt?g333333?g"~j?ףp=
?gzG?K7?gGz?gl?rS   gI+?r   )r   r   g1Zd?r   )r   r   r   1Zd?g%C?r   r   )
g~jt?g~jt?r   gsh|??gS㥛?r   r   g+?r   r   )g{Gzt?rQ   g~jt?gL7A`?r   gjt?gPn?gI+?gX9v?gQ?gMb?gsh|??gK7A`?)Mb`?r   g;On?gQ?g9v?gˡE?gT㥛 ?gbX9ȶ?grh|?gQ?r   gx&?gv/?gMbX?g(\?gQ?)r/   r   r   r   g9v?g/$?r   r   gL7A`?g
ףp=
?gQ?r   gK7?g`"?g7A`?r   gV-?gjt?gˡE?)r   r(   r   r)   r*   r+   c           
   	   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mri   r/   r0   r   rC   )pn3pn4pm5pm6itemsr   r6   lenr   r   ry   Zsfpmf)
r    Zp_tablesri   tabler   r$   uZu2r   Zpmf2r%   r%   r&   test_exact_distributioni  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sJ t |j|j dk sJ d S )	Nr   r*   r   r   r   rQ   (   r/   )r   r4   r5   r   r   rH   absrI   r    r!   r"   Z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   rl         @r   r   r   r   rS   r   )r   r   )r   r   rI   )r    Zres_lZres_grJ   r%   r%   r&   test_exact_U_equals_mean  s    z)TestMannWhitneyU.test_exact_U_equals_meanr   r   )r   rS   )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   )rS   r   r   F)r   r   rS   )r   r   r   r@   rV   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sJ t 
|||f }t 
|||f }|jd d |ksJ |jd d |ksJ 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   rn   )r   r   )r+   r   r.   rC   )N.c                 S   s   g | ]}t |qS r%   )range).0ir%   r%   r&   
<listcomp>      z8TestMannWhitneyU.test_gh_12837_11113.<locals>.<listcomp>r   )r   r4   r5   r   r   rI   shaperH   ZmoveaxisndimZbroadcast_tozerosr   Ztestingr   )r    r   r   r   ri   r!   r"   rJ   r   Z
statisticsZpvaluesindicesZxiZyiZ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dd t || W d    n1 s0    Y  d S )Nr:   )r   r+   r-   r.   r   r   r(   r   r)   r)   r*   r)   r   r   )	r   r   r?   r   rH   rI   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?r   g}$k\?g     1@g!˛G*?r   g,s?g     8@gFHQ?)r!   r"   rH   rI   c                 C   s2   t ||dd}t|j|dd t|j|dd d S )Nr   r   -q=r0   )r   r   rH   rI   )r    r!   r"   rH   rI   rJ   r%   r%   r&   test_gh_11355b  s    zTestMannWhitneyU.test_gh_11355b)Tr   r   g&?)Tr   r   gO?)Tr   r   gO?)Fr   r   g9@VN!x?)Fr   r   g9M>?)Fr   r   g9M>?)Tr   r   g?UV?)Tr   r   gߺVJH?)Tr   r   gVJH?)r   r   r   
pvalue_expc           	      C   s:   d}d}d}t |||||d}t|j| t|j| d S )N#   )
rf   g(\?g=
ףp=?gp=
ף?g333333?gGz?g(\?g=
ףp=?r   g\(\?)gffffff?g)\(?rs   gGz?g\(\?r   r   r   )r   r   rH   r   rI   )	r    r   r   r   r   Zstatistic_expr!   r"   rJ   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   rV   r%   r%   r&   test_gh_6897D  s    zTestMannWhitneyU.test_gh_6897c                 C   sv   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    n1 sh0    Y  d S )Nr   r   )r   r   r@   r;   r<   r   )r    abr%   r%   r&   test_gh_4067I  s    zTestMannWhitneyU.test_gh_4067rl   r   )r   ga׀}?)r   rc   )rl   g?h?)rl   r   )r(   g5&#\?)r(   r   )r!   r"   r   r   c                 C   s$   t ||d|dd}t||dd d S )NTr   r   r   )Zrtol)r   r   )r    r!   r"   r   r   rJ   r%   r%   r&   test_gh_2118`  s    
zTestMannWhitneyU.test_gh_2118N)%rL   rM   rN   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   r?   Zcases_11355r   Z
cases_9184r   r   r   Z
cases_2118r   r%   r%   r%   r&   r~      s  5




+



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S )TestSomersDc                 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)           rc   r   V瞯<r0   r   )	r   r*   r(   r   r   r+   r)   r-   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,   rc   r   )
r   r(   r   r   r)   r+   r*   r-   r.   r   )gs'}'?r   rC   )g      r   )
r   r-   r.   r+   r*   r   r)   r(   r   r   )g}'}'r   )re   r(   r   re   r(   )r   r)   r-   r   r   )      g.ʂ?)r(   r(   r(   )r(   r   r(   g      $@g      4@)statssomersdr   rH   rI   r   r6   r   r@   r;   r<   )r    r!   r"   r   rJ   Zx1x2r%   r%   r&   test_like_kendalltauk  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(   gCE]t?g^_?gO((Ƿ?r   r0   rT   )r   r(   )r(   r   )r   r   r   rH   rI   r   r   r   )r    r!   r"   Zd_crZd_rcr$   rJ   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   r2   )gM&w?rc   gtE]t)r   r   Tr   r   r   rH   )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 )NrB   r)   r+   r   r$   r(   r   r   gayr   r0   gPj$?)r   prodr4   r5   r   multinomialrvsrh   rD   r   insertr   r   rH   rI   )r    Nr   sizesrJ   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   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 s0    Y  d
}t	t
|d tg g W d    n1 s0    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 s0    Y  d S )NrB   r   r   r   r(   z:All elements of the contingency table must be non-negativer   rQ   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   r4   r5   r   r   r   rh   rD   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   rC   g @)r   r(   r   r   r   )r   r?   r   r   r   rH   rI   )r    r!   r   r"   Zy2rJ   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   r6   r   r   r   r   Zeye)r    r!   r"   rJ   r%   r%   r&   test_contingency_table_returnV  s    

z)TestSomersD.test_contingency_table_returnN)
rL   rM   rN   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.input_sample,expected+   r   r,   '   )gXyq@g{2s&Q7?rB   r(   rY   r*   )gllgEA]0K?r-   r.   )*)1%g_  ?r   )g_c1?g= ?   rG   )g5PyQgQ@2?r   r   )ggJ"?)g_c1gwݝل?r   r)   )g7@g      ?r   )g~t,?3O?r+   )gr?~CY7?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   rH   rI   r   r    input_sampler   rJ   rH   rI   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(	r  )gNXzr  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pooledNr  r  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 s0    Y  d}t t|d$ tddgddgg W d    n1 s0    Y  d}t t|d& tddgddggd W d    n1 s0    Y  d S )N7Number of points `n` must be strictly positive, found 0r   r   r(   r   r)   r   ri   ,The input `table` must be of shape \(2, 2\).r+   *All values in `table` must be nonnegative.rC   zI`alternative` should be one of {'two-sided', 'less', 'greater'}, found .*not-correct)r;   r<   r   r   r6   rD   r    Z	error_msgr%   r%   r&   test_raises  s    642zTestBarnardExact.test_raisesr   c                 C   s6   t |}|j|j }}t||d  t||d  d S Nr   r   r   rH   rI   r   r  r%   r%   r&   test_edge_cases  s    z TestBarnardExact.test_edge_casesrc   c                 C   s6   t |}|j|j }}t||d  t||d  d S r  r   r  r%   r%   r&   test_row_or_col_zero  s    z%TestBarnardExact.test_row_or_col_zero)r  gE\/??   i,  )ggQ5r      r3   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   NrC   r   Hz>r0   )r   r   r   rH   rI   r   )	r    r  r   r   Zexpected_statZless_pvalue_expectrJ   rH   rI   r%   r%   r&   test_less_greater  s    z"TestBarnardExact.test_less_greaterN)rL   rM   rN   __doc__r   r   r   r  r  r  r!  r   r@   r"  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d9S ):TestBoschlooExactz9Some tests to show that boschloo_exact() works correctly.r%  r  r(   r-   r.   )<vB\?g/??r*   r   r,   )gM?gA>?r   rG   r   )_VѶ?g֭?)u %?gc'?r   r)   )r   r   r   )rS   g      ?re   )+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)
        ```
        r   r   r0   Nr   rH   rI   r   ATOLr  r%   r%   r&   	test_less  s    zTestBoschlooExact.test_lessr  r   r  )k\2?g0,%?)gKv?gN3?)r+  g'&5?r  )gw@_?g7?)gi{?gɑ)z?)օa?g1|?r+   )gY<;?gND?)ge?gG`?c                 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   r0   Nr/  r  r%   r%   r&   test_greater  s    zTestBoschlooExact.test_greater)r2  gqQS,5?)r)  gG?/??)r+  gKE`?)r*  ghr1ֽ?)r3  grfb?)rS   g      ?)r,  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)
        ```
        r   @   )r   ri   r0   Nr/  r  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    n1 s>0    Y  d	}t t|d& ttd
dd W d    n1 s0    Y  d}t t|d$ tddgddgg W d    n1 s0    Y  d}t t|d& tddgddggd W d    n1 s0    Y  d S )Nr  r   r   r(   r   r)   r   r  r  r+   r  rC   zK`alternative` should be one of \('two-sided', 'less', 'greater'\), found .*r  )r;   r<   r   r   r6   rD   r  r%   r%   r&   r  N  s    642zTestBoschlooExact.test_raisesc                 C   s6   t |}|j|j }}t||d  t||d  d S r  )r   rH   rI   r   r  r%   r%   r&   r"  h  s    z&TestBoschlooExact.test_row_or_col_zeroN)rL   rM   rN   r'  r0  r   r   r   r1  r4  r6  r  r   r@   r"  r%   r%   r%   r&   r(    sj   


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   sH  t dd}t d}d}tjt|d t|| W d    n1 sL0    Y  tjt|d t|| W d    n1 s0    Y  d}tjt|d tg | W d    n1 s0    Y  tjt|d t|dg W d    n1 s0    Y  d}tjt|d t||d	 W d    n1 s:0    Y  d S )
Nr,   rk   r*   z#The samples must be one-dimensionalr   z/x and y must contain at least two observations.r   z/method must be either auto, exact or asymptoticZxyz)r   r6   rD   r   r
   r<   r   )r    r!   r"   msgr%   r%   r&   rm   v  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   rw   re      )r   r   r   r   rH   rI   r    r!   r"   r{   r|   r%   r%   r&   test_list_input  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"@g#@g333333$@g333333%@gffffff&@)g@g@g@g      @g333333@gffffff @g333333"@g#@g%@g&@g      '@g(@g      )@g*@g333333-@gS㥛?r/   r0   g
ףp=
?rQ   )r   r   rH   rI   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 r   )r   r   )r    rH   r   ri   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   rn   )	r   r4   r5   r   rg   r   r   r   rI   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.   r   r   r   rQ   r0   )	r   r4   r5   r   r   r   rH   r   rI   r:  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 )Nr,   )rS   g@g333333*@r   r   r   rq   r   )r   r6   r   r   rI   r:  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  r   r)   )r   r6   r   r   rH   rI   )r    r!   rJ   r%   r%   r&   test_same_input  s
    

zTestCvm_2samp.test_same_inputN)rL   rM   rN   rm   r;  r>  r   r   r   r?  r@  rA  rB  rC  r%   r%   r%   r&   r7  u  s   

	r7  )'Z
__future__r   r   r   	itertoolsr   Znumpyr   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   r   rO   r~   r   r  r(  r7  r%   r%   r%   r&   <module>   s.   $:\   A v  