
    UgF                    V
   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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)                                     Z/e j                            d
g d          d*             Z0e j                            d
g d          d+             Z1d, Z2e j                            d-d d.g          d/             Z3e j        #                    d0          e j                            d
g d          d1                         Z4d2 Z5e j                            d3d4d5g          d6             Z6e j                            d7g d8          e j                            dg d          d9                         Z7d: Z8e j                            dg d          d;             Z9e j        j"        e j                            d
g d          d<                         Z:e j        j"        e j        ;                    d=          d>                         Z<d? Z= G d@ dA          Z> G dB dC          Z? G dD dE          Z@dF ZAe j                            dGg dH          dI             ZBdS )J    N)assert_allcloseassert_equalsuppress_warnings)array_api_compatible)rng_integers)is_numpyxp_assert_closexp_assert_equalarray_namespace)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   "'herring' cannot be used to seed aherringrandom_state)pytestraises
ValueErrorr   npmeantuple)messages    `/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/stats/tests/test_resampling.pytest_bootstrap_ivr>      s   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 3G	z	1	1	1 A A999,i@@@@A A A A A A A A A A A A A A A A A As  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	          |ft           j        d| d|d          }t          |j        j        |j        j                   t          |j        j	        |j        j	                   t          |j
        |j
                   d S )Nr   r0         d   )r-   r/   r5   r$   r)   )r9   randomseedrandr   r:   r   confidence_intervallowhighstandard_error)r/   r$   xres1res2s        r=   test_bootstrap_batchrQ   P   s     INN1
	r2r""AaT27$v"#$CA A ADaT27"V"#$CA A AD )-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   rF   c                 :    | |z
  dz                       |          S )Nr   r#   r:   rN   yr$   s      r=   my_statisticz+test_bootstrap_paired.<locals>.my_statistici   s    1qD)))rR   c                 @    |          }|          } ||          }|S N )ir$   abresrY   rN   rX   s        r=   my_paired_statisticz2test_bootstrap_paired.<locals>.my_paired_statisticl   s+    aDaDl1a  
rR   r4   T)r   r5   rT   )
r9   rG   rH   rI   arangelenr   r   rJ   rM   )	r/   nra   r]   rO   rP   rY   rN   rX   s	         @@@r=   test_bootstrap_pairedrf   a   s     INN1A
	qA
	qA* * * *        		#a&&AaT.Q???DaV\$QGGGDD,d.FGGGD')<=====rR   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   rT   c                     |                      |          |                     |          z   |                     |          z   S Nr#   rV   )rN   rX   zr$   s       r=   rY   z/test_bootstrap_vectorized.<locals>.my_statistic   s<    vv4v  166t6#4#44qvv4v7H7HHHrR   )r0   rD   rE   rF   )r   r/   r5   r$   r)   )rF   )r   r   r   rb   )r9   rG   rH   rI   r   bootstrap_distributionshaperM   broadcast_toreshaper   rJ   rK   rL   listpopr   )r/   r$   r   rY   rl   	n_samplesrN   rX   rj   rO   rn   rP   result_shapes                r=   test_bootstrap_vectorizedrs   {   s/    INN1I I I I EdI
	y!!A
	y!!A
	y!!AaAYVF"#!> > >D'-"(612 2 2 2 iiGGDM
		'**E22A
		'**E22A
		'**E22AaAYVF"#$CA A AD D,0,02 2 2D,1,13 3 3D')<===;;LT)-3\BBB).4lCCC$*L99999rR   z#MemoryError with BCa observed in CIc                    t           j                            d          }t          j                            ddd|          }d}t          j        t          |          dz
  t          j        |          t          j	        |                    }|
                    |	          }|                                }t          |ft           j        d| |
          }t          di |d|i}t          |j        |d           t          |j        |d           |                    t          d|                     t          di ||dd}t          |j        j        |                    |          d           |                    t          d|                     t          di ||dd}t          |j        j        |                    d|z
            d           d S )Nl   )ICbX     r     )locscalesizer5   ffffff?r   )dfrw   rx   )
confidence)data	statisticr)   r/   r5   r&   gMb@?rtolga2U0*3?atolr   r)   r1   lessr&   alternativegreaterr\   )r9   rG   default_rngr   normrvstrd   r:   semintervalstddictr   r   rJ   rM   updaterL   ppfrK   )	r/   rngr}   alphadistexpected_intervalexpected_seconfigr`   s	            r=   test_bootstrap_against_theoryr      s   
 )

 3
4
4C:>>aqt#>FFDE7c$iikrwt}}EIdOOLLLD77((**Kw"'tc3 3 3F

5
5f
5
5u
5
5
5CC+->TJJJJC&$????
MM$1s;;;<<<

I
If
Iu&
I
I
I
ICC+0$((5//MMMM
MM$1s;;;<<<

L
Lf
Lu)
L
L
L
LCC+/!E'1B1BNNNNNNrR   )gQ7@gHzS@)g\(<@g=
ףpU@)gHz'@@gQV@zmethod, expectedc                     t          j        g d          }t          |ft           j        d| d          }t	          |j        |d           d S )N)r0   rE         )@r   g+@            "   2   Q   Y   y         i@B r   )r)   r/   r5   g{Gzt?r   )r9   arrayr   r:   r   rJ   )r/   expectedrN   r`   s       r=   test_bootstrap_against_Rr      se    " 	 5 5 5 	6 	6A
QD"'wv!"$ $ $CC+XEBBBBBBrR   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 ri   )r   skew)rN   rX   r$   s1s2s        r=   r~   z1test_multisample_BCa_against_R.<locals>.statistic   s3    Z%%%Z%%%BwrR   l   tgy4r?   rF   )r/   r-   r5   r@   bcag1*g333333ÿg333333?Q?)r9   rG   r   r   r   r:   rJ   abs)rN   rX   r~   r   	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	'&)= = =I/1a&)L(+#? ? ?Koq!fi$'c; ; ;G 	566I'+9::Kgg122G I i'Y7J)+S^^;L)#S^^3H $x==4rR   c                     t          j        g d          } t          j        g d          }d	d}|| g}t          j        ||          }d}d}|j        }d}t          j        ||||||          \  }	}	}
t          |
d           d S )
N)	r0         (   .   r   4   h      )   r   &   ^   c         r   c                 \    t          j        | |          t          j        ||          z
  S ri   r9   r:   )rj   rX   r$   s      r=   r~   z:test_BCa_acceleration_against_reference.<locals>.statistic*  s+    wqt$$$rwqt'<'<'<<<rR   rT   rz   rF   ge{?r   )r9   r   r   r   rk   _resampling_bca_intervalr   )rX   rj   r~   r}   r`   r$   r   theta_hat_br-   _a_hats              r=   'test_BCa_acceleration_against_referencer      s     	77788A
