
    !gH                         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+y)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                 f    t        j                  ddgddgddgddgg| j                         d      S )z6expand a 2 by 2 contingency table to observations
       r   )axis)nprepeatravel)tables    g/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/stats/tests/test_nonparametric.py_expand_tabler      s6     99q!fq!fq!fq!f5u{{}1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       y )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   XXSzB8,-FXXbzB8,-FXXbzB8,-FXXbzB8,-FXXbzB8,-FXXbzB8,-F DDDDDD6&D5Dz1M6&D5Dz1M6&D5Dz1M6&D5Dz1M6&D5Dz1M6&D5Dz1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       y )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   >   sw   XXSzB8,-FXXbzB8,-FXXbzB8,-F &D)$D*%D6'DT^^T[[14dC6'DT^^T[[14dC6'DT^^T[[14dC &D#D$D
&%
8CS]]CJJ/DA
&%
8CS]]CJJ/DA
&%
8CS]]CJJ/DAr   c                 r   t         j                  j                  ddd      }t        j                  t
              5  t        |d      }d d d        t        j                  t
              5  t        t        d      D cg c]  }t        |d d d d |f   d       c} }d d d        t        d	       t        j                  t
              5  t        |dd
      }d d d        t        j                  t
              5  t        t        d      D cg c]  }t        |d d d d |f   dd
       c} }d d d        t        ||d	       t        j                  t
              5  t        |d      }d d d        t        j                  t
              5  t        t        d      D cg c]  }t        |d d d d |f   d       c} }d d d        t        ||d	       y # 1 sw Y   xY wc c}w # 1 sw Y   SxY w# 1 sw Y   "xY wc c}w # 1 sw Y   xY w# 1 sw Y   xY wc c}w # 1 sw Y   fxY w)N      )   rI      sizeFr(   rJ   vIh%<=r@   rB   T)
r   randomrandintpytestwarnsFutureWarning	sbmcnemarr   ranger   )reset_randomstatettkrD   ir6   s        r   test_mcnemar_vectorizedrX   \   s   
))

Abw

/C	m	$ *5)*	m	$ OE!HMqiAq!GE:MNOCE*	m	$ <5U;<	m	$ *$Qx)  Aq!GEeL ) ** CE*	m	$ )4()	m	$ N58LaiAq!GD9LMNCE*#* * NO O< <)* *
) ) MN Ns}   G+G1>G,
G1G>?HH
1H$HH-&H(
H-G),G11G;>HHHH%(H--H6c                  \   t        j                  g d      j                  dd      } t        | d      j	                         }t        dddd	      }t        |j                  |j                  g|d
   |d   gd       t        d| z   d      j	                         }t        dddd	      }t        |j                  |j                  g|d
   |d   gd       t        j                  g d      j                  dd      } t        | d      j	                         }t        dddd	      }t        |j                  |j                  g|d
   |d   gd       t        d| z   d      j	                         }t        dddd	      }t        |j                  |j                  g|d
   |d   gd       y )N)r   rJ      rZ   rI   rZ   r   rI   rZ   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   rZ   rJ   r*   r*   r*      r   	   r*   r_   r   r   r`      r   r   ra   r`   rZ   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_bowkerri   r   s   HH ( ))0A 
 e
/
8
8
:Cu"$JS]]CJJ/,j.BC a%iU
3
<
<
>C)#%KS]]CJJ/ -{8/DE HH ( ))0A 
 e
/
8
8
:C"$JS]]CJJ/,j.BC! a%iU
3
<
<
>C)#%KS]]CJJ/ -{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        y # 1 sw Y   y xY w)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/   TrP   rQ   rR   rS   )x	res_qstat
res_pvaluerD   abs         r   test_cochransqrv      s     	) 	A IJ
Q-C

