
     hd                       d dl Zd dlZd dlmZmZmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ ddlmZ d dlmZ d d	lmZ d
 Zej                            dg d          ej                            dg d          d                         Zej                            dg d          d             Zej                            dg d          ej                            dg d          ej                            dddg          d                                     Zej                            dg d          d             ZddddZej                            de                                          d             ZddddZd Zd Z ej                            de                                          d             Z!d d!d"Z"ej                            de"                                          d#             Z#ej                            dd$d%g          ej                            dd d&g          d'                         Z$ej        %                    d(          ej                            dg d          ej                            dd d&g          d)                                     Z&ej                            dg d          d*             Z'ej                            dg d          d+             Z(d, Z)ej                            d-d d.g          d/             Z*d0 Z+ej                            d1d2d3g          d4             Z,ej                            d5g d6          ej                            dg d          d7                         Z-d8 Z.ej                            dg d          d9             Z/ej                            dg d          d:             Z0ej        j1        ej        2                    d;          d<                         Z3 G d= d>          Z4 G d? d@          Z5dA Z6ej                            dBg dC          dD             Z7dS )E    N)	bootstrapmonte_carlo_testpermutation_test)assert_allcloseassert_equalsuppress_warnings)stats)special   )_resampling)rng_integers)rootc                  	   d} t          j        t          |           5  t          dt          j                   d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          t                      t          j                   d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g ddgft          j                   d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dg dft          j        d	
           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          dt          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d           d d d            n# 1 swxY w Y   d} t          j        t          |           5  t          g dft          j        d            d d d            n# 1 swxY w Y   d!} t          j        t          |           5  t          g dft          j        d"#           d d d            d S # 1 swxY w Y   d S )$Nz%`data` must be a sequence of samples.match   z(`data` must contain at least one sample.z>each sample in `data` must contain two or more observations...r   r      z=When `paired is True`, all samples must have the same length r   r   r      T)paired0`vectorized` must be `True`, `False`, or `None`.ekki
