
    _MhA                    x
   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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dddZ)d Z*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*                                     Z0e j                            dg d          d+             Z1e j                            dg d          d,             Z2d- Z3e j                            d.d d/g          d0             Z4e j        $                    d1          e j                            dg d          d2                         Z5d3 Z6e j                            d4d5d6g          d7             Z7e j                            d8g d9          e j                            dg d          d:                         Z8d; Z9e j                            dg d          d<             Z:e j        j#        e j                            dg d          d=                         Z;e j        j#        e j        <                    d>          d?                         Z=d@ Z> G dA dB          Z? G dC dD          Z@ G dE dF          ZAdG ZBe j                            dHg dI          dJ             ZC G dK dL          ZDdS )M    N)assert_allcloseassert_equalsuppress_warnings)array_api_compatible)rng_integers)array_namespace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    a/var/www/html/test/jupyter/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           t           j                            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   r0         d   )r-   r/   random_stater$   r)   )r-   r/   r$   r)   )r9   randomseedrandr   r:   r   confidence_intervallowhighstandard_error)r/   r$   xres1res2s        r>   test_bootstrap_batchrS   P   s     INN1
	r2r""AaT27$v"#$CA A ADINN1aT27"VC1 1 1D )-t/G/KLLL).0H0MNNN$d&9:::::    c                    t           j                            d           d}t           j                            |          t           j                            |          d	dd	fd	}t          j        t                              }t          |f|d          }t          fdd          }t          |j        |j                   t          |j	        |j	                   d S )
Nr   rG   c                 :    | |z
  dz                       |          S )Nr   r#   r:   rP   yr$   s      r>   my_statisticz+test_bootstrap_paired.<locals>.my_statistick   s    1qD)))rT   c                 @    |          }|          } ||          }|S N )ir$   abresr[   rP   rZ   s        r>   my_paired_statisticz2test_bootstrap_paired.<locals>.my_paired_statisticn   s+    aDaDl1a  
rT   r4   T)r   r5   rV   )
r9   rI   rJ   rK   arangelenr   r   rL   rO   )	r/   nrc   r_   rQ   rR   r[   rP   rZ   s	         @@@r>   test_bootstrap_pairedrh   c   s     INN1A
	qA
	qA* * * *        		#a&&AaT.A666DaV\$A>>>DD,d.FGGGD')<=====rT   r   TFc           	      z   t           j                            d           d	d}d}||         }t           j                            |          }t           j                            |          }t           j                            |          }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   rV   c                     |                      |          |                     |          z   |                     |          z   S Nr#   rX   )rP   rZ   zr$   s       r>   r[   z/test_bootstrap_vectorized.<locals>.my_statistic   s<    vv4v  166t6#4#44qvv4v7H7HHHrT   )r0   rE   rF   rG   )r   r/   r5   r$   r)   )rG   )r   r   r   rd   )r9   rI   rJ   rK   r   bootstrap_distributionshaperO   broadcast_toreshaper   rL   rM   rN   listpopr   )r/   r$   r   r[   rn   	n_samplesrP   rZ   rl   rQ   rp   rR   result_shapes                r>   test_bootstrap_vectorizedru   }   s,    INN1I I I I EdI
	y!!A
	y!!A
	y!!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9rT   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sizerH   ffffff?r   )dfry   rz   )
confidence)data	statisticr)   r/   r5   r&   gMb@?rtolga2U0*3?atolr   r)   r1   lessr&   alternativegreaterr^   )r9   rI   default_rngr   normrvstrf   r:   semintervalstddictr   r   rL   rO   updaterN   ppfrM   )	r/   r5   r   alphadistexpected_intervalexpected_seconfigrb   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NrT   )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)r0   rF         )@r   g+@            "   2   Q   Y   y         i@B r   )r)   r/   r5   g{Gzt?r   )r9   arrayr   r:   r   rL   )r/   expectedrP   rb   s       r>   test_bootstrap_against_Rr      se    " 	 5 5 5 	6 	6A
QD"'wv  CC+XEBBBBBBrT   i  i  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 rk   )r   skew)rP   rZ   r$   s1s2s        r>   r   z1test_multisample_BCa_against_R.<locals>.statistic   s3    Z%%%Z%%%BwrT   l   tgy4r@   rG   )r/   r-   r5   rA   bcag1*g333333ÿg333333?Q?)r9   rI   r   r   r   r:   rL   abs)rP   rZ   r   r5   	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rT   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)	r0         (   .   r   4   h      )   r   &   ^   c         r   c                 \    t          j        | |          t          j        ||          z
  S rk   r9   r:   )rl   rZ   r$   s      r>   r   z:test_BCa_acceleration_against_reference.<locals>.statistic,  s+    wqt$$$rwqt'<'<'<<<rT   rV   r|   rG   ge{?r   )r9   r   r   r   rm   _resampling_bca_intervalr   )rZ   rl   r   r   rb   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0rT   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 )Nr   rG     ?rw   r   ry   rz   i  r{   r   rV   r   r&   r)   r-   r/   r$   皙?r9   rI   rJ   r   r   r:   r   r   rL   sum	binomtestpvalue)r/   r   rg   r)   r&   r   	stat_truen_replicationsr   rb   cici_contains_truer   s                r>   #test_bootstrap_against_itself_1sampr   ;  s    INN1AK :!1%%%D		I N88.!,8--D
