
    S_fV                       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*                  j-                  dg d      ej*                  j-                  dg d      d               Zej*                  j-                  dg d      d        Zej*                  j-                  dg d      ej*                  j-                  dg d      ej*                  j-                  dddg      d                      Zej*                  j5                  d      ej*                  j-                  dg d      d               ZddddZej*                  j-                  dej;                               d        ZddddZd Z d Z!ej*                  j-                  dej;                               d         Z"d!d"d#Z#ej*                  j-                  de#j;                               d$        Z$ej*                  j-                  dd%d&g      ej*                  j-                  dd d'g      d(               Z%ej*                  j5                  d)      ej*                  j-                  dg d      ej*                  j-                  dd d'g      d*                      Z&ej*                  j-                  dg d      d+        Z'ej*                  j-                  dg d      d,        Z(d- Z)ej*                  j-                  d.d d/g      d0        Z*ej*                  j5                  d1      ej*                  j-                  dg d      d2               Z+d3 Z,ej*                  j-                  d4d5d6g      d7        Z-ej*                  j-                  d8g d9      ej*                  j-                  dg d      d:               Z.d; Z/ej*                  j-                  dg d      d<        Z0ej*                  j-                  dg d      d=        Z1ej*                  jd                  ej*                  jg                  d>      d?               Z4 G d@ dA      Z5 G dB dC      Z6dD Z7ej*                  j-                  dEg dF      dG        Z8y)H    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        d} t        j                  t        |       5  t        t               t        j
                         d d d        d} t        j                  t        |       5  t        g ddgft        j
                         d d d        d} t        j                  t        |       5  t        g dg dft        j
                  d	
       d d d        d} t        j                  t        |       5  t        dt        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d       d d d        d} t        j                  t        |       5  t        g dft        j
                  d        d d d        d!} t        j                  t        |       5  t        g dft        j
                  d"#       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   y xY w)$Nz%`data` must be a sequence of samples.match   z(`data` must contain at least one sample.z>each sample in `data` must contain two or more observations...r   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    Alib/python3.12/site-packages/scipy/stats/tests/test_resampling.pytest_bootstrap_ivr9      s   5G	z	1 !RWW 9G	z	1 $%'277#$ OG	z	1 -9qc"BGG,- OG	z	1 C9l+RWWTBC AG	z	1 1!RWW01 +G	z	1 39,c23 2G	z	1 @9,$?@ >G	z	1 <9,U;< >G	z	1 =9,V<= <G	z	1 69,u56 <G	z	1 79,v67 $G	z	1 89,78 PG	z	1 >9,"=> FG	z	1 89,Q78 3G	z	1 A9,i@A Aq $ $- -C C1 13 3@ @< <= =6 67 78 8> >8 8A As   P#P& P%+#P23P?5 Q: Q? Q& Q3	 R  R R R' R4" S PP"%P/2P<?Q	QQ#&Q03Q= R
RR$'R14R= S	r*   )basic
percentileBCar   r   r   r   c           	         t         j                  j                  d       t         j                  j                  ddd      }t	        |ft         j
                  d | d|d      }t	        |ft         j
                  d| d|d      }t        |j                  j                  |j                  j                         t        |j                  j                  |j                  j                         t        |j                  |j                         y )Nr   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     IINN1
		r2r"AaT277$v"#$CADaT277"V"#$CAD ))--t/G/G/K/KL))..0H0H0M0MN$$d&9&9:    c                    t         j                  j                  d       d}t         j                  j                  |      t         j                  j                  |      dddfd	}t        j                  t                    }t        |f|d      }t        fdd      }t        |j                  |j                         t        |j                  |j                         y )	Nr   rA   c                 2    | |z
  dz  j                  |      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resrS   rI   rR   s        r8   my_paired_statisticz2test_bootstrap_paired.<locals>.my_paired_statisticg   s&    aDaD1a 
rM   r/   T)r   r0   )
r4   rB   rC   rD   arangelenr   r   rE   rH   )	r*   nr[   rW   rJ   rK   rS   rI   rR   s	         @@@r8   test_bootstrap_pairedra   \   s     IINN1A
		qA
		qA* 			#a&AaT.Q?DaV\$QGDD,,d.F.FGD'')<)<=rM   r   TFc           	         t         j                  j                  d       dd}d}||   }t         j                  j                  |      }t         j                  j                  |      }t         j                  j                  |      }t	        |||f||| ddd      }	|	j
                  j                  |	j                  j                  dz   k(  sJ g d}
||
|<   t        j                  |j                  |
      |      }t        j                  |j                  |
      |      }t        j                  |j                  |
      |      }t	        |||f||| d|d      }t        |j                  j                  |	j                  j                         t        |j                  j                  |	j                  j                         t        |j                  |	j                         t        |      }|j                  |       t!        |j                  j                  j                  |       t!        |j                  j                  j                  |       t!        |j                  j                  |       y )	Nr   c                 r    | j                  |      |j                  |      z   |j                  |      z   S Nr   rP   )rI   rR   zr   s       r8   rS   z/test_bootstrap_vectorized.<locals>.my_statistic   s3    vv4v 166t6#44qvv4v7H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   rS   rg   	n_samplesrI   rR   re   rJ   ri   rK   result_shapes                r8   test_bootstrap_vectorizedrn   v   s    IINN1I EdI
		y!A
		y!A
		y!AaAYVF"#!>D''--""((612 3 2 GGDM
		'*E2A
		'*E2A
		'*E2AaAYVF"#$CAD D,,00,,002D,,11,,113D'')<)<=;LT))--33\B))..44lC$$**L9rM   z#MemoryError with BCa observed in CIc                    t         j                  j                  d      }t        j                  j                  ddd|      }d}t        j                  t        |      dz
  t        j                  |      t        j                  |            }|j                  |	      }|j                         }t        |ft         j                  d| |
      }t        di |d|i}t        |j                  |d       t        |j                   |d       |j#                  t        d|             t        di ||dd}t        |j                  j$                  |j'                  |      d       |j#                  t        d|             t        di ||dd}t        |j                  j(                  |j'                  d|z
        d       y )Nl   )ICbX     r     )locscalesizer0   ffffff?r   )dfrr   rs   )
confidence)data	statisticr$   r*   r0   r!   gMb@?rtolga2U0*3?atolr   r$   r,   lessr!   alternativegreaterrV   )r4   rB   default_rngr	   normrvstr_   r5   semintervalstddictr   r   rE   rH   updaterG   ppfrF   )	r*   rngrx   alphadistexpected_intervalexpected_seconfigrZ   s	            r8   test_bootstrap_against_theoryr      sc    ))

 3
4C::>>aqt#>FDE77c$ikrwwt}EIIdOLD7((*Kw"''tc3F

5f
5u
5CC++->TJC&&$?
MM$1s;<

If
Iu&
ICC++00$((5/M
MM$1s;<

Lf
Lu)
LCC++//!E'1BNrM   )gQ7@gHzS@)g\(<@g=
ףpU@)gHz'@@gQV@zmethod, expectedc                     t        j                  g d      }t        |ft         j                  d| d      }t	        |j
                  |d       y )N)r+   r@         )@r   g+@            "   2   Q   Y   y         i@B r   )r$   r*   r0   g{Gzt?rz   )r4   arrayr   r5   r   rE   )r*   expectedrI   rZ   s       r8   test_bootstrap_against_Rr      sD    " 	 5 	6A
