
    Џkh@                    
   d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d dlmc mZ d	 Ze j6                  j9                  d
g d      e j6                  j9                  dg d      d               Ze j6                  j9                  d
g d      d        Ze j6                  j9                  d
g d      e j6                  j9                  dg d      e j6                  j9                  dddg      d                      Ze j6                  j@                  e j6                  jC                  d      e j6                  j9                  d
g d      d                      Z"ddddZ#e j6                  j9                  de#jI                               d        Z%d Z&d Z'ddddZ(e j6                  j@                  e j6                  j9                  de(jI                               d               Z)d d!d"Z*e j6                  j@                  e j6                  j9                  de*jI                               d#               Z+e j6                  j9                  d
d$d%g      e j6                  j9                  dd d&g      d'               Z,e j6                  jC                  d(      e j6                  j9                  d
g d      e j6                  j9                  dd d&g      d)                      Z-e j6                  j9                  d
g d      d*        Z.e j6                  j9                  d
g d      d+        Z/d, Z0e j6                  j9                  d-d d.g      d/        Z1e j6                  jC                  d0      e j6                  j9                  d
g d      d1               Z2d2 Z3e j6                  j9                  d3d4d5g      d6        Z4e j6                  j9                  d7g d8      e j6                  j9                  dg d      d9               Z5d: Z6e j6                  j9                  dg d      d;        Z7e j6                  j@                  e j6                  j9                  d
g d      d<               Z8e j6                  j@                  e j6                  js                  d=      d>               Z:d? Z; G d@ dA      Z< G dB dC      Z= G dD dE      Z>dF Z?e j6                  j9                  dGg dH      dI        Z@ G dJ dK      ZAy)L    N)assert_allcloseassert_equalsuppress_warnings)rng_integers)is_numpy)xp_assert_closexp_assert_equal)statsspecial)root)	bootstrapmonte_carlo_testpermutation_testpowerc                  	   d} t        j                  t        |       5  t        dt        j
                         d d d        d} t        j                  t        |       5  t        t               t        j
                         d d d        d} t        j                  t        |       5  t        g ddgft        j
                         d d d        d} t        j                  t        |       5  t        g dg dft        j
                  d	
       d d d        d} t        j                  t        |       5  t        dt        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d        d d d        d!} t        j                  t        |       5  t        g dft        j
                  d"#       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   y xY w)$Nz%`data` must be a sequence of samples.match   z(`data` must contain at least one sample.z>each sample in `data` must contain two or more observations...r         z=When `paired is True`, all samples must have the same length r   r   r      T)paired0`vectorized` must be `True`, `False`, or `None`.ekki
vectorized`axis` must be an integer.      ?axisz!could not convert string to floatni)confidence_levelz-`n_resamples` must be a non-negative integer.n_resamples     D@+`batch` must be a positive integer or None.batchz`method` must be inmethodz?`bootstrap_result` must have attribute `bootstrap_distribution'
   )bootstrap_resultz5Either `bootstrap_result.bootstrap_distribution.size`r   ,SeedSequence expects int or sequence of intsherringrng)pytestraises
ValueErrorr   npmeantuple	TypeError)messages    ]/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/stats/tests/test_resampling.pytest_bootstrap_ivr=      s   5G	z	1 !RWW 9G	z	1 $%'277#$ OG	z	1 -9qc"BGG,- OG	z	1 C9l+RWWTBC AG	z	1 1!RWW01 +G	z	1 39,c23 2G	z	1 @9,$?@ >G	z	1 <9,U;< >G	z	1 =9,V<= <G	z	1 69,u56 <G	z	1 79,v67 $G	z	1 89,78 PG	z	1 >9,"=> FG	z	1 89,Q78 =G	y	0 89,Y78 8q $ $- -C C1 13 3@ @< <= =6 67 78 8> >8 88 8s   P#P& P%+#P23P?5 Q: Q? Q& Q3	 R  R R R' R4" S PP"%P/2P<?Q	QQ#&Q03Q= R
RR$'R14R= S	r-   )basic
percentileBCar"   r   r   r   c           	      :   t         j                  j                  d      }|j                  ddd      }t	        |ft         j
                  d | d|d      }t         j                  j                  d      }t	        |ft         j
                  d| |d|      }t        |j                  j                  |j                  j                         t        |j                  j                  |j                  j                         t        |j                  |j                         y )Nr   r.         d   )r+   r-   random_stater"   r'   )r+   r-   r"   r'   rF   )r7   randomRandomStaterandr   r8   r   confidence_intervallowhighstandard_error)r-   r"   r3   xres1res2s         r<   test_bootstrap_batchrQ   O   s     ))


"CRAaT277$v"#$CAD
))


"CaT277"VCcCD ))--t/G/G/K/KL))..0H0H0M0MN$$d&9&9:    c                   	 t         j                  j                  d      }d}|j                  |      |j                  |      	ddd	fd	}t        j                  t                    }t        |f|d      }t        	fdd      }t        |j                  |j                         t        |j                  |j                         y )	Nr   rE   c                 2    | |z
  dz  j                  |      S )Nr   r!   r8   rN   yr"   s      r<   my_statisticz+test_bootstrap_paired.<locals>.my_statisticj   s    1qD))rR   c                 .    |    }|    } ||      }|S N )ir"   abresrX   rN   rW   s        r<   my_paired_statisticz2test_bootstrap_paired.<locals>.my_paired_statisticm   s&    aDaD1a 
rR   r2   T)r   r3   )
r7   rG   rH   rI   arangelenr   r   rJ   rM   )
r-   r3   nr`   r\   rO   rP   rX   rN   rW   s
          @@@r<   test_bootstrap_pairedrf   b   s     ))


"CAAA* 			#a&AaT.A6DaV\$A>DD,,d.F.FGD'')<)<=rR   r   TFc           	         t         j                  j                  d      }dd}d}||   }|j                  |      }|j                  |      }|j                  |      }	t	        |||	f||| ddd      }
|
j
                  j                  |
j                  j                  dz   k(  sJ g d}|||<   t        j                  |j                  |      |      }t        j                  |j                  |      |      }t        j                  |	j                  |      |      }	t	        |||	f||| d|d      }t        |j                  j                  |
j                  j                         t        |j                  j                  |
j                  j                         t        |j                  |
j                         t        |      }|j                  |       t!        |j                  j                  j                  |       t!        |j                  j                  j                  |       t!        |j                  j                  |       y )	Nr   c                 r    | j                  |      |j                  |      z   |j                  |      z   S Nr!   rU   )rN   rW   zr"   s       r<   rX   z/test_bootstrap_vectorized.<locals>.my_statistic   s3    vv4v 166t6#44qvv4v7HHHrR   )r.   rC   rD   rE   )r   r-   r3   r"   r'   )rE   )r   r   r   ra   )r7   rG   rH   rI   r   bootstrap_distributionshaperM   broadcast_toreshaper   rJ   rK   rL   listpopr   )r-   r"   r   r3   rX   rl   	n_samplesrN   rW   rj   rO   rn   rP   result_shapes                 r<   test_bootstrap_vectorizedrs   |   s    ))


"CI EdIAAAaAYVF5D''--""((612 3 2 GGDM
		'*E2A
		'*E2A
		'*E2AaAYVF38D D,,00,,002D,,11,,113D'')<)<=;LT))--33\B))..44lC$$**L9rR   z#MemoryError with BCa observed in CIc                    t         j                  j                  d      }t        j                  j                  ddd|      }d}t        j                  t        |      dz
  t        j                  |      t        j                  |            }|j                  |	      }|j                         }t        |ft         j                  d| |
      }t        di |d|i}t        |j                  |d       t        |j                   |d       |j#                  t        d|             t        di ||dd}t        |j                  j$                  |j'                  |      d       |j#                  t        d|             t        di ||dd}t        |j                  j(                  |j'                  d|z
        d       y )Nl   )ICbX     r     )locscalesizerF   ffffff?r   )dfrw   rx   )
confidence)data	statisticr'   r-   r3   r$   gMb@?rtolga2U0*3?atolr   r'   r/   lessr$   alternativegreaterr[   )r7   rG   default_rngr
   normrvstrd   r8   semintervalstddictr   r   rJ   rM   updaterL   ppfrK   )	r-   r3   r}   alphadistexpected_intervalexpected_seconfigr_   s	            r<   test_bootstrap_against_theoryr      sc   
 ))

 3
4C::>>aqt#>FDE77c$ikrwwt}EIIdOLD7((*Kw"''tS*F

5f
5u
5CC++->TJC&&$?
MM$1s;<

