
    e!hA                    
   d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZmZmZmZ d dlmc mZ d
 Ze j<                  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<                  jF                  e j<                  jI                  d      e j<                  j?                  dg d      d                      Z%ddddZ&e j<                  j?                  de&jO                               d        Z(ddddZ)d Z*d Z+e j<                  jF                  e j<                  j?                  de)jO                               d                Z,d!d"d#Z-e j<                  jF                  e j<                  j?                  de-jO                               d$               Z.e j<                  j?                  dd%d&g      e j<                  j?                  dd d'g      d(               Z/e j<                  jI                  d)      e j<                  j?                  dg d      e j<                  j?                  dd d'g      d*                      Z0e j<                  j?                  dg d      d+        Z1e j<                  j?                  dg d      d,        Z2d- Z3e j<                  j?                  d.d d/g      d0        Z4e j<                  jI                  d1      e j<                  j?                  dg d      d2               Z5d3 Z6e j<                  j?                  d4d5d6g      d7        Z7e j<                  j?                  d8g d9      e j<                  j?                  dg d      d:               Z8d; Z9e j<                  j?                  dg d      d<        Z:e j<                  jF                  e j<                  j?                  dg d      d=               Z;e j<                  jF                  e j<                  jy                  d>      d?               Z=d@ Z> G dA dB      Z? G dC dD      Z@ G dE dF      ZAdG ZBe j<                  j?                  dHg dI      dJ        ZC G dK dL      ZDy)M    N)assert_allcloseassert_equalsuppress_warnings)array_api_compatible)rng_integers)array_namespaceis_numpy)xp_assert_closexp_assert_equal)statsspecial)root)	bootstrapmonte_carlo_testpermutation_testpowerc                  	   d} t        j                  t        |       5  t        dt        j
                         d d d        d} t        j                  t        |       5  t        t               t        j
                         d d d        d} t        j                  t        |       5  t        g ddgft        j
                         d d d        d} t        j                  t        |       5  t        g dg dft        j
                  d	
       d d d        d} t        j                  t        |       5  t        dt        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d        d d d        d!} t        j                  t        |       5  t        g dft        j
                  d"#       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   y xY w)$Nz%`data` must be a sequence of samples.match   z(`data` must contain at least one sample.z>each sample in `data` must contain two or more observations...r         z=When `paired is True`, all samples must have the same length r   r   r      T)paired0`vectorized` must be `True`, `False`, or `None`.ekki