vectorized`axis` must be an integer.      ?axisz!could not convert string to floatni)confidence_levelz-`n_resamples` must be a non-negative integer.n_resamples     D@+`batch` must be a positive integer or None.batchz`method` must be inmethodz?`bootstrap_result` must have attribute `bootstrap_distribution'
   )bootstrap_resultz5Either `bootstrap_result.bootstrap_distribution.size`r   "'herring' cannot be used to seed aherringrandom_state)pytestraises
ValueErrorr   npmeantuple)messages    ]/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/stats/tests/test_resampling.pytest_bootstrap_ivr9      s   5G	z	1	1	1  !RW               9G	z	1	1	1 $ $%''27###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ OG	z	1	1	1 - -999qc"BG,,,- - - - - - - - - - - - - - - OG	z	1	1	1 C C999lll+RWTBBBBC C C C C C C C C C C C C C C AG	z	1	1	1 1 1!RW00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +G	z	1	1	1 3 3999,c22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2G	z	1	1	1 @ @999,$????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ >G	z	1	1	1 < <999,U;;;;< < < < < < < < < < < < < < < >G	z	1	1	1 = =999,V<<<<= = = = = = = = = = = = = = = <G	z	1	1	1 6 6999,u55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 <G	z	1	1	1 7 7999,v66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 $G	z	1	1	1 8 8999,77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 PG	z	1	1	1 > >999,"====> > > > > > > > > > > > > > > FG	z	1	1	1 8 8999,Q77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 3G	z	1	1	1 A A999,i@@@@A A A A A A A A A A A A A A A A A As  AA	A	-'B  B$'B$ C44C8;C8#EEE3FF #F  G00G47G4 III, JJJ  K,,K03K0 M  MM( NNN< O((O,/O, P<<Q Q $ RRR8 S%%S),S)r*   )basic
percentileBCar   r   r   r   c           	         t           j                            d           t           j                            ddd          }t	          |ft           j        d | d|d          }t	          |ft           j        d| d|d          }t          |j        j        |j        j                   t          |j        j	        |j        j	                   t          |j
        |j
                   d S )Nr   r+         d   )r(   r*   r0   r   r$   )r4   randomseedrandr   r5   r   confidence_intervallowhighstandard_error)r*   r   xres1res2s        r8   test_bootstrap_batchrL   K   s     INN1
	r2r""AaT27$v"#$CA A ADaT27"V"#$CA A AD )-t/G/KLLL).0H0MNNN$d&9:::::    c                    t           j                            d           d}t           j                            |          t           j                            |          d	dd	fd	}t          j        t                              }t          |f|d          }t          fdd          }t          |j        |j                   t          |j	        |j	                   d S )
Nr   rA   c                 :    | |z
  dz                       |          S )Nr   r   r5   rI   yr   s      r8   my_statisticz+test_bootstrap_paired.<locals>.my_statisticd   s    1qD)))rM   c                 @    |          }|          } ||          }|S N )ir   abresrT   rI   rS   s        r8   my_paired_statisticz2test_bootstrap_paired.<locals>.my_paired_statisticg   s+    aDaDl1a  
rM   r/   T)r   r0   rO   )
r4   rB   rC   rD   arangelenr   r   rE   rH   )	r*   nr\   rX   rJ   rK   rT   rI   rS   s	         @@@r8   test_bootstrap_pairedra   \   s     INN1A
	qA
	qA* * * *        		#a&&AaT.Q???DaV\$QGGGDD,d.FGGGD')<=====rM   r   TFc           	      z   t           j                            d           d	d}d}||         }t           j                            |          }t           j                            |          }t           j                            |          }t	          |||f||| ddd          }	|	j        j        |	j        j        dz   k    sJ g d}
||
|<   t          j        |	                    |
          |          }t          j        |	                    |
          |          }t          j        |	                    |
          |          }t	          |||f||| d|d          }t          |j        j        |	j        j                   t          |j        j        |	j        j                   t          |j        |	j                   t          |          }|                    |           t!          |j        j        j        |           t!          |j        j        j        |           t!          |j        j        |           d S )
Nr   rO   c                     |                      |          |                     |          z   |                     |          z   S Nr   rQ   )rI   rS   zr   s       r8   rT   z/test_bootstrap_vectorized.<locals>.my_statistic   s<    vv4v  166t6#4#44qvv4v7H7HHHrM   )r+   r?   r@   rA   )r   r*   r0   r   r$   )rA   )r   r   r   r]   )r4   rB   rC   rD   r   bootstrap_distributionshaperH   broadcast_toreshaper   rE   rF   rG   listpopr   )r*   r   r   rT   rg   	n_samplesrI   rS   re   rJ   ri   rK   result_shapes                r8   test_bootstrap_vectorizedrn   v   s/    INN1I I I I EdI
	y!!A
	y!!A
	y!!AaAYVF"#!> > >D'-"(612 2 2 2 iiGGDM
		'**E22A
		'**E22A
		'**E22AaAYVF"#$CA A AD D,0,02 2 2D,1,13 3 3D')<===;;LT)-3\BBB).4lCCC$*L99999rM   c                    t           j                            dddd          }d}t          j        t	          |          dz
  t          j        |          t          j        |                    }|                    |	          }|	                                }t          |ft
          j        d|| d
          }t          |j        |d           t          |j        |d           d S )N   r     r   )locscalesizer0   ffffff?r   )dfrr   rs   )
confidence)r$   r!   r*   r0   gMb@?rtolga2U0*3?atol)r	   normrvstr_   r4   r5   semintervalstdr   r   rE   rH   )r*   dataalphadistexpected_intervalexpected_ser[   s          r8   test_bootstrap_against_theoryr      s     :>>aqt!>DDDE7c$iikrwt}}EIdOOLLLD77((**K
TGRW$%*6!"$ $ $C C+->TJJJJC&$??????rM   )gQ7@gHzS@)g\(<@g=
ףpU@)gHz'@@gQV@zmethod, expectedc                     t          j        g d          }t          |ft           j        d| d          }t	          |j        |d           d S )N)r+   r@         )@r   g+@            "   2   Q   Y   y         i@B r   )r$   r*   r0   g{Gzt?rx   )r4   arrayr   r5   r   rE   )r*   expectedrI   r[   s       r8   test_bootstrap_against_Rr      se    " 	 5 5 5 	6 	6A
QD"'wv!"$ $ $CC+XEBBBBBBrM   i  i  c                  ^   g d} g d}d }t           j                            d          }t          j        | |f|dd|          }t          j        | |f|dd|          }t          j        | |f|d	d|          }t          j        |j                  }t          j        |j                  }t          j        |j                  }	d
}
||
z
  t          |
          z  }||
z
  t          |
          z  }|	|
z
  t          |
          z  }|dk     sJ |dk    sJ t          |          dk     sJ d S )N)gbF?gp?g|Hܿgxy[e}u׿g*g_?ggi6g2?)gF?gK?g&F}/?g?g(iC?g}$ץ?g hu?gfj}!?c                 d    t          j        | |          }t          j        ||          }||z
  S rd   )r	   skew)rI   rS   r   s1s2s        r8   	statisticz1test_multisample_BCa_against_R.<locals>.statistic   s3    Z%%%Z%%%BwrM   l   tgy4r:   rA   )r*   r(   r0   r;   bcag1*g333333ÿg333333?Q?)r4   rB   default_rngr	   r   r5   rE   abs)rI   rS   r   rng	res_basicres_percentres_bca	mid_basicmid_percentmid_bca	mid_wboot
diff_basicdiff_percentdiff_bcas                 r8   test_multisample_BCa_against_Rr      s{   	. 	. 	.A	9 	9 	9A
   )

 2
3
3CA	'&)= = =I/1a&)L(+#? ? ?Koq!fi$'c; ; ;G 	566I'+9::Kgg122G I i'Y7J)+S^^;L)#S^^3H $x==4rM   c                     t          j        g d          } t          j        g d          }d	d}|| g}t          j        ||          }d}d}|j        }d}t          j        ||||||          \  }	}	}
t          |
d           d S )
N)	r+         (   .   r   4   h      )   r   &   ^   c         r   c                 \    t          j        | |          t          j        ||          z
  S rd   r4   r5   )re   rS   r   s      r8   r   z:test_BCa_acceleration_against_reference.<locals>.statistic  s+    wqt$$$rwqt'<'<'<<<rM   rO   ru   rA   ge{?r   )r4   r   r	   r   rf   r   _bca_intervalr   )rS   re   r   r   r[   r   r   theta_hat_br(   _a_hats              r8   'test_BCa_acceleration_against_referencer     s     	77788A
///00A= = = = q6D
/$	
*
*CDE,KE+D)T5,7@ @KAq%E/00000rM   c           	         t           j                            d           d}d}d}t          j        dd          }|                                }d}|                    ||f	          }t          |ft           j        ||d
| d          }	|	j        }
t          j	        |
d         |k     ||
d         k     z            }||k    sJ t          j
        |||          j        }|dk    sJ d S )Nr   rA     ?rp   r   rr   rs   i  rt   r   rO   r   r!   r$   r(   r*   r   皙?r4   rB   rC   r	   r|   r5   r}   r   rE   sum	binomtestpvalue)r*   r   r`   r$   r!   r   	stat_truen_replicationsr   r[   cici_contains_truer   s                r8   #test_bootstrap_against_itself_1sampr   )  s    INN1AK :!1%%%D		I N88.!,8--D
TG g%5 +!  C 
	 B vr!uy0YA5FGHHx'''' _-~-/ //5 C<<<<<<rM   i|  iz  )r:   r;   c           	      T   t           j                            d           d}d}d}d}dd}t          j        dd	          }t          j        d
d	          }|                                |                                z
  }	d}
|                    |
|f          }|                    |
|f          }t          ||f|||d| d          }|j        }t          j	        |d         |	k     |	|d         k     z            }||k    sJ t          j
        ||
|          j        }|d
k    sJ d S )Nr   rA   x   r   r   rO   c                 d    t          j        | |          }t          j        ||          }||z
  S rd   r   )data1data2r   mean1mean2s        r8   my_statz4test_bootstrap_against_itself_2samp.<locals>.my_statc  s4    D)))D)))u}rM   r   r   r     r   r   r   r]   r   )r*   r   n1n2r$   r!   r   dist1dist2r   r   r   r   r[   r   r   r   s                    r8   #test_bootstrap_against_itself_2sampr   T  s^    INN1	B	BK    J1A&&&EJ3a(((E

uzz||+I NIINB/I00EIINB/I00E
UEN%%5 +!  C 
	 B vr!uy0YA5FGHHx'''' _-~-/ //5 C<<<<<<rM   r:   r;   r   c           	         dddfd}t           j                            d           t           j                            dd          }t           j                            dd          }t           j                            dd          }t	          |||fd|d| d	          }t	          |||f|d
|d| d	          }t          |j        |j                   t          |j        |j                   d S )Nr   r   c                 :     t           fd|D                       S )Nc              3   B   K   | ]}|                               V  d S rV   rQ   .0sampler   s     r8   	<genexpr>zEtest_bootstrap_vectorized_3samp.<locals>.statistic.<locals>.<genexpr>  /      99&FKK%%999999rM   r   r   r   s   ` r8   r   z2test_bootstrap_vectorized_3samp.<locals>.statistic  &    9999D999:::rM   c                  8    | D ]}|j         dk    sJ  | ddiS Nr   r   r   ndimr   r   r   s     r8   statistic_1dz5test_bootstrap_vectorized_3samp.<locals>.statistic_1d  =     	$ 	$F;!#####y$'Q'''rM   r   rp   TrA   )r   r   r$   r*   r0   Fr4   rB   rC   rD   r   r   rE   rH   )	r*   r   r   rI   rS   re   rJ   rK   r   s	           @r8   test_bootstrap_vectorized_3sampr     s      ; ; ; ; ;( ( ( ( ( INN1
	q!A
	q!A
	q!AaAY	dCQP P PDaAYCQP P PDD,d.FGGGD')<=====rM   z'Failure is not concerning; see gh-14107c           
      `   ddfd}t           j                            d           t           j                            dd          }t	          |fd|dd | d          }t	          |f|d	|dd
| d          }t          |j        |j                   t          |j        |j                   d S )Nr   c                 .    |                      |          S rd   rQ   rI   r   s     r8   r   z2test_bootstrap_vectorized_1samp.<locals>.statistic  s    vv4v   rM   c                 8    | j         dk    sJ  | d          S )Nr   r   r   r   )rI   r   s    r8   r   z5test_bootstrap_vectorized_1samp.<locals>.statistic_1d  s'    v{{{{y####rM   r   rp   TrA   )r   r   r$   r(   r*   r0   Fr+   r   r   )r*   r   r   rI   rJ   rK   r   s         @r8   test_bootstrap_vectorized_1sampr     s    ! ! ! !$ $ $ $ $
 INN1
	q!AaT9D!$D"#% % %D aT<E!$Bv"#% % %D D,d.FGGGD')<=====rM   c                    ddgz  }| dk    rt          j        d          5  d}t          j        t          j        |          5  t          |gt           j        |           }t          |j	        t           j
        t           j
        f           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   n2t          |gt           j        |           }t          |j	        d	           t          |j        d
           d S )N#        @r<   ignore)invalidz0The BCa confidence interval cannot be calculatedr   r)   )r   r   r   )r4   errstater1   warnsr	   DegenerateDataWarningr   r5   r   rE   nanrH   )r*   r   msgr[   s       r8   test_bootstrap_degenerater    s   =D[*** 	H 	HDCe9EEE H H"'&AAAS4rvrv6FGGGH H H H H H H H H H H H H H H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H "'&999S,.>???#Q'''''s6   #B1A	BB1B	B1!B	"B11B58B5c           	      <   t           j                            d          }t          j        dd          }|                    d|          }|f}t          |t          j        | dt           j                            d                    }t          |t          j        | dt           j                            d          d	
          }t          |j	        |j	                   t          |j
        |j
                   t          |j
        t           j                  sJ d S )Nl   E<1

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