If
Iu&
ICC++00$((5/M
MM$1s;<

Lf
Lu)
LCC++//!E'1B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       y )N)r.   rD         )@r   g+@            "   2   Q   Y   y         i@B r   )r'   r-   r3   g{Gzt?r   )r7   arrayr   r8   r   rJ   )r-   expectedrN   r_   s       r<   test_bootstrap_against_Rr      sD    " 	 5 	6A
QD"''wvCC++XEBrR   c                  `   g d} g d}d }t         j                  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kD  sJ t        |      dk  sJ y )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                 h    t        j                  | |      }t        j                  ||      }||z
  S ri   )r
   skew)rN   rW   r"   s1s2s        r<   r~   z1test_multisample_BCa_against_R.<locals>.statistic   s+    ZZ%ZZ%BwrR   l   tgy4r>   rE   )r-   r+   r3   r?   bcag1*g333333ÿg333333?Q?)r7   rG   r   r
   r   r8   rJ   abs)rN   rW   r~   r3   	res_basicres_percentres_bca	mid_basicmid_percentmid_bca	mid_wboot
diff_basicdiff_percentdiff_bcas                 r<   test_multisample_BCa_against_Rr      s3   	.A	9A
 ))

 2
3CA	'&)s4I//1a&)L(+6Kooq!fi$'S2G 	556I''+99:Kggg11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       y )	N)	r.         (   .   r   4   h      )   r   &   ^   c         c                 `    t        j                  | |      t        j                  ||      z
  S ri   r7   r8   )rj   rW   r"   s      r<   r~   z:test_BCa_acceleration_against_reference.<locals>.statistic&  s#    wwqt$rwwqt'<<<rR   rb   rz   rE   ge{?r   )r7   r   r
   r   rk   _resampling_bca_intervalr   )rW   rj   r~   r}   r_   r"   r   theta_hat_br+   _a_hats              r<   'test_BCa_acceleration_against_referencer     s     	78A
/0A= q6D
//$	
*CDE,,KE++D)T5,7@KAq%E/0rR   i  i  c           
         t         j                  j                  d      }d}d}d}t        j                  dd      }|j                         }d}|j                  ||f|	      }	t        |	ft         j
                  ||d
| d|      }
|
j                  }t        j                  |d   |k  ||d   k  z        }||k(  sJ t        j                  |||      j                  }|dkD  sJ y )Ni8 rE     ?ru   r   rw   rx   i  ry   rF   r   rb   )r~   r$   r'   r+   r-   r"   r3   r   皙?)r7   rG   r   r
   r   r8   r   r   rJ   sum	binomtestpvalue)r-   r   r3   re   r'   r$   r   	stat_truen_replicationsr}   r_   cici_contains_truer   s                 r<   #test_bootstrap_against_itself_1sampr   :  s     ))


(CAK ::!1%D		I N88.!,38?D
TG gg%5 +!C 
	 	 B vvr!uy0YA5FGHx''' __-~-//5v C<<rR   i|  iz  )r>   r?   c           
      8   t         j                  j                  d      }d}d}d}d}dd}t        j                  dd	      }t        j                  d
d	      }	|j                         |	j                         z
  }
d}|j                  ||f|      }|	j                  ||f|      }t        ||f|||d| d|      }|j                  }t        j                  |d   |
k  |
|d   k  z        }||k(  sJ t        j                  |||      j                  }|d
kD  sJ y )Nr   rE   x   r   r   rb   c                 h    t        j                  | |      }t        j                  ||      }||z
  S ri   r   )data1data2r"   mean1mean2s        r<   my_statz4test_bootstrap_against_itself_2samp.<locals>.my_statw  s,    D)D)u}rR   r   r   r     r   r   )r~   r$   r'   r+   r-   r"   rF   ra   )r7   rG   rH   r
   r   r8   r   r   rJ   r   r   r   )r-   r   r3   n1n2r'   r$   r   dist1dist2r   r   r   r   r_   r   r   r   s                     r<   #test_bootstrap_against_itself_2sampr   g  s3    ))


"C	B	BK JJ1A&EJJ3a(E

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

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


A	B	B	"	"B
))

 2
3C
//1$RS+/FC
//1$RS+/+.0C ))

 2
3C
//1$RS+/?C C&&(:(:GC++S-D-D rR   zSensible to machine precisionc                    t         j                  j                  d      }t        j                  dd      }|j                  d|      f}t        |t         j                  |d      }t        j                  di |d	d
i}|j                  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        y # 1 sw Y   y xY w)Nl   @Qixt r   r   r   rE   r   rb   )r}   r~   r3   r"   r$   r   r   r   rz   r   r   r   r"  r   z`alternative` must be one ofr   r   z	ekki-ekkir[   )r7   rG   r   r
   r   r   r   r   r   r   r   rJ   rL   rK   isneginfisposinfr4   r5   r6   )r-   r3   r   r}   r   r   lgs           r<   test_bootstrap_alternativer*    sm    ))

 3
4C::!1%DHH3cH24Dtrvv3R@F7&737A
MM$1q9:L&L4VLAO&O4YOAA))..0E0E0J0J A))--q/D/D/H/H ;;q,,00111;;q,,11222	z)G	H ;:&:k:; ; ;s   .GGc                     d} t         j                  j                  d       t        j                  j                  |  }t	        t        j                  |            }t        | d         D ]<  }|d|d d f   }t        j                  ||d      }t        j                  ||      r<J  t        j                  t        t        j                  |d            d      }t        j                  ||      sJ y )	Nr   r   ru      r   rb   .r!   r   r*   )r7   rG   seedrI   nextr   _jackknife_resamplerangedeletearray_equalconcatenatero   )rl   rN   rW   r\   slcr   y2s          r<   test_jackknife_resampler8  2  s    EIINN1
		A[,,Q/0A59 - Q	l99Q+~~c8,,,- 
[<<QaHI
!B>>"a   rR   rng_namerH   r   c                    t        t        j                  | d       }|t        j                  |  d        |d      } |d      }d}d}t        j                  j                  d       t        j                  j                  | }t        j                  |||      }t        |      D ]?  }|d|d d f   }	t        |d|d   |d         }
|d|
f   }t        j                  |	|      r?J  y )Nz not available.r   r.   r,  r2   .rb   )getattrr7   rG   r4   skipr/  rI   r   _bootstrap_resampler2  r   r4  )r9  r3   rng1rng2r'   rl   rN   rW   r\   r6  jsr   s               r<   test_bootstrap_resamplerA  E  s    
"))Xt
,C
{xj01q6Dq6DKEIINN1
		A'';DAA; - Q	l$59eBi8S"W:~~c8,,,-rR   score)r         ?r   c                     d}t         j                  j                  d       t        j                  j                  | }t	        j
                  || d      }d } ||| d      dz  }t        ||d       y )N)r.         r   rb   r!   c                 N    t        j                  t        j                  || |      S rZ   )r7   apply_along_axisr
   percentileofscore)r]   rB  r"   s      r<   vectorized_posz0test_percentile_of_score.<locals>.vectorized_posg  s    ""5#:#:D!UKKrR   rE   V瞯<)r7   rG   r/  rI   r   _percentile_of_scorer   )rB  r"   rl   rN   prJ  p2s          r<   test_percentile_of_scorerO  _  sf     EIINN1
		A((E;AL 
5r	*3	.BAr5!rR   c                  @   d} t         j                  j                  d      } |j                  |  } |j                  | d d  dz  }t	        j
                  ||      }t        | d         D ]2  }||   }t        j                  ||   ||   d      }t        ||d       4 y )N)r.   rE  r   rb   rE   r!   rK  )	r7   rG   rH   rI   r   _percentile_along_axisr2  r?   r   )rl   r3   rN   qrW   r\   r_   r   s           r<   test_percentile_along_axisrS  o  s    
 E
))


"C%A%*#A**1a0A58_ .d==1qt"5Xu-.rR   c                 8  	 d 		fd}t        j                  |      }t        j                  j	                  d      }|j                  ddd      }|j                  ddd      }|j                  ddd      } 	||||       } |||||       }t        ||       y )	Nc                 ,     t         fd|D              S )Nc              3   @   K   | ]  }|j                          y wrZ   rU   r   s     r<   r   z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>  r   r   r   r   s   ` r<   r~   z+test_vectorize_statistic.<locals>.statistic  r   rR   c                  D    | D ]  }|j                   dk(  rJ   | ddiS r   r   r   s     r<   r   z.test_vectorize_statistic.<locals>.statistic_1d  r   rR   r   r   ru   r-  r   r!   )r   _vectorize_statisticr7   rG   rH   rI   r   )
r"   r   
statistic2r3   rN   rW   rj   rO   rP   r~   s
            @r<   test_vectorize_statisticrZ    s    9( 11,?J
))


