
    Yh@                    h
   d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d dlmc mZ d	 Ze j                            d
g d          e j                            dg d          d                         Ze j                            d
g d          d             Ze j                            d
g d          e j                            dg d          e j                            dddg          d                                     Ze j        j         e j        !                    d          e j                            d
g d          d                                     Z"ddddZ#e j                            de#$                                          d             Z%d Z&d Z'ddddZ(e j        j         e j                            de($                                          d                         Z)d d!d"Z*e j        j         e j                            de*$                                          d#                         Z+e j                            d
d$d%g          e j                            dd d&g          d'                         Z,e j        !                    d(          e j                            d
g d          e j                            dd d&g          d)                                     Z-e j                            d
g d          d*             Z.e j                            d
g d          d+             Z/d, Z0e j                            d-d d.g          d/             Z1e j        !                    d0          e j                            d
g d          d1                         Z2d2 Z3e j                            d3d4d5g          d6             Z4e j                            d7g d8          e j                            dg d          d9                         Z5d: Z6e j                            dg d          d;             Z7e j        j         e j                            d
g d          d<                         Z8e j        j         e j        9                    d=          d>                         Z:d? Z; G d@ dA          Z< G dB dC          Z= G dD dE          Z>dF Z?e j                            dGg dH          dI             Z@ G dJ dK          ZAdS )L    N)assert_allcloseassert_equalsuppress_warnings)rng_integers)is_numpy)xp_assert_closexp_assert_equal)statsspecial)root)	bootstrapmonte_carlo_testpermutation_testpowerc                  	   d} t          j        t          |           5  t          dt          j                   d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          t                      t          j                   d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g ddgft          j                   d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dg dft          j        d	
           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          dt          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d            d d d            n# 1 swxY w Y   d!} t          j        t          |           5  t          g dft          j        d"#           d d d            d S # 1 swxY w Y   d S )$Nz%`data` must be a sequence of samples.match   z(`data` must contain at least one sample.z>each sample in `data` must contain two or more observations...r         z=When `paired is True`, all samples must have the same length r   r   r      T)paired0`vectorized` must be `True`, `False`, or `None`.ekki
vectorized`axis` must be an integer.      ?axisz!could not convert string to floatni)confidence_levelz-`n_resamples` must be a non-negative integer.n_resamples     D@+`batch` must be a positive integer or None.batchz`method` must be inmethodz?`bootstrap_result` must have attribute `bootstrap_distribution'
   )bootstrap_resultz5Either `bootstrap_result.bootstrap_distribution.size`r   ,SeedSequence expects int or sequence of intsherringrng)pytestraises
ValueErrorr   npmeantuple	TypeError)messages    s/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/stats/tests/test_resampling.pytest_bootstrap_ivr=      sw   5G	z	1	1	1  !RW               9G	z	1	1	1 $ $%''27###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ OG	z	1	1	1 - -999qc"BG,,,- - - - - - - - - - - - - - - OG	z	1	1	1 C C999lll+RWTBBBBC C C C C C C C C C C C C C C AG	z	1	1	1 1 1!RW00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +G	z	1	1	1 3 3999,c22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2G	z	1	1	1 @ @999,$????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ >G	z	1	1	1 < <999,U;;;;< < < < < < < < < < < < < < < >G	z	1	1	1 = =999,V<<<<= = = = = = = = = = = = = = = <G	z	1	1	1 6 6999,u55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 <G	z	1	1	1 7 7999,v66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 $G	z	1	1	1 8 8999,77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 PG	z	1	1	1 > >999,"====> > > > > > > > > > > > > > > FG	z	1	1	1 8 8999,Q77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 =G	y	0	0	0 8 8999,Y77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s  AA	A	-'B  B$'B$ C44C8;C8#EEE3FF #F  G00G47G4 III, JJJ  K,,K03K0 M  MM( NNN< O((O,/O, P<<Q Q $ RRR8 S%%S),S)r-   )basic
percentileBCar"   r   r   r   c           	         t           j                            d          }|                    ddd          }t	          |ft           j        d | d|d          }t           j                            d          }t	          |ft           j        d| |d|          }t          |j        j        |j        j                   t          |j        j	        |j        j	                   t          |j
        |j
                   d S )Nr   r.         d   )r+   r-   random_stater"   r'   )r+   r-   r"   r'   rF   )r7   randomRandomStaterandr   r8   r   confidence_intervallowhighstandard_error)r-   r"   r3   xres1res2s         r<   test_bootstrap_batchrQ   O   s     )


"
"CRAaT27$v"#$CA A AD
)


"
"CaT27"VCcC C CD )-t/G/KLLL).0H0MNNN$d&9:::::    c                   	 t           j                            d          }d}|                    |          |                    |          	d	dd		fd	}t          j        t                              }t          |f|d          }t          	fdd          }t          |j        |j                   t          |j	        |j	                   d S )
Nr   rE   c                 :    | |z
  dz                       |          S )Nr   r!   r8   rN   yr"   s      r<   my_statisticz+test_bootstrap_paired.<locals>.my_statisticj   s    1qD)))rR   c                 @    |          }|          } ||          }|S N )ir"   abresrY   rN   rX   s        r<   my_paired_statisticz2test_bootstrap_paired.<locals>.my_paired_statisticm   s+    aDaDl1a  
rR   r2   T)r   r3   rT   )
r7   rG   rH   rI   arangelenr   r   rJ   rM   )
r-   r3   nra   r]   rO   rP   rY   rN   rX   s
          @@@r<   test_bootstrap_pairedrf   b   s     )


"
"CAAA* * * *        		#a&&AaT.A666DaV\$A>>>DD,d.FGGGD')<=====rR   r   TFc           	      >   t           j                            d          }d	d}d}||         }|                    |          }|                    |          }|                    |          }	t	          |||	f||| ddd          }
|
j        j        |
j        j        dz   k    sJ g d}|||<   t          j        |	                    |          |          }t          j        |	                    |          |          }t          j        |		                    |          |          }	t	          |||	f||| d|d          }t          |j        j        |
j        j                   t          |j        j        |
j        j                   t          |j        |
j                   t          |          }|                    |           t!          |j        j        j        |           t!          |j        j        j        |           t!          |j        j        |           d S )
Nr   rT   c                     |                      |          |                     |          z   |                     |          z   S Nr!   rV   )rN   rX   zr"   s       r<   rY   z/test_bootstrap_vectorized.<locals>.my_statistic   s<    vv4v  166t6#4#44qvv4v7H7HHHrR   )r.   rC   rD   rE   )r   r-   r3   r"   r'   )rE   )r   r   r   rb   )r7   rG   rH   rI   r   bootstrap_distributionshaperM   broadcast_toreshaper   rJ   rK   rL   listpopr   )r-   r"   r   r3   rY   rl   	n_samplesrN   rX   rj   rO   rn   rP   result_shapes                 r<   test_bootstrap_vectorizedrs   |   s'    )


"
"CI I I I EdIAAAaAYVF5 5 5D'-"(612 2 2 2 iiGGDM
		'**E22A
		'**E22A
		'**E22AaAYVF38 8 8D D,0,02 2 2D,1,13 3 3D')<===;;LT)-3\BBB).4lCCC$*L99999rR   z#MemoryError with BCa observed in CIc                    t           j                            d          }t          j                            ddd|          }d}t          j        t          |          dz
  t          j        |          t          j	        |                    }|
                    |	          }|                                }t          |ft           j        d| |
          }t          di |d|i}t          |j        |d           t          |j        |d           |                    t          d|                     t          di ||dd}t          |j        j        |                    |          d           |                    t          d|                     t          di ||dd}t          |j        j        |                    d|z
            d           d S )Nl   )ICbX     r     )locscalesizerF   ffffff?r   )dfrw   rx   )
confidence)data	statisticr'   r-   r3   r$   gMb@?rtolga2U0*3?atolr   r'   r/   lessr$   alternativegreaterr\   )r7   rG   default_rngr
   normrvstrd   r8   semintervalstddictr   r   rJ   rM   updaterL   ppfrK   )	r-   r3   r}   alphadistexpected_intervalexpected_seconfigr`   s	            r<   test_bootstrap_against_theoryr      s   
 )

 3
4
4C:>>aqt#>FFDE7c$iikrwt}}EIdOOLLLD77((**Kw"'tS* * *F

5
5f
5
5u
5
5
5CC+->TJJJJC&$????
MM$1s;;;<<<

I
If
Iu&
I
I
I
ICC+0$((5//MMMM
MM$1s;;;<<<

L
Lf
Lu)
L
L
L
LCC+/!E'1B1BNNNNNNrR   )gQ7@gHzS@)g\(<@g=
ףpU@)gHz'@@gQV@zmethod, expectedc                     t          j        g d          }t          |ft           j        d| d          }t	          |j        |d           d S )N)r.   rD         )@r   g+@            "   2   Q   Y   y         i@B r   )r'   r-   r3   g{Gzt?r   )r7   arrayr   r8   r   rJ   )r-   expectedrN   r`   s       r<   test_bootstrap_against_Rr      se    " 	 5 5 5 	6 	6A
QD"'wv  CC+XEBBBBBBrR   c                  ^   g d} g d}d }t           j                            d          }t          j        | |f|dd|          }t          j        | |f|dd|          }t          j        | |f|d	d|          }t          j        |j                  }t          j        |j                  }t          j        |j                  }	d
}
||
z
  t          |
          z  }||
z
  t          |
          z  }|	|
z
  t          |
          z  }|dk     sJ |dk    sJ t          |          dk     sJ d S )N)gbF?gp?g|Hܿgxy[e}u׿g*g_?ggi6g2?)gF?gK?g&F}/?g?g(iC?g}$ץ?g hu?gfj}!?c                 d    t          j        | |          }t          j        ||          }||z
  S ri   )r
   skew)rN   rX   r"   s1s2s        r<   r~   z1test_multisample_BCa_against_R.<locals>.statistic   s3    Z%%%Z%%%BwrR   l   tgy4r>   rE   )r-   r+   r3   r?   bcag1*g333333ÿg333333?Q?)r7   rG   r   r
   r   r8   rJ   abs)rN   rX   r~   r3   	res_basicres_percentres_bca	mid_basicmid_percentmid_bca	mid_wboot
diff_basicdiff_percentdiff_bcas                 r<   test_multisample_BCa_against_Rr      s{   	. 	. 	.A	9 	9 	9A
   )

 2
3
3CA	'&)s4 4 4I/1a&)L(+6 6 6Koq!fi$'S2 2 2G 	566I'+9::Kgg122G I i'Y7J)+S^^;L)#S^^3H $x==4rR   c                     t          j        g d          } t          j        g d          }d	d}|| g}t          j        ||          }d}d}|j        }d}t          j        ||||||          \  }	}	}
t          |
d           d S )
N)	r.         (   .   r   4   h      )   r   &   ^   c         r   c                 \    t          j        | |          t          j        ||          z
  S ri   r7   r8   )rj   rX   r"   s      r<   r~   z:test_BCa_acceleration_against_reference.<locals>.statistic&  s+    wqt$$$rwqt'<'<'<<<rR   rT   rz   rE   ge{?r   )r7   r   r
   r   rk   _resampling_bca_intervalr   )rX   rj   r~   r}   r`   r"   r   theta_hat_br+   _a_hats              r<   'test_BCa_acceleration_against_referencer     s     	77788A