A	B	B	"	"B
)

 2
3
3C
/1$Rc+/F F FC
/1$Rc+/+.0 0 0C )

 2
3
3C
/1$Rc+/? ? ?C C&(:GGGGC+S-D           rM   c                     d} t           j                            d           t          j        j        |  }t	          t          j        |                    }t          | d                   D ]=}|d|d d f         }t          j        ||d          }t          j	        ||          sJ >t          j
        t          t          j        |d                    d          }t          j	        ||          sJ d S )	Nr   r   rp      r   rO   .r   r   r'   )r4   rB   rC   rD   nextr   _jackknife_resamplerangedeletearray_equalconcatenaterj   )rg   rI   rS   rX   slcr   y2s          r8   test_jackknife_resampler#    s    EINN1
	A[,Q//00A59 - - Q	l9Q+++~c8,,,,,,	[<QaHHHII
! 
! 
!B>"a       rM   rng_nameRandomStater   c                    t          t          j        | d           }|t          j        |  d            |d          } |d          }d}d}t          j                            d           t          j        j        | }t          j        |||          }t          |          D ]N}|d|d d f         }	t          |d|d         |d                   }
|d|
f         }t          j        |	|          sJ Od S )Nz not available.r   r+   r  r/   .rO   )getattrr4   rB   r1   skiprC   rD   r   _bootstrap_resampler  r   r  )r$  r   rng1rng2r$   rg   rI   rS   rX   r!  jsr   s               r8   test_bootstrap_resampler-    s	   
")Xt
,
,C
{x0001113q66D3q66DKEINN1
	A';TJJJA; - - Q	l$59eBi88S"W:~c8,,,,,,- -rM   score)r         ?r   c                     d}t           j                            d           t          j        j        | }t	          j        || d          }d } ||| d          dz  }t          ||d           d S )N)r+         r   rO   r   c                 D    t          j        t          j        || |          S rV   )r4   apply_along_axisr	   percentileofscore)rY   r.  r   s      r8   vectorized_posz0test_percentile_of_score.<locals>.vectorized_pos9  s    "5#:D!UKKKrM   rA   V瞯<)r4   rB   rC   rD   r   _percentile_of_scorer   )r.  r   rg   rI   pr6  p2s          r8   test_percentile_of_scorer;  1  s     EINN1
	A(E;;;AL L L 
5r	*	*	*3	.BAr5!!!!!rM   c                  |   d} t           j                            d           t          j        j        |  }t          j        j        | d d          dz  }t	          j        ||          }t          | d                   D ]>}||         }t          j        ||         ||         d          }t          ||d           ?d S )N)r+   r1  r   rO   rA   r   r7  )	r4   rB   rC   rD   r   _percentile_along_axisr  r;   r   )rg   rI   qrS   rX   r[   r   s          r8   test_percentile_along_axisr?  A  s    
 EINN1
	A
	crc
#c)A*1a00A58__ . .d=1qt"555Xu----. .rM   c                    d fd}t          j        |          }t          j                            d           t          j                            ddd          }t          j                            ddd          }t          j                            ddd          } ||||           } |||||           }t          ||           d S )	Nc                 :     t           fd|D                       S )Nc              3   B   K   | ]}|                               V  d S rV   rQ   r   s     r8   r   z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>X  r   rM   r   r   s   ` r8   r   z+test_vectorize_statistic.<locals>.statisticV  r   rM   c                  8    | D ]}|j         dk    sJ  | ddiS r   r   r   s     r8   r   z.test_vectorize_statistic.<locals>.statistic_1dZ  r   rM   r   r   rp   r  r   r   )r   _vectorize_statisticr4   rB   rC   rD   r   )	r   r   
statistic2rI   rS   re   rJ   rK   r   s	           @r8   test_vectorize_statisticrF  R  s    ; ; ;( ( ( ( ( 1,??JINN1
	q!QA
	q!QA
	q!QA9Q14(((D:aAD)))DD$rM   c                 2   t           j                            d          }d}t          j        j        |d|d}d }t          |f|| ddd	          }t          j        |j        j	        j
        |k     |j        j        j
        |k    z  d
          }t          j        |dk              sJ t          j        |dk              sJ |j        j	        j        dk    sJ |j        j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ d S )Nl   s: )r   r/  )rA   rA   r  c                 ~    t          j        t          j        | |          t          j        | |d          g          S )Nr   )ddof)r4   asarrayr5   r   )r   r   s     r8   r   z/test_vector_valued_statistic.<locals>.statistic{  s=    z274..6$15557 8 8 	8rM   rO   '     )r*   r   r$   r(   r   r   Z   rA   )r   rA   )r   rA   rK  )r4   rB   r   r	   r|   r}   r   r   rE   rF   TrG   allrg   rH   rf   )r*   r   paramsr   r   r[   countss          r8   test_vector_valued_statisticrR  m  sJ    )



+
+CFZ^V*3GGGF8 8 8 VIyb $C1 1 1C VS,02V;.35>@  F 6&B,6&C-     "&,8888"'-9999#x////%+~======rM   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   )r5   var)rI   rS   r   xmymcovs         r8   concordancez9test_vector_valued_statistic_gh17715.<locals>.concordance  s    VVD\\VVD\\ByM!a"Y-&78>>tDDCAEE$KK!%%++5bQFGGrM   c                 V    | |z   }| |z   }t          j         |||                    S rV   )r4   
nan_to_num)tptnfpfnr   actualr   rY  s          r8   r   z7test_vector_valued_statistic_gh17715.<locals>.statistic  s3    b7}[[4@@AAArM   c                 <     g || R  t           j        df         S )N.)r4   newaxis)r   argsr   s     r8   statistic_extradimz@test_vector_valued_statistic_gh17715.<locals>.statistic_extradim  s)    y%$%%%%bj#o66rM   )r   r   r   r   )r   r   r   r   )r   r  r   r   )r   r  r   r   )r      r   r   T)r0   r   r   r7  rz   )
r4   rB   r   r   rN  r   r   rE   rF   rG   )r   rd  r   r[   r  rY  r   s        @@r8   $test_vector_valued_statistic_gh17715rf    s8    )

 2
3
3CH H HB B B B B
7 7 7 7 7 LLLLLLLLLL	D
 8D>>D
D,3t
L
L
LC
D)#d
C
C
CCC+/2+/e= = = =C+03+0u> > > > > >rM   c            
          e Zd ZdZd Zd Zd Zej        	                    d e