TG g%5 +!  C 
	 B vr!uy0YA5FGHHx'''' _-~-/ //5 C<<<<<<rT   i|  iz  )r@   rA   c           	      T   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   rG   x   r   r   rV   c                 d    t          j        | |          }t          j        ||          }||z
  S rk   r   )data1data2r$   mean1mean2s        r>   my_statz4test_bootstrap_against_itself_2samp.<locals>.my_statw  s4    D)))D)))u}rT   r   r   r     r   r   r   rd   r   )r/   r   n1n2r)   r&   r   dist1dist2r   r   r   r   rb   r   r   r   s                    r>   #test_bootstrap_against_itself_2sampr   g  s^    INN1	B	BK    J1A&&&EJ3a(((E

uzz||+I NIINB/I00EIINB/I00E
UEN%%5 +!  C 
	 B vr!uy0YA5FGHHx'''' _-~-/ //5 C<<<<<<rT   r@   rA   r   c           	         dddfd}t           j                            d           t           j                            dd          }t           j                            dd          }t           j                            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]   rX   .0sampler$   s     r>   	<genexpr>zEtest_bootstrap_vectorized_3samp.<locals>.statistic.<locals>.<genexpr>  /      886;;t$$888888rT   r   r$   r   s   ` r>   r   z2test_bootstrap_vectorized_3samp.<locals>.statistic  &    88884888888rT   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'''rT   r   rw   TrG   )r    r$   r)   r/   r5   Fr9   rI   rJ   rK   r   r   rL   rO   )	r/   r$   r  rP   rZ   rl   rQ   rR   r   s	           @r>   test_bootstrap_vectorized_3sampr    s      9 9 9 9 9( ( ( ( ( INN1
	q!A
	q!A
	q!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')<=====rT   z'Failure is not concerning; see gh-14107c           
      `   ddfd}t           j                            d           t           j                            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 rk   rX   rP   r$   s     r>   r   z2test_bootstrap_vectorized_1samp.<locals>.statistic  s    vv4v   rT   c                 8    | j         dk    sJ  | d          S Nr   r   r#   r   )rP   r   s    r>   r  z5test_bootstrap_vectorized_1samp.<locals>.statistic_1d  s'    v{{{{y####rT   r   rw   TrG   )r    r$   r)   r-   r/   r5   Fr0   r   r  )r/   r$   r  rP   rQ   rR   r   s         @r>   test_bootstrap_vectorized_1sampr    s    ! ! ! !$ $ $ $ $
 INN1
	q!AaT9D!$D  D aT<E!$Bv  D D,d.FGGGD')<=====rT   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#        @rB   ignore)invalidz0The BCa confidence interval cannot be calculatedr   r.   )r  r  r   )r9   errstater6   warnsr   DegenerateDataWarningr   r:   r   rL   nanrO   )r/   r   msgrb   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   rG   r{   rH   i[%  r/   r)   r5   F)r/   r)   r5   r    )r9   rI   r   r   r   r   r   r   r   rL   rO   
isinstancefloat64)r/   r5   r   r   rb   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5rT   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   rG   r  rB   if  r  )r9   rI   r   r   r   r   minr   rL   rM   r   maxr   rN   )r5   r   r   true_minrb   rR   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 2rT   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 rG   r   r   l   mdpi4 r|   rA   )r)   r5   r&   r/   r   rB   )r)   r5   r&   r/   r1   +=r   )	r9   rI   r   r   r   r:   r   rO   rL   )r#  r5   rP   r   r   n3rb   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           rT   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   rG   r  rV   )r   r   r5   r$   r&   r   r   r   r|   r   r   r   r%  r   z`alternative` must be one ofr   r   z	ekki-ekkir^   )r9   rI   r   r   r   r   r   r   r   r   r   rL   rN   rM   isneginfisposinfr6   r7   r8   )r/   r5   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   rw      r   rV   .r#   r   r,   )r9   rI   rJ   rK   nextr   _jackknife_resamplerangedeletearray_equalconcatenaterq   )rn   rP   rZ   r_   slcr   y2s          r>   test_jackknife_resampler:  1  s    EINN1
	A[,Q//00A59 - - Q	l9Q+++~c8,,,,,,	[<QaHHHII
! 
! 
!B>"a       rT   rng_nameRandomStater   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   r0   r/  r4   .rV   )getattrr9   rI   r6   skiprJ   rK   r   _bootstrap_resampler4  r   r6  )r;  r5   rng1rng2r)   rn   rP   rZ   r_   r8  jsr   s               r>   test_bootstrap_resamplerD  D  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,,,,,,- -rT   score)r         ?r   c                     d}t           j                            d           t          j        j        | }t	          j        || d          }d } ||| d          dz  }t          ||d           d S )N)r0         r   rV   r#   c                 D    t          j        t          j        || |          S r]   )r9   apply_along_axisr   percentileofscore)r`   rE  r$   s      r>   vectorized_posz0test_percentile_of_score.<locals>.vectorized_posf  s    "5#:D!UKKKrT   rG   V瞯<)r9   rI   rJ   rK   r   _percentile_of_scorer   )rE  r$   rn   rP   prM  p2s          r>   test_percentile_of_scorerR  ^  s     EINN1
	A(E;;;AL L L 
5r	*	*	*3	.BAr5!!!!!rT   c                  |   d} t           j                            d           t          j        j        |  }t          j        j        | d d          dz  }t	          j        ||          }t          | d                   D ]>}||         }t          j        ||         ||         d          }t          ||d           ?d S )N)r0   rH  r   rV   rG   r#   rN  )	r9   rI   rJ   rK   r   _percentile_along_axisr4  rA   r   )rn   rP   qrZ   r_   rb   r   s          r>   test_percentile_along_axisrV  n  s    
 EINN1
	A
	crc