QD"''wv!"$CC++XEBrM   i  i  c                  `   g d} g d}d }t         j                  j                  d      }t        j                  | |f|dd|      }t        j                  | |f|dd|      }t        j                  | |f|d	d|      }t        j
                  |j                        }t        j
                  |j                        }t        j
                  |j                        }	d
}
||
z
  t        |
      z  }||
z
  t        |
      z  }|	|
z
  t        |
      z  }|dk  sJ |dkD  sJ t        |      dk  sJ y )N)gbF?gp?g|Hܿgxy[e}u׿g*g_?ggi6g2?)gF?gK?g&F}/?g?g(iC?g}$ץ?g hu?gfj}!?c                 h    t        j                  | |      }t        j                  ||      }||z
  S rd   )r	   skew)rI   rR   r   s1s2s        r8   ry   z1test_multisample_BCa_against_R.<locals>.statistic   s+    ZZ%ZZ%BwrM   l   tgy4r:   rA   )r*   r(   r0   r;   bcag1*g333333ÿg333333?Q?)r4   rB   r   r	   r   r5   rE   abs)rI   rR   ry   r   	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      s3   	.A	9A
 ))

 2
3CA	'&)=I//1a&)L(+#?Kooq!fi$'c;G 	556I''+99:Kggg112G I i'Y7J)+S^;L)#S^3H $x=4rM   c                     t        j                  g d      } t        j                  g d      }dd}|| g}t        j                  ||      }d}d}|j                  }d}t        j                  ||||||      \  }	}	}
t        |
d       y )	N)	r+         (   .   r   4   h      )   r   &   ^   c         c                 `    t        j                  | |      t        j                  ||      z
  S rd   r4   r5   )re   rR   r   s      r8   ry   z:test_BCa_acceleration_against_reference.<locals>.statistic$  s#    wwqt$rwwqt'<<<rM   r]   ru   rA   ge{?r   )r4   r   r	   r   rf   r   _bca_intervalr   )rR   re   ry   rx   rZ   r   r   theta_hat_br(   _a_hats              r8   'test_BCa_acceleration_against_referencer     s     	78A
/0A= q6D
//$	
*CDE,,KE++D)T5,7@KAq%E/0rM   c           	         t         j                  j                  d       d}d}d}t        j                  dd      }|j                         }d}|j                  ||f	      }t        |ft         j
                  ||d