vectorized`axis` must be an integer.      ?axisz!could not convert string to floatni)confidence_levelz-`n_resamples` must be a non-negative integer.n_resamples     D@+`batch` must be a positive integer or None.batchz`method` must be inmethodz?`bootstrap_result` must have attribute `bootstrap_distribution'
   )bootstrap_resultz5Either `bootstrap_result.bootstrap_distribution.size`r   ,SeedSequence expects int or sequence of intsherringrng)pytestraises
ValueErrorr   npmeantuple	TypeError)messages    i/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/stats/tests/test_resampling.pytest_bootstrap_ivr?      s   5G	z	1 !RWW 9G	z	1 $%'277#$ OG	z	1 -9qc"BGG,- OG	z	1 C9l+RWWTBC AG	z	1 1!RWW01 +G	z	1 39,c23 2G	z	1 @9,$?@ >G	z	1 <9,U;< >G	z	1 =9,V<= <G	z	1 69,u56 <G	z	1 79,v67 $G	z	1 89,78 PG	z	1 >9,"=> FG	z	1 89,Q78 =G	y	0 89,Y78 8q $ $- -C C1 13 3@ @< <= =6 67 78 8> >8 88 8s   P#P& P%+#P23P?5 Q: Q? Q& Q3	 R  R R R' R4" S PP"%P/2P<?Q	QQ#&Q03Q= R
RR$'R14R= S	r/   )basic
percentileBCar$   r   r   r   c           	      T   t         j                  j                  d       t         j                  j                  ddd      }t	        |ft         j
                  d | d|d      }t         j                  j                  d       t	        |ft         j
                  d| |d      }t        |j                  j                  |j                  j                         t        |j                  j                  |j                  j                         t        |j                  |j                         y )Nr   r0         d   )r-   r/   random_stater$   r)   )r-   r/   r$   r)   )r9   randomseedrandr   r:   r   confidence_intervallowhighstandard_error)r/   r$   xres1res2s        r>   test_bootstrap_batchrS   P   s     IINN1
		r2r"AaT277$v"#$CADIINN1aT277"VC1D ))--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   rG   c                 2    | |z
  dz  j                  |      S )Nr   r#   r:   rP   yr$   s      r>   my_statisticz+test_bootstrap_paired.<locals>.my_statistick   s    1qD))rT   c                 .    |    }|    } ||      }|S N )ir$   abresrZ   rP   rY   s        r>   my_paired_statisticz2test_bootstrap_paired.<locals>.my_paired_statisticn   s&    aDaD1a 
rT   r4   T)r   r5   )
r9   rI   rJ   rK   arangelenr   r   rL   rO   )	r/   nrb   r^   rQ   rR   rZ   rP   rY   s	         @@@r>   test_bootstrap_pairedrh   c   s     IINN1A
		qA
		qA* 			#a&AaT.A6DaV\$A>DD,,d.F.FGD'')<)<=rT   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#   rW   )rP   rY   zr$   s       r>   rZ   z/test_bootstrap_vectorized.<locals>.my_statistic   s3    vv4v 166t6#44qvv4v7HHHrT   )r0   rE   rF   rG   )r   r/   r5   r$   r)   )rG   )r   r   r   rc   )r9   rI   rJ   rK   r   bootstrap_distributionshaperO   broadcast_toreshaper   rL   rM   rN   listpopr   )r/   r$   r   rZ   rn   	n_samplesrP   rY   rl   rQ   rp   rR   result_shapes                r>   test_bootstrap_vectorizedru   }   s    IINN1I EdI
		y!A
		y!A
		y!AaAYVF5D''--""((612 3 2 GGDM
		'*E2A
		'*E2A
		'*E2AaAYVF38D D,,00,,002D,,11,,113D'')<)<=;LT))--33\B))..44lC$$**L9rT   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sizerH   ffffff?r   )dfry   rz   )
confidence)data	statisticr)   r/   r5   r&   gMb@?rtolga2U0*3?atolr   r)   r1   lessr&   alternativegreaterr]   )r9   rI   default_rngr   normrvstrf   r:   semintervalstddictr   r   rL   rO   updaterN   ppfrM   )	r/   r5   r   alphadistexpected_intervalexpected_seconfigra   s	            r>   test_bootstrap_against_theoryr      sc   
 ))

 3
4C::>>aqt#>FDE77c$ikrwwt}EIIdOLD7((*Kw"''tS*F

5f
5u
5CC++->TJC&&$?
MM$1s;<

If
Iu&
ICC++00$((5/M
MM$1s;<

Lf
Lu)
LCC++//!E'1BNrT   )gQ7@gHzS@)g\(<@g=
ףpU@)gHz'@@gQV@zmethod, expectedc                     t        j                  g d      }t        |ft         j                  d| d      }t	        |j
                  |d       y )N)r0   rF         )@r   g+@            "   2   Q   Y   y         i@B r   )r)   r/   r5   g{Gzt?r   )r9   arrayr   r:   r   rL   )r/   expectedrP   ra   s       r>   test_bootstrap_against_Rr      sD    " 	 5 	6A
QD"''wvCC++XEBrT   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 rk   )r   skew)rP   rY   r$   s1s2s        r>   r   z1test_multisample_BCa_against_R.<locals>.statistic   s+    ZZ%ZZ%BwrT   l   tgy4r@   rG   )r/   r-   r5   rA   bcag1*g333333ÿg333333?Q?)r9   rI   r   r   r   r:   rL   abs)rP   rY   r   r5   	res_basicres_percentres_bca	mid_basicmid_percentmid_bca	mid_wboot
diff_basicdiff_percentdiff_bcas                 r>   test_multisample_BCa_against_Rr      s3   	.A	9A
 ))

 2
3CA	'&)s4I//1a&)L(+6Kooq!fi$'S2G 	556I''+99:Kggg112G I i'Y7J)+S^;L)#S^3H $x=4rT   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 rk   r9   r:   )rl   rY   r$   s      r>   r   z:test_BCa_acceleration_against_reference.<locals>.statistic,  s#    wwqt$rwwqt'<<<rT   rd   r|   rG   ge{?r   )r9   r   r   r   rm   _resampling_bca_intervalr   )rY   rl   r   r   ra   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/0rT   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   rG     ?rw   r   ry   rz   i  r{   r   rd   r   r&   r)   r-   r/   r$   皙?r9   rI   rJ   r   r   r:   r   r   rL   sum	binomtestpvalue)r/   r   rg   r)   r&   r   	stat_truen_replicationsr   ra   cici_contains_truer   s                r>   #test_bootstrap_against_itself_1sampr   ;  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<<rT   i|  iz  )r@   rA   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   rG   x   r   r   rd   c                 h    t        j                  | |      }t        j                  ||      }||z
  S rk   r   )data1data2r$   mean1mean2s        r>   my_statz4test_bootstrap_against_itself_2samp.<locals>.my_statw  s,    D)D)u}rT   r   r   r     r   r   r   rc   r   )r/   r   n1n2r)   r&   r   dist1dist2r   r   r   r   ra   r   r   r   s                    r>   #test_bootstrap_against_itself_2sampr   g  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<<rT   r@   rA   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r\   rW   .0sampler$   s     r>   	<genexpr>zEtest_bootstrap_vectorized_3samp.<locals>.statistic.<locals>.<genexpr>       86;;t$8   r   r$   r   s   ` r>   r   z2test_bootstrap_vectorized_3samp.<locals>.statistic      84888rT   c                  D    | D ]  }|j                   dk(  rJ   | ddiS Nr   r$   r   ndimr   r   r   s     r>   statistic_1dz5test_bootstrap_vectorized_3samp.<locals>.statistic_1d  4     	$F;;!###	$$'Q''rT   r   rw   TrG   )r    r$   r)   r/   r5   Fr9   rI   rJ   rK   r   r   rL   rO   )	r/   r$   r  rP   rY   rl   rQ   rR   r   s	           @r>   test_bootstrap_vectorized_3sampr    s       9( IINN1
		q!A
		q!A
		q!AaAY	dCAGDaAYCAGDD,,d.F.FGD'')<)<=rT   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 rk   rW   rP   r$   s     r>   r   z2test_bootstrap_vectorized_1samp.<locals>.statistic  s    vv4v  rT   c                 :    | j                   dk(  sJ  | d      S Nr   r   r#   r   )rP   r   s    r>   r  z5test_bootstrap_vectorized_1samp.<locals>.statistic_1d  s     vv{{##rT   r   rw   TrG   )r    r$   r)   r-   r/   r5   Fr0   r   r  )r/   r$   r  rP   rQ   rR   r   s         @r>   test_bootstrap_vectorized_1sampr    s    !$
 IINN1
		q!AaT9D!$DD aT<E!$BvD D,,d.F.FGD'')<)<=rT   c                    ddgz  }| dk(  rt        j                  d      5  d}t        j                  t        j
                  |      5  t        |gt         j                  |       }t        |j                  t         j                  t         j                  f       d d d        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#        @rB   ignore)invalidz0The BCa confidence interval cannot be calculatedr   r.   )r  r  r   )r9   errstater6   warnsr   DegenerateDataWarningr   r:   r   rL   nanrO   )r/   r   msgra   s       r>   test_bootstrap_degenerater    s    =D[[* 	HDCe99E H"''&AS44rvvrvv6FGH	H 	H "''&9S,,.>?##Q'H H	H 	Hs$   (D
AC7D7D 	<DDc           	      V   t         j                  j                  d      }t        j                  dd      }|j                  d|      }|f}t        |t        j                  | dt         j                  j                  d            }t        |t        j                  | dt         j                  j                  d      d	
      }t        |j                  |j                         t        |j                  |j                         t        |j                  t         j                        sJ y )Nl   E<1

 r   r   r   rG   r{   rH   i[%  r/   r)   r5   F)r/   r)   r5   r    )r9   rI   r   r   r   r   r   r   r   rL   rO   
isinstancefloat64)r/   r5   r   r   ra   refs         r>   test_bootstrap_gh15678r    s     ))