///00A= = = = q6D
/$	
*
*CDE,KE+D)T5,7@ @KAq%E/00000rR   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   rF     ?ru   r   rw   rx   i  ry   r   rT   r~   r&   r)   r-   r/   r$   皙?r9   rG   rH   r   r   r:   r   r   rJ   sum	binomtestpvalue)r/   r   re   r)   r&   r   	stat_truen_replicationsr}   r`   cici_contains_truer   s                r=   #test_bootstrap_against_itself_1sampr   9  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<<<<<<rR   i|  iz  )r?   r@   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   rF   x   r   r   rT   c                 d    t          j        | |          }t          j        ||          }||z
  S ri   r   )data1data2r$   mean1mean2s        r=   my_statz4test_bootstrap_against_itself_2samp.<locals>.my_statu  s4    D)))D)))u}rR   r   r   r     r   r   r   rb   r   )r/   r   n1n2r)   r&   r   dist1dist2r   r   r   r   r`   r   r   r   s                    r=   #test_bootstrap_against_itself_2sampr   e  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<<<<<<rR   r?   r@   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[   rV   .0sampler$   s     r=   	<genexpr>zEtest_bootstrap_vectorized_3samp.<locals>.statistic.<locals>.<genexpr>  /      886;;t$$888888rR   r   r$   r}   s   ` r=   r~   z2test_bootstrap_vectorized_3samp.<locals>.statistic  &    88884888888rR   c                  8    | D ]}|j         dk    sJ  | ddiS Nr   r$   r   ndimr}   r   r~   s     r=   statistic_1dz5test_bootstrap_vectorized_3samp.<locals>.statistic_1d  =     	$ 	$F;!#####y$'Q'''rR   r   ru   TrF   )r    r$   r)   r/   r5   Fr9   rG   rH   rI   r   r   rJ   rM   )	r/   r$   r  rN   rX   rj   rO   rP   r~   s	           @r=   test_bootstrap_vectorized_3sampr    s      9 9 9 9 9( ( ( ( ( INN1
	q!A
	q!A
	q!AaAY	dCQP P PDaAYCQP P PDD,d.FGGGD')<=====rR   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 ri   rV   rN   r$   s     r=   r~   z2test_bootstrap_vectorized_1samp.<locals>.statistic  s    vv4v   rR   c                 8    | j         dk    sJ  | d          S Nr   r   r#   r   )rN   r~   s    r=   r  z5test_bootstrap_vectorized_1samp.<locals>.statistic_1d  s'    v{{{{y####rR   r   ru   TrF   )r    r$   r)   r-   r/   r5   Fr0   r   r  )r/   r$   r  rN   rO   rP   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')<=====rR   c                    ddgz  }| dk    rt          j        d          5  d}t          j        t          j        |          5  t          |gt           j        |           }t          |j	        t           j
        t           j
        f           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   n2t          |gt           j        |           }t          |j	        d	           t          |j        d
           d S )N#        @rA   ignore)invalidz0The BCa confidence interval cannot be calculatedr   r.   )r  r  r   )r9   errstater6   warnsr   DegenerateDataWarningr   r:   r   rJ   nanrM   )r/   r}   msgr`   s       r=   test_bootstrap_degenerater    s   =D[*** 	H 	HDCe9EEE H H"'&AAAS4rvrv6FGGGH H H H H H H H H H H H H H H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H "'&999S,.>???#Q'''''s6   #B1A	BB1B	B1!B	"B11B58B5c           	      <   t           j                            d          }t          j        dd          }|                    d|          }|f}t          |t          j        | dt           j                            d                    }t          |t          j        | dt           j                            d          d	
          }t          |j	        |j	                   t          |j
        |j
                   t          |j
        t           j                  sJ d S )Nl   E<1

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


A	B	B	"	"B
)

 2
3
3C
/1$Rc+/F F FC
/1$Rc+/+.0 0 0C )

 2
3
3C
/1$Rc+/? ? ?C C&(:GGGGC+S-D           rR   zSensible to machine precisionc                 N   t           j                            d          }t          j        dd          }|                    d|          f}t          |t           j        |d          }t          j        di |d	d
i}|	                    t          d|                     t          j        di |ddd}t          j        di |ddd}t          |j        j        |j        j        d           t          |j        j        |j        j        d           t          j        |j        j                  sJ t          j        |j        j                  sJ t!          j        t$          d          5  t          j        di |ddi d d d            d S # 1 swxY w Y   d S )Nl   @Qixt r   r   r   rF   r  rT   )r}   r~   r5   r$   r&   r   r   r   rz   r   r   r   r$  r   z`alternative` must be one ofr   r   z	ekki-ekkir\   )r9   rG   r   r   r   r   r   r   r   r   r   rJ   rL   rK   isneginfisposinfr6   r7   r8   )r/   r   r   r}   r   r   lgs           r=   test_bootstrap_alternativer,    s    )

 3
4
4C:!1%%%DHH3cH224DtrvCbIIIF77&773777A
MM$1q999:::LL&L4VLLLLAOO&O4YOOOOAA).0E0J       A)-q/D/H       ;q,011111;q,122222	z)G	H	H	H ; ;::&::k::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   7FF!Fc                     d} t           j                            d           t          j        j        |  }t	          t          j        |                    }t          | d                   D ]=}|d|d d f         }t          j        ||d          }t          j	        ||          sJ >t          j
        t          t          j        |d                    d          }t          j	        ||          sJ d S )	Nr   r   ru      r   rT   .r#   r   r,   )r9   rG   rH   rI   nextr   _jackknife_resamplerangedeletearray_equalconcatenatero   )rl   rN   rX   r]   slcr   y2s          r=   test_jackknife_resampler9  /  s    EINN1
	A[,Q//00A59 - - Q	l9Q+++~c8,,,,,,	[<QaHHHII
! 
! 
!B>"a       rR   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   .rT   )getattrr9   rG   r6   skiprH   rI   r   _bootstrap_resampler3  r   r5  )r:  r   rng1rng2r)   rl   rN   rX   r]   r7  jsr   s               r=   test_bootstrap_resamplerC  B  s	   
")Xt
,
,C
{x0001113q66D3q66DKEINN1
	A';TJJJA; - - Q	l$59eBi88S"W:~c8,,,,,,- -rR   score)r         ?r   c                     d}t           j                            d           t          j        j        | }t	          j        || d          }d } ||| d          dz  }t          ||d           d S )N)r0         r   rT   r#   c                 D    t          j        t          j        || |          S r[   )r9   apply_along_axisr   percentileofscore)r^   rD  r$   s      r=   vectorized_posz0test_percentile_of_score.<locals>.vectorized_posd  s    "5#:D!UKKKrR   rF   V瞯<)r9   rG   rH   rI   r   _percentile_of_scorer   )rD  r$   rl   rN   prL  p2s          r=   test_percentile_of_scorerQ  \  s     EINN1
	A(E;;;AL L L 
5r	*	*	*3	.BAr5!!!!!rR   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   rG  r   rT   rF   r#   rM  )	r9   rG   rH   rI   r   _percentile_along_axisr3  r@   r   )rl   rN   qrX   r]   r`   r   s          r=   test_percentile_along_axisrU  l  s    
 EINN1
	A
	crc
#c)A*1a00A58__ . .d=1qt"555Xu----. .rR   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[   rV   r   s     r=   r   z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>  r   rR   r   r   s   ` r=   r~   z+test_vectorize_statistic.<locals>.statistic  r   rR   c                  8    | D ]}|j         dk    sJ  | ddiS r   r   r   s     r=   r  z.test_vectorize_statistic.<locals>.statistic_1d  r  rR   r   r   ru   r/  r   r#   )r   _vectorize_statisticr9   rG   rH   rI   r   )	r$   r  
statistic2rN   rX   rj   rO   rP   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$rR   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   rE  )rF   rF   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 	8rR   rT   '     )r/   r$   r)   r-   r   r#   Z   rF   r   rF   )r   rF   ra  )r9   rG   r   r   r   r   r   r   rJ   rK   TrL   allrl   rM   rk   )r/   r   paramsr   r~   r`   countss          r=   test_vector_valued_statisticri    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////%+~======rR   zignore::RuntimeWarningc                     t           j                            d          } d fdfd}g dg dg dg dg d	g}t          j        |          j        }t          ||| d
          }t          || d
          }t          |j        j        d         |j        j        d           t          |j        j	        d         |j        j	        d           d S )Nl   \Qc                    |                      |          }|                     |          }| |d         z
  ||d         z
  z                       |          }d|z  |                     |          |                    |          z   ||z
  dz  z   z  S )N).Nr   )r:   var)rN   rX   r$   xmymcovs         r=   concordancez9test_vector_valued_statistic_gh17715.<locals>.concordance  s    VVD\\VVD\\ByM!a"Y-&78>>tDDCAEE$KK!%%++5bQFGGrR   c                 V    | |z   }| |z   }t          j         |||                    S r[   )r9   