dd                    d             Z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        	                    d ej        ddd                    d             Zej        	                    dd          ej        	                    d e
d                    d                         Zd ZdS )TestMonteCarloHypothesisTestg?c                     fdS )Nc                       | di|S )Nr0   rW   )rc  kwdsrsrvs_ins     r8   <lambda>z2TestMonteCarloHypothesisTest.rvs.<locals>.<lambda>  s    VVT%K%Kd%K%K rM   rW   )selfrm  rl  s    ``r8   r}   z TestMonteCarloHypothesisTest.rvs  s    KKKKKKrM   c                 *   d }d}t          j        t          |          5  t          g dt          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dt          j        j        |d           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  t          g dd |           d d d            n# 1 swxY w Y   d
}t          j        t          |          5  t          g dt          j        j        d            d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dt          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dt          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dt          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dt          j        j        |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dt          j        j        |d           d d d            d S # 1 swxY w Y   d S )Nc                 4    t          j        |           j        S rV   )r	   skewnormr   rI   s    r8   statz@TestMonteCarloHypothesisTest.test_input_validation.<locals>.stat  s    >!$$..rM   r   r   r   r   r   r   r   z`rvs` must be callable.z`statistic` must be callable.)`n_resamples` must be a positive integer.r"   r#   r%   r&   r'   `alternative` must be in...r   alternative)r1   r2   r3   r   r	   r|   r}   	TypeErrorro  rt  r7   s      r8   test_input_validationz2TestMonteCarloHypothesisTest.test_input_validation  s   	/ 	/ 	/ /]:W555 	H 	HYYY
3GGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H E]:W555 	N 	NYYY
MMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N ,]9G444 	4 	4YYYd333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 2]9G444 	> 	>YYY
===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> >]:W555 	0 	0YYY
).0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 >]:W555 	1 	1YYY
)/1 1 1 1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 @]:W555 	K 	KYYY
EJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K @]:W555 	L 	LYYY
FKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 0]:W555 	1 	1YYY
)/1 1 1 1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   %AAA:%B++B/2B/C33C7:C7#E

EE2%F##F'*F'%G<<H H $%III=%J..J25J2%LLLc                    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 )Nl   )p r+   c                     | j         dk    rdnt          |           }t          |j                  _        xj        dz  c_        t          j        | |          j        S Nr   r   )r   r_   r  
batch_sizecounterr	   skewtestr   )rI   r   r  r   s      r8   r   z:TestMonteCarloHypothesisTest.test_batch.<locals>.statistic  s]    fkks1vvJ#&z93G#H#HI ">!$///99rM   r   r   T)r   r   r$   r   i"r}   r(   r     r   r   r   rW   )r4   rB   r   r  r  r}   r	   r|   r   r   r   )ro  r   rI   rk  rJ   rK   res3r   s          @r8   
test_batchz'TestMonteCarloHypothesisTest.test_batch  s    i##K00JJrNN	: 	: 	: 	: 	:
 	 	)#49 9 hhuz~ry/D/DX/N/NOOU00a0400Y&---Y)1---hhuz~ry/D/DX/N/NOOU	11b1D11Y&+++Y)2...hhuz~ry/D/DX/N/NOOU	''$''Y&***Y)4000T[$+...T[$+.....rM   r   r   c                    t           j                            d          }|                     t          j        j        |          }g d}d||<    ||          }t	          j        ||          }d }t          |||dd|	          }t          |j	        |j	                   t          |j
        |j
        | j        
           d S )Nit$ r   r   r   rA   r   r   c                 8    t          j        | |          j        S rd   )r	   r  r   r   s     r8   r   z9TestMonteCarloHypothesisTest.test_axis.<locals>.statistic  s    >!$///99rM   Ti N  )r   r$   r   rz   )r4   rB   r   r}   r	   r|   r  r   r   r   r   r{   )	ro  r   r   norm_rvsrt   rI   r   r   r[   s	            r8   	test_axisz&TestMonteCarloHypothesisTest.test_axis  s     i##G,,88EJNC00yyT
H$>!$///	: 	: 	: q(I$+0t= = = 	x'9:::
HO$)DDDDDDrM   rx  lessgreaterrY   g      r/  rp   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 )Ni)r2  rY   rt   r0   rw  c                 \    t          j        | t           j        j        d          j        S Nasymp)moderx  )r	   ks_1sampr|   cdfr   )rI   rx  s    r8   statistic1dzGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1d+  s-    >!UZ^'.9; ; ;;DErM   r   Fr$   r   rx  r  rz   r  r   )r4   rB   r   r	   rr  r}   r  r|   r  r   r   r   r   r{   )	ro  rx  rY   r   rI   r   r  r  r[   s	    `       r8   test_against_ks_1sampz2TestMonteCarloHypothesisTest.test_against_ks_1samp"  s$    i##H--N#>>>!UZ^MMM	E 	E 	E 	E 	E 88EJNC00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 #"rM   hypotestr  r  	two-sidedr  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  rw  c                 (     | |          j         S rd   )r   )rI   r   r  s     r8   r   zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statisticD  s    8AD)))33rM   Tr   rx  rz   )r4   rB   r   r	   rr  r}   r|   r   r   r   r   r{   )
ro  r  rx  rY   r   rI   r   r   r  r[   s
    `        r8   test_against_normality_testsz9TestMonteCarloHypothesisTest.test_against_normality_tests:  s    
 i##H--N3??8A;777	4 	4 	4 	4 	4 88EJNC00q(I$+68 8 8 	x'9:::
HO$)DDDDDDrM   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 rd   )r	   
normaltestr   r   s     r8   r   zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statisticV  s    #AD111;;rM   Tr  r  rz   )r4   rB   r   r	   rr  r}   r  r|   r   r   r   r   r{   )ro  rY   r   rI   r   r   r  r[   s           r8   test_against_normaltestz4TestMonteCarloHypothesisTest.test_against_normaltestN  s     i##H--N3??#A&&	< 	< 	< 88EJNC00q(I$+46 6 6 	x'9:::
HO$)DDDDDDrM   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r2  r  c                 T    t          j        | t           j        j                  j        S rV   )r	   cramervonmisesr|   r  r   rs  s    r8   r  zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1dh  s    '5:>::DDrM   r   Fr  r  rz   )r4   rB   r   r	   rr  r}   r  r|   r  r   r   r   r   r{   )ro  rY   r   rI   r   r  r  r[   s           r8   test_against_cramervonmisesz8TestMonteCarloHypothesisTest.test_against_cramervonmises`  s     i##I..N#>>'5:>::	E 	E 	E 88EJNC00q(K+/E+46 6 6 	x'9:::
HO$)DDDDDDrM   	dist_name)r|   logisticrX   c           	      6   fd}t                      5 }|                    t                     t          |d          }d d d            n# 1 swxY w Y   |j        sJ |j        d         }t          j                            d          }t          j
                            |d|          }t          j        |          }	|	j        }
|	j                 dz  }fd}|                     t          t                    j        |          }t                      5 }|                    t                     t!          |||dd	d
          }d d d            n# 1 swxY w Y   t#          |j        |
           t#          |j        |d| j        z             d S )Nc                     t           j                            d          }t          j                            | d|          }t          j        |          }|j        |j                 z
  S )NxrA   r  )	r4   rB   r   r	   tukeylambdar}   andersonr   critical_values)rY   r   rI   r   r  rX   s       r8   funz?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.fun~  s\    )''	22C!%%ac%DDA~a33H%(@(CCCrM   r   )x0r  rA   r  c                 8    t          j        |           j        S rV   )r	   r  r   )rI   r  s    r8   r  zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1d  s    >!Y//99rM   r   Fr  r  r   rz   )r   filterRuntimeWarningr   successrI   r4   rB   r   r	   r  r}   r  r   significance_levelr'  r   r   r   r{   )ro  r  rX   r  supsolrY   r   rI   r   expected_stat
