
    5[gF                     
   d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d dlmc mZ d	 Ze j:                  j=                  d
g d      e j:                  j=                  dg d      d               Ze j:                  j=                  d
g d      d        Z e j:                  j=                  d
g d      e j:                  j=                  dg d      e j:                  j=                  dddg      d                      Z!e j:                  jD                  e j:                  jG                  d      e j:                  j=                  d
g d      d                      Z$ddddZ%e j:                  j=                  de%jM                               d        Z'ddddZ(d Z)d Z*e j:                  jD                  e j:                  j=                  de(jM                               d               Z+d d!d"Z,e j:                  jD                  e j:                  j=                  de,jM                               d#               Z-e j:                  j=                  d
d$d%g      e j:                  j=                  dd d&g      d'               Z.e j:                  jG                  d(      e j:                  j=                  d
g d      e j:                  j=                  dd d&g      d)                      Z/e j:                  j=                  d
g d      d*        Z0e j:                  j=                  d
g d      d+        Z1d, Z2e j:                  j=                  d-d d.g      d/        Z3e j:                  jG                  d0      e j:                  j=                  d
g d      d1               Z4d2 Z5e j:                  j=                  d3d4d5g      d6        Z6e j:                  j=                  d7g d8      e j:                  j=                  dg d      d9               Z7d: Z8e j:                  j=                  dg d      d;        Z9e j:                  jD                  e j:                  j=                  d
g d      d<               Z:e j:                  jD                  e j:                  jw                  d=      d>               Z<d? Z= G d@ dA      Z> G dB dC      Z? G dD dE      Z@dF ZAe j:                  j=                  dGg dH      dI        ZBy)J    N)assert_allcloseassert_equalsuppress_warnings)array_api_compatible)rng_integers)is_numpyxp_assert_closexp_assert_equalarray_namespace)statsspecial)root)	bootstrapmonte_carlo_testpermutation_testpowerc                  	   d} t        j                  t        |       5  t        dt        j
                         d d d        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   "'herring' cannot be used to seed aherringrandom_state)pytestraises
ValueErrorr   npmeantuple)messages    \/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/stats/tests/test_resampling.pytest_bootstrap_ivr>      s"   5G	z	1!RWW 
2 9G	z	1%'277# 
2 OG	z	19qc"BGG, 
2 OG	z	19l+RWWTB 
2 AG	z	1!RWW0 
2 +G	z	19,c2 
2 2G	z	19,$? 
2 >G	z	19,U; 
2 >G	z	19,V< 
2 <G	z	19,u5 
2 <G	z	19,v6 
2 $G	z	19,7 
2 PG	z	19,"= 
2 FG	z	19,Q7 
2 3G	z	19,i@ 
2	1q 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1 
2	1s   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       t         j                  j                  ddd      }t	        |ft         j
                  d | d|d      }t	        |ft         j
                  d| d|d      }t        |j                  j                  |j                  j                         t        |j                  j                  |j                  j                         t        |j                  |j                         y )Nr   r0         d   )r-   r/   r5   r$   r)   )r9   randomseedrandr   r:   r   confidence_intervallowhighstandard_error)r/   r$   xres1res2s        r=   test_bootstrap_batchrQ   P   s     IINN1
		r2r"AaT277$v"#$CADaT277"V"#$CAD ))--t/G/G/K/KL))..0H0H0M0MN$$d&9&9:    c                    t         j                  j                  d       d}t         j                  j                  |      t         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   rF   c                 2    | |z
  dz  j                  |      S )Nr   r#   r:   rN   yr$   s      r=   my_statisticz+test_bootstrap_paired.<locals>.my_statistici   s    1qD))rR   c                 .    |    }|    } ||      }|S N )ir$   abresrX   rN   rW   s        r=   my_paired_statisticz2test_bootstrap_paired.<locals>.my_paired_statisticl   s&    aDaD1a 
