
    -iih                    $   d dl Z d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZm Z m!Z! d dl"mc m#Z#  ee           G d d                      Z$ ee           G d d                      Z% ee!           G d d                      Z& ee            G d d                      Z'd Z(ej)        *                    dg d          d             Z+ G d d          Z,dS )    N)assert_allcloseassert_equal)rng_integers)is_numpymake_xp_test_casexp_default_dtypexp_sizearray_namespace_xp_copy_to_numpy)xp_assert_closexp_assert_equal)array_api_extra)statsspecial)skip_xp_backends)root)	bootstrapmonte_carlo_testpermutation_testpowerc                   	   e Zd Z edd          d             Zd Zej                            dg d          ej                            dg d	          d
                         Z	ej                            dg d          d             Z
ej                            dg d          ej                            dg d	          ej                            dddg          d                                     Zej        j        ej                            d          ej                            dg d          d                                     Zg dZej                            de          d             Zd Zd ZddddZej        j        ej                            de                                          d                         ZdddZej        j        ej                            de                                          d                         Zej                            dg d          ej                            ddd g          ej                            d!d"d#g          d$                                     Zej                            d%          ej                            dg d          ej                            ddd g          d&                                     Zej                            dg d          d'             Zej                            dg d(          d)             Zd* Zej                            d+dd,g          d-             Zej                            d.          ej                            dg d          d/                         Zd0 Zej                            d1d2          ej                            d3d4d5g          d6                         Z ej                            d7g d8          ej                            dg d	          d9                         Z!ej                            dg d	          d:             Z"ej        j        ej                            dg d          d;                         Z#ej        j        ej        $                    d<          d=                         Z%ej                            dd>g?          d@             Z&dAS )BTestBootstrapnumpyzNumPy does not raisereasonc                     dj          }t          j        t          |          5  t	                              g d          ffd           d d d            d S # 1 swxY w Y   d S )NzWhen using array library match         c                 .                         |           S Nmeanxxps    g/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/stats/tests/test_resampling.py<lambda>z7TestBootstrap.test_bootstrap_iv_other.<locals>.<lambda>   s    "''!**     )__name__pytestraises	TypeErrorr   asarray)selfr)   messages    ` r*   test_bootstrap_iv_otherz%TestBootstrap.test_bootstrap_iv_other   s    ;bk;;]9G444 	F 	Frzz))),,.0D0D0D0DEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   *AA"%A"c                 	   |                     g d          }d}t          j        t          |          5  t	          t                      |j                   d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||                     dg          f|j                   d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||                     g d          f|j        d	           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t	          ||j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |f|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |f|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |f|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |f|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |f|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |f|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |f|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |f|j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          |f|j        d           d d d            n# 1 swxY w Y   d }t          j        t          |          5  t	          |f|j        d!"           d d d            d S # 1 swxY w Y   d S )#Nr   z(`data` must contain at least one sample.r   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)r1   r.   r/   
ValueErrorr   tupler&   r0   )r2   r)   sampler3   s       r*   test_bootstrap_ivzTestBootstrap.test_bootstrap_iv   s   III&&<]:W555 	( 	(eggrw'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( S]:W555 	: 	:vrzz1#/999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: S]:W555 	P 	Pvrzz,,,778"'$OOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P E]:W555 	: 	:fbg&9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: /]:W555 	4 	4vis3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 6]:W555 	A 	Avi4@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A B]:W555 	= 	=vie<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= B]:W555 	> 	>vif====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> @]:W555 	7 	7vi6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 @]:W555 	8 	8vi7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 (]:W555 	9 	9vi8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 T]:W555 	? 	?vi2>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? J]:W555 	9 	9via8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 A]9G444 	9 	9vii8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   "A##A'*A',CC
C+/D&&D*-D*E22E69E6F??GG'HHH4II IJ&&J*-J*K33K7:K7M  MM(NNN5OO!OP''P+.P+Q55Q9<Q9rK   )basic
percentileBCar@   r   r    r!   c           	      0   t           j                            d          }|                    ddd          }t	          |                    |          f|j        d |d|d          }t           j                            d          }t	          |                    |          f|j        d||d|          }t          |j        j	        |j        j	                   t          |j        j
        |j        j
                   t          |j        |j                   d S )Nr   rL         d   )rI   rK   random_stater@   rE   )rI   rK   r@   rE   r^   )nprandomRandomStaterandr   r1   r&   r   confidence_intervallowhighstandard_error)r2   rK   r@   r)   rQ   r(   res1res2s           r*   test_bootstrap_batchz"TestBootstrap.test_bootstrap_batchX   s    i##A&&HHRR  "**Q--)27$v&'dE E Ei##A&&"**Q--)27"V"#G G G 	04d6N6RSSS05t7O7TUUU+T-@AAAAAr,   c                 `  	
 t           j                            d          }d}                    |                    |                    
                    |                    |                    d	fd		d		
fd	}                    
j        d                   }t          |f|d          }t          
f	dd          }t          |j	        j
        |j	        j
                   t          |j	        j        |j	        j                   t          |j        |j                   d S )
Nr   r]   c                 >                         | |z
  dz  |          S )Nr!   r?   r%   r(   yr@   r)   s      r*   my_statisticz9TestBootstrap.test_bootstrap_paired.<locals>.my_statisticr   s!    77AaC!8$7///r,   c                 @    |          }|          } ||          }|S r$    )ir@   abresro   r(   rn   s        r*   my_paired_statisticz@TestBootstrap.test_bootstrap_paired.<locals>.my_paired_statisticu   s+    !A!A,q!$$CJr,   rP   T)r8   rQ   rk   )r_   r`   ra   r1   rb   arangeshaper   r   rc   rd   re   rf   )r2   rK   r)   rQ   nrv   rr   rg   rh   ro   r(   rn   s     `      @@@r*   test_bootstrap_pairedz#TestBootstrap.test_bootstrap_pairedj   s<    i##A&&JJsxx{{##JJsxx{{##	0 	0 	0 	0 	0 	0	 	 	 	 	 	 	 	 IIagaj!!!2:::!QdBBB04d6N6RSSS05t7O7TUUU+T-@AAAAAr,   r8   TFc           	         t           j                            d          }d	fd	}d}||         }|                    |          }	|                    |          }
|                    |          }                    |	                              |
                              |          }}
}	t          |	|
|f|||ddd          }|j        j        |j        j        dz   k    sJ g d}|||<   t          |          }
                                        |	|          |          }	
                                        |
|          |          }

                                        ||          |          }t          |	|
|f|||d|d          }t          |          }|                    |           
                    |j        j        |          }
                    |j        j        |          }
                    |j        |          }t#          |j        j        |           t#          |j        j        |           t#          |j        |           d S )
Nr   rk   c                                          | |                               ||          z                        ||          z   S Nr?   r%   )r(   rn   zr@   r)   s       r*   ro   z=TestBootstrap.test_bootstrap_vectorized.<locals>.my_statistic   sD    77147((277147+@+@@2771SW7CXCXXXr,   )rL   r[   r\   r]   )r8   rK   rQ   r@   rE   )r]   )r    r    r    rw   )r_   r`   ra   rb   r1   r   bootstrap_distributionry   rf   rS   broadcast_toreshapelistpoprc   rd   re   r   )r2   rK   r@   r8   r)   rQ   ro   ry   	n_samplesr(   rn   r   rg   r   rh   result_shape
ref_ci_lowref_ci_highref_ci_standard_errors       `              r*   test_bootstrap_vectorizedz'TestBootstrap.test_bootstrap_vectorized   s[    i##A&&	Y 	Y 	Y 	Y 	Y 	Y $K	HHYHHYHHY**Q--A

1a1!QLQC9 9 9+1&,v56 6 6 6 ))!..OOBJJq'22E::OOBJJq'22E::OOBJJq'22E::!QLTs< < < E{{__T%=%A<PP
ood&>&C\RR "0C\ R R04jAAA05{CCC+-BCCCCCr,   z#MemoryError with BCa observed in CIc           	         t           j                            d          }t          j                            ddd|          }d}t          j        t          |          dz
  t          j        |          t          j	        |                    }|
                    |	          \  }}|                                }	t          |                    |          f|j        d||
          }
t          di |
d|i}t          |j        j        |                    |          d           t          |j        j        |                    |          d           t          |j        |                    |	          d           |
                    t          d|                     t          di |
|dd}t          |j        j        |                    |                    |                    d           |
                    t          d|                     t          di |
|dd}t          |j        j        |                    |                    d|z
                      d           d S )Nl   )ICbX     r!     )locscalesizer^   ffffff?r    )dfr   r   )
confidence)data	statisticrE   rK   rQ   rB   gMb@?rtolga2U0*3?atolr   rE   rM   lessrB   alternativegreaterrq   )r_   r`   default_rngr   normrvstlenr&   semintervalstddictr1   r   r   rc   rd   re   rf   updateppf)r2   rK   r)   rQ   r   alphadistref_lowref_highref_seconfigru   s               r*   test_bootstrap_against_theoryz+TestBootstrap.test_bootstrap_against_theory   s^   
 i##$788z~~!14c~JJw#d))A+274==	$PPP MMUM;;BJJt,,."'t#. . .99&995999/3RZZ5H5HtTTTT/4bjj6J6JQUVVVV*BJJv,>,>TJJJJdq3???@@@MM&M5fMMMM/4

488E??33$	@ 	@ 	@ 	@ 	dq3???@@@PP&P5iPPPP/3

488AeG#4#455D	B 	B 	B 	B 	B 	Br,   ))rV   gQ7@gHzS@)rW   g\(<@g=
ףpU@)rX   gHz'@@gQV@zmethod, ref_low, ref_highc                 $   |                     g d          }t          |f|j        d|d          }t          |j        j        |                     |          d           t          |j        j        |                     |          d           d S )N)rL   r\         )@r   g+@            "   2   Q   Y   y         i@B r   )rE   rK   rQ   g{Gzt?r   )r1   r   r&   r   rc   rd   re   )r2   rK   r   r   r)   r(   ru   s          r*   test_bootstrap_against_Rz&TestBootstrap.test_bootstrap_against_R   s    " JJ ; ; ; < <bg76qQQQ/3RZZ5H5HuUUUU/4bjj6J6JQVWWWWWWr,   c                 "   |                     g d          }|                     g d          }d }t          j                            d          }t	          j        ||f|dd|          }t	          j        ||f|dd|          }t	          j        ||f|d	d|          }|                    |                    |j                            }	|                    |                    |j                            }
|                    |                    |j                            }d
}|	|z
  t          |          z  }|
|z
  t          |          z  }||z
  t          |          z  }|dk     sJ |dk    sJ t          |          dk     sJ d S )N)gbF?gp?g|Hܿgxy[e}u׿g*g_?ggi6g2?)gF?gK?g&F}/?g?g(iC?g}$ץ?g hu?gfj}!?c                 d    t          j        | |          }t          j        ||          }||z
  S r~   )r   skew)r(   rn   r@   s1s2s        r*   r   z?TestBootstrap.test_multisample_BCa_against_R.<locals>.statistic   s3    AD)))BAD)))B7Nr,   l   tgy4rV   r]   )rK   rI   rQ   rW   bcag1*g333333ÿg333333?Q?)
r1   r_   r`   r   r   r   r&   stackrc   abs)r2   r)   r(   rn   r   rQ   	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_Rz,TestBootstrap.test_multisample_BCa_against_R   s    JJ = = = > >JJ H H H I I
	 	 	 i##$677OQFIg*-38 8 8	oq!fi,/S: : :/1a&)E(+6 6 6 GGBHHY%BCCDD	ggbhh{'FGGHH''"((7#>??@@ 	  )+S^^;
#i/Y?i'Y7 E!!!!d""""8}}t######r,   c           	      >                        g d          }                     g d          }d	fd	}||g}t          j        ||          }d}d}|j        }	d}
t	          j        |||||	|
          \  }}}t          |                     d                     d S )