expected_pr  dist_rvsr[   s    ``            r8   test_against_andersonz2TestMonteCarloHypothesisTest.test_against_andersons  s9   	D 	D 	D 	D 	D 	D
    	"CJJ~&&&sq///C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" {{ E!Hi##I..!!!#C!@@>!Y// *03C7
	: 	: 	: 	: 	: 88GE95593??   	LCJJ~&&&"1h#.D.3L L LC	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	}555
JQty[AAAAAAs#   ,AAA0EE!Ec                     t           j                            d          }t          j        d          }t	          ||j        t           j        dd          }|j        dk    sJ d S )Nl   IL~QH(s rA   Tr  r  g-C6?)r4   rB   r   zerosr   r5   r   )ro  r   rI   r[   s       r8   test_p_never_zeroz.TestMonteCarloHypothesisTest.test_p_never_zero  sf     i##$788HSMMq#*bg*.FD D DzV######rM   N)__name__
__module____qualname__r{   r}   r{  r  r1   markparametrizer  r  r4   linspacer  r	   r  kurtosistestr  r^   r  r  r  r  rW   rM   r8   rh  rh    sV       DL L L+1 +1 +1Z#/ #/ #/J [VUU2q\\22E E 32E( [],?@@[S+"+dC";";<<K K =< A@K, [Z%.%:L)MNN[],LMM[S+"+b!Q"7"788E E 98 NM ONE" [S)")B"2"233E E 43E" [S+"+dC";";<<E E =<E$ [[*>??[S%%((++(B (B ,+ @?(BT$ $ $ $ $rM   rh  c                      e Zd ZdZd Zd Zej                            de	j
        j        e	j
        j        g          ej                            dg d          d                         Zej                            de	j
        j        e	j
        j        g          ej                            dd	 ej        d
          dz  fdd ej        dd
          fg          d                         Zd Zej                                        d             Zd Zej                            dd          ej                            dd          ej                            dd          d                                     Zej                            dd          d             Zej                            dd          d             Zej                            dd          d             Zd Zej                                        ej                            dd          d                          Zej                            dd          d!             Zej                            dd          d"             Zd# Zej                            dd          d$             Z ej                                        ej                            dd%          d&                         Z!g d'g d(d)d*d+d,d-d.d/Z"g d0g d1d2d3d4d5d6d7d/Z#ej                                        ej                            d8e"e#f          d9                         Z$ej                            d:d;          d<             Z%ej                            d=d>          d?             Z& e'd@          d
g f e'd          d
g dg dAgf e'dB          d
g dg dAddCggfgZ(ej                            dDe(          dE             Z)dF Z*dGS )HTestPermutationTestr  c                 N    t           j                            d          | _        d S )Nl   F )r4   rB   r   r   )ro  s    r8   setup_methodz TestPermutationTest.setup_method  s    9(()<==rM   c                    d }d}t          j        t          |          5  t          g ddgf|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d|           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d	
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d	           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          g dg df|d           d d d            d S # 1 swxY w Y   d S )Nc                 :    t          j        | |f|          j        S rV   r	   	ttest_indr   rR   s      r8   rt  z:TestPermutationTest.test_permutation_test_iv.<locals>.stat  s    ?Aq6400::rM   z2each sample in `data` must contain two or more ...r   r   r   z6`data` must be a tuple containing at least two samples)r   r   r   r   z `permutation_type` must be in...r   )permutation_typer   r   ru  r"   r#   r%   r&   r'   rv  rw  r-   r.   r/   )r1   r2   r3   r   ry  rz  s      r8   test_permutation_test_ivz,TestPermutationTest.test_permutation_test_iv  s`   	; 	; 	; G]:W555 	5 	5iii!-t444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 K]:W555 	) 	)T4(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)]9G444 	& 	&Q%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& /]:W555 	E 	Eiii3TDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 5]:W555 	6 	6iii3T.46 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 E]:W555 	K 	Kiii3TcJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K >]:W555 	N 	Niii3TuMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N >]:W555 	O 	Oiii3TvNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O @]:W555 	H 	Hiii3TGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H @]:W555 	I 	Iiii3THHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 0]:W555 	O 	Oiii3TvNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 7]:W555 	5 	5iii3T*35 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AA
A+BBB.CCC3DDD E%%E),E)F22F69F6G??HH'III4JJ JK&&K*-K*L33L7:L7NNNr0   r  )pairingssamplesindependentc                   	 | j                             d          }| j                             d          }	fd	d	_        d	_        d|dd}t	          j        ||f	fd |d          d|}t          	j        d	           t          	j        d           d	_        t	          j        ||f	fd
 |d          d|}t          	j        d           t          	j        d
           d	_        t	          j        ||f	fd |d          d|}t          	j        d           t          	j        d           t          |j        |j                   t          |j        |j                   d S )Nr+   c                     | j         dk    rdnt          |           }t          |j                  _        xj        dz  c_        t          j        | |          t          j        ||          z
  S r~  )r   r_   r  r  r  r4   r5   )rI   rS   r   r  r   s       r8   r   z1TestPermutationTest.test_batch.<locals>.statistic  sn    fkks1vvJ#&z93G#H#HI "714(((2714+@+@+@@@rM   r   r   T)r$   r  r   r   )r(   r0   r  r   r   r   )r   rB   r  r  r	   r   r   r   )
ro  r  r0   rI   rS   rk  rJ   rK   r  r   s
            @r8   r  zTestPermutationTest.test_batch  s    HOOBHOOB	A 	A 	A 	A 	A
 	 	#9I"$ $%q!fi Lq3?<??L LFJL LY&---Y)1---	%q!fi Lr3?<??L LFJL LY&+++Y)2...	%q!fi Lt3?<??L LFJL LY&***Y)4000T[$+...T[$+.....rM   zpermutation_type, exact_sizer  r   r   )r  re  r  r  c                 R   | j                             d          }| j                             d          }d }|dd}t          j        ||f|fd |d          d|}t	          |j        j        d           t          j        ||f|fi |}t	          |j        j        |           d S )Nr   c                 \    t          j        | |          t          j        ||          z
  S rd   r   rR   s      r8   r   z8TestPermutationTest.test_permutations.<locals>.statistic  +    714(((2714+@+@+@@@rM   T)r  r   r   )r$   r0   )r   rB   r	   r   r   null_distributionrt   )	ro  r  
exact_sizer0   rI   rS   r   rk  r[   s	            r8   test_permutationsz%TestPermutationTest.test_permutations  s     HOOAHOOA	A 	A 	A %5"$ $$aVY KA2>,q//K KEIK KS*/333$aVY??$??S*/<<<<<rM   c                    d\  }}d\  }}}t          j        ||z   |          |k    sJ t          j                            |          }t          j                            |          }||f}d }	ddd||d}
t          ||	fd	|i|
}t          ||	fd	t          j        i|
}|j        |j        k    sJ t          |j
        |j
        d
           d S )N)r  r   )re  	   i]  r   c                 \    t          j        | |          t          j        ||          z
  S rd   r   rR   s      r8   r   zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statistic=  r  rM   Tr  rA   r   r  r(   rx  r0   r$   {Gz?rz   )r
   binomr	   r|   r}   r   r4   infr   r   r   ro  rx  r   nxnypermutationsrI   rS   r   r   rk  r[   rK   s                r8   'test_randomized_test_against_exact_bothz;TestPermutationTest.test_randomized_test_against_exact_both0  s    %S*B}R"Wb))L8888JNNN##JNNN##!t	A 	A 	A #[#O OtY ' 'L '!%' 'iLLRVLtLL}....
DKd;;;;;;rM   c                    d\  }}d\  }}}d|z  |k    sJ t           j                            |          }t           j                            |          }||f}d }	ddd||d	}
t          ||	fd
|i|
}t          ||	fd
t          j        i|
}|j        |j        k    sJ t          |j        |j        d           d S )N)r  N)r   r   i }  r   r   c                 4    t          j        | |z
  |          S rd   r   rR   s      r8   r   zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statisticW  s    71q5t,,,,rM   Tr  rA   r  r$   r  rz   )	r	   r|   r}   r   r4   r  r   r   r   r  s                r8   *test_randomized_test_against_exact_samplesz>TestPermutationTest.test_randomized_test_against_exact_samplesI  s   
 +S,B"u|####JNNN##JNNN##!t	- 	- 	- #	[#O OtY ' 'L '!%' 'iLLRVLtLL}....