rR   r4   T)r   r5   )
r9   rG   rH   rI   arangelenr   r   rJ   rM   )	r/   nr`   r\   rO   rP   rX   rN   rW   s	         @@@r=   test_bootstrap_pairedrf   a   s     IINN1A
		qA
		qA* 			#a&AaT.Q?DaV\$QGDD,,d.F.FGD'')<)<=rR   r   TFc           	         t         j                  j                  d       dd}d}||   }t         j                  j                  |      }t         j                  j                  |      }t         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   )r0   rD   rE   rF   )r   r/   r5   r$   r)   )rF   )r   r   r   ra   )r9   rG   rH   rI   r   bootstrap_distributionshaperM   broadcast_toreshaper   rJ   rK   rL   listpopr   )r/   r$   r   rX   rl   	n_samplesrN   rW   rj   rO   rn   rP   result_shapes                r=   test_bootstrap_vectorizedrs   {   s    IINN1I EdI
		y!A
		y!A
		y!AaAYVF"#!>D''--""((612 3 2 GGDM
		'*E2A
		'*E2A
		'*E2AaAYVF"#$CAD 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sizer5   ffffff?r   )dfrw   rx   )
confidence)data	statisticr)   r/   r5   r&   gMb@?rtolga2U0*3?atolr   r)   r1   lessr&   alternativegreaterr[   )r9   rG   default_rngr   normrvstrd   r:   semintervalstddictr   r   rJ   rM   updaterL   ppfrK   )	r/   rngr}   alphadistexpected_intervalexpected_seconfigr_   s	            r=   test_bootstrap_against_theoryr      sc   
 ))

 3
4C::>>aqt#>FDE77c$ikrwwt}EIIdOLD7((*Kw"''tc3F

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)r0   rE         )@r   g+@            "   2   Q   Y   y         i@B r   )r)   r/   r5   g{Gzt?r   )r9   arrayr   r:   r   rJ   )r/   expectedrN   r_   s       r=   test_bootstrap_against_Rr      sD    " 	 5 	6A
QD"''wv!"$CC++XEBrR   i  i  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?   rF   )r/   r-   r5   r@   bcag1*g333333ÿg333333?Q?)r9   rG   r   r   r   r:   rJ   abs)rN   rW   r~   r   	res_basicres_percentres_bca	mid_basicmid_percentmid_bca	mid_wboot
diff_basicdiff_percentdiff_bcas                 r=   test_multisample_BCa_against_Rr      s3   	.A	9A
 ))

 2
3CA	'&)=I//1a&)L(+#?Kooq!fi$'c;G 	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)	r0         (   .   r   4   h      )   r   &   ^   c         c                 `    t        j                  | |      t        j                  ||      z
  S ri   r9   r:   )rj   rW   r$   s      r=   r~   z:test_BCa_acceleration_against_reference.<locals>.statistic*  s#    wwqt$rwwqt'<<<rR   rb   rz   rF   ge{?r   )r9   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   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 )Nr   rF     ?ru   r   rw   rx   i  ry   r   rb   r~   r&   r)   r-   r/   r$   皙?r9   rG   rH   r   r   r:   r   r   rJ   sum	binomtestpvalue)r/   r   re   r)   r&   r   	stat_truen_replicationsr}   r_   cici_contains_truer   s                r=   #test_bootstrap_against_itself_1sampr   9  s     IINN1AK ::!1%D		I N88.!,8-D