0C::!1%D8838/D7D
D%**V		--d35C D%**V		--d3GCC++S-D-DEC&&(:(:;c(("**555rT   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   rG   r  rB   if  r  )r9   rI   r   r   r   r   minr   rL   rM   r   maxr   rN   )r5   r   r   true_minra   rR   s         r>   test_bootstrap_minr#    s    ))

 0
1C::!1%D8838/Dvvd|H7D
D"&&C		--d35Cs..22222bhhtn_bffU..t46DS,,000,,113S,,111,,002rT   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 rG   r   r   l   mdpi4 r|   rA   )r)   r5   r&   r/   r   rB   )r)   r5   r&   r/   r1   +=r   )	r9   rI   r   r   r   r:   r   rO   rL   )r$  r5   rP   r   r   n3ra   r  s           r>   test_re_bootstrapr(    s    ))

 0
1C


A	B	B	"	"B
))

 2
3C
//1$RS+/FC
//1$RS+/+.0C ))

 2
3C
//1$RS+/?C C&&(:(:GC++S-D-D rT   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   rG   r  rd   )r   r   r5   r$   r&   r   r   r   r|   r   r   r   r&  r   z`alternative` must be one ofr   r   z	ekki-ekkir]   )r9   rI   r   r   r   r   r   r   r   r   r   rL   rN   rM   isneginfisposinfr6   r7   r8   )r/   r5   r   r   r   r   lgs           r>   test_bootstrap_alternativer.    sm    ))

 3
4C::!1%DHH3cH24Dtrvv3R@F7&737A
MM$1q9:L&L4VLAO&O4YOAA))..0E0E0J0J A))--q/D/D/H/H ;;q,,00111;;q,,11222	z)G	H ;:&:k:; ; ;s   .GGc                     d} t         j                  j                  d       t        j                  j                  |  }t	        t        j                  |            }t        | d         D ]<  }|d|d d f   }t        j                  ||d      }t        j                  ||      r<J  t        j                  t        t        j                  |d            d      }t        j                  ||      sJ y )	Nr   r   rw      r   rd   .r#   r   r,   )r9   rI   rJ   rK   nextr   _jackknife_resamplerangedeletearray_equalconcatenaterq   )rn   rP   rY   r^   slcr   y2s          r>   test_jackknife_resampler;  1  s    EIINN1
		A[,,Q/0A59 - Q	l99Q+~~c8,,,- 
[<<QaHI
!B>>"a   rT   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   r0  r4   .rd   )getattrr9   rI   r6   skiprJ   rK   r   _bootstrap_resampler5  r   r7  )r<  r5   rng1rng2r)   rn   rP   rY   r^   r9  jsr   s               r>   test_bootstrap_resamplerE  D  s    
"))Xt
,C
{xj01q6Dq6DKEIINN1
		A'';DAA; - Q	l$59eBi8S"W:~~c8,,,-rT   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   rd   r#   c                 N    t        j                  t        j                  || |      S r\   )r9   apply_along_axisr   percentileofscore)r_   rF  r$   s      r>   vectorized_posz0test_percentile_of_score.<locals>.vectorized_posf  s    ""5#:#:D!UKKrT   rG   V瞯<)r9   rI   rJ   rK   r   _percentile_of_scorer   )rF  r$   rn   rP   prN  p2s          r>   test_percentile_of_scorerS  ^  sf     EIINN1
		A((E;AL 
5r	*3	.BAr5!rT   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   rI  r   rd   rG   r#   rO  )	r9   rI   rJ   rK   r   _percentile_along_axisr5  rA   r   )rn   rP   qrY   r^   ra   r   s          r>   test_percentile_along_axisrW  n  s    
 EIINN1
		A
		cr
#c)A**1a0A58_ .d==1qt"5Xu-.rT   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r\   rW   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   rT   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  rT   r   r   rw   r1  r   r#   )r   _vectorize_statisticr9   rI   rJ   rK   r   )	r$   r  
statistic2rP   rY   rl   rQ   rR   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$rT   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   rG  )rG   rG   r  c                     t        j                  t        j                  | |      t        j                  | |d      g      S )Nr   )ddof)r9   asarrayr:   r   )r   r$   s     r>   r   z/test_vector_valued_statistic.<locals>.statistic  s5    zz2774.66$157 8 	8rT   rd   '     )r/   r$   r)   r-   r   r#   Z   rG   r   rG   )r   rG   rc  )r9   rI   r   r   r   r   r   r   rL   rM   TrN   allrn   rO   rm   )r/   r5   paramsr   r   ra   countss          r>   test_vector_valued_statisticrk    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///%%++~===rT   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)rP   rY   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GrT   c                 R    | |z   }| |z   }t        j                   |||            S r\   )r9   
nan_to_num)tptnfpfnr$   actualr   rr  s          r>   r   z7test_vector_valued_statistic_gh17715.<locals>.statistic  s-    b7}}[4@AArT   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6rT   )r   r   r   r   )r   r   r   r   )r   r1  r   r   )r   r1  r   r   )r      r   r   T)r5   r   r   rO  r   )
r9   rI   r   r   rg  r   r   rL   rM   rN   )r5   r}  r   ra   r  rr  r   s        @@r>   $test_vector_valued_statistic_gh17715r    s     ))

 2
3CHB
7 	D
 88D>D
D,#d
CC
D)T
:CC++//2++//e=C++003++00u>rT   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   )rE   r   c                 F    t        j                  | ||      j                  S rk   r   	ttest_indr   rX   s      r>   r   z test_gh_20850.<locals>.statistic  s    q!$/999rT   r   r#   z-Ignoring the dimension specified by `axis`...r   r0   r   )	r9   rI   r   r   r   rg  r6   r  FutureWarning)r5   rP   rY   r   r=   s        r>   test_gh_20850r    sO   
))



+C

7A

7A: 
OOQFI&	OOQSS!##J	2 >G	m7	3 3Acrc1fI	23	m7	3 5Acrc1Q3hK()45	m7	3 Aacc!A#ss(m,ia@A A	3 35 5A As$   ( E1+"E=08F	1E:=F	Fc            
       f   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      e