#c)A*1a00A58__ . .d=1qt"555Xu----. .rT   c                    d fd}t          j        |          }t          j                            d           t          j                            ddd          }t          j                            ddd          }t          j                            ddd          } ||||           } |||||           }t          ||           d S )	Nc                 :     t           fd|D                       S )Nc              3   B   K   | ]}|                               V  d S r]   rX   r   s     r>   r   z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>  r   rT   r   r   s   ` r>   r   z+test_vectorize_statistic.<locals>.statistic  r   rT   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  rT   r   r   rw   r0  r   r#   )r   _vectorize_statisticr9   rI   rJ   rK   r   )	r$   r  
statistic2rP   rZ   rl   rQ   rR   r   s	           @r>   test_vectorize_statisticr]    s    9 9 9( ( ( ( ( 1,??JINN1
	q!QA
	q!QA
	q!QA9Q14(((D:aAD)))DD$rT   c                 2   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   rF  )rG   rG   r  c                 ~    t          j        t          j        | |          t          j        | |d          g          S )Nr   )ddof)r9   asarrayr:   r   )r   r$   s     r>   r   z/test_vector_valued_statistic.<locals>.statistic  s=    z274..6$15557 8 8 	8rT   rV   '     )r/   r$   r)   r-   r   r#   Z   rG   r   rG   )r   rG   rb  )r9   rI   r   r   r   r   r   r   rL   rM   TrN   allrn   rO   rm   )r/   r5   paramsr   r   rb   countss          r>   test_vector_valued_statisticrj    sJ    )



+
+CFZ^V*3GGGF8 8 8 VIyb $C1 1 1C VS,02V;.35>@  F 6&B,6&C-     "&,8888"'-9999#x////%+~======rT   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   )r:   var)rP   rZ   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GrT   c                 V    | |z   }| |z   }t          j         |||                    S r]   )r9   
nan_to_num)tptnfpfnr$   actualr   rq  s          r>   r   z7test_vector_valued_statistic_gh17715.<locals>.statistic  s3    b7}[[4@@AAArT   c                 <     g || R  t           j        df         S )N.)r9   newaxis)r$   argsr   s     r>   statistic_extradimz@test_vector_valued_statistic_gh17715.<locals>.statistic_extradim  s)    y%$%%%%bj#o66rT   )r   r   r   r   )r   r   r   r   )r   r0  r   r   )r   r0  r   r   )r      r   r   T)r5   r   r   rN  r   )
r9   rI   r   r   rf  r   r   rL   rM   rN   )r5   r|  r   rb   r  rq  r   s        @@r>   $test_vector_valued_statistic_gh17715r~    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> > > > > >rT   c                  0   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        t          |          5  t          j        ||d d	d
df         f|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        |j        |j        d
dd d	f         f|d           d d d            d S # 1 swxY w Y   d S )NiF|)r0   r   )rE   r   c                 :    t          j        | ||          j        S rk   r   	ttest_indr   rY   s      r>   r   z test_gh_20850.<locals>.statistic  s    q!$///99rT   r   r#   z-Ignoring the dimension specified by `axis`...r   r0   r   )	r9   rI   r   r   r   rf  r6   r  FutureWarning)r5   rP   rZ   r   r=   s        r>   test_gh_20850r    s`   
)



+
+C

7A

7A: : : 
OQFI&&&	OQS!#J	2222 >G	m7	3	3	3 3 3Acrc1fI	2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	m7	3	3	3 5 5Acrc1Q3hK()4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	m7	3	3	3 A Aac!A#ss(m,ia@@@@A A A A A A A A A A A A A A A A A As6   $"CCC8$D((D,/D,0FFFc            
       j   e Zd ZdZdefdZd Zed             Zed             Z	e