N)	g      $@g      ;@g      ?@g      D@g      G@g      I@g      J@g      Z@g     @b@)g      0@g      7@g      C@g     W@g     X@g     a@g     h@r   c                 b                         | |                               ||          z
  S r~   r%   )r   rn   r@   r)   s      r*   r   zHTestBootstrap.test_BCa_acceleration_against_reference.<locals>.statistic.  .    77147((277147+@+@@@r,   rk   r   r]   ge{?r   )r1   r   r   r   _resampling_bca_intervalr   )r2   r)   rn   r   r   r   ru   r@   r   theta_hat_brI   _a_hats    `           r*   'test_BCa_acceleration_against_referencez5TestBootstrap.test_BCa_acceleration_against_reference$  s     JJFFFGGJJ<<<==	A 	A 	A 	A 	A 	A 1vodI..0!/iu0;UBH H1erzz*>??@@@@@r,   i  i  zmethod, expectedc           
      *   t           j                            d          }d}d}d}t          j        dd          }t          |                                          }	d}
|                    |
|f|	          }t          |	                    |          f|j        ||d
|d|          }|j
        }|                    |d         |	k     |	|d         k     z            }||k    sJ t          j        t          |          |
|          j        }|dk    sJ d S )Ni8 r]     ?r   r    r   r   i  r   r^   r   rk   )r   rB   rE   rI   rK   r@   rQ   r   皙?)r_   r`   r   r   r   floatr&   r   r   r1   rc   count_nonzero	binomtestintpvalue)r2   rK   expectedr)   rQ   rz   rE   rB   r   	stat_truen_replicationsr   ru   cici_contains_truer   s                   r*   #test_bootstrap_against_itself_1sampz1TestBootstrap.test_bootstrap_against_itself_1samp@  s4    i##G,, zaq)))$))++&&	 xxna0sxCCD))+"$')9$/ %! ! ! $ ++RUY->9rRSuCT,UVV8++++ %5!6!6!13 339 	||||||r,   i|  iz  )rV   rW   c           
         t           j                            d          }d}d}d}d}dfd	}	t          j        dd	          }
t          j        d
d	          }t          |
                                |                                z
            }d}|
                    ||f|          }|                    ||f|          }t          	                    |          	                    |          f|	||d|d|          }|j
        }                    |d         |k     ||d         k     z            }||k    sJ t          j        t          |          ||          j        }|d
k    sJ d S )Nr   r]   x   r   r   rk   c                 j                         | |          }                     ||          }||z
  S r~   r%   )data1data2r@   mean1mean2r)   s        r*   my_statzBTestBootstrap.test_bootstrap_against_itself_2samp.<locals>.my_stat{  s7    GGEG--EGGEG--E5= r,   r    r   r     r   r   )r   rB   rE   rI   rK   r@   r^   rw   )r_   r`   ra   r   r   r   r&   r   r   r1   rc   r   r   r   r   )r2   rK   r   r)   rQ   n1n2rE   rB   r   dist1dist2r   r   r   r   ru   r   r   r   s      `                r*   #test_bootstrap_against_itself_2sampz1TestBootstrap.test_bootstrap_against_itself_2sampk  s    i##A&&	! 	! 	! 	! 	! 	! 
q***
s!,,,%**,,566	 		3#	FF		3#	FFE**BJJu,=,=>"))9$/ %%(* * * $ ++RUY->9rRSuCT,UVV8++++ %5!6!6!13 339 	||||||r,   r   r    dtypefloat32float64c           	         ddfd
}fd}t           j                            d          }|                    dd                                        }|                    dd                                        }	|                    dd                                        }
t                              |                              |	                              |
          f|d|d|d	          }t          ||	|
f|d
|d|d	          }dk    rdnd}t          |j        j	                            |j        j	                  |           t          |j        j
                            |j        j
                  |           t          |j                            |j                  |           d S )Nr   r?   c                 >     t           fd|D                       S )Nc              3   F   K   | ]}                     |           V  dS )r?   Nr%   ).0rT   r@   r)   s     r*   	<genexpr>zSTestBootstrap.test_bootstrap_vectorized_3samp.<locals>.statistic.<locals>.<genexpr>  s3      EEfrwwvDw11EEEEEEr,   sum)r@   r   r)   s   ` r*   r   z@TestBootstrap.test_bootstrap_vectorized_3samp.<locals>.statistic  s*    EEEEEEEEEEEr,   c                      | D ]}|j         dk    sJ t          j        t          d | D                                 S )Nr    c              3   >   K   | ]}|                                 V  d S r$   r%   )r  rT   s     r*   r  zVTestBootstrap.test_bootstrap_vectorized_3samp.<locals>.statistic_1d.<locals>.<genexpr>  s*      !C!CF&++--!C!C!C!C!C!Cr,   r   )ndimr_   r1   r  )r   rT   r   s     r*   statistic_1dzCTestBootstrap.test_bootstrap_vectorized_3samp.<locals>.statistic_1d  sT     ( ({a''''':c!C!Cd!C!C!CCC5QQQQr,   r7   r   Tr]   )r<   r@   rE   rK   rQ   Fr   ư>+=r   )r_   r`   ra   rb   astyper   r1   r   rc   rd   re   rf   )r2   rK   r@   r   r)   r   r
  rQ   r(   rn   r   rg   rh   r   s      ``         r*   test_bootstrap_vectorized_3sampz-TestBootstrap.test_bootstrap_vectorized_3samp  s    #$ 	F 	F 	F 	F 	F 	F 	F	R 	R 	R 	R 	R i##A&&HHQNN!!%((HHQNN!!%((HHQNN!!%(("**Q--A

1F"t$C &A/ / / !QLU"FK K K 	))ttu04

4#;#?@@t	M 	M 	M 	M05

4#;#@AA	N 	N 	N 	N+RZZ8K-L-LSWXXXXXXr,   z'Failure is not concerning; see gh-14107c           
      >   dfd	}d }t           j                            d          }|                    d          }t                              |          f|d|dd |d          }t          |f|d	|dd
|d          }	t          |j        j                            |	j        j                             t          |j        j                            |	j        j                             t          |j	                            |	j	                             d S )Nr   c                 2                         | |          S r~   r%   r(   r@   r)   s     r*   r   z@TestBootstrap.test_bootstrap_vectorized_1samp.<locals>.statistic  s    77147(((r,   c                 H    | j         dk    sJ |                     d          S Nr    r   r?   )r	  r&   r(   s    r*   r
  zCTestBootstrap.test_bootstrap_vectorized_1samp.<locals>.statistic_1d  s#    6Q;;;;66q6>>!r,   l   2 )r!   r"   Tr]   )r<   r@   rE   rI   rK   rQ   FrL   r   )
r_   r`   r   r   r1   r   rc   rd   re   rf   )
r2   rK   r@   r)   r   r
  rQ   r(   rg   rh   s
      `      r*   test_bootstrap_vectorized_1sampz-TestBootstrap.test_bootstrap_vectorized_1samp  sC   	) 	) 	) 	) 	) 	)	" 	" 	"
 i##J//JJv"**Q--)9D%(VL L L!|D%(6qJ J J04

4#;#?@@	B 	B 	B05

4#;#@AA	C 	C 	C+RZZ8K-L-LMMMMMr,   c                 :   |                     dd          }|dk    rt          j        d          5  d}t          j        t
          j        |          5  t          |g|j        |          }t          |j
        j        |                    |j                             t          |j
        j        |                    |j                             d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   nrt          |g|j        |          }t          |j
        j        |                    d                     t          |j
        j        |                    d                     t          |j        |                    d	                     d S )
N)#   g     @rX   ignore)invalidz0The BCa confidence interval cannot be calculatedr   rJ           )fullr_   errstater.   warnsr   DegenerateDataWarningr   r&   r   rc   rd   r1   nanre   rf   )r2   rK   r)   r   msgru   s         r*   test_bootstrap_degeneratez'TestBootstrap.test_bootstrap_degenerate  s   wwuf%%U??X... V VH\%"=SIII V V#THbgfEEEC#C$;$?BFASASTTT#C$;$@"**RVBTBTUUUV V V V V V V V V V V V V V VV V V V V V V V V V V V V V V THbgf===CC37F9K9KLLLC38"**V:L:LMMM*BJJrNN;;;;;s6   #C5A=CC5C"	"C5%C"	&C55C9<C9)rX   rV   rW   c           	         t           j                            d          }t          j        dd          }|                    d|          }t          |                    |          ft          j        |dt           j                            d                    }t          |ft          j        |dt           j                            d          d	
          }t          |j
        j        |                    |j
        j                             t          |j
        j        |                    |j
        j                             t          |j        |                    |j                             d S )Nl   E<1

 r!   r7   r   r]   r   i[%  rK   rE   rQ   F)rK   rE   rQ   r<   )r_   r`   r   r   r   r   r   r1   r   r   rc   rd   re   rf   )r2   rK   r)   rQ   r   r   ru   refs           r*   test_bootstrap_gh15678z$TestBootstrap.test_bootstrap_gh15678  sI    i##O44zaq)))xxSsx33D))+UZTWI11$779 9 9 FI11$77EK K K/3

3#:#>??	A 	A 	A/4

3#:#?@@	B 	B 	B*BJJs7I,J,JKKKKKr,   c           	         t           j                            d          }t          j        dd          }|                    d|          }t          j        |          }|                    |          }t          |f|j        ddt           j                            d          	          }t          |j
        j        |                    |                     t          | f|j        ddt           j                            d          	          }t          |j
        j         |j
        j                   t          |j
        j         |j
        j                   d S )
Nl   n!|'x`5 r!   r7   r   r]   r   rX   if  r#  )r_   r`   r   r   r   r   minr1   r   r   rc   rd   maxr   re   )r2   r)   rQ   r   r   true_minru   rh   s           r*   test_bootstrap_minz TestBootstrap.test_bootstrap_min  s/    i##$455zaq)))xxSsx336$<<zz$3I11$779 9 9/3RZZ5I5IJJJ4%26%SY22488: : :044d6N6STTT055t7O7STTTTTr,   additional_resamplesr   c           	      t   t           j                            d          }|                    d          }d}|}||z   }t           j                            d          }t          j        |                    |          f|j        ||dd          }t          j        |                    |          f|j        ||d	d
|          }t           j                            d          }t          j        |                    |          f|j        ||d	d
          }	t          |j        j	        |                    |	j        j	                  d           t          |j        j
        |                    |	j        j
                  d           t          |j        |                    |	j                  d           d S )Nl    ]4M r]   r   r   l   mdpi4 r   rW   )rE   rQ   rB   rK   r   rX   )rE   rQ   rB   rK   rM   r  r   )r_   r`   r   r   r   r1   r&   r   rc   rd   re   rf   )
r2   r+  r)   rQ   r(   r   r   n3ru   r$  s
             r*   test_re_bootstrapzTestBootstrap.test_re_bootstrap  s    i##$455JJCJ  !&&i##$677orzz!}}.RS/3LJ J Jorzz!}}.RS/3E/24 4 4 i##$677orzz!}}.RS/3EC C C 	/3

3#:#>??"	$ 	$ 	$ 	$ 	/4

3#:#?@@"	$ 	$ 	$ 	$ 	*BJJs7I,J,JQVWWWWWWr,   zSensitive to machine precisionc                    t           j                            d          }t          j        dd          }|                    |                    d|                    f}t          ||j        |d          }t          j	        di |d	d
i}|
                    t          d|                     t          j	        di |ddd}t          j	        di |ddd}	t          |j        j        |j        j        d           t          |	j        j        |j        j        d           |                    |j        j                  r|j        j        dk     sJ |                    |	j        j                  r|	j        j        dk    sJ t!          j        t$          d          5  t          j	        di |ddi d d d            d S # 1 swxY w Y   d S )Nl   @Qixt r!   r7   r   r]   r   rk   )r   r   rQ   r@   rB   r   r   r   r   r   r   r   r  r   z`alternative` must be one ofr   r   z	ekki-ekkirq   )r_   r`   r   r   r   r1   r   r   r   r   r   r   rc   re   rd   isinfr.   r/   rR   )