j                  jC                  d#      d$               Z"y)%TestMonteCarloHypothesisTest皙?Nc                     fdS )Nc                  :    j                   | di|      S )NrH   dtype)rb  )r|  kwdsr  rsrvs_inxps     r>   <lambda>z6TestMonteCarloHypothesisTest.get_rvs.<locals>.<lambda>  s*    RZZ0V20VQU0V6; &0 &= rT   r]   )selfr  r  r  r  s    ````r>   get_rvsz$TestMonteCarloHypothesisTest.get_rvs  s    = 	=rT   c                     fd}|S )Nc                     j                  | |      }j                  | |d      }| j                  |   }|||z  dz  z  S )Nr#   r   )r$   
correctionrG  )r:   rn  rn   )rP   r$   mvrg   r  s        r>   r   z=TestMonteCarloHypothesisTest.get_statistic.<locals>.statistic   sH    %Aqt2AA!cz>!rT   r]   )r  r  r   s    ` r>   get_statisticz*TestMonteCarloHypothesisTest.get_statistic  s    	" rT   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 rk   rW   )rP   r$   r  s     r>   statz@TestMonteCarloHypothesisTest.test_input_validation.<locals>.stat  s    77147((rT   z/Array shapes are incompatible for broadcasting.r   rw   )r   rw   r   c                      yNr   r]   rX   s      r>   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>  s    rT   rd   r#   r!   r"   r   r   0`rvs` must be callable or sequence of callables.r  r  r  g      @c                     | S r\   r]   rP   s    r>   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>#      a rT   If `rvs` is a sequence...c                     | S r\   r]   r  s    r>   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>(  r  rT   c                     | S r\   r]   r  s    r>   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>(  s    1 rT   z`statistic` must be callable.)`n_resamples` must be a positive integer.r'   r(   r*   r+   r,   `alternative` must be in...r   r   z!Signature inspection of statisticc                 b    j                  t        j                  j                  |             S )Nr   )rb  r   r   r   )r{   r  s    r>   r   z?TestMonteCarloHypothesisTest.test_input_validation.<locals>.rvsD  s!    ::ejjnn$n788rT   r\   )rb  zerosr   r   r   r6   r7   r8   r   r<   r:   str
startswith)r  r  r   r  r=   tempr   es    `      r>   test_input_validationz2TestMonteCarloHypothesisTest.test_input_validation  s    zz,'	) D "((6"23zz~~uzz~~.]]:W5 	GT3(<2F	G /]]:W5 	CT5::>>4cB	C E]]:W5 	IT5::>>4CH	I E]]9G4 	/T4.	/]]9G4 	>::Bx"b23DTK#6=	> .]]:W5 	E::|n-DTK#=tD	E 2]]9G4 	9T5::>>48	9 >]]:W5 	LT5::>>4UK	L >]]:W5 	MT5::>>4VL	M @]]:W5 	FT5::>>4uE	F @]]:W5 	GT5::>>4vF	G 0]]:W5 	MT5::>>4VL	M 6	9	.T30i	G 	G	C 	C	I 	I	/ 	/	> 	>
	E 	E
	9 	9	L 	L	M 	M	F 	F	G 	G	M 	M  	.q6$$W---	.s   O6(P(PP(P*&P7'&Q2(Q?(Q(Q+(Q8&(RR 6P PPP'*P47QQQQ(+Q58RR	R?R::R?c                    fd}d}j                  g d      }t              r&t        |t        j                  j
                  |       y t        j                  t        |      5  t        |t        j                  j
                  |       d d d        t        j                  t        |      5  t        |t        j                  j
                  j                  d       d d d        y # 1 sw Y   _xY w# 1 sw Y   y xY w)Nc                 &    j                  |       S r\   rW   )rP   r  s    r>   non_vectorized_statisticzWTestMonteCarloHypothesisTest.test_input_validation_xp.<locals>.non_vectorized_statisticM  s    771:rT   z!`statistic` must be vectorized...r  r   Fr   )
rb  r	   r   r   r   r   r6   r7   r8   r:   )r  r  r  r=   r   s    `   r>   test_input_validation_xpz5TestMonteCarloHypothesisTest.test_input_validation_xpK  s    	 6L)B<VUZZ^^5MN]]:W5 	OVUZZ^^5MN	O]]:W5 	PVUZZ^^RWWO	P 	P	O 	O	P 	Ps   (&C,12C8,C58Dc                    	 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  rn   r!  
batch_sizecounterr  )rP   r$   r  r  r   xp_tests      r>   r   z:TestMonteCarloHypothesisTest.test_batch.<locals>.statisticd  s\    ffkqwwqzJ#&z93G3G#HI ".4%%g.qt<<rT   r   r   T)r   r   r)   r    i r  r   r-   r     r   r   r   r]   )r9   rI   r   rb  standard_normalr   r  r  r  r   r   r   r   r   r   r   )
r  r  r5   rP   r  rQ   rR   res3r   r  s
   `       @@r>   
test_batchz'TestMonteCarloHypothesisTest.test_batch[  s   
 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[[1rT   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   rG   r  64float32r  )r{   r          )popmeanr$   r  )r  r  Ti N  )r    r)   r$   r   )r9   rI   r   rb  r  r  r?  r  r   ttest_1sampr   r  r  r   r   r   r   r   r
   r   )r  r$   r  r5   r{   dtype_default	dtype_strdtype_npr  rP   r   r  r   r   ra   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?rT   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)rJ  r   r  r  r  r   )r9   rI   r   r  r   r  rb  r   r  r  r   r   r   r
   r   r   r   )
r  r   r  r5   rP   r  r  r   r   ra   s
             r>   test_alternativez-TestMonteCarloHypothesisTest.test_alternative  s     ii##H-R(2;?JJqM!!$&&w/	ll5::>>32l6q#ykJrzz#--'@A

BJJszz$:KrT   )r   r   r_   g      rG  rw   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  rJ  r_   r{   rH   r  c                 z    t        j                  | t         j                  j                  d      j                  S Nasymp)moder   )r   ks_1sampr   cdfr   )rP   r   s    r>   statistic1dzGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1d  s+    >>!UZZ^^'.9;;D9ErT   r   Fr)   r    r   r   r   r   r   )r9   rI   r   r   skewnormr   r  r   r  r  r   r   r   r   r   )	r  r   r_   r5   rP   r   r  norm_rvsra   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 #rT   hypotestr   r   r  r2  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 rk   )r   )rP   r$   r  s     r>   r   zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statistic  s    AD)333rT   Tr    r   r   )r9   rI   r   r   r  r   r  r   r   r   r   r   r   )
r  r  r   r_   r5   rP   r   r   r  ra   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$))DrT   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 rk   )r   
normaltestr   r	  s     r>   r   zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statistic  s    ##AD1;;;rT   Tr   r  r   )r9   rI   r   r   r  r   r  r  r   r   r   r   r   r   )r  r_   r5   rP   r   r   r  ra   s           r>   test_against_normaltestz4TestMonteCarloHypothesisTest.test_against_normaltest  s     ii##H-NN3?##A&	< <<

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

HOO$))DrT   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rJ  r  c                 r    t        j                  | t         j                  j                        j                  S r\   )r   cramervonmisesr   r  r   r  s    r>   r  zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1d  s#    ''5::>>:DDDrT   r   Fr   r  r   )r9   rI   r   r   r  r   r  r   r  r  r   r   r   r   r   )r  r_   r5   rP   r   r  r  ra   s           r>   test_against_cramervonmisesz8TestMonteCarloHypothesisTest.test_against_cramervonmises  s     ii##I.NN#>''5::>>:	E <<

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

