U
    Ãmœd¿H  ã                   @   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   úc/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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 )Née   éy   é;   é!   éF   éP   é   é<   é
   g�íµ ÷ÆÐ>g:ÏØ—l<Ø?gšÑ�†Sæ¶?grþ&"à`?g¾K©KÆ1b?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‰Ì´þÛÖ>gžûa:cÎè?g¬dÔ:;Ø?g	�ôq†@gñ•þ¶?Fr#   ç�íµ ÷Æ°>©Zrtolg	Äëú[5@gþÞ/™x Ð>g
õôøî?gËÞ­‡ŠLÕ?gcTç‹œa	@g´x�"[+³?©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*   gH¯¼šò×z>r4   gäGˆl@g–ÝÝ ·ë?r%   é   é	   é   gÁ­»yªÃ2@gÉßbêS3¦?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@gÒV%‘}�Ï?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 1éÿÿÿÿrP   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ˆ³Ç°/Å?gÏLÍq°/µ?gZœ1Ì	Zí?F)r6   r%   r&   ç      à?gš™™™™™¹¿gš™™™™™¹?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@@gš™™™™™C@é$   r    g     @A@g33333³B@g     ÀA@gš™™™™™;@gÍÌÌÌÌL5@gÍÌÌÌÌÌ8@gš™™™™YB@r]   r3   )g`?3úa÷–?g}›­˜jmï?r4   )	r   ZconcatenateZzerosrq   Zonesr   r   r   rn   )	rY   ÚyÚgroupsr7   r.   r/   ZxyZres_1sZres2_1sr   r   r   Útest_runstest_2sample  s    "

rw   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°¿Ò�G³g?g@-p¸Lèï?)r   Útest_prob_superiorr   r   )rY   ru   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   rx   z	two-sidedry   r{   r}   r~   g ÀÒ�G³w?r   rG   r4   )r   r   r   r   )rY   ru   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 )%Néþÿÿÿr]   r   r   r;   é   é%   é   é   r%   é   é3   é   rR   gˆÄ­åÏò?g¼ôu°Œ‰i@g·�*lÛÎ?g+ÓƒƒÞ?gÀtÚ:ÖÉã?g+/ŽàKjá?)r)   Údfr*   ÚciÚprobF©Úuse_trG   r4   gš™™™™™©?)Úalphag{®Gázt?)ÚvaluegÍÌÌÌÌÌð?gš™™™™™™?g333333ë?Tg•dyáý¥=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   Ú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   rw   r…   rˆ   r¡   r§   r¬   r   r   r   r   Ú<module>   s2   $&&`