nan_to_num)tptnfpfnr$   actualr   rp  s          r=   r~   z7test_vector_valued_statistic_gh17715.<locals>.statistic  s3    b7}[[4@@AAArR   c                 <     g || R  t           j        df         S )N.)r9   newaxis)r$   argsr~   s     r=   statistic_extradimz@test_vector_valued_statistic_gh17715.<locals>.statistic_extradim  s)    y%$%%%%bj#o66rR   )r   r   r   r   )r   r   r   r   )r   r/  r   r   )r   r/  r   r   )r      r   r   T)r5   r   r   rM  r   )
r9   rG   r   r   re  r   r   rJ   rK   rL   )r   r{  r}   r`   r  rp  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,3t
L
L
LC
D)#d
C
C
CCC+/2+/e= = = =C+03+0u> > > > > >rR   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   )rD   r   c                 :    t          j        | ||          j        S ri   r   	ttest_indr~   rW   s      r=   r~   z test_gh_20850.<locals>.statistic  s    q!$///99rR   r   r#   z-Ignoring the dimension specified by `axis`...r   r0   r   )	r9   rG   r   r   r   re  r6   r  FutureWarning)r   rN   rX   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            
       *   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#          d$             Z!dS )%TestMonteCarloHypothesisTest皙?Nc                     fdS )Nc                  B                          | di|          S )Nr5   dtype)r`  )rz  kwdsr  rsrvs_inxps     r=   <lambda>z6TestMonteCarloHypothesisTest.get_rvs.<locals>.<lambda>  s4    RZZ0V20VQU0V0V6; &0 &= &= rR   r\   )selfr  r  r  r  s    ````r=   get_rvsz$TestMonteCarloHypothesisTest.get_rvs  s.    = = = = = = = 	=rR   c                     fd}|S )Nc                                          | |          }                    | |d          }| j        |         }|||z  dz  z  S )Nr#   r   )r$   
correctionrE  )r:   rl  rl   )rN   r$   mvre   r  s        r=   r~   z=TestMonteCarloHypothesisTest.get_statistic.<locals>.statistic  sL    %%Aqt22AA!cz>!rR   r\   )r  r  r~   s    ` r=   get_statisticz*TestMonteCarloHypothesisTest.get_statistic  s$    	" 	" 	" 	" 	" rR   c                 	                        g d          }d#fd	}d}                    d                              d          f}t          j        j        t          j        j        f}t          j        t          |          5  t          ||d d	           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          |t          j        j        |d	           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |d |           d d d            n# 1 swxY w Y   t          j        t          |          5                       ddgddgg          }t          |d d g|           d d d            n# 1 swxY w Y   d}t          j        t          |          5                       g dg          }t          |d d g|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        d            d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d            d d d            n# 1 swxY w Y   d!}fd"}	 t          ||j
                   d S # t          $ r/}t          |                              |          sJ Y d }~d S d }~ww xY w)$N      ?       @      @c                 2                         | |          S ri   rV   )rN   r$   r  s     r=   statz@TestMonteCarloHypothesisTest.test_input_validation.<locals>.stat  s    77147(((rR   z/Array shapes are incompatible for broadcasting.r   ru   )r   ru   r   c                     dS Nr   r\   rW   s      r=   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>      1 rR   rT   r#   r!   r"   r   r   0`rvs` must be callable or sequence of callables.r  r  r  g      @c                     | S r[   r\   rN   s    r=   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>!      a rR   If `rvs` is a sequence...c                     | S r[   r\   r  s    r=   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>&  r  rR   c                     | S r[   r\   r  s    r=   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>&  r  rR   z`statistic` must be callable.)`n_resamples` must be a positive integer.r'   r(   r*   r+   r,   `alternative` must be in...r   r   z!Signature inspection of statisticc                 j                         t          j                            |                     S )Nr   )r`  r   r   r   )ry   r  s    r=   r   z?TestMonteCarloHypothesisTest.test_input_validation.<locals>.rvsB  s%    ::ejnn$n77888rR   r[   )r`  zerosr   r   r   r6   r7   r8   r   	TypeErrorr:   str
startswith)r  r  r}   r  r<   tempr   es    `      r=   test_input_validationz2TestMonteCarloHypothesisTest.test_input_validation  sH    zz,,,''	) 	) 	) 	) 	) 	) D  "((6"2"23z~uz~.]:W555 	G 	GT3(<(<2FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G /]:W555 	C 	CT5:>4cBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C E]:W555 	I 	IT5:>4CHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I E]9G444 	/ 	/T4...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]9G444 	> 	>::Bx"b233DTKK#6===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> .]:W555 	E 	E::|||n--DTKK#=tDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 2]9G444 	9 	9T5:>4888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 >]:W555 	L 	LT5:>4UKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L >]:W555 	M 	MT5:>4VLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M @]:W555 	F 	FT5:>4uEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F @]:W555 	G 	GT5:>4vFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 0]:W555 	M 	MT5:>4VLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 6	9 	9 	9 	9 	9	.T300000 	. 	. 	.q66$$W-----------	.s   B))B-0B-#D  DD(#EEE?FF!$F!0G??HH'.I!!I%(I%	!J66J:=J:#LLL5#M$$M(+M(#N;;N?N?##PPP:#Q))Q-0Q-<R 
S$SSc                    fd}d}                     g d          }t                    r"t          |t          j        j        |           d S t          j        t          |          5  t          |t          j        j        |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |t          j        j        j	        d           d d d            d S # 1 swxY w Y   d S )Nc                 .                         |           S r[   rV   )rN   r  s    r=   non_vectorized_statisticzWTestMonteCarloHypothesisTest.test_input_validation_xp.<locals>.non_vectorized_statisticK  s    771::rR   z!`statistic` must be vectorized...r  r   Fr   )
r`  r   r   r   r   r   r6   r7   r8   r:   )r  r  r  r<   r   s    `   r=   test_input_validation_xpz5TestMonteCarloHypothesisTest.test_input_validation_xpI  s   	 	 	 	 	 6LLL))B<< 	VUZ^5MNNNF]:W555 	O 	OVUZ^5MNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O]:W555 	P 	PVUZ^RWOOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps$   ,!BB B?(C44C8;C8c                 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   rl   r  
batch_sizecounterr  )rN   r$   r  r  r~   xp_tests      r=   r~   z:TestMonteCarloHypothesisTest.test_batch.<locals>.statisticb  sh    fkkqwqzJ#&z93G#H#HI ".4%%g..qt<<<<rR   r   r   T)r   r~   r)   r    i r  r   r-   r     r   r   r   r\   )r9   rG   r   r`  standard_normalr   r  r  r  r   r   r   r   r   r
   r   )