j        j        ed                         Zee
j                            d ed	d
                    d                         Ze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 )NrH   dtype)ra  )r{  kwdsr  rsrvs_inxps     r>   <lambda>z6TestMonteCarloHypothesisTest.get_rvs.<locals>.<lambda>  s4    RZZ0V20VQU0V0V6; &0 &= &= rT   r^   )selfr  r  r  r  s    ````r>   get_rvsz$TestMonteCarloHypothesisTest.get_rvs  s.    = = = = = = = 	=rT   c                     fd}|S )Nc                                          | |          }                    | |d          }| j        |         }|||z  dz  z  S )Nr#   r   )r$   
correctionrF  )r:   rm  rn   )rP   r$   mvrg   r  s        r>   r   z=TestMonteCarloHypothesisTest.get_statistic.<locals>.statistic   sL    %%Aqt22AA!cz>!rT   r^   )r  r  r   s    ` r>   get_statisticz*TestMonteCarloHypothesisTest.get_statistic  s$    	" 	" 	" 	" 	" rT   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 rk   rX   )rP   r$   r  s     r>   statz@TestMonteCarloHypothesisTest.test_input_validation.<locals>.stat  s    77147(((rT   z/Array shapes are incompatible for broadcasting.r   rw   )r   rw   r   c                     dS Nr   r^   rY   s      r>   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>      1 rT   rV   r#   r!   r"   r   r   0`rvs` must be callable or sequence of callables.r  r  r  g      @c                     | S r]   r^   rP   s    r>   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>#      a rT   If `rvs` is a sequence...c                     | S r]   r^   r  s    r>   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>(  r  rT   c                     | S r]   r^   r  s    r>   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>(  r  rT   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   )ra  r   r   r   )r{   r  s    r>   r   z?TestMonteCarloHypothesisTest.test_input_validation.<locals>.rvsD  s%    ::ejnn$n77888rT   r]   )ra  zerosr   r   r   r6   r7   r8   r   r<   r:   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]   rX   )rP   r  s    r>   non_vectorized_statisticzWTestMonteCarloHypothesisTest.test_input_validation_xp.<locals>.non_vectorized_statisticM  s    771::rT   z!`statistic` must be vectorized...r  r   Fr   )
ra  r	   r   r   r   r   r6   r7   r8   r:   )r  r  r  r=   r   s    `   r>   test_input_validation_xpz5TestMonteCarloHypothesisTest.test_input_validation_xpK  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                 l   	 t           j                            d          }|                    |                    d                    }t          |          	 	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 r0   r   c                     | j         dk    rdn| j        d         }t          |j                  _        xj        dz  c_                                       | |          S r
  )r   rn   r   