HOO$))DrT   	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rG   r  )	r9   rI   r   r   tukeylambdar   andersonr   critical_values)r_   r5   rP   r   r  r^   s       r>   funz?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.fun  s`    ))''	2C!!%%ac%DA~~a3H%%(@(@(CCCrT   r   )x0r  rG   r  c                 D    t        j                  |       j                  S r\   )r   r  r   )rP   r  s    r>   r  zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1d/  s    >>!Y/999rT   r   Fr   r  r   r   )r   filterRuntimeWarningr   successrP   r9   rI   r   r   r  r   r  r   significance_levelr  r?  r   r   r   r   )r  r  r^   r  supsolr_   r5   rP   r   expected_stat
expected_pr  dist_rvsra   s    ``            r>   test_against_andersonz2TestMonteCarloHypothesisTest.test_against_anderson  sO   	D
   	"CJJ~&sq/C	" {{{ EE!Hii##I.!!!#C!@>>!Y/ **003C7
	: <<y 9 = =sC  	LCJJ~&"1h#.D.3LC	L 	}5

JQtyy[A5	" 	"&	L 	Ls   #E4	'F4E>F
c                     t         j                  j                  d      }t        j                  d      }t	        ||j                  t         j
                  dd      }|j                  dk(  sJ y )Nl   IL~QH(s rG   Tr   r  g-C6?)r9   rI   r   r  r   r:   r   )r  r5   rP   ra   s       r>   test_p_never_zeroz.TestMonteCarloHypothesisTest.test_p_never_zero<  sV     ii##$78HHSMq#**bgg*.FDzzV###rT   c                    t         j                  j                  d      }|j                  d      |j                  d      f}|j                  |j                  f}d }t	        j
                  |||d      }t	        j                  |d   |d	   gd      }t        |j                  |j                         t        |j                  |j                  d
       y )N   F:fmPr  r      c                 F    t        j                  | ||      j                  S rk   r  rX   s      r>   r   zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statisticJ  s    ??1ad3===rT   rd   r#   r   r   {Gz?r   )
r9   rI   r   normalr   r   r  r   r   r   r  r5   r   r   r   ra   r  s          r>   test_against_ttest_indz3TestMonteCarloHypothesisTest.test_against_ttest_indE  s    ii##$67zzvz&

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

CJJT:rT   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
  rf  r   )r   e   )r   f   )r   g   c                 @    t        j                  |d| ij                  S )Nr$   )r   f_onewayr   )r$   r|  s     r>   r   zETestMonteCarloHypothesisTest.test_against_f_oneway.<locals>.statisticY  s    >>43d3===rT   rd   r   r$   r   r$   {Gz?r   )
r9   rI   r   r  r   r   r  r   r   r   r  s          r>   test_against_f_onewayz2TestMonteCarloHypothesisTest.test_against_f_onewayR  s    ii##$67

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

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

CJJT:rT   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 rc  c                 X    dt        j                  d      j                  |       z  S )Nr  gZd;O?)rQ  r  )r   	bernoullir   r{   r5   s    r>   r   zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvsk  s'    %044$S4QQQrT   rG   r   )r   r)   g     ?r   )
r9   rI   r   r   r   rn  r   null_distributionr   r   )r  r)   r   rP   ra   c0c1r5   s          @r>   test_finite_precision_statisticz<TestMonteCarloHypothesisTest.test_finite_precision_statisticc  s     ii##$45	R H$$QRVV1<> VVC))S]]:;VVC))S]]G-DDERxxzzb1f{Q7777rT   )#__name__
__module____qualname__r   r9   r  r  r   r  r  r6   markxslowr  parametrizer5  r  r  slowlinspacer  r   skewtestkurtosistestr  re   r  r  r  r  r  r  	fail_slowxfail_on_32bitr!  r]   rT   r>   r  r    s   D(, = @. @.D P P [[$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$;;" [[1[[ TU8 V 8rT   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   rF   r   r   r"   r   r  r   r  )r0   z3`significance` must contain floats between 0 and 1.r   significancerd   r   z`kwargs` must be a dictionaryr   )kwargsz+shape mismatch: objects cannot be broadcastr0   rE   )rF         rF   r4  rP   z`test` must be callablez(`n_resamples` must be a positive integerir(   g      %@z"`batch` must be a positive integerr,   )r9   rI   r   r   r  r  r6   r7   r8   r   r<   r)  )r  r5   testr   n_observationsr=   s         r>   r  zTestPower.test_input_validationy  s   ii##$78zz3::&!D]]:W5 	=$^<	= E]]9G4 	.$n-	.]]9G4 	>$V,n=	> .]]:W5 	7$~6	7]]:W5 	$$U#	$ H]]:W5 	=$^!<	=]]:W5 	N$^"++b!:LM	N 2]]9G4 	?$^I>	? @]]:W5 	7$r2h56	7]]:W5 	L$r2hR13	:JK	L ,]]9G4 	-$^,	- =]]:W5 	>$^=	>]]:W5 	?$^>	? 7]]:W5 	8$^37	8]]:W5 	9$^48	9 	9Y	= 	=	. 	.	> 	>	7 	7	$ 	$	= 	=	N 	N	? 	?	7 	7	L 	L	- 	-	> 	>	? 	?	8 	8	9 	9s   'N	NN#N0N=;O
.$O7O$,O1#O>"PPP%=P20P>	NN #N-0N:=O
OO!$O.1O;>PPP"%P/2P;>Qc                    t         j                  j                  d      }fdd_        d_        t        dd      }t         j                  j                  d      }t        di ||j                  dd}t        j                  d       t        j                  d       t         j                  j                  d      }d_        t        di ||j                  d	d}t        j                  d
       t        j                  d	       t         j                  j                  d      }d_        t        di ||j                  dd}t        j                  d       t        j                  d       t        |j                  |j                         t        |j                  |j                         y )Nr  c                     | j                   dk(  rdn
t        |       }t        |j                        _        xj                  dz  c_        t        j                  | d|      j                  S r  )r  rf   r!  r  r  r   r  r   )rP   r$   r  r6  s      r>   r6  z"TestPower.test_batch.<locals>.test  sS    ffks1vJ!*doo>DOLLAL$$Q5<<<rT   r   r0   r   )r6  r7  r)   r   )r   r-   r   rI  r]   )	r9   rI   r   r  r  r   r   r  r   )r  r5   r  rQ   rR   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,rT   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;   r5  r  r   r  )rP   r   r$   popmeans_expandedpopmeanss       r>   r6  z*TestPower.test_vectorization.<locals>.test  sF     "xuQQR
?S9T U$$Q(9{*.0 0rT   )r0   r   rI  r   rG   r   r  )r  r  皙?r   r2  r3  c                 6    t        j                  | |      S )Nr  )r   r  )rP   r$   alternative_i	popmean_is     r>   test2z+TestPower.test_vectorization.<locals>.test2  s!    #(#4#4Q	AN$P PrT   r1  r  r  )r   r   rc   )r9   rI   r   r   rb  r{  r   r   r  appendrp   rn   r   )r  r5   r6  nxr3  r2  ra   r  significance_inx_irE  tmprC  rD  r?  s               @@@r>   test_vectorizationzTestPower.test_vectorization  s3    ii##N3 88QH%	0 ZZ-.q"**}=!AB zz":;kk$

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

399-..	.
	. jjciioo. 			3T=rT   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   rG   )r   r0   r   )r  r@  r   r1  r  r   )r9   rI   r   r   r  integersr  rb  r   ro   r{  rn   r   )r  r5   r6  r7  r   r2  ra   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;rT   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   rG  r   r0   rI  r  r@  rA  r   )r9   rI   r   r   r   r  r  r   )r  r5   r  r3  r7  r2  ra   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2rT   N)r"  r#  r$  r  r6   r%  r(  r  rK  rO  rQ  r]   rT   r>   r/  r/  x  sP    69p [[!- !-F [[%> %>N<3rT   r/  c                      e Zd ZdZd Zd Zej                  j                  de	j                  j                  e	j                  j                  g      ej                  j                  dg d      d               Zej                  j                  de	j                  j                  e	j                  j                  g      ej                  j                  dd	 ej                  d
      dz  fdd ej                   dd
      fg      d               Zd Zej                  j'                         d        Zd Zej                  j                  dd      d        Zej                  j                  dd      d        Zej                  j                  dd      d        Zd Zej                  j5                         ej                  j                  dd      d               Zej                  j&                  ej                  j                  dd      d               Zej                  j                  dd      d        Zd Zej                  j                  dd      d        Zej                  j5                         ej                  j                  dd       d!               Z g d"g d#d$d%d&d'd(d)d*Z!g d+g d,d-d.d/d0d1d2d*Z"ej                  j5                         ej                  j                  d3e!e"f      d4               Z#ej                  j&                  ej                  j                  d5d6      d7               Z$ej                  j                  d8d9      d:        Z% e&d;      d
g f e&d      d
g d<g d=gf e&d>      d
g d<g d=dd?ggfgZ'ej                  j                  d@e'      dA        Z(ej                  jS                  d      dB        Z*yC)DTestPermutationTestr&  c                 L    t         j                  j                  d      | _        y )Nl   F )r9   rI   r   r5   )r  s    r>   setup_methodz TestPermutationTest.setup_method$  s    99(()<=rT   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 r\   r  rX   s      r>   r  z:TestPermutationTest.test_permutation_test_iv.<locals>.stat+  s    ??Aq640:::rT   z2each sample in `data` must contain two or more ...r   r   r   z6`data` must be a tuple containing at least two samples)r   r!   r"   r#   z `permutation_type` must be in...r   )permutation_typer   r   r  r'   r(   r*   r+   r,   r  r  r2   r3   r4   )r6   r7   r8   r   r<   )r  r  r=   s      r>   test_permutation_test_ivz,TestPermutationTest.test_permutation_test_iv)  s   	; G]]:W5 	5i!-t4	5 K]]:W5 	)T4(	)]]9G4 	&Q%	& /]]:W5 	Ei3TD	E 5]]:W5 	6i3T.46	6 E]]:W5 	Ki3TcJ	K >]]:W5 	Ni3TuM	N >]]:W5 	Oi3TvN	O @]]:W5 	Hi3TG	H @]]:W5 	Ii3TH	I 0]]:W5 	Oi3TvN	O A]]9G4 	Ji3TyI	J 	JW	5 	5	) 	)	& 	&	E 	E	6 	6
	K 	K	N 	N	O 	O	H 	H	I 	I	O 	O	J 	Js   J(J5K:K4K.K)(K6"LLLL)
L5(J25J?KKK&)K36L LLL&)L25L>rH   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  rf   r!  r  r  r9   r:   )rP   rY   r$   r  r   s       r>   r   z1TestPermutationTest.test_batch.<locals>.statistici  s_    ffks1vJ#&z93G3G#HI "7714(27714+@@@rT   r   r   T)r)   rX  r    r   )r-   rH   r  r   r   r   )r5   rI   r  r  r   r   r   r   )
r  rX  rH   rP   rY   r  rQ   rR   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[[$++.rT   zpermutation_type, exact_sizerZ  r   r   )r[  r~  r\  r1  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 rk   r   rX   s      r>   r   z8TestPermutationTest.test_permutations.<locals>.statistic  #    7714(27714+@@@rT   T)rX  r    r   )r)   rH   )r5   rI   r   r   r   r  r{   )	r  rX  
exact_sizerH   rP   rY   r   r  ra   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**//<rT   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 rk   r   rX   s      r>   r   zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statistic  rb  rT   Tr\  rG   r    rX  r-   r   r5   r)   r  r   )r   binomr   r   r   r   r9   infr   r   r   r  r   r5   rG  nypermutationsrP   rY   r   r   r  ra   rR   s                r>   'test_randomized_test_against_exact_bothz;TestPermutationTest.test_randomized_test_against_exact_both  s     %S*B}}R"Wb)L888JJNNN#JJNNN#!t	A #[FtY 'L '!%'iLRVVLtL}}...

DKKd;rT   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 rk   r   rX   s      r>   r   zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statistic  s    771q5t,,rT   Tr[  rG   rh  r)   r  r   )	r   r   r   r   r9   rj  r   r   r   rk  s                r>   *test_randomized_test_against_exact_samplesz>TestPermutationTest.test_randomized_test_against_exact_samples  s    
 +S,B"u|###JJNNN#JJNNN#!t	- #	[FtY 'L '!%'iLRVVLtL}}...

DKKd;rT   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rP   rY   s    r>   r  zTTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic1d  s    >>!Q'**rT   Tr[  rG   rh  r)   r  r   )r5   r   	factorialr   r   r   r   r\  r   r9   rj  r   r   r   )r  r   r5   rG  rl  rm  rP   r   r  r   r  ra   rR   rY   s                @r>   +test_randomized_test_against_exact_pairingsz?TestPermutationTest.test_randomized_test_against_exact_pairings  s     'S*B  $|333JJNNN#JJNNN#s	+  44[A	"	[FtY 'L '!%'iLRVVLtL}}...

DKKd;rT   r   r  c                    | j                   j                  dd      }| j                   j                  ddd      }t        j                  ||d      }fd	}t	        ||f|t
        j                  d
| j                         }t        |j                  |j                  | j                         t        |j                  |j                  | j                         y )Nr   r   r{   rz   rw   r   )r{   ry   rz   exact)r   r  c                 J    t        j                  | |d      j                  S r  )r   ks_2sampr   rP   rY   r   s     r>   r  z>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1d   s#    >>!QW.9;;D9ErT   r   r)   r   r5   r   )r5   r  r   r~  r   r9   rj  r   r   r   r   )r  r   rP   rY   r   r  ra   s    `     r>   test_against_ks_2sampz)TestPermutationTest.test_against_ks_2samp  s     HHOO!O,HHOOO3>>!QKgN	E 1v{+4$((D 	x'9'9		J

HOO$))DrT   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{  rw   r   r   r   r  r  r  c                 B    t        j                  | |      j                  S r\   r   ansarir   rw  s     r>   r  z<TestPermutationTest.test_against_ansari.<locals>.statistic1d      <<1%///rT   r  r   )r5   r  r   r  r   r9   rj  r   r   r   r   )	r  r   rP   rY   alternative_correspondencealternative_scipyr   r  ra   s	            r>   test_against_ansariz'TestPermutationTest.test_against_ansari  s     HHOO!O,HHOO!O, /8173>&@" 7{C<<12CD	0 1v{+6DHHF 	x'9'9		J

HOO$))DrT   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   rw   r   r   r{   ry   rH   r@  r   r  c                 F    t        j                  | ||      j                  S rk   )r   mannwhitneyur   rX   s      r>   r   z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statistic*  s    %%a6@@@rT   T)r    r)   r   r$   r5   r   )r   uniformr   r5   r  r   r9   rj  r   r   r   r   )r  r   rP   rY   r   r   ra   s          r>   test_against_mannwhitneyuz-TestPermutationTest.test_against_mannwhitneyu"  s     MM9!$((KMM9$TXXN%%aL	A 1vyT+-66{$%4885 	x'9'9		J

