
    M/PhH                         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 Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*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                 l    t          j        ddgddgddgddgg|                                 d          S )z6expand a 2 by 2 contingency table to observations
       r   )axis)nprepeatravel)tables    j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/tests/test_nonparametric.py_expand_tabler      s<     9q!fq!fq!fq!f5u{{}}1MMMM    c                     t          j        ddgddgg          } t          j        ddgddgg          }t          j        ddgddgg          }t          j        ddgddgg          }t          j        dd	gddgg          }t          j        dd	gd	dgg          }d
}d}d}d}	d}
d}t          | d          }t          |j        |j        gd|gd           t          |d          }t          |j        |j        gd|gd           t          |d          }t          |j        |j        gd|gd           t          |d          }t          |j        |j        gd|	gd           t          |d          }t          |j        |j        gd	|
gd           t          |d          }t          |j        |j        gd	|g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_obs3f_obs4f_obs5f_obs6res1res2res3res4res5res6stats                r   test_mcnemar_exactr=   !   s   XSzB8,--FXbzB8,--FXbzB8,--FXbzB8,--FXbzB8,--FXbzB8,--F DDDDDD6&&&D5Dz1MMMM6&&&D5Dz1MMMM6&&&D5Dz1MMMM6&&&D5Dz1MMMM6&&&D5Dz1MMMM6&&&D5Dz1MMMMMMr   c                     t          j        ddgddgg          } t          j        ddgddgg          }t          j        ddgddgg          }ddg}d	d
g}ddg}t          | d          }t          |j        |j        g|d           t          |d          }t          |j        |j        g|d           t          |d          }t          |j        |j        g|d           ddg}ddg}ddg}t          | dd          }t          |j        |j        g|d           t          |dd          }t          |j        |j        g|d           t          |dd          }t          |j        |j        g|d           d S )Nr   r    r!   r"   r#   r$   g#4@g̴>ga:c?gd:;?g	q@g?Fr(   ư>rtolg	[5@g/x >g
?gޭL?gcT狜a	@gx"[+?r)   
correction)r   r-   r	   r   r.   r/   )r0   r1   r2   r6   r7   r8   r<   ress           r   test_mcnemar_chisquarerE   >   s   XSzB8,--FXbzB8,--FXbzB8,--F &D)$D*%D6'''DT^T[14dCCCC6'''DT^T[14dCCCC6'''DT^T[14dCCCC &D#D$D
&%
8
8
8CS]CJ/DAAAA
&%
8
8
8CS]CJ/DAAAA
&%
8
8
8CS]CJ/DAAAAAAr   c                 8   t           j                            ddd          t          j        t
                    5  t          d          }d d d            n# 1 swxY w Y   t          j        t
                    5  t          fdt          d          D              }d d d            n# 1 swxY w Y   t          ||d	
           t          j        t
                    5  t          dd          }d d d            n# 1 swxY w Y   t          j        t
                    5  t          fdt          d          D              }d d d            n# 1 swxY w Y   t          ||d	
           t          j        t
                    5  t          d          }d d d            n# 1 swxY w Y   t          j        t
                    5  t          fdt          d          D              }d d d            n# 1 swxY w Y   t          ||d	
           d S )N      )   rI      sizeFr(   c                 L    g | ] }t          d d d d |f         d          !S )NFr(   	sbmcnemar.0ittks     r   
<listcomp>z+test_mcnemar_vectorized.<locals>.<listcomp>a   s8    MMMqiAAAqqq!GE:::MMMr   rJ   vIh%<=r@   rB   c                 N    g | ]!}t          d d d d |f         dd          "S )NFrB   rN   rP   s     r   rT   z+test_mcnemar_vectorized.<locals>.<listcomp>g   sJ     ) ) )  AAAqqq!GEeLLL ) ) )r   Tc                 L    g | ] }t          d d d d |f         d          !S )NTr(   rN   rP   s     r   rT   z+test_mcnemar_vectorized.<locals>.<listcomp>n   s8    LLLaiAAAqqq!GD999LLLr   )
r   randomrandintpytestwarnsFutureWarningrO   r   ranger   )reset_randomstaterD   r6   rS   s      @r   test_mcnemar_vectorizedr_   \   s   
)

Abw

/
/C	m	$	$ * *5)))* * * * * * * * * * * * * * *	m	$	$ O OMMMME!HHMMMNO O O O O O O O O O O O O O OCE****	m	$	$ < <5U;;;< < < < < < < < < < < < < < <	m	$	$ * * ) ) ) )$Qxx) ) ) ** * * * * * * * * * * * * * * CE****	m	$	$ ) )4((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	m	$	$ N NLLLL588LLLMN N N N N N N N N N N N N N NCE******sk   AA"A?#B..B25B2$DD
D'#EEEF**F.1F.#G==HHc                     t          j        g d                              dd          } t          | d                                          }t          dddd	          }t          |j        |j        g|d
         |d         gd           t          d| z   d                                          }t          dddd	          }t          |j        |j        g|d
         |d         gd           t          j        g d                              dd          } t          | d                                          }t          dddd	          }t          |j        |j        g|d
         |d         gd           t          d| z   d                                          }t          dddd	          }t          |j        |j        g|d
         |d         gd           d S )N)r   rJ      ra   rI   ra   r   rI   ra   rJ   rG   rJ   r   r   rI   rI   rJ   r   r   r   rG   rG   rG   rG   rG   rG   F)shift_zerosge@g^5?)r'   chi2)r.   r/   
parametersdistrr.   r/   gHz>r@   r   gGl@g?)rI   rI   rJ   r*   rI   rJ   ra   rJ   r*   r*   r*      r   	   r*   rf   r   r   rg      r   r   rh   rg   ra   gy2@gbS3?gv!>g'$-@gG?)	r   r-   reshaper   symmetrydictr   r.   r/   )r   rD   
mcnemar5_1mcnemar5_1b
mcnemar5_2mcnemar5_2bs         r   test_symmetry_bowkerrp   r   sF   H ( ( ( ) ))0A 
 e
/
/
/
8
8
:
:Cu"$ $ $JS]CJ/,j.BC    a%iU
3
3
3
<
<
>
>C)#% % %KS]CJ/ -{8/DE    H ( ( ( ) ))0A 
 e
/
/
/
8
8
:
:C"$ $ $JS]CJ/,j.BC! ! ! ! a%iU
3
3
3
<
<
>
>C)#% % %KS]CJ/ -{8/DE     r   c                     t          j        g dg dg dg dg dg dg dg dg dg dg dg dg          } d}d}t          |           }t          |j        |j        g||g           | d d d df         j        \  }}t          | d d d df                   }t          j        t                    5  t          t          ||d	d	
          |j        |j        g           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   gffffff@gV%}?rI   FrB   )r   r-   r
   r   r.   r/   TrZ   r[   r\   rO   )x	res_qstat
res_pvaluerD   abs         r   test_cochransqr}      s    	)))9999999999999999999999 	 	A IJ
Q--C
3i5LMMM AAAbqbD')CAa
Qqqq"1"uX

C	m	$	$ 9 9Ia%EJJJ ]CJ7	9 	9 	99 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   4.C//C36C3c                      t          j        d                                t                                        dd          } t          |           }t          |j        |j        gddg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 1ra   g%I*@gޞp?r?   r@   )	r   r-   splitintri   r
   r   r.   r/   )datarD   s     r   test_cochransq2r      sp    8  577C! ! ")Q 	 T

CS]CJ/*j1IPTUUUUUUr   c                  \   ddddt           fg} t          j        g d|           }t          j        g dg dg dg d	g d
g dg dg dg          }t          j        g d          }t          j        ||d          }t	          |          }t          |j        |j        gddgd           d S )N)AS1)Br   )Cr   count))Fr   r   r*   )Ur   r   rI   )r   r   r      )r   r   r   ra   )r   r   r   rI   )r   r   r   r*   )r   r   r   ra   )r   r   r   r*   ru   )r   r   r   rv   )r   r   r   rs   rt   )r   r   r   rr   )r*   rI   r   ra   rI   r*   ra   r*   r   g{ @gV-?g-C6
?)atol)r   r   r-   r   r
   r   r.   r/   )dtdtacasesr   r   rD   s         r   test_cochransq3r      s     {K'3	@B
( ( ( ( *,- -C Hiiiiiiiiiiiiiiiii! " "E H55566E9UE1%%D
T

CS]CJ/&&1AMMMMMMr   c           	         t          j        g d          }d}d}d}d}d}d}t          t          j        t          |                              d                    ||gd	           t          t          |d          ||gd	           |d
z
  t           j                            ddt          |                    z   }t          t          |dd          ||gd	           t          t          |dd          ||gd	           t          t          ||	                                d          ||gd	           t          t          |dd          t          |t          j
        |          d          d	           d S )N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   g㥛 0?gXǰ/?gLq/?gZ1	Z?F)rC   r*   r+         ?gg?rK   r   )cutoffrC   meanmedian)r   r-   r   r   	runs_testr   rX   uniformlenr   r   )	r^   rx   
z_twosidedpvalue_twosided	z_greaterpvalue_greaterz_lesspvalue_lessx2s	            r   test_runstestr      s    	AAABBAJOINFK a!2!2e!2!D!DEE#_5qB B B B
 qU;;;#_5qB B B B 
S29$$T3SVV$<<	<Br!FFF#_5qB B B B r&UKKK#_5qB B B Br"''))NNN#_5qB B B B r(uMMM&r")B--ERRR !# # # # # #r   c                  @   g d} g d}|dxx         dz  cc<   t          j        t          j        t          |                     t          j        t          |                    f          }t          | |          }d}t          ||d           t          | |          }t          ||d           t          j        | |f          }t          |          }t          ||d           t          ||                                          }t          ||d           d S )N)g?@gffffff@@gC@$   r%   g     @A@g33333B@)g     A@g;@gL5@g8@gYB@r%   r   r?   )g`?3a?g}jm?r@   )	r   concatenatezerosr   onesr   r   r   r   )	rx   ygroupsrD   r6   r7   xyres_1sres2_1ss	            r   test_runstest_2sampler     s    	/..A***AbEEETMEEE^RXc!ff--rws1vv?@@F
A

C6DCD)))) !QDD#D))))	A		BBFFDt,,,,R++GGV$//////r   c                     g d} g d}d}|| }} t          | |                              d          \  }}t          ||                               d          \  }}t          | |                              d          \  }}t          ||                               d          \  }	}
t          |||           t          ||
|           t          ||k               t          |d|           t          |d	|           t          |d|           t          |	d	|           t          |d
|           t          |d|           d S )Nr   rI   r   r   r   r   r   r   r   r   rI   ra   r   r   rJ   rJ   ra   rJ   r   rI   rJ   r   r   rG   ra      smalleralternativelargersignificant|	&	@|	&	gҏGg?g@-pL?)r   test_prob_superiorr   r   )rx   r   r   u1p1u2p2u3p3u4p4s              r   test_brunnermunzel_one_sidedr     s   222A)))AK aqA !A # ##5#5)#5#L#L B A # ##5#5(#5#K#K B A # ##5#5(#5#K#K B A # ##5#5)#5#L#L B BK8888BK8888B"H.$/1 1 1 1/$/1 1 1 1.$/1 1 1 1/$/1 1 1 1 1$/1 1 1 1/$/1 1 1 1 1 1r   c                     g d} g d}d}|| }} t          | |          }|\  }}|                    d          }t          ||           }|\  }}	|                    d          }
t          ||	|           t          |d|           t          |d|           t          |	d	|           t          |d
         |d           t          |
d
         |d           t          |d         |d           t          |
d         |	d           d S )Nr   r   r   z	two-sidedr   r   r   r   g ҏGw?r   rU   r@   r   )r   r   r   r   )rx   r   r   r6   r   r   t1r7   r   r   t2s              r   test_brunnermunzel_two_sidedr   E  sd   222A)))AK aqA q!$$DFB		 	 [	 	9	9Bq!$$DFB		 	 [	 	9	9BBK8888.$/1 1 1 1/$/1 1 1 11$/1 1 1 1 BqE2E****BqE2E****BqE2E****BqE2E******r   c                  (
   g d} g d}g d}t          j        | |          }t          j        | |          }t          dddddgd	
          }t          ||d          }t	          |j        |j         d           t	          |j        d|j        z
  d           t	          |j        |j        d           |	                                }t	          |d         |j         d           |
                    d          }t	          |dt          j        |j                  d d d         z
  d           |	                    |d                   }	t	          |	d         dd           |	                    |d                   }
t	          |
d         dd           |                    |d         |d         dz            }t	          |j        j        dd           t	          |j        dd           |                    |d         dz  |d                   }t	          |j        j        dd           t	          |j        dd           ||}}t          ||d          }t	          |j        |j        d           |	                                }t	          |d         |j        d           t	          |d         |j        d           t	          |j        |j        d           t	          |j        |j        d           |
                    d          }t	          ||j        d           |	                    |d                   }	t	          |	d         dd           |	                    |d                   }
t	          |
d         dd           |                    |d         |d         dz            }t	          |j        j        dd           t	          |j        dd           |                    |d         dz  |d                   }t	          |j        j        dd           t	          |j        dd           |                                }t'          t)          j        |          t(          j                  }t	          ||j        d           t-          |          }t	          ||j        d           |                    dd          }t	          |dt          j        |j                  d d d         z
  d           d S )Nr   r   r   rI      %         r*      3      r   rf   g?gui@g*l?g+Ӄ?gt:?g+/Kj?)r.   dfr/   ciprobFuse_trU   r@   r   r   g?)alphar   g{Gzt?)valueg?g?g333333?Tgdy=g|=)loc)r   r   r   r   r   r.   prob1r   prob2r   conf_intr-   r   tost_prob_superiorresults_largerr/   results_smallerr   effectsize_normalr   r   normr   confint_lintransf)levelsnewactivex1r   res2_trD   ttr   res_lbres_ubres_tostesdppcci_trs                   r   test_rank_compare_2indep1r   d  s	    F


C   F	63		B	66	"	"B o%**,>?+	- - -F b"E
2
2
2CCMF$4#45AAAACIq6;U;;;;CIv{7777				!	!B BqEF,,59999	D	!	!BBBHVY//"55EBBBB##"Q%#00FF1It%0000##"Q%#00FF1It%0000 %%beRUT\::HH+2EFFFFHOU7777 %%bedlBqE::HH,3UGGGGHOU7777
 B
b"D
1
1
1CCM6#3%@@@@				!	!B BqE6+%8888BqE6=u5555CJE::::CFFIE2222	D	!	!BB	....##"Q%#00FF1It%0000##"Q%#00FF1It%0000 %%beRUT\::HH+2EFFFFHOU7777 %%bedlBqE::HH,3UGGGGHOU7777 


!
!Cuzc222EJ??AAsyu---- 
C	 	 BB	....!!!R((EE1rx	2244R488uEEEEEEr   c                     g d} g d}g d}t          j        | |          }t          j        | |          }dD ]}t          |||          }t          |||          }t	          |j        |j        d           t	          |j        |j        d           t          |                                          }t          |                                          }	||	k    sJ d S )Nr   r   r   )FTr   rU   r@   )	r   r   r   r   r   r   var_probstrsummary)
r   r   r   r   r   r   r7   r6   s1s2s
             r   test_rank_compare_ordr     s     F


C   F	63		B	66	"	"B  "2r777$S&>>>
DJU;;;;t}5AAAA    Rxxxxx r   c                     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           t          |j        |         |j        d           t          |j        |         |j        d           |                    d          }t          |j
        |         |j
        d           t          |j        |         |j        d           |                    dd	          }t          |j
        |         |j
        d           t          |j        |         |j        d           Bd S )Ni r      )2   rJ   rG      r   g?g333333?rJ   g+=r@   )r   rX   seedrY   r   r   r   r   r]   r   r.   r/   r   )	r   r   rD   tsttostrR   res_itst_itost_is	            r   test_rank_compare_vectorizedr    s   INN6			1b'	*	*B			1b'	*	*B
b"
%
%C

 
 
%
%C!!#s++D KKMMM1XX C C#Bqqq!tHbAh77a(%/FFFF
1u|%@@@@	!ek>>>>((--a(%/FFFF
1u|%@@@@))#s33q)6+;%HHHHAEBBBBBC Cr   ),__doc__statsmodels.compat.pythonr   numpyr   numpy.testingr   r   r   r   scipyr   rZ   $statsmodels.stats.contingency_tablesr	   r
   r   statsmodels.sandbox.stats.runsr   r   r   rO   statsmodels.stats.nonparametricr   r   r   r   statsmodels.tools.testingr   r   r=   rE   r_   rp   r}   r   r   r   r   r   r   r   r   r   r   r   <module>r     sa    + * * * * *    9 9 9 9 9 9 9 9 9 9 9 9       & & & & & & & & & &L L L L L L L L L L ? ? ? ? ? ?            - , , , , ,N N NN N N:B B B<+ + +,! ! !H9 9 98V V V(N N N6## ## ##L0 0 00#1 #1 #1L+ + +>]F ]F ]F@  (C C C C Cr   