U
    KvfH                     @   s  d Z ddlmZ ddlZddlmZmZmZm	Z	 ddl
mZ ddlZddlmZmZmZ ddlmZmZmZ ddlmZ dd	lmZmZmZmZ dd
lm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!d" Z(d#d$ Z)d%d& Z*d'd( Z+dS ))zr

Created on Fri Jul 05 14:05:24 2013
Aug 15 2020: add brunnermunzel, rank_compare_2indep

Author: Josef Perktold
    )lzipN)assert_allcloseassert_almost_equalassert_approx_equalassert_)stats)mcnemar
cochrans_qSquareTable)Runsrunstest_1samprunstest_2samp)r   )rank_compare_2indeprank_compare_2ordinalprob_larger_continuouscohensd2problarger)Holderc                 C   s,   t jddgddgddgddgg|  ddS )z6expand a 2 by 2 contingency table to observations
       r   )Zaxis)nprepeatZravel)table r   N/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/stats/tests/test_nonparametric.py_expand_table   s    r   c                  C   s  t ddgddgg} t ddgddgg}t ddgddgg}t ddgddgg}t dd	gddgg}t dd	gd	dgg}d
}d}d}d}	d}
d}t| dd}t|j|jgd|gdd t|dd}t|j|jgd|gdd t|dd}t|j|jgd|gdd t|dd}t|j|jgd|	gdd t|dd}t|j|jgd	|
gdd t|dd}t|j|jgd	|gdd d S )Ne   y   ;   !   F   P      <   
   g>g:ؗl<?gяS?gr&"`?gKK1b?g      ?Texact   decimal)r   arrayr   r   	statisticpvalue)f_obs1f_obs2f_obs3Zf_obs4Zf_obs5Zf_obs6res1res2res3Zres4Zres5Zres6statr   r   r   test_mcnemar_exact"   s0    r2   c                  C   sH  t ddgddgg} t ddgddgg}t ddgddgg}ddg}d	d
g}ddg}t| dd}t|j|jg|dd t|dd}t|j|jg|dd t|dd}t|j|jg|dd ddg}ddg}ddg}t| ddd}t|j|jg|dd t|ddd}t|j|jg|dd t|ddd}t|j|jg|dd d S )Nr   r   r   r   r   r   g#4@g̴>ga:c?gd:;?g	q@g?Fr#   ư>Zrtolg	[5@g/x >g
?gޭL?gcT狜a	@gx"[+?r$   
correction)r   r(   r   r   r)   r*   )r+   r,   r-   r.   r/   r0   r1   resr   r   r   test_mcnemar_chisquare?   s*    r8   c              	      s8  t jjdddd tt t dd}W 5 Q R X tt  t fddtd	D  }W 5 Q R X t	||d
d tt t ddd}W 5 Q R X tt  t fddtd	D  }W 5 Q R X t	||d
d tt t dd}W 5 Q R X tt  t fddtd	D  }W 5 Q R X t	||d
d d S )N      )   r;      sizeFr#   c                    s*   g | ]"}t  d d d d |f ddqS )NFr#   	sbmcnemar.0ittkr   r   
<listcomp>b   s     z+test_mcnemar_vectorized.<locals>.<listcomp>r<   vIh%<=r4   r5   c                    s,   g | ]$}t  d d d d |f dddqS )NFr5   r?   rA   rD   r   r   rF   h   s   Tc                    s*   g | ]"}t  d d d d |f ddqS )NTr#   r?   rA   rD   r   r   rF   o   s     )
r   randomrandintpytestwarnsFutureWarningr@   r   ranger   )reset_randomstater7   r.   r   rD   r   test_mcnemar_vectorized]   s$    $$rO   c                  C   s  t d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} t| dd }td	d
ddd}t|j|jg|d |d gdd td|  dd }tddddd}t|j|jg|d |d gdd t d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} t| dd }tddddd}t|j|jg|d |d gdd td|  dd }tddddd}t|j|jg|d |d gdd d S )Nr   r<      r;   r   r9   F)Zshift_zerosge@g^5?)r"   Zchi2)r)   r*   
parametersZdistrr)   r*   gHz>r4   gGl@g?r%      	      gy2@gbS3?gv!>g'$-@gG?)	r   r(   reshaper
   Zsymmetrydictr   r)   r*   )r   r7   Z