///00A= = = = q6D
/$	
*
*CDE,KE+D)T5,7@ @KAq%E/00000rR   i  i  c           
         t           j                            d          }d}d}d}t          j        dd          }|                                }d}|                    ||f|	          }	t          |	ft           j        ||d
| d|          }
|
j        }t          j	        |d         |k     ||d         k     z            }||k    sJ t          j
        |||          j        }|dk    sJ d S )Ni8 rE     ?ru   r   rw   rx   i  ry   rF   r   rT   )r~   r$   r'   r+   r-   r"   r3   r   皙?)r7   rG   r   r
   r   r8   r   r   rJ   sum	binomtestpvalue)r-   r   r3   re   r'   r$   r   	stat_truen_replicationsr}   r`   cici_contains_truer   s                 r<   #test_bootstrap_against_itself_1sampr   :  s    )


(
(CAK :!1%%%D		I N88.!,38??D
TG g%5 +!  C 
	 B vr!uy0YA5FGHHx'''' _-~-/ //5 C<<<<<<rR   i|  iz  )r>   r?   c           
      Z   t           j                            d          }d}d}d}d}dd}t          j        dd	          }t          j        d
d	          }	|                                |	                                z
  }
d}|                    ||f|          }|	                    ||f|          }t          ||f|||d| d|          }|j        }t          j	        |d         |
k     |
|d         k     z            }||k    sJ t          j
        |||          j        }|d
k    sJ d S )Nr   rE   x   r   r   rT   c                 d    t          j        | |          }t          j        ||          }||z
  S ri   r   )data1data2r"   mean1mean2s        r<   my_statz4test_bootstrap_against_itself_2samp.<locals>.my_statw  s4    D)))D)))u}rR   r   r   r     r   r   )r~   r$   r'   r+   r-   r"   rF   rb   )r7   rG   rH   r
   r   r8   r   r   rJ   r   r   r   )r-   r   r3   n1n2r'   r$   r   dist1dist2r   r   r   r   r`   r   r   r   s                     r<   #test_bootstrap_against_itself_2sampr   g  sf    )


"
"C	B	BK    J1A&&&EJ3a(((E

uzz||+I NIINB/cIBBEIINB/cIBBE
UEN%%5 +!!$& & &C 
	 B vr!uy0YA5FGHHx'''' _-~-/ //5 C<<<<<<rR   r>   r?   r   c           	        	 ddd		fd}t           j                            d          }|                    dd          }|                    dd          }|                    dd          }t	          |||f	d|d| d	          }t	          |||f|d
|d| d	          }t          |j        |j                   t          |j        |j                   d S )Nr   r!   c                 :     t           fd|D                       S )Nc              3   B   K   | ]}|                               V  d S r[   rV   .0sampler"   s     r<   	<genexpr>zEtest_bootstrap_vectorized_3samp.<locals>.statistic.<locals>.<genexpr>  /      886;;t$$888888rR   r   r"   r}   s   ` r<   r~   z2test_bootstrap_vectorized_3samp.<locals>.statistic  &    88884888888rR   c                  8    | D ]}|j         dk    sJ  | ddiS Nr   r"   r   ndimr}   r   r~   s     r<   statistic_1dz5test_bootstrap_vectorized_3samp.<locals>.statistic_1d  =     	$ 	$F;!#####y$'Q'''rR   r   ru   TrE   )r   r"   r'   r-   r3   Fr7   rG   rH   rI   r   r   rJ   rM   )
r-   r"   r   r3   rN   rX   rj   rO   rP   r~   s
            @r<   test_bootstrap_vectorized_3sampr    s      9 9 9 9 9( ( ( ( ( )


"
"CAAAAAAaAY	dCAG G GDaAYCAG G GDD,d.FGGGD')<=====rR   z'Failure is not concerning; see gh-14107c           
      L   ddfd}t           j                            d          }|                    dd          }t	          |fd|dd | d          }t	          |f|d	|dd
| d          }t          |j        |j                   t          |j        |j                   d S )Nr   c                 .    |                      |          S ri   rV   rN   r"   s     r<   r~   z2test_bootstrap_vectorized_1samp.<locals>.statistic  s    vv4v   rR   c                 8    | j         dk    sJ  | d          S Nr   r   r!   r   )rN   r~   s    r<   r   z5test_bootstrap_vectorized_1samp.<locals>.statistic_1d  s'    v{{{{y####rR   r   ru   TrE   )r   r"   r'   r+   r-   r3   Fr.   r   r   )r-   r"   r   r3   rN   rO   rP   r~   s          @r<   test_bootstrap_vectorized_1sampr    s    ! ! ! !$ $ $ $ $
 )


"
"CAAaT9D!$D  D aT<E!$Bv  D D,d.FGGGD')<=====rR   c                    ddgz  }| dk    rt          j        d          5  d}t          j        t          j        |          5  t          |gt           j        |           }t          |j	        t           j
        t           j
        f           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   n2t          |gt           j        |           }t          |j	        d	           t          |j        d
           d S )N#        @r@   ignore)invalidz0The BCa confidence interval cannot be calculatedr   r,   )r
  r
  r   )r7   errstater4   warnsr
   DegenerateDataWarningr   r8   r   rJ   nanrM   )r-   r}   msgr`   s       r<   test_bootstrap_degenerater    s   =D[*** 	H 	HDCe9EEE H H"'&AAAS4rvrv6FGGGH H H H H H H H H H H H H H H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H "'&999S,.>???#Q'''''s6   #B1A	BB1B	B1!B	"B11B58B5c           	      <   t           j                            d          }t          j        dd          }|                    d|          }|f}t          |t          j        | dt           j                            d                    }t          |t          j        | dt           j                            d          d	
          }t          |j	        |j	                   t          |j
        |j
                   t          |j
        t           j                  sJ d S )Nl   E<1

 r   r   r   rE   r   i[%  r-   r'   r3   F)r-   r'   r3   r   )r7   rG   r   r
   r   r   r   r   r   rJ   rM   
isinstancefloat64)r-   r3   r   r}   r`   refs         r<   test_bootstrap_gh15678r    s     )


0
0C:!1%%%D8838//D7D
D%*V	--d335 5 5C D%*V	--d33G G GCC+S-DEEEC&(:;;;c("*5555555rR   c            	         t           j                            d          } t          j        dd          }|                    d|           }t          j        |          }|f}t          |t           j        ddt           j                            d          	          }||j        j	        k    sJ t          t          j
        |           t           j        ddt           j                            d          	          }t          |j        j	         |j        j                   t          |j        j         |j        j	                   d S )
Nl   n!|'x`5 r   r   r   rE   r   r@   if  r  )r7   rG   r   r
   r   r   minr   rJ   rK   r   maxr   rL   )r3   r   r}   true_minr`   rP   s         r<   test_bootstrap_minr    s0    )

 0
1
1C:!1%%%D8838//Dvd||H7D
D"&C	--d335 5 5Cs.22222bhtnn_bfU..t446 6 6DS,00,13 3 3S,11,02 2 2 2 2rR   additional_resamplesr   c           	      N   t           j                            d          }|                    d          }d}| }|| z   }t           j                            d          }t          j        |ft           j        ||dd          }t          j        |ft           j        ||d	d
|          }t           j                            d          }t          j        |ft           j        ||d	d
          }t          |j        |j        d           t          |j        |j        d           d S )Nl    ]4M rE   ry   r   l   mdpi4 rz   r?   )r'   r3   r$   r-   r   r@   )r'   r3   r$   r-   r/   +=r   )	r7   rG   r   r
   r   r8   r   rM   rJ   )r  r3   rN   r   r   n3r`   r  s           r<   test_re_bootstrapr#    s6    )

 0
1
1C


A	B	B	"	"B
)

 2
3
3C
/1$RS+/F F FC
/1$RS+/+.0 0 0C )

 2
3
3C
/1$RS+/? ? ?C C&(:GGGGC+S-D           rR   zSensible to machine precisionc                 N   t           j                            d          }t          j        dd          }|                    d|          f}t          |t           j        |d          }t          j        di |d	d
i}|	                    t          d|                     t          j        di |ddd}t          j        di |ddd}t          |j        j        |j        j        d           t          |j        j        |j        j        d           t          j        |j        j                  sJ t          j        |j        j                  sJ t!          j        t$          d          5  t          j        di |ddi d d d            d S # 1 swxY w Y   d S )Nl   @Qixt r   r   r   rE   r   rT   )r}   r~   r3   r"   r$   r   r   r   rz   r   r   r   r!  r   z`alternative` must be one ofr   r   z	ekki-ekkir\   )r7   rG   r   r
   r   r   r   r   r   r   r   rJ   rL   rK   isneginfisposinfr4   r5   r6   )r-   r3   r   r}   r   r   lgs           r<   test_bootstrap_alternativer)    s    )

 3
4
4C:!1%%%DHH3cH224Dtrv3R@@@F77&773777A
MM$1q999:::LL&L4VLLLLAOO&O4YOOOOAA).0E0J       A)-q/D/H       ;q,011111;q,122222	z)G	H	H	H ; ;::&::k::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   7FF!Fc                     d} t           j                            d           t          j        j        |  }t	          t          j        |                    }t          | d                   D ]=}|d|d d f         }t          j        ||d          }t          j	        ||          sJ >t          j
        t          t          j        |d                    d          }t          j	        ||          sJ d S )	Nr   r   ru      r   rT   .r!   r   r*   )r7   rG   seedrI   nextr   _jackknife_resamplerangedeletearray_equalconcatenatero   )rl   rN   rX   r]   slcr   y2s          r<   test_jackknife_resampler7  2  s    EINN1
	A[,Q//00A59 - - Q	l9Q+++~c8,,,,,,	[<QaHHHII
! 
! 
!B>"a       rR   rng_namerH   r   c                    t          t          j        | d           }|t          j        |  d            |d          } |d          }d}d}t          j                            d           t          j        j        | }t          j        |||          }t          |          D ]N}|d|d d f         }	t          |d|d         |d                   }
|d|
f         }t          j        |	|          sJ Od S )Nz not available.r   r.   r+  r2   .rT   )getattrr7   rG   r4   skipr.  rI   r   _bootstrap_resampler1  r   r3  )r8  r3   rng1rng2r'   rl   rN   rX   r]   r5  jsr   s               r<   test_bootstrap_resampler@  E  s	   
")Xt
,
,C
{x0001113q66D3q66DKEINN1
	A';DAAAA; - - Q	l$59eBi88S"W:~c8,,,,,,- -rR   score)r         ?r   c                     d}t           j                            d           t          j        j        | }t	          j        || d          }d } ||| d          dz  }t          ||d           d S )N)r.         r   rT   r!   c                 D    t          j        t          j        || |          S r[   )r7   apply_along_axisr
   percentileofscore)r^   rA  r"   s      r<   vectorized_posz0test_percentile_of_score.<locals>.vectorized_posg  s    "5#:D!UKKKrR   rE   V瞯<)r7   rG   r.  rI   r   _percentile_of_scorer   )rA  r"   rl   rN   prI  p2s          r<   test_percentile_of_scorerN  _  s     EINN1
	A(E;;;AL L L 
5r	*	*	*3	.BAr5!!!!!rR   c                  X   d} t           j                            d          } |j        |  } |j        | d d          dz  }t	          j        ||          }t          | d                   D ]>}||         }t          j        ||         ||         d          }t          ||d           ?d S )N)r.   rD  r   rT   rE   r!   rJ  )	r7   rG   rH   rI   r   _percentile_along_axisr1  r?   r   )rl   r3   rN   qrX   r]   r`   r   s           r<   test_percentile_along_axisrR  o  s    
 E
)


"
"C%A%*#A*1a00A58__ . .d=1qt"555Xu----. .rR   c                 d  	 d 		fd}t          j        |          }t          j                            d          }|                    ddd          }|                    ddd          }|                    ddd          } 	||||           } |||||           }t          ||           d S )	Nc                 :     t           fd|D                       S )Nc              3   B   K   | ]}|                               V  d S r[   rV   r   s     r<   r   z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>  r   rR   r   r   s   ` r<   r~   z+test_vectorize_statistic.<locals>.statistic  r   rR   c                  8    | D ]}|j         dk    sJ  | ddiS r   r   r   s     r<   r   z.test_vectorize_statistic.<locals>.statistic_1d  r   rR   r   r   ru   r,  r   r!   )r   _vectorize_statisticr7   rG   rH   rI   r   )
r"   r   
statistic2r3   rN   rX   rj   rO   rP   r~   s
            @r<   test_vectorize_statisticrY    s    9 9 9( ( ( ( ( 1,??J
)


"
"CAqAAqAAqA9Q14(((D:aAD)))DD$rR   c           	      4   t           j                            d          }d}t          j        j        |d|d}d }t          |f|| ddd|	          }t          j        |j        j	        j
        |k     |j        j        j
        |k    z  d
          }t          j        |dk              sJ t          j        |dk              sJ |j        j	        j        dk    sJ |j        j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ d S )Nl   s: )r   rB  )rE   rE   r   c                 ~    t          j        t          j        | |          t          j        | |d          g          S )Nr   )ddof)r7   asarrayr8   r   )r}   r"   s     r<   r~   z/test_vector_valued_statistic.<locals>.statistic  s=    z274..6$15557 8 8 	8rR   rT   '     )r-   r"   r'   r+   rF   r   r!   Z   rE   r   rE   )r   rE   r^  )r7   rG   r   r
   r   r   r   r   rJ   rK   TrL   allrl   rM   rk   )r-   r3   paramsr   r~   r`   countss          r<   test_vector_valued_statisticrf    sO    )



+
+CFZ^V*3GGGF8 8 8 VIyb $CcC C CC VS,02V;.35>@  F 6&B,6&C-     "&,8888"'-9999#x////%+~======rR   zignore::RuntimeWarningc                     t           j                            d          } d fdfd}g dg dg dg dg d	g}t          j        |          j        }t          ||| d
          }t          || d
          }t          |j        j        d         |j        j        d           t          |j        j	        d         |j        j	        d           d S )Nl   \Qc                    |                      |          }|                     |          }| |d         z
  ||d         z
  z                       |          }d|z  |                     |          |                    |          z   ||z
  dz  z   z  S )N).Nr   )r8   var)rN   rX   r"   xmymcovs         r<   concordancez9test_vector_valued_statistic_gh17715.<locals>.concordance  s    VVD\\VVD\\ByM!a"Y-&78>>tDDCAEE$KK!%%++5bQFGGrR   c                 V    | |z   }| |z   }t          j         |||                    S r[   )r7   
nan_to_num)tptnfpfnr"   actualr   rm  s          r<   r~   z7test_vector_valued_statistic_gh17715.<locals>.statistic  s3    b7}[[4@@AAArR   c                 <     g || R  t           j        df         S )N.)r7   newaxis)r"   argsr~   s     r<   statistic_extradimz@test_vector_valued_statistic_gh17715.<locals>.statistic_extradim  s)    y%$%%%%bj#o66rR   )r   r   r   r   )r   r   r   r   )r   r,  r   r   )r   r,  r   r   )r      r   r   T)r3   r   r   rJ  r   )
r7   rG   r   r   rb  r   r   rJ   rK   rL   )r3   rx  r}   r`   r  rm  r~   s        @@r<   $test_vector_valued_statistic_gh17715rz    s8    )

 2
3
3CH H HB B B B B
7 7 7 7 7 LLLLLLLLLL	D
 8D>>D
D,#d
C
C
CC
D)T
:
:
:CC+/2+/e= = = =C+03+0u> > > > > >rR   c                  b   t           j                            d          } |                     d          }|                     d          }d }t          j        ||f|           t          j        |j        |j        f|d           d}t          j        t          |          5  t          j        ||d d	d
f         f|           d d d            n# 1 swxY w Y   t          j        ||d d	d
df         f|           t          j        |j        |j        d
dd d	f         f|d           d S )NiF|)r.   r   )rC   r   c                 :    t          j        | ||          j        S ri   r
   	ttest_indr~   rW   s      r<   r~   z test_gh_20850.<locals>.statistic  s    q!$///99rR   r   r!   /Array shapes are incompatible for broadcasting.r   r.   r   )	r7   rG   r   r
   r   rb  r4   r5   r6   )r3   rN   rX   r~   r;   s        r<   test_gh_20850r    sp   
)



+
+C

7A

7A: : : 
OQFI&&&	OQS!#J	2222 @G	z	1	1	1 3 3Acrc1fI	2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	OQ#2#qs($i000	OQS!#ac3B3h-()!<<<<<<s   $"CCCc            
          e Zd ZdZdefdZd Zd Zd Ze	j
        j        d             Ze	j
                            d ed	d
                    d             Ze	j
                            dd          d             Ze	j
        j        e	j
                            dd          e	j
                            d ej        ddd                    d                                     Ze	j
                            dej        ej        f          e	j
                            dd          e	j
                            d ej        ddd                    d                                     Ze	j
                            d ej        dd
                    d             Ze	j
        j        e	j
                            d ej        ddd                    d                         Ze	j
        j        e	j
                            dd          e	j
                            d ed                    d                                     Zd  Zd! Zd" Ze	j
                            d          e	j
                             d#          d$                         Z!dS )%TestMonteCarloHypothesisTest皙?Nc                     fdS )Nc                  B                          | di|          S )NrF   dtype)r]  )rw  kwdsr  rsrvs_inxps     r<   <lambda>z6TestMonteCarloHypothesisTest.get_rvs.<locals>.<lambda>  s4    RZZ0V20VQU0V0V6; &0 &= &= rR   r\   )selfr  r  r  r  s    ````r<   get_rvsz$TestMonteCarloHypothesisTest.get_rvs  s.    = = = = = = = 	=rR   c                     fd}|S )Nc                                          | |          }                    | |d          }| j        |         }|||z  dz  z  S )Nr!   r   )r"   
correctionrB  )r8   ri  rl   )rN   r"   mvre   r  s        r<   r~   z=TestMonteCarloHypothesisTest.get_statistic.<locals>.statistic  sL    %%Aqt22AA!cz>!rR   r\   )r  r  r~   s    ` r<   get_statisticz*TestMonteCarloHypothesisTest.get_statistic  s$    	" 	" 	" 	" 	" rR   c                 	                        g d          }d#fd	}d}                    d                              d          f}t          j        j        t          j        j        f}t          j        t          |          5  t          ||d d	           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          |t          j        j        |d	           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |d |           d d d            n# 1 swxY w Y   t          j        t          |          5                       ddgddgg          }t          |d d g|           d d d            n# 1 swxY w Y   d}t          j        t          |          5                       g dg          }t          |d d g|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        d            d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d            d d d            n# 1 swxY w Y   d!}fd"}	 t          ||j
                   d S # t          $ r/}t          |                              |          sJ Y d }~d S d }~ww xY w)$N      ?       @      @c                 2                         | |          S ri   rV   )rN   r"   r  s     r<   statz@TestMonteCarloHypothesisTest.test_input_validation.<locals>.stat  s    77147(((rR   r  r   ru   )r   ru   r   c                     dS Nr   r\   rW   s      r<   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>      1 rR   rT   r!   r   r    r   r   0`rvs` must be callable or sequence of callables.r  r  r  g      @c                     | S r[   r\   rN   s    r<   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>!      a rR   If `rvs` is a sequence...c                     | S r[   r\   r  s    r<   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>&  r  rR   c                     | S r[   r\   r  s    r<   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>&  r  rR   z`statistic` must be callable.)`n_resamples` must be a positive integer.r%   r&   r(   r)   r*   `alternative` must be in...r   r   z!Signature inspection of statisticc                 j                         t          j                            |                     S )Nr   )r]  r
   r   r   )ry   r  s    r<   r   z?TestMonteCarloHypothesisTest.test_input_validation.<locals>.rvsB  s%    ::ejnn$n77888rR   r[   )r]  zerosr
   r   r   r4   r5   r6   r   r:   r8   str
startswith)r  r  r}   r  r;   tempr   es    `      r<   test_input_validationz2TestMonteCarloHypothesisTest.test_input_validation  sH    zz,,,''	) 	) 	) 	) 	) 	) D  "((6"2"23z~uz~.]:W555 	G 	GT3(<(<2FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G /]:W555 	C 	CT5:>4cBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C E]:W555 	I 	IT5:>4CHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I E]9G444 	/ 	/T4...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]9G444 	> 	>::Bx"b233DTKK#6===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> .]:W555 	E 	E::|||n--DTKK#=tDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 2]9G444 	9 	9T5:>4888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 >]:W555 	L 	LT5:>4UKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L >]:W555 	M 	MT5:>4VLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M @]:W555 	F 	FT5:>4uEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F @]:W555 	G 	GT5:>4vFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 0]:W555 	M 	MT5:>4VLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 6	9 	9 	9 	9 	9	.T300000 	. 	. 	.q66$$W-----------	.s   B))B-0B-#D  DD(#EEE?FF!$F!0G??HH'.I!!I%(I%	!J66J:=J:#LLL5#M$$M(+M(#N;;N?N?##PPP:#Q))Q-0Q-<R 
S$SSc                    fd}d}                     g d          }t                    r"t          |t          j        j        |           d S t          j        t          |          5  t          |t          j        j        |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |t          j        j        j	        d           d d d            d S # 1 swxY w Y   d S )Nc                 .                         |           S r[   rV   )rN   r  s    r<   non_vectorized_statisticzWTestMonteCarloHypothesisTest.test_input_validation_xp.<locals>.non_vectorized_statisticJ  s    771::rR   z!`statistic` must be vectorized...r  r   Fr   )
r]  r   r   r
   r   r   r4   r5   r6   r8   )r  r  r  r;   r   s    `   r<   test_input_validation_xpz5TestMonteCarloHypothesisTest.test_input_validation_xpI  s   	 	 	 	 	 6LLL))B<< 	VUZ^5MNNNF]:W555 	O 	OVUZ^5MNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O]:W555 	P 	PVUZ^RWOOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps$   ,!BB B?(C44C8;C8c                 N    t           j                            d          }                    |                    d                    } fdd_        d_        |ddd}                     t          j	        j
        t           j                            d	          
          |d<   t          dddi|}t          j        d           t          j        d                                t          j	        j
        t           j                            d	          
          |d<   d_        t          dddi|}t          j        d           t          j        d                                t          j	        j
        t           j                            d	          
          |d<   d_        t          di |}t          j        d           t          j        d           t          |j        |j                   t          |j        |j                   d S )N   )p r.   r   c                     | j         dk    rdn| j        d         }t          |j                  _        xj        dz  c_                                       | |          S r  )r   rl   r  
batch_sizecounterr  )rN   r"   r  r  r~   r  s      r<   r~   z:TestMonteCarloHypothesisTest.test_batch.<locals>.statistic_  sh    fkkqwqzJ#&z93G#H#HI ")4%%b))!$7777rR   r   r   T)r   r~   r'   r   i r  r   r+   r     r   r   r   r\   )r7   rG   r   r]  standard_normalr  r  r  r
   r   r   r   r   r	   r   )	r  r  r3   rN   r  rO   rP   res3r~   s	   ``      @r<   
test_batchz'TestMonteCarloHypothesisTest.test_batchX  s    i##K00JJs***3344	8 	8 	8 	8 	8 	8 	8
 	 	)#49 9 ll5:>293H3H3P3PUWlXXU00a0400Y&---Y)1---ll5:>293H3H3P3PUWlXXU	11b1D11Y&+++Y)2...ll5:>293H3H3P3PUWlXXU	''$''Y&***Y)4000T[111T[11111rR   r"   r   c                    t           j                            d          }g d}d||<   |                    d          j        }dt          |          v rdnd}t          t           |          }t          ||          }|                    ||          }	t          j	        |	d	|
          }
|                    |	|          }	| 
                    |          }|                     t          j        j        |||          }t          |	||dd|          }|                    |
j        |          }|                    |
j        |          }t#          |j        |           t#          |j        || j                   d S )Nit$ r   r   r   rE   r  64float32r  )ry   r          )popmeanr"   r  )r  r  Ti N  )r   r'   r"   r   )r7   rG   r   r]  r  r  r:  r  r
   ttest_1sampr  r  r   r   r   r~   r   r   r   )r  r"   r  r3   ry   dtype_default	dtype_strdtype_npr  rN   r   r~   r   r`   ref_statistic
ref_pvalues                   r<   test_axis_dtypez,TestMonteCarloHypothesisTest.test_axis_dtype~  sq    i##G,,yyT
 

2,!%]););!;!;II)	2y))I&& T::$Q>>>JJqJ&&&&r**	ll5:>3elCCq#yT+0t= = = 

8#5U
CCZZuZ==
}555
JTY??????rR   r   )	two-sidedr   r   c                 (   t           j                            d          }|                    d          }t	          j        |d|          }|                    |          }|                     |          }|                     t          j	        j
        ||          }t          ||||          }t          |j        |                    |j                             t          |j        |                    |j                  | j                   d S )N)rE  r   r  r  r  r   )r7   rG   r   r  r
   r  r]  r  r  r   r   r   r   r~   r   r   )	r  r   r  r3   rN   r  r~   r   r`   s	            r<   test_alternativez-TestMonteCarloHypothesisTest.test_alternative  s     i##H--R((2;???JJqMM&&r**	ll5:>32l66q#ykJJJrzz#-'@'@AAA
BJJsz$:$:KKKKKKrR   )r   r   r^   g      rB  ru   c                 2   t           j                            d          }t          j                            |d|          }t          j        |t          j        j                  }fd}| 	                    t          j        j        |          }t          |||dd          }t          |j        |j                   d	k    r#t          |j        |j        | j        
           d S dk    r&t          d|j        z
  |j        | j        
           d S d S )Nr  rE  r^   ry   rF   r  c                 \    t          j        | t           j        j        d          j        S Nasymp)moder   )r
   ks_1sampr   cdfr~   )rN   r   s    r<   statistic1dzGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1d  s-    >!UZ^'.9; ; ;;DErR   r   Fr'   r   r   r   r   r   r   )r7   rG   r   r
   skewnormr   r  r   r  r  r   r   r~   r   r   )	r  r   r^   r3   rN   r   r  norm_rvsr`   s	    `       r<   test_against_ks_1sampz2TestMonteCarloHypothesisTest.test_against_ks_1samp  s$   
 i##H--N#>>>!UZ^MMM	E 	E 	E 	E 	E <<
44q(K+/E+68 8 8 	x'9:::)##CJdiHHHHHHF""AcjL(/	JJJJJJ #"rR   hypotestr   r   r  r-  r   c                    t           j                            d          }t          j                            |d|          } ||          }fd}|                     t          j        j        |          }t          |||d|          }	t          |	j
        |j
                   t          |	j        |j        | j                   d S )	Ni	   r  r  c                 (     | |          j         S ri   )r~   )rN   r"   r  s     r<   r~   zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statistic  s    8AD)))33rR   Tr   r   r   )r7   rG   r   r
   r  r   r  r   r   r   r~   r   r   )
r  r  r   r^   r3   rN   r   r~   r  r`   s
    `        r<   test_against_normality_testsz9TestMonteCarloHypothesisTest.test_against_normality_tests  s    
 i##H--N3??8A;777	4 	4 	4 	4 	4 <<
44q(I$+68 8 8 	x'9:::
HO$)DDDDDDrR   c                    t           j                            d          }t          j                            |d|          }t          j        |          }d }|                     t          j        j        |          }t          |||dd          }t          |j        |j                   t          |j        |j        | j                   d S )	Ni!M r  r  c                 8    t          j        | |          j        S ri   )r
   
normaltestr~   r  s     r<   r~   zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statistic  s    #AD111;;rR   Tr   r  r   )r7   rG   r   r
   r  r   r  r  r   r   r   r~   r   r   )r  r^   r3   rN   r   r~   r  r`   s           r<   test_against_normaltestz4TestMonteCarloHypothesisTest.test_against_normaltest  s     i##H--N3??#A&&	< 	< 	< <<
44q(I$+46 6 6 	x'9:::
HO$)DDDDDDrR   c                    t           j                            d          }t          j                            |d|          }t          j        |t          j        j                  }d }| 	                    t          j        j        |          }t          |||ddd          }t          |j        |j                   t          |j        |j        | j        	           d S )
NirE  r  c                 T    t          j        | t           j        j                  j        S r[   )r
   cramervonmisesr   r  r~   r  s    r<   r  zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1d  s    '5:>::DDrR   r   Fr   r  r   )r7   rG   r   r
   r  r   r  r   r  r  r   r   r~   r   r   )r  r^   r3   rN   r   r  r  r`   s           r<   test_against_cramervonmisesz8TestMonteCarloHypothesisTest.test_against_cramervonmises  s     i##I..N#>>'5:>::	E 	E 	E <<
44q(K+/E+46 6 6 	x'9:::
HO$)DDDDDDrR   	dist_name)r   logisticr]   c           	      6   fd}t                      5 }|                    t                     t          |d          }d d d            n# 1 swxY w Y   |j        sJ |j        d         }t          j                            d          }t          j
                            |d|          }t          j        |          }	|	j        }
|	j                 dz  }fd}|                     t!          t                    j        |          }t                      5 }|                    t                     t#          |||dd	d
          }d d d            n# 1 swxY w Y   t%          |j        |
           t%          |j        |d| j        z             d S )Nc                     t           j                            d          }t          j                            | d|          }t          j        |          }|j        |j                 z
  S )NxrE   r   )	r7   rG   r   r
   tukeylambdar   andersonr~   critical_values)r^   r3   rN   r   r  r]   s       r<   funz?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.fun  s\    )''	22C!%%ac%DDA~a33H%(@(CCCrR   r   )x0r  rE   r   c                 8    t          j        |           j        S r[   )r
   r  r~   )rN   r  s    r<   r  zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1d&  s    >!Y//99rR   r   Fr   r  r   r   )r   filterRuntimeWarningr   successrN   r7   rG   r   r
   r  r   r  r~   significance_levelr  r:  r   r   r   r   )r  r  r]   r  supsolr^   r3   rN   r   expected_stat
expected_pr  dist_rvsr`   s    ``            r<   test_against_andersonz2TestMonteCarloHypothesisTest.test_against_anderson  s:   	D 	D 	D 	D 	D 	D
    	"CJJ~&&&sq///C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" { E!Hi##I..!!!#C!@@>!Y// *03C7
	: 	: 	: 	: 	: <<y 9 9 =sCC   	LCJJ~&&&"1h#.D.3L L LC	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	}555
JQty[AAAAAAs#   ,AAA0EE!Ec                     t           j                            d          }t          j        d          }t	          ||j        t           j        dd          }|j        dk    sJ d S )Nl   IL~QH(s rE   Tr   r  g-C6?)r7   rG   r   r  r   r8   r   )r  r3   rN   r`   s       r<   test_p_never_zeroz.TestMonteCarloHypothesisTest.test_p_never_zero3  sf     i##$788HSMMq#*bg*.FD D DzV######rR   c                    t           j                            d          }|                    d          |                    d          f}|j        |j        f}d }t	          j        |||d          }t	          j        |d         |d	         gd          }t          |j        |j                   t          |j	        |j	        d
           d S )N   F:fmPr  r      c                 :    t          j        | ||          j        S ri   r}  rW   s      r<   r~   zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statisticA  s    ?1ad333==rR   rT   r!   r   r   {Gz?r   )
r7   rG   r   normalr
   r   r~  r   r~   r   r  r3   r}   r   r~   r`   r  s          r<   test_against_ttest_indz3TestMonteCarloHypothesisTest.test_against_ttest_ind<  s    i##$677zzvz&&


(:(::j#*$	> 	> 	> $T3	CCCod1gQyr:::s}555
CJT::::::rR   c                    t           j                            d          }|                    d          |                    d          |                    d          |                    d          f}|j        |j        |j        |j        f}d }t	          j        |||dd	
          }t	          j        |ddi}t          |j        |j                   t          |j	        |j	        d           d S )Nr  ra  r   )r   e   )r   f   )r   g   c                 .    t          j        |d| ij        S )Nr"   )r
   f_onewayr~   )r"   rw  s     r<   r~   zETestMonteCarloHypothesisTest.test_against_f_oneway.<locals>.statisticP  s    >43d33==rR   rT   r   r"   r   r"   {Gz?r   )
r7   rG   r   r	  r
   r   r  r   r~   r   r
  s          r<   test_against_f_onewayz2TestMonteCarloHypothesisTest.test_against_f_onewayI  s    i##$677


))3::8:+D+D


))3::8:+D+DFj#*cj#*<	> 	> 	> $T3	1:< < <nd,,,s}555
CJT::::::rR   z2Statistic may not depend on sample order on 32-bitc                 z   t           j                            d          d}fd} |d          }t          j        ||t           j        d|          }t          j        |j        |j        k              }t          j        |j        |j        dz  k              }||k    sJ |j	        |dz   |dz   z  k    sJ d S )	Nl   U5<H r^  c                 ^    dt          j        d                              |           z  S )Nr  gZd;O?)rL  r   )r
   	bernoullir   ry   r3   s    r<   r   zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvsb  s.    %00044$S4QQQQrR   rE   r   )r   r'   g     ?r   )
r7   rG   r   r
   r   ri  r   null_distributionr~   r   )r  r'   r   rN   r`   c0c1r3   s          @r<   test_finite_precision_statisticz<TestMonteCarloHypothesisTest.test_finite_precision_statisticZ  s     i##$455	R 	R 	R 	R 	R CHH$QRV1<> > > VC)S]:;;VC)S]G-DDEERxxxxzb1f{Q7777777rR   )"__name__
__module____qualname__r   r7   r  r  r  r  r4   markxslowr  parametrizer1  r  r  slowlinspacer  r
   skewtestkurtosistestr  rc   r  r  r  r  r  r  	fail_slowxfail_on_32bitr  r\   rR   r<   r  r    s^       D(, = = = =  @. @. @.DP P P [#2 #2 #2J [VUU2q\\22@ @ 32@@ [],LMML L NML& [[],?@@[S+"+dC";";<<K K =< A@ K, [Z%.%:L)MNN[],LMM[S+"+b!Q"7"788E E 98 NM ONE" [S)")B"2"233E E 43E" [[S+"+dC";";<<E E =< E$ [[[*>??[S%%((++(B (B ,+ @? (BT$ $ $; ; ;; ; ;" [1[ TUU8 8 VU 8 8 8rR   r  c                   t    e Zd Zd Zej        j        d             Zej        j        d             Zd Z	d Z
dS )	TestPowerc           
      	   t           j                            d          }t          j        }|j        |j        f}d}d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |d |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||j        df|           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  t          ||j        f|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||d
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |||t          j        dd                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||ddgg df           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||ddgddgfdg di           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ||           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d            d d d            n# 1 swxY w Y   t          j        t          |          5  t          |||d            d d d            d S # 1 swxY w Y   d S )!Nl   yB0 1 )r.   rD   r   r   r    r   r  r   r  )r.   z3`significance` must contain floats between 0 and 1.r   significancerT   r   z`kwargs` must be a dictionaryr   )kwargsz+shape mismatch: objects cannot be broadcastr.   rC   )rD         rD   r/  rN   z`test` must be callablez(`n_resamples` must be a positive integerir&   g      %@z"`batch` must be a positive integerr*   )r7   rG   r   r
   r~  r	  r4   r5   r6   r   r:   r$  )r  r3   testr   n_observationsr;   s         r<   r  zTestPower.test_input_validationp  sN   i##$788z3:&!D]:W555 	= 	=$^<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= E]9G444 	. 	.$n---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]9G444 	> 	>$V,n===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> .]:W555 	7 	7$~666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:W555 	$ 	$$U###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ H]:W555 	= 	=$^!<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=]:W555 	N 	N$^"+b!:L:LMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 2]9G444 	? 	?$^I>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? @]:W555 	7 	7$r2h5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:W555 	L 	L$r2hR13			:JKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L ,]9G444 	- 	-$^,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- =]:W555 	> 	>$^====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]:W555 	? 	?$^>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 7]:W555 	8 	8$^37777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]:W555 	9 	9$^48888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s  A99A= A=!B??CC%D

DD2EEE<FF!FG""G&)G&'H;;H?H?#JJ
J+KKK5LL#&L#M%%M),M)N--N14N1O33O7:O7P;;P?P?!RR	Rc                 N   t           j                            d          }fdd_        d_        t          dd          }t           j                            d          }t          di ||j        dd}t          j        d           t          j        d           t           j                            d          }d_        t          di ||j        d	d}t          j        d
           t          j        d	           t           j                            d          }d_        t          di ||j        dd}t          j        d           t          j        d           t          |j        |j                   t          |j        |j                   d S )Nr  c                     | j         dk    rdnt          |           }t          |j                  _        xj        dz  c_        t          j        | d|          j        S r  )r   rd   r  r  r  r
   r  r   )rN   r"   r  r1  s      r<   r1  z"TestPower.test_batch.<locals>.test  sZ    fkks1vvJ!*do>>DOLLALL$Q555<<rR   r   r.   r   )r1  r2  r'   r   )r   r+   r   rD  r\   )	r7   rG   r   r  r  r   r   r	  r   )r  r3   r  rO   rP   r  r1  s         @r<   r  zTestPower.test_batch  s    i##K00	= 	= 	= 	= 	=
 bdCCCi##K0055t515555T\4(((T_a(((i##K0066t626666T\2&&&T_b)))i##K0088t848888T\1%%%T_d+++TZ,,,TZ,,,,,rR   c           
      l   t           j                            d          }t          j        ddg          dfd	}t          j        g d          d d t           j        f         }dg di}t          j        g d	          }t          j        ||j        |||
          }g }|D ]U}|D ]P}	|d         D ]ED ]@dfd	}
t          j        |
|j        |	|          }|	                    |j                   AFQVt          j
        ||j        j                  }t          |j        |dd           d S )Nl   x7'\r   皙?rT   c           
          t          j        t          t          d| j        dz                                 }t          j        | |||          S )Nr   )r   r"   )r7   expand_dimsr9   r1  r   r
   r  )rN   r   r"   popmeans_expandedpopmeanss       r<   r1  z*TestPower.test_vectorization.<locals>.test  sR     "xuQQR
?S?S9T9T U U$Q(9{*.0 0 0 0rR   )r.   r   rD  r   rE   r   r  )r  r  皙?r   r-  r.  c                 4    t          j        | |          S )Nr  )r
   r  )rN   r"   alternative_i	popmean_is     r<   test2z+TestPower.test_vectorization.<locals>.test2  s*    #(#4Q	AN$P $P $P PrR   r,  r  r  )r   r   rb   )r7   rG   r   r   r]  rv  r
   r   r	  appendrn   rl   r   )r  r3   r1  nxr.  r-  r`   r  significance_inx_ir@  tmpr>  r?  r:  s               @@@r<   test_vectorizationzTestPower.test_vectorization  s    i##N33 8QH%%	0 	0 	0 	0 	0 	0 Z---..qqq"*}=!A!A!AB z":":":;;k$
B\!') ) ) * 
	. 
	.N 	. 	.%+M%: . .M%- . .	P P P P P P P $k%T7EG G G

39----..	. jcio.. 		3T======rR   c                    t           j                            d          }t          j        }|                    ddd          }|j        |j        f}t          j        g d          }t          j        ||||          }t          j	        |d d t           j
        f         |j        j                  }t          |j        |d	           d S )
N   &( r.   rE   )r   r.   r   )r  r;  r   r,  r  r   )r7   rG   r   r
   r~  integersr	  r]  r   rm   rv  rl   r   )r  r3   r1  r2  r   r-  r`   s          r<   test_ttest_ind_nullzTestPower.test_ttest_ind_null  s     i##O44b#G<<j#*$z"3"3"344k$^,OOO|AAArzM'BCIOTT	<d;;;;;;rR   c                    t           j                            d          }g dg dgg dg dgg}dg di}dgd	gg}d
dg}t          j        t          j        |j        |||          }t          |j        |d
           d S )NrH  )gv?g]NbJ?g6;?)gOt]?g7gLڷ?g0Dҗ?)gVL[?g;c?g.H&?)g#*3)?glk?g5i ?r  )r   rB  r   r.   rD  r  r;  r<  r   )r7   rG   r   r
   r   r  r	  r   )r  r3   r  r.  r2  r-  r`   s          r<   test_ttest_1samp_powerz TestPower.test_ttest_1samp_power  s    i##O44 544444644444467
 ___-$d|k%+SZ'3FD D D	3T222222rR   N)r  r  r  r  r4   r   r#  r  rF  rJ  rL  r\   rR   r<   r*  r*  o  s        69 69 69p [!- !- !-F [%> %> %>N< < <3 3 3 3 3rR   r*  c                      e Zd ZdZd Zd Zej                            de	j
        j        e	j
        j        g          ej                            dg d          d                         Zej                            de	j
        j        e	j
        j        g          ej                            dd	 ej        d
          dz  fdd ej        dd
          fg          d                         Zd Zej                                        d             Zd Zej                            dd          d             Zej                            dd          d             Zej                            dd          d             Zd Zej                                        ej                            dd          d                         Zej        j        ej                            dd          d                         Zej                            dd          d             Zd Zej                            dd          d             Zej                                        ej                            dd           d!                         Z g d"g d#d$d%d&d'd(d)d*Z!g d+g d,d-d.d/d0d1d2d*Z"ej                                        ej                            d3e!e"f          d4                         Z#ej        j        ej                            d5d6          d7                         Z$ej                            d8d9          d:             Z% e&d;          d
g f e&d          d
g d<g d=gf e&d>          d
g d<g d=dd?ggfgZ'ej                            d@e'          dA             Z(ej        )                    d          dB             Z*dCS )DTestPermutationTestr!  c                 N    t           j                            d          | _        d S )Nl   F )r7   rG   r   r3   )r  s    r<   setup_methodz TestPermutationTest.setup_method  s    9(()<==rR   c                    d }d}t          j        t          |          5  t          g ddgf|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d	
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d	           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            d S # 1 swxY w Y   d S )Nc                 :    t          j        | |f|          j        S r[   r}  rW   s      r<   r  z:TestPermutationTest.test_permutation_test_iv.<locals>.stat"  s    ?Aq6400::rR   z2each sample in `data` must contain two or more ...r   r   r   z6`data` must be a tuple containing at least two samples)r   r   r    r!   z `permutation_type` must be in...r   )permutation_typer   r   r  r%   r&   r(   r)   r*   r  r  r0   r1   r2   )r4   r5   r6   r   r:   )r  r  r;   s      r<   test_permutation_test_ivz,TestPermutationTest.test_permutation_test_iv   sl   	; 	; 	; G]:W555 	5 	5iii!-t444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 K]:W555 	) 	)T4(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)]9G444 	& 	&Q%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& /]:W555 	E 	Eiii3TDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 5]:W555 	6 	6iii3T.46 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 E]:W555 	K 	Kiii3TcJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K >]:W555 	N 	Niii3TuMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N >]:W555 	O 	Oiii3TvNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O @]:W555 	H 	Hiii3TGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H @]:W555 	I 	Iiii3THHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 0]:W555 	O 	Oiii3TvNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O A]9G444 	J 	Jiii3TyIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   AA
A+BBB.CCC3DDD E%%E),E)F22F69F6G??HH'III4JJ JK&&K*-K*L33L7:L7NNNrF   rS  )pairingssamplesindependentc                   	 | j                             d          }| j                             d          }	fd	d	_        d	_        d|dd}t	          j        ||f	fd |d          d|}t          	j        d	           t          	j        d           d	_        t	          j        ||f	fd
 |d          d|}t          	j        d           t          	j        d
           d	_        t	          j        ||f	fd |d          d|}t          	j        d           t          	j        d           t          |j        |j                   t          |j        |j                   d S )Nr.   c                     | j         dk    rdnt          |           }t          |j                  _        xj        dz  c_        t          j        | |          t          j        ||          z
  S Nr   r!   )r   rd   r  r  r  r7   r8   )rN   rX   r"   r  r~   s       r<   r~   z1TestPermutationTest.test_batch.<locals>.statistic`  sn    fkks1vvJ#&z93G#H#HI "714(((2714+@+@+@@@rR   r   r   T)r'   rS  r   r   )r+   rF   r  r   r   r   )r3   rG   r  r  r
   r   r   r   )
r  rS  rF   rN   rX   r  rO   rP   r  r~   s
            @r<   r  zTestPermutationTest.test_batchV  s    HOOBHOOB	A 	A 	A 	A 	A
 	 	#9I"$ $%q!fi Lq3?<??L LFJL LY&---Y)1---	%q!fi Lr3?<??L LFJL LY&+++Y)2...	%q!fi Lt3?<??L LFJL LY&***Y)4000T[$+...T[$+.....rR   zpermutation_type, exact_sizerU  r   r   )rV  ry  rW  r,  c                 R   | j                             d          }| j                             d          }d }|dd}t          j        ||f|fd |d          d|}t	          |j        j        d           t          j        ||f|fi |}t	          |j        j        |           d S )Nr   c                 \    t          j        | |          t          j        ||          z
  S ri   r   rW   s      r<   r~   z8TestPermutationTest.test_permutations.<locals>.statistic  +    714(((2714+@+@+@@@rR   T)rS  r   r   )r'   rF   )r3   rG   r
   r   r   r  ry   )	r  rS  
exact_sizerF   rN   rX   r~   r  r`   s	            r<   test_permutationsz%TestPermutationTest.test_permutations  s     HOOAHOOA	A 	A 	A %5"$ $$aVY KA2>,q//K KEIK KS*/333$aVY??$??S*/<<<<<rR   c                    d\  }}d\  }}}t          j        ||z   |          |k    sJ t          j                            |          }t          j                            |          }||f}d }	ddd||d}
t          ||	fd	|i|
}t          ||	fd	t          j        i|
}|j        |j        k    sJ t          |j
        |j
        d
           d S )N)r   r   )ry  	   i]  r   c                 \    t          j        | |          t          j        ||          z
  S ri   r   rW   s      r<   r~   zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statistic  r]  rR   TrW  rE   r   rS  r+   r   r3   r'   r  r   )r   binomr
   r   r   r   r7   infr~   r   r   r  r   r3   rB  nypermutationsrN   rX   r}   r~   r  r`   rP   s                r<   'test_randomized_test_against_exact_bothz;TestPermutationTest.test_randomized_test_against_exact_both  s    %S*B}R"Wb))L8888JNNN##JNNN##!t	A 	A 	A #[F FtY ' 'L '!%' 'iLLRVLtLL}....
DKd;;;;;;rR   c                    d\  }}d\  }}}d|z  |k    sJ t           j                            |          }t           j                            |          }||f}d }	ddd||d	}
t          ||	fd
|i|
}t          ||	fd
t          j        i|
}|j        |j        k    sJ t          |j        |j        d           d S )N)r   N)r   r   i }  r   r   c                 4    t          j        | |z
  |          S ri   r   rW   s      r<   r~   zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statistic  s    71q5t,,,,rR   TrV  rE   rc  r'   r  r   )	r
   r   r   r   r7   re  r~   r   r   rf  s                r<   *test_randomized_test_against_exact_samplesz>TestPermutationTest.test_randomized_test_against_exact_samples  s   
 +S,B"u|####JNNN##JNNN##!t	- 	- 	- #	[F FtY ' 'L '!%' 'iLLRVLtLL}....
DKd;;;;;;rR   c                    d| j         }}d\  }}}t          j        |          |k    sJ t          j                            |          }t          j                            |          |g}fd}t          j        |          }	ddd||d}
t          ||	fd	|i|
}t          ||	fd	t          j
        i|
}|j        |j        k    sJ t          |j        |j        d
           d S )Nr  )ry  ry  i@  r   c                 :    t          j        |           d         S Nr   r
   pearsonrrN   rX   s    r<   r  zTTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic1d  s    >!Q''**rR   TrV  rE   rc  r'   r  r   )r3   r   	factorialr
   r   r   r   rW  r   r7   re  r~   r   r   )r  r   r3   rB  rg  rh  rN   r}   r  r~   r  r`   rP   rX   s                @r<   +test_randomized_test_against_exact_pairingsz?TestPermutationTest.test_randomized_test_against_exact_pairings  s'    'S*B $$|3333JNNN##JNNN##s	+ 	+ 	+ 	+ 	+  4[AA	"	[F FtY ' 'L '!%' 'iLLRVLtLL}....
DKd;;;;;;rR   r   r  c                    | j                             dd          }| j                             ddd          }t          j        ||d          }fd	}t	          ||f|t
          j        d
| j                   }t          |j        |j        | j	                   t          |j
        |j
        | j	                   d S )Nr   r   ry   rx   ru   r   )ry   rw   rx   exact)r   r  c                 >    t          j        | |d          j        S r  )r
   ks_2sampr~   rN   rX   r   s     r<   r  z>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1d  s)    >!QW.9; ; ;;DErR   r   r'   r   r3   r   )r3   r	  r
   ry  r   r7   re  r   r~   r   r   )r  r   rN   rX   r   r  r`   s    `     r<   test_against_ks_2sampz)TestPermutationTest.test_against_ks_2samp  s     HOO!O,,HOOO33>!QKgNNN	E 	E 	E 	E 	E 1v{+4$(D D D 	x'9	JJJJ
HO$)DDDDDDrR   c                    | j                             dd          }| j                             dd          }dddd	}||         }t          j        |||
          }d }t	          ||f|t
          j        || j                   }t          |j        |j        | j	                   t          |j
        |j
        | j	                   d S )Nr   r   rv  ru   r   r   r   r  r  r  c                 6    t          j        | |          j        S r[   r
   ansarir~   rr  s     r<   r  z<TestPermutationTest.test_against_ansari.<locals>.statistic1d      <1%%//rR   r{  r   )r3   r	  r
   r  r   r7   re  r   r~   r   r   )	r  r   rN   rX   alternative_correspondencealternative_scipyr   r  r`   s	            r<   test_against_ansariz'TestPermutationTest.test_against_ansari  s     HOO!O,,HOO!O,, /8173>&@ &@" 7{C<12CDDD	0 	0 	0 1v{+6DHF F F 	x'9	JJJJ
HO$)DDDDDDrR   c           	         t           j                            dd| j                  }t           j                            dd| j                  }t          j        ||d|          }d }t          ||f|dt          j        |d| j        	          }t          |j	        |j	        | j
        
           t          |j        |j        | j
        
           d S )N)r   ru   r   r   ry   rw   rF   r;  r   r  c                 :    t          j        | ||          j        S ri   )r
   mannwhitneyur~   rW   s      r<   r~   z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statistic!  s    %a666@@rR   T)r   r'   r   r"   r3   r   )r
   uniformr   r3   r  r   r7   re  r   r~   r   r   )r  r   rN   rX   r   r~   r`   s          r<   test_against_mannwhitneyuz-TestPermutationTest.test_against_mannwhitneyu  s     M9!$(KKM9$TXNN%aLLL	A 	A 	A 1vyT+-6{$%485 5 5 	x'9	JJJJ
HO$)DDDDDDrR   c                    t           j                            dd| j                  }t           j                            ddd| j                  }t          j        ||d          }d	 }t          ||f|t          j        d
| j                  }t          |j	        |j	        | j
                   t          |j        |j        | j
                   d S )Nr   r   )ry   rx   rF   ru   r   )ry   rw   rx   rF   rw  r,   c                 :    t          j        | |d          j        S N
asymptoticr,   )r
   cramervonmises_2sampr~   rr  s     r<   r  z9TestPermutationTest.test_against_cvm.<locals>.statistic1d2  s*    -a5AC C CCLMrR   r   r{  r   )r
   r   r   r3   r  r   r7   re  r   r~   r   r   )r  rN   rX   r   r  r`   s         r<   test_against_cvmz$TestPermutationTest.test_against_cvm+  s    JNNNBBJNNqNII-a7CCC	M 	M 	M
 1v{+4$(D D D 	x'9	JJJJ
HO$)DDDDDDrR   r"   )rT   r   c                 6   t           j                            d          }|                    d          }|                    d          }|                    d          }|||f}d }d }t          j        |          }	t          j        |          }
t          j        |d          }t          j        |d	          }t          j        |d
          } |	||||          } |
||||          }d|dd| j        d}t          ||fdt           j        i|}t          ||fddi|}t          |j
        || j                   t          |j
        |j
        | j                   t          |j        |d           t          |j        |j        d           d S )Nl   Y}y!dh r   r   )r   r   r   )r   r   r   c                  (    t          j        |  j        S r[   )r
   kruskalr~   r}   s    r<   r  zITestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistic1dO  s    =$'11rR   c                  (    t          j        |  j        S r[   )r
   r  r   r  s    r<   pvalue1dzFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1dR  s    =$'..rR   )r   r   r   )r   r   r   r  r!   Fr   rW  r   r"   r   rS  r3   r'   r   r   gQ?r   r   )r7   rG   r   r   rW  rm   r3   r   re  r   r~   r   r   )r  r"   r3   rN   rX   rj   r}   r  r  r~   r   x2r6  z2expected_statisticexpected_pvaluer  r`   rP   s                      r<    test_vectorized_nsamp_ptype_bothz4TestPermutationTest.test_vectorized_nsamp_ptype_both=  s    i##$788JJQJ  JJIJ&&JJIJ&&1ay	2 	2 	2	/ 	/ 	/  4[AA	1(;; _Q	**_Q	**_Q	**&Yr2r=== &R$777 $T)$1$(D Dt[MMbfMMMkLLtLtLL 	'9	JJJJt~DIFFFF
O$????
DKd;;;;;;rR   c                    t           j                            dd| j                  }t           j                            dd| j                  }d }d }fd}t	          j        |          } |||d	          }|d         }	|d         }
d
dd| j        t          j        d}t          ||z
  f|fi |}t          ||f|fi |}t          |j
        |j
        | j                   dk    rt          |j
        |	| j                   t          |j        |
| j                   t          |j        |j        | j                   d S )N)r   r,  r   r   r  r;  c                 8    t          j        | d          j        S Nr   r  r
   wilcoxonr~   )rj   s    r<   statistic_1samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1dv  s    >!888BBrR   c                 :    t          j        | |d          j        S r  r  rr  s     r<   statistic_2samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1dz  s    >!QF;;;EErR   c                 2    t          j        | |          S )Nr  )r
   r  rz  s     r<   test_1dz:TestPermutationTest.test_against_wilcoxon.<locals>.test_1d}  s    >!QK@@@@rR   r   r!   FrV  )r   r"   r   rS  r3   r'   r   r  )r
   r  r   r3   r   rW  r7   re  r   r   r~   r   r   )r  r   rN   rX   r  r  r  r1  r   r  r  r  rO   rP   s    `            r<   test_against_wilcoxonz)TestPermutationTest.test_against_wilcoxonm  s    M9!$(KKM9$TXNN	C 	C 	C	F 	F 	F	A 	A 	A 	A 	A /88411%%% a[
#Q{$-dh!v' '  1(:CCdCCA(:CCdCC 	TYGGGG+%%DNM	JJJJZdi@@@@T[tyAAAAAArR   c           	      @   | j                             ddd          }d||dk    <   dd} ||          dd}}}t          j        ||||          }t          j        |f|d	d
t
          j        | j         |          }t          |j        |j        | j	                   d S )Nr   r   r.   r   rT   c                 6    t          j        | dk    |          S )Nr   r!   r7   r   r  s     r<   r~   z=TestPermutationTest.test_against_binomtest.<locals>.statistic  s    6!a%d++++rR   rB  r  TrV  )r   rS  r'   r3   r   r   r   )
r3   rI  r
   r   r   r7   re  r   r   r   )	r  r   rN   r~   kre   rL  r   r`   s	            r<   test_against_binomtestz*TestPermutationTest.test_against_binomtest  s     Ha,,!q&	
	, 	, 	, 	, )A,,Ca1?1aDDD$aT96?13TX1<> > > 	
HO$)DDDDDDrR   c                 ~   | j                             d          }|| j                             d          z   t          j        |d          }fd}t	          |f|dt
          j        | j                   }t          |j        |j        | j	                   t          |j
        |j
        | j	                   d S )	Nr,  r   rw  r,   c                 <    t          j        | d          j        S r  )r
   
kendalltaur~   rr  s    r<   r  z@TestPermutationTest.test_against_kendalltau.<locals>.statistic1d  s    #Aq>>>HHrR   rU  )rS  r'   r3   r   )r3   r	  r
   r  r   r7   re  r   r~   r   r   )r  rN   r   r  r`   rX   s        @r<   test_against_kendalltauz+TestPermutationTest.test_against_kendalltau  s    HOOO##Q'''#Aq999	I 	I 	I 	I 	I t[:+-6txA A A 	x'9	JJJJ
HO$)DDDDDDrR   c                    fd}t           j                            d          }|                    d          dk                        t                    }|                    d          d|z  z   dk                        t                    t
          j                            |          d         }t          |f|dt           j	        ||          }t          j
        ||	          }t          |j        |d                    d S )