DKd;;;;;;rM   c                    d| j         }}d\  }}}t          j        |          |k    sJ t          j                            |          }t          j                            |          |g}fd}t          j        |          }	ddd||d}
t          ||	fd	|i|
}t          ||	fd	t          j
        i|
}|j        |j        k    sJ t          |j        |j        d
           d S )Nr  )re  re  i@  r   c                 :    t          j        |           d         S Nr   r	   pearsonrrI   rS   s    r8   r  zTTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic1dp  s    >!Q''**rM   Tr  rA   r  r$   r  rz   )r   r
   	factorialr	   r|   r}   r   rD  r   r4   r  r   r   r   )ro  rx  r   r  r  r  rI   r   r  r   rk  r[   rK   rS   s                @r8   +test_randomized_test_against_exact_pairingsz?TestPermutationTest.test_randomized_test_against_exact_pairingsc  s'    'S*B $$|3333JNNN##JNNN##s	+ 	+ 	+ 	+ 	+  4[AA	"	[#O OtY ' 'L '!%' 'iLLRVLtLL}....
DKd;;;;;;rM   rx  r  r  )r2  g    eAr   r=   c           	      (   t          j        d                              ddd          }t          j        t          j        d          d d d d f         d|          }t           j                            d          }t          j        ||||||          }d }t           j                            d          }	t          ||f|d	||||	
          }
t          |j
        |
j
        | j                   t          |j        |
j        | j                   d S )N<   r   r   rp   r   l   ;WNa )r  r   r0   rx  c                 :    t          j        | ||          j        S rd   r  rR   s      r8   r   zETestPermutationTest.test_against_permutation_ttest.<locals>.statistic  s    ?1ad333==rM   Tr   r$   rx  r   r0   rx   )r4   r^   ri   moveaxisrB   r   r	   r  r   r   r   ry   r   )ro  rx  r  r   rI   rS   r*  rJ   r   r+  rK   s              r8   test_against_permutation_ttestz2TestPermutationTest.test_against_permutation_ttest~  s    Ie$$Q1--K	!QQQd]3Q==y$$%899q!,T,0kK K K	> 	> 	> y$$%899A	d,8,7d-13 3 3
 	TYGGGGT[tyAAAAAArM   r  c                    | j                             dd          }| j                             ddd          }t          j        ||d          }fd	}t	          ||f|t
          j        d
| j                   }t          |j        |j        | j	                   t          |j
        |j
        | j	                   d S )Nr   r   rt   rs   rp   r   )rt   rr   rs   exact)rx  r  c                 >    t          j        | |d          j        S r  )r	   ks_2sampr   rI   rS   rx  s     r8   r  z>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1d  s)    >!QW.9; ; ;;DErM   r  r$   rx  r0   rx   )r   normalr	   r  r   r4   r  r   r   ry   r   )ro  rx  rI   rS   r   r  r[   s    `     r8   test_against_ks_2sampz)TestPermutationTest.test_against_ks_2samp  s     HOO!O,,HOOO33>!QKgNNN	E 	E 	E 	E 	E 1v{+448M M M 	x'9	JJJJ
HO$)DDDDDDrM   c                    | j                             dd          }| j                             dd          }dddd	}||         }t          j        |||
          }d }t	          ||f|t
          j        || j                   }t          |j        |j        | j	                   t          |j
        |j
        | j	                   d S )Nr   r   r  rp   r   r  r  r  r  rw  c                 6    t          j        | |          j        S rV   r	   ansarir   r  s     r8   r  z<TestPermutationTest.test_against_ansari.<locals>.statistic1d      <1%%//rM   r   rx   )r   r  r	   r  r   r4   r  r   r   ry   r   )	ro  rx  rI   rS   alternative_correspondencealternative_scipyr   r  r[   s	            r8   test_against_ansariz'TestPermutationTest.test_against_ansari  s     HOO!O,,HOO!O,, /8173>&@ &@" 7{C<12CDDD	0 	0 	0 1v{+6TXO O O 	x'9	JJJJ
HO$)DDDDDDrM   c           	         t           j                            dd| j                  }t           j                            dd| j                  }t          j        ||d|          }d }t          ||f|dt          j        |d| j        	          }t          |j	        |j	        | j
        
           t          |j        |j        | j
        
           d S )N)r   rp   r   r   rt   rr   r0   皙?r   )r   rx  c                 :    t          j        | ||          j        S rd   )r	   mannwhitneyur   rR   s      r8   r   z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statistic  s    %a666@@rM   Tr  rx   )r	   uniformr}   r   r  r   r4   r  r   r   ry   r   )ro  rx  rI   rS   r   r   r[   s          r8   test_against_mannwhitneyuz-TestPermutationTest.test_against_mannwhitneyu  s     M9!$(KKM9$TXNN%aLLL	A 	A 	A 1vyT+-6{$%DH> > > 	x'9	JJJJ
HO$)DDDDDDrM   c                    t           j                            dd| j                  }t           j                            ddd| j                  }t          j        ||d          }d	 }t          ||f|t          j        d
| j                  }t          |j	        |j	        | j
                   t          |j        |j        | j
                   d S )Nr   r   )rt   rs   r0   rp   r   )rt   rr   rs   r0   r  r)   c                 :    t          j        | |d          j        S N
asymptoticr)   )r	   cramervonmises_2sampr   r  s     r8   r  z9TestPermutationTest.test_against_cvm.<locals>.statistic1d  s*    -a5AC C CCLMrM   r  r   rx   )r	   r|   r}   r   r  r   r4   r  r   r   ry   r   )ro  rI   rS   r   r  r[   s         r8   test_against_cvmz$TestPermutationTest.test_against_cvm  s    JNNNBBJNNqNII-a7CCC	M 	M 	M
 1v{+448M M M 	x'9	JJJJ
HO$)DDDDDDrM   )rO   r   c                 6   t           j                            d          }|                    d          }|                    d          }|                    d          }|||f}d }d }t          j        |          }	t          j        |          }
t          j        |d          }t          j        |d	          }t          j        |d
          } |	||||          } |
||||          }d|dd| j        d}t          ||fdt           j        i|}t          ||fddi|}t          |j
        || j                   t          |j
        |j
        | j                   t          |j        |d           t          |j        |j        d           d S )Nl   Y}y!dh r   r   )r   r   r   )r   r   r   c                  (    t          j        |  j        S rV   )r	   kruskalr   r   s    r8   r  zITestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistic1d  s    =$'11rM   c                  (    t          j        |  j        S rV   )r	   r  r   r  s    r8   pvalue1dzFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1d   s    =$'..rM   )r   r   r   )r   r   r   r  r   Fr  r  r   r   rx  r  r0   r$   r   rx   gQ?rz   r   )r4   rB   r   r   rD  rh   r   r   r  r   r   ry   r   )ro  r   r   rI   rS   re   r   r  r  r   r   x2r"  z2expected_statisticexpected_pvaluerk  r[   rK   s                      r8    test_vectorized_nsamp_ptype_bothz4TestPermutationTest.test_vectorized_nsamp_ptype_both  s    i##$788JJQJ  JJIJ&&JJIJ&&1ay	2 	2 	2	/ 	/ 	/  4[AA	1(;; _Q	**_Q	**_Q	**&Yr2r=== &R$777 $T)$148M Mt[MMbfMMMkLLtLtLL 	'9	JJJJt~DIFFFF
O$????
DKd;;;;;;rM   c                    t           j                            dd| j                  }t           j                            dd| j                  }d }d }fd}t	          j        |          } |||d	          }|d         }	|d         }
d
dd| j        t          j        d}t          ||z
  f|fi |}t          ||f|fi |}t          |j
        |j
        | j                   dk    rt          |j
        |	| j                   t          |j        |
| j                   t          |j        |j        | j                   d S )N)r   r  r   r   r  r  c                 8    t          j        | d          j        S Nr  rw  r	   wilcoxonr   )re   s    r8   statistic_1samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1d#  s    >!888BBrM   c                 :    t          j        | |d          j        S r&  r'  r  s     r8   statistic_2samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1d'  s    >!QF;;;EErM   c                 2    t          j        | |          S )Nrw  )r	   r(  r  s     r8   test_1dz:TestPermutationTest.test_against_wilcoxon.<locals>.test_1d*  s    >!QK@@@@rM   r   r   Fr  )r   r   rx  r  r0   r$   rx   r  )r	   r  r}   r   r   rD  r4   r  r   r   r   ry   r   )ro  rx  rI   rS   r)  r+  r-  testr   r  r  rk  rJ   rK   s    `            r8   test_against_wilcoxonz)TestPermutationTest.test_against_wilcoxon  s    M9!$(KKM9$TXNN	C 	C 	C	F 	F 	F	A 	A 	A 	A 	A /88411%%% a[
#Q{$-tx!v' '  1(:CCdCCA(:CCdCC 	TYGGGG+%%DNM	JJJJZdi@@@@T[tyAAAAAArM   c           	      @   | j                             ddd          }d||dk    <   dd} ||          dd}}}t          j        ||||          }t          j        |f|d	d
t
          j        | j         |          }t          |j        |j        | j	                   d S )Nr   r   r+   r   rO   c                 6    t          j        | dk    |          S )Nr   r   r4   r   r   s     r8   r   z=TestPermutationTest.test_against_binomtest.<locals>.statisticJ  s    6!a%d++++rM   r/  rw  Tr  )r   r  r$   r0   rx  rx   r   )