mcnemar5_1Zmcnemar5_1bZ
mcnemar5_2Zmcnemar5_2br   r   r   test_symmetry_bowkers   sl    *      *      rW   c                  C   s   t dddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgg} d}d}t| }t|j|jg||g | d d d df j\}}t| d d d df }tt	$ tt
||ddd|j|jg W 5 Q R X d S )Nr   r   gffffff@gV%}?r;   Fr5   )r   r(   r	   r   r)   r*   TrJ   rK   rL   r@   )xZ	res_qstatZ
res_pvaluer7   abr   r   r   test_cochransq   s.    
r\   c                  C   s>   t d tdd} t| }t|j|jgddgdd d S )Nz
        0 0 0 1
        0 0 0 1
        0 0 0 1
        1 1 1 1
        1 0 0 1
        0 1 0 1
        1 0 0 1
        0 0 0 1
        0 1 0 0
        0 0 0 0
        1 0 0 1
        0 0 1 1rP   g%I*@gޞp?r3   r4   )	r   r(   splitintrU   r	   r   r)   r*   )datar7   r   r   r   test_cochransq2   s    
 ra   c                  C   s   ddddt fg} tddddd	d
ddg| }tdddgdddgdddgdddgdddgdddgdddgdddgg}tddddddddg}t||d}t|}t|j|jgddgdd d S )N)AS1)Brc   )Crc   count)Frg   rg   r%   )Urg   rg   r;   )rg   rg   rh      )rh   rg   rh   rP   )rg   rh   rg   r;   )rh   rh   rg   r%   )rg   rh   rh   rP   )rh   rh   rh   r%   r   r   r%   r;   ri   rP   g{ @gV-?g-C6
?)Zatol)r_   r   r(   r   r	   r   r)   r*   )dtZdtaZcasesrf   r`   r7   r   r   r   test_cochransq3   s2    	rk   c           	      C   s"  t ddddddddddddddddg}d}d}d}d}d}d}tt t|jdd||gd	d
 tt|dd||gd	d
 |d t jjddt|d }tt|ddd||gd	d
 tt|ddd||gd	d
 tt||	 dd||gd	d
 tt|dddt|t 
|ddd	d
 d S )Nr   r   g㥛 0?gXǰ/?gLq/?gZ1	Z?F)r6   r%   r&         ?gg?r=   )cutoffr6   meanmedian)r   r(   r   r   Z	runs_testr   rH   uniformlenrn   ro   )	rN   rY   Z
z_twosidedZpvalue_twosidedZ	z_greaterZpvalue_greaterZz_lessZpvalue_lessx2r   r   r   test_runstest   s@    *     rs   c            	      C   s   dddddddg} dd	d
dddg}|d  d7  < t t t| t t|f}t| |}d}t||dd t| |}t||dd t | |f}t|}t||dd t|| }t||dd d S )Ng?@gffffff@@gC@$   r    g     @A@g33333B@g     A@g;@gL5@g8@gYB@r]   r3   )g`?3a?g}jm?r4   )	r   Zconcatenatezerosrq   Zonesr   r   r   rn   )	rY   ygroupsr7   r.   r/   ZxyZres_1sZres2_1sr   r   r   test_runstest_2sample  s    "

rx   c                  C   s   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g}d}||  } }t | |jdd\}}t || jd	d\}}t | |jd	d\}}t || jdd\}	}
t|||d
 t||
|d
 t||k t|d|d
 t|d|d
 t|d|d
 t|	d|d
 t|d|d
 t|d|d
 d S )Nr   r;   rP   r<   r9      ZsmalleralternativeZlargersignificant|	&	@|	&	gҏGg?g@-pL?)r   test_prob_superiorr   r   )rY   rv   r}   u1p1u2p2u3Zp3Zu4Zp4r   r   r   test_brunnermunzel_one_sided   sJ     