3i5LM AbqbD'))CAa
Qq"1"uX
C	m	$ 9Ia%EJ ]]CJJ7	99 9 9s   20C++C4c                      t        j                  dj                         t              j	                  dd      } t        |       }t        |j                  |j                  gddgd       y )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 1rZ   g%I*@gޞp?r?   r@   )	r   r-   splitintrb   r
   r   r.   r/   )datarD   s     r   test_cochransq2r|      s[    88  57C! ")Q 	 T
CS]]CJJ/*j1IPTUr   c                  d   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       y )N)AS1)Br   )Cr   count))Fr   r   r*   )Ur   r   rI   )r   r   r      )r   r   r   rZ   )r   r   r   rI   )r   r   r   r*   )r   r   r   rZ   )r   r   r   r*   rn   )r   r   r   ro   )r   r   r   rl   rm   )r   r   r   rk   )r*   rI   r   rZ   rI   r*   rZ   r*   r   g{ @gV-?g-C6
?)atol)rz   r   r-   r   r
   r   r.   r/   )dtdtacasesr   r{   rD   s         r   test_cochransq3r      s     {K'3	@B
(( ( *,-C HHi! "E HH56E99UE1%D
T
CS]]CJJ/&&1AMr   c           	         t        j                  g d      }d}d}d}d}d}d}t        t        j                  t        |      j	                  d            ||gd	       t        t        |d      ||gd	       |d
z
  t         j                  j                  ddt        |            z   }t        t        |dd      ||gd	       t        t        |dd      ||gd	       t        t        ||j                         d      ||gd	       t        t        |dd      t        |t        j                  |      d      d	       y )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   rN   uniformlenr   r   )	rU   rq   
z_twosidedpvalue_twosided	z_greaterpvalue_greaterz_lesspvalue_lessx2s	            r   test_runstestr      s9    	ABAJOINFK a!2!2e!2!DE#_5qB
 qU;#_5qB 
S299$$T3SV$<	<Br!F#_5qB r&UK#_5qBr"'')N#_5qB r(uM&r"))B-E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        ||j                               }t        ||d       y )N)g?@gffffff@@gC@$   r%   g     @A@g33333B@)g     A@g;@gL5@g8@gYB@r%   rx   r?   )g`?3a?g}jm?r@   )	r   concatenatezerosr   onesr   r   r   r   )	rq   ygroupsrD   r6   r7   xyres_1sres2_1ss	            r   test_runstest_2sampler     s     	/A*AbETME^^RXXc!f-rwws1v?@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        | |      j                  d      \  }}t        ||       j                  d      \  }}t        | |      j                  d      \  }}t        ||       j                  d      \  }	}
t        |||       t        ||
|       t        ||k7         t        |d|       t        |d	|       t        |d|       t        |	d	|       t        |d
|       t        |d|       y )Nr   rI   r   r   r   r   r   r   r   r   rI   rZ   r   r   rJ   rJ   rZ   rJ   r   rI   rJ   r   r   rG   rZ      smalleralternativelargersignificant|	&	@|	&	gҏGg?g@-pL?)r   test_prob_superiorr   r   )rq   r   r   u1p1u2p2u3p3u4p4s              r   test_brunnermunzel_one_sidedr     s2   2A)AK aqA !A ##5#5)#5#L B A ##5#5(#5#K B A ##5#5(#5#K B A ##5#5)#5#L B BK8BK8B"H.$/1/$/1.$/1/$/1 1$/1/$/1r   c                     g d} g d}d}|| }} t        | |      }|\  }}|j                  d      }t        ||       }|\  }}	|j                  d      }
t        ||	|       t        |d|       t        |d|       t        |	d	|       t        |d
   |d       t        |
d
   |d       t        |d   |d       t        |
d   |	d       y )Nr   r   r   z	two-sidedr   r   r   r   g ҏGw?r   rM   r@   r   )r   r   r   r   )rq   r   r   r6   r   r   t1r7   r   r   t2s              r   test_brunnermunzel_two_sidedr   E  s    2A)AK aqA q!$DFB		 	 [	 	9Bq!$DFB		 	 [	 	9BBK8.$/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       |j                         }t	        |d   |j
                   d       |j                  d      }t	        |dt        j                  |j                        d d d   z
  d       |j                  |d         }	t	        |	d   dd       |j                  |d         }
t	        |
d   dd       |j                  |d   |d   dz        }t	        |j                  j                  dd       t	        |j                  dd       |j                  |d   dz  |d         }t	        |j                   j                  dd       t	        |j                  dd       ||}}t        ||d      }t	        |j
                  |j
                  d       |j                         }t	        |d   |j
                  d       t	        |d   |j                  d       t	        |j                  |j                  d       t	        |j"                  |j"                  d       |j                  d      }t	        ||j                  d       |j                  |d         }	t	        |	d   dd       |j                  |d         }
t	        |
d   dd       |j                  |d   |d   dz        }t	        |j                  j                  dd       t	        |j                  dd       |j                  |d   dz  |d         }t	        |j                   j                  dd       t	        |j                  dd       |j%                         }t'        t)        j*                  |      t(        j*                        }t	        ||j                  d       t-        |      }t	        ||j                  d       |j/                  dd      }t	        |dt        j                  |j                        d d d   z
  d       y )Nrx   r   r   rI      %         r*      3      r   r_   g?gui@g*l?g+Ӄ?gt:?g+/Kj?)r.   dfr/   ciprobFuse_trM   r@   r   r   g?)alpharx   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
2CCMMF$4$4#45ACIIq6;;U;CIIv{{7				!B BqEF,,,59	D	!BBBHHVYY/"55EB##"Q%#0FF1It%0##"Q%#0FF1It%0 %%beRUT\:HH++22EFHOOU7 %%bedlBqE:HH,,33UGHOOU7
 B
b"D
1CCMM6#3#3%@				!B BqE6++%8BqE6==u5CJJE:CFFFIIE2	D	!BB		.##"Q%#0FF1It%0##"Q%#0FF1It%0 %%beRUT\:HH++22EFHOOU7 %%bedlBqE:HH,,33UGHOOU7 


!Cuzzc2EJJ?AAsyyu- 
C	 BB		.!!!R(EE1rxx		24R488u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        |j                               }t        |j                               }	||	k(  rJ  y )Nr   r   r   )FTr   rM   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$S&>

DJJU;t}}5A  Rxxr   c                     t         j                  j                  d       t         j                  j                  ddd      } t         j                  j                  ddd      }t	        | |      }|j                  d      }|j                  dd	      }|j                          t        d
      D ]C  }t	        | d d |f   |d d |f         }t        |j                  |   |j                  d       t        |j                  |   |j                  d       t        |j                  |   |j                  d       |j                  d      }t        |j                  |   |j                  d       t        |j                  |   |j                  d       |j                  dd	      }t        |j                  |   |j                  d       t        |j                  |   |j                  d       F y )Ni r      )2   rJ   rG      r   g?g333333?rJ   g+=r@   )r   rN   seedrO   r   r   r   r   rT   r   r.   r/   r   )	r   r   rD   tsttostrW   res_itst_itost_is	            r   test_rank_compare_vectorizedr     s{   IINN6			1b'	*B			1b'	*B
b"
%C

 
 
%C!!#s+D KKM1X C#Bq!tHbAh7a(%//F

1u||%@		!ekk>((-a(%//F

1u||%@))#s3q)6+;+;%HAEBCr   ),__doc__statsmodels.compat.pythonr   numpyr   numpy.testingr   r   r   r   scipyr   rP   $statsmodels.stats.contingency_tablesr	   r
   r   statsmodels.sandbox.stats.runsr   r   r   rS   statsmodels.stats.nonparametricr   r   r   r   statsmodels.tools.testingr   r   r=   rE   rX   ri   rv   r|   r   r   r   r   r   r   r   r    r   r   <module>r     s    + 9 9  & &L L ?  -NN:B<+,!H98V(N6##L00#1L+>]F@(Cr   