Nc                 B    t          j        | dk    dk    z            S r  r  rr  s    r<   r~   z@TestPermutationTest.test_against_fisher_exact.<locals>.statistic  s     616a1f-...rR   l   	(yM4 r  g333333?g      ?r   rU  )rS  r'   r   r3   r  )r7   rG   r   astypefloatr
   contingencycrosstabr   re  fisher_exactr   r   )	r  r   r~   r3   rN   tabr`   rP   rX   s	           @r<   test_against_fisher_exactz-TestPermutationTest.test_against_fisher_exact  s    	/ 	/ 	/ 	/ 	/ i##$788ZZ]]S ((//ZZ]]T!V#c)11%88((A..q1tY+-6{#&( ( ( !#;???
DG,,,,,rR   )r-  r   c                 @   | j                             d          }| j                             d          }| j                             d          }t          j        ||          }t          j        ||          }t          j        ||          }|d         }|||f}d }d }t	          j        |          }t	          j        |          }	 |t          j        | d	|i}
 |	t          j        | d	|i}d
|dddd}t          ||fdt          j	        i|}t          ||fddi|}t          |j        |
| j                   t          |j        |j        | j                   t          |j        || j                   t          |j        |j        d           d S )N)r   r   r   r   )r   r   r   )r   r   r   r!   r   c                  :    t          j        | dd          j        S )NTr  rankedr-   )r
   page_trend_testr~   r  s    r<   r  zLTestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.statistic1d  s'    (d0<> > >>GHrR   c                  :    t          j        | dd          j        S )NTrw  r  )r
   r  r   r  s    r<   r  zITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1d  s'    (d079 9 99?@rR   r"   Fr   rU  r  r'   rv   r   r   r   )r3   rG   r
   rankdatar   rW  r7   broadcast_arraysr   re  r   r~   r   r   )r  r"   rN   rX   rj   r}   r  r  r~   r   r  r  r  r`   rP   s                  r<   #test_vectorized_nsamp_ptype_samplesz7TestPermutationTest.test_vectorized_nsamp_ptype_samples  s    HOOO++HOOO++HOOO++N14(((N14(((N14(((aD1ay	H 	H 	H	@ 	@ 	@  4[AA	1(;;&Y(;T(BNNN &""5t"<H4HH $T)$.q: :t[MMbfMMMkLLtLtLL'9	JJJJt~DIFFFF