r2   rK   r)   rQ   r   r   r   r   lgs
             r*   test_bootstrap_alternativez(TestBootstrap.test_bootstrap_alternative#  s:    i##$788zaq)))

488#S8AABBD426sDDDO;;f;;s;;;dq1===>>>OPPfPtPPPPOSSfStSSSS-2A4I4N"	$ 	$ 	$ 	$-113H3L"	$ 	$ 	$ 	$xx-122Tq7L7PST7T7T7T7Txx-233V8M8RUV8V8V8V8V]:-KLLL 	? 	?O>>f>>+>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   'G

GGc                 V   d}t           j                            d          }|                    |          }t          t	          j        |                    |          |                    }t          |d                   D ]I}|d|d d f         }t          j        ||d          }t          ||                    |                     Jt          t	          j        |                    |          d|	                    }	t          |                    |	d
          |           d S )Nr"   r7   r         Zt r-  r)   rk   .r?   r!   )rI   r)   )r_   r`   r   nextr   _jackknife_resampler1   rangedeleter   r   concat)
r2   r)   ry   rQ   r(   rn   rr   slcr   y2s
             r*   test_jackknife_resamplez%TestBootstrap.test_jackknife_resample;  s
   i##J//JJEJ""0A2FFFGGuRy!! 	7 	7A CAAAI,CyAB///HCH!5!56666+1"**Q--qRPPPQQ		"2	..22222r,   array_api_strictzTest uses ... + fancy indexingrng_namera   r   c           
          t          t          j        |          } |d          } |d          }d}d}t          j                            d          }|                    |                    |                    }	t          j        |	|||          }
t          |          D ]Z}|
d|d d f         }|                    t          |d|d         |d                             }|	d|f         }t          ||           [d S )	Nl   1V rL   r6  r8  )rQ   r)   .r   rk   )
getattrr_   r`   r   r1   r   _bootstrap_resampler=  r   r   )r2   rD  r)   rng_genrng1rng2rE   ry   rQ   r(   rn   rr   r@  jsr   s                  r*   test_bootstrap_resamplez%TestBootstrap.test_bootstrap_resampleL  s    ")X..wz""wz""i##J//JJszz%(())+A{LLL{## 	+ 	+A CAAAI,CLq%)U2YGGHHBbzHC****	+ 	+r,   score)r         ?r    c                    d}t           j                            d          }|                    |          }t          |          }t	          j        |                    ||          |                    ||          d|          }d }	 |	||d          dz  }
t          ||                    |
|          d	
           d S )N)rL         l   Q,? r  rk   )r@   r)   c                 D    t          j        t          j        || |          S r$   )r_   apply_along_axisr   percentileofscore)rs   rM  r@   s      r*   vectorized_posz>TestBootstrap.test_percentile_of_score.<locals>.vectorized_posp  s    &u'>aOOOr,   r?   r]   V瞯<r   )r_   r`   r   r   r   _percentile_of_scorer1   r   )r2   rM  r@   r)   ry   rQ   r(   r   prU  p2s              r*   test_percentile_of_scorez&TestBootstrap.test_percentile_of_scoree  s     i##J//JJu $$,RZZZ-G-G-/ZZUZ-K-K24= = =	P 	P 	P ^Au2...s22::b:66UCCCCCCr,   c                 d  
 d 

fd}t          j        |          }t          j                            d          }|                    ddd          }|                    ddd          }|                    ddd          } 
||||          } |||||          }	t          ||	           d S )	Nc                 :     t           fd|D                       S )Nc              3   B   K   | ]}|                               V  d S r$   r%   )r  rT   r@   s     r*   r  zLTestBootstrap.test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>~  s/      <<Vv{{4((<<<<<<r,   r  r@   r   s   ` r*   r   z9TestBootstrap.test_vectorize_statistic.<locals>.statistic|  s&    <<<<t<<<<<<r,   c                  8    | D ]}|j         dk    sJ  | ddiS )Nr    r@   r   )r	  )r   rT   r   s     r*   r
  z<TestBootstrap.test_vectorize_statistic.<locals>.statistic_1d  s=     ( ({a'''''9d++++r,   r   r7   r   r7  r    r?   )r   _vectorize_statisticr_   r`   ra   rb   r   )r2   r@   r
  
statistic2rQ   r(   rn   r   rg   rh   r   s             @r*   test_vectorize_statisticz&TestBootstrap.test_vectorize_statisticw  s    
	= 	= 	=	, 	, 	, 	, 	, !5lCC
i##A&&HHQ1HHQ1HHQ1yAqt,,,z!Q---d#####r,   c           	         t           j                            d          }d}                     |j        |ddi          }fd}t          |f||ddd|	          }                    d
dg          }                    |j        j        j	        |k     |j        j
        j	        |k    z  d          }                    |dk              sJ                     |dk              sJ |j        j        j        dk    sJ |j        j
        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ d S )Nl   s: )r    rN  r   )r]   r]   c                                                              | |                              | |d          g          S )Nr?   r    r@   