"CAqAAqAAqAQ14(DaAD)DD$rR   c           	         t         j                  j                  d      }d}t        j                  j
                  |d|d}d }t        |f|| ddd|	      }t        j                  |j                  j                  j                  |k  |j                  j                  j                  |kD  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 y )Nl   s: )r   rC  )rE   rE   r   c                     t        j                  t        j                  | |      t        j                  | |d      g      S )Nr   )ddof)r7   asarrayr8   r   )r}   r"   s     r<   r~   z/test_vector_valued_statistic.<locals>.statistic  s5    zz2774.66$157 8 	8rR   rb   '     )r-   r"   r'   r+   rF   r   r!   Z   rE   r   rE   )r   rE   r_  )r7   rG   r   r
   r   r   r   r   rJ   rK   TrL   allrl   rM   rk   )r-   r3   paramsr   r~   r_   countss          r<   test_vector_valued_statisticrg    sD    ))



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

+C

7A

7A: 
OOQFI&	OOQSS!##J	2 @G	z	1 3Acrc1fI	23	OOQ#2#qs($i0	OOQSS!##ac3B3h-()!<3 3s   ( D))D2c            
       4   e Zd ZdZdefdZd Zd Zd Ze	j                  j                  d        Ze	j                  j                  d ed	d
            d        Ze	j                  j                  dd      d        Ze	j                  j"                  e	j                  j                  dd      e	j                  j                  d ej$                  ddd            d                      Ze	j                  j                  dej*                  ej,                  f      e	j                  j                  dd      e	j                  j                  d ej$                  ddd            d                      Ze	j                  j                  d ej0                  dd
            d        Ze	j                  j                  e	j                  j                  d ej$                  ddd            d               Ze	j                  j"                  e	j                  j                  dd      e	j                  j                  d ed            d                      Zd  Zd! Zd" Ze	j                  j?                  d      e	j                  jA                  d#      d$               Z!y)%TestMonteCarloHypothesisTest皙?Nc                     fdS )Nc                  :    j                   | di|      S )NrF   dtype)r^  )rx  kwdsr  rsrvs_inxps     r<   <lambda>z6TestMonteCarloHypothesisTest.get_rvs.<locals>.<lambda>  s*    RZZ0V20VQU0V6; &0 &= rR   r[   )selfr  r  r  r  s    ````r<   get_rvsz$TestMonteCarloHypothesisTest.get_rvs  s    = 	=rR   c                     fd}|S )Nc                     j                  | |      }j                  | |d      }| j                  |   }|||z  dz  z  S )Nr!   r   )r"   
correctionrC  )r8   rj  rl   )rN   r"   mvre   r  s        r<   r~   z=TestMonteCarloHypothesisTest.get_statistic.<locals>.statistic  sH    %Aqt2AA!cz>!rR   r[   )r  r  r~   s    ` r<   get_statisticz*TestMonteCarloHypothesisTest.get_statistic  s    	" rR   c                 	   j                  g d      }d#fd	}d}j                  d      j                  d      f}t        j                  j                  t        j                  j                  f}t        j                  t        |      5  t        ||d d	       d d d        d
}t        j                  t        |      5  t        |t        j                  j                  |d	       d d d        d}t        j                  t        |      5  t        |t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        |d |       d d d        t        j                  t        |      5  j                  ddgddgg      }t        |d d g|       d d d        d}t        j                  t        |      5  j                  g dg      }t        |d d g|       d d d        d}t        j                  t        |      5  t        |t        j                  j                  d        d d d        d}t        j                  t        |      5  t        |t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        |t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        |t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        |t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        |t        j                  j                  |d        d d d        d!}fd"}	 t        ||j                         y # 1 sw Y   YxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   xY w# t        $ r&}t        |      j                  |      sJ Y d }~y d }~ww xY w)$N      ?       @      @c                 *    j                  | |      S ri   rU   )rN   r"   r  s     r<   statz@TestMonteCarloHypothesisTest.test_input_validation.<locals>.stat  s    77147((rR   r  r   ru   )r   ru   r   c                      yNr   r[   rV   s      r<   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>  s    rR   rb   r!   r   r    r   r   0`rvs` must be callable or sequence of callables.r  r  r  g      @c                     | S rZ   r[   rN   s    r<   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>!      a rR   If `rvs` is a sequence...c                     | S rZ   r[   r  s    r<   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>&  r  rR   c                     | S rZ   r[   r  s    r<   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>&  s    1 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                 b    j                  t        j                  j                  |             S )Nr!  )r^  r
   r   r   )ry   r  s    r<   r   z?TestMonteCarloHypothesisTest.test_input_validation.<locals>.rvsB  s!    ::ejjnn$n788rR   rZ   )r^  zerosr
   r   r   r4   r5   r6   r   r:   r8   str
startswith)r  r  r}   r  r;   tempr   es    `      r<   test_input_validationz2TestMonteCarloHypothesisTest.test_input_validation  s    zz,'	) D "((6"23zz~~uzz~~.]]:W5 	GT3(<2F	G /]]:W5 	CT5::>>4cB	C E]]:W5 	IT5::>>4CH	I E]]9G4 	/T4.	/]]9G4 	>::Bx"b23DTK#6=	> .]]:W5 	E::|n-DTK#=tD	E 2]]9G4 	9T5::>>48	9 >]]:W5 	LT5::>>4UK	L >]]:W5 	MT5::>>4VL	M @]]:W5 	FT5::>>4uE	F @]]:W5 	GT5::>>4vF	G 0]]:W5 	MT5::>>4VL	M 6	9	.T30i	G 	G	C 	C	I 	I	/ 	/	> 	>
	E 	E
	9 	9	L 	L	M 	M	F 	F	G 	G	M 	M  	.q6$$W---	.s   O6(P(PP(P*&P7'&Q2(Q?(Q(Q+(Q8&(RR 6P PPP'*P47QQQQ(+Q58RR	R?R::R?c                    fd}d}j                  g d      }t              r&t        |t        j                  j
                  |       y t        j                  t        |      5  t        |t        j                  j
                  |       d d d        t        j                  t        |      5  t        |t        j                  j
                  j                  d       d d d        y # 1 sw Y   _xY w# 1 sw Y   y xY w)Nc                 &    j                  |       S rZ   rU   )rN   r  s    r<   non_vectorized_statisticzWTestMonteCarloHypothesisTest.test_input_validation_xp.<locals>.non_vectorized_statisticJ  s    771:rR   z!`statistic` must be vectorized...r  r   Fr   )
r^  r   r   r
   r   r   r4   r5   r6   r8   )r  r  r  r;   r   s    `   r<   test_input_validation_xpz5TestMonteCarloHypothesisTest.test_input_validation_xpI  s    	 6L)B<VUZZ^^5MN]]:W5 	OVUZZ^^5MN	O]]:W5 	PVUZZ^^RWWO	P 	P	O 	O	P 	Ps   (&C,12C8,C58Dc                 x    t         j                  j                  d      }j                  |j	                  d            } fdd_        d_        |ddd} j                  t        j                  j                  t         j                  j                  d	      
      |d<   t        dddi|}t        j
                  d       t        j                  d        j                  t        j                  j                  t         j                  j                  d	      
      |d<   d_        t        dddi|}t        j
                  d       t        j                  d        j                  t        j                  j                  t         j                  j                  d	      
      |d<   d_        t        di |}t        j
                  d       t        j                  d       t        |j                  |j                         t        |j                  |j                         y )N   )p r.   r!  c                     | j                   dk(  rdn| j                  d   }t        |j                        _        xj                  dz  c_         j                        | |      S r  )r   rl   r  
batch_sizecounterr  )rN   r"   r  r  r~   r  s      r<   r~   z:TestMonteCarloHypothesisTest.test_batch.<locals>.statistic_  s\    ffkqwwqzJ#&z93G3G#HI ")4%%b)!$77rR   r   r   T)r   r~   r'   r   i r  r   r+   r     r   r   r   r[   )r7   rG   r   r^  standard_normalr  r  r  r
   r   r   r   r   r	   r   )	r  r  r3   rN   r  rO   rP   res3r~   s	   ``      @r<   
test_batchz'TestMonteCarloHypothesisTest.test_batchX  s    ii##K0JJs***34	8
 	 	)#49 ll5::>>2993H3H3PUWlXU0a040Y&&-Y))1-ll5::>>2993H3H3PUWlXU	1b1D1Y&&+Y))2.ll5::>>2993H3H3PUWlXU	'$'Y&&*Y))40T[[1T[[1rR   r"   r   c                    t         j                  j                  d      }g d}d||<   |j                  d      j                  }dt        |      v rdnd}t        t         |      }t        ||      }|j                  ||      }	t        j                  |	d	|
      }