O$)DDDD
DKd;;;;;;rR   r   )r    r   g      @r6  g?g&_?g      @gd~$I"@glu?)rN   rX   expected_lessexpected_2sidedexpected_Pr_gte_S_meanr  expected_avgexpected_std)o   k   rE   r   r  j   m   l   )	r  r  r  b   i   r  n   r  r   gd?gd?gYo5 ?g     @@@g{C@gDmFA@casec                    |d         }|d         }|d         }|d         }|d         }|d         }|d         }|d         }	d	 }
t           j                                        5 }|                    t          d
           t          ||f|
t           j        d          }t          ||f|
t           j        d          }ddd           n# 1 swxY w Y   t          |j        || j	                   t          |j
        |d           t          |j
        |d           t          |j                                        |d           t          |j                                        |	d           |j        }|j                                        }t          |j                  }t          j        t          j        |j        |z
            t          j        ||z
            k              |z  }t          ||           dS )a  
        Results above from SAS PROC NPAR1WAY, e.g.

        DATA myData;
        INPUT X Y;
        CARDS;
        1 1
        1 2
        1 3
        1 4
        2 1.5
        2 2
        2 2.5
        ods graphics on;
        proc npar1way AB data=myData;
            class X;
            EXACT;
        run;
        ods graphics off;

        Note: SAS provides Pr >= |S-Mean|, which is different from our
        definition of a two-sided p-value.

        rN   rX   r  r  r  r  r  r  c                 6    t          j        | |          j        S r[   r  rr  s     r<   r  z7TestPermutationTest.test_with_ties.<locals>.statistic1d0  r  rR   z$Ties preclude use of exact statisticr   )r'   r   r  Nr   g|=r   gư>)r7   testingr   r  UserWarningr   re  r   r~   r   r   r  r8   r   rd   r   r   )r  r  rN   rX   r  r  r  r  r  r  r  r  r`   rP   Sr8   re   Pr_gte_S_means                     r<   test_with_tiesz"TestPermutationTest.test_with_ties
  s@   8 II!"67_-01!%&>!?N+N+	0 	0 	0 Z))++ 	=sJJ{$JKKK"Aq6;BF/57 7 7C#QFKRV0;= = =D		= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	'9	JJJJ