HOO$))DrT   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   )r{   rz   rH   rw   r   )r{   ry   rz   rH   r|  r.   c                 F    t        j                  | |d      j                  S N
asymptoticr.   )r   cramervonmises_2sampr   rw  s     r>   r  z9TestPermutationTest.test_against_cvm.<locals>.statistic1d;  s#    --a5ACCL9MrT   r   r  r   )r   r   r   r5   r  r   r9   rj  r   r   r   r   )r  rP   rY   r   r  ra   s         r>   test_against_cvmz$TestPermutationTest.test_against_cvm4  s    JJNNNBJJNNqNI--a7C	M
 1v{+4$((D 	x'9'9		J

HOO$))DrT   r$   )rd   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 r\   )r   kruskalr   r   s    r>   r  zITestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistic1dX  s    ==$'111rT   c                  :    t        j                  |  j                  S r\   )r   r  r   r  s    r>   pvalue1dzFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1d[  s    ==$'...rT   )r   r   r   )r   r   r   r  r#   Fr   r\  r    r$   r   rX  r5   r)   r   r   gQ?r   r   )r9   rI   r   r   r\  ro   r5   r   rj  r   r   r   r   )r  r$   r5   rP   rY   rl   r   r  r  r   r   x2r:  z2expected_statisticexpected_pvaluer  ra   rR   s                      r>    test_vectorized_nsamp_ptype_bothz4TestPermutationTest.test_vectorized_nsamp_ptype_bothF  sp    ii##$78JJQJ JJIJ&JJIJ&1ay	2	/  44[A	11(; __Q	*__Q	*__Q	*&r2r= R$7 $T)$1$((Dt[MbffMMkLtLtL 	'9		Jt~~DIIF