batch_sizecounterr  )rP   r$   r  r  r   xp_tests      r>   r   z:TestMonteCarloHypothesisTest.test_batch.<locals>.statisticd  sh    fkkqwqzJ#&z93G#H#HI ".4%%g..qt<<<<rT   r   r   T)r   r   r)   r    i r  r   r-   r     r   r   r   r^   )r9   rI   r   ra  standard_normalr   r  r  r  r   r   r   r   r   r   r   )
r  r  r5   rP   r  rQ   rR   res3r   r  s
   `       @@r>   
test_batchz'TestMonteCarloHypothesisTest.test_batch[  s   
 i##K00JJs***3344!!$$	= 	= 	= 	= 	= 	= 	=
 	 	)#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1rT   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          |	          }|                     |          }|                     t          j        j        |||          }t          |	||dd|          }|                    |
j        |          }|                    |
j        |          }t%          |j        |           t%          |j        || j                   d S )Nit$ r   r   r   rG   r  64float32r  )r{   r          )popmeanr$   r  )r  r  Ti N  )r    r)   r$   r   )r9   rI   r   ra  r  r  r>  r  r   ttest_1sampr   r  r  r   r   r   r   r   r
   r   )r  r$   r  r5   r{   dtype_default	dtype_strdtype_npr  rP   r   r  r   r   rb   ref_statistic
ref_pvalues                    r>   test_axis_dtypez,TestMonteCarloHypothesisTest.test_axis_dtype  s~   
 i##G,,yyT
 

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

8#5U
CCZZuZ==
}555
JTY??????rT   r   )	two-sidedr   r   c                 F   t           j                            d          }|                    d          }t	          j        |d|          }|                    |          }t          |          }|                     |          }| 	                    t          j
        j        ||          }t          ||||          }	t          |	j        |                    |j                             t          |	j        |                    |j                  | j                   d S )N)rI  r   r  r  r  r   )r9   rI   r   r  r   r  ra  r   r  r  r   r   r   r
   r   r   r   )
r  r   r  r5   rP   r  r  r   r   rb   s
             r>   test_alternativez-TestMonteCarloHypothesisTest.test_alternative  s     i##H--R((2;???JJqMM!!$$&&w//	ll5:>32l66q#ykJJJrzz#-'@'@AAA
BJJsz$:$:KKKKKKrT   )r   r   r`   g      rF  rw   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  rI  r`   r{   rH   r  c                 \    t          j        | t           j        j        d          j        S Nasymp)moder   )r   ks_1sampr   cdfr   )rP   r   s    r>   statistic1dzGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1d  s-    >!UZ^'.9; ; ;;DErT   r   Fr)   r    r   r   r   r   r   )r9   rI   r   r   skewnormr   r  r   r  r  r   r   r   r   r   )	r  r   r`   r5   rP   r   r  norm_rvsrb   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 #"rT   hypotestr   r   r  r1  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 rk   )r   )rP   r$   r  s     r>   r   zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statistic  s    8AD)))33rT   Tr    r   r   )r9   rI   r   r   r  r   r  r   r   r   r   r   r   )
r  r  r   r`   r5   rP   r   r   r  rb   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DrT   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 rk   )r   
normaltestr   r  s     r>   r   zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statistic  s    #AD111;;rT   Tr   r  r   )r9   rI   r   r   r  r   r  r  r   r   r   r   r   r   )r  r`   r5   rP   r   r   r  rb   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DrT   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rI  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DrT   r   Fr   r  r   )r9   rI   r   r   r  r   r  r   r  r  r   r   r   r   r   )r  r`   r5   rP   r   r  r  rb   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DrT   	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rG   r  )	r9   rI   r   r   tukeylambdar   andersonr   critical_values)r`   r5   rP   r   r  r_   s       r>   funz?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.fun  s\    )''	22C!%%ac%DDA~a33H%(@(CCCrT   r   )x0r  rG   r  c                 8    t          j        |           j        S r]   )r   r  r   )rP   r  s    r>   r  zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1d/  s    >!Y//99rT   r   Fr   r  r   r   )r   filterRuntimeWarningr   successrP   r9   rI   r   r   r  r   r  r   significance_levelr  r>  r   r   r   r   )r  r  r_   r  supsolr`   r5   rP   r   expected_stat
expected_pr  dist_rvsrb   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 rG   Tr   r  g-C6?)r9   rI   r   r  r   r:   r   )r  r5   rP   rb   s       r>   test_p_never_zeroz.TestMonteCarloHypothesisTest.test_p_never_zero<  sf     i##$788HSMMq#*bg*.FD D DzV######rT   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 rk   r  rY   s      r>   r   zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statisticJ  s    ?1ad333==rT   rV   r#   r   r   {Gz?r   )
r9   rI   r   normalr   r   r  r   r   r   r  r5   r   r   r   rb   r  s          r>   test_against_ttest_indz3TestMonteCarloHypothesisTest.test_against_ttest_indE  s    i##$677zzvz&&


(:(::j#*$	> 	> 	> $T3	CCCod1gQyr:::s}555
CJT::::::rT   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
  re  r   )r   e   )r   f   )r   g   c                 .    t          j        |d| ij        S )Nr$   )r   f_onewayr   )r$   r{  s     r>   r   zETestMonteCarloHypothesisTest.test_against_f_oneway.<locals>.statisticY  s    >43d33==rT   rV   r   r$   r   r$   {Gz?r   )
r9   rI   r   r  r   r   r  r   r   r   r  s          r>   test_against_f_onewayz2TestMonteCarloHypothesisTest.test_against_f_onewayR  s    i##$677

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


))3::8:+D+DFj#*cj#*<	> 	> 	> $T3	1:< < <nd,,,s}555
CJT::::::rT   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 rb  c                 ^    dt          j        d                              |           z  S )Nr  gZd;O?)rP  r  )r   	bernoullir   r{   r5   s    r>   r   zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvsk  s.    %00044$S4QQQQrT   rG   r   )r   r)   g     ?r   )
r9   rI   r   r   r   rm  r   null_distributionr   r   )r  r)   r   rP   rb   c0c1r5   s          @r>   test_finite_precision_statisticz<TestMonteCarloHypothesisTest.test_finite_precision_statisticc  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7rT   )#__name__
__module____qualname__r   r9   r  r  r   r  r  r6   markxslowr  parametrizer4  r  r  slowlinspacer  r   skewtestkurtosistestr  re   r  r  r  r  r  r  	fail_slowxfail_on_32bitr!  r^   rT   r>   r  r    s       D(, = = = =   @. @. @.D P P P [$2 $2  $2L [VUU2q\\22@ @ 32 @B [],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 8rT   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 )r0   rF   r   r   r"   r   r  r   r  )r0   z3`significance` must contain floats between 0 and 1.r   significancerV   r   z`kwargs` must be a dictionaryr   )kwargsz+shape mismatch: objects cannot be broadcastr0   rE   )rF         rF   r4  rP   z`test` must be callablez(`n_resamples` must be a positive integerir(   g      %@z"`batch` must be a positive integerr,   )r9   rI   r   r   r  r  r6   r7   r8   r   r<   r)  )r  r5   testr   n_observationsr=   s         r>   r  zTestPower.test_input_validationy  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   rf   r   r  r  r   r  r   )rP   r$   r  r6  s      r>   r6  z"TestPower.test_batch.<locals>.test  sZ    fkks1vvJ!*do>>DOLLALL$Q555<<rT   r   r0   r   )r6  r7  r)   r   )r   r-   r   rH  r^   )	r9   rI   r   r  r  r   r   r  r   )r  r5   r  rQ   rR   r  r6  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,,,,,rT   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   皙?rV   c           
          t          j        t          t          d| j        dz                                 }t          j        | |||          S )Nr   )r   r$   )r9   expand_dimsr;   r4  r   r   r  )rP   r   r$   popmeans_expandedpopmeanss       r>   r6  z*TestPower.test_vectorization.<locals>.test  sR     "xuQQR