r   integersr	   r   r   r4   r  r   r   ry   )	ro  rx  rI   r   kr`   r9  r   r[   s	            r8   test_against_binomtestz*TestPermutationTest.test_against_binomtestA  s     Ha,,!q&	
	, 	, 	, 	, )A,,Ca1?1aDDD$aT96?13dh1<> > > 	
HO$)DDDDDDrM   c                 ~   | j                             d          }|| j                             d          z   t          j        |d          }fd}t	          |f|dt
          j        | j                   }t          |j        |j        | j	                   t          |j
        |j
        | j	                   d S )	Nr  r   r  r)   c                 <    t          j        | d          j        S r  )r	   
kendalltaur   r  s    r8   r  z@TestPermutationTest.test_against_kendalltau.<locals>.statistic1d_  s    #Aq>>>HHrM   r  )r  r$   r0   rx   )r   r  r	   r8  r   r4   r  r   r   ry   r   )ro  rI   r   r  r[   rS   s        @r8   test_against_kendalltauz+TestPermutationTest.test_against_kendalltauX  s    HOOO##Q'''#Aq999	I 	I 	I 	I 	I t[:+-6J J J 	x'9	JJJJ
HO$)DDDDDDrM   c                    fd}t           j                            d          }|                    d          dk                        t                    }|                    d          d|z  z   dk                        t                    t
          j                            |          d         }t          |f|dt           j	        ||          }t          j
        ||	          }t          |j        |d                    d S )
Nc                 B    t          j        | dk    dk    z            S Nr   r2  r  s    r8   r   z@TestPermutationTest.test_against_fisher_exact.<locals>.statisticl  s     616a1f-...rM   l   	(yM4    g333333?g      ?r   r  )r  r$   rx  r0   rw  )r4   rB   r   astypefloatr	   contingencycrosstabr   r  fisher_exactr   r   )	ro  rx  r   r   rI   tabr[   rK   rS   s	           @r8   test_against_fisher_exactz-TestPermutationTest.test_against_fisher_exacti  s    	/ 	/ 	/ 	/ 	/ i##$788ZZ]]S ((//ZZ]]T!V#c)11%88((A..q1tY+-6{,/1 1 1 !#;???
DG,,,,,rM   )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   r   r   r   )r   r   r   )r   r   r   r   r   c                  :    t          j        | dd          j        S )NTr  rankedr*   )r	   page_trend_testr   r  s    r8   r  zLTestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.statistic1d  s'    (d0<> > >>GHrM   c                  :    t          j        | dd          j        S )NTr  rG  )r	   rI  r   r  s    r8   r  zITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1d  s'    (d079 9 99?@rM   r   Fr  r  r  r$   rq   rx   r   rz   )r   rB   r	   rankdatar   rD  r4   broadcast_arraysr   r  r   r   ry   r   )ro  r   rI   rS   re   r   r  r  r   r   r!  r"  rk  r[   rK   s                  r8   #test_vectorized_nsamp_ptype_samplesz7TestPermutationTest.test_vectorized_nsamp_ptype_samples|  s    HOOO++HOOO++HOOO++N14(((N14(((N14(((aD1ay	H 	H 	H	@ 	@ 	@  4[AA	1(;;&Y(;T(BNNN &""5t"<H4HH $T)$.C Ct[MMbfMMMkLLtLtLL'9	JJJJt~DIFFFF
O$)DDDD
DKd;;;;;;rM   r   )r   r   g      @g?g?g&_?g      @gd~$I"@glu?)rI   rS   expected_lessexpected_2sidedexpected_Pr_gte_S_meanr!  expected_avgexpected_std)o   k   rA   r   f   j   m   l   )	rT  rX  rV  b   i   g   n   rZ  r   gd?gd?gYo5 ?g     @@@g{C@gDmFA@casec                    |d         }|d         }|d         }|d         }|d         }|d         }|d         }|d         }	d	 }
t           j                                        5 }|                    t          d
           t          ||f|
t           j        d          }t          ||f|
t           j        d          }ddd           n# 1 swxY w Y   t          |j        || j	                   t          |j
        |d           t          |j
        |d           t          |j                                        |d           t          |j                                        |	d           |j        }|j                                        }t          |j                  }t          j        t          j        |j        |z
            t          j        ||z
            k              |z  }t          ||           dS )a  
        Results above from SAS PROC NPAR1WAY, e.g.

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

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

        rI   rS   r!  rN  rO  rP  rQ  rR  c                 6    t          j        | |          j        S rV   r  r  s     r8   r  z7TestPermutationTest.test_with_ties.<locals>.statistic1d  r  rM   z$Ties preclude use of exact statisticr  )r$   rx  r  Nrx   g|=rz   gư>)r4   testingr   r  UserWarningr   r  r   r   ry   r   r  r5   r   r_   r   r   )ro  r]  rI   rS   r!  rN  rO  rP  rQ  rR  r  r  r[   rK   Sr5   r`   Pr_gte_S_means                     r8   test_with_tiesz"TestPermutationTest.test_with_ties  s@   8 II!"67_-01!%&>!?N+N+	0 	0 	0 Z))++ 	=sJJ{$JKKK"Aq6;BF/57 7 7C#QFKRV0;= = =D		= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	'9	JJJJ
M>>>>_5AAAA.3355|$OOOO.2244lNNNN M$))++%&&rvc&;D&@AA"$&4.. 1 2 2234.>>>>>s   "ACCCzalternative, expected_pvalue))r  g?)r  gOO?)r  g<OO?c                     g d}g dd}fd}t          |f|dt          j        |          }t          |j        || j                   t          |j        |d	           d
S )aU  
        Results above from R cor.test, e.g.

        options(digits=16)
        x <- c(1.76405235, 0.40015721, 0.97873798,
               2.2408932, 1.86755799, -0.97727788)
        y <- c(2.71414076, 0.2488, 0.87551913,
               2.6514917, 2.01160156, 0.47699563)
        cor.test(x, y, method = "spearm", alternative = "t")
        )g@9?gY,?gOQ?g[iY@g|?g鈶BE)gQGn@gU?gz˱@?gmGA6@gB @g˭?g?c                 8    t          j        |           j        S rV   )r	   	spearmanrr   r  s    r8   r  zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1d  s    ?1a((22rM   r  )r  r$   rx  rx   gvIh%<=rz   N)r   r4   r  r   r   ry   r   )ro  rx  r"  rI   r!  r  r[   rS   s          @r8   test_against_spearmanr_in_Rz/TestPermutationTest.test_against_spearmanr_in_R  s    &1 1 10 0 0/	3 	3 	3 	3 	3 t[:+-6{L L L 	'9	JJJJ