O$?

DKKd;rT   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   r1  r   r   r  r@  c                 D    t        j                  | d      j                  S Nr   r  r   wilcoxonr   )rl   s    r>   statistic_1samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1d  s    >>!8BBBrT   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ErT   c                 4    t        j                  | |      S )Nr  )r   r  r  s     r>   test_1dz:TestPermutationTest.test_against_wilcoxon.<locals>.test_1d  s    >>!QK@@rT   r   r#   Fr[  )r    r$   r   rX  r5   r)   r   r  )r   r  r   r5   r   r\  r9   rj  r   r   r   r   r   )r  r   rP   rY   r  r  r  r6  r   r  r  r  rQ   rR   s    `            r>   test_against_wilcoxonz)TestPermutationTest.test_against_wilcoxonv  s7    MM9!$((KMM9$TXXN	C	F	A //811% a[
#Q{$-dhh!vv'  1(:CdCA(:CdC 	TYYG+%DNNM		JZdii@T[[tyyArT   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   rd   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++rT   rG  r  Tr[  )r    rX  r)   r5   r   r   r   )
r5   rN  r   r   r   r9   rj  r   r   r   )	r  r   rP   r   krg   rQ  r   ra   s	            r>   test_against_binomtestz*TestPermutationTest.test_against_binomtest  s     HHa,!q&	
	, A,Ca1??1aD$$aT96?13TXX1<> 	

HOO$))DrT   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 )	Nr1  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HrT   rZ  )rX  r)   r5   r   )r5   r  r   r  r   r9   rj  r   r   r   r   )r  rP   r   r  ra   rY   s        @r>   test_against_kendalltauz+TestPermutationTest.test_against_kendalltau  s    HHOOO#Q''##Aq9	I t[:+-66txxA 	x'9'9		J

HOO$))DrT   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-..rT   l   	(yM4 r  g333333?g      ?r   rZ  )rX  r)   r   r5   r  )r9   rI   r   astypefloatr   contingencycrosstabr   rj  fisher_exactr   r   )	r  r   r   r5   rP   tabra   rR   rY   s	           @r>   test_against_fisher_exactz-TestPermutationTest.test_against_fisher_exact  s    	/ ii##$78ZZ]S ((/ZZ]T!V#c)11%8((A.q1tY+-66{#&( !!#;?

DG,rT   )r2  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rT   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?@rT   r$   Fr   rZ  r  r)   rx   r   r   r   )r5   rI   r   rankdatar   r\  r9   broadcast_arraysr   rj  r   r   r   r   )r  r$   rP   rY   rl   r   r  r  r   r   r  r  r  ra   rR   s                  r>   #test_vectorized_nsamp_ptype_samplesz7TestPermutationTest.test_vectorized_nsamp_ptype_samples  s    HHOOO+HHOOO+HHOOO+NN14(NN14(NN14(aD1ay	H	@  44[A	11(;&(;(;T(BNN ""5"5t"<H4H $T)$.q:t[MbffMMkLtLtL'9		Jt~~DIIF

O$))D