?S?S9T9T U U$Q(9{*.0 0 0 0rT   )r0   r   rH  r   rG   r   r  )r  r  皙?r   r2  r3  c                 4    t          j        | |          S )Nr  )r   r  )rP   r$   alternative_i	popmean_is     r>   test2z+TestPower.test_vectorization.<locals>.test2  s*    #(#4Q	AN$P $P $P PrT   r1  r  r  )r   r   rd   )r9   rI   r   r   ra  rz  r   r   r  appendrp   rn   r   )r  r5   r6  nxr3  r2  rb   r  significance_inx_irE  tmprC  rD  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======rT   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   &( r0   rG   )r   r0   r   )r  r@  r   r1  r  r   )r9   rI   r   r   r  integersr  ra  r   ro   rz  rn   r   )r  r5   r6  r7  r   r2  rb   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;;;;;;rT   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 )NrM  )gv?g]NbJ?g6;?)gOt]?g7gLڷ?g0Dҗ?)gVL[?g;c?g.H&?)g#*3)?glk?g5i ?r  )r   rF  r   r0   rH  r  r@  rA  r   )r9   rI   r   r   r   r  r  r   )r  r5   r  r3  r7  r2  rb   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2rT   N)r"  r#  r$  r  r6   r%  r(  r  rK  rO  rQ  r^   rT   r>   r/  r/  x  s        69 69 69p [!- !- !-F [%> %> %>N< < <3 3 3 3 3rT   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 )r9   rI   r   r5   )r  s    r>   setup_methodz TestPermutationTest.setup_method$  s    9(()<==rT   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  rY   s      r>   r  z:TestPermutationTest.test_permutation_test_iv.<locals>.stat+  s    ?Aq6400::rT   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  r2   r3   r4   )r6   r7   r8   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rH   rX  )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 )Nr0   c                     | j         dk    rdnt          |           }t          |j                  _        xj        dz  c_        t          j        | |          t          j        ||          z
  S Nr   r#   )r   rf   r   r  r  r9   r:   )rP   rZ   r$   r  r   s       r>   r   z1TestPermutationTest.test_batch.<locals>.statistici  sn    fkks1vvJ#&z93G#H#HI "714(((2714+@+@+@@@rT   r   r   T)r)   rX  r    r   )r-   rH   r  r   r   r   )r5   rI   r  r  r   r   r   r   )
r  rX  rH   rP   rZ   r  rQ   rR   r  r   s
            @r>   r  zTestPermutationTest.test_batch_  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[$+.....rT   zpermutation_type, exact_sizerZ  r   r   )r[  r}  r\  r0  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 rk   r   rY   s      r>   r   z8TestPermutationTest.test_permutations.<locals>.statistic  +    714(((2714+@+@+@@@rT   T)rX  r    r   )r)   rH   )r5   rI   r   r   r   r  r{   )	r  rX  
exact_sizerH   rP   rZ   r   r  rb   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*/<<<<<rT   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   )r}  	   i]  r   c                 \    t          j        | |          t          j        ||          z
  S rk   r   rY   s      r>   r   zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statistic  rb  rT   Tr\  rG   r    rX  r-   r   r5   r)   r  r   )r   binomr   r   r   r   r9   infr   r   r   r  r   r5   rG  nypermutationsrP   rZ   r   r   r  rb   rR   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;;;;;;rT   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 rk   r   rY   s      r>   r   zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statistic  s    71q5t,,,,rT   Tr[  rG   rh  r)   r  r   )	r   r   r   r   r9   rj  r   r   r   rk  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;;;;;;rT   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  )r}  r}  i@  r   c                 :    t          j        |           d         S Nr   r   pearsonrrP   rZ   s    r>   r  zTTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic1d  s    >!Q''**rT   Tr[  rG   rh  r)   r  r   )r5   r   	factorialr   r   r   r   r[  r   r9   rj  r   r   r   )r  r   r5   rG  rl  rm  rP   r   r  r   r  rb   rR   rZ   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;;;;;;rT   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   r{   rz   rw   r   )r{   ry   rz   exact)r   r  c                 >    t          j        | |d          j        S r  )r   ks_2sampr   rP   rZ   r   s     r>   r  z>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1d   s)    >!QW.9; ; ;;DErT   r   r)   r   r5   r   )r5   r  r   r~  r   r9   rj  r   r   r   r   )r  r   rP   rZ   r   r  rb   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DrT   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   r{  rw   r   r   r   r  r  r  c                 6    t          j        | |          j        S r]   r   ansarir   rw  s     r>   r  z<TestPermutationTest.test_against_ansari.<locals>.statistic1d      <1%%//rT   r  r   )r5   r  r   r  r   r9   rj  r   r   r   r   )	r  r   rP   rZ   alternative_correspondencealternative_scipyr   r  rb   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DrT   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   rw   r   r   r{   ry   rH   r@  r   r  c                 :    t          j        | ||          j        S rk   )r   mannwhitneyur   rY   s      r>   r   z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statistic*  s    %a666@@rT   T)r    r)   r   r$   r5   r   )r   uniformr   r5   r  r   r9   rj  r   r   r   r   )r  r   rP   rZ   r   r   rb   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DrT   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   )r{   rz   rH   rw   r   )r{   ry   rz   rH   r|  r.   c                 :    t          j        | |d          j        S N