correction)r   r&   r   )r   r@   r)   s     r*   r   z=TestBootstrap.test_vector_valued_statistic.<locals>.statistic  sI    88RWWTW55VVDtVBBD E E Er,   rk   '     )rK   r@   rE   rI   r^   r    rN  r   r?   Z   r]   r!   r]   )r!   r]   rg  )r_   r`   r   r1   normalr   r   rc   rd   Tre   allry   rf   r   )	r2   rK   r)   rQ   paramsrT   r   ru   countss	     `      r*   test_vector_valued_statisticz*TestBootstrap.test_vector_valued_statistic  s    i##J//JCJ@Z@@AA	E 	E 	E 	E 	E 	9V"$(#G G G QH%%!!3#:#>#@6#I%(%<%A%Cf%L#N'( " * * vvfl#####vvfm$$$$$&*0H<<<<&+1X====!'83333)/>AAAAAAr,   zignore::RuntimeWarningc                    t           j                            d          }d fdfd}g dg dg dg dg d	g}t          j        |          j        }t          |||d
          }t          ||d
          }t          |j        j        d         |j        j        d           t          |j        j	        d         |j        j	        d           d S )Nl   \Qc                    |                      |          }|                     |          }| |d         z
  ||d         z
  z                       |          }d|z  |                     |          |                    |          z   ||z
  dz  z   z  S )N).Nr!   )r&   var)r(   rn   r@   xmymcovs         r*   concordancezGTestBootstrap.test_vector_valued_statistic_gh17715.<locals>.concordance  s    BB9%!bm*;<BB4HHCGdaeeDkk 9R"WN JKKr,   c                 V    | |z   }| |z   }t          j         |||                    S r$   )r_   
nan_to_num)tptnfpfnr@   actualr   rw  s          r*   r   zETestBootstrap.test_vector_valued_statistic_gh17715.<locals>.statistic  s3    "WFBwH=VXt!D!DEEEr,   c                 <     g || R  t           j        df         S )N.)r_   newaxis)r@   argsr   s     r*   statistic_extradimzNTestBootstrap.test_vector_valued_statistic_gh17715.<locals>.statistic_extradim  s)    9)d)D)))"*c/::r,   )r7   r   r   r!   )r!   r    r!   r    )r   r7  r   r   )r   r7  r"   r   )r      r    r   T)rQ   r8   r   rV  r   )
r_   r`   r   arrayrl  r   r   rc   rd   re   )r2   rQ   r  r   ru   r$  rw  r   s         @@r*   $test_vector_valued_statistic_gh17715z2TestBootstrap.test_vector_valued_statistic_gh17715  sB    i##$677	L 	L 	L	F 	F 	F 	F 	F
	; 	; 	; 	; 	; 	
 x~~0c$GGGiS>>>/3A6/3%	A 	A 	A 	A/4Q7/45	B 	B 	B 	B 	B 	Br,   cupy)np_only
exceptionsc                    t           j                            d          }|                    |                    d                    }|                    |                    d                    }d }t	          j        ||f|           t	          j        |j        |j        f|d           d}t          j        t          |          5  t	          j        ||d d	d
f         f|           d d d            n# 1 swxY w Y   t	          j        ||d d	d
df         f|           t	          j        |j        |j        d
dd d	f         f|d           d S )NiF|)rL   r!   )r[   r!   c                 :    t          j        | ||          j        S r~   r   	ttest_indr   r(   rn   r@   s      r*   r   z.TestBootstrap.test_gh_20850.<locals>.statistic      ?1ad333==r,   r    r?   /Array shapes are incompatible for broadcasting.r   rL   r   )
r_   r`   r   r1   r   r   rl  r.   r/   rR   )r2   r)   rQ   r(   rn   r   r3   s          r*   test_gh_20850zTestBootstrap.test_gh_20850  s   i##J//JJszz'**++JJszz'**++	> 	> 	> 	A	***ac
IA6666 D]:W555 	7 	7OQ#2#q&	NI666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7Acrc1Q3hK()444ac!A#ss(m,ia@@@@@@s   
"C88C<?C<N)'r-   
__module____qualname__r   r4   rU   r.   markparametrizeri   r{   r   slowxfail_on_32bitr   tests_Rr   r   r   tests_against_itself_1sampitemsr   tests_against_itself_2sampr   r  r  r!  r%  r*  r/  r4  rB  rL  rZ  rb  rp  filterwarningsr  r  rq   r,   r*   r   r      s       g&<===F F >=F
99 99 99v [X'E'E'EFF[VYYY//B B 0/ GFB  [X'E'E'EFFB B GFB2 [X'E'E'EFF[VYYY//[Xe}55)D )D 65 0/ GF)DV [[ EFF[X'E'E'EFFB B GF GF B6& & &G [8'BBX X CBX,7$ 7$ 7$rA A A0 ,004)-"/ "/ [[/7==??A A# #A A #J ,/03"5 "5 [[/7==??A A, ,A A ,\ [X'E'E'EFF[VaV,,[Wy)&<==Y Y >= -, GFY8 [ IJJ[X'E'E'EFF[VaV,,N N -, GF KJN, [X'E'E'EFF< < GF< [X'E'E'EFFL L GFL"U U U  [3aY??X X @?X8 [ @AA[X'E'E'EFF? ? GF BA?,3 3 3" [!!"4)I " K K[Z-)GHH+ + IHK K+, [Wkkk22[VYYY//D D 0/ 32D  [VYYY//$ $ 0/$4 [[X'E'E'EFFB B GF B> [[ 899#B #B :9 #BL [!!$F8!DDA A EDA A Ar,   r   c            
          e Zd ZdZdefdZd Zd Zd Ze	j
        j        d             Ze	j
                            d ed	d
                    d             Ze	j
                            dd          d             Ze	j
        j        e	j
                            dd          e	j
                            d ej        ddd                    d                                     Ze	j
                            dej        ej        f          e	j
                            dd          e	j
                            d ej        ddd                    d                                     Ze	j
                            d ej        dd
                    d             Ze	j
        j        e	j
                            d ej        ddd                    d                         Ze	j
        j        e	j
                            dddg          e	j
                            dg d           d!                                     Zd" Zd# Zd$ Ze	j
                            d          e	j
                             d%          d&                         Z!dS )'TestMonteCarloHypothesisTest皙?Nc                     fdS )Nc                  B                          | di|          S )Nr^   r  r1   )r  kwdsr   rsrvs_inr)   s     r*   r+   z6TestMonteCarloHypothesisTest.get_rvs.<locals>.<lambda>  s4    RZZ0V20VQU0V0V6; &0 &= &= r,   rq   )r2   r  r  r   r)   s    ````r*   get_rvsz$TestMonteCarloHypothesisTest.get_rvs  s.    = = = = = = = 	=r,   c                     fd}|S )Nc                                          | |          }                    | |d          }| j        |         }|||z  dz  z  S )Nr?   r    re  rN  )r&   rs  ry   )r(   r@   mvrz   r)   s        r*   r   z=TestMonteCarloHypothesisTest.get_statistic.<locals>.statistic  sL    %%Aqt22AA!cz>!r,   rq   )r2   r)   r   s    ` r*   get_statisticz*TestMonteCarloHypothesisTest.get_statistic  s$    	" 	" 	" 	" 	" r,   c                 	                        g d          }d#fd	}d}                    d                              d          f}t          j        j        t          j        j        f}t          j        t          |          5  t          ||d d	           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          |t          j        j        |d	           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |d |           d d d            n# 1 swxY w Y   t          j        t          |          5                       ddgddgg          }t          |d d g|           d d d            n# 1 swxY w Y   d}t          j        t          |          5                       g dg          }t          |d d g|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        d            d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |t          j        j        |d            d d d            n# 1 swxY w Y   d!}fd"}	 t          ||j
                   d S # t          $ r/}t          |                              |          sJ Y d }~d S d }~ww xY w)$N      ?       @      @c                 2                         | |          S r~   r%   r  s     r*   statz@TestMonteCarloHypothesisTest.test_input_validation.<locals>.stat  s    77147(((r,   r  r!   r   )r"   r   r   c                     dS Nr    rq   r  s      r*   r+   zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>      1 r,   rk   r?   r=   r>   r9   r;   0`rvs` must be callable or sequence of callables.r  r  r        @c                     | S r$   rq   r  s    r*   r+   zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>      a r,   If `rvs` is a sequence...c                     | S r$   rq   r  s    r*   r+   zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>   r  r,   c                     | S r$   rq   r  s    r*   r+   zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>   r  r,   z`statistic` must be callable.)`n_resamples` must be a positive integer.rC   rD   rF   rG   rH   `alternative` must be in...r:   r   z!Signature inspection of statisticc                 j                         t          j                            |                     S )Nr-  )r1   r   r   r   )r   r)   s    r*   r   z?TestMonteCarloHypothesisTest.test_input_validation.<locals>.rvs<  s%    ::ejnn$n77888r,   r$   )r1   zerosr   r   r   r.   r/   rR   r   r0   r&   str
startswith)r2   r)   r   r  r3   tempr   es    `      r*   test_input_validationz2TestMonteCarloHypothesisTest.test_input_validation  sH    zz,,,''	) 	) 	) 	) 	) 	) D  "((6"2"23z~uz~.]:W555 	G 	GT3(<(<2FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G /]:W555 	C 	CT5:>4cBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C E]:W555 	I 	IT5:>4CHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I E]9G444 	/ 	/T4...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]9G444 	> 	>::Bx"b233DTKK#6===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> .]:W555 	E 	E::|||n--DTKK#=tDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 2]9G444 	9 	9T5:>4888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 >]:W555 	L 	LT5:>4UKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L >]:W555 	M 	MT5:>4VLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M @]:W555 	F 	FT5:>4uEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F @]:W555 	G 	GT5:>4vFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 0]:W555 	M 	MT5:>4VLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 6	9 	9 	9 	9 	9	.T300000 	. 	. 	.q66$$W-----------	.s   B))B-0B-#D  DD(#EEE?FF!$F!0G??HH'.I!!I%(I%	!J66J:=J:#LLL5#M$$M(+M(#N;;N?N?##PPP:#Q))Q-0Q-<R 
S$SSc                    fd}d}                     g d          }t                    r"t          |t          j        j        |           d S t          j        t          |          5  t          |t          j        j        |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |t          j        j        j	        d           d d d            d S # 1 swxY w Y   d S )Nc                 .                         |           S r$   r%   r'   s    r*   non_vectorized_statisticzWTestMonteCarloHypothesisTest.test_input_validation_xp.<locals>.non_vectorized_statisticD  s    771::r,   z!`statistic` must be vectorized...r  r   Fr;   )
r1   r   r   r   r   r   r.   r/   rR   r&   )r2   r)   r  r3   rT   s    `   r*   test_input_validation_xpz5TestMonteCarloHypothesisTest.test_input_validation_xpC  s   	 	 	 	 	 6LLL))B<< 	VUZ^5MNNNF]:W555 	O 	OVUZ^5MNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O]:W555 	P 	PVUZ^RWOOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps$   ,!BB B?(C44C8;C8c                 N    t           j                            d          }                    |                    d                    } fdd_        d_        |ddd}                     t          j	        j
        t           j                            d	          
          |d<   t          dddi|}t          j        d           t          j        d                                t          j	        j
        t           j                            d	          
          |d<   d_        t          dddi|}t          j        d           t          j        d                                t          j	        j
        t           j                            d	          
          |d<   d_        t          di |}t          j        d           t          j        d           t          |j        |j                   t          |j        |j                   d S )N   )p rL   r-  c                     | j         dk    rdn| j        d         }t          |j                  _        xj        dz  c_                                       | |          S r  )r	  ry   r(  
batch_sizecounterr  )r(   r@   r  r2   r   r)   s      r*   r   z:TestMonteCarloHypothesisTest.test_batch.<locals>.statisticY  sh    fkkqwqzJ#&z93G#H#HI ")4%%b))!$7777r,   r   r   T)rT   r   rE   r<   i r9  r   rI   r      r   r   r!   rq   )r_   r`   r   r1   standard_normalr  r  r  r   r   r   r   r   r   r   )	r2   r)   rQ   r(   r  rg   rh   res3r   s	   ``      @r*   
test_batchz'TestMonteCarloHypothesisTest.test_batchR  s    i##K00JJs***3344	8 	8 	8 	8 	8 	8 	8
 	 	)#49 9 ll5:>293H3H3P3PUWlXXU00a0400Y&---Y)1---ll5:>293H3H3P3PUWlXXU	11b1D11Y&+++Y)2...ll5:>293H3H3P3PUWlXXU	''$''Y&***Y)4000T[111T[11111r,   r@   r"   c                    t           j                            d          }g d}d||<   |                    d          j        }dt          |          v rdnd}t          t           |          }t          ||          }|                    ||          }	t          j	        |	d	|
          }
|                    |	|          }	| 
                    |          }|                     t          j        j        |||          }t          |	||dd|          }|                    |
j        |          }|                    |
j        |          }t#          |j        |           t#          |j        || j                   d S )Nit$ )r!   r"   r7   r]   r  64r   r   )r   r   r  )popmeanr@   r  )r   r)   Ti N  )r<   rE   r@   r   )r_   r`   r   r1   r   r  rF  r  r   ttest_1sampr  r  r   r   r   r   r   r   r   )r2   r@   r)   rQ   r   dtype_default	dtype_strdtype_npr   r(   r   r   r   ru   ref_statistic
ref_pvalues                   r*   test_axis_dtypez,TestMonteCarloHypothesisTest.test_axis_dtypex  sq    i##G,,yyT
 

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

8#5U
CCZZuZ==
}555
JTY??????r,   r   )	two-sidedr   r   c                 (   t           j                            d          }|                    d          }t	          j        |d|          }|                    |          }|                     |          }|                     t          j	        j
        ||          }t          ||||          }t          |j        |                    |j                             t          |j        |                    |j                  | j                   d S )N)rQ  r-  r  r  r9  r   )r_   r`   r   r  r   r  r1   r  r  r   r   r   r   r   r   r   )	r2   r   r)   rQ   r(   r$  r   r   ru   s	            r*   test_alternativez-TestMonteCarloHypothesisTest.test_alternative  s     i##H--R((2;???JJqMM&&r**	ll5:>32l66q#ykJJJrzz#-'@'@AAA
BJJsz$:$:KKKKKKr,   )r   r   rs   g      rN  r   c                 2   t           j                            d          }t          j                            |d|          }t          j        |t          j        j                  }fd}| 	                    t          j        j        |          }t          |||dd          }t          |j        |j                   d	k    r#t          |j        |j        | j        
           d S dk    r&t          d|j        z
  |j        | j        
           d S d S )Nr  rQ  rs   r   r^   r  c                 \    t          j        | t           j        j        d          j        S )Nasymp)moder   )r   ks_1sampr   cdfr   )r(   r   s    r*   statistic1dzGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1d  s-    >!UZ^'.9; ; ;;DEr,   r   FrE   r<   r   r   r   r   r    )r_   r`   r   r   skewnormr   r  r   r  r  r   r   r   r   r   )	r2   r   rs   rQ   r(   r   r  norm_rvsru   s	    `       r*   test_against_ks_1sampz2TestMonteCarloHypothesisTest.test_against_ks_1samp  s$   
 i##H--N#>>>!UZ^MMM	E 	E 	E 	E 	E <<
44q(K+/E+68 8 8 	x'9:::)##CJdiHHHHHHF""AcjL(/	JJJJJJ #"r,   hypotestr   r   r  r:  r!   c                    t           j                            d          }t          j                            |d|          } ||          }fd}|                     t          j        j        |          }t          |||d|          }	t          |	j
        |j
                   t          |	j        |j        | j                   d S )	Ni	   r  r  c                 (     | |          j         S r~   )r   )r(   r@   r  s     r*   r   zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statistic  s    8AD)))33r,   Tr<   r   r   )r_   r`   r   r   r  r   r  r   r   r   r   r   r   )