M>>>>_5AAAA.3355|$OOOO.2244lNNNN M$))++%&&rvc&;D&@AA"$&4.. 1 2 2234.>>>>>s   "ACCCzalternative, expected_pvalue))r   g?)r   gOO?)r  g<OO?c                     g d}g dd}fd}t          |f|dt          j        |          }t          |j        || j                   t          |j        |d	           d
S )aU  
        Results above from R cor.test, e.g.

        options(digits=16)
        x <- c(1.76405235, 0.40015721, 0.97873798,
               2.2408932, 1.86755799, -0.97727788)
        y <- c(2.71414076, 0.2488, 0.87551913,
               2.6514917, 2.01160156, 0.47699563)
        cor.test(x, y, method = "spearm", alternative = "t")
        )g@9?gY,?gOQ?g[iY@g|?g鈶BE)gQGn@gU?gz˱@?gmGA6@gB @g˭?g?c                 8    t          j        |           j        S r[   )r
   	spearmanrr~   rr  s    r<   r  zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1db  s    ?1a((22rR   rU  )rS  r'   r   r   gvIh%<=r   N)r   r7   re  r   r~   r   r   )r  r   r  rN   r  r  r`   rX   s          @r<   test_against_spearmanr_in_Rz/TestPermutationTest.test_against_spearmanr_in_RH  s    (1 1 10 0 0/	3 	3 	3 	3 	3 t[:+-6{L L L 	'9	JJJJ
O%@@@@@@rR   r+   )rT   r   c                     t          j        t          d          5  t          t	          j        g d|                     d d d            d S # 1 swxY w Y   d S )Nz`batch` must be positive.r   r   )r4   r5   r6   ro   r   _batch_generator)r  r+   s     r<   test_batch_generator_ivz+TestPermutationTest.test_batch_generator_ivk  s    ]:-HIII 	A 	A-iii??@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   %AAAr   rA   )r   r   ru   ry  r  ziterable, batch, expectedc                 Z    t          t          j        ||                    }||k    sJ d S r[   )ro   r   r  )r  iterabler+   r   gots        r<   test_batch_generatorz(TestPermutationTest.test_batch_generatort  s/     ;/%@@AAhrR   c                     g d}g d}d }t          j        ||f|dd          }|j        |j        |j        }}}dt          j        ||dz
  k              z  t          |          z  }||cxk    rd	k    sn J d S )