asymptoticr.   )r   cramervonmises_2sampr   rw  s     r>   r  z9TestPermutationTest.test_against_cvm.<locals>.statistic1d;  s*    -a5AC C CCLMrT   r   r  r   )r   r   r   r5   r  r   r9   rj  r   r   r   r   )r  rP   rZ   r   r  rb   s         r>   test_against_cvmz$TestPermutationTest.test_against_cvm4  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DrT   r$   )rV   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>.statistic1dX  s    =$'11rT   c                  (    t          j        |  j        S r]   )r   r  r   r  s    r>   pvalue1dzFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1d[  s    =$'..rT   )r   r   r   )r   r   r   r  r#   Fr   r\  r    r$   r   rX  r5   r)   r   r   gQ?r   r   )r9   rI   r   r   r[  ro   r5   r   rj  r   r   r   r   )r  r$   r5   rP   rZ   rl   r   r  r  r   r   x2r9  z2expected_statisticexpected_pvaluer  rb   rR   s                      r>    test_vectorized_nsamp_ptype_bothz4TestPermutationTest.test_vectorized_nsamp_ptype_bothF  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;;;;;;rT   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   r0  r   r   r  r@  c                 8    t          j        | d          j        S Nr   r  r   wilcoxonr   )rl   s    r>   statistic_1samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1d  s    >!888BBrT   c                 :    t          j        | |d          j        S r  r  rw  s     r>   statistic_2samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1d  s    >!QF;;;EErT   c                 2    t          j        | |          S )Nr  )r   r  r  s     r>   test_1dz:TestPermutationTest.test_against_wilcoxon.<locals>.test_1d  s    >!QK@@@@rT   r   r#   Fr[  )r    r$   r   rX  r5   r)   r   r  )r   r  r   r5   r   r[  r9   rj  r   r   r   r   r   )r  r   rP   rZ   r  r  r  r6  r   r  r  r  rQ   rR   s    `            r>   test_against_wilcoxonz)TestPermutationTest.test_against_wilcoxonv  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ArT   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   r0   r   rV   c                 6    t          j        | dk    |          S )Nr   r#   r9   r   r  s     r>   r   z=TestPermutationTest.test_against_binomtest.<locals>.statistic  s    6!a%d++++rT   rF  r  Tr[  )r    rX  r)   r5   r   r   r   )
r5   rN  r   r   r   r9   rj  r   r   r   )	r  r   rP   r   krg   rP  r   rb   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DrT   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 )	Nr0  r   r|  r.   c                 <    t          j        | d          j        S r  )r   
kendalltaur   rw  s    r>   r  z@TestPermutationTest.test_against_kendalltau.<locals>.statistic1d  s    #Aq>>>HHrT   rZ  )rX  r)   r5   r   )r5   r  r   r  r   r9   rj  r   r   r   r   )r  rP   r   r  rb   rZ   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DrT   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  rw  s    r>   r   z@TestPermutationTest.test_against_fisher_exact.<locals>.statistic  s     616a1f-...rT   l   	(yM4 r  g333333?g      ?r   rZ  )rX  r)   r   r5   r  )r9   rI   r   astypefloatr   contingencycrosstabr   rj  fisher_exactr   r   )	r  r   r   r5   rP   tabrb   rR   rZ   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,,,,,rT   )r1  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rT   c                  :    t          j        | dd          j        S )NTr|  r  )r   r  r   r  s    r>   r  zITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1d  s'    (d079 9 99?@rT   r$   Fr   rZ  r  r)   rx   r   r   r   )r5   rI   r   rankdatar   r[  r9   broadcast_arraysr   rj  r   r   r   r   )r  r$   rP   rZ   rl   r   r  r  r   r   r  r  r  rb   rR   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;;;;;;rT   r   )r"   r   g      @r;  g?g&_?g      @gd~$I"@glu?)rP   rZ   expected_lessexpected_2sidedexpected_Pr_gte_S_meanr  expected_avgexpected_std)o   k   rG   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.

        rP   rZ   r  r  r  r  r  r  c                 6    t          j        | |          j        S r]   r  rw  s     r>   r  z7TestPermutationTest.test_with_ties.<locals>.statistic1d9  r  rT   z$Ties preclude use of exact statisticr   )r)   r   r  Nr   g|=r   gư>)r9   testingr   r  UserWarningr   rj  r   r   r   r   r  r:   r   rf   r   r   )r  r  rP   rZ   r  r  r  r  r  r  r  r  rb   rR   Sr:   rg   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   rw  s    r>   r  zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1dk  s    ?1a((22rT   rZ  )rX  r)   r   r   gvIh%<=r   N)r   r9   rj  r   r   r   r   )r  r   r  rP   r  r  rb   rZ   s          @r>   test_against_spearmanr_in_Rz/TestPermutationTest.test_against_spearmanr_in_RQ  s    (1 1 10 0 0/	3 	3 	3 	3 	3 t[:+-6{L L L 	'9	JJJJ
O%@@@@@@rT   r-   )rV   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   )r6   r7   r8   rq   r   _batch_generator)r  r-   s     r>   test_batch_generator_ivz+TestPermutationTest.test_batch_generator_ivt  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   rC   )r   r   rw   r}  r  ziterable, batch, expectedc                 Z    t          t          j        ||                    }||k    sJ d S r]   )rq   r   r  )r  iterabler-   r   gots        r>   test_batch_generatorz(TestPermutationTest.test_batch_generator}  s/     ;/%@@AAhrT   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   r0  r}  c                 8    t          j        | |          d         S rt  ru  rw  s     r>   r   zFTestPermutationTest.test_finite_precision_statistic.<locals>.statistic  s    >!Q''**rT   FrZ  )r    rX  r   r%  gUUUUUU?)r   r   r   r   r  r9   r   rf   )	r  rP   rZ   r   rb   rr   null	correct_ps	            r>   r!  z3TestPermutationTest.test_finite_precision_statistic  s    
 LLLL	+ 	+ 	+ $aVY56@B B B-S5J46tq5y0111CII=	))))c))))))))rT   N)+r"  r#  r$  r   rU  rY  r6   r%  r'  r9   rI   r<  r   r  r   rx  ri  rd  rn  r(  rq  ry  r  r  r  r  r&  r  r  r  r  r  r  