|j                  |	|      }	| j                  |      }| j                  t        j                  j                  |||      }t        |	||dd|      }|j                  |
j                  |      }|j                  |
j                   |      }t#        |j                  |       t#        |j                   || j$                         y )Nit$ r   r   r   rE   r  64float32r  )ry   r          )popmeanr"   r  )r  r  Ti N  )r   r'   r"   r   )r7   rG   r   r^  r  r  r;  r  r
   ttest_1sampr  r  r   r   r   r~   r   r   r   )r  r"   r  r3   ry   dtype_default	dtype_strdtype_npr  rN   r   r~   r   r_   ref_statistic
ref_pvalues                   r<   test_axis_dtypez,TestMonteCarloHypothesisTest.test_axis_dtype~  s:    ii##G,T
 

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

8#5#5U
CZZuZ=
}5

JTYY?rR   r   )	two-sidedr   r   c                 $   t         j                  j                  d      }|j                  d      }t	        j
                  |d|      }|j                  |      }| j                  |      }| j                  t        j                  j                  ||      }t        ||||      }t        |j                  |j                  |j                               t        |j                  |j                  |j                        | j                         y )N)rF  r!  r  r  r  r   )r7   rG   r   r  r
   r  r^  r  r  r   r   r   r   r~   r   r   )	r  r   r  r3   rN   r  r~   r   r_   s	            r<   test_alternativez-TestMonteCarloHypothesisTest.test_alternative  s     ii##H-R(2;?JJqM&&r*	ll5::>>32l6q#ykJrzz#--'@A

BJJszz$:KrR   )r   r   r]   g      rC  ru   c                 v   t         j                  j                  d      }t        j                  j                  |d|      }t        j                  |t        j                  j                        }fd}| j                  t        j                  j
                  |      }t        |||dd      }t        |j                  |j                         d	k(  r-t        |j                  |j                  | j                  
       y dk(  r0t        d|j                  z
  |j                  | j                  
       y y )Nr  rF  r]   ry   rF   r  c                 z    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+    >>!UZZ^^'.9;;D9ErR   r   Fr'   r   r   r   r   r   r   )r7   rG   r   r
   skewnormr   r  r   r  r  r   r   r~   r   r   )	r  r   r]   r3   rN   r   r  norm_rvsr_   s	    `       r<   test_against_ks_1sampz2TestMonteCarloHypothesisTest.test_against_ks_1samp  s    
 ii##H-NN#>>>!UZZ^^M	E <<

4q(K+/E+68 	x'9'9:)#CJJdiiHF"AcjjL(//		J #rR   hypotestr   r   r  r.  r   c                    t         j                  j                  d      }t        j                  j                  |d|      } ||      }fd}| j                  t        j                  j
                  |      }t        |||d|      }	t        |	j                  |j                         t        |	j                  |j                  | j                         y )	Ni	   r  r  c                 ,     | |      j                   S ri   )r~   )rN   r"   r  s     r<   r~   zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statistic  s    AD)333rR   Tr   r   r   )r7   rG   r   r
   r  r   r  r   r   r   r~   r   r   )
r  r  r   r]   r3   rN   r   r~   r  r_   s
    `        r<   test_against_normality_testsz9TestMonteCarloHypothesisTest.test_against_normality_tests  s    
 ii##H-NN3?A;7	4 <<

4q(I$+68 	x'9'9:

HOO$))DrR   c                    t         j                  j                  d      }t        j                  j                  |d|      }t        j                  |      }d }| j                  t        j                  j
                  |      }t        |||dd      }t        |j                  |j                         t        |j                  |j                  | j                         y )	Ni!M r  r  c                 D    t        j                  | |      j                  S ri   )r
   
normaltestr~   r  s     r<   r~   zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statistic  s    ##AD1;;;rR   Tr   r  r   )r7   rG   r   r
   r  r   r  r  r   r   r   r~   r   r   )r  r]   r3   rN   r   r~   r  r_   s           r<   test_against_normaltestz4TestMonteCarloHypothesisTest.test_against_normaltest  s     ii##H-NN3?##A&	< <<

4q(I$+46 	x'9'9:

HOO$))DrR   c                    t         j                  j                  d      }t        j                  j                  |d|      }t        j                  |t        j                  j                        }d }| j                  t        j                  j
                  |      }t        |||ddd      }t        |j                  |j                         t        |j                  |j                  | j                  	       y )
NirF  r  c                 r    t        j                  | t         j                  j                        j                  S rZ   )r
   cramervonmisesr   r  r~   r  s    r<   r  zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1d  s#    ''5::>>:DDDrR   r   Fr   r  r   )r7   rG   r   r
   r  r   r  r   r  r  r   r   r~   r   r   )r  r]   r3   rN   r   r  r  r_   s           r<   test_against_cramervonmisesz8TestMonteCarloHypothesisTest.test_against_cramervonmises  s     ii##I.NN#>''5::>>:	E <<

4q(K+/E+46 	x'9'9:

HOO$))DrR   	dist_name)r   logisticr\   c           	         fd}t               5 }|j                  t               t        |d      }d d d        j                  sJ |j
                  d   }t        j                  j                  d      }t        j                  j                  |d|      }t        j                  |      }	|	j                  }