| d      }	|	j                  }
t        j                  |
d   |k  ||
d   k  z        }||k(  sJ t        j                  |||      j                  }|dkD  sJ y )Nr   rA     ?rp   r   rr   rs   i  rt   r   r]   ry   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_replicationsrx   rZ   cici_contains_truer   s                r8   #test_bootstrap_against_itself_1sampr   3  s     IINN1AK ::!1%D		I N88.!,8-D
TG gg%5 +!C 
	 	 B vvr!uy0YA5FGHx''' __-~-//5v C<<rM   i|  iz  )r:   r;   c           	      2   t         j                  j                  d       d}d}d}d}dd}t        j                  dd	      }t        j                  d
d	      }|j                         |j                         z
  }	d}
|j                  |
|f      }|j                  |
|f      }t        ||f|||d| d      }|j                  }t        j                  |d   |	k  |	|d   k  z        }||k(  sJ t        j                  ||
|      j                  }|d
kD  sJ y )Nr   rA   x   r   r   r]   c                 h    t        j                  | |      }t        j                  ||      }||z
  S rd   r   )data1data2r   mean1mean2s        r8   my_statz4test_bootstrap_against_itself_2samp.<locals>.my_statm  s,    D)D)u}rM   r   r   r     r   r   r   r\   r   )r*   r   n1n2r$   r!   r   dist1dist2r   r   r   r   rZ   r   r   r   s                    r8   #test_bootstrap_against_itself_2sampr   ^  s(    IINN1	B	BK JJ1A&EJJ3a(E

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

 r   r   r   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   rx   rZ   refs         r8   test_bootstrap_gh15678r    s     ))


0C::!1%D8838/D7D
D%**V!#!6!6t!<>C D%**V!#!6!6t!<PCC++S-D-DEC&&(:(:;c(("**555rM   c            	         t         j                  j                  d      } t        j                  dd      }|j                  d|       }t        j                  |      }|f}t        |t         j                  ddt         j                  j                  d      	      }||j                  j                  k(  sJ t        t        j                  |       t         j                  ddt         j                  j                  d      	      }t        |j                  j                   |j                  j                         t        |j                  j                   |j                  j                         y )
Nl   n!|'x`5 r   r   r   rA   r  r<   if  r  )r4   rB   r   r	   r   r   minr   rE   rF   r   maxr   rG   )r   r   rx   true_minrZ   rK   s         r8   test_bootstrap_minr    s    ))

 0
1C::!1%D8838/Dvvd|H7D
D"&&C!#!6!6t!<>Cs..22222bhhtn_bffU"$))"7"7"=?DS,,000,,113S,,111,,002rM   additional_resamplesr   c           	      z   t         j                  j                  d      }|j                  d      }d}| }|| z   }t         j                  j                  d      }t        j                  |ft         j
                  ||dd      }t        j                  |ft         j
                  ||d	d
|      }t         j                  j                  d      }t        j                  |ft         j
                  ||d	d
      }t        |j                  |j                  d       t        |j                  |j                  d       y )Nl    ]4M rA   r   r   l   mdpi4 ru   r;   )r$   r0   r!   r*   r   r<   )r$   r0   r!   r*   r,   +=rz   )	r4   rB   r   r	   r   r5   r   rH   rE   )r  r   rI   r   r   n3rZ   r  s           r8   test_re_bootstrapr     s    ))

 0
1C


A	B	B	"	"B
))

 2
3C
//1$Rc+/FC
//1$Rc+/+.0C ))

 2
3C
//1$Rc+/?C C&&(:(:GC++S-D-D rM   zSensible to machine precisionc                    t         j                  j                  d      }t        j                  dd      }|j                  d|      f}t        |t         j                  |d      }t        j                  di |d	d
i}|j                  t        d|             t        j                  di |ddd}t        j                  di |ddd}t        |j                  j                  |j                  j                  d       t        |j                  j                  |j                  j                  d       t        j                  |j                  j                        sJ t        j                  |j                  j                        sJ t!        j"                  t$        d      5  t        j                  di |ddi d d d        y # 1 sw Y   y xY w)Nl   @Qixt r   r   r   rA   r  r]   )rx   ry   r0   r   r!   r   r   r~   ru   r   r   r   r  rz   z`alternative` must be one ofr   r   z	ekki-ekkirV   )r4   rB   r   r	   r   r   r   r   r   r   r   rE   rG   rF   isneginfisposinfr1   r2   r3   )r*   r   r   rx   r   r   lgs           r8   test_bootstrap_alternativer&    sm    ))

 3
4C::!1%DHH3cH24DtrvvCbIF7&737A
MM$1q9:L&L4VLAO&O4YOAA))..0E0E0J0J A))--q/D/D/H/H ;;q,,00111;;q,,11222	z)G	H ;:&:k:; ; ;s   .GGc                     d} t         j                  j                  d       t        j                  j                  |  }t	        t        j                  |            }t        | d         D ]<  }|d|d d f   }t        j                  ||d      }t        j                  ||      r<J  t        j                  t        t        j                  |d            d      }t        j                  ||      sJ y )	Nr   r   rp      r   r]   .r   r   r'   )r4   rB   rC   rD   nextr   _jackknife_resamplerangedeletearray_equalconcatenaterj   )rg   rI   rR   rW   slcr   y2s          r8   test_jackknife_resampler3  '  s    EIINN1
		A[,,Q/0A59 - Q	l99Q+~~c8,,,- 
[<<QaHI
!B>>"a   rM   rng_nameRandomStater   c                    t        t        j                  | d       }|t        j                  |  d        |d      } |d      }d}d}t        j                  j                  d       t        j                  j                  | }t        j                  |||      }t        |      D ]?  }|d|d d f   }	t        |d|d   |d         }
|d|
f   }t        j                  |	|      r?J  y )Nz not available.r   r+   r(  r/   .r]   )getattrr4   rB   r1   skiprC   rD   r   _bootstrap_resampler-  r   r/  )r4  r   rng1rng2r$   rg   rI   rR   rW   r1  jsr   s               r8   test_bootstrap_resampler=  :  s    
"))Xt
,C
{xj01q6Dq6DKEIINN1
		A'';TJA; - Q	l$59eBi8S"W:~~c8,,,-rM   score)r         ?r   c                     d}t         j                  j                  d       t        j                  j                  | }t	        j
                  || d      }d } ||| d      dz  }t        ||d       y )N)r+         r   r]   r   c                 N    t        j                  t        j                  || |      S rU   )r4   apply_along_axisr	   percentileofscore)rX   r>  r   s      r8   vectorized_posz0test_percentile_of_score.<locals>.vectorized_pos\  s    ""5#:#:D!UKKrM   rA   V瞯<)r4   rB   rC   rD   r   _percentile_of_scorer   )r>  r   rg   rI   prF  p2s          r8   test_percentile_of_scorerK  T  sf     EIINN1
		A((E;AL 
5r	*3	.BAr5!rM   c                  t   d} t         j                  j                  d       t        j                  j                  |  }t        j                  j                  | d d  dz  }t	        j
                  ||      }t        | d         D ]2  }||   }t        j                  ||   ||   d      }t        ||d       4 y )N)r+   rA  r   r]   rA   r   rG  )	r4   rB   rC   rD   r   _percentile_along_axisr-  r;   r   )rg   rI   qrR   rW   rZ   r   s          r8   test_percentile_along_axisrO  d  s    
 EIINN1
		A
		cr
#c)A**1a0A58_ .d==1qt"5Xu-.rM   c                    d fd}t        j                  |      }t        j                  j	                  d       t        j                  j                  ddd      }t        j                  j                  ddd      }t        j                  j                  ddd      } ||||       } |||||       }t        ||       y )	Nc                 ,     t         fd|D              S )Nc              3   @   K   | ]  }|j                          y wrU   rP   r   s     r8   r   z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>{  r   r   r   r   s   ` r8   ry   z+test_vectorize_statistic.<locals>.statisticy  r   rM   c                  D    | D ]  }|j                   dk(  rJ   | ddiS r   r   r   s     r8   r   z.test_vectorize_statistic.<locals>.statistic_1d}  r   rM   r   r   rp   r)  r   r   )r   _vectorize_statisticr4   rB   rC   rD   r   )	r   r   
statistic2rI   rR   re   rJ   rK   ry   s	           @r8   test_vectorize_statisticrV  u  s    9( 11,?JIINN1
		q!QA
		q!QA
		q!QAQ14(DaAD)DD$rM   c                    t         j                  j                  d      }d}t        j                  j
                  |d|d}d }t        |f|| ddd	      }t        j                  |j                  j                  j                  |k  |j                  j                  j                  |kD  z  d
      }t        j                  |dk\        sJ t        j                  |dk        sJ |j                  j                  j                  dk(  sJ |j                  j                  j                  dk(  sJ |j                  j                  dk(  sJ |j                  j                  dk(  sJ y )Nl   s: )r   r?  )rA   rA   r  c                     t        j                  t        j                  | |      t        j                  | |d      g      S )Nr   )ddof)r4   asarrayr5   r   )rx   r   s     r8   ry   z/test_vector_valued_statistic.<locals>.statistic  s5    zz2774.66$157 8 	8rM   r]   '     )r*   r   r$   r(   r   r   Z   rA   r   rA   )r   rA   r[  )r4   rB   r   r	   r   r   r   r   rE   rF   TrG   allrg   rH   rf   )r*   r   paramsr   ry   rZ   countss          r8   test_vector_valued_statisticrc    sA    ))



+CFZZ^^V*3GF8 VIyb $C1C VVS,,0022V;..3355>@F 66&B,66&C-   ""&&,,888""''--999##x///%%++~===rM   zignore::RuntimeWarningc                     t         j                  j                  d      } d fdfd}g dg dg dg dg d	g}t        j                  |      j                  }t        ||| d
      }t        || d
      }t        |j                  j                  d   |j                  j                  d       t        |j                  j                  d   |j                  j                  d       y )Nl   \Qc                     | j                  |      }|j                  |      }| |d   z
  ||d   z
  z  j                  |      }d|z  | j                  |      |j                  |      z   ||z
  dz  z   z  S )N).Nr   )r5   var)rI   rR   r   xmymcovs         r8   concordancez9test_vector_valued_statistic_gh17715.<locals>.concordance  st    VVD\VVD\ByM!a"Y-&78>>tDCAEE$K!%%+5bQFGGrM   c                 R    | |z   }| |z   }t        j                   |||            S rU   )r4   
nan_to_num)tptnfpfnr   actualr   rj  s          r8   ry   z7test_vector_valued_statistic_gh17715.<locals>.statistic  s-    b7}}[4@AArM   c                 >     g ||  t         j                  df   S )N.)r4   newaxis)r   argsry   s     r8   statistic_extradimz@test_vector_valued_statistic_gh17715.<locals>.statistic_extradim  s#    %$%%bjj#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   rG  r|   )
r4   rB   r   r   r_  r   r   rE   rF   rG   )r   ru  rx   rZ   r  rj  ry   s        @@r8   $test_vector_valued_statistic_gh17715rw    s     ))

 2
3CHB
7 	D
 88D>D
D,3t
LC
D)#d
CCC++//2++//e=C++003++00u>rM   c            
          e Zd ZdZd Zd Zd Zej                  j                  d e
dd            d        Zej                  j                  d	d
      ej                  j                  d ej                  ddd            d               Zej                  j                  dej                   ej"                  f      ej                  j                  d	d      ej                  j                  d ej                  ddd            d                      Zej                  j                  d ej&                  dd            d        Zej                  j                  d ej                  ddd            d        Zej                  j                  dd      ej                  j                  d e
d            d               Zd Zd Zd Zej                  j5                  d      d        Zy )!TestMonteCarloHypothesisTestg?c                     fdS )Nc                       | di|S )Nr0   rV   )rt  kwdsrsrvs_ins     r8   <lambda>z2TestMonteCarloHypothesisTest.rvs.<locals>.<lambda>  s    VT%K%Kd%K rM   rV   )selfr~  r}  s    ``r8   r   z TestMonteCarloHypothesisTest.rvs  s	    KKrM   c                    d }d}t        j                  d      t        j                  d      f}t        j                  j                  t        j                  j                  f}t        j                  t        |      5  t        ||d d       d d d        d	}t        j                  t        |      5  t        g d
t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        g d
t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        g d
d |       d d d        t        j                  t        |      5  t        ddgddggd d g|       d d d        d}t        j                  t        |      5  t        g d
gd d g|       d d d        d}t        j                  t        |      5  t        g d
t        j                  j                  d        d d d        d}t        j                  t        |      5  t        g d
t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        g d
t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        g d
t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        g d
t        j                  j                  |d       d d d        d}t        j                  t        |      5  t        g d
t        j                  j                  |d        d d d        y # 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   QxY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)!Nc                 @    t        j                  |       j                  S rU   )r	   skewnormry   rI   s    r8   statz@TestMonteCarloHypothesisTest.test_input_validation.<locals>.stat  s    >>!$...rM   z/Array shapes are incompatible for broadcasting.r   rp   )r   rp   r   c                      yNr   rV   rI   rR   s     r8   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>  s    rM   r]   r   r   r   r   r   r   z0`rvs` must be callable or sequence of callables.r   r   r   r   c                     | S rU   rV   r  s    r8   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>  s    ! rM   zIf `rvs` is a sequence...c                     | S rU   rV   r  s    r8   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>  s    Q rM   c                     | S rU   rV   r  s    r8   r  zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>  s    ! rM   z`statistic` must be callable.)`n_resamples` must be a positive integer.r"   r#   r%   r&   r'   `alternative` must be in...r   r   )
r4   zerosr	   r   r   r1   r2   r3   r   	TypeError)r  r  r7   rx   r   s        r8   test_input_validationz2TestMonteCarloHypothesisTest.test_input_validation  sW   	/ D "((6"23zz~~uzz~~.]]:W5 	AT3R@	A /]]:W5 	HY

3G	H E]]:W5 	NY

M	N E]]9G4 	4Yd3	4]]9G4 	Jq!fq!f-T/BDI	J .]]:W5 	Li[;*DdK	L 2]]9G4 	>Y

=	> >]]:W5 	0Y

).0	0 >]]:W5 	1Y

)/1	1 @]]:W5 	KY

EJ	K @]]:W5 	LY

FK	L 0]]:W5 	1Y

)/1	1 	1Y	A 	A	H 	H	N 	N	4 	4	J 	J	L 	L	> 	>	0 	0
	1 	1
	K 	K	L 	L	1 	1s   ?N85*O*OOO,O9<(P	*P*P '*P-6*P:*Q8OOOO),O69PPP P*-P7:QQc                 D   t         j                  j                  d      }|j                  d      }fdd_        d_        |ddd}| j                  t        j                  j
                  t         j                  j                  d            |d	<   t        dd
di|}t        j                  d       t        j                  d       | j                  t        j                  j
                  t         j                  j                  d            |d	<   d_        t        dd
di|}t        j                  d       t        j                  d       | j                  t        j                  j
                  t         j                  j                  d            |d	<   d_        t        di |}t        j                  d       t        j                  d       t        |j                  |j                         t        |j                  |j                         y )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	   skewtestry   )rI   r   r  ry   s      r8   ry   z:TestMonteCarloHypothesisTest.test_batch.<locals>.statistic  sU    ffks1vJ#&z93G3G#HI ">>!$/999rM   r   r   T)r   ry   r$   r   i"r   r(   r     r   r   r   rV   )r4   rB   r   r  r  r   r	   r   r   r   r   )r  r   rI   r|  rJ   rK   res3ry   s          @r8   
test_batchz'TestMonteCarloHypothesisTest.test_batch  s    ii##K0JJrN	:
 	 	)#49 hhuzz~~ryy/D/DX/NOU0a040Y&&-Y))1-hhuzz~~ryy/D/DX/NOU	1b1D1Y&&+Y))2.hhuzz~~ryy/D/DX/NOU	'$'Y&&*Y))40T[[$++.T[[$++.rM   r   r   c                    t         j                  j                  d      }| j                  t        j
                  j                  |      }g d}d||<    ||      }t	        j                  ||      }d }t        |||dd|	      }t        |j                  |j                         t        |j                  |j                  | j                  
       y )Nit$ r   r   r   rA   r   r   c                 D    t        j                  | |      j                  S rd   )r	   r  ry   r  s     r8   ry   z9TestMonteCarloHypothesisTest.test_axis.<locals>.statisticI  s    >>!$/999rM   Ti N  )r   r$   r   r|   )r4   rB   r   r   r	   r   r  r   r   ry   r   r}   )	r  r   r   norm_rvsrt   rI   r   ry   rZ   s	            r8   	test_axisz&TestMonteCarloHypothesisTest.test_axis=  s     ii##G,88EJJNNC0T
$>>!$/	: q(I$+0t= 	x'9'9:

HOO$))DrM   r   r   r   rX   g      r?  rp   c                 v   t         j                  j                  d      }t        j                  j                  |d|      }t        j                  |t        j                  j                        }fd}| j                  t        j                  j
                  |      }t        |||dd      }t        |j                  |j                         d	k(  r-t        |j                  |j                  | j                  
       y dk(  r0t        d|j                  z
  |j                  | j                  
       y y )Ni)rB  rX   rt   r0   r  c                 z    t        j                  | t         j                  j                  d      j                  S Nasymp)moder   )r	   ks_1sampr   cdfry   )rI   r   s    r8   statistic1dzGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1d[  s+    >>!UZZ^^'.9;;D9ErM   r   Fr$   r   r   r   r|   r   r   )r4   rB   r   r	   r  r   r  r   r  r   r   ry   r   r}   )	r  r   rX   r   rI   r   r  r  rZ   s	    `       r8   test_against_ks_1sampz2TestMonteCarloHypothesisTest.test_against_ks_1sampR  s     ii##H-NN#>>>!UZZ^^M	E 88EJJNNC0q(K+/E+68 	x'9'9:)#CJJdiiHF"AcjjL(//		J #rM   hypotestr   r   	two-sidedr*  r   c                    t         j                  j                  d      }t        j                  j                  |d|      } ||      }fd}| j                  t        j                  j
                  |      }t        |||d|      }	t        |	j                  |j                         t        |	j                  |j                  | j                         y )	Ni	   r  r  c                 ,     | |      j                   S rd   )ry   )rI   r   r  s     r8   ry   zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statistict  s    AD)333rM   Tr   r   r|   )r4   rB   r   r	   r  r   r   r   r   ry   r   r}   )
r  r  r   rX   r   rI   r   ry   r  rZ   s
    `        r8   test_against_normality_testsz9TestMonteCarloHypothesisTest.test_against_normality_testsj  s    
 ii##H-NN3?A;7	4 88EJJNNC0q(I$+68 	x'9'9:

HOO$))DrM   c                    t         j                  j                  d      }t        j                  j                  |d|      }t        j                  |      }d }| j                  t        j                  j
                  |      }t        |||dd      }t        |j                  |j                         t        |j                  |j                  | j                         y )	Ni!M r  r  c                 D    t        j                  | |      j                  S rd   )r	   
normaltestry   r  s     r8   ry   zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statistic  s    ##AD1;;;rM   Tr   r  r|   )r4   rB   r   r	   r  r   r  r   r   r   ry   r   r}   )r  rX   r   rI   r   ry   r  rZ   s           r8   test_against_normaltestz4TestMonteCarloHypothesisTest.test_against_normaltest~  s     ii##H-NN3?##A&	< 88EJJNNC0q(I$+46 	x'9'9:

HOO$))DrM   c                    t         j                  j                  d      }t        j                  j                  |d|      }t        j                  |t        j                  j                        }d }| j                  t        j                  j
                  |      }t        |||ddd      }t        |j                  |j                         t        |j                  |j                  | j                  	       y )
NirB  r  c                 r    t        j                  | t         j                  j                        j                  S rU   )r	   cramervonmisesr   r  ry   r  s    r8   r  zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1d  s#    ''5::>>:DDDrM   r   Fr   r  r|   )r4   rB   r   r	   r  r   r  r   r  r   r   ry   r   r}   )r  rX   r   rI   r   r  r  rZ   s           r8   test_against_cramervonmisesz8TestMonteCarloHypothesisTest.test_against_cramervonmises  s     ii##I.NN#>''5::>>:	E 88EJJNNC0q(K+/E+46 	x'9'9:

HOO$))DrM   	dist_name)r   logisticrW   c           	         fd}t               5 }|j                  t               t        |d      }d d d        j                  sJ |j
                  d   }t        j                  j                  d      }t        j                  j                  |d|      }t        j                  |      }	|	j                  }
|	j                     dz  }fd}| j                  t        t              j                  |      }t               5 }|j                  t               t!        |||dd	d
      }d d d        t#        j                  |
       t#        |j$                  |d| j&                  z         y # 1 sw Y   @xY w# 1 sw Y   RxY w)Nc                     t         j                  j                  d      }t        j                  j                  | d|      }t        j                  |      }|j                  |j                     z
  S )NxrA   r  )	r4   rB   r   r	   tukeylambdar   andersonry   critical_values)rX   r   rI   r   r  rW   s       r8   funz?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.fun  s`    ))''	2C!!%%ac%DA~~a3H%%(@(@(CCCrM   r   )x0r  rA   r  c                 D    t        j                  |       j                  S rU   )r	   r  ry   )rI   r  s    r8   r  zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1d  s    >>!Y/999rM   r   Fr   r  r   r|   )r   filterRuntimeWarningr   successrI   r4   rB   r   r	   r  r   r  ry   significance_levelr7  r   r   r   r}   )r  r  rW   r  supsolrX   r   rI   r   expected_stat
expected_pr  dist_rvsrZ   s    ``            r8   test_against_andersonz2TestMonteCarloHypothesisTest.test_against_anderson  sO   	D
   	"CJJ~&sq/C	" {{{ EE!Hii##I.!!!#C!@>>!Y/ **003C7
	: 88GE95993?  	LCJJ~&"1h#.D.3LC	L 	}5

JQtyy[A5	" 	"&	L 	Ls   #E4	'F4E>F
c                     t         j                  j                  d      }t        j                  d      }t	        ||j                  t         j
                  dd      }|j                  dk(  sJ y )Nl   IL~QH(s rA   Tr   r  g-C6?)r4   rB   r   r  r   r5   r   )r  r   rI   rZ   s       r8   test_p_never_zeroz.TestMonteCarloHypothesisTest.test_p_never_zero  sV     ii##$78HHSMq#**bgg*.FDzzV###rM   c                    t         j                  j                  d      }|j                  d      |j                  d      f}|j                  |j                  f}d }t	        j
                  |||d      }t	        j                  |d   |d	   gd      }t        |j                  |j                         t        |j                  |j                  d
       y )N   F:fmPr  r      c                 D    t        j                  | ||      j                  S rU   r	   	ttest_indry   rQ   s      r8   ry   zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statistic  s    ??1a.888rM   r]   r   r   r   g{Gz?rz   )
r4   rB   r   normalr	   r   r  r   ry   r   r  r   rx   r   ry   rZ   r  s          r8   test_against_ttest_indz3TestMonteCarloHypothesisTest.test_against_ttest_ind  s    ii##$67zzvz&

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

CJJT:rM   c                    t         j                  j                  d      }|j                  d      |j                  d      |j                  d      |j                  d      f}|j                  |j                  |j                  |j                  f}d }t	        j
                  |||dd	
      }t	        j                  |ddi}t        |j                  |j                         t        |j                  |j                  d       y )Nr  r^  r   )r   e   )r   f   )r   g   c                 @    t        j                  |d| ij                  S )Nr   )r	   f_onewayry   )r   rt  s     r8   ry   zETestMonteCarloHypothesisTest.test_against_f_oneway.<locals>.statistic  s    >>43d3===rM   r]   r   r   r   r   {Gz?r|   )
r4   rB   r   r  r	   r   r  r   ry   r   r  s          r8   test_against_f_onewayz2TestMonteCarloHypothesisTest.test_against_f_oneway  s    ii##$67

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

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

CJJT:rM   z2Statistic may not depend on sample order on 32-bitc                    t         j                  j                  d      d}fd} |d      }t        j                  ||t         j
                  d|      }t        j                  |j                  |j                  k        }t        j                  |j                  |j                  dz  k        }||k7  sJ |j                  |dz   |dz   z  k(  sJ y )	Nl   U5<H r[  c                 X    dt        j                  d      j                  |       z  S )Ng      ?gZd;O?)rI  r  )r	   	bernoullir   rt   r   s    r8   r   zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvs  s'    %044$S4QQQrM   rA   r   )r   r$   g     ?r   )
r4   rB   r   r	   r   rf  r   null_distributionry   r   )r  r$   r   rI   rZ   c0c1r   s          @r8   test_finite_precision_statisticz<TestMonteCarloHypothesisTest.test_finite_precision_statistic  s    
 ii##$45	R H$$QRVV1<> VVC))S]]:;VVC))S]]G-DDERxxzzb1f{Q7777rM   N)__name__
__module____qualname__r}   r   r  r  r1   markparametrizer-  r  r4   linspacer  r	   r  kurtosistestr  r^   r  r  r  r  r  r  xfail_on_32bitr  rV   rM   r8   ry  ry    s   DL71t#/J [[VU2q\2E 3E( [[],?@[[S+"++dC";<K = AK, [[Z%..%:L:L)MN[[],LM[[S+"++b!Q"78E 9 N OE" [[S)"))B"23E 4E" [[S+"++dC";<E =E$ [[[*>?[[S%(+(B , @(BT$;;" [[ TU8 V8rM   ry  c                      e Zd ZdZd Zd Zej                  j                  de	j                  j                  e	j                  j                  g      ej                  j                  dg d      d               Zej                  j                  de	j                  j                  e	j                  j                  g      ej                  j                  dd	 ej                  d
      dz  fdd ej                   dd
      fg      d               Zd Zej                  j'                         d        Zd Zej                  j                  dd      ej                  j                  dd      ej                  j                  dd      d                      Zej                  j                  dd      d        Zej                  j                  dd      d        Zej                  j                  dd      d        Zd Zej                  j7                         ej                  j                  dd      d                Zej                  j                  dd      d!        Zej                  j                  dd      d"        Zd# Zej                  j                  dd      d$        Z ej                  j7                         ej                  j                  dd%      d&               Z!g d'g d(d)d*d+d,d-d.d/Z"g d0g d1d2d3d4d5d6d7d/Z#ej                  j7                         ej                  j                  d8e"e#f      d9               Z$ej                  j                  d:d;      d<        Z%ej                  j                  d=d>      d?        Z& e'd@      d
g f e'd      d
g dg dAgf e'dB      d
g dg dAddCggfgZ(ej                  j                  dDe(      dE        Z)dF Z*yG)HTestPermutationTestr  c                 L    t         j                  j                  d      | _        y )Nl   F )r4   rB   r   r   )r  s    r8   setup_methodz TestPermutationTest.setup_method  s    99(()<=rM   c                    d }d}t        j                  t        |      5  t        g ddgf|       d d d        d}t        j                  t        |      5  t        d|       d d d        t        j                  t        |      5  t        d|       d d d        d}t        j                  t        |      5  t        g dg df|d	
       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d	       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        d}t        j                  t        |      5  t        g dg df|d       d d d        y # 1 sw Y   wxY w# 1 sw Y   RxY w# 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   NxY w# 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                 F    t        j                  | |f|      j                  S rU   r  rQ   s      r8   r  z:TestPermutationTest.test_permutation_test_iv.<locals>.stat  s    ??Aq64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   r  r"   r#   r%   r&   r'   r  r  r-   r.   r/   )r1   r2   r3   r   r  )r  r  r7   s      r8   test_permutation_test_ivz,TestPermutationTest.test_permutation_test_iv  s   	; G]]:W5 	5i!-t4	5 K]]:W5 	)T4(	)]]9G4 	&Q%	& /]]:W5 	Ei3TD	E 5]]:W5 	6i3T.46	6 E]]:W5 	Ki3TcJ	K >]]:W5 	Ni3TuM	N >]]:W5 	Oi3TvN	O @]]:W5 	Hi3TG	H @]]:W5 	Ii3TH	I 0]]:W5 	Oi3TvN	O 7]]:W5 	5i3T*35	5 	5W	5 	5	) 	)	& 	&	E 	E	6 	6
	K 	K	N 	N	O 	O	H 	H	I 	I	O 	O	5 	5s   J(J5K:K4K.K)(K6"LLLL)
L5(J25J?KKK&)K36L LLL&)L25L>r0   r  )pairingssamplesindependentc                   	 | j                   j                  d      }| j                   j                  d      }	fd	d	_        d	_        d|dd}t	        j
                  ||f	fd |d      d|}t        	j                  d	       t        	j                  d       d	_        t	        j
                  ||f	fd
 |d      d|}t        	j                  d       t        	j                  d
       d	_        t	        j
                  ||f	fd |d      d|}t        	j                  d       t        	j                  d       t        |j                  |j                         t        |j                  |j                         y )Nr+   c                     | j                   dk(  rdn
t        |       }t        |j                        _        xj                  dz  c_        t        j                  | |      t        j                  ||      z
  S r  )r   r_   r  r  r  r4   r5   )rI   rR   r   r  ry   s       r8   ry   z1TestPermutationTest.test_batch.<locals>.statisticS  s_    ffks1vJ#&z93G3G#HI "7714(27714+@@@rM   r   r   T)r$   r  r   r   )r(   r0   r  r   r   r   )r   rB   r  r  r	   r   r   r   )
r  r  r0   rI   rR   r|  rJ   rK   r  ry   s
            @r8   r  zTestPermutationTest.test_batchI  sx    HHOOBHHOOB	A
 	 	#9I"$%%q!fi Lq3??LFJLY&&-Y))1-	%%q!fi Lr3??LFJLY&&+Y))2.	%%q!fi Lt3??LFJLY&&*Y))40T[[$++.T[[$++.rM   zpermutation_type, exact_sizer  r   r   )r   rv  r  r)  c                 v   | j                   j                  d      }| j                   j                  d      }d }|dd}t        j                  ||f|fd |d      d|}t	        |j
                  j                  d       t        j                  ||f|fi |}t	        |j
                  j                  |       y )Nr   c                 `    t        j                  | |      t        j                  ||      z
  S rd   r   rQ   s      r8   ry   z8TestPermutationTest.test_permutations.<locals>.statistic}  #    7714(27714+@@@rM   T)r  r   r   )r$   r0   )r   rB   r	   r   r   r  rt   )	r  r  
exact_sizer0   rI   rR   ry   r|  rZ   s	            r8   test_permutationsz%TestPermutationTest.test_permutationsq  s     HHOOAHHOOA	A %5"$$$aVY KA2>q/KEIKS**//3$$aVY?$?S**//<rM   c                    d\  }}d\  }}}t        j                  ||z   |      |kD  sJ t        j                  j	                  |      }t        j                  j	                  |      }||f}d }	ddd||d}
t        ||	fd	|i|
}t        ||	fd	t        j                  i|
}|j                  |j                  k(  sJ t        |j                  |j                  d
       y )N)r   r   )rv  	   i]  r   c                 `    t        j                  | |      t        j                  ||      z
  S rd   r   rQ   s      r8   ry   zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statistic  r  rM   Tr  rA   r   r  r(   r   r0   r$   r  r|   )r
   binomr	   r   r   r   r4   infry   r   r   r  r   r   nxnypermutationsrI   rR   rx   ry   r|  rZ   rK   s                r8   'test_randomized_test_against_exact_bothz;TestPermutationTest.test_randomized_test_against_exact_both  s     %S*B}}R"Wb)L888JJNNN#JJNNN#!t	A #[#OtY 'L '!%'iLRVVLtL}}...

DKKd;rM   c                    d\  }}d\  }}}d|z  |kD  sJ t         j                  j                  |      }t         j                  j                  |      }||f}d }	ddd||d	}
t        ||	fd
|i|
}t        ||	fd
t        j
                  i|
}|j                  |j                  k(  sJ t        |j                  |j                  d       y )N)r   N)r   r   i }  r   r   c                 6    t        j                  | |z
  |      S rd   r   rQ   s      r8   ry   zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statistic  s    771q5t,,rM   Tr   rA   r  r$   r  r|   )	r	   r   r   r   r4   r  ry   r   r   r  s                r8   *test_randomized_test_against_exact_samplesz>TestPermutationTest.test_randomized_test_against_exact_samples  s    
 +S,B"u|###JJNNN#JJNNN#!t	- #	[#OtY 'L '!%'iLRVVLtL}}...

DKKd;rM   c                    d| j                   }}d\  }}}t        j                  |      |kD  sJ t        j                  j                  |      }t        j                  j                  |      |g}fd}t        j                  |      }	ddd||d}
t        ||	fd	|i|
}t        ||	fd	t        j                  i|
}|j                  |j                  k(  sJ t        |j                  |j                  d
       y )Nr  )rv  rv  i@  r   c                 6    t        j                  |       d   S Nr   r	   pearsonrr  s    r8   r  zTTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic1d  s    >>!Q'**rM   Tr   rA   r  r$   r  r|   )r   r
   	factorialr	   r   r   r   rT  r   r4   r  ry   r   r   )r  r   r   r  r  r  rI   rx   r  ry   r|  rZ   rK   rR   s                @r8   +test_randomized_test_against_exact_pairingsz?TestPermutationTest.test_randomized_test_against_exact_pairings  s     'S*B  $|333JJNNN#JJNNN#s	+  44[A	"	[#OtY 'L '!%'iLRVVLtL}}...

DKKd;rM   r   r  r  )rB  g    eAr   r=   c           	      D   t        j                  d      j                  ddd      }t        j                  t        j                  d      d d d d f   d|      }t         j                  j                  d      }t        j                  ||||||      }d }t         j                  j                  d      }	t        ||f|d	||||	
      }
t        |j                  |
j                  | j                         t        |j                  |
j                  | j                         y )N<   r   r   rp   r   l   ;WNa )r  r   r0   r   c                 F    t        j                  | ||      j                  S rd   r  rQ   s      r8   ry   zETestPermutationTest.test_against_permutation_ttest.<locals>.statistic  s    ??1ad3===rM   Tr   r$   r   r   r0   rz   )r4   r^   ri   moveaxisrB   r   r	   r  r   r   ry   r{   r   )r  r   r  r   rI   rR   r:  rJ   ry   r;  rK   s              r8   test_against_permutation_ttestz2TestPermutationTest.test_against_permutation_ttest  s     IIe$$Q1-KK		!Qd]3Q=yy$$%89q!,T,0kK	> yy$$%89A	d,8,7d-13
 	TYYGT[[tyyArM   r  c                    | j                   j                  dd      }| j                   j                  ddd      }t        j                  ||d      }fd	}t	        ||f|t
        j                  d
| j                         }t        |j                  |j                  | j                         t        |j                  |j                  | j                         y )Nr   r   rt   rs   rp   r   )rt   rr   rs   exact)r   r  c                 J    t        j                  | |d      j                  S r  )r	   ks_2sampry   rI   rR   r   s     r8   r  z>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1d  s#    >>!QW.9;;D9ErM   r   r$   r   r0   rz   )r   r  r	   r(  r   r4   r  r   ry   r{   r   )r  r   rI   rR   r   r  rZ   s    `     r8   test_against_ks_2sampz)TestPermutationTest.test_against_ks_2samp  s     HHOO!O,HHOOO3>>!QKgN	E 1v{+4488M 	x'9'9		J

HOO$))DrM   c                    | j                   j                  dd      }| j                   j                  dd      }dddd	}||   }t        j                  |||
      }d }t	        ||f|t
        j                  || j                         }t        |j                  |j                  | j                         t        |j                  |j                  | j                         y )Nr   r   r%  rp   r   r   r   r  r  r  c                 B    t        j                  | |      j                  S rU   r	   ansariry   r  s     r8   r  z<TestPermutationTest.test_against_ansari.<locals>.statistic1d      <<1%///rM   r*  rz   )r   r  r	   r/  r   r4   r  r   ry   r{   r   )	r  r   rI   rR   alternative_correspondencealternative_scipyr   r  rZ   s	            r8   test_against_ansariz'TestPermutationTest.test_against_ansari  s     HHOO!O,HHOO!O, /8173>&@" 7{C<<12CD	0 1v{+6TXXO 	x'9'9		J

HOO$))DrM   c           	         t         j                  j                  dd| j                        }t         j                  j                  dd| j                        }t        j                  ||d|      }d }t        ||f|dt        j                  |d| j                  	      }t        |j                  |j                  | j                  
       t        |j                  |j                  | j                  
       y )N)r   rp   r   r   rt   rr   r0   皙?r   r  c                 F    t        j                  | ||      j                  S rd   )r	   mannwhitneyury   rQ   s      r8   ry   z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statistic0  s    %%a6@@@rM   Tr!  rz   )r	   uniformr   r   r8  r   r4   r  r   ry   r{   r   )r  r   rI   rR   r   ry   rZ   s          r8   test_against_mannwhitneyuz-TestPermutationTest.test_against_mannwhitneyu(  s     MM9!$((KMM9$TXXN%%aL	A 1vyT+-66{$%DHH> 	x'9'9		J

HOO$))DrM   c                    t         j                  j                  dd| j                        }t         j                  j                  ddd| j                        }t        j                  ||d      }d	 }t        ||f|t        j                  d
| j                        }t        |j                  |j                  | j                         t        |j                  |j                  | j                         y )Nr   r   )rt   rs   r0   rp   r   )rt   rr   rs   r0   r&  r)   c                 F    t        j                  | |d      j                  S N
asymptoticr)   )r	   cramervonmises_2sampry   r  s     r8   r  z9TestPermutationTest.test_against_cvm.<locals>.statistic1dA  s#    --a5ACCL9MrM   r   r*  rz   )r	   r   r   r   r?  r   r4   r  r   ry   r{   r   )r  rI   rR   r   r  rZ   s         r8   test_against_cvmz$TestPermutationTest.test_against_cvm:  s    JJNNNBJJNNqNI--a7C	M
 1v{+4488M 	x'9'9		J

HOO$))DrM   )r]   r   c                 X   t         j                  j                  d      }|j                  d      }|j                  d      }|j                  d      }|||f}d }d }t        j                  |      }	t        j                  |      }
t        j
                  |d      }t        j
                  |d	      }t        j
                  |d
      } |	||||      } |
||||      }d|dd| j                  d}t        ||fdt         j                  i|}t        ||fddi|}t        |j                  || j                         t        |j                  |j                  | j                         t        |j                  |d       t        |j                  |j                  d       y )Nl   Y}y!dh r   r   )r   r   r   )r   r   r   c                  :    t        j                  |  j                  S rU   )r	   kruskalry   rx   s    r8   r  zITestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistic1d^  s    ==$'111rM   c                  :    t        j                  |  j                  S rU   )r	   rC  r   rD  s    r8   pvalue1dzFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1da  s    ==$'...rM   )r   r   r   )r   r   r   r  r   Fr   r  r   r   r   r  r0   r$   r   rz   gQ?r|   r   )r4   rB   r   r   rT  rh   r   r   r  r   ry   r{   r   )r  r   r   rI   rR   re   rx   r  rF  ry   r   x2r2  z2expected_statisticexpected_pvaluer|  rZ   rK   s                      r8    test_vectorized_nsamp_ptype_bothz4TestPermutationTest.test_vectorized_nsamp_ptype_bothL  sp    ii##$78JJQJ JJIJ&JJIJ&1ay	2	/  44[A	11(; __Q	*__Q	*__Q	*&r2r= R$7 $T)$1488Mt[MbffMMkLtLtL 	'9		Jt~~DIIF

O$?

DKKd;rM   c                    t         j                  j                  dd| j                        }t         j                  j                  dd| j                        }d }d }fd}t	        j
                  |      } |||d	      }|d   }	|d   }
d
dd| j                  t        j                  d}t        ||z
  f|fi |}t        ||f|fi |}t        |j                  |j                  | j                         dk7  r"t        |j                  |	| j                         t        |j                  |
| j                         t        |j                  |j                  | j                         y )N)r   r)  r   r   r5  r6  c                 D    t        j                  | d      j                  S Nr   r  r	   wilcoxonry   )re   s    r8   statistic_1samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1d  s    >>!8BBBrM   c                 F    t        j                  | |d      j                  S rO  rP  r  s     r8   statistic_2samp_1dzETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1d  s    >>!QF;EEErM   c                 4    t        j                  | |      S )Nr  )r	   rQ  r)  s     r8   test_1dz:TestPermutationTest.test_against_wilcoxon.<locals>.test_1d  s    >>!QK@@rM   r   r   Fr   )r   r   r   r  r0   r$   rz   r  )r	   r9  r   r   r   rT  r4   r  r   r   ry   r{   r   )r  r   rI   rR   rR  rT  rV  testr   r  r  r|  rJ   rK   s    `            r8   test_against_wilcoxonz)TestPermutationTest.test_against_wilcoxon|  s7    MM9!$((KMM9$TXXN	C	F	A //811% a[
#Q{$-txx!vv'  1(:CdCA(:CdC 	TYYG+%DNNM		JZdii@T[[tyyArM   c           	      d   | j                   j                  ddd      }d||dk(  <   dd} ||      dd}}}t        j                  ||||      }t        j                  |f|d	d
t
        j                  | j                   |      }t        |j                  |j                  | j                         y )Nr   r   r+   r   r]   c                 6    t        j                  | dkD  |      S )Nr   r   r4   r   r  s     r8   ry   z=TestPermutationTest.test_against_binomtest.<locals>.statistic  s    66!a%d++rM   r?  r  Tr   )r   r  r$   r0   r   rz   r   )
r   integersr	   r   r   r4   r  r   r   r{   )	r  r   rI   ry   kr`   rI  r   rZ   s	            r8   test_against_binomtestz*TestPermutationTest.test_against_binomtest  s     HHa,!q&	
	, A,Ca1??1aD$$aT96?13dhh1<> 	

HOO$))DrM   c                    | j                   j                  d      }|| j                   j                  d      z   t        j                  |d      }fd}t	        |f|dt
        j                  | j                         }t        |j                  |j                  | j                         t        |j                  |j                  | j                         y )	Nr)  r   r&  r)   c                 H    t        j                  | d      j                  S r=  )r	   
kendalltaury   r  s    r8   r  z@TestPermutationTest.test_against_kendalltau.<locals>.statistic1d  s    ##Aq>HHHrM   r  )r  r$   r0   rz   )r   r  r	   ra  r   r4   r  r   ry   r{   r   )r  rI   r   r  rZ   rR   s        @r8   test_against_kendalltauz+TestPermutationTest.test_against_kendalltau  s    HHOOO#Q''##Aq9	I t[:+-66J 	x'9'9		J

HOO$))DrM   c                    fd}t         j                  j                  d      }|j                  d      dkD  j                  t              }|j                  d      d|z  z   dkD  j                  t              t
        j                  j                  |      d   }t        |f|dt         j                  ||      }t        j                  ||	      }t        |j                  |d          y )
Nc                 @    t        j                  | dk(  dk(  z        S r  r[  r  s    r8   ry   z@TestPermutationTest.test_against_fisher_exact.<locals>.statistic  s    6616a1f-..rM   l   	(yM4 r  g333333?g      ?r   r  )r  r$   r   r0   r  )r4   rB   r   astypefloatr	   contingencycrosstabr   r  fisher_exactr   r   )	r  r   ry   r   rI   tabrZ   rK   rR   s	           @r8   test_against_fisher_exactz-TestPermutationTest.test_against_fisher_exact  s    	/ ii##$78ZZ]S ((/ZZ]T!V#c)11%8((A.q1tY+-66{,/1 !!#;?

DG,rM   )r*  r   c                    | j                   j                  d      }| j                   j                  d      }| j                   j                  d      }t        j                  ||      }t        j                  ||      }t        j                  ||      }|d   }|||f}d }d }t	        j
                  |      }t	        j
                  |      }	 |t        j                  | d	|i}
 |	t        j                  | d	|i}d
|dddd}t        ||fdt        j                  i|}t        ||fddi|}t        |j                  |
| j                         t        |j                  |j                  | j                         t        |j                  || j                         t        |j                  |j                  d       y )N)r   r   r   r   )r   r   r   )r   r   r   r   r   c                  F    t        j                  | dd      j                  S )NTr>  rankedr*   )r	   page_trend_testry   rD  s    r8   r  zLTestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.statistic1d  s"    ((d0<>>GiHrM   c                  F    t        j                  | dd      j                  S )NTr&  rn  )r	   rp  r   rD  s    r8   rF  zITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1d  s"    ((d0799?@rM   r   Fr   r  rG  r$   rq   rz   r   r|   )r   rB   r	   rankdatar   rT  r4   broadcast_arraysr   r  r   ry   r{   r   )r  r   rI   rR   re   rx   r  rF  ry   r   rJ  rK  r|  rZ   rK   s                  r8   #test_vectorized_nsamp_ptype_samplesz7TestPermutationTest.test_vectorized_nsamp_ptype_samples  s    HHOOO+HHOOO+HHOOO+NN14(NN14(NN14(aD1ay	H	@  44[A	11(;&(;(;T(BNN ""5"5t"<H4H $T)$.Ct[MbffMMkLtLtL'9		Jt~~DIIF

O$))D

DKKd;rM   r   )r   r   g      @g?g?g&_?g      @gd~$I"@glu?)rI   rR   expected_lessexpected_2sidedexpected_Pr_gte_S_meanrJ  expected_avgexpected_std)o   k   rA   r   r  j   m   l   )	r{  r~  r|  b   i   r  n   r  r   gd?gd?gYo5 ?g     @@@g{C@gDmFA@casec                    |d   }|d   }|d   }|d   }|d   }|d   }|d   }|d   }	d	 }
t         j                  j                         5 }|j                  t        d
       t        ||f|
t         j                  d      }t        ||f|
t         j                  d      }ddd       t        j                  || j                         t        |j                  |d       t        j                  |d       t        |j                  j                         |d       t        |j                  j                         |	d       |j                  }|j                  j                         }t        |j                        }t        j                  t        j                   |j                  |z
        t        j                   ||z
        k\        |z  }t        ||       y# 1 sw Y   AxY w)a  
        Results above from SAS PROC NPAR1WAY, e.g.

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

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

        rI   rR   rJ  ru  rv  rw  rx  ry  c                 B    t        j                  | |      j                  S rU   r.  r  s     r8   r  z7TestPermutationTest.test_with_ties.<locals>.statistic1d>  r0  rM   z$Ties preclude use of exact statisticr   )r$   r   r  Nrz   g|=r|   gư>)r4   testingr   r  UserWarningr   r  r   ry   r{   r   r  r5   r   r_   r   r   )r  r  rI   rR   rJ  ru  rv  rw  rx  ry  r  r  rZ   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 ZZ))+ 	=sJJ{$JK"Aq6;BFF/57C#QFKRVV0;=D		= 	'9		J

M>_5A..335|$O..224lN MM$$))+%%&rvvc&;&;D&@A"$&&4. 1 2234.>'	= 	=s   
AGG(zalternative, expected_pvalue))r   g?)r   gOO?)r  g<OO?c                     g d}g dd}fd}t        |f|dt        j                  |      }t        |j                  || j
                         t        |j                  |d	       y
)aU  
        Results above from R cor.test, e.g.

        options(digits=16)
        x <- c(1.76405235, 0.40015721, 0.97873798,
               2.2408932, 1.86755799, -0.97727788)
        y <- c(2.71414076, 0.2488, 0.87551913,
               2.6514917, 2.01160156, 0.47699563)
        cor.test(x, y, method = "spearm", alternative = "t")
        )g@9?gY,?gOQ?g[iY@g|?g鈶BE)gQGn@gU?gz˱@?gmGA6@gB @g˭?g?c                 D    t        j                  |       j                  S rU   )r	   	spearmanrry   r  s    r8   r  zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1do  s    ??1a(222rM   r  )r  r$   r   rz   gvIh%<=r|   N)r   r4   r  r   ry   r{   r   )r  r   rK  rI   rJ  r  rZ   rR   s          @r8   test_against_spearmanr_in_Rz/TestPermutationTest.test_against_spearmanr_in_RV  sa    &10/	3 t[:+-66{L 	'9		J

O%@rM   r(   )r]   r   c                     t        j                  t        d      5  t        t	        j
                  g d|             d d d        y # 1 sw Y   y xY w)Nz`batch` must be positive.r   r   )r1   r2   r3   rj   r   _batch_generator)r  r(   s     r8   test_batch_generator_ivz+TestPermutationTest.test_batch_generator_ivx  s?    ]]:-HI 	A--i?@	A 	A 	As   "AAr   )r   r   rp   rv  r  ziterable, batch, expectedc                 P    t        t        j                  ||            }||k(  sJ y rU   )rj   r   r  )r  iterabler(   r   gots        r8   test_batch_generatorz(TestPermutationTest.test_batch_generator  s'     ;//%@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J  J y )
N)r   r   r   r   )r   r   r)  rv  c                 4    t        j                  | |      d   S r  r  r  s     r8   ry   zFTestPermutationTest.test_finite_precision_statistic.<locals>.statistic  s    >>!Q'**rM   Fr  )r   r  r   r  gUUUUUU?)r	   r   ry   r   r  r4   r   r_   )	r  rI   rR   ry   rZ   rr   null	correct_ps	            r8   r  z3TestPermutationTest.test_finite_precision_statistic  s     	+ $$aVY56@B--S5J5J46tq5y011CI=	)c)))))rM   N)+r  r  r  r{   r  r  r1   r  r  r4   rB   r5  r   r  r
   r  r  r  r  slowr  r  r#  r+  r3  r:  r@  xslowrL  rX  r^  rb  rk  rt  
tie_case_1
tie_case_2r  r  r  r-  batch_generator_casesr  r  rV   rM   r8   r  r  
  sZ   D>
35l [[^bii.C.C.0ii.C.C.E F[[/CE"/EF"/H [[^bii.C.C.0ii.C.C.E F[[;)+<7+<+<Q+?+BC/,mgmmAq.ABDE=	EF=4<2 [[< <2<6 [[],?@ [[^Y7[[VY/B 0 8	 AB2 [[],LME NE& [[],LME NE* [[],LME NE"E$ [[[[VW-*< . *<\ [[],LM#B N#BJ [[],LME NE,E" [[],LM- N-$ [[[[VW-'< . '<V $-#/%(,8(+"*GEJ ?C#/%1,8(,"+XGJ [[[[Vj*%=>:? ? :?x [[;>?A	?A< [[Wg.A /A $Ah2.#AhIy+AB#AhIy1a&+IJL [[8244*rM   r  c                  v   t        j                  g dt              } t        j                  |       }t	               }d}t        j                  |       D ]Q  }|dz  }t        j                  ||d d       }|j                  t        |D cg c]  }t        |       c}             S t        j                  t        t        |       dz
        D cg c]3  }t        j                  t!        | |d        t!        | |dz   d              5 c}      }t#        ||       t#        t        |      |       y c c}w c c}w )N)r   r   r   )dtyper   r   r]   )r4   r   intcumsumsetr   _all_partitions_concatenatedsplitaddr6   	frozensetprodr-  r_   r
   r  r   r   )r`   ncall_partitionsr  partition_concatenatedpartitioningrW   r   s           r8    test_all_partitions_concatenatedr    s    	#&A	1BUNG"-"J"J1"M H1xx 63B@5!E1)A,!EFGH
 ww!&s1vax2  c!AB%j#a!g,? 2 3H (#^$h/ "F2s   	D18D6fun_namer   r   r   c                 V   t         j                  j                  d      j                  d      fd}fddfdd|d	d
}ddi}t        t        |       }||    }|j                  |       fd} |d|d d|  |d|dd| d } |d|d d|  |d|dd| y )Nl   r: r+   r   c                 F    t         j                  j                  |       S )Nr  )r	   r   r   r  s    r8   r   z&test_parameter_vectorized.<locals>.rvs  s    zz~~4c~::rM   r;   )rx   r0   r*   r   )rx   r0   r  )r   r   r  r$   rA   c                     | j                   dkD  st        j                  |       sJ t        j                  | |      S r  )r   r4   r/  r5   )rI   r   r   s     r8   ry   z,test_parameter_vectorized.<locals>.statistic  s2    vvzR^^Av666wwqt$$rM   )ry   r   Tc                 N    | j                   dk(  sJ t        j                  |       S r  )r   r4   r5   r  s    r8   ry   z,test_parameter_vectorized.<locals>.statistic  s     vv{{wwqzrM   FrV   )r4   rB   r   r7  r	   r   )	r  r   fun_optionscommon_optionsr  optionsry   r   r   s	          @@r8   test_parameter_vectorizedr    s    
 ))


/CZZRZ F; +1C+7!917	3<E(G28'E	GK
 $S)N
%
"C(#GNN>"% 8)888)88 8)889)99rM   )9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  r   tests_Ritemsr   tests_against_itself_1sampr   r   r   tests_against_itself_2sampr   r   r  r  r  r  r   r&  r3  r=  rK  rO  rV  rc  r  filterwarningsrw  ry  r  r  r  rV   rM   r8   <module>r     s     E E J J   ) ) <A~ #AB+; , C; #AB> C>2 #AB+D%=1(: 2 , C(:V AB#ABO C CO0 #' "
 +W]]_=C >C. (,,0%)+ 
7 t12 +399;="="J (+,/1  +399;=+=+\ G\#:;!Q(> ) <>. EF#AB!Q(> ) C G>, #AB( C( #AB6 C6"2& /!T;  < 2 ;<#AB; C =;.!& m]%CD- E-2 +.+" , /"." +  , 4 #AB> C>> 45!> 6 !>Lo8 o8d	L
* L
*j0* NP:P:rM   