tie_case_1
tie_case_2r  r  r  r4  batch_generator_casesr  r,  r!  r^   rT   r>   rS  rS     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* * * * *rT   rS  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   rV   c                 ,    g | ]}t          |          S r^   )	frozenset)r   r_   s     r>   
<listcomp>z4test_all_partitions_concatenated.<locals>.<listcomp>  s    !E!E!E1)A,,!E!E!ErT   c           
          g | ]D}t          j        t          |d                    t          |dz   d                              ES r  )r   ri  r   )r   r_   rg   s     r>   r  z4test_all_partitions_concatenated.<locals>.<listcomp>  sU     2 2 2  c!ABB%jj#a!g,,?? 2 2 2rT   )r9   r   intcumsumsetr   _all_partitions_concatenatedsplitaddr;   prodr4  rf   r   )ncall_partitionsr  partition_concatenatedpartitioningr   rg   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/////rT   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: r0   r   c                 F    t           j                            |           S )Nr  )r   r   r   r  s    r>   r   z&test_parameter_vectorized.<locals>.rvs  s    z~~4c~:::rT   rA   )r   r5   r/   r[  )r   r5   rX  )r   r   r  r)   rG   c                 t    | j         dk    st          j        |           sJ t          j        | |          S r_  )r   r9   r6  r:   )rP   r$   r   s     r>   r   z,test_parameter_vectorized.<locals>.statistic  s7    vzzR^Av66zzzwqt$$$$rT   )r   r    Tc                 D    | j         dk    sJ t          j        |           S r  )r   r9   r:   r  s    r>   r   z,test_parameter_vectorized.<locals>.statistic  s    v{{{{wqzzrT   Fr^   )r9   rI   r   r>  r   r   )	r  r   fun_optionscommon_optionsr  optionsr   r5   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9rT   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   r5   )r9   rI   r   r6   r7   r8   r   MonteCarloMethod)r  r=   r5   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^   rT   r>   r  r    s#        < < < < <rT   r  )Er6   numpyr9   numpy.testingr   r   r   scipy.conftestr   scipy._lib._utilr   scipy._lib._array_apir   r	   scipy._lib._array_api_no_0dr
   r   scipyr   r   scipy.optimizer   scipy.statsr   r   r   r   scipy.stats._resamplingr   r?   r%  r'  rS   rh   ru   r(  r-  r   tests_Ritemsr   tests_against_itself_1sampr   r   r   tests_against_itself_2sampr   r  r  r  r  r"  r'  r-  r:  rD  rR  rV  r]  rj  filterwarningsr~  r  r  r/  rS  r   r
  r  r^   rT   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. (,,0%)+ + 
7  7  7 t1 1 12 +399;;= =" "= = "J (+,/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A A A.}8 }8 }8 }8 }8 }8 }8 }8@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< < < < < < < < < <rT   