DKKd;rT   r   )r"   r   g      @r;  g?g&_?g      @gd~$I"@glu?)rP   rY   expected_lessexpected_2sidedexpected_Pr_gte_S_meanr  expected_avgexpected_std)o   k   rG   r   r  j   m   l   )	r  r  r  b   i   r  n   r  r   gd?gd?gYo5 ?g     @@@g{C@gDmFA@casec                    |d   }|d   }|d   }|d   }|d   }|d   }|d   }|d   }	d	 }
t         j                  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.

        rP   rY   r  r  r  r  r  r  c                 B    t        j                  | |      j                  S r\   r  rw  s     r>   r  z7TestPermutationTest.test_with_ties.<locals>.statistic1d9  r  rT   z$Ties preclude use of exact statisticr   )r)   r   r  Nr   g|=r   gư>)r9   testingr   r  UserWarningr   rj  r   r   r   r   r  r:   r   rf   r   r   )r  r  rP   rY   r  r  r  r  r  r  r  r  ra   rR   Sr:   rg   Pr_gte_S_means                     r>   test_with_tiesz"TestPermutationTest.test_with_ties  s   8 II!"67_-01!%&>!?N+N+	0 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 r\   )r   	spearmanrr   rw  s    r>   r  zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1dk  s    ??1a(222rT   rZ  )rX  r)   r   r   gvIh%<=r   N)r   r9   rj  r   r   r   r   )r  r   r  rP   r  r  ra   rY   s          @r>   test_against_spearmanr_in_Rz/TestPermutationTest.test_against_spearmanr_in_RQ  sa    (10/	3 t[:+-66{L 	'9		J

O%@rT   r-   )rd   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   rq   r   _batch_generator)r  r-   s     r>   test_batch_generator_ivz+TestPermutationTest.test_batch_generator_ivt  s?    ]]:-HI 	A--i?@	A 	A 	As   "AAr   rC   )r   r   rw   r~  r  ziterable, batch, expectedc                 P    t        t        j                  ||            }||k(  sJ y r\   )rq   r   r  )r  iterabler-   r   gots        r>   test_batch_generatorz(TestPermutationTest.test_batch_generator}  s'     ;//%@AhrT   c                    g d}g d}d }t        j                  ||f|dd      }|j                  |j                  |j                  }}}dt        j                  ||dz
  k\        z  t        |      z  }||cxk(  rd	k(  sJ  J y )
N)r   r   r   r   )r   r   r1  r~  c                 4    t        j                  | |      d   S rt  ru  rw  s     r>   r   zFTestPermutationTest.test_finite_precision_statistic.<locals>.statistic  s    >>!Q'**rT   FrZ  )r    rX  r   r&  gUUUUUU?)r   r   r   r   r  r9   r   rf   )	r  rP   rY   r   ra   rr   null	correct_ps	            r>   r!  z3TestPermutationTest.test_finite_precision_statistic  s    
 	+ $$aVY56@B--S5J5J46tq5y011CI=	)c)))))rT   N)+r"  r#  r$  r   rU  rY  r6   r%  r'  r9   rI   r=  r   r  r   rx  ri  rd  rn  r(  rq  ry  r  r  r  r  r&  r  r  r  r  r  r  
tie_case_1
tie_case_2r  r  r  r5  batch_generator_casesr  r,  r!  r]   rT   r>   rS  rS     s@   D>
2Jl [[^bii.C.C.0ii.C.C.E F[[/CE"/EF"/J [[^bii.C.C.0ii.C.C.E F[[;)+<7+<+<Q+?+BC/,mgmmAq.ABDE=	EF=4<2 [[< <2<: [[],LME NE& [[],LME NE* [[],LME NE"E$ [[[[VW-*< . *<\ [[[[],LM#B N #BJ [[],LME NE,E" [[],LM- N-$ [[[[VW-'< . '<V $-#/%(,8(+"*GEJ ?C#/%1,8(,"+XGJ [[[[Vj*%=>:? ? :?x [[[[;>?A	? 
A< [[Wg.A /A $Ah2.#AhIy+AB#AhIy1a&+IJL [[8244 [[1* *rT   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   rd   )r9   r   intcumsumsetr   _all_partitions_concatenatedsplitaddr;   	frozensetprodr5  rf   r   ri  r   r   )rg   ncall_partitionsr  partition_concatenatedpartitioningr^   r   s           r>    test_all_partitions_concatenatedr    s    	#&A	1BUNG"-"J"J1"M H1xx 63B@5!E1)A,!EFGH
 ww!&s1vax2  c!AB%j#a!g,? 2 3H (#^$h/ "F2s   	D18D6fun_namer   r   r   c                 V   t         j                  j                  d      j                  d      fd}fddfdd|d	d
}ddi}t        t        |       }||    }|j                  |       fd} |d|d d|  |d|dd| d } |d|d d|  |d|dd| y )Nl   r: 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~::rT   rA   )r   r5   r/   r[  )r   r5   rX  )r   r   r  r)   rG   c                     | j                   dkD  st        j                  |       sJ t        j                  | |      S r_  )r  r9   r7  r:   )rP   r$   r   s     r>   r   z,test_parameter_vectorized.<locals>.statistic  s2    vvzR^^Av666wwqt$$rT   )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rT   Fr]   )r9   rI   r   r?  r   r   )	r  r   fun_optionscommon_optionsr  optionsr   r5   r   s	          @@r>   test_parameter_vectorizedr    s    
 ))


/CZZRZ F; +13+7!917	#<E(G28'E	GK
 $S)N
%
"C(#GNN>"% 8)888)88 8)889)99rT   c                       e Zd Zd Zy)TestMonteCarloMethodc                     d}t         j                  j                  d      }t        j                  t
        |      5  t        j                  |j                  |       d d d        y # 1 sw Y   y xY w)Nz.Use of `rvs` and `rng` are mutually exclusive.ir   )r   r5   )r9   rI   r   r6   r7   r8   r   MonteCarloMethod)r  r=   r5   s      r>   test_rvs_and_random_statez.TestMonteCarloMethod.test_rvs_and_random_state  sR    Bii##H-]]:W5 	<""szzs;	< 	< 	<s   "A((A1N)r"  r#  r$  r  r]   rT   r>   r	  r	    s    <rT   r	  )Er6   numpyr9   numpy.testingr   r   r   scipy.conftestr   scipy._lib._utilr   scipy._lib._array_apir   r	   scipy._lib._array_api_no_0dr
   r   scipyr   r   scipy.optimizer   scipy.statsr   r   r   r   scipy.stats._resamplingr   r?   r%  r'  rS   rh   ru   r(  r-  r   tests_Ritemsr   tests_against_itself_1sampr   r   r   tests_against_itself_2sampr   r  r  r  r  r#  r(  r.  r;  rE  rS  rW  r^  rk  filterwarningsr  r  r  r/  rS  r  r  r	  r]   rT   r>   <module>r     s     J J / ) ; H    L L - -<8~ #AB+; , C;" #AB> C>2 #AB+D%=1(: 2 , C(:V AB#ABO C C O0 #' "
 +W]]_=C >C. (,,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s	* s	*x0* NP:P:B< <rT   