r2   r  r   rs   rQ   r(   r   r   r  ru   s
    `        r*   test_against_normality_testsz9TestMonteCarloHypothesisTest.test_against_normality_tests  s    
 i##H--N3??8A;777	4 	4 	4 	4 	4 <<
44q(I$+68 8 8 	x'9:::
HO$)DDDDDDr,   c                    t           j                            d          }t          j                            |d|          }t          j        |          }d }|                     t          j        j        |          }t          |||dd          }t          |j        |j                   t          |j        |j        | j                   d S )	Ni!M r  r  c                 8    t          j        | |          j        S r~   )r   
normaltestr   )r(   r@   s     r*   r   zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statistic  s    #AD111;;r,   Tr   r  r   )r_   r`   r   r   r  r   r  r  r   r   r   r   r   r   )r2   rs   rQ   r(   r   r   r  ru   s           r*   test_against_normaltestz4TestMonteCarloHypothesisTest.test_against_normaltest  s     i##H--N3??#A&&	< 	< 	< <<
44q(I$+46 6 6 	x'9:::
HO$)DDDDDDr,   c                    t           j                            d          }t          j                            |d|          }t          j        |t          j        j                  }d }| 	                    t          j        j        |          }t          |||ddd          }t          |j        |j                   t          |j        |j        | j        	           d S )
NirQ  r  c                 T    t          j        | t           j        j                  j        S r$   )r   cramervonmisesr   r  r   r  s    r*   r  zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1d  s    '5:>::DDr,   r   Fr   r  r   )r_   r`   r   r   r  r   r  r   r  r  r   r   r   r   r   )r2   rs   rQ   r(   r   r  r  ru   s           r*   test_against_cramervonmisesz8TestMonteCarloHypothesisTest.test_against_cramervonmises  s     i##I..N#>>'5:>::	E 	E 	E <<
44q(K+/E+46 6 6 	x'9:::
HO$)DDDDDDr,   	dist_namer   logistictarget_statistic)333333?gffffff?g?c           	      <   fd}t          j                    5  t          j        dt                     t	          |d          }d d d            n# 1 swxY w Y   |j        sJ |j        d         }t          j        	                    d          }t          j                            |d|          }t          j        |d	          }|j        }	|j        }
fd
}|                     t#          t                    j        |          }t          j                    5  t          j        dt                     t%          |||ddd          }d d d            n# 1 swxY w Y   t'          |j        |	           t'          |j        |
d| j        z             d S )Nc                     t           j                            d          }t          j                            | d|          }t          j        |d          }|j        z
  S )Nxr]   r   interpolaterJ   )r_   r`   r   r   tukeylambdar   andersonr   )rs   rQ   r(   r   r  r   s       r*   funz?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.fun	  sZ    )''	22C!%%ac%DDA~a=IIIH%(888r,   r  r   )x0r  r]   r   r  rJ   c                 <    t          j        | d          j        S )Nr  rJ   )r   r  r   )r(   r  s    r*   r  zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1d  s    >!Y}EEEOOr,   r   Fr   r  r!   r   )warningscatch_warningssimplefilterRuntimeWarningr   successr(   r_   r`   r   r   r  r   r  r   r   r  rF  r   r   r   )r2   r  r   r  solrs   rQ   r(   r   expected_stat
expected_pr  dist_rvsru   s    ``           r*   test_against_andersonz2TestMonteCarloHypothesisTest.test_against_anderson   sB   	9 	9 	9 	9 	9 	9
 $&& 	" 	"!(N;;;sq///C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" { E!Hi##I..!!!#C!@@>!Y}EEE *_
	P 	P 	P 	P 	P <<y 9 9 =sCC$&& 	L 	L!(N;;;"1h#.D.3L L LC	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	}555
JQty[AAAAAAs#   ,AAA!0EE!$E!c                     t           j                            d          }t          j        d          }t	          ||j        t           j        dd          }|j        dk    sJ d S )Nl   IL~QH(s r]   Tr   r  g-C6?)r_   r`   r   r  r   r&   r   )r2   rQ   r(   ru   s       r*   test_p_never_zeroz.TestMonteCarloHypothesisTest.test_p_never_zero*  sf     i##$788HSMMq#*bg*.FD D DzV######r,   c                    t           j                            d          }|                    d          |                    d          f}|j        |j        f}d }t	          j        |||d          }t	          j        |d         |d	         gd          }t          |j        |j                   t          |j	        |j	        d
           d S )N   F:fmPr  r-     c                 :    t          j        | ||          j        S r~   r  r  s      r*   r   zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statistic8  r  r,   rk   r?   r   r    {Gz?r   )
r_   r`   r   rk  r   r   r  r   r   r   r2   rQ   r   r   r   ru   r$  s          r*   test_against_ttest_indz3TestMonteCarloHypothesisTest.test_against_ttest_ind3  s    i##$677zzvz&&


(:(::j#*$	> 	> 	> $T3	CCCod1gQyr:::s}555
CJT::::::r,   c                    t           j                            d          }|                    d          |                    d          |                    d          |                    d          f}|j        |j        |j        |j        f}d }t	          j        |||dd	
          }t	          j        |ddi}t          |j        |j                   t          |j	        |j	        d           d S )Nr  rj  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>.statisticG  s    >43d33==r,   rk   r   r@   r   r@   {Gz?r   )
r_   r`   r   rk  r   r   r$  r   r   r   r  s          r*   test_against_f_onewayz2TestMonteCarloHypothesisTest.test_against_f_oneway@  s    i##$677

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


))3::8:+D+DFj#*cj#*<	> 	> 	> $T3	1:< < <nd,,,s}555
CJT::::::r,   z2Statistic may not depend on sample order on 32-bitc                 z   t           j                            d          d}fd} |d          }t          j        ||t           j        d|          }t          j        |j        |j        k              }t          j        |j        |j        dz  k              }||k    sJ |j	        |dz   |dz   z  k    sJ d S )	Nl   U5<H rg  c                 ^    dt          j        d                              |           z  S )Nr  gZd;O?)rX  r   )r   	bernoullir   r   rQ   s    r*   r   zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvsY  s.    %00044$S4QQQQr,   r]   r   )r   rE   g     ?r    )
r_   r`   r   r   r   rs  r  null_distributionr   r   )r2   rE   r   r(   ru   c0c1rQ   s          @r*   test_finite_precision_statisticz<TestMonteCarloHypothesisTest.test_finite_precision_statisticQ  s     i##$455	R 	R 	R 	R 	R CHH$QRV1<> > > VC)S]:;;VC)S]G-DDEERxxxxzb1f{Q7777777r,   )"r-   r  r  r   r_   r  r  r  r  r.   r  xslowr  r  r=  r  r  r  linspacer  r   skewtestkurtosistestr  rx   r  r  r  r  r  r'  	fail_slowr  r/  rq   r,   r*   r  r    s`       D(, = = = =  @. @. @.DP P P [#2 #2 #2J [VUU2q\\22@ @ 32@@ [],LMML L NML& [[],?@@[S+"+dC";";<<K K =< A@ K, [Z%.%:L)MNN[],LMM[S+"+b!Q"7"788E E 98 NM ONE" [S)")B"2"233E E 43E" [[S+"+dC";";<<E E =< E$ [[[6:*>??[/AA%B %B BA @? %BN$ $ $; ; ;; ; ;" [1[ TUU8 8 VU 8 8 8r,   r  c                   T   e Zd ZdddZd Zej        j        d             Zej        j        d             Z	ej        
                    dg d	          d
             Zej        
                    dd          ej        
                    dg d	          d                         ZdS )	TestPowerNr  c                <    t                    nfdS )Nc                 Z                                             |                     S )Nr-  r  )r1   rk  )r   r   rQ   r)   s    r*   r+   z%TestPower.xp_normal.<locals>.<lambda>j  s%    BJJszztz'<'<EJJJ r,   )r   )r2   rQ   r)   r   s    ```r*   	xp_normalzTestPower.xp_normalh  s1    (- $$$5JJJJJJJr,   c                 
   t           j                            d          }t          j        }|                     ||          |                     ||          f}|                    d          |                    d          f}d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  t          |d |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||                     ||          d
f|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||                     ||          f|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||||                    ddd                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   d}t          j        t          t          f|          5  t          |||                    ddg          |                    g d          f           d d d            n# 1 swxY w Y   t          j        t          t          f|          5  t          |||                    ddg          |                    ddg          fd|                    g d          i           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ||           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |||d           d d d            n# 1 swxY w Y   d }t          j        t          |          5  t          |||d!           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |||d!           d d d            d S # 1 swxY w Y   d S )"Nl   yB0 1 r9  rL   r\   r9   r   r>   r;   r  r:   r  )rL   z3`significance` must contain floats between 0 and 1.r!   significancerk   r    r   z`kwargs` must be a dictionaryr   )kwargsz6not be broadcast|Chunks do not add|Incompatible shapesr[   )r\         r>  r(   z`test` must be callablez(`n_resamples` must be a positive integerirD   g      %@z"`batch` must be a positive integerrH   )r_   r`   r   r   r  r9  r1   r.   r/   rR   r   r0   r1  RuntimeError)r2   r)   rQ   testr   n_observationsr3   s          r*   r  zTestPower.test_input_validationl  s	   i##$788~~cb~))4>>#">+E+EF**R.."**R..9D]:W555 	= 	=$^<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= E]9G444 	. 	.$n---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]9G444 	N 	N$33V<nMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N .]:W555 	G 	G$335~FFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G]:W555 	$ 	$$U###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ H]:W555 	= 	=$^!<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=]:W555 	R 	R$^"++b!R:P:PQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 2]9G444 	? 	?$^I>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? K]J5WEEE 	O 	O$bjj"b22BJJ|||4L4LMNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O]J5WEEE 	7 	7$bjj"b22BJJBx4H4HIrzz)))4457 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 ,]9G444 	- 	-$^,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- =]:W555 	> 	>$^====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]:W555 	? 	?$^>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 7]:W555 	8 	8$^37777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]:W555 	9 	9$^48888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s  !CCC)DDD-)E""E&)E&
(F>>GG$HH	H*I

II0)J%%J),J)K--K14K1>M&&M*-M*AO66O:=O:P<<Q Q $RRR*S

SS2TTT8UU Uc                 x   t           j                            d          }fdd_        d_        t                              d          d          }t           j                            d          }t          di ||                     |          dd	}j        dk    sJ j        dk    sJ t           j                            d          }d_        t          di ||                     |          d
d	}j        dk    sJ j        d
k    sJ t           j                            d          }d_        t          di ||                     |          dd	}j        dk    sJ j        dk    sJ t          |j        |j                   t          |j        |j                   d S )Nr  c                     | j         dk    rdn| j        d         }t          |j                  _        xj        dz  c_        t          j        |                     d          |          j        S )Nr    r   r  r?   )	r	  ry   r(  r  r  r   r  r1   r   )r(   r@   r  rA  r)   s      r*   rA  z"TestPower.test_batch.<locals>.test  sd    fkkqwqzJ!*do>>DOLLALL$Q

2TBBBIIr,   r   rL   r   )rA  rB  rE   r9  r    )r   rI   r   rP  rq   )
r_   r`   r   r  r  r   r1   r   r9  r   )r2   r)   rQ   r  rg   rh   r  rA  s    `     @r*   r  zTestPower.test_batch  s    i##K00	J 	J 	J 	J 	J 	J
 #%::b>> $& & & i##K00EEtE!;!;1EEEE|t####!####i##K00FFtF!;!;2FFFF|r!!!!"$$$$i##K00HHtH!;!;4HHHH|q    $&&&&
DJ///
DJ/////r,   c                    t           j                            d          }dddd|                    ddg          dfd		}|                    g d
          d d |j        f         }d|                    g d          i}|                    g d          }t          j        ||                     ||          |||          }g }|D ]}	t          |j	        d                   D ]}
||
df         }|d         D ]vt          j	        d                   D ]Y}|         dfd	}t          j        ||                     ||          ||	          }|
                    |j                   Zw|                    |                    |          |j        j	                  }t          |j        |dd           d S )Nl   x7'\r   r  r   )rk   r   r    r   皙?rk   c           
          t          j        t          t          d| j        dz                                 }t          |                   }t          j        | |||          S )Nr    r?   r   r@   )xpxexpand_dimsrS   r=  r	  r   r   r  )r(   r   r@   popmeans_expandedalternativespopmeanss       r*   rA  z*TestPower.test_vectorization.<locals>.test  sp     #5:5AFQJ;O;O5P5P!R !R !R&s;'7'78K$Q(9{*.0 0 0 0r,   )rL   r   rP  r   r]   r   )r&  r  皙?r   r9  r<  r=  .c           	      Z    t          j        | |t                                       S )Nr%  )r   r  r   )r(   r@   alternative_irL  	popmean_js     r*   test2z+TestPower.test_vectorization.<locals>.test2  s7    #(#4Q	,8]9K9K,L$N $N $N Nr,   r;  r  r&  )r   r   rw   )r_   r`   r   r1   r  r   r   r9  r=  ry   appendr   r   r   )r2   r)   rQ   rA  nxr=  r<  ru   r$  significance_irr   nx_ijrS  tmprQ  rL  rR  rM  s                  @@@@r*   test_vectorizationzTestPower.test_vectorization  s@    i##N33"ki@@ ::q#h''	0 	0 	0 	0 	0 	0 	0 ZZ---..qqq"*}=JJJ!7!78 zz":":":;;k$sr : :B'3FD D D * 	. 	.N28A;'' . .!S&z%+M%: 	. 	.M"8>!#455 . .$,QK	N N N N N N N N $k%1K1KT7EG G G

39----.	.. jj#	88 		3T======r,   T)r  	jax.numpyz
dask.arraycpu_onlyr  c                 N   t           j                            d          }t          j        }|                    |                    ddd                    |                    |                    ddd                    f}|                     ||          |                     ||          f}|                    g d          }t          j        ||||          }|	                    |d d |j
        f         |j        j                  }t          |j        |d	           d S )