r  r  r   rN   r  rO   rP   res3r~   r  s
   `       @@r=   
test_batchz'TestMonteCarloHypothesisTest.test_batchY  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1rR   r$   r   c                    t           j                            d          }g d}d||<   |                    d          j        }dt          |          v rdnd}t          t           |          }t          ||          }|                    ||          }	t          j	        |	d	|
          }
|                    |	|          }	t          |	          }|                     |          }|                     t          j        j        |||          }t          |	||dd|          }|                    |
j        |          }|                    |
j        |          }t%          |j        |           t%          |j        || j                   d S )Nit$ r   r   r   rF   r  64float32r  )ry   r          )popmeanr$   r  )r  r  Ti N  )r    r)   r$   r   )r9   rG   r   r`  r  r  r=  r  r   ttest_1sampr   r  r  r   r   r   r~   r   r	   r   )r  r$   r  r   ry   dtype_default	dtype_strdtype_npr  rN   r   r  r~   r   r`   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??????rR   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)rH  r   r  r  r  r   )r9   rG   r   r  r   r  r`  r   r  r  r   r   r   r	   r~   r   r   )
r  r   r  r   rN   r  r  r~   r   r`   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KrR   r   r   r^   g      rE  ru   c                 2   t           j                            d          }t          j                            |d|          }t          j        |t          j        j                  }fd}| 	                    t          j        j        |          }t          |||dd          }t          |j        |j                   d	k    r#t          |j        |j        | j        
           d S dk    r&t          d|j        z
  |j        | j        
           d S d S )Nr  rH  r^   ry   r5   r  c                 \    t          j        | t           j        j        d          j        S Nasymp)moder   )r   ks_1sampr   cdfr~   )rN   r   s    r=   statistic1dzGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1d  s-    >!UZ^'.9; ; ;;DErR   r   Fr)   r    r   r   r   r   r   )r9   rG   r   r   skewnormr   r  r   r  r  r   r   r~   r   r   )	r  r   r^   r   rN   r   r  norm_rvsr`   s	    `       r=   test_against_ks_1sampz2TestMonteCarloHypothesisTest.test_against_ks_1samp  s$   
 i##H--N#>>>!UZ^MMM	E 	E 	E 	E 	E <<
44q(K+/E+68 8 8 	x'9:::)##CJdiHHHHHHF""AcjL(/	JJJJJJ #"rR   hypotestr   r   r  r0  r   c                    t           j                            d          }t          j                            |d|          } ||          }fd}|                     t          j        j        |          }t          |||d|          }	t          |	j
        |j
                   t          |	j        |j        | j                   d S )	Ni	   r  r  c                 (     | |          j         S ri   )r~   )rN   r$   r  s     r=   r~   zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statistic  s    8AD)))33rR   Tr    r   r   )r9   rG   r   r   r  r   r  r   r   r   r~   r   r   )
r  r  r   r^   r   rN   r   r~   r  r`   s
    `        r=   test_against_normality_testsz9TestMonteCarloHypothesisTest.test_against_normality_tests  s    
 i##H--N3??8A;777	4 	4 	4 	4 	4 <<
44q(I$+68 8 8 	x'9:::
HO$)DDDDDDrR   c                    t           j                            d          }t          j                            |d|          }t          j        |          }d }|                     t          j        j        |          }t          |||dd          }t          |j        |j                   t          |j        |j        | j                   d S )	Ni!M r  r  c                 8    t          j        | |          j        S ri   )r   
normaltestr~   r  s     r=   r~   zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statistic  s    #AD111;;rR   Tr   r  r   )r9   rG   r   r   r  r   r  r  r   r   r   r~   r   r   )r  r^   r   rN   r   r~   r  r`   s           r=   test_against_normaltestz4TestMonteCarloHypothesisTest.test_against_normaltest  s     i##H--N3??#A&&	< 	< 	< <<
44q(I$+46 6 6 	x'9:::
HO$)DDDDDDrR   c                    t           j                            d          }t          j                            |d|          }t          j        |t          j        j                  }d }| 	                    t          j        j        |          }t          |||ddd          }t          |j        |j                   t          |j        |j        | j        	           d S )
NirH  r  c                 T    t          j        | t           j        j                  j        S r[   )r   cramervonmisesr   r  r~   r  s    r=   r  zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1d  s    '5:>::DDrR   r   Fr   r  r   )r9   rG   r   r   r  r   r  r   r  r  r   r   r~   r   r   )r  r^   r   rN   r   r  r  r`   s           r=   test_against_cramervonmisesz8TestMonteCarloHypothesisTest.test_against_cramervonmises  s     i##I..N#>>'5:>::	E 	E 	E <<
44q(K+/E+46 6 6 	x'9:::
HO$)DDDDDDrR   	dist_name)r   logisticr]   c           	      6   fd}t                      5 }|                    t                     t          |d          }d d d            n# 1 swxY w Y   |j        sJ |j        d         }t          j                            d          }t          j
                            |d|          }t          j        |          }	|	j        }
|	j                 dz  }fd}|                     t!          t                    j        |          }t                      5 }|                    t                     t#          |||dd	d
          }d d d            n# 1 swxY w Y   t%          |j        |
           t%          |j        |d| j        z             d S )Nc                     t           j                            d          }t          j                            | d|          }t          j        |          }|j        |j                 z
  S )NxrF   r  )	r9   rG   r   r   tukeylambdar   andersonr~   critical_values)r^   r   rN   r   r  r]   s       r=   funz?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.fun  s\    )''	22C!%%ac%DDA~a33H%(@(CCCrR   r   )x0r  rF   r  c                 8    t          j        |           j        S r[   )r   r  r~   )rN   r  s    r=   r  zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1d-  s    >!Y//99rR   r   Fr   r  r   r   )r   filterRuntimeWarningr   successrN   r9   rG   r   r   r  r   r  r~   significance_levelr  r=  r   r   r   r   )r  r  r]   r  supsolr^   r   rN   r   expected_stat
expected_pr  dist_rvsr`   s    ``            r=   test_against_andersonz2TestMonteCarloHypothesisTest.test_against_anderson  s:   	D 	D 	D 	D 	D 	D
    	"CJJ~&&&sq///C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" { E!Hi##I..!!!#C!@@>!Y// *03C7
	: 	: 	: 	: 	: <<y 9 9 =sCC   	LCJJ~&&&"1h#.D.3L L LC	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	}555
JQty[AAAAAAs#   ,AAA0EE!Ec                     t           j                            d          }t          j        d          }t	          ||j        t           j        dd          }|j        dk    sJ d S )Nl   IL~QH(s rF   Tr   r  g-C6?)r9   rG   r   r  r   r:   r   )r  r   rN   r`   s       r=   test_p_never_zeroz.TestMonteCarloHypothesisTest.test_p_never_zero:  sf     i##$788HSMMq#*bg*.FD D DzV######rR   c                    t           j                            d          }|                    d          |                    d          f}|j        |j        f}d }t	          j        |||d          }t	          j        |d         |d	         gd          }t          |j        |j                   t          |j	        |j	        d
           d S )N   F:fmPr  r      c                 8    t          j        | ||          j        S r[   r  rW   s      r=   r~   zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statisticH  s    ?1a..88rR   rT   r#   r   r   {Gz?r   )
r9   rG   r   normalr   r   r  r   r~   r   r  r   r}   r   r~   r`   r  s          r=   test_against_ttest_indz3TestMonteCarloHypothesisTest.test_against_ttest_indC  s    i##$677zzvz&&

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

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


))3::8:+D+DFj#*cj#*<	> 	> 	> $T3	1:< < <nd,,,s}555
CJT::::::rR   z2Statistic may not depend on sample order on 32-bitc                 z   t           j                            d          d}fd} |d          }t          j        ||t           j        d|          }t          j        |j        |j        k              }t          j        |j        |j        dz  k              }||k    sJ |j	        |dz   |dz   z  k    sJ d S )	Nl   U5<H ra  c                 ^    dt          j        d                              |           z  S )Nr  gZd;O?)rO  r  )r   	bernoullir   ry   r   s    r=   r   zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvsh  s.    %00044$S4QQQQrR   rF   r   )r   r)   g     ?r   )
r9   rG   r   r   r   rl  r   null_distributionr~   r   )r  r)   r   rN   r`   c0c1r   s          @r=   test_finite_precision_statisticz<TestMonteCarloHypothesisTest.test_finite_precision_statistica  s    
 i##$455	R 	R 	R 	R 	R CHH$QRV1<> > > VC)S]:;;VC)S]G-DDEERxxxxzb1f{Q7777777rR   )"__name__