|	j                     dz  }fd}| j                  t!        t              j                  |      }t               5 }|j                  t               t#        |||dd	d
      }d d d        t%        j                  |
       t%        |j&                  |d| j(                  z         y # 1 sw Y   @xY w# 1 sw Y   RxY w)Nc                     t         j                  j                  d      }t        j                  j                  | d|      }t        j                  |      }|j                  |j                     z
  S )NxrE   r   )	r7   rG   r   r
   tukeylambdar   andersonr~   critical_values)r]   r3   rN   r   r  r\   s       r<   funz?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.fun  s`    ))''	2C!!%%ac%DA~~a3H%%(@(@(CCCrR   r   )x0r  rE   r   c                 D    t        j                  |       j                  S rZ   )r
   r  r~   )rN   r  s    r<   r  zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1d&  s    >>!Y/999rR   r   Fr   r  r   r   )r   filterRuntimeWarningr   successrN   r7   rG   r   r
   r  r   r  r~   significance_levelr  r;  r   r   r   r   )r  r  r\   r  supsolr]   r3   rN   r   expected_stat
expected_pr  dist_rvsr_   s    ``            r<   test_against_andersonz2TestMonteCarloHypothesisTest.test_against_anderson  sO   	D
   	"CJJ~&sq/C	" {{{ EE!Hii##I.!!!#C!@>>!Y/ **003C7
	: <<y 9 = =sC  	LCJJ~&"1h#.D.3LC	L 	}5

JQtyy[A5	" 	"&	L 	Ls   #E4	'F4E>F
c                     t         j                  j                  d      }t        j                  d      }t	        ||j                  t         j
                  dd      }|j                  dk(  sJ y )Nl   IL~QH(s rE   Tr   r  g-C6?)r7   rG   r   r  r   r8   r   )r  r3   rN   r_   s       r<   test_p_never_zeroz.TestMonteCarloHypothesisTest.test_p_never_zero3  sV     ii##$78HHSMq#**bgg*.FDzzV###rR   c                    t         j                  j                  d      }|j                  d      |j                  d      f}|j                  |j                  f}d }t	        j
                  |||d      }t	        j                  |d   |d	   gd      }t        |j                  |j                         t        |j                  |j                  d
       y )N   F:fmPr  r!     c                 F    t        j                  | ||      j                  S ri   r~  rV   s      r<   r~   zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statisticA  s    ??1ad3===rR   rb   r!   r   r   {Gz?r   )
r7   rG   r   normalr
   r   r  r   r~   r   r  r3   r}   r   r~   r_   r  s          r<   test_against_ttest_indz3TestMonteCarloHypothesisTest.test_against_ttest_ind<  s    ii##$67zzvz&


(::jj#**$	> $$T3	Cood1gQyr:s}}5

CJJT:rR   c                    t         j                  j                  d      }|j                  d      |j                  d      |j                  d      |j                  d      f}|j                  |j                  |j                  |j                  f}d }t	        j
                  |||dd	
      }t	        j                  |ddi}t        |j                  |j                         t        |j                  |j                  d       y )Nr  rb  r!  )r   e   )r   f   )r   g   c                 @    t        j                  |d| ij                  S )Nr"   )r
   f_onewayr~   )r"   rx  s     r<   r~   zETestMonteCarloHypothesisTest.test_against_f_oneway.<locals>.statisticP  s    >>43d3===rR   rb   r   r"   r   r"   {Gz?r   )
r7   rG   r   r	  r
   r   r  r   r~   r   r
  s          r<   test_against_f_onewayz2TestMonteCarloHypothesisTest.test_against_f_onewayI  s    ii##$67

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


)3::8:+DFjj#**cjj#**<	> $$T3	1:<nnd,,s}}5

CJJT:rR   z2Statistic may not depend on sample order on 32-bitc                    t         j                  j                  d      d}fd} |d      }t        j                  ||t         j
                  d|      }t        j                  |j                  |j                  k        }t        j                  |j                  |j                  dz  k        }||k7  sJ |j                  |dz   |dz   z  k(  sJ y )	Nl   U5<H r_  c                 X    dt        j                  d      j                  |       z  S )Nr  gZd;O?)rM  r   )r
   	bernoullir   ry   r3   s    r<   r   zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvsb  s'    %044$S4QQQrR   rE   r   )r   r'   g     ?r   )
r7   rG   r   r
   r   rj  r   null_distributionr~   r   )r  r'   r   rN   r_   c0c1r3   s          @r<   test_finite_precision_statisticz<TestMonteCarloHypothesisTest.test_finite_precision_statisticZ  s     ii##$45	R H$$QRVV1<> VVC))S]]:;VVC))S]]G-DDERxxzzb1f{Q7777rR   )"__name__
__module____qualname__r   r7   r  r  r  r  r4   markxslowr  parametrizer2  r  r  slowlinspacer  r
   skewtestkurtosistestr  rc   r  r  r  r  r  r  	fail_slowxfail_on_32bitr  r[   rR   r<   r  r    s   D(, =@.DP [[#2 #2J [[VU2q\2@ 3@@ [[],LML NL& [[[[],?@[[S+"++dC";<K = A K, [[Z%..%:L:L)MN[[],LM[[S+"++b!Q"78E 9 N OE" [[S)"))B"23E 4E" [[[[S+"++dC";<E = E$ [[[[[*>?[[S%(+(B , @ (BT$;;" [[1[[ TU8 V 8rR   r  c                       e Zd Zd Zej
                  j                  d        Zej
                  j                  d        Zd Z	d Z
y)	TestPowerc           
         t         j                  j                  d      }t        j                  }|j
                  |j
                  f}d}d}t        j                  t        |      5  t        |||d       d d d        d}t        j                  t        |      5  t        |d |       d d d        t        j                  t        |      5  t        ||j
                  df|       d d d        d	}t        j                  t        |      5  t        ||j
                  f|       d d d        t        j                  t        |      5  t        ||d
       d d d        d}t        j                  t        |      5  t        |||d       d d d        t        j                  t        |      5  t        |||t        j                  dd             d d d        d}t        j                  t        |      5  t        |||d       d d d        d}t        j                  t        |      5  t        ||ddgg df       d d d        t        j                  t        |      5  t        ||ddgddgfdg di       d d d        d}t        j                  t        |      5  t        d ||       d d d        d}t        j                  t        |      5  t        |||d       d d d        t        j                  t        |      5  t        |||d       d d d        d}t        j                  t        |      5  t        |||d        d d d        t        j                  t        |      5  t        |||d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   AxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)!Nl   yB0 1 )r.   rD   r   r   r    r   r  r   r  )r.   z3`significance` must contain floats between 0 and 1.r   significancerb   r   z`kwargs` must be a dictionaryr   )kwargsz+shape mismatch: objects cannot be broadcastr.   rC   )rD         rD   r/  rN   z`test` must be callablez(`n_resamples` must be a positive integerir&   g      %@z"`batch` must be a positive integerr*   )r7   rG   r   r
   r  r	  r4   r5   r6   r   r:   r$  )r  r3   testr   n_observationsr;   s         r<   r  zTestPower.test_input_validationp  s   ii##$78zz3::&!D]]:W5 	=$^<	= E]]9G4 	.$n-	.]]9G4 	>$V,n=	> .]]:W5 	7$~6	7]]:W5 	$$U#	$ H]]:W5 	=$^!<	=]]:W5 	N$^"++b!:LM	N 2]]9G4 	?$^I>	? @]]:W5 	7$r2h56	7]]:W5 	L$r2hR13	:JK	L ,]]9G4 	-$^,	- =]]:W5 	>$^=	>]]:W5 	?$^>	? 7]]:W5 	8$^37	8]]:W5 	9$^48	9 	9Y	= 	=	. 	.	> 	>	7 	7	$ 	$	= 	=	N 	N	? 	?	7 	7	L 	L	- 	-	> 	>	? 	?	8 	8	9 	9s   'N	NN#N0N=;O
.$O7O$,O1#O>"PPP%=P20P>	NN #N-0N:=O
OO!$O.1O;>PPP"%P/2P;>Qc                    t         j                  j                  d      }fdd_        d_        t        dd      }t         j                  j                  d      }t        di ||j                  dd}t        j                  d       t        j                  d       t         j                  j                  d      }d_        t        di ||j                  d	d}t        j                  d
       t        j                  d	       t         j                  j                  d      }d_        t        di ||j                  dd}t        j                  d       t        j                  d       t        |j                  |j                         t        |j                  |j                         y )Nr  c                     | j                   dk(  rdn
t        |       }t        |j                        _        xj                  dz  c_        t        j                  | d|      j                  S r  )r   rd   r  r  r  r
   r  r   )rN   r"   r  r1  s      r<   r1  z"TestPower.test_batch.<locals>.test  sS    ffks1vJ!*doo>DOLLAL$$Q5<<<rR   r   r.   r   )r1  r2  r'   r   )r   r+   r   rE  r[   )	r7   rG   r   r  r  r   r   r	  r   )r  r3   r  rO   rP   r  r1  s         @r<   r  zTestPower.test_batch  sF    ii##K0	=
 bdCii##K05t515T\\4(T__a(ii##K06t626T\\2&T__b)ii##K08t848T\\1%T__d+TZZ,TZZ,rR   c           
         t         j                  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 ]_  }|D ]X  }	|d   D ]N  D ]G  dfd
	}
t        j                  |
|j                  |	|      }|j                  |j                         I P Z a t        j                  ||j                  j                        }t        |j                  |dd       y )Nl   x7'\r   皙?c           
          t        j                  t        t        d| j                  dz                     }t        j                  | |||      S )Nr   )r   r"   )r7   expand_dimsr9   r2  r   r
   r  )rN   r   r"   popmeans_expandedpopmeanss       r<   r1  z*TestPower.test_vectorization.<locals>.test  sF     "xuQQR
?S9T U$$Q(9{*.0 0rR   )r.   r   rE  r   rE   r   r  )r  r  皙?r   r-  r.  c                 6    t        j                  | |      S )Nr  )r
   r  )rN   r"   alternative_i	popmean_is     r<   test2z+TestPower.test_vectorization.<locals>.test2  s!    #(#4#4Q	AN$P PrR   r,  r  r  )r   r   ra   )r7   rG   r   r   r^  rw  r
   r   r	  appendrn   rl   r   )r  r3   r1  nxr.  r-  r_   r  significance_inx_ir@  tmpr>  r?  r:  s               @@@r<   test_vectorizationzTestPower.test_vectorization  s3    ii##N3 88QH%	0 ZZ-.q"**}=!AB zz":;kk$

B\!') * 
	.N 	.%+M%: .M%- .	P $kk%T7EG

399-..	.
	. jjciioo. 			3T=rR   c                    t         j                  j                  d      }t        j                  }|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	       y )
N   &( r.   rE   )r   r.   r!  )r  r;  r   r,  r  r   )r7   rG   r   r
   r  integersr	  r^  r   rm   rw  rl   r   )r  r3   r1  r2  r   r-  r_   s          r<   test_ttest_ind_nullzTestPower.test_ttest_ind_null  s     ii##O4b#G<jj#**$zz"34kk$^,O|ArzzM'BCIIOOT		<d;rR   c                    t         j                  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
       y )NrH  )gv?g]NbJ?g6;?)gOt]?g7gLڷ?g0Dҗ?)gVL[?g;c?g.H&?)g#*3)?glk?g5i ?r  )r   rC  r   r.   rE  r  r;  r<  r   )r7   rG   r   r
   r   r  r	  r   )r  r3   r  r.  r2  r-  r_   s          r<   test_ttest_1samp_powerz TestPower.test_ttest_1samp_power  s    ii##O4 5464467
 _-$d|kk%++SZZ'3FD		3T2rR   N)r  r  r  r  r4   r   r#  r  rF  rJ  rL  r[   rR   r<   r*  r*  o  sP    69p [[!- !-F [[%> %>N<3rR   r*  c                      e Zd ZdZd Zd Zej                  j                  de	j                  j                  e	j                  j                  g      ej                  j                  dg d      d               Zej                  j                  de	j                  j                  e	j                  j                  g      ej                  j                  dd	 ej                  d
      dz  fdd ej                   dd
      fg      d               Zd Zej                  j'                         d        Zd Zej                  j                  dd      d        Zej                  j                  dd      d        Zej                  j                  dd      d        Zd Zej                  j5                         ej                  j                  dd      d               Zej                  j&                  ej                  j                  dd      d               Zej                  j                  dd      d        Zd Zej                  j                  dd      d        Zej                  j5                         ej                  j                  dd       d!               Z g d"g d#d$d%d&d'd(d)d*Z!g d+g d,d-d.d/d0d1d2d*Z"ej                  j5                         ej                  j                  d3e!e"f      d4               Z#ej                  j&                  ej                  j                  d5d6      d7               Z$ej                  j                  d8d9      d:        Z% e&d;      d
g f e&d      d
g d<g d=gf e&d>      d
g d<g d=dd?ggfgZ'ej                  j                  d@e'      dA        Z(ej                  jS                  d      dB        Z*yC)DTestPermutationTestr"  c                 L    t         j                  j                  d      | _        y )Nl   F )r7   rG   r   r3   )r  s    r<   setup_methodz TestPermutationTest.setup_method  s    99(()<=rR   c                    d }d}t        j                  t        |      5  t        g ddgf|       d d d        d}t        j                  t        |      5  t        d|       d d d        t        j                  t        |      5  t        d|       d d d        d}t        j                  t        |      5  t        g dg df|d	
       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d	       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        y # 1 sw Y   wxY w# 1 sw Y   RxY w# 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   NxY w# 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                 F    t        j                  | |f|      j                  S rZ   r~  rV   s      r<   r  z:TestPermutationTest.test_permutation_test_iv.<locals>.stat"  s    ??Aq640:::rR   z2each sample in `data` must contain two or more ...r   r   r   z6`data` must be a tuple containing at least two samples)r   r   r    r!   z `permutation_type` must be in...r   )permutation_typer   r   r  r%   r&   r(   r)   r*   r  r  r0   r1   r2   )r4   r5   r6   r   r:   )r  r  r;   s      r<   test_permutation_test_ivz,TestPermutationTest.test_permutation_test_iv   s   	; G]]:W5 	5i!-t4	5 K]]:W5 	)T4(	)]]9G4 	&Q%	& /]]:W5 	Ei3TD	E 5]]:W5 	6i3T.46	6 E]]:W5 	Ki3TcJ	K >]]:W5 	Ni3TuM	N >]]:W5 	Oi3TvN	O @]]:W5 	Hi3TG	H @]]:W5 	Ii3TH	I 0]]:W5 	Oi3TvN	O A]]9G4 	Ji3TyI	J 	JW	5 	5	) 	)	& 	&	E 	E	6 	6
	K 	K	N 	N	O 	O	H 	H	I 	I	O 	O	J 	Js   J(J5K:K4K.K)(K6"LLLL)
L5(J25J?KKK&)K36L LLL&)L25L>rF   rS  )pairingssamplesindependentc                   	 | j                   j                  d      }| j                   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                         y )Nr.   c                     | j                   dk(  rdn
t        |       }t        |j                        _        xj                  dz  c_        t        j                  | |      t        j                  ||      z
  S Nr   r!   )r   rd   r  r  r  r7   r8   )rN   rW   r"   r  r~   s       r<   r~   z1TestPermutationTest.test_batch.<locals>.statistic`  s_    ffks1vJ#&z93G3G#HI "7714(27714+@@@rR   r   r   T)r'   rS  r   r   )r+   rF   r  r   r   r   )r3   rG   r  r  r
   r   r   r   )