r   c                  C   s  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g}d}||  } }t | |}|\}}|jdd}t || }|\}}	|jdd}
t||	|d	 t|d
|d	 t|d|d	 t|	d|d	 t|d |dd t|
d |dd t|d |dd t|
d |	dd d S )Nr   r;   rP   r<   r9   ry   z	two-sidedrz   r|   r~   r   g ҏGw?r   rG   r4   )r   r   r   r   )rY   rv   r}   r.   r   r   t1r/   r   r   t2r   r   r   test_brunnermunzel_two_sidedF  s0     


r   c                  C   sr  dddddg} dddd	d
g}dddddg}t | |}t | |}tdddddgdd}t||dd}t|j|j dd t|jd|j dd t|j|jdd |	 }t|d |j dd |j
dd}t|dt |jd d d  dd |j	|d d}	t|	d ddd |j	|d d}
t|
d ddd ||d |d d }t|jjddd t|jddd ||d d  |d }t|jjddd t|jddd || }}t||d!d}t|j|jdd |	 }t|d |jdd t|d |jdd t|j|jdd t|j|jdd |j
dd}t||jd"d |j	|d d}	t|	d dd"d |j	|d d}
t|
d dd"d ||d |d d }t|jjdd#d t|jdd#d ||d d  |d }t|jjdd#d t|jdd#d | }ttj|d$tj}t||jdd t|}t||jdd |dd}t|dt |jd d d  dd d S )%Nr]   r   r   r;      %         r%      3      rR   g?gui@g*l?g+Ӄ?gt:?g+/Kj?)r)   dfr*   ciprobFuse_trG   r4   g?)alphag{Gzt?)valueg?g?g333333?Tgdy=g|=)loc)r   r   r   r   r   r)   prob1r   Zprob2r   Zconf_intr(   r   tost_prob_superiorZresults_largerr*   Zresults_smallerr   Zeffectsize_normalr   r   Znormr   Zconfint_lintransf)levelsnewactivex1rr   Zres2_tr7   ttr   Zres_lbZres_ubZres_tostZesdpZpcZci_trr   r   r   test_rank_compare_2indep1e  sp    $
r   c            
      C   s   dddddg} dddd	d
g}dddddg}t | |}t | |}dD ]h}t|||d}t|||d}t|j|jdd t|j|jdd t| }t| }	||	ksFt	qFd S )Nr   r]   r   r   r;   r   r   r   r   r%   r   r   r   rR   )FTr   rG   r4   )
r   r   r   r   r   r   Zvar_probstrsummaryAssertionError)
r   r   r   r   rr   r   r/   r.   s1s2r   r   r   test_rank_compare_ord  s    r   c            	      C   s8  t jd t jddd} t jddd}t| |}|d}|dd	}|  td
D ]}t| d d |f |d d |f }t	|j
| |j
dd t	|j| |jdd t	|j| |jdd |d}t	|j
| |j
dd t	|j| |jdd |dd	}t	|j
| |j
dd t	|j| |jdd q\d S )Ni r      )2   r<   r9      rl   g?g333333?r<   g+=r4   )r   rH   seedrI   r   r   r   r   rM   r   r)   r*   r   )	r   rr   r7   ZtstZtostrC   Zres_iZtst_iZtost_ir   r   r   test_rank_compare_vectorized  s$    

"
r   ),__doc__Zstatsmodels.compat.pythonr   Znumpyr   Znumpy.testingr   r   r   r   Zscipyr   rJ   Z$statsmodels.stats.contingency_tablesr   r	   r
   Zstatsmodels.sandbox.stats.runsr   r   r   r@   Zstatsmodels.stats.nonparametricr   r   r   r   Zstatsmodels.tools.testingr   r   r2   r8   rO   rW   r\   ra   rk   rs   rx   r   r   r   r   r   r   r   r   r   <module>   s2   $&&`