N)r   r   r   r   )r   r   r,  ry  c                 8    t          j        | |          d         S ro  rp  rr  s     r<   r~   zFTestPermutationTest.test_finite_precision_statistic.<locals>.statistic  s    >!Q''**rR   FrU  )r   rS  r   r!  gUUUUUU?)r
   r   r~   r   r  r7   r   rd   )	r  rN   rX   r~   r`   rr   null	correct_ps	            r<   r  z3TestPermutationTest.test_finite_precision_statisticz  s    
 LLLL	+ 	+ 	+ $aVY56@B B B-S5J46tq5y0111CII=	))))c))))))))rR   N)+r  r  r  r   rP  rT  r4   r   r"  r7   rG   rH   r   r  r   rs  rd  r_  ri  r#  rl  rt  r|  r  r  r  r!  r  r  r  r  r  r  
tie_case_1
tie_case_2r  r  r  r1  batch_generator_casesr  r'  r  r\   rR   r<   rN  rN    s       D> > >
2J 2J 2Jl [^bi.C.0i.C.E F F[/CCCE E"/ "/E EF F"/J [^bi.C.0i.C.E F F[;)+<7+<Q+?+?+BC/,mgmAq.A.ABDE E= =	E EF F=4< < <2 [< < <2< < <: [],LMME E NME& [],LMME E NME* [],LMME E NME"E E E$ [[VW--*< *< .- *<\ [[],LMM#B #B NM #BJ [],LMME E NME,E E E" [],LMM- - NM-$ [[VW--'< '< .- '<V $||---#/%(,8(+"*GE EJ ?>>CCC#/%1,8(,"+XG GJ [[Vj*%=>>:? :? ?> :?x [[;>? ?A A	? ? 
A< [Wg..A A /.A $eAhh2.#eAhhIIIyyy+AB#eAhhIIIyyy1a&+IJL [824 4 4 4 [1* * * * *rR   rN  c                  (   t          j        g dt                    t          j                  } t	                      }d}t          j                  D ]P}|dz  }t          j        || d d                   }|                    t          d |D                                  Qt          j
        fdt          t                    dz
            D                       }t          ||           t          t          |          |           d S )N)r   r   r   r  r   r   rT   c                 ,    g | ]}t          |          S r\   )	frozenset)r   r]   s     r<   
<listcomp>z4test_all_partitions_concatenated.<locals>.<listcomp>  s    !E!E!E1)A,,!E!E!ErR   c           
          g | ]D}t          j        t          |d                    t          |dz   d                              ES r  )r   rd  r   )r   r]   re   s     r<   r  z4test_all_partitions_concatenated.<locals>.<listcomp>  sU     2 2 2  c!ABB%jj#a!g,,?? 2 2 2rR   )r7   r   intcumsumsetr   _all_partitions_concatenatedsplitaddr9   prodr1  rd   r   )ncall_partitionsr  partition_concatenatedpartitioningr   re   s         @r<    test_all_partitions_concatenatedr    s    	#&&&A	1BUUNG"-"J1"M"M H H1x 63B3@@5!E!E!E!E!EFFGGGGw 2 2 2 2!&s1vvax2 2 2 3 3H (###^$$h/////rR   fun_namer   r   r   c                 x   t           j                            d                              d          fd}fddfdd|d	d
}ddi}t          t          |           }||          }|                    |           fd} |d|d d|  |d|dd| d } |d|d d|  |d|dd| d S )Nl   r: r.   r   c                 F    t           j                            |           S )Nr   )r
   r   r   r  s    r<   r   z&test_parameter_vectorized.<locals>.rvs  s    z~~4c~:::rR   r?   )r}   r3   r-   rV  )r}   r3   rS  )r   r   r  r'   rE   c                 t    | j         dk    st          j        |           sJ t          j        | |          S rZ  )r   r7   r3  r8   )rN   r"   r   s     r<   r~   z,test_parameter_vectorized.<locals>.statistic  s7    vzzR^Av66zzzwqt$$$$rR   )r~   r   Tc                 D    | j         dk    sJ t          j        |           S r  )r   r7   r8   r  s    r<   r~   z,test_parameter_vectorized.<locals>.statistic  s    v{{{{wqzzrR   Fr\   )r7   rG   r   r:  r
   r   )	r  r   fun_optionscommon_optionsr  optionsr~   r3   r   s	          @@r<   test_parameter_vectorizedr    si   
 )


/
/CZZRZ  F; ; ; ; ; +13+7!9 !917	#<E(G (G28'E'E	G GK
 $S)N
%
"
"C(#GNN>"""% % % % % C8)88888C8)88888   C8)88888C9)9999999rR   c                       e Zd Zd ZdS )TestMonteCarloMethodc                     d}t           j                            d          }t          j        t
          |          5  t          j        |j        |           d d d            d S # 1 swxY w Y   d S )Nz.Use of `rvs` and `rng` are mutually exclusive.ir   )r   r3   )r7   rG   r   r4   r5   r6   r
   MonteCarloMethod)r  r;   r3   s      r<   test_rvs_and_random_statez.TestMonteCarloMethod.test_rvs_and_random_state  s    Bi##H--]:W555 	< 	<"szs;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   A&&A*-A*N)r  r  r  r
  r\   rR   r<   r  r    s#        < < < < <rR   r  )Br4   numpyr7   numpy.testingr   r   r   scipy._lib._utilr   scipy._lib._array_apir   scipy._lib._array_api_no_0dr   r	   scipyr
   r   scipy.optimizer   scipy.statsr   r   r   r   scipy.stats._resamplingr   r=   r   r"  rQ   rf   rs   r#  r(  r   tests_Ritemsr   r   r   tests_against_itself_1sampr   tests_against_itself_2sampr   r  r  r  r  r  r#  r)  r7  r@  rN  rR  rY  rf  filterwarningsrz  r  r  r*  rN  r  r  r  r\   rR   r<   <module>r     s        J J J J J J J J J J ) ) ) ) ) ) * * * * * * H H H H H H H H                       L L L L L L L L L L L L - - - - - - - - -<8 <8 <8~ #A#A#ABB++; ; ,+ CB;" #A#A#ABB> > CB>2 #A#A#ABB++D%=11(: (: 21 ,+ CB(:V ABB#A#A#ABBO O CB CB O0 #' " "
 +W]]__==C C >=C.7  7  7 t1 1 12 (,,0%)+ + 
 +399;;= =# #= = #L (+,/1 1  +399;;= =, ,= = ,^ G\#:;;!Q((> > )( <;>. EFF#A#A#ABB!Q((> > )( CB GF>, #A#A#ABB( ( CB( #A#A#ABB6 6 CB6"2 2 2& /!T;;    <; 2 ;<<#A#A#ABB; ; CB =<;.! ! !& m]%CDD- - ED-2 +++..++" " ,+ /.". . ." ++    ,+ 4 #A#A#ABB> > CB >> 455!> !> 65 !>H= = =*u8 u8 u8 u8 u8 u8 u8 u8pe3 e3 e3 e3 e3 e3 e3 e3Ps	* s	* s	* s	* s	* s	* s	* s	*x0 0 0* NNNP P: :P P:B< < < < < < < < < <rR   