r  rS  rF   rN   rW   r  rO   rP   r  r~   s
            @r<   r  zTestPermutationTest.test_batchV  sx    HHOOBHHOOB	A
 	 	#9I"$%%q!fi Lq3??LFJLY&&-Y))1-	%%q!fi Lr3??LFJLY&&+Y))2.	%%q!fi Lt3??LFJLY&&*Y))40T[[$++.T[[$++.rR   zpermutation_type, exact_sizerU  r   r   )rV  rz  rW  r-  c                 v   | j                   j                  d      }| j                   j                  d      }d }|dd}t        j                  ||f|fd |d      d|}t	        |j
                  j                  d       t        j                  ||f|fi |}t	        |j
                  j                  |       y )Nr   c                 `    t        j                  | |      t        j                  ||      z
  S ri   r   rV   s      r<   r~   z8TestPermutationTest.test_permutations.<locals>.statistic  #    7714(27714+@@@rR   T)rS  r   r   )r'   rF   )r3   rG   r
   r   r   r  ry   )	r  rS  
exact_sizerF   rN   rW   r~   r  r_   s	            r<   test_permutationsz%TestPermutationTest.test_permutations  s     HHOOAHHOOA	A %5"$$$aVY KA2>q/KEIKS**//3$$aVY?$?S**//<rR   c                    d\  }}d\  }}}t        j                  ||z   |      |kD  sJ t        j                  j	                  |      }t        j                  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
       y )N)r   r   )rz  	   i]  r!  c                 `    t        j                  | |      t        j                  ||      z
  S ri   r   rV   s      r<   r~   zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statistic  r]  rR   TrW  rE   r   rS  r+   r   r3   r'   r  r   )r   binomr
   r   r   r   r7   infr~   r   r   r  r   r3   rB  nypermutationsrN   rW   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JJNNN#JJNNN#!t	A #[FtY 'L '!%'iLRVVLtL}}...

DKKd;rR   c                    d\  }}d\  }}}d|z  |kD  sJ t         j                  j                  |      }t         j                  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       y )N)r   N)r   r   i }  r   r!  c                 6    t        j                  | |z
  |      S ri   r   rV   s      r<   r~   zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statistic  s    771q5t,,rR   TrV  rE   rc  r'   r  r   )	r
   r   r   r   r7   re  r~   r   r   rf  s                r<   *test_randomized_test_against_exact_samplesz>TestPermutationTest.test_randomized_test_against_exact_samples  s    
 +S,B"u|###JJNNN#JJNNN#!t	- #	[FtY 'L '!%'iLRVVLtL}}...

DKKd;rR   c                    d| j                   }}d\  }}}t        j                  |      |kD  sJ t        j                  j                  |      }t        j                  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
       y )Nr  )rz  rz  i@  r!  c                 6    t        j                  |       d   S Nr   r
   pearsonrrN   rW   s    r<   r  zTTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic1d  s    >>!Q'**rR   TrV  rE   rc  r'   r  r   )r3   r   	factorialr
   r   r   r   rX  r   r7   re  r~   r   r   )r  r   r3   rB  rg  rh  rN   r}   r  r~   r  r_   rP   rW   s                @r<   +test_randomized_test_against_exact_pairingsz?TestPermutationTest.test_randomized_test_against_exact_pairings  s     'S*B  $|333JJNNN#JJNNN#s	+  44[A	"	[FtY 'L '!%'iLRVVLtL}}...

DKKd;rR   r   r  c                    | j                   j                  dd      }| j                   j                  ddd      }t        j                  ||d      }fd	}t	        ||f|t
        j                  d