TG gg%5 +!C 
	 	 B vvr!uy0YA5FGHx''' __-~-//5v C<<rR   i|  iz  )r?   r@   c           	      2   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   rF   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_statu  s,    D)D)u}rR   r   r   r     r   r   r   ra   r   )r/   r   n1n2r)   r&   r   dist1dist2r   r   r   r   r_   r   r   r   s                    r=   #test_bootstrap_against_itself_2sampr   e  s(    IINN1	B	BK JJ1A&EJJ3a(E

uzz|+I NIINB/I0EIINB/I0E
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       t         j                  j                  dd      }t         j                  j                  dd      }t         j                  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>       846;;t$4   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  /    F;;!### $'Q''rR   r   ru   TrF   )r    r$   r)   r/   r5   Fr9   rG   rH   rI   r   r   rJ   rM   )	r/   r$   r  rN   rW   rj   rO   rP   r~   s	           @r=   test_bootstrap_vectorized_3sampr    s       9( IINN1
		q!A
		q!A
		q!AaAY	dCQPDaAYCQPDD,,d.F.FGD'')<)<=rR   z'Failure is not concerning; see gh-14107c           
      f   ddfd}t         j                  j                  d       t         j                  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   TrF   )r    r$   r)   r-   r/   r5   Fr0   r   r  )r/   r$   r  rN   rO   rP   r~   s         @r=   test_bootstrap_vectorized_1sampr    s    !$
 IINN1
		q!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#        @rA   ignore)invalidz0The BCa confidence interval cannot be calculatedr   r.   )r  r  r   )r9   errstater6   warnsr   DegenerateDataWarningr   r:   r   rJ   nanrM   )r/   r}   msgr_   s       r=   test_bootstrap_degenerater    s    =D[[*DCe99E"''&AS44rvvrvv6FG F +* "''&9S,,.>?##Q' FE +*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   rF   ry   r5   i[%  r/   r)   r5   F)r/   r)   r5   r    )r9   rG   r   r   r   r   r   r   r   rJ   rM   
isinstancefloat64)r/   r   r   r}   r_   refs         r=   test_bootstrap_gh15678r    s     ))


0C::!1%D8838/D7D
D%**V!#!6!6t!<>C D%**V!#!6!6t!<P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   rF   r  rA   if  r  )r9   rG   r   r   r   r   minr   rJ   rK   r   maxr   rL   )r   r   r}   true_minr_   rP   s         r=   test_bootstrap_minr"    s    ))

 0
1C::!1%D8838/Dvvd|H7D
D"&&C!#!6!6t!<>Cs..22222bhhtn_bffU"$))"7"7"=?D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 rF   r   r   l   mdpi4 rz   r@   )r)   r5   r&   r/   r   rA   )r)   r5   r&   r/   r1   +=r   )	r9   rG   r   r   r   r:   r   rM   rJ   )r#  r   rN   r   r   n3r_   r  s           r=   test_re_bootstrapr'    s    ))

 0
1C


A	B	B	"	"B
))

 2
3C
//1$Rc+/FC
//1$Rc+/+.0C ))

 2
3C
//1$Rc+/?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   rF   r  rb   )r}   r~   r5   r$   r&   r   r   r   rz   r   r   r   r%  r   z`alternative` must be one ofr   r   z	ekki-ekkir[   )r9   rG   r   r   r   r   r   r   r   r   r   rJ   rL   rK   isneginfisposinfr6   r7   r8   )r/   r   r   r}   r   r   lgs           r=   test_bootstrap_alternativer-    se    ))

 3
4C::!1%DHH3cH24DtrvvCbIF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: 
I	H	Hs   .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,   )r9   rG   rH   rI   nextr   _jackknife_resamplerangedeletearray_equalconcatenatero   )rl   rN   rW   r\   slcr   y2s          r=   test_jackknife_resampler:  /  s    EIINN1
		A[,,Q/0A59 Q	l99Q+~~c8,,,  
[<<QaHI
!B>>"a   rR   rng_nameRandomStater   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   r0   r/  r4   .rb   )getattrr9   rG   r6   skiprH   rI   r   _bootstrap_resampler4  r   r6  )r;  r   rng1rng2r)   rl   rN   rW   r\   r8  jsr   s               r=   test_bootstrap_resamplerD  B  s    
"))Xt
,C
{xj01q6Dq6DKEIINN1
		A'';TJA; 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)r0         r   rb   r#   c                 N    t        j                  t        j                  || |      S rZ   )r9   apply_along_axisr   percentileofscore)r]   rE  r$   s      r=   vectorized_posz0test_percentile_of_score.<locals>.vectorized_posd  s    ""5#:#:D!UKKrR   rF   V瞯<)r9   rG   rH   rI   r   _percentile_of_scorer   )rE  r$   rl   rN   prM  p2s          r=   test_percentile_of_scorerR  \  sf     EIINN1
		A((E;AL 
5r	*3	.BAr5!rR   c                  t   d} t         j                  j                  d       t        j                  j                  |  }t        j                  j                  | d d  dz  }t	        j
                  ||      }t        | d         D ]2  }||   }t        j                  ||   ||   d      }t        ||d       4 y )N)r0   rH  r   rb   rF   r#   rN  )	r9   rG   rH   rI   r   _percentile_along_axisr4  r@   r   )rl   rN   qrW   r\   r_   r   s          r=   test_percentile_along_axisrV  l  s    
 EIINN1
		A
		cr
#c)A**1a0A58_d==1qt"5Xu- rR   c                    d fd}t        j                  |      }t        j                  j	                  d       t        j                  j                  ddd      }t        j                  j                  ddd      }t        j                  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   r0  r   r#   )r   _vectorize_statisticr9   rG   rH   rI   r   )	r$   r  
statistic2rN   rW   rj   rO   rP   r~   s	           @r=   test_vectorize_statisticr]  }  s    9( 11,?JIINN1
		q!QA
		q!QA
		q!Q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   rF  )rF   rF   r  c                     t        j                  t        j                  | |      t        j                  | |d      g      S )Nr   )ddof)r9   asarrayr:   r   )r}   r$   s     r=   r~   z/test_vector_valued_statistic.<locals>.statistic  s5    zz2774.66$157 8 	8rR   rb   '     )r/   r$   r)   r-   r   r#   Z   rF   r   rF   )r   rF   rb  )r9   rG   r   r   r   r   r   r   rJ   rK   TrL   allrl   rM   rk   )r/   r   paramsr   r~   r_   countss          r=   test_vector_valued_statisticrj    sA    ))



+CFZZ^^V*3GF8 VIyb $C1C 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   )r:   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   )r9   
nan_to_num)tptnfpfnr$   actualr   rq  s          r=   r~   z7test_vector_valued_statistic_gh17715.<locals>.statistic  s-    b7}}[4@AArR   c                 >     g ||  t         j                  df   S )N.)r9   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   r0  r   r   )r   r0  r   r   )r      r   r   T)r5   r   r   rN  r   )
r9   rG   r   r   rf  r   r   rJ   rK   rL   )r   r|  r}   r_   r  rq  r~   s        @@r=   $test_vector_valued_statistic_gh17715r~    s     ))

 2
3CHB
7 	D
 88D>D
D,3t
LC
D)#d
CCC++//2++//e=C++003++00u>rR   c                  *   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                  t        |      5  t        j                  ||d d	d
df   f|       d d d        t        j                  t        |      5  t        j                  |j
                  |j
                  d
dd d	f   f|d       d d d        y # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)NiF|)r0   r   )rD   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#   z-Ignoring the dimension specified by `axis`...r   r0   r   )	r9   rG   r   r   r   rf  r6   r  FutureWarning)r   rN   rW   r~   r<   s        r=   test_gh_20850r    s/   
))



+C

7A

7A: 
OOQFI&	OOQSS!##J	2 >G	m7	3Acrc1fI	2 
4	m7	3Acrc1Q3hK()4 
4	m7	3acc!A#ss(m,ia@ 
4	3	 
4	3	3	3	3	3s$   ( E1+"E=08F	1E:=F	Fc            
       *   e Zd ZdZdefdZd Zed        Zed        Z	e
j                  j                  ed               Zee
j                  j                  d ed	d
            d               Ze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j2                  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                  jA                  d#      d$        Z!y)%TestMonteCarloHypothesisTest皙?Nc                     fdS )Nc                  :    j                   | di|      S )Nr5   dtype)ra  )r{  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$   
correctionrF  )r:   rm  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   z/Array shapes are incompatible for broadcasting.r   ru   )r   ru   r   c                      yNr   r[   rV   s      r=   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>  s    1rR   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>!      arR   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    1rR   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   )ra  r   r   r   )ry   r  s    r=   r   z?TestMonteCarloHypothesisTest.test_input_validation.<locals>.rvsB  s!    ::ejjnn$n788rR   rZ   )ra  zerosr   r   r   r6   r7   r8   r   	TypeErrorr:   str
startswith)r  r  r}   r  r<   tempr   es    `      r=   test_input_validationz2TestMonteCarloHypothesisTest.test_input_validation  sO    zz,'	) D "((6"23zz~~uzz~~.]]:W5T3(<2F 6 /]]:W5T5::>>4cB 6 E]]:W5T5::>>4CH 6 E]]9G4T4. 5]]9G4::Bx"b23DTK#6= 5 .]]:W5::|n-DTK#=tD 6 2]]9G4T5::>>48 5 >]]:W5T5::>>4UK 6 >]]:W5T5::>>4VL 6 @]]:W5T5::>>4uE 6 @]]:W5T5::>>4vF 6 0]]:W5T5::>>4VL 6 6	9	.T30i 65 65 65 5444
 65
 54 65 65 65 65 65  	.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_statisticK  s    771:rR   z!`statistic` must be vectorized...r  r   Fr   )
ra  r   r   r   r   r   r6   r7   r8   r:   )r  r  r  r<   r   s    `   r=   test_input_validation_xpz5TestMonteCarloHypothesisTest.test_input_validation_xpI  s    	 6L)B<VUZZ^^5MN]]:W5VUZZ^^5MN 6]]:W5VUZZ^^RWWO 65 6555s   (&C,12C8,C58Dc                    	 t         j                  j                  d      }|j                  |j	                  d            }t        |      	 	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 r0   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~   xp_tests      r=   r~   z:TestMonteCarloHypothesisTest.test_batch.<locals>.statisticb  s\    ffkqwwqzJ#&z93G3G#HI ".4%%g.qt<<rR   r   r   T)r   r~   r)   r    i r  r   r-   r     r   r   r   r[   )r9   rG   r   ra  standard_normalr   r  r  r  r   r   r   r   r   r
   r   )
r  r  r   rN   r  rO   rP   res3r~   r  s
   `       @@r=   
test_batchz'TestMonteCarloHypothesisTest.test_batchY  s   
 ii##K0JJs***34!!$	=
 	 	)#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                  |	|      }	t        |	      }| j                  |      }| j                  t        j                  j                  |||      }t        |	||dd|      }|j                  |
j                   |      }|j                  |
j"                  |      }t%        |j                   |       t%        |j"                  || j&                         y )Nit$ r   r   r   rF   r  64float32r  )ry   r          )popmeanr$   r  )r  r  Ti N  )r    r)   r$   r   )r9   rG   r   ra  r  r  r>  r  r   ttest_1sampr   r  r  r   r   r   r~   r   r	   r   )r  r$   r  r   ry   dtype_default	dtype_strdtype_npr  rN   r   r  r~   r   r_   ref_statistic
ref_pvalues                    r=   test_axis_dtypez,TestMonteCarloHypothesisTest.test_axis_dtype  sD   
 ii##G,T
 

2,,!%]);!;I)	2y)I& T:$$Q>JJqJ&!!$&&w/	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                  |      }t        |      }| j                  |      }| j                  t        j                  j                  ||      }t        ||||      }	t        |	j                  |j                  |j                               t        |	j                  |j                  |j                        | j                          y )N)rI  r   r  r  r  r   )r9   rG   r   r  r   r  ra  r   r  r  r   r   r   r	   r~   r   r   )
r  r   r  r   rN   r  r  r~   r   r_   s
             r=   test_alternativez-TestMonteCarloHypothesisTest.test_alternative  s     ii##H-R(2;?JJqM!!$&&w/	ll5::>>32l6q#ykJrzz#--'@A

BJJszz$:KrR   r   r   r]   g      rF  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  rI  r]   ry   r5   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   )r9   rG   r   r   skewnormr   r  r   r  r  r   r   r~   r   r   )	r  r   r]   r   rN   r   r  norm_rvsr_   s	    `       r=   test_against_ks_1sampz2TestMonteCarloHypothesisTest.test_against_ks_1samp  s    
 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  r1  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   )r9   rG   r   r   r  r   r  r   r   r   r~   r   r   )
r  r  r   r]   r   rN   r   r~   r  r_   s
    `        r=   test_against_normality_testsz9TestMonteCarloHypothesisTest.test_against_normality_tests  s    
 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   )r9   rG   r   r   r  r   r  r  r   r   r   r~   r   r   )r  r]   r   rN   r   r~   r  r_   s           r=   test_against_normaltestz4TestMonteCarloHypothesisTest.test_against_normaltest  s     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rI  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   )r9   rG   r   r   r  r   r  r   r  r  r   r   r~   r   r   )r  r]   r   rN   r   r  r  r_   s           r=   test_against_cramervonmisesz8TestMonteCarloHypothesisTest.test_against_cramervonmises  s     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rF   r  )	r9   rG   r   r   tukeylambdar   andersonr~   critical_values)r]   r   rN   r   r  r\   s       r=   funz?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.fun  s`    ))''	2C!!%%ac%DA~~a3H%%(@(@(CCCrR   r   )x0r  rF   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   r9   rG   r   r   r  r   r  r~   significance_levelr  r>  r   r   r   r   )r  r  r\   r  supsolr]   r   rN   r   expected_stat
expected_pr  dist_rvsr_   s    ``            r=   test_against_andersonz2TestMonteCarloHypothesisTest.test_against_anderson  s=   	D
  CJJ~&sq/C ! {{{ EE!Hii##I.!!!#C!@>>!Y/ **003C7
	: <<y 9 = =sC CJJ~&"1h#.D.3LC ! 	}5

JQtyy[A5 ! & ! 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 rF   Tr   r  g-C6?)r9   rG   r   r  r   r:   r   )r  r   rN   r_   s       r=   test_p_never_zeroz.TestMonteCarloHypothesisTest.test_p_never_zero:  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                 D    t        j                  | ||      j                  S rZ   r  rV   s      r=   r~   zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statisticH  s    ??1a.888rR   rb   r#   r   r   {Gz?r   )
r9   rG   r   normalr   r   r  r   r~   r   r  r   r}   r   r~   r_   r  s          r=   test_against_ttest_indz3TestMonteCarloHypothesisTest.test_against_ttest_indC  s    ii##$67zzvz&


(::jj#**$	9 $$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  re  r   )r   e   )r   f   )r   g   c                 @    t        j                  |d| ij                  S )Nr$   )r   f_onewayr~   )r$   r{  s     r=   r~   zETestMonteCarloHypothesisTest.test_against_f_oneway.<locals>.statisticW  s    >>43d3===rR   rb   r   r$   r   r$   {Gz?r   )
r9   rG   r   r  r   r   r  r   r~   r   r  s          r=   test_against_f_onewayz2TestMonteCarloHypothesisTest.test_against_f_onewayP  s    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 rb  c                 X    dt        j                  d      j                  |       z  S )Nr  gZd;O?)rP  r  )r   	bernoullir   ry   r   s    r=   r   zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvsh  s'    %044$S4QQQrR   rF   r   )r   r)   g     ?r   )
r9   rG   r   r   r   rm  r   null_distributionr~   r   )r  r)   r   rN   r_   c0c1r   s          @r=   test_finite_precision_statisticz<TestMonteCarloHypothesisTest.test_finite_precision_statistica  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   r9   r  r  r   r  r  r6   markxslowr  parametrizer4  r  r  slowlinspacer  r   skewtestkurtosistestr  rc   r  r  r  r	  r  r  xfail_on_32bitr"  r[   rR   r=   r  r    s   D(, = @. @.D P P [[$2  $2L [[VU2q\2@ 3 @B [[],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$;;" [[ 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 )r0   rE   r   r   r"   r   r  r   r  )r0   z3`significance` must contain floats between 0 and 1.r   significancerb   r   z`kwargs` must be a dictionaryr   )kwargsz+shape mismatch: objects cannot be broadcastr0   rD   )rE         rE   r4  rN   z`test` must be callablez(`n_resamples` must be a positive integerir(   g      %@z"`batch` must be a positive integerr,   )r9   rG   r   r   r  r  r6   r7   r8   r   r  r*  )r  r   testr   n_observationsr<   s         r=   r  zTestPower.test_input_validationv  s   ii##$78zz3::&!D]]:W5$^< 6 E]]9G4$n- 5]]9G4$V,n= 5 .]]:W5$~6 6]]:W5$U# 6 H]]:W5$^!< 6]]:W5$^"++b!:LM 6 2]]9G4$^I> 5 @]]:W5$r2h56 6]]:W5$r2hR13	:JK 6 ,]]9G4$^, 5 =]]:W5$^= 6]]:W5$^> 6 7]]:W5$^37 6]]:W5$^48 65Y 65 5444 6555 6555 54 6555 54 6555 6555s   '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  r6  s      r=   r6  z"TestPower.test_batch.<locals>.test  sS    ffks1vJ!*doo>DOLLAL$$Q5<<<rR   r   r0   r   )r6  r7  r)   r   )r   r-   r   rH  r[   )	r9   rG   r   r  r  r   r   r  r   )r  r   r  rO   rP   r  r6  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$   )r9   expand_dimsr;   r4  r   r   r  )rN   r   r$   popmeans_expandedpopmeanss       r=   r6  z*TestPower.test_vectorization.<locals>.test  sF     "xuQQR
?S9T U$$Q(9{*.0 0rR   )r0   r   rH  r   rF   r   r  )r  r  皙?r   r2  r3  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   r1  r  r  )r   r   ra   )r9   rG   r   r   ra  rz  r   r   r  appendrn   rl   r   )r  r   r6  nxr3  r2  r_   r  significance_inx_irE  tmprC  rD  r?  s               @@@r=   test_vectorizationzTestPower.test_vectorization  s    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   &( r0   rF   )r   r0   r   )r  r@  r   r1  r  r   )r9   rG   r   r   r  integersr  ra  r   rm   rz  rl   r   )r  r   r6  r7  r   r2  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 )NrM  )gv?g]NbJ?g6;?)gOt]?g7gLڷ?g0Dҗ?)gVL[?g;c?g.H&?)g#*3)?glk?g5i ?r  )r   rF  r   r0   rH  r  r@  rA  r   )r9   rG   r   r   r   r  r  r   )r  r   r  r3  r7  r2  r_   s          r=   test_ttest_1samp_powerz TestPower.test_ttest_1samp_power  s    ii##O4 5464467
 _-$d|kk%++SZZ'3FD		3T2rR   N)r#  r$  r%  r  r6   r&  r)  r  rK  rO  rQ  r[   rR   r=   r/  r/  u  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      ej                  j                  dd      ej                  j                  dd      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                  j7                         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                  j7                         ej                  j                  dd%      d&               Z!g d'g d(d)d*d+d,d-d.d/Z"g d0g d1d2d3d4d5d6d7d/Z#ej                  j7                         ej                  j                  d8e"e#f      d9               Z$ej                  j&                  ej                  j                  d:d;      d<               Z%ej                  j                  d=d>      d?        Z& e'd@      d
g f e'd      d
g dg dAgf e'dB      d
g dg dAddCggfgZ(ej                  j                  dDe(      dE        Z)dF Z*yG)HTestPermutationTestr%  c                 L    t         j                  j                  d      | _        y )Nl   F )r9   rG   r   r   )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  r2   r3   r4   )r6   r7   r8   r   r  )r  r  r<   s      r=   test_permutation_test_ivz,TestPermutationTest.test_permutation_test_iv&  so   	; G]]:W5i!-t4 6 K]]:W5T4( 6]]9G4Q% 5 /]]:W5i3TD 6 5]]:W5i3T.46 6 E]]:W5i3TcJ 6 >]]:W5i3TuM 6 >]]:W5i3TvN 6 @]]:W5i3TG 6 @]]:W5i3TH 6 0]]:W5i3TvN 6 7]]:W5i3T*35 65W 65 6544 65 65
 65 65 65 65 65 65 65s   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>r5   rX  )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 )Nr0   c                     | j                   dk(  rdn
t        |       }t        |j                        _        xj                  dz  c_        t        j                  | |      t        j                  ||      z
  S Nr   r#   )r   rd   r   r  r  r9   r:   )rN   rW   r$   r  r~   s       r=   r~   z1TestPermutationTest.test_batch.<locals>.statisticf  s_    ffks1vJ#&z93G3G#HI "7714(27714+@@@rR   r   r   T)r)   rX  r    r   )r-   r5   r  r   r   r   )r   rG   r  r  r   r   r   r   )
r  rX  r5   rN   rW   r  rO   rP   r  r~   s
            @r=   r  zTestPermutationTest.test_batch\  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_sizerZ  r   r   )r[  r}  r\  r0  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)rX  r    r   )r)   r5   )r   rG   r   r   r   r  ry   )	r  rX  
exact_sizer5   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   )r}  	   i]  r   c                 `    t        j                  | |      t        j                  ||      z
  S ri   r   rV   s      r=   r~   zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statistic  rb  rR   Tr\  rF   r    rX  r-   r   r5   r)   r  r   )r   binomr   r   r   r   r9   infr~   r   r   r  r   r   rG  nypermutationsrN   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 #[#O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   Tr[  rF   rh  r)   r  r   )	r   r   r   r   r9   rj  r~   r   r   rk  s                r=   *test_randomized_test_against_exact_samplesz>TestPermutationTest.test_randomized_test_against_exact_samples  s    
 +S,B"u|###JJNNN#JJNNN#!t	- #	[#O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  )r}  r}  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   Tr[  rF   rh  r)   r  r   )r   r   	factorialr   r   r   r   r[  r   r9   rj  r~   r   r   )r  r   r   rG  rl  rm  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	"	[#OtY 'L '!%'iLRVVLtL}}...

DKKd;rR   r   r  rm  )rI  g    eAr$   rB   c           	      D   t        j                  d      j                  ddd      }t        j                  t        j                  d      d d d d f   d|      }t         j                  j                  d      }t        j                  ||||||      }d }t         j                  j                  d      }	t        ||f|d	||||	
      }
t        |j                  |
j                  | j                         t        |j                  |
j                  | j                         y )N<   r   r   ru   r   l   ;WNa )rm  r$   r5   r   c                 F    t        j                  | ||      j                  S ri   r  rV   s      r=   r~   zETestPermutationTest.test_against_permutation_ttest.<locals>.statistic  s    ??1ad3===rR   Tr    r)   r   r$   r5   r   )r9   rc   rn   moveaxisrG   r   r   r  r   r   r~   r   r   )r  r   rm  r$   rN   rW   rA  rO   r~   rB  rP   s              r=   test_against_permutation_ttestz2TestPermutationTest.test_against_permutation_ttest  s     IIe$$Q1-KK		!Qd]3Q=yy$$%89q!,T,0kK	> yy$$%89A	d,8,7d-13
 	TYYGT[[tyyArR   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   r5   r   )r   r  r   r  r   r9   rj  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{+4488M 	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   r  ru   r   r   r   r  r  r  c                 B    t        j                  | |      j                  S rZ   r   ansarir~   rw  s     r=   r  z<TestPermutationTest.test_against_ansari.<locals>.statistic1d2      <<1%///rR   r  r   )r   r  r   r  r   r9   rj  r   r~   r   r   )	r  r   rN   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{+6TXXO 	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   r5   r@  r   r  c                 F    t        j                  | ||      j                  S ri   )r   mannwhitneyur~   rV   s      r=   r~   z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statisticC  s    %%a6@@@rR   Tr}  r   )r   uniformr   r   r  r   r9   rj  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{$%DHH> 	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   r5   ru   r   )ry   rw   rx   r5   r  r.   c                 F    t        j                  | |d      j                  S N
asymptoticr.   )r   cramervonmises_2sampr~   rw  s     r=   r  z9TestPermutationTest.test_against_cvm.<locals>.statistic1dT  s#    --a5ACCL9MrR   r   r  r   )r   r   r   r   r  r   r9   rj  r   r~   r   r   )r  rN   rW   r   r  r_   s         r=   test_against_cvmz$TestPermutationTest.test_against_cvmM  s    JJNNNBJJNNqNI--a7C	M
 1v{+4488M 	x'9'9		J

HOO$))DrR   )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>.statistic1dq  s    ==$'111rR   c                  :    t        j                  |  j                  S rZ   )r   r  r   r  s    r=   pvalue1dzFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1dt  s    ==$'...rR   )r   r   r   )r   r   r   r  r#   Fr   r\  r    r$   r   rX  r5   r)   r   r   gQ?r   r   )r9   rG   r   r   r[  rm   r   r   rj  r   r~   r   r   )r  r$   r   rN   rW   rj   r}   r  r  r~   r   x2r9  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)$1488M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   r0  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_1d  s    >>!8BBBrR   c                 F    t        j                  | |d      j                  S r  r  rw  s     r=   statistic_2samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1d  s    >>!QF;EEErR   c                 4    t        j                  | |      S )Nr  )r   r  r  s     r=   test_1dz:TestPermutationTest.test_against_wilcoxon.<locals>.test_1d  s    >>!QK@@rR   r   r#   Fr[  )r    r$   r   rX  r5   r)   r   r  )r   r  r   r   r   r[  r9   rj  r   r   r~   r   r   )r  r   rN   rW   r  r  r  r6  r   r  r  r  rO   rP   s    `            r=   test_against_wilcoxonz)TestPermutationTest.test_against_wilcoxon  s7    MM9!$((KMM9$TXXN	C	F	A //811% a[
#Q{$-txx!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   r0   r   rb   c                 6    t        j                  | dkD  |      S )Nr   r#   r9   r   r  s     r=   r~   z=TestPermutationTest.test_against_binomtest.<locals>.statistic  s    66!a%d++rR   rF  r  Tr[  )r    rX  r)   r5   r   r   r   )
r   rN  r   r   r   r9   rj  r   r   r   )	r  r   rN   r~   kre   rP  r   r_   s	            r=   test_against_binomtestz*TestPermutationTest.test_against_binomtest  s     HHa,!q&	
	, A,Ca1??1aD$$aT96?13dhh1<> 	

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 )	Nr0  r   r  r.   c                 H    t        j                  | d      j                  S r  )r   
kendalltaur~   rw  s    r=   r  z@TestPermutationTest.test_against_kendalltau.<locals>.statistic1d  s    ##Aq>HHHrR   rZ  )rX  r)   r5   r   )r   r  r   r  r   r9   rj  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[:+-66J 	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  rw  s    r=   r~   z@TestPermutationTest.test_against_fisher_exact.<locals>.statistic  s    6616a1f-..rR   l   	(yM4 r  g333333?g      ?r   rZ  )rX  r)   r   r5   r  )r9   rG   r   astypefloatr   contingencycrosstabr   rj  fisher_exactr   r   )	r  r   r~   r   rN   tabr_   rP   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{,/1 !!#;?

DG,rR   )r1  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 )NTr  r  )r   r  r   r  s    r=   r  zITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1d  s"    ((d0799?@rR   r$   Fr   rZ  r  r)   rv   r   r   r   )r   rG   r   rankdatar   r[  r9   broadcast_arraysr   rj  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)$.Ct[MbffMMkLtLtL'9		Jt~~DIIF

O$))D

DKKd;rR   r   )r"   r   g      @r;  g?g&_?g      @gd~$I"@glu?)rN   rW   expected_lessexpected_2sidedexpected_Pr_gte_S_meanr  expected_avgexpected_std)o   k   rF   r   r  j   m   l   )	r  r  r  b   i   r  n   r  r   gd?gd?gYo5 ?g     @@@g{C@gDmFA@casec                    |d   }|d   }|d   }|d   }|d   }|d   }|d   }|d   }	d	 }
t         j                  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  rw  s     r=   r  z7TestPermutationTest.test_with_ties.<locals>.statistic1dR  r  rR   z$Ties preclude use of exact statisticr   )r)   r   r  Nr   g|=r   gư>)r9   testingr   r  UserWarningr   rj  r   r~   r   r   r  r:   r   rd   r   r   )r  r  rN   rW   r  r  r  r  r  r  r  r  r_   rP   Sr:   re   Pr_gte_S_means                     r=   test_with_tiesz"TestPermutationTest.test_with_ties,  s   8 II!"67_-01!%&>!?N+N+	0 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~   rw  s    r=   r  zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1d  s    ??1a(222rR   rZ  )rX  r)   r   r   gvIh%<=r   N)r   r9   rj  r   r~   r   r   )r  r   r  rN   r  r  r_   rW   s          @r=   test_against_spearmanr_in_Rz/TestPermutationTest.test_against_spearmanr_in_Rj  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   )r6   r7   r8   ro   r   _batch_generator)r  r-   s     r=   test_batch_generator_ivz+TestPermutationTest.test_batch_generator_iv  s3    ]]:-HI--i?@ JIIs   "AAr   )r   r   ru   r}  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_generator  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   r0  r}  c                 4    t        j                  | |      d   S rt  ru  rw  s     r=   r~   zFTestPermutationTest.test_finite_precision_statistic.<locals>.statistic  s    >>!Q'**rR   FrZ  )r    rX  r   r%  gUUUUUU?)r   r   r~   r   r  r9   r   rd   )	r  rN   rW   r~   r_   rr   null	correct_ps	            r=   r"  z3TestPermutationTest.test_finite_precision_statistic  s     	+ $$aVY56@B--S5J5J46tq5y011CI=	)c)))))rR   N)+r#  r$  r%  r   rU  rY  r6   r&  r(  r9   rG   r<  r   r  r   rx  ri  rd  rn  r)  rq  ry  r  r  r  r  r  r'  r  r  r  r  r  r  
tie_case_1
tie_case_2r  r  r  r4  batch_generator_casesr  r"  r[   rR   r=   rS  rS    s~   D>
35l [[^bii.C.C.0ii.C.C.E F[[/CE"/EF"/H [[^bii.C.C.0ii.C.C.E F[[;)+<7+<+<Q+?+BC/,mgmmAq.ABDE=	EF=4<2 [[< <2<6 [[],?@ [[^Y7[[VY/B 0 8	 AB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*rR   rS  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   )r9   r   intcumsumsetr   _all_partitions_concatenatedsplitaddr;   	frozensetprodr4  rd   r   ri  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1xx 63B@5!E1)A,!EFG #N
 ww!&s1vax2!0A  c!AB%j#a!g,?!0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: r0   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}   r5   r/   r[  )r}   r5   rX  )r   r   r  r)   rF   c                     | j                   dkD  st        j                  |       sJ t        j                  | |      S r_  )r   r9   r6  r:   )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   r9   r:   r  s    r=   r~   z,test_parameter_vectorized.<locals>.statistic  s     vv{{wwqzrR   Fr[   )r9   rG   r   r>  r   r   )	r  r   fun_optionscommon_optionsr  optionsr~   r   r   s	          @@r=   test_parameter_vectorizedr    s    
 ))


/CZZRZ F; +1C+7!917	3<E(G28'E	GK
 $S)N
%
"C(#GNN>"% 8)888)88 8)889)99rR   )Cr6   numpyr9   numpy.testingr   r   r   scipy.conftestr   scipy._lib._utilr   scipy._lib._array_apir   r	   r
   r   scipyr   r   scipy.optimizer   scipy.statsr   r   r   r   scipy.stats._resamplingr   r>   r&  r(  rQ   rf   rs   r)  r-  r   tests_Ritemsr   tests_against_itself_1sampr   r   r   tests_against_itself_2sampr   r  r  r  r  r"  r'  r-  r:  rD  rR  rV  r]  rj  filterwarningsr~  r  r  r/  rS  r  r  r[   rR   r=   <module>r     s     J J / )E E    L L - -<A~ #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. (,,0%)+ 
7 t12 +399;="= "J (+,/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A.|8 |8~e3 e3PN
* N
*n0* NP:P:rR   