N   &( rL   r]   r-  r9  )r&  rN  r   r;  r&  r   )r_   r`   r   r   r  r1   integersr9  r   r   r  ry   r   )r2   r)   rQ   rA  rB  r   r<  ru   s           r*   test_ttest_ind_nullzTestPower.test_ttest_ind_null  s   
 i##O44**S\\"c\%E%EFF**S\\"c\%E%EFFHnnSRn(($...*D*DDzz"3"3"344k$^,OOO|AAArzM'BCIOTT	<d;;;;;;r,   rC  z+currently combines integer and float arraysr   c                    t           j                            d          }g dg dgg dg dgg}d|                    g d          i}|                    dgd	gg          }|                    d
dg          }t	          j        t          j        |                     ||          |||          }t          |j        |                    |          d
           d S )Nr_  )gv?g]NbJ?g6;?)gOt]?g7gLڷ?g0Dҗ?)gVL[?g;c?g.H&?)g#*3)?glk?g5i ?r  )r   rN  r   rL   rP  r&  rN  r9  rO  r   )	r_   r`   r   r1   r   r   r  r9  r   )r2   r)   rQ   r$  r=  rB  r<  ru   s           r*   test_ttest_1samp_powerz TestPower.test_ttest_1samp_power  s     i##O44 544444644444467
 RZZ889bTB4L11zz4,//k%+T^^CB^-G-G'3FD D D	2::c??>>>>>>r,   )r-   r  r  r9  r  r.   r  r  r  rZ  r   ra  rc  rq   r,   r*   r6  r6  f  s?       *. K K K K K79 79 79r [#0 #0 #0J [*> *> *>X [!!4-P-P-P " R R< <R R< [!!"4)V " X X[!!4-P-P-P " R R? ?R RX X? ? ?r,   r6  c                   
   e Zd ZdZd Zd Zej                            de	j
        j        e	j
        j        g          ej                            dg d          d                         Zej                            de	j
        j        e	j
        j        g          ej                            dd	 ej        d
          dz  fdd ej        dd
          fg          d                         Zd Zej                                        d             Zej                            dddg          d             Zej                            d          ej                            dd          d                         Zej                            d          ej                            dd          d                         Z edd           ed          ej                            dd          d                                     Z edd           ed           ed           d!                                     Z edd"           ed          ej                            d#d$          d%                                     Zej                            d          ej                            dd          d&                         Zej                            dd          d'             Zej                            d          d(             Zej                            dd          d)             Zej                                         ej                            d#d*          d+                         Z!g d,g d-d.d/d0d1d2d3d4Z"g d5g d6d7d8d9d:d;d<d4Z#ej                            d          ej                                         ej                            d=e"e#f          d>                                     Z$ej        j        ej                            d?d@          ej                            dddg          ej                            d          dA                                                 Z%ej                            dBdC          dD             Z& e'dE          d
g f e'd          d
g dFg dGgf e'dH          d
g dFg dGddIggfgZ(ej                            dJe(          dK             Z)ej        *                    d          ej                            dddg          dL                         Z+dMS )NTestPermutationTestr  c                 N    t           j                            d          | _        d S )Nl   F )r_   r`   r   rQ   )r2   s    r*   setup_methodz TestPermutationTest.setup_method'  s    9(()<==r,   c                 :   d }|                     g d          |                     g d          f}d}t          j        t          |          5  t	          |d         |                     dg          f|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          d|           d d d            n# 1 swxY w Y   t          j        t
          |          5  t	          d|           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  t	          ||d
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||d
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t	          ||d           d d d            d S # 1 swxY w Y   d S )Nc                 :    t          j        | |f|          j        S r$   r  r  s      r*   r  z:TestPermutationTest.test_permutation_test_iv.<locals>.stat-  s    ?Aq6400::r,   r   z2each sample in `data` must contain two or more ...r   r   z6`data` must be a tuple containing at least two samples)r    r    r=   r>   r?   z `permutation_type` must be in...r:   permutation_typer9   r;   r  rC   rD   rF   rG   rH   r  r  rN   rO   rP   )r1   r.   r/   rR   r   r0   )r2   r)   r  r   r3   s        r*   test_permutation_test_ivz,TestPermutationTest.test_permutation_test_iv+  s   	; 	; 	; 

999%%rzz)))'<'<=F]:W555 	? 	?d1grzz1#7>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? K]:W555 	) 	)T4(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)]9G444 	& 	&Q%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& /]:W555 	3 	3T4c2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 5]:W555 	6 	6T4.46 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 E]:W555 	9 	9T4C8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 >]:W555 	< 	<T4U;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< >]:W555 	= 	=T4V<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= @]:W555 	6 	6T4u5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 @]:W555 	7 	7T4v6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 0]:W555 	= 	=T4V<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= A]9G444 	8 	8T4Y7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   -BBB0CCC3DDD8EEE?FF"%F"G%%G),G)H,,H03H0I33I7:I7J::J>J>"LLL)MMM0NNNr^   rk  )pairingssamplesindependentc                   
                      | j                            d                    }                     | j                            d                    }
fd
d
_        d
_        d|dd}t          j        ||f
fd |d          d|}
j        d	k    sJ 
j        dk    sJ d
_        t          j        ||f
fd
 |d          d|}
j        dk    sJ 
j        d
k    sJ d
_        t          j        ||f
fd |d          d|}	
j        dk    sJ 
j        dk    sJ t          |j        |	j                   t          |j        |	j                   d S )NrL   c                     | j         dk    rdn| j        d         }t          |j                  _        xj        dz  c_                            | |                              ||          z
  S r  )r	  ry   r(  r  r  r&   )r(   rn   r@   r  r   r)   s       r*   r   z1TestPermutationTest.test_batch.<locals>.statisticm  sp    fkkqwqzJ#&z93G#H#HI "77147((277147+@+@@@r,   r   r   T)rE   rk  r<   r    )rI   r^   r  r   r   r!   )	r1   rQ   r`   r  r  r   r   r   r   )r2   rk  r^   r)   r(   rn   r  rg   rh   r  r   s      `      @r*   r  zTestPermutationTest.test_batchc  s    JJtxr**++JJtxr**++	A 	A 	A 	A 	A 	A
 	 	#9I"$ $%q!fi Lq3?<??L LFJL L D((((#q((((	%q!fi Lr3?<??L LFJL L B&&&&#r))))	%q!fi Lt3?<??L LFJL L A%%%%#t++++T[111T[11111r,   zpermutation_type, exact_sizerm  r"   r!   )rn  r  ro  r7  c                                         | j                            d                    }                     | j                            d                    }fd}|dd}t          j        ||f|fd |d          d|}	t          |	j                  dk    sJ t          j        ||f|fi |}	t          |	j                  |k    sJ d S )Nr"   c                 b                         | |                               ||          z
  S r~   r%   rm   s      r*   r   z8TestPermutationTest.test_permutations.<locals>.statistic  r   r,   T)rk  r<   r   )rE   r^   )r1   rQ   r`   r   r   r	   r,  )
r2   rk  
exact_sizer^   r)   r(   rn   r   r  ru   s
       `     r*   test_permutationsz%TestPermutationTest.test_permutations  s    JJtxq))**JJtxq))**	A 	A 	A 	A 	A %5"$ $$aVY KA2>,q//K KEIK Ks,--2222$aVY??$??s,--;;;;;;r,   c                    d\  }}d\  }}}t          j        ||z   |          |k    sJ t          j                            d          }                    |                    |                    }                    |                    |                    }||f}	fd}
ddd||d	}t          |	|
fd
|i|}t          |	|
fd
j        i|}|j	        |j	        k    sJ t          |j        |j        d           d S )N)r   r   )r  	   i]     U r-  c                 b                         | |                               ||          z
  S r~   r%   rm   s      r*   r   zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statistic  r   r,   Tro  r]   r<   rk  rI   r   rQ   rE   r&  r   )r   binomr_   r`   r   r1   r  r   infr   r   r   r2   r)   r   rQ   rU  nypermutationsr(   rn   r   r   r  ru   rh   s    `            r*   'test_randomized_test_against_exact_bothz;TestPermutationTest.test_randomized_test_against_exact_both  sF    %S*B}R"Wb))L8888i##J//JJs***3344JJs***3344!t	A 	A 	A 	A 	A #[F FtYQQLQDQQiLLRVLtLL}....
DKd;;;;;;r,   c                    d\  }}d\  }}}d|z  |k    sJ t           j                            d          }                    |                    |                    }                    |                    |                    }||f}	fd}
ddd	||d
}t          |	|
fd|i|}t          |	|
fdj        i|}|j        |j        k    sJ t          |j	        |j	        d           d S )N)r   N)r   r   i }  r!   rx  r-  c                 8                         | |z
  |          S r~   r%   rm   s      r*   r   zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statistic  s    771q5t7,,,r,   Trn  r]   rz  rE   r&  r   )
r_   r`   r   r1   r  r   r|  r   r   r   r}  s    `            r*   *test_randomized_test_against_exact_samplesz>TestPermutationTest.test_randomized_test_against_exact_samples  s5   
 +S,B"u|####i##J//JJs***3344JJs***3344!t	- 	- 	- 	- 	- #	[F FtYQQLQDQQiLLRVLtLL}....
DKd;;;;;;r,   Tr  r[  r\  c                    d| j         }}d\  }}}t          j        |          |k    sJ t          j                            d          }|                    |                    |                    }|                    |                    |                    |g}fd}	ddd||d	}
t          ||	fd
|i|
}t          ||	fd
|j	        i|
}|j
        |j
        k    sJ t          |j        |j        d           d S )Nr  )r  r  i@  rx  r-  c                 <    t          j        | |          j        S r~   )r   pearsonrr   )r(   r@   rn   s     r*   r   zRTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic  s    >!QT222<<r,   Trn  r]   rz  rE   r&  r   )rQ   r   	factorialr_   r`   r   r1   r  r   r|  r   r   r   )r2   r)   r   rQ   rU  r~  r  r(   r   r   r  ru   rh   rn   s                @r*   +test_randomized_test_against_exact_pairingsz?TestPermutationTest.test_randomized_test_against_exact_pairings  s;   
 'S*B $$|3333i##J//JJs***3344JJs***3344s	= 	= 	= 	= 	= #	[F FtYQQLQDQQiLLRVLtLL}....
DKd;;;;;;r,   )
eager_onlyr   r  c                 &   | j                             dd          }| j                             ddd          }t          j        ||d          }fd	}                    |                              |          }}t          ||f|t          j        d
| j                   }t          |j	                            |j	                  | j
                   t          |j                            |j                  | j
                   d S )Nr7   r    r   r   r   r"   )r   r   r   exact)r   r  c                     t          |           t          |          }} t          j        | ||d          }                    |j                  }|j        dk    r|d         n|S )Nr  )r@   r  r   r   rq   )r   r   ks_2sampr1   r   r	  )r(   rn   r@   ru   r   r)   s       r*   r   z<TestPermutationTest.test_against_ks_2samp.<locals>.statistic  sb    $Q''):1)=)=qA.ADwKXXXC**S]++C!h!mm3r774r,   r   rE   r   rQ   r   )rQ   rk  r   r  r1   r   r_   r|  r   r   r   r   r2   r   r)   r(   rn   r   r   ru   s    ``     r*   test_against_ks_2sampz)TestPermutationTest.test_against_ks_2samp  s    HOO!O,,HOOO33>!QKgNNN	5 	5 	5 	5 	5 	5 zz!}}bjjmm11vybf+4$(D D D 	rzz(2D'E'EDIVVVV