__module____qualname__r   r9   r  r  r   r  r  r6   markxslowr  parametrizer3  r  r  slowlinspacer  r   skewtestkurtosistestr  rc   r  r  r  r	  r  r  xfail_on_32bitr"  r\   rR   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$ $ $; ; ;; ; ;" [ TUU8 8 VU8 8 8rR   r  c                   t    e Zd Zd Zej        j        d             Zej        j        d             Zd Z	d Z
dS )	TestPowerc           
      	   t           j                            d          }t          j        }|j        |j        f}d}d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |d |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||j        df|           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  t          ||j        f|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||d
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |||t          j        dd                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||ddgg df           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||ddgddgfdg di           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ||           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d            d d d            n# 1 swxY w Y   t          j        t          |          5  t          |||d            d d d            d S # 1 swxY w Y   d S )!Nl   yB0 1 )r0   rE   r   r   r"   r   r  r   r  )r0   z3`significance` must contain floats between 0 and 1.r   significancerT   r   z`kwargs` must be a dictionaryr   )kwargsz+shape mismatch: objects cannot be broadcastr0   rD   )rE         rE   r4  rN   z`test` must be callablez(`n_resamples` must be a positive integerir(   g      %@z"`batch` must be a positive integerr,   )r9   rG   r   r   r  r  r6   r7   r8   r   r  r*  )r  r   testr   n_observationsr<   s         r=   r  zTestPower.test_input_validationv  sN   i##$788z3:&!D]:W555 	= 	=$^<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= E]9G444 	. 	.$n---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]9G444 	> 	>$V,n===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> .]:W555 	7 	7$~666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:W555 	$ 	$$U###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ H]:W555 	= 	=$^!<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=]:W555 	N 	N$^"+b!:L:LMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 2]9G444 	? 	?$^I>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? @]:W555 	7 	7$r2h5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:W555 	L 	L$r2hR13			:JKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L ,]9G444 	- 	-$^,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- =]:W555 	> 	>$^====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]:W555 	? 	?$^>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 7]:W555 	8 	8$^37777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]:W555 	9 	9$^48888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s  A99A= A=!B??CC%D

DD2EEE<FF!FG""G&)G&'H;;H?H?#JJ
J+KKK5LL#&L#M%%M),M)N--N14N1O33O7:O7P;;P?P?!RR	Rc                 N   t           j                            d          }fdd_        d_        t          dd          }t           j                            d          }t          di ||j        dd}t          j        d           t          j        d           t           j                            d          }d_        t          di ||j        d	d}t          j        d
           t          j        d	           t           j                            d          }d_        t          di ||j        dd}t          j        d           t          j        d           t          |j        |j                   t          |j        |j                   d S )Nr  c                     | j         dk    rdnt          |           }t          |j                  _        xj        dz  c_        t          j        | d|          j        S r	  )r   rd   r  r  r  r   r  r   )rN   r$   r  r6  s      r=   r6  z"TestPower.test_batch.<locals>.test  sZ    fkks1vvJ!*do>>DOLLALL$Q555<<rR   r   r0   r   )r6  r7  r)   r   )r   r-   r   rG  r\   )	r9   rG   r   r  r  r   r   r  r   )r  r   r  rO   rP   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,,,,,rR   c           
      l   t           j                            d          }t          j        ddg          dfd	}t          j        g d          d d t           j        f         }dg di}t          j        g d	          }t          j        ||j        |||
          }g }|D ]U}|D ]P}	|d         D ]ED ]@dfd	}
t          j        |
|j        |	|          }|	                    |j                   AFQVt          j
        ||j        j                  }t          |j        |dd           d S )Nl   x7'\r   皙?rT   c           
          t          j        t          t          d| j        dz                                 }t          j        | |||          S )Nr   )r   r$   )r9   expand_dimsr;   r3  r   r   r  )rN   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 0rR   )r0   r   rG  r   rF   r   r  )r  r  皙?r   r2  r3  c                 4    t          j        | |          S )Nr  )r   r  )rN   r$   alternative_i	popmean_is     r=   test2z+TestPower.test_vectorization.<locals>.test2  s*    #(#4Q	AN$P $P $P PrR   r1  r  r  )r   r   rb   )r9   rG   r   r   r`  ry  r   r   r  appendrn   rl   r   )r  r   r6  nxr3  r2  r`   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======rR   c                    t           j                            d          }t          j        }|                    ddd          }|j        |j        f}t          j        g d          }t          j        ||||          }t          j	        |d d t           j
        f         |j        j                  }t          |j        |d	           d S )
N   &( r0   rF   )r   r0   r   )r  r@  r   r1  r  r   )r9   rG   r   r   r  integersr  r`  r   rm   ry  rl   r   )r  r   r6  r7  r   r2  r`   s          r=   test_ttest_ind_nullzTestPower.test_ttest_ind_null  s     i##O44b#G<<j#*$z"3"3"344k$^,OOO|AAArzM'BCIOTT	<d;;;;;;rR   c                    t           j                            d          }g dg dgg dg dgg}dg di}dgd	gg}d
dg}t          j        t          j        |j        |||          }t          |j        |d
           d S )NrM  )gv?g]NbJ?g6;?)gOt]?g7gLڷ?g0Dҗ?)gVL[?g;c?g.H&?)g#*3)?glk?g5i ?r  )r   rE  r   r0   rG  r  r@  rA  r   )r9   rG   r   r   r   r  r  r   )r  r   r  r3  r7  r2  r`   s          r=   test_ttest_1samp_powerz TestPower.test_ttest_1samp_power  s    i##O44 544444644444467
 ___-$d|k%+SZ'3FD D D	3T222222rR   N)r#  r$  r%  r  r6   r&  r)  r  rK  rO  rQ  r\   rR   r=   r/  r/  u  s        69 69 69p [!- !- !-F [%> %> %>N< < <3 3 3 3 3rR   r/  c                      e Zd ZdZd Zd Zej                            de	j
        j        e	j
        j        g          ej                            dg d          d                         Zej                            de	j
        j        e	j
        j        g          ej                            dd	 ej        d
          dz  fdd ej        dd
          fg          d                         Zd Zej                                        d             Zd Zej                            dd          ej                            dd          ej                            dd          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 d0g d1d2d3d4d5d6d7d/Z#ej                                        ej                            d8e"e#f          d9                         Z$ej        j        ej                            d:d;          d<                         Z%ej                            d=d>          d?             Z& e'd@          d