O%@@@@@@rM   r(   )rO   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   )r1   r2   r3   rj   r   _batch_generator)ro  r(   s     r8   test_batch_generator_ivz+TestPermutationTest.test_batch_generator_iv  s    ]:-HIII 	A 	A-iii??@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   %AAAr   )r   r   rp   re  r=  ziterable, batch, expectedc                 Z    t          t          j        ||                    }||k    sJ d S rV   )rj   r   rj  )ro  iterabler(   r   gots        r8   test_batch_generatorz(TestPermutationTest.test_batch_generator   s/     ;/%@@AAhrM   c                     g d}g d}d }t          j        ||f|dd          }|j        |j        |j        }}}dt          j        ||dz
  k              z  t          |          z  }||cxk    rd	k    sn J d S )
N)r   r   r   r   )r   r   r  re  c                 8    t          j        | |          d         S r  r  r  s     r8   r   zFTestPermutationTest.test_finite_precision_statistic.<locals>.statistic-  s    >!Q''**rM   Fr  )r   r  r   r  gUUUUUU?)r	   r   r   r   r  r4   r   r_   )	ro  rI   rS   r   r[   rr   null	correct_ps	            r8   test_finite_precision_statisticz3TestPermutationTest.test_finite_precision_statistic&  s     LLLL	+ 	+ 	+ $aVY56@B B B-S5J46tq5y0111CII=	))))c))))))))rM   N)+r  r  r  ry   r  r  r1   r  r  r4   rB   r%  r   r  r
   r  r  r  r  slowr  r  r  r  r
  r  r  xslowr#  r/  r5  r9  rD  rM  
tie_case_1
tie_case_2rd  rh  rk  r  batch_generator_casesro  ru  rW   rM   r8   r  r    s       D> > >
35 35 35l [^bi.C.0i.C.E F F[/CCCE E"/ "/E EF F"/H [^bi.C.0i.C.E F F[;)+<7+<Q+?+?+BC/,mgmAq.A.ABDE E= =	E EF F=4< < <2 [< < <2< < <6 [],?@@ [^Y77[VY//B B 0/ 87	 A@B2 [],LMME E NME& [],LMME E NME* [],LMME E NME"E E E$ [[VW--*< *< .- *<\ [],LMM#B #B NM#BJ [],LMME E NME,E E E" [],LMM- - NM-$ [[VW--'< '< .- '<V $||---#/%(,8(+"*GE EJ ?>>CCC#/%1,8(,"+XG GJ [[Vj*%=>>:? :? ?> :?x [;>? ?A A	? ?A< [Wg..A A /.A $eAhh2.#eAhhIIIyyy+AB#eAhhIIIyyy1a&+IJL [824 4 4 4* * * * *rM   r  c                  (   t          j        g dt                    t          j                  } t	                      }d}t          j                  D ]P}|dz  }t          j        || d d                   }|                    t          d |D                                  Qt          j
        fdt          t                    dz
            D                       }t          ||           t          t          |          |           d S )N)r   r   r   )dtyper   r   rO   c                 ,    g | ]}t          |          S rW   )	frozenset)r   rX   s     r8   
<listcomp>z4test_all_partitions_concatenated.<locals>.<listcomp>J  s    !E!E!E1)A,,!E!E!ErM   c           
          g | ]D}t          j        t          |d                    t          |dz   d                              ES r<  )r
   r  r   )r   rX   r`   s     r8   r  z4test_all_partitions_concatenated.<locals>.<listcomp>L  sU     5 5 5  #=QqrrUS1Q344\\BB 5 5 5rM   )r4   r   intcumsumsetr   _all_partitions_concatenatedsplitaddr6   productr  r_   r   )ncall_partitionsr  partition_concatenatedpartitioningr   r`   s         @r8    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z 5 5 5 5$)#a&&(OO5 5 5 6 6H (###^$$h/////rM   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: r+   r   c                 F    t           j                            |           S )Nr  )r	   r|   r}   )rt   r   s    r8   r}   z&test_parameter_vectorized.<locals>.rvs[  s    z~~4c~:::rM   r;   )r   r0   r*   r  )r   r0   r  )r   r}   r  r$   rA   c                 t    | j         dk    st          j        |           sJ t          j        | |          S r~  )r   r4   r  r5   )rI   r   r   s     r8   r   z,test_parameter_vectorized.<locals>.statistici  s8    vzzR^Av66zz6wqt$$$$rM   )r   r   Tc                 D    | j         dk    sJ t          j        |           S r<  )r   r4   r5   rs  s    r8   r   z,test_parameter_vectorized.<locals>.statistico  s    v{{{{wqzzrM   FrW   )r4   rB   r   r'  r	   update)	r  r}   fun_optionscommon_optionsr  optionsr   r   r   s	          @@r8   test_parameter_vectorizedr  S  si   
 )


/
/CZZRZ  F; ; ; ; ; +1C+7!9 !917	3<E(G (G28'E'E	G GK
 $S)N
%
"
"C(#GNN>"""% % % % % C8)88888C8)88888   C8)88888C9)9999999rM   )8numpyr4   r1   scipy.statsr   r   r   numpy.testingr   r   r   scipyr	   r
    r   scipy._lib._utilr   scipy.optimizer   r9   r  r  rL   ra   rn   r   tests_Ritemsr   tests_against_itself_1sampr   r   r   tests_against_itself_2sampr   r   xfail_on_32bitr   r  r  r  r  r#  r-  r;  r?  rF  rR  rv  filterwarningsrf  rh  r  r  r  rW   rM   r8   <module>r     s        E E E E E E E E E E J J J J J J J J J J             ) ) ) ) ) ) ) ) ) ) ) )      <A <A <A~ #A#A#ABB++; ; ,+ CB; #A#A#ABB> > CB>2 #A#A#ABB++D%=11(: (: 21 ,+ CB(:V #A#A#ABB@ @ CB@ #' " "
 +W]]__==C C >=C. (,,0%)+ + 
7  7  7 t1 1 12 +399;;= =" "= ="J (+,/1 1  +399;;= =+ += =+\ G\#:;;!Q((> > )( <;>. EFF#A#A#ABB!Q((> > )( CB GF>, #A#A#ABB( ( CB( #A#A#ABB6 6 CB6"2 2 2& /!T;;    <; 2! ! !& m]%CDD- - ED-2 +++..++" " ,+ /.". . ." ++    ,+ 4 #A#A#ABB> > CB>> 455!> !> 65 !>Lq$ q$ q$ q$ q$ q$ q$ q$hL
* L
* L
* L
* L
* L
* L
* L
*j0 0 0* NNNP P: :P P: : :rM   