BJJx$?$?diPPPPPPr,   c                 :   | j                             dd          }| j                             dd          }dddd	}||         }t          j        |||
          }fd}                    |                              |          }}t          ||f|t          j        || j                   }	t          |	j	                            |j	                  | j
                   t          |	j                            |j                  | j
                   d S )Nr7   r    r  r   r"   r   r   r  r  r  c                     t          |           t          |          }} t          j        | ||          }                    |j                  }|j        dk    r|d         n|S Nr?   r   rq   r   r   ansarir1   r   r	  r(   rn   r@   ru   r)   s       r*   r   z:TestPermutationTest.test_against_ansari.<locals>.statistic!  ^    $Q''):1)=)=qA,q!$///C**S]++C!h!mm3r774r,   r  r   )rQ   rk  r   r  r1   r   r_   r|  r   r   r   r   )
r2   r   r)   r(   rn   alternative_correspondencealternative_scipyr   r   ru   s
     `       r*   test_against_ansariz'TestPermutationTest.test_against_ansari  s*    HOO!O,,HOO!O,, /8173>&@ &@" 7{C<12CDDD	5 	5 	5 	5 	5 zz!}}bjjmm11vybf+6DHF F F 	rzz(2D'E'EDIVVVV
BJJx$?$?diPPPPPPr,   zneeds mannwhitneyur   c           	      @   t           j                            dd| j                  }t           j                            dd| j                  }t          j        ||d|          }d }|                    |          |                    |          }}t          ||f|d|j        |d| j        	          }t          |j	        |                    |j	                  | j
        
           t          |j        |                    |j                  | j
        
           d S )N)r"   r   r!   r   r   r   r^   rN  r    r%  c                 <    t          j        | ||d          j        S N
asymptotic)r@   rK   )r   mannwhitneyur   r  s      r*   r   z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statistic8  s    %alKKKUUr,   T)r<   rE   r   r@   rQ   r   )r   uniformr   rQ   r  r1   r   r|  r   r   r   r   r  s           r*   test_against_mannwhitneyuz-TestPermutationTest.test_against_mannwhitneyu/  s    M9!$(KKM9$TXNN%aLLL	V 	V 	V zz!}}bjjmm11vyT+-6{$%485 5 5 	rzz(2D'E'EDIVVVV
BJJx$?$?diPPPPPPr,   zneeds cramervonmises_2samp)r]  c                 F   t           j                            dd| j                  }t           j                            ddd| j                  }t          j        ||d          }d	 }|                    |          |                    |          }}t          ||f|t          j        d
| j                  }t          |j
        |                    |j
                  | j                   t          |j        |                    |j                  | j                   d S )Nr7   r    )r   r   r^   r   r"   )r   r   r   r^   r  rJ   c                 @    t          j        | ||d          }|j        S r  )r   cramervonmises_2sampr   )r(   rn   r@   ru   s       r*   r   z7TestPermutationTest.test_against_cvm.<locals>.statisticL  s#    ,Q\RRRC= r,   r   r  r   )r   r   r   rQ   r  r1   r   r_   r|  r   r   r   r   )r2   r)   r(   rn   r   r   ru   s          r*   test_against_cvmz$TestPermutationTest.test_against_cvmC  s    JNNNBBJNNqNII-a7CCC	! 	! 	!
 zz!}}bjjmm11vybf+4$(D D D 	rzz(2D'E'EDIVVVV
BJJx$?$?diPPPPPPr,   zneeds kruskalr@   )rk   r!   c                    t           j                            d          }|                    d          }|                    d          }|                    d          }|||f}t          j        |d|i}d }	|dd	|d
}
fd|D             }t          ||	fdj        i|
}t          ||	fddi|
}t          |j        	                    |j                  | j
        dz             t          |j        |j        | j
        dz             t          |j        	                    |j                  d           t          |j        |j        d           d S )Nl   Y}y!dh r"   r-  )r    r"   r!   )r!   r    r7   r@   c                 .    t          j        |d| ij        S r#  )r   kruskalr   r^  s     r*   r   zGTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistico  s    =$2T22<<r,   r   ro  )r@   r   rk  rQ   c                 :    g | ]}                     |          S rq   r  )r  data_r)   s     r*   
<listcomp>zHTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.<listcomp>u  s%    444e

5!!444r,   rE   r   r   r   gQ?r   r   )r_   r`   r   r   r  r   r|  r   r   r1   r   r   )r2   r@   r)   rQ   r(   rn   r   r   r   r   r  ru   rh   s     `          r*    test_vectorized_nsamp_ptype_bothz4TestPermutationTest.test_vectorized_nsamp_ptype_bothX  s    i##$788JJQJ  JJIJ&&JJIJ&&1ay=$2T22	= 	= 	= Y$1#? ?4444t444tYKKBFKdKKiJJTJTJJ 	rzz(2D'E'EDIVWKXXXXt~DIaKHHHH
BJJx$?$?dKKKK
DKd;;;;;;r,   c                    t           j                            dd| j                  }t           j                            dd| j                  }t          j        |||d          }fd}fd}                    |                              |          }}d|d	| j        t          j        d
}t          ||z
  f|fi |}	t          ||f|fi |}
t          |	j
        |
j
        | j                   |dk    r4t          |
j
                            |j
                  | j                   t          |
j                            |j                  | j                   t          |	j        |
j        | j                   d S )N)r"   r7  r!   r   r  rN  r    rH  c                     t          |           } t          j        | d|          }                    |j                  }|j        dk    r|d         n|S Nr   rH  r   rq   r   r   wilcoxonr1   r   r	  )r   r@   ru   r)   s      r*   statistic_1samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1d  sS     "!$$A.TBBBC**S]++C!h!mm3r774r,   c                     t          |           t          |          }} t          j        | |d|          }                    |j                  }|j        dk    r|d         n|S r  r  r  s       r*   statistic_2samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1d  s`    $Q''):1)=)=qA.A6EEEC**S]++C!h!mm3r774r,   rn  )r@   r   rk  rQ   rE   r   r  )r   r  r   rQ   r  r1   r_   r|  r   r   r   r   r   )r2   r   r)   r(   rn   r   r  r  r  rg   rh   s     `        r*   test_against_wilcoxonz)TestPermutationTest.test_against_wilcoxon  s    M9!$(KKM9$TXNN>!QKaHHH	5 	5 	5 	5 	5	5 	5 	5 	5 	5 zz!}}bjjmm1+9x8 81(:CCdCCA(:CCdCC 	TYGGGG+%%DNBJJx7I,J,J!%, , , , 	RZZ%@%@tyQQQQT[tyAAAAAAr,   c           	         | j                             ddd          }d||dk    <   dd} ||          dd}}}t          j        ||||          }t          j        |                    ||j        	          f|d
d|j        | j         |          }	t          |	j	        |                    |j	                  | j
                   d S )Nr   r!   rL   r-  rk   c                 V    t          |           }|                    | dk    |          S )Nr   r?   )r
   r   )r(   r@   xp_s      r*   r   z=TestPermutationTest.test_against_binomtest.<locals>.statistic  s,    !!$$C$$QU$666r,   rN  r  r  Trn  )r<   rk  rE   rQ   r   r   r   )rQ   r`  r   r   r   r1   r   r|  r   r   r   )
r2   r   r)   r(   r   krz   rX  r   ru   s
             r*   test_against_binomtestz*TestPermutationTest.test_against_binomtest  s     Ha,,!q&	
	7 	7 	7 	7 )A,,Ca1?1aDDD$bjj"*j&E&E%G046?RV)-{L L L 	
BJJx$?$?diPPPPPPr,   c                    | j                             d          }|| j                             d          z   t          j        |d          }fd}                    |          }t          |f|dt          j        | j                   }t          |j	                            |j	                  | j
                   t          |j                            |j                  | j
                   d S )	Nr7  r-  r  rJ   c                     t          |           } t          j        | d|          }                    |j                  }|j        dk    r|d         n|S )Nr  )rK   r@   r   rq   )r   r   
kendalltaur1   r   r	  )r(   r@   ru   r)   rn   s      r*   r   z>TestPermutationTest.test_against_kendalltau.<locals>.statistic  sT    !!$$A"1a4HHHC**S]++C!h!mm3r774r,   rm  )rk  rE   rQ   r   )rQ   rk  r   r  r1   r   r_   r|  r   r   r   r   )r2   r)   r(   r   r   ru   rn   s    `    @r*   test_against_kendalltauz+TestPermutationTest.test_against_kendalltau  s    HOOO##Q'''#Aq999	5 	5 	5 	5 	5 	5 JJqMMtY+-6txA A A 	rzz(2D'E'EDIVVVV
BJJx$?$?diPPPPPPr,   c                   	 t           j                            d          }|                    d          dk                        t                    }|                    d          d|z  z   dk                        t                    	t
          j                            |	          d         }                    |                              	          c}		fd}t          |f|dj
        ||          }t          j        ||	          }t          |j                            |j        |j        
                     d S )Nl   	(yM4 r  r  g      ?r    c                 H                         | dk    dk    z  |          S Nr    r?   )r   r(   r@   r)   rn   s     r*   r   z@TestPermutationTest.test_against_fisher_exact.<locals>.statistic  s)    ##Q!VQ$7d#CCCr,   rm  )rk  rE   r   rQ   r  r  )r_   r`   r   r  r   r   contingencycrosstabr1   r   r|  fisher_exactr   r   r   )
r2   r   r)   rQ   r(   tabr   ru   rh   rn   s
     `      @r*   test_against_fisher_exactz-TestPermutationTest.test_against_fisher_exact  s4    i##$788ZZ]]S ((//ZZ]]T!V#c)11%88((A..q1zz!}}bjjmm1	D 	D 	D 	D 	D 	D tY+-6{#&( ( ( !#;???
BJJt{!'J$J$JKKKKKr,   )r:  r    c                 @   | j                             d          }| j                             d          }| j                             d          }t          j        ||          }t          j        ||          }t          j        ||          }|d         }|||f}d }d }t	          j        |          }t	          j        |          }	 |t          j        | d	|i}
 |	t          j        | d	|i}d
|dddd}t          ||fdt          j	        i|}t          ||fddi|}t          |j        |
| j                   t          |j        |j        | j                   t          |j        || j                   t          |j        |j        d           d S )N)r!   r7   r"   r-  )r    r7   r"   )r!   r7   r    r?   r   c                  :    t          j        | dd          j        S )NTr  rankedrK   )r   page_trend_testr   r   s    r*   r  zLTestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.statistic1d  s'    (d0<> > >>GHr,   c                  :    t          j        | dd          j        S )NTr  r  )r   r  r   r  s    r*   pvalue1dzITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1d  s'    (d079 9 99?@r,   r@   Fr   rm  )r<   r@   r   rk  rQ   rE   r   r   r   r   )rQ   r`   r   rankdatar   r`  r_   broadcast_arraysr   r|  r   r   r   r   )r2   r@   r(   rn   r   r   r  r  r   r   expected_statisticexpected_pvaluer  ru   rh   s                  r*   #test_vectorized_nsamp_ptype_samplesz7TestPermutationTest.test_vectorized_nsamp_ptype_samples  s    HOOO++HOOO++HOOO++N14(((N14(((N14(((aD1ay	H 	H 	H	@ 	@ 	@  4[AA	1(;;&Y(;T(BNNN &""5t"<H4HH $T)$.q: :t[MMbfMMMkLLtLtLL'9	JJJJt~DIFFFF
O$)DDDD
DKd;;;;;;r,   r6   )r>   r!   g      @rF  g?g&_?g      @gd~$I"@glu?)r(   rn   expected_lessexpected_2sidedexpected_Pr_gte_S_meanr  expected_avgexpected_std)o   k   r]   c   r   j   m   l   )	r  r  r  b   i   r!  n   r  h   gd?gd?gYo5 ?g     @@@g{C@gDmFA@casec           	         |d         }|d         }                     |d                   }                     |d                   }                     |d                   }                     |d                   }                     |d                   }	                     |d                   }
fd	}t                    }                     ||
                               ||
          }}t          j                    5  t          j        ddt
                     t          ||f|t          j        d          }t          ||f|t          j        d          }ddd           n# 1 swxY w Y   t          |j
        || j                   t          |j        |d           t          |j        |d           t                              |j                  |	d           t                              |j                  |
d           |j
        }                    |j                  }|j        j        d         }                                                            |j        |z
                                ||z
            k              |j                  |z  }t          ||           dS )a  
        Results above from SAS PROC NPAR1WAY, e.g.

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

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

        r(   rn   r  r  r  r  r  r  c                     t          |           t          |          }} t          j        | ||          }                    |j                  }|j        dk    r|d         n|S r  r  r  s       r*   r   z5TestPermutationTest.test_with_ties.<locals>.statisticM  r  r,   r  r  z$Ties preclude use of exact statisticr   )rE   r   r  Nr   g|=r   r  r   )r1   r   r  r  r  UserWarningr   r_   r|  r   r   r   r   r&   r,  r   ry   r  r   r   r   )r2   r  r)   r(   rn   r  r  r  r  r  r  r   r   ru   rh   Sr&   rz   Pr_gte_S_means     `                r*   test_with_tiesz"TestPermutationTest.test_with_ties&  s   : IIZZ-A(BCC

4#899**T*;%<==!#D1I,J!K!Kzz$~"677zz$~"677	5 	5 	5 	5 	5 !$$zz!5z))2::au:+E+E1$&& 	= 	=#@+O O O"Aq69"&/57 7 7C#QFI260;= = =D	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	'9	JJJJ
M>>>>_5AAAA 677DQQQQt5664PPPP Mwws,--!'*		""2"2FF3(-.."&&4..@#B #BCD7L LNOP'=>>>>>s   	AE//E36E3zalternative, expected_pvalue))r   g?)r   gOO?)r  g<OO?c                                         g d          }                     g d          d}                     t          j        t                                        fd}t	          |f|dj        |          }t          |j                             |          | j                   t          |j	                             |          d	           d
S )aU  
        Results above from R cor.test, e.g.

        options(digits=16)
        x <- c(1.76405235, 0.40015721, 0.97873798,
               2.2408932, 1.86755799, -0.97727788)
        y <- c(2.71414076, 0.2488, 0.87551913,
               2.6514917, 2.01160156, 0.47699563)
        cor.test(x, y, method = "spearm", alternative = "t")
        )g@9?gY,?gOQ?g[iY@g|?g鈶BE)gQGn@gU?gz˱@?gmGA6@gB @g˭?g?c                                          t          j        t          |           |                    } t          j        | |          j        S r~   )r1   r   r  r   r  r   r  s     r*   r   zBTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic  sH     

5>*;A*>*>TJJJKKA>!QT222<<r,   rm  )rk  rE   r   r   gvIh%<=r   N)
r1   r   r  r   r   r|  r   r   r   r   )	r2   r   r  r)   r(   r  r   ru   rn   s	      `    @r*   test_against_spearmanr_in_Rz/TestPermutationTest.test_against_spearmanr_in_Rl  s   . JJ < < < = =JJ ; ; ; < </JJu~&7&:&:;;<<	= 	= 	= 	= 	= 	= tY+-6{L L L 	rzz2D'E'EDIVVVV
BJJ$?$?eLLLLLLr,   rI   )rk   r   c                     t          j        t          d          5  t          t	          j        g d|                     d d d            d S # 1 swxY w Y   d S )Nz`batch` must be positive.r   r   )r.   r/   rR   r   r   _batch_generator)r2   rI   s     r*   test_batch_generator_ivz+TestPermutationTest.test_batch_generator_iv  s    ]:-HIII 	A 	A-iii??@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   %AAAr   rY   )r"   r7   r   r  r  ziterable, batch, expectedc                 Z    t          t          j        ||                    }||k    sJ d S r$   )r   r   r  )r2   iterablerI   r   gots        r*   test_batch_generatorz(TestPermutationTest.test_batch_generator  s/     ;/%@@AAhr,   c                 v   |                     g d|j                  }|                     g d|j                  }d }t          j        ||f|d          }|j        |j        |j        }}}dt          |                    ||dz
  k                        z  |j	        d	         z  }	||	cxk    rd
k    sn J d S )N)r  r  r  r  r  )r  r  g      @g       @c                 <    t          j        | ||          d         S )Nr?   r   )r   r  r  s      r*   r   zFTestPermutationTest.test_finite_precision_statistic.<locals>.statistic  s    >!QT222155r,   rm  rj  r!   r  r   gUUUUUU?)
r1   r   r   r   r   r   r,  r   r   ry   )
r2   r)   r(   rn   r   ru   rr   null	correct_ps
             r*   r/  z3TestPermutationTest.test_finite_precision_statistic  s     JJ'''rzJ::JJ'''rzJ::	6 	6 	6 $aVY6@B B B-S5J46b..tq5y/@AABBBTZPQ]R	))))c))))))))r,   N),r-   r  r  r   rg  rl  r.   r  r  r_   r`   ra   r   r  r   r  r{  ru  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r0  r  
tie_case_1
tie_case_2r  r  r  r=  batch_generator_casesr  r4  r/  rq   r,   r*   re  re  "  sM        D> > >48 48 48p [^bi.C.0i.C.E F F[/CCCE E"2 "2E EF F"2J [^bi.C.0i.C.E F F[;)+<7+<Q+?+?+BC/,mgmAq.A.ABDE E< <	E EF F<4< < <2 [< < <4 [!!4V[<Q!RR< < SR<6 [!!T!22[],LMMQ Q NM 32Q, [!!T!22[],LMMQ Q NM 32Q2 f%9:::&&&[],LMMQ Q NM '& ;:Q" f%ABBB&&&t$$$Q Q %$ '& CBQ$ f_555&&&[VW--"< "< .- '& 65"<L [!!T!22[],LMM#B #B NM 32#BJ [],LMMQ Q NMQ. [!!T!22Q Q 32Q* [],LMML L NML$ [[VW--)< )< .- )<Z $||---#/%(,8(+"*GE EJ ?>>CCC#/%1,8(,"+XG GJ [!!T!22[[Vj*%=>>A? A? ?>  32A?F [[;>? ?
 [!!4V[<Q!RR[!!T!22!M !M 32 SR? ? !MF [Wg..A A /.A $eAhh2.#eAhhIIIyyy+AB#eAhhIIIyyy1a&+IJL [824 4 4 4 [1[!!4V[<Q!RR* * SR * * *r,   re  c                  (   t          j        g dt                    t          j                  } t	                      }d}t          j                  D ]P}|dz  }t          j        || d d                   }|                    t          d |D                                  Qt          j
        fdt          t                    dz
            D                       }t          ||           t          t          |          |           d S )N)r"   r!   r7   r  r   r    rk   c                 ,    g | ]}t          |          S rq   )	frozenset)r  rr   s     r*   r  z4test_all_partitions_concatenated.<locals>.<listcomp>  s    !E!E!E1)A,,!E!E!Er,   c           
          g | ]D}t          j        t          |d                    t          |dz   d                              ES r  )r   r{  r  )r  rr   rz   s     r*   r  z4test_all_partitions_concatenated.<locals>.<listcomp>  sU     2 2 2  c!ABB%jj#a!g,,?? 2 2 2r,   )r_   r  r   cumsumsetr   _all_partitions_concatenatedsplitaddrS   prodr=  r   r   )ncall_partitionsr  partition_concatenatedpartitioningr   rz   s         @r*    test_all_partitions_concatenatedr    s    	#&&&A	1BUUNG"-"J1"M"M H H1x 63B3@@5!E!E!E!E!EFFGGGGw 2 2 2 2!&s1vvax2 2 2 3 3H (###^$$h/////r,   fun_namer   r   r   c                 x   t           j                            d                              d          fd}fddfdd|d	d
}ddi}t          t          |           }||          }|                    |           fd} |d|d d|  |d|dd| d } |d|d d|  |d|dd| d S )Nl   r: rL   r-  c                 F    t           j                            |           S )Nr   )r   r   r   r+  s    r*   r   z&test_parameter_vectorized.<locals>.rvs  s    z~~4c~:::r,   rW   )r   rQ   rK   rn  )r   rQ   rk  )rT   r   r  rE   r]   c                 t    | j         dk    st          j        |           sJ t          j        | |          S r  )r	  r_   array_equalr&   )r(   r@   rT   s     r*   r   z,test_parameter_vectorized.<locals>.statistic  s7    vzzR^Av66zzzwqt$$$$r,   )r   r<   Tc                 D    | j         dk    sJ t          j        |           S r  )r	  r_   r&   r  s    r*   r   z,test_parameter_vectorized.<locals>.statistic  s    v{{{{wqzzr,   Frq   )r_   r`   r   rF  r   r   )	r  r   fun_optionscommon_optionsr  optionsr   rQ   rT   s	          @@r*   test_parameter_vectorizedr    si   
 )


/
/CZZRZ  F; ; ; ; ; +13+7!9 !917	#<E(G (G28'E'E	G GK
 $S)N
%
"
"C(#GNN>"""% % % % % C8)88888C8)88888   C8)88888C9)9999999r,   c                       e Zd Zd ZdS )TestMonteCarloMethodc                     d}t           j                            d          }t          j        t
          |          5  t          j        |j        |           d d d            d S # 1 swxY w Y   d S )Nz.Use of `rvs` and `rng` are mutually exclusive.ir   )r   rQ   )r_   r`   r   r.   r/   rR   r   MonteCarloMethod)r2   r3   rQ   s      r*   test_rvs_and_random_statez.TestMonteCarloMethod.test_rvs_and_random_state  s    Bi##H--]:W555 	< 	<"szs;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   A&&A*-A*N)r-   r  r  r  rq   r,   r*   r  r    s#        < < < < <r,   r  )-r  r.   r   r_   numpy.testingr   r   scipy._lib._utilr   scipy._lib._array_apir   r   r   r	   r
   r   scipy._lib._array_api_no_0dr   r   
scipy._libr   rI  scipyr   r   scipy.fft.tests.test_fftlogr   scipy.optimizer   scipy.statsr   r   r   r   scipy.stats._resamplingr   r   r  r6  re  r  r  r  r  r  rq   r,   r*   <module>r(     s         7 7 7 7 7 7 7 7 ) ) ) ) ) )P P P P P P P P P P P P P P P P H H H H H H H H - - - - - -                 8 8 8 8 8 8       L L L L L L L L L L L L - - - - - - - - - 9VA VA VA VA VA VA VA VAt #$$r8 r8 r8 r8 r8 r8 r8 %$r8j 5x? x? x? x? x? x? x? x?v #$$U
* U
* U
* U
* U
* U
* U
* %$U
*|0 0 0* NNNP P: :P P:B< < < < < < < < < <r,   