g f e'd          d
g dg dAgf e'dB          d
g dg dAddCggfgZ(ej                            dDe(          dE             Z)dF Z*dGS )HTestPermutationTestr$  c                 N    t           j                            d          | _        d S )Nl   F )r9   rG   r   r   )r  s    r=   setup_methodz TestPermutationTest.setup_method!  s    9(()<==rR   c                    d }d}t          j        t          |          5  t          g ddgf|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d	
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d	           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            d S # 1 swxY w Y   d S )Nc                 :    t          j        | |f|          j        S r[   r  rW   s      r=   r  z:TestPermutationTest.test_permutation_test_iv.<locals>.stat(  s    ?Aq6400::rR   z2each sample in `data` must contain two or more ...r   r   r   z6`data` must be a tuple containing at least two samples)r   r!   r"   r#   z `permutation_type` must be in...r   )permutation_typer   r   r  r'   r(   r*   r+   r,   r  r  r2   r3   r4   )r6   r7   r8   r   r  )r  r  r<   s      r=   test_permutation_test_ivz,TestPermutationTest.test_permutation_test_iv&  s`   	; 	; 	; 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 7]:W555 	5 	5iii3T*35 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   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r5   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   rd   r  r  r  r9   r:   )rN   rX   r$   r  r~   s       r=   r~   z1TestPermutationTest.test_batch.<locals>.statisticf  sn    fkks1vvJ#&z93G#H#HI "714(((2714+@+@+@@@rR   r   r   T)r)   rX  r    r   )r-   r5   r  r   r   r   )r   rG   r  r  r   r   r   r   )
r  rX  r5   rN   rX   r  rO   rP   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[$+.....rR   zpermutation_type, exact_sizerZ  r   r   )r[  r|  r\  r/  c                 R   | j                             d          }| j                             d          }d }|dd}t          j        ||f|fd |d          d|}t	          |j        j        d           t          j        ||f|fi |}t	          |j        j        |           d S )Nr   c                 \    t          j        | |          t          j        ||          z
  S ri   r   rW   s      r=   r~   z8TestPermutationTest.test_permutations.<locals>.statistic  +    714(((2714+@+@+@@@rR   T)rX  r    r   )r)   r5   )r   rG   r   r   r   r  ry   )	r  rX  
exact_sizer5   rN   rX   r~   r  r`   s	            r=   test_permutationsz%TestPermutationTest.test_permutations  s     HOOAHOOA	A 	A 	A %5"$ $$aVY KA2>,q//K KEIK KS*/333$aVY??$??S*/<<<<<rR   c                    d\  }}d\  }}}t          j        ||z   |          |k    sJ t          j                            |          }t          j                            |          }||f}d }	ddd||d}
t          ||	fd	|i|
}t          ||	fd	t          j        i|
}|j        |j        k    sJ t          |j
        |j
        d
           d S )N)r   r   )r|  	   i]  r   c                 \    t          j        | |          t          j        ||          z
  S ri   r   rW   s      r=   r~   zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statistic  rb  rR   Tr\  rF   r    rX  r-   r   r5   r)   r  r   )r   binomr   r   r   r   r9   infr~   r   r   r  r   r   rG  nypermutationsrN   rX   r}   r~   r  r`   rP   s                r=   'test_randomized_test_against_exact_bothz;TestPermutationTest.test_randomized_test_against_exact_both  s    %S*B}R"Wb))L8888JNNN##JNNN##!t	A 	A 	A #[#O OtY ' 'L '!%' 'iLLRVLtLL}....
DKd;;;;;;rR   c                    d\  }}d\  }}}d|z  |k    sJ t           j                            |          }t           j                            |          }||f}d }	ddd||d	}
t          ||	fd
|i|
}t          ||	fd
t          j        i|
}|j        |j        k    sJ t          |j        |j        d           d S )N)r   N)r   r   i }  r   r   c                 4    t          j        | |z
  |          S ri   r   rW   s      r=   r~   zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statistic  s    71q5t,,,,rR   Tr[  rF   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	- 	- 	- #	[#O OtY ' 'L '!%' 'iLLRVLtLL}....
DKd;;;;;;rR   c                    d| j         }}d\  }}}t          j        |          |k    sJ t          j                            |          }t          j                            |          |g}fd}t          j        |          }	ddd||d}
t          ||	fd	|i|
}t          ||	fd	t          j
        i|
}|j        |j        k    sJ t          |j        |j        d
           d S )Nr  )r|  r|  i@  r   c                 :    t          j        |           d         S Nr   r   pearsonrrN   rX   s    r=   r  zTTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic1d  s    >!Q''**rR   Tr[  rF   rh  r)   r  r   )r   r   	factorialr   r   r   r   rZ  r   r9   rj  r~   r   r   )r  r   r   rG  rl  rm  rN   r}   r  r~   r  r`   rP   rX   s                @r=   +test_randomized_test_against_exact_pairingsz?TestPermutationTest.test_randomized_test_against_exact_pairings  s'    'S*B $$|3333JNNN##JNNN##s	+ 	+ 	+ 	+ 	+  4[AA	"	[#O OtY ' 'L '!%' 'iLLRVLtLL}....
DKd;;;;;;rR   r   r  rm  )rH  g    eAr$   rB   c           	      (   t          j        d                              ddd          }t          j        t          j        d          d d d d f         d|          }t           j                            d          }t          j        ||||||          }d }t           j                            d          }	t          ||f|d	||||	
          }
t          |j
        |
j
        | j                   t          |j        |
j        | j                   d S )N<   r   r   ru   r   l   ;WNa )rm  r$   r5   r   c                 :    t          j        | ||          j        S ri   r  rW   s      r=   r~   zETestPermutationTest.test_against_permutation_ttest.<locals>.statistic  s    ?1ad333==rR   Tr    r)   r   r$   r5   r   )r9   rc   rn   moveaxisrG   r   r   r  r   r   r~   r   r   )r  r   rm  r$   rN   rX   r@  rO   r~   rA  rP   s              r=   test_against_permutation_ttestz2TestPermutationTest.test_against_permutation_ttest  s    Ie$$Q1--K	!QQQd]3Q==y$$%899q!,T,0kK K K	> 	> 	> y$$%899A	d,8,7d-13 3 3
 	TYGGGGT[tyAAAAAArR   r  c                    | j                             dd          }| j                             ddd          }t          j        ||d          }fd	}t	          ||f|t
          j        d
| j                   }t          |j        |j        | j	                   t          |j
        |j
        | j	                   d S )Nr   r   ry   rx   ru   r   )ry   rw   rx   exact)r   r  c                 >    t          j        | |d          j        S r  )r   ks_2sampr~   rN   rX   r   s     r=   r  z>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1d  s)    >!QW.9; ; ;;DErR   r   r)   r   r5   r   )r   r  r   r  r   r9   rj  r   r~   r   r   )r  r   rN   rX   r   r  r`   s    `     r=   test_against_ks_2sampz)TestPermutationTest.test_against_ks_2samp  s     HOO!O,,HOOO33>!QKgNNN	E 	E 	E 	E 	E 1v{+448M M M 	x'9	JJJJ
HO$)DDDDDDrR   c                    | j                             dd          }| j                             dd          }dddd	}||         }t          j        |||
          }d }t	          ||f|t
          j        || j                   }t          |j        |j        | j	                   t          |j
        |j
        | j	                   d S )Nr   r   r  ru   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>.statistic1d2      <1%%//rR   r  r   )r   r  r   r  r   r9   rj  r   r~   r   r   )	r  r   rN   rX   alternative_correspondencealternative_scipyr   r  r`   s	            r=   test_against_ansariz'TestPermutationTest.test_against_ansari%  s     HOO!O,,HOO!O,, /8173>&@ &@" 7{C<12CDDD	0 	0 	0 1v{+6TXO O O 	x'9	JJJJ