| j                         }t        |j                  |j                  | j                         t        |j                  |j                  | j                         y )Nr   r   ry   rx   ru   r   )ry   rw   rx   exact)r   r  c                 J    t        j                  | |d      j                  S r  )r
   ks_2sampr~   rN   rW   r   s     r<   r  z>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1d  s#    >>!QW.9;;D9ErR   r   r'   r   r3   r   )r3   r	  r
   ry  r   r7   re  r   r~   r   r   )r  r   rN   rW   r   r  r_   s    `     r<   test_against_ks_2sampz)TestPermutationTest.test_against_ks_2samp  s     HHOO!O,HHOOO3>>!QKgN	E 1v{+4$((D 	x'9'9		J

HOO$))DrR   c                    | j                   j                  dd      }| j                   j                  dd      }dddd	}||   }t        j                  |||
      }d }t	        ||f|t
        j                  || j                         }t        |j                  |j                  | j                         t        |j                  |j                  | j                         y )Nr   r   rv  ru   r   r   r   r  r  r  c                 B    t        j                  | |      j                  S rZ   r
   ansarir~   rr  s     r<   r  z<TestPermutationTest.test_against_ansari.<locals>.statistic1d      <<1%///rR   r{  r   )r3   r	  r
   r  r   r7   re  r   r~   r   r   )	r  r   rN   rW   alternative_correspondencealternative_scipyr   r  r_   s	            r<   test_against_ansariz'TestPermutationTest.test_against_ansari  s     HHOO!O,HHOO!O, /8173>&@" 7{C<<12CD	0 1v{+6DHHF 	x'9'9		J

HOO$))DrR   c           	         t         j                  j                  dd| j                        }t         j                  j                  dd| j                        }t        j                  ||d|      }d }t        ||f|dt        j                  |d| j                  	      }t        |j                  |j                  | j                  
       t        |j                  |j                  | j                  
       y )N)r   ru   r   r   ry   rw   rF   r;  r   r  c                 F    t        j                  | ||      j                  S ri   )r
   mannwhitneyur~   rV   s      r<   r~   z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statistic!  s    %%a6@@@rR   T)r   r'   r   r"   r3   r   )r
   uniformr   r3   r  r   r7   re  r   r~   r   r   )r  r   rN   rW   r   r~   r_   s          r<   test_against_mannwhitneyuz-TestPermutationTest.test_against_mannwhitneyu  s     MM9!$((KMM9$TXXN%%aL	A 1vyT+-66{$%4885 	x'9'9		J

HOO$))DrR   c                    t         j                  j                  dd| j                        }t         j                  j                  ddd| j                        }t        j                  ||d      }d	 }t        ||f|t        j                  d
| j                        }t        |j                  |j                  | j                         t        |j                  |j                  | j                         y )Nr   r   )ry   rx   rF   ru   r   )ry   rw   rx   rF   rw  r,   c                 F    t        j                  | |d      j                  S N
asymptoticr,   )r
   cramervonmises_2sampr~   rr  s     r<   r  z9TestPermutationTest.test_against_cvm.<locals>.statistic1d2  s#    --a5ACCL9MrR   r   r{  r   )r
   r   r   r3   r  r   r7   re  r   r~   r   r   )r  rN   rW   r   r  r_   s         r<   test_against_cvmz$TestPermutationTest.test_against_cvm+  s    JJNNNBJJNNqNI--a7C	M
 1v{+4$((D 	x'9'9		J

HOO$))DrR   r"   )rb   r   c                 X   t         j                  j                  d      }|j                  d      }|j                  d      }|j                  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       y )Nl   Y}y!dh r   r!  )r   r   r   )r   r   r   c                  :    t        j                  |  j                  S rZ   )r
   kruskalr~   r}   s    r<   r  zITestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistic1dO  s    ==$'111rR   c                  :    t        j                  |  j                  S rZ   )r
   r  r   r  s    r<   pvalue1dzFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1dR  s    ==$'...rR   )r   r   r   )r   r   r   r  r!   Fr   rW  r   r"   r   rS  r3   r'   r   r   gQ?r   r   )r7   rG   r   r   rX  rm   r3   r   re  r   r~   r   r   )r  r"   r3   rN   rW   rj   r}   r  r  r~   r   x2r7  z2expected_statisticexpected_pvaluer  r_   rP   s                      r<    test_vectorized_nsamp_ptype_bothz4TestPermutationTest.test_vectorized_nsamp_ptype_both=  sp    ii##$78JJQJ JJIJ&JJIJ&1ay	2	/  44[A	11(; __Q	*__Q	*__Q	*&r2r= R$7 $T)$1$((Dt[MbffMMkLtLtL 	'9		Jt~~DIIF

O$?

DKKd;rR   c                    t         j                  j                  dd| j                        }t         j                  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k7  r"t        |j                  |	| j                         t        |j                  |
| j                         t        |j                  |j                  | j                         y )N)r   r-  r   r   r  r;  c                 D    t        j                  | d      j                  S Nr   r  r
   wilcoxonr~   )rj   s    r<   statistic_1samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1dv  s    >>!8BBBrR   c                 F    t        j                  | |d      j                  S r  r  rr  s     r<   statistic_2samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1dz  s    >>!QF;EEErR   c                 4    t        j                  | |      S )Nr  )r
   r  rz  s     r<   test_1dz:TestPermutationTest.test_against_wilcoxon.<locals>.test_1d}  s    >>!QK@@rR   r   r!   FrV  )r   r"   r   rS  r3   r'   r   r  )r
   r  r   r3   r   rX  r7   re  r   r   r~   r   r   )r  r   rN   rW   r  r  r  r1  r   r  r  r  rO   rP   s    `            r<   test_against_wilcoxonz)TestPermutationTest.test_against_wilcoxonm  s7    MM9!$((KMM9$TXXN	C	F	A //811% a[
#Q{$-dhh!vv'  1(:CdCA(:CdC 	TYYG+%DNNM		JZdii@T[[tyyArR   c           	      d   | j                   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                         y )Nr   r   r.   r!  rb   c                 6    t        j                  | dkD  |      S )Nr   r!   r7   r   r  s     r<   r~   z=TestPermutationTest.test_against_binomtest.<locals>.statistic  s    66!a%d++rR   rC  r  TrV  )r   rS  r'   r3   r   r   r   )
r3   rI  r
   r   r   r7   re  r   r   r   )	r  r   rN   r~   kre   rM  r   r_   s	            r<   test_against_binomtestz*TestPermutationTest.test_against_binomtest  s     HHa,!q&	
	, A,Ca1??1aD$$aT96?13TXX1<> 	

HOO$))DrR   c                    | j                   j                  d      }|| j                   j                  d      z   t        j                  |d      }fd}t	        |f|dt
        j                  | j                         }t        |j                  |j                  | j                         t        |j                  |j                  | j                         y )	Nr-  r!  rw  r,   c                 H    t        j                  | d      j                  S r  )r
   
kendalltaur~   rr  s    r<   r  z@TestPermutationTest.test_against_kendalltau.<locals>.statistic1d  s    ##Aq>HHHrR   rU  )rS  r'   r3   r   )r3   r	  r
   r  r   r7   re  r   r~   r   r   )r  rN   r   r  r_   rW   s        @r<   test_against_kendalltauz+TestPermutationTest.test_against_kendalltau  s    HHOOO#Q''##Aq9	I t[:+-66txxA 	x'9'9		J

HOO$))DrR   c                    fd}t         j                  j                  d      }|j                  d      dkD  j                  t              }|j                  d      d|z  z   dkD  j                  t              t
        j                  j                  |      d   }t        |f|dt         j                  ||      }t        j                  ||	      }t        |j                  |d          y )
Nc                 @    t        j                  | dk(  dk(  z        S r  r  rr  s    r<   r~   z@TestPermutationTest.test_against_fisher_exact.<locals>.statistic  s    6616a1f-..rR   l   	(yM4 r  g333333?g      ?r   rU  )rS  r'   r   r3   r  )r7   rG   r   astypefloatr
   contingencycrosstabr   re  fisher_exactr   r   )	r  r   r~   r3   rN   tabr_   rP   rW   s	           @r<   test_against_fisher_exactz-TestPermutationTest.test_against_fisher_exact  s    	/ ii##$78ZZ]S ((/ZZ]T!V#c)11%8((A.q1tY+-66{#&( !!#;?

DG,rR   )r.  r   c                    | j                   j                  d      }| j                   j                  d      }| j                   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       y )N)r   r   r   r!  )r   r   r   )r   r   r   r!   r   c                  F    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<>>GiHrR   c                  F    t        j                  | dd      j                  S )NTrw  r  )r
   r  r   r  s    r<   r  zITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1d  s"    ((d0799?@rR   r"   Fr   rU  r  r'   rv   r   r   r   )r3   rG   r
   rankdatar   rX  r7   broadcast_arraysr   re  r   r~   r   r   )r  r"   rN   rW   rj   r}   r  r  r~   r   r  r  r  r_   rP   s                  r<   #test_vectorized_nsamp_ptype_samplesz7TestPermutationTest.test_vectorized_nsamp_ptype_samples  s    HHOOO+HHOOO+HHOOO+NN14(NN14(NN14(aD1ay	H	@  44[A	11(;&(;(;T(BNN ""5"5t"<H4H $T)$.q:t[MbffMMkLtLtL'9		Jt~~DIIF

O$))D

DKKd;rR   r   )r    r   g      @r6  g?g&_?g      @gd~$I"@glu?)rN   rW   expected_lessexpected_2sidedexpected_Pr_gte_S_meanr  expected_avgexpected_std)o   k   rE   r   r  j   m   l   )	r  r  r  b   i   r  n   r  r   gd?gd?gYo5 ?g     @@@g{C@gDmFA@casec                    |d   }|d   }|d   }|d   }|d   }|d   }|d   }|d   }	d	 }
t         j                  j                         5 }|j                  t        d
       t        ||f|
t         j                  d      }t        ||f|
t         j                  d      }ddd       t        j                  || j                         t        |j                  |d       t        j                  |d       t        |j                  j                         |d       t        |j                  j                         |	d       |j                  }|j                  j                         }t        |j                        }t        j                  t        j                   |j                  |z
        t        j                   ||z
        k\        |z  }t        ||       y# 1 sw Y   AxY w)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   rW   r  r  r  r  r  r  c                 B    t        j                  | |      j                  S rZ   r  rr  s     r<   r  z7TestPermutationTest.test_with_ties.<locals>.statistic1d0  r  rR   z$Ties preclude use of exact statisticr   )r'   r   r  Nr   g|=r   gư>)r7   testingr   r  UserWarningr   re  r   r~   r   r   r  r8   r   rd   r   r   )r  r  rN   rW   r  r  r  r  r  r  r  r  r_   rP   Sr8   re   Pr_gte_S_means                     r<   test_with_tiesz"TestPermutationTest.test_with_ties
  s   8 II!"67_-01!%&>!?N+N+	0 ZZ))+ 	=sJJ{$JK"Aq6;BFF/57C#QFKRVV0;=D		= 	'9		J

M>_5A..335|$O..224lN MM$$))+%%&rvvc&;&;D&@A"$&&4. 1 2234.>'	= 	=s   
AGG(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	       y
)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                 D    t        j                  |       j                  S rZ   )r
   	spearmanrr~   rr  s    r<   r  zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1db  s    ??1a(222rR   rU  )rS  r'   r   r   gvIh%<=r   N)r   r7   re  r   r~   r   r   )r  r   r  rN   r  r  r_   rW   s          @r<   test_against_spearmanr_in_Rz/TestPermutationTest.test_against_spearmanr_in_RH  sa    (10/	3 t[:+-66{L 	'9		J

O%@rR   r+   )rb   r   c                     t        j                  t        d      5  t        t	        j
                  g d|             d d d        y # 1 sw Y   y xY w)Nz`batch` must be positive.r   r   )r4   r5   r6   ro   r   _batch_generator)r  r+   s     r<   test_batch_generator_ivz+TestPermutationTest.test_batch_generator_ivk  s?    ]]:-HI 	A--i?@	A 	A 	As   "AAr   rA   )r   r   ru   rz  r  ziterable, batch, expectedc                 P    t        t        j                  ||            }||k(  sJ y rZ   )ro   r   r  )r  iterabler+   r   gots        r<   test_batch_generatorz(TestPermutationTest.test_batch_generatort  s'     ;//%@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J  J y )
N)r   r   r   r   )r   r   r-  rz  c                 4    t        j                  | |      d   S ro  rp  rr  s     r<   r~   zFTestPermutationTest.test_finite_precision_statistic.<locals>.statistic  s    >>!Q'**rR   FrU  )r   rS  r   r"  gUUUUUU?)r
   r   r~   r   r  r7   r   rd   )	r  rN   rW   r~   r_   rr   null	correct_ps	            r<   r  z3TestPermutationTest.test_finite_precision_statisticz  s    
 	+ $$aVY56@B--S5J5J46tq5y011CI=	)c)))))rR   N)+r  r  r  r   rP  rT  r4   r   r"  r7   rG   rH   r   r  r   rs  rd  r_  ri  r#  rl  rt  r|  r  r  r  r!  r  r  r  r  r  r  
tie_case_1
tie_case_2r  r  r  r2  batch_generator_casesr  r'  r  r[   rR   r<   rN  rN    s@   D>
2Jl [[^bii.C.C.0ii.C.C.E F[[/CE"/EF"/J [[^bii.C.C.0ii.C.C.E F[[;)+<7+<+<Q+?+BC/,mgmmAq.ABDE=	EF=4<2 [[< <2<: [[],LME NE& [[],LME NE* [[],LME NE"E$ [[[[VW-*< . *<\ [[[[],LM#B N #BJ [[],LME NE,E" [[],LM- N-$ [[[[VW-'< . '<V $-#/%(,8(+"*GEJ ?C#/%1,8(,"+XGJ [[[[Vj*%=>:? ? :?x [[[[;>?A	? 
A< [[Wg.A /A $Ah2.#AhIy+AB#AhIy1a&+IJL [[8244 [[1* *rR   rN  c                  v   t        j                  g dt              } t        j                  |       }t	               }d}t        j                  |       D ]Q  }|dz  }t        j                  ||d d       }|j                  t        |D cg c]  }t        |       c}             S t        j                  t        t        |       dz
        D cg c]3  }t        j                  t!        | |d        t!        | |dz   d              5 c}      }t#        ||       t#        t        |      |       y c c}w c c}w )N)r   r   r   r  r   r   rb   )r7   r   intcumsumsetr   _all_partitions_concatenatedsplitaddr9   	frozensetprodr2  rd   r   rd  r   r   )re   ncall_partitionsr  partition_concatenatedpartitioningr\   r   s           r<    test_all_partitions_concatenatedr    s    	#&A	1BUNG"-"J"J1"M H1xx 63B@5!E1)A,!EFGH
 ww!&s1vax2  c!AB%j#a!g,? 2 3H (#^$h/ "F2s   	D18D6fun_namer   r   r   c                 V   t         j                  j                  d      j                  d      fd}fddfdd|d	d
}ddi}t        t        |       }||    }|j                  |       fd} |d|d d|  |d|dd| d } |d|d d|  |d|dd| y )Nl   r: r.   r!  c                 F    t         j                  j                  |       S )Nr   )r
   r   r   r  s    r<   r   z&test_parameter_vectorized.<locals>.rvs  s    zz~~4c~::rR   r?   )r}   r3   r-   rV  )r}   r3   rS  )r   r   r  r'   rE   c                     | j                   dkD  st        j                  |       sJ t        j                  | |      S rZ  )r   r7   r4  r8   )rN   r"   r   s     r<   r~   z,test_parameter_vectorized.<locals>.statistic  s2    vvzR^^Av666wwqt$$rR   )r~   r   Tc                 N    | j                   dk(  sJ t        j                  |       S r  )r   r7   r8   r  s    r<   r~   z,test_parameter_vectorized.<locals>.statistic  s     vv{{wwqzrR   Fr[   )r7   rG   r   r;  r
   r   )	r  r   fun_optionscommon_optionsr  optionsr~   r3   r   s	          @@r<   test_parameter_vectorizedr    s    
 ))


/CZZRZ F; +13+7!917	#<E(G28'E	GK
 $S)N
%
"C(#GNN>"% 8)888)88 8)889)99rR   c                       e Zd Zd Zy)TestMonteCarloMethodc                     d}t         j                  j                  d      }t        j                  t
        |      5  t        j                  |j                  |       d d d        y # 1 sw Y   y xY w)Nz.Use of `rvs` and `rng` are mutually exclusive.ir   )r   r3   )r7   rG   r   r4   r5   r6   r
   MonteCarloMethod)r  r;   r3   s      r<   test_rvs_and_random_statez.TestMonteCarloMethod.test_rvs_and_random_state  sR    Bii##H-]]:W5 	<""szzs;	< 	< 	<s   "A((A1N)r  r  r  r  r[   rR   r<   r  r    s    <rR   r  )Br4   numpyr7   numpy.testingr   r   r   scipy._lib._utilr   scipy._lib._array_apir   scipy._lib._array_api_no_0dr   r	   scipyr
   r   scipy.optimizer   scipy.statsr   r   r   r   scipy.stats._resamplingr   r=   r   r"  rQ   rf   rs   r#  r(  r   tests_Ritemsr   r   r   tests_against_itself_1sampr   tests_against_itself_2sampr   r  r  r  r  r  r$  r*  r8  rA  rO  rS  rZ  rg  filterwarningsr{  r  r  r*  rN  r  r  r  r[   rR   r<   <module>r     s     J J ) * H    L L - -<8~ #AB+; , C;" #AB> C>2 #AB+D%=1(: 2 , C(:V AB#ABO C C O0 #' "
 +W]]_=C >C.7 t12 (,,0%)+ 
 +399;=#= #L (+,/1  +399;=,= ,^ G\#:;!Q(> ) <>. EF#AB!Q(> ) C G>, #AB( C( #AB6 C6"2& /!T;  < 2 ;<#AB; C =;.!& m]%CD- E-2 +.+" , /"." +  , 4 #AB> C >> 45!> 6 !>H=*u8 u8pe3 e3Ps	* s	*x0* NP:P:B< <rR   