HO$)DDDDDDrR   c           	         t           j                            dd| j                  }t           j                            dd| j                  }t          j        ||d|          }d }t          ||f|dt          j        |d| j        	          }t          |j	        |j	        | j
        
           t          |j        |j        | j
        
           d S )N)r   ru   r   r   ry   rw   r5   r@  r   r  c                 :    t          j        | ||          j        S ri   )r   mannwhitneyur~   rW   s      r=   r~   z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statisticC  s    %a666@@rR   Tr}  r   )r   uniformr   r   r  r   r9   rj  r   r~   r   r   )r  r   rN   rX   r   r~   r`   s          r=   test_against_mannwhitneyuz-TestPermutationTest.test_against_mannwhitneyu;  s     M9!$(KKM9$TXNN%aLLL	A 	A 	A 1vyT+-6{$%DH> > > 	x'9	JJJJ
HO$)DDDDDDrR   c                    t           j                            dd| j                  }t           j                            ddd| j                  }t          j        ||d          }d	 }t          ||f|t          j        d
| j                  }t          |j	        |j	        | j
                   t          |j        |j        | j
                   d S )Nr   r   )ry   rx   r5   ru   r   )ry   rw   rx   r5   r  r.   c                 :    t          j        | |d          j        S N
asymptoticr.   )r   cramervonmises_2sampr~   rw  s     r=   r  z9TestPermutationTest.test_against_cvm.<locals>.statistic1dT  s*    -a5AC C CCLMrR   r   r  r   )r   r   r   r   r  r   r9   rj  r   r~   r   r   )r  rN   rX   r   r  r`   s         r=   test_against_cvmz$TestPermutationTest.test_against_cvmM  s    JNNNBBJNNqNII-a7CCC	M 	M 	M
 1v{+448M M M 	x'9	JJJJ
HO$)DDDDDDrR   )rT   r   c                 6   t           j                            d          }|                    d          }|                    d          }|                    d          }|||f}d }d }t          j        |          }	t          j        |          }
t          j        |d          }t          j        |d	          }t          j        |d
          } |	||||          } |
||||          }d|dd| j        d}t          ||fdt           j        i|}t          ||fddi|}t          |j
        || j                   t          |j
        |j
        | j                   t          |j        |d           t          |j        |j        d           d S )Nl   Y}y!dh r   r   )r   r   r   )r   r   r   c                  (    t          j        |  j        S r[   )r   kruskalr~   r}   s    r=   r  zITestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistic1dq  s    =$'11rR   c                  (    t          j        |  j        S r[   )r   r  r   r  s    r=   pvalue1dzFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1dt  s    =$'..rR   )r   r   r   )r   r   r   r  r#   Fr   r\  r    r$   r   rX  r5   r)   r   r   gQ?r   r   )r9   rG   r   r   rZ  rm   r   r   rj  r   r~   r   r   )r  r$   r   rN   rX   rj   r}   r  r  r~   r   x2r8  z2expected_statisticexpected_pvaluer  r`   rP   s                      r=    test_vectorized_nsamp_ptype_bothz4TestPermutationTest.test_vectorized_nsamp_ptype_both_  s    i##$788JJQJ  JJIJ&&JJIJ&&1ay	2 	2 	2	/ 	/ 	/  4[AA	1(;; _Q	**_Q	**_Q	**&Yr2r=== &R$777 $T)$148M Mt[MMbfMMMkLLtLtLL 	'9	JJJJt~DIFFFF
O$????
DKd;;;;;;rR   c                    t           j                            dd| j                  }t           j                            dd| j                  }d }d }fd}t	          j        |          } |||d	          }|d         }	|d         }
d
dd| j        t          j        d}t          ||z
  f|fi |}t          ||f|fi |}t          |j
        |j
        | j                   dk    rt          |j
        |	| j                   t          |j        |
| j                   t          |j        |j        | j                   d S )N)r   r/  r   r   r  r@  c                 8    t          j        | d          j        S Nr   r  r   wilcoxonr~   )rj   s    r=   statistic_1samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1d  s    >!888BBrR   c                 :    t          j        | |d          j        S r  r  rw  s     r=   statistic_2samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1d  s    >!QF;;;EErR   c                 2    t          j        | |          S )Nr  )r   r  r  s     r=   test_1dz:TestPermutationTest.test_against_wilcoxon.<locals>.test_1d  s    >!QK@@@@rR   r   r#   Fr[  )r    r$   r   rX  r5   r)   r   r  )r   r  r   r   r   rZ  r9   rj  r   r   r~   r   r   )r  r   rN   rX   r  r  r  r6  r   r  r  r  rO   rP   s    `            r=   test_against_wilcoxonz)TestPermutationTest.test_against_wilcoxon  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{$-tx!v' '  1(:CCdCCA(:CCdCC 	TYGGGG+%%DNM	JJJJZdi@@@@T[tyAAAAAArR   c           	      @   | j                             ddd          }d||dk    <   dd} ||          dd}}}t          j        ||||          }t          j        |f|d	d
t
          j        | j         |          }t          |j        |j        | j	                   d S )Nr   r   r0   r   rT   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++++rR   rE  r  Tr[  )r    rX  r)   r5   r   r   r   )
r   rN  r   r   r   r9   rj  r   r   r   )	r  r   rN   r~   kre   rO  r   r`   s	            r=   test_against_binomtestz*TestPermutationTest.test_against_binomtest  s     Ha,,!q&	
	, 	, 	, 	, )A,,Ca1?1aDDD$aT96?13dh1<> > > 	
HO$)DDDDDDrR   c                 ~   | j                             d          }|| j                             d          z   t          j        |d          }fd}t	          |f|dt
          j        | j                   }t          |j        |j        | j	                   t          |j
        |j
        | j	                   d S )	Nr/  r   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HrR   rZ  )rX  r)   r5   r   )r   r  r   r  r   r9   rj  r   r~   r   r   )r  rN   r   r  r`   rX   s        @r=   test_against_kendalltauz+TestPermutationTest.test_against_kendalltau  s    HOOO##Q'''#Aq999	I 	I 	I 	I 	I t[:+-6J J J 	x'9	JJJJ
HO$)DDDDDDrR   c                    fd}t           j                            d          }|                    d          dk                        t                    }|                    d          d|z  z   dk                        t                    t
          j                            |          d         }t          |f|dt           j	        ||          }t          j
        ||	          }t          |j        |d                    d S )
Nc                 B    t          j        | dk    dk    z            S r  r  rw  s    r=   r~   z@TestPermutationTest.test_against_fisher_exact.<locals>.statistic  s     616a1f-...rR   l   	(yM4 r  g333333?g      ?r   rZ  )rX  r)   r   r5   r  )r9   rG   r   astypefloatr   contingencycrosstabr   rj  fisher_exactr   r   )	r  r   r~   r   rN   tabr`   rP   rX   s	           @r=   test_against_fisher_exactz-TestPermutationTest.test_against_fisher_exact  s    	/ 	/ 	/ 	/ 	/ i##$788ZZ]]S ((//ZZ]]T!V#c)11%88((A..q1tY+-6{,/1 1 1 !#;???
DG,,,,,rR   )r0  r   c                 @   | j                             d          }| j                             d          }| j                             d          }t          j        ||          }t          j        ||          }t          j        ||          }|d         }|||f}d }d }t	          j        |          }t	          j        |          }	 |t          j        | d	|i}
 |	t          j        | d	|i}d
|dddd}t          ||fdt          j	        i|}t          ||fddi|}t          |j        |
| j                   t          |j        |j        | j                   t          |j        || j                   t          |j        |j        d           d S )N)r   r   r   r   )r   r   r   )r   r   r   r#   r   c                  :    t          j        | dd          j        S )NTr  rankedr/   )r   page_trend_testr~   r  s    r=   r  zLTestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.statistic1d  s'    (d0<> > >>GHrR   c                  :    t          j        | dd          j        S )NTr  r  )r   r  r   r  s    r=   r  zITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1d  s'    (d079 9 99?@rR   r$   Fr   rZ  r  r)   rv   r   r   r   )r   rG   r   rankdatar   rZ  r9   broadcast_arraysr   rj  r   r~   r   r   )r  r$   rN   rX   rj   r}   r  r  r~   r   r  r  r  r`   rP   s                  r=   #test_vectorized_nsamp_ptype_samplesz7TestPermutationTest.test_vectorized_nsamp_ptype_samples  s    HOOO++HOOO++HOOO++N14(((N14(((N14(((aD1ay	H 	H 	H	@ 	@ 	@  4[AA	1(;;&Y(;T(BNNN &""5t"<H4HH $T)$.C Ct[MMbfMMMkLLtLtLL'9	JJJJt~DIFFFF
O$)DDDD
DKd;;;;;;rR   r   )r"   r   g      @r;  g?g&_?g      @gd~$I"@glu?)rN   rX   expected_lessexpected_2sidedexpected_Pr_gte_S_meanr  expected_avgexpected_std)o   k   rF   r   r  j   m   l   )	r  r  r  b   i   r  n   r  r   gd?gd?gYo5 ?g     @@@g{C@gDmFA@casec                    |d         }|d         }|d         }|d         }|d         }|d         }|d         }|d         }	d	 }
t           j                                        5 }|                    t          d
           t          ||f|
t           j        d          }t          ||f|
t           j        d          }ddd           n# 1 swxY w Y   t          |j        || j	                   t          |j
        |d           t          |j
        |d           t          |j                                        |d           t          |j                                        |	d           |j        }|j                                        }t          |j                  }t          j        t          j        |j        |z
            t          j        ||z
            k              |z  }t          ||           dS )a  
        Results above from SAS PROC NPAR1WAY, e.g.

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

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

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

        options(digits=16)
        x <- c(1.76405235, 0.40015721, 0.97873798,
               2.2408932, 1.86755799, -0.97727788)
        y <- c(2.71414076, 0.2488, 0.87551913,
               2.6514917, 2.01160156, 0.47699563)
        cor.test(x, y, method = "spearm", alternative = "t")
        )g@9?gY,?gOQ?g[iY@g|?g鈶BE)gQGn@gU?gz˱@?gmGA6@gB @g˭?g?c                 8    t          j        |           j        S r[   )r   	spearmanrr~   rw  s    r=   r  zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1d  s    ?1a((22rR   rZ  )rX  r)   r   r   gvIh%<=r   N)r   r9   rj  r   r~   r   r   )r  r   r  rN   r  r  r`   rX   s          @r=   test_against_spearmanr_in_Rz/TestPermutationTest.test_against_spearmanr_in_Rj  s    (1 1 10 0 0/	3 	3 	3 	3 	3 t[:+-6{L L L 	'9	JJJJ
O%@@@@@@rR   r-   )rT   r   c                     t          j        t          d          5  t          t	          j        g d|                     d d d            d S # 1 swxY w Y   d S )Nz`batch` must be positive.r   r   )r6   r7   r8   ro   r   _batch_generator)r  r-   s     r=   test_batch_generator_ivz+TestPermutationTest.test_batch_generator_iv  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   )r   r   ru   r|  r  ziterable, batch, expectedc                 Z    t          t          j        ||                    }||k    sJ d S r[   )ro   r   r  )r  iterabler-   r   gots        r=   test_batch_generatorz(TestPermutationTest.test_batch_generator  s/     ;/%@@AAhrR   c                     g d}g d}d }t          j        ||f|dd          }|j        |j        |j        }}}dt          j        ||dz
  k              z  t          |          z  }||cxk    rd	k    sn J d S )
N)r   r   r   r   )r   r   r/  r|  c                 8    t          j        | |          d         S rt  ru  rw  s     r=   r~   zFTestPermutationTest.test_finite_precision_statistic.<locals>.statistic  s    >!Q''**rR   FrZ  )r    rX  r   r$  gUUUUUU?)r   r   r~   r   r  r9   r   rd   )	r  rN   rX   r~   r`   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))))))))rR   N)+r#  r$  r%  r   rU  rY  r6   r&  r(  r9   rG   r;  r   r  r   rx  ri  rd  rn  r)  rq  ry  r  r  r  r  r  r'  r  r  r  r  r  r  
tie_case_1
tie_case_2r  r  r  r3  batch_generator_casesr  r"  r\   rR   r=   rS  rS    s       D> > >
35 35 35l [^bi.C.0i.C.E F F[/CCCE E"/ "/E EF F"/H [^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< < <6 [],?@@ [^Y77[VY//B B 0/ 87	 A@B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* * * * *rR   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   rT   c                 ,    g | ]}t          |          S r\   )	frozenset)r   r]   s     r=   
<listcomp>z4test_all_partitions_concatenated.<locals>.<listcomp>  s    !E!E!E1)A,,!E!E!ErR   c           
          g | ]D}t          j        t          |d                    t          |dz   d                              ES r  )r   ri  r   )r   r]   re   s     r=   r  z4test_all_partitions_concatenated.<locals>.<listcomp>  sU     2 2 2  c!ABB%jj#a!g,,?? 2 2 2rR   )r9   r   intcumsumsetr   _all_partitions_concatenatedsplitaddr;   prodr3  rd   r   )ncall_partitionsr  partition_concatenatedpartitioningr   re   s         @r=    test_all_partitions_concatenatedr    s    	#&&&A	1BUUNG"-"J1"M"M H H1x 63B3@@5!E!E!E!E!EFFGGGGw 2 2 2 2!&s1vvax2 2 2 3 3H (###^$$h/////rR   fun_namer   r   r   c                 x   t           j                            d                              d          fd}fddfdd|d	d
}ddi}t          t          |           }||          }|                    |           fd} |d|d d|  |d|dd| d } |d|d d|  |d|dd| d S )Nl   r: r0   r   c                 F    t           j                            |           S )Nr  )r   r   r   r  s    r=   r   z&test_parameter_vectorized.<locals>.rvs  s    z~~4c~:::rR   r@   )r}   r5   r/   r[  )r}   r5   rX  )r   r   r  r)   rF   c                 t    | j         dk    st          j        |           sJ t          j        | |          S r_  )r   r9   r5  r:   )rN   r$   r   s     r=   r~   z,test_parameter_vectorized.<locals>.statistic  s7    vzzR^Av66zzzwqt$$$$rR   )r~   r    Tc                 D    | j         dk    sJ t          j        |           S r  )r   r9   r:   r  s    r=   r~   z,test_parameter_vectorized.<locals>.statistic  s    v{{{{wqzzrR   Fr\   )r9   rG   r   r=  r   r   )	r  r   fun_optionscommon_optionsr  optionsr~   r   r   s	          @@r=   test_parameter_vectorizedr    si   
 )


/
/CZZRZ  F; ; ; ; ; +1C+7!9 !917	3<E(G (G28'E'E	G GK
 $S)N
%
"
"C(#GNN>"""% % % % % C8)88888C8)88888   C8)88888C9)9999999rR   )Cr6   numpyr9   numpy.testingr   r   r   scipy.conftestr   scipy._lib._utilr   scipy._lib._array_apir   r	   r
   r   scipyr   r   scipy.optimizer   scipy.statsr   r   r   r   scipy.stats._resamplingr   r>   r&  r(  rQ   rf   rs   r)  r-  r   tests_Ritemsr   tests_against_itself_1sampr   r   r   tests_against_itself_2sampr   r  r
  r  r  r!  r&  r,  r9  rC  rQ  rU  r\  ri  filterwarningsr}  r  r  r/  rS  r  r  r\   rR   r=   <module>r     s        J J J J J J J J J J / / / / / / ) ) ) ) ) )E E E E E E E E E E E E                       L L L L L L L L L L L L - - - - - - - - -<A <A <A~ #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N
* N
* N
* N
* N
* N
* N
* N
*n0 0 0* NNNP P: :P P: : :rR   