
    bi?d                    x   d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
mZmZmZmZmZmZmZ d dlZd dlm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 m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,c m-Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9 ejt                  jv                  Z; e<e%      Z%	 d dl=Z=de=j|                  d<   d dl?m@ZA dZBg dZDg dZEg dZFg dZGg dZHg dZIg dZJg dZKg dZLg dZMd ZN G d  d!      ZO G d" d#      ZP G d$ d%      ZQejt                  j                  d&       G d' d(             ZS G d) d*      ZTejt                  j                  d+       G d, d-             ZU G d. d/      ZV e1ej                         G d0 d1             ZX e1ej                         G d2 d3             ZZ e1ej                         G d4 d5             Z\ G d6 d7      Z] e1ej                         G d8 d9             Z_d: Z` e1ej                         G d; d<             Zb G d= d>      Zc e1ej                         G d? d@             Zeg dAZf e1ej                         G dB dC             Zh e1ej                         G dD dE             Zj G dF dG      Zk G dH dI      Zl e1ej                         G dJ dK             Zng dLZo G dM dN      Zp G dO dP      Zq G dQ dR      Zr e1ej                         G dS dT             Zt G dU dV      Zu G dW dX      Zv e1ej                  ej                  ej                         G dY dZ             Zz G d[ d\      Z{ G d] d^      Z| e1ej                         G d_ d`             Z~ e1ej                         G da db             Z G dc dd      Zy# eC$ r dZBY w xY w)e    N)partial)RandomState)assert_array_equalassert_almost_equalassert_array_lessassert_array_almost_equalassert_assert_allcloseassert_equal)raises)optimizestatsspecial)
_abw_state_get_As_weibull_Avals_weibull   )check_named_results   )_get_wilcoxon_distr_get_wilcoxon_distr2)_binary_search_for_binom_tst)distcont)SmallSampleWarningtoo_small_nd_omittoo_small_1d_omittoo_small_1d_not_omit)is_torchmake_xp_test_caseeager_warnsxp_ravelis_numpyxp_default_dtype)xp_assert_closexp_assert_equalxp_assert_lessAggbackendTF)
jt?Zd;?V-?      ?gX9v?-?x&1?+?+?r,   )
r+   r)   r,   r.   灕Cl?r+   r*   r,   r)   V-?)
ʡE?g/$?r1   r/   ףp=
?r0   r,   r/   r*   r*   )
gGz?r.   r0   r,   r4   r0   r+   r*   r.   r*   )
r+   r+   gCl?Gz?r.   rh|?r*   r-   g\(\?r*   )
羟/$?gh|?5?r7   r1   r2   r.   r4   r+   g1Zd?r*   )
r5   Mb?r*   gjt?r+   r,   g}?5^I?g)\(?r*   r.   )
r+   r,   r)   r,   r.   r*   r+   r*   r.   r)   )
r.   r+   r*   r4   r*   r8   r8   r+   r/   r3   )
r3   r4   r6   r0   r1   r1   r3   r+   r8   r1   c                  f    t        j                  t        j                  j                  | i |      S N)nplogr   gammarvs)argskwargss     [/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/stats/tests/test_morestats.py_old_loggamma_rvsrB   D   s#    66%++//426233    c                       e Zd Zd Zd Zd Zy)TestBayes_mvsc                 V   g d}t        j                  |      \  }}}t        |j                  d       t	        |j
                  dd       t        |j                  d       t	        |j
                  dd       t        |j                  d	d
       t	        |j
                  dd       y )N   	            rL            "@gURH#j@gV[%@ư>rtol      $@gai	@gӇu8@&.>_紫@   decimalgYs?g1O@+=)r   	bayes_mvsr   	statisticr
   minmaxselfdatameanvarstds        rA   
test_basiczTestBayes_mvs.test_basicI   s     '.c3DNNC0%L!	# 	CMM40

$K"	$ 	CMM+=rJ

$L"	$rC   c                 B    t        t        t        j                  g        y r:   )assert_raises
ValueErrorr   r\   r`   s    rA   test_empty_inputzTestBayes_mvs.test_empty_input[   s    j%//26rC   c                     t        j                  d      }d}t        j                  |      }|D ]  }t	        ||        y )N   )r]   r^   )r;   aranger   r\   r   )r`   x
attributesresis        rA   test_result_attributesz$TestBayes_mvs.test_result_attributes^   s;    IIbM,
ooa  	/A:.	/rC   N)__name__
__module____qualname__re   rj   rr    rC   rA   rE   rE   H   s    $$7/rC   rE   c                   $    e Zd Zd Zd Zd Zd Zy)TestMvsdistc                    g d}t        j                  |      \  }}}t        |j                         d       t	        |j                  d      dd       t        |j                         d       t	        |j                  d      dd	       t        |j                         d
d       t	        |j                  d      dd       y )NrG   rN   ?rO   r[   rQ   rS   rT   rU   rV   rW   rX   rZ   )r   mvsdistr   rb   r
   intervalr_   s        rA   re   zTestMvsdist.test_basich   s    &t,c3DIIK-c* -AGL	N 	CHHJ-S) ,?EJ	L 	CHHJ(:BGS) ,@FK	MrC   c                 B    t        t        t        j                  g        y r:   rg   rh   r   r{   ri   s    rA   rj   zTestMvsdist.test_empty_inputw   s    j%--4rC   c                 H    dg}t        t        t        j                  |       y Nr   r~   r`   ra   s     rA   test_bad_argzTestMvsdist.test_bad_argz   s    sj%--6rC   c                 j   t        j                         5  t        j                  dt               t	        j
                  g d      D cg c]  }|j                          c} t	        j
                  g d      D cg c]  }|j                          c} d d d        y c c}w c c}w # 1 sw Y   y xY w)Nerrorr   r      r   r   r         )warningscatch_warningssimplefilterRuntimeWarningr   r{   rb   r`   rn   s     rA   
test_warnszTestMvsdist.test_warns   sz     $$& 	?!!'>:$}}Y78!QVVX8$}}_=>!QVVX>	? 	?8>	? 	?s)   4B)	B B)<B$B)
B))B2N)rs   rt   ru   re   rj   r   r   rv   rC   rA   rx   rx   g   s    M57
?rC   rx   c                   z    e Zd Zd Zd Zej                  j                  dg dgddgf      d        Zd Z	d Z
d	 Zy
)TestShapiroc                 2   g d}t        j                  |      \  }}t        j                  |      }t        |dd       t        |j                  dd       t        |dd       t        |j                  dd       g d}t        j                  |      \  }}t        j                  |      }t        |dd       t        |j                  dd       t        |dd	       t        |j                  dd	       t         j
                  j                  d
d	dd      }t        j                  |      \  }}t        j                  |      }t        |dd       t        |j                  dd       t        |dd	       t        |j                  dd	       g d}d}d}	t        j                  |      \  }}t        j                  |      }t        ||d       t        |j                  |d       t        ||	d
       t        |j                  |	d
       y )N))\(?{Gz@q=
ףp@HzG$@@Q	@q=
ףp?Q@zG?      @Q?RQ?Q	@(\?zG?zG@(\#@333333@Gz?p=
ף@   ?rH   rX      Ɍ?)(\?=
ףp=?\(\@ffffff@\(\?(\?Gz@(\ףp=
@皙?)\(?RQr   p=
ף?@
ףp=
?{Gz?\(\@{Gz@Q@IddY?Dio?r   r   d   iNa locscalesizerandom_stateg   E?g   Oٴ?)gn?gjt?gffffff?gMb?gjt?g;On?gjt?gX9v?gS?g(\?gI+?gʡE?gx?g|?5^?r   gCl?g1Zd@gS@g(\	@gGz@g rh@g"~j@gQ@gtV@gʡE @ghyܝ?g0M?r   )r   shapiror   r]   pvaluenormr>   )
r`   x1wpwshapiro_testx2x3x4
W_expected
p_expecteds
             rA   re   zTestShapiro.test_basic   s   8 b!2}}R(A2A>L224GQRSB 4a@L//1EqQ& b!2}}R(Ay!4L22IqIB3L//!D ZZ^^8^Lb!2}}R(A11=L224FPQRB 3Q?L//1DaP? 

b!2}}R(Az15L22JJB
A6L//QGrC   c                    g dg dg}t        j                  |      \  }}t        j                  |      }t        |dd       t        |j                  dd       t        |dd       t        |j                  dd       g dg dg}t        j                  |      \  }}t        j                  |      }t        |d	d       t        |j                  d	d       t        |d
d       t        |j                  d
d       y )N)
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   rH   rX   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r]   r   )r`   r   r   r   r   r   s         rA   test_2dzTestShapiro.test_2d   s     "89 b!2}}R(A2A>L224GQRSB 4a@L//1EqQ&' b!2}}R(Ay!4L22IqIB3L//!DrC   rn   r   r   c                 &   t        j                  t        t              5  t	        j
                  |      }t        |j                  t        j                         t        |j                  t        j                         d d d        y # 1 sw Y   y xY wNmatch)pytestwarnsr   r   r   r   r   r]   r;   nanr   )r`   rn   rp   s      rA   test_not_enough_valuesz"TestShapiro.test_not_enough_values   sY    \\,4IJ 	---"C/RVV,	- 	- 	-s   ABBc                    t        j                  d      }t         j                  |d<   t        j                  |      \  }}t        j                  |      }t        |t         j                         t        |j                  t         j                         t        |t         j                         t        |j                  t         j                         y )NrS   rI   )	r;   rm   r   r   r   r   r]   r   r   )r`   rn   r   r   r   s        rA   test_nan_inputzTestShapiro.test_nan_input   s    IIcNvv!a 2}}Q'Q\++RVV4 	B'L//8rC   c                     t        j                  g d      \  }}t        j                  |      }d}t        ||d       y )N)i i = i@ )gPq~?gF?h㈵>rQ   )r   boxcoxr   r
   )r`   	trans_valmaxlogrp   refs        rA   test_gh14462zTestShapiro.test_gh14462   s9     "LL)AB	6mmI& 2St,rC   c                     t        j                  g d      }|j                  dk\  sJ g d}t        j                  |      }t        |j                  d       t        |j                  dd       y )N)g9B.?        r   r   )g1gIۿg0!?gr??gel?rP   rQ   )r   r   r   r
   r]   )r`   rp   rn   s      rA   test_length_3_gh18322z!TestShapiro.test_length_3_gh18322   sX     mm:;zzQ KmmA'78

O$?rC   N)rs   rt   ru   re   r   r   markparametrizer   r   r   r   rv   rC   rA   r   r      sQ    )HVE* [[S2sQF"34- 5-9-"@rC   r   z'ignore: As of SciPy 1.17: FutureWarningc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zej                  j                  dg d      d        Zd Zy)TestAndersonc                    t        d      }|j                  d      }|j                  d      }t        j                  |      \  }}}t        |d d |       t        j                  |      \  }}}t        ||dd         t        j                  d      }d|d<   t        j                  |      \  }}}t        |d       y )	NI2   r   
   r   g	@)	r   standard_exponentialstandard_normalr   andersonr   r;   onesr
   )r`   rsr   r   Acritsigvs           rA   test_normalzTestAnderson.test_normal  s    $$$"$-R(~~b)4$s)Q'~~b)4!T"#Y'GGBK!~~a(4 	8$rC   c                 `   t        d      }|j                  d      }|j                  d      }t        j                  |d      \  }}}t        ||dd         t        j                  d      5  t        j                  |d      \  }}}d d d        t        ||d   kD         y # 1 sw Y   xY w)	Nr   r   r   exponr   ignoreallr   )	r   r   r   r   r   r   r;   errstater	   )r`   r   r   r   r   r   r   s          rA   
test_exponzTestAnderson.test_expon  s    $$$"$-R(~~b'24!T"#Y'[[X& 	7 >>"g6LAtS	7DH	7 	7s   /B$$B-c           	         t        j                  d      }d|d<   t        j                  |d      \  }}}t	        |      }t        j
                  j                  |      \  }}t        j
                  j                  |||      }t        j
                  j                  |||      }	t        j                  d|dz         }
| t        j                  d|
z  dz
  ||	d d d   z   z        z
  }t        ||       y )Nr   r   r   gumbelr   r   r   )r;   r   r   r   lengumbel_lfitlogcdflogsfrm   rb   r
   )r`   r   a2r   r   nxbarsr  r  rq   expected_a2s               rA   test_gumbelzTestAnderson.test_gumbel#  s     GGCL!q(3D#F..$$Q'a&&q$2$$Qa0IIa1b277AaC!Gtt0D#EFFK(rC   c                 H    t        t        t        j                  dgd       y Nr   plate_of_shrimpdist)rg   rh   r   r   ri   s    rA   r   zTestAnderson.test_bad_arg3  s    j%..1#<MNrC   c                     t        d      }|j                  d      }t        j                  |      }d}t	        ||       y )Nr   r   r   r]   critical_valuessignificance_level)r   r   r   r   r   )r`   r   rn   rp   ro   s        rA   rr   z#TestAnderson.test_result_attributes6  s<    $###,nnQK
C,rC   c                     t        d      }|j                  d      }t        j                  |d      \  }}}t        j                  |d      \  }}}t	        ||       y )Nr   r   r   r  r  )r   r  r   r   r
   )	r`   r   rn   A1crit1sig1A2crit2sig2s	            rA   test_gumbel_lzTestAnderson.test_gumbel_l=  sT     $II3I..H5E4..J7E4BrC   c                    t        d      }|j                  d      }t        j                  d      }d|d<   t	        j
                  |d      \  }}}t	        j
                  |d      \  }}}	t        ||dd         t        ||d   kD         y )	Nr   r   r   r*   r   gumbel_rr   r   )r   r  r;   r   r   r   r   r	   )
r`   r   r   r   r  r  r  r  r  r  s
             rA   test_gumbel_rzTestAnderson.test_gumbel_rG  s     $YYCY WWS\ 1..Z8E4..Z8E4"eBCj)U2YrC   c                    t        j                  g d      }t        j                  |d      }|j                  j
                  \  }}}t        |||fdd       t        |j                  dd       |j                  |j                  d   k  sJ d	|z  }t        |d
d       t        d   }t        d   }||dz
  dz  ||z
  z  z   }	t        j                  |j                  |	kD        sJ t        |j                  |	d       y )N)
            r'        r(  u   r)  weibull_min)g
ףp=
@gzGX@gQS@Mb`?rQ   gp=
ף?MbP?r   r   g?r   皙?g?atol)r;   arrayr   r   
fit_resultparamsr
   r]   r  r   r   )
r`   rn   rp   mr   r   cAs40As45As_refs
             rA   test_weibull_min_case_Az$TestAnderson.test_weibull_min_case_AV  s    HHGHnnQ.--3C)=DIu48}}s2215555E6-b!b!S:.$+>>vvc))F2333++V$?rC   c                     t        j                  g d      }d}t        j                  t        |      5  t        j                  |d       d d d        y # 1 sw Y   y xY w)N)J   9   0        rJ   F      r?    ;            iF  z/Maximum likelihood estimation has converged to r   r+  )r;   r2  r   r   rh   r   r   r`   rn   messages      rA   test_weibull_min_case_Bz$TestAnderson.test_weibull_min_case_Bi  sK    HH 5 6C]]:W5 	-NN1m,	- 	- 	-s   AAc                 0   t        j                  g d       }d}d}t        j                  t        |      }t        j
                  t        |      }|5  |5  t        j                  |d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)	r$  K   r=     k   rJ   =   +   r?  z:Critical values of the test statistic are given for the...z;An error occurred while fitting the Weibull distribution...r   r+  )	r;   r2  r   r   UserWarningr   rh   r   r   )r`   rn   wmessageemessagewcontextecontexts         rA   test_weibull_warning_errorz'TestAnderson.test_weibull_warning_errorq  s}     XX=>>OP<<8<==8< 	-x 	-NN1m,	- 	- 	- 	- 	- 	-s$   BB /B B		BBdistname)r   r   r  extreme1r  r!  logisticr+  c                    t         j                  j                  d      }|dv rdn|}t        t        |      }t
        |   } |j                  |d|d}t	        j                  ||      }|j                  j                  sJ y )Nl   'Dah$>   r  rX  r    r   r   )
r;   randomdefault_rnggetattrr   r   r>   r   r3  success)r`   rW  rngreal_distnamer  r4  rn   rp   s           rA   test_anderson_fit_paramsz%TestAnderson.test_anderson_fit_params|  sy    
 ii##$67'/3I'I& 	um,-(DHHf4c:nnQ)~~%%%%rC   c                     d}t        t        d|z        t        d          t        j                  }t        t        d|z        t        d          y )Nr   r   r   )r   r   r   r;   inf)r`   r5  s     rA   test_anderson_weibull_Asz%TestAnderson.test_anderson_weibull_As  s@    _QqS)>"+=>FF_QqS)>!+<=rC   N)rs   rt   ru   r   r  r  r   rr   r  r"  r:  rJ  rV  r   r   r   rc  rf  rv   rC   rA   r   r      sh    %.) O-  @&-	- [[ZOP	&P	&>rC   r   c                      e Zd Zd Zd Zd Zej                  j                  ddd ej                  ddej                  j                  	       ej                  d
dej                  j                  	       ej                  ddej                  j                  	      g      d        Zej                  j                  dg d      d        Zy)TestAndersonMethodc                     d}t        j                  t        |      5  t        j                  g dd       d d d        y # 1 sw Y   y xY w)NzAs of SciPy 1.17, users...r   r   r   )r   r   FutureWarningr   r   r`   rI  s     rA   test_warningzTestAndersonMethod.test_warning  s8    .\\-w7 	.NN9f-	. 	. 	.s   A  A	c                     d}t        j                  t        |      5  t        j                  g ddd       d d d        y # 1 sw Y   y xY w)Nz`method` must be either...r   r   r   	ekki-ekkimethod)r   r   rh   r   r   rk  s     rA   test_method_input_validationz/TestAndersonMethod.test_method_input_validation  s>    .]]:W5 	BNN9f[A	B 	B 	Bs   AAc                    t         j                  j                  d      }d}t        j                  t
        |      5  t        j                  |j                        }t        j                  g dd|       d d d        d}t        j                  t
        |      5  t        j                  d	
      }t        j                  g dd|       d d d        t        j                  d|      }t        j                  g dd|      }|j                  d	z  }t        j                  |      |k(  sJ t        j                  t         j                  j                  d            }t        j                  g dd|      }t        j                  t         j                  j                  d            }t        j                  g dd|      }|j                  |j                  k(  sJ t        j                  t         j                  j                  d            }t        j                  g dd|      }|j                  |j                  k7  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nl   7.!Y zThe `rvs` attribute...r   )r>   r   r   ro  zThe `batch` attribute...r   )batchrI   n_resamplesra  l   Fp ra  r   l   Fp )r;   r]  r^  r   r   rQ  r   MonteCarloMethodr   r   round)r`   ra  rI  rp  rp   ten_pr   s          rA   test_monte_carlo_methodz*TestAndersonMethod.test_monte_carlo_method  s   ii##N3*\\+W5 	=++

;FNN9fV<	= -\\+W5 	=++"5FNN9fV<	= ''A3?nnYv>

Rxx%'''''BII,A,A+,NOnn_fVD''BII,A,A+,NOnn_fVDzzSZZ'''''BII,A,A+,NOnn_fVDzzSZZ'''-	= 	=
	= 	=s   ;I1III%zdist_name, seed)r   l   k2II)r   l   i!rY  l   v!)marksr  l   w!i;r!  l   {hrc                    t        t        |      }t        j                  j	                  |      }|j                  d|      }t        j                  ||d      }t        j                  ||t        j                  |            }t        j                  j                  |j                  |j                         t        j                  j                  |j                  |j                  d       y )Nr   r\  interpolatero  rv  {Gzt?r0  )r_  r   r;   r]  r^  r>   r   rw  testingr
   r]   r   )r`   	dist_nameseedr  ra  rn   r   rp   s           rA   test_method_consistencyz*TestAndersonMethod.test_method_consistency  s     ui(ii##D)HH"3H/nnQ	-@nnQ	%2H2HS2QR


""3==#--@


""3::szz"FrC   r  )r   r   rY  r  r!  r+  c                    t        t        |      }t        j                  j	                  d      }|dk(  rdn	t               } |j                  |d|d}t        j                  t              5  t        j                  ||      }d d d        |dk(  r"dt        j                  j                        z
  n!t        j                  j                        dz  }t        j                  |      }t        j                  |      }	t        j                  |j                        }
t        j                  |j                        }t        j                  ||d	      }|j                   |
k  sJ |j"                  |	k(  sJ t        j                  |j                  d
      |d	      }|j                   |kD  sJ |j"                  |k(  sJ y # 1 sw Y   @xY w)Nl   l2IIr+  )      @r   r\  r   r   r}  ro  r   )r_  r   r;   r]  r^  tupler>   r   r   rj  r   asarrayr  minmaxr  r]   r   )r`   r  r  ra  r?   rn   rp   pvalues
pvalue_min
pvalue_maxstatistic_minstatistic_maxs               rA   test_interpolate_saturationz.TestAndersonMethod.test_interpolate_saturation  sp    ui(ii##M2"m3vDHHd#6\\-( 	/..I.C	/=F-=W1rzz#"8"899

3#9#9:S@ 	VVG_
VVG_
s223s223 nnQ	-@}}},,,zzZ''' nnSZZRZ0)MR}}},,,zzZ'''#	/ 	/s   -GGN)rs   rt   ru   rl  rq  rz  r   r   r   paramxslowr  r  rv   rC   rA   rh  rh    s    .
B
(8 [[.	 	!	j-v{{7H7H	I	j-v{{7H7H	I	j-v{{7H7H	I		KLGLG [[[LN(N(rC   rh  z)ignore:Parameter `variant`...:UserWarningc                   t    e Zd Zd Zd Zej                  j                  d        Zd Z	d Z
d Zd Zd Zd	 Zy
)TestAndersonKSampc                 .   g d}t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  ||||fd      \  }}}t	        |dd       t        g d	|d
d d       t        |dd       y )NgYC@g     D@gfffffE@g     @F@g     F@g      G@gG@g      M@gC@gfffffC@gC@g33333D@gfffffD@g33333sE@gfffffE@gfffffF@      A@g     A@g     C@g      D@     E@r        F@g     F@r  ffffffA@r  g33333A@gB@gfffffB@gD@gffffffE@Fmidrankg@r   gCl?gvq-?g,Ԛ?gl@gPk	@r   r   r   gJ4a?Mb0?r0  r;   r2  r   anderson_ksampr   r   r
   r`   t1t2t3t4Tktmps           rA   test_example1az TestAndersonKSamp.test_example1a  s    
 >XXFGXXFGXXFG(("b"b)95I	BBq)!"J"$Qq'1	.60rC   c                 T   t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  ||||fd      \  }}}t	        |dd       t        g d	|d
d d       t        |dd       y )Nr  r  r  r  Tr  gQ@r   r  r   r   r   r,  r  r0  r  r  s           rA   test_example1bz TestAndersonKSamp.test_example1b  s    
 XXFGXXFGXXFGXXFG(("b"b)94H	BBq)!"J"$Qq'1	.60rC   c                 H   g d}g d}g d}g d}g d}g d}g d}g d}g d	}	g d
}
g d}g d}g d}g d}|||||||||	|
||||f}t        j                  |d      \  }}}t        |dd       t        g d|dd d       t	        |dd       t
        j                  j                  d      }t        j                  d|      }t        j                  |d|      }t        |j                  |       t        |j                  |       t	        |j                  |d       y )N   rl   )   r?  !      i  rW   :   %   r   A   rI      i     $      v   
"         r  C   r=  >   rK      r  Z   r   <      rO  1   rW      8      O   T   ,   rD  r?  r        i6  L   rG  r     r        rA  e   r  r<  r=  r>  r?  r@  rJ   rA  rB  r?  rC  rD  rE  7   i@  r  h         /            r  r  i  W   rK   x   rW   r  r  r$  G   r  rB  *   r  r   rJ   r     r   rW   r  r  rW   r     r  r   r  4   _   a   3   r  r      r     D   M   P   r   r  j      R   6   r     .   o   '   ?   r     r     r  r   r  f   H   r  r  r   rl         r  X   r  r   r   r  r        r     r  rM   rW   	g  rI   rJ   i  i[  r   r  r   i  r      r   i  #   rJ   i  r  r   rK   b   r   U   [   rP     r   r  r     rW   r=  r      r  rD        rE  rW   r  B   rO  r  Fr  gM
@r   g^I+?g~:?g+e?gH.!@gcZB>h@r   r   r   	^)p?r  r0  l   <Ic i'  rt  )r  rp  ga2U0*C?)r   r  r   r   r
   r;   r]  r^  PermutationMethodr   r]   r  r   )r`   r  r  r  r  t5t6t7t8t9t10t11t12t13t14samplesr  r  r  ra  rp  rp   s                         rA   test_example2az TestAndersonKSamp.test_example2a  s)   
 (G45%?@IB14'? r2r2r2r2sCc3O((%@	BBq)!"J"$Qq'1	.60ii##$78((TsC""7E&I3=="-3..3

AD1rC   c                     g d}g d}g d}g d}g d}g d}g d}g d}g d	}	g d
}
g d}g d}g d}g d}t        j                  |||||||||	|
||||fd      \  }}}t        |dd       t        g d|dd d       t	        |dd       y )Nr  r  r  r  r  r  r  r  r  r  r  r  r
  r  Tr  g'1Z
@r   r  r   r   r   r  r  r0  )r   r  r   r   r
   )r`   r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r  r  r  s                     rA   test_example2bz TestAndersonKSamp.test_example2b-  s     (G45%?@IB14'? (("b"b"b"b*,c3S#*G157	B 	Bq)!"J"$Qq'1	.60rC   c                    t        j                  ddd      }t        j                         5  t        j                  ddt
               t        j                  ||dz   gd      \  }}}d d d        t        dd	       t        d
       t        j                         5  t        j                  ddt
               t        j                  ||dz   g      \  }}}d d d        t        |dd	       t        |d
       t        j                         5  t        j                  ddt
               t        j                  ||dz   gd      \  }}}d d d        t        |dd       t        |d       t        j                         5  t        j                  ddt
               t        j                  ||dz   g      \  }}}d d d        t        |dd       t        |d       t        j                  ||dz   gd      \  }}}t        |dd       t        |ddd       t        j                  ||dz   g      \  }}}t        |dd       t        |ddd       t        j                  ||dz   gd      \  }}}t        |dd       t        |ddd       t        j                  ||dz   gd      \  }}}t        |d d       t        |d!d"d       y # 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   9xY w)#Nr   r   r   zp-value flooredg     @D@Fr  g=
ףpD@r   r-  gGzD@zp-value capped      ?g?ܵr         ?g?ܵ      @g!u?gףp=
׳?r~  r   r1  rR   rH   gBiq?g鷯?      '@g:M@g46<Rv?gMb@?g      +@g6>W[1@g1ZGUS?-C6?)r;   linspacer   r   filterwarningsrQ  r   r  r   r   r
   )r`   r   r  _r  s        rA   test_R_kSamplesz!TestAndersonKSamp.test_R_kSamplesM  s   B [[C% $$& 	K##H.?M**BT	?EJGAq!	K 	Avq)Q$$& 	<##H.?M**BT	?;GAq!	< 	Avq)Q $$& 	I##H.>L**BR=%HGAq!	I 	Aw*Q$$& 	:##H.>L**BR=9GAq!	: 	Aw*Q &&BH~uE1aAvq)6A6 &&BF|41aAvq)6A6 &&BIF1aAvq)7a8&&BIF1aAvq)7a8U	K 	K	< 	<	I 	I	: 	:s/   <K:K<K!=:K.KK!K+.K8c                 h    t        t        t        j                  t	        j
                  d             y Nr   rg   rh   r   r  r;   r   ri   s    rA   test_not_enough_samplesz)TestAndersonKSamp.test_not_enough_samples  s    j%"6"6
CrC   c                     t        t        t        j                  t	        j
                  d      t	        j
                  d      f       y r2  r3  ri   s    rA   test_no_distinct_observationsz/TestAndersonKSamp.test_no_distinct_observations  s,    j%"6"6wwqz2771:.	0rC   c                 l    t        t        t        j                  t	        j
                  d      g f       y r2  r3  ri   s    rA   test_empty_samplez#TestAndersonKSamp.test_empty_sample  s!    j%"6"6R8HIrC   c                     g d}t        j                  g d      }t        j                  ||fd      }d}t	        ||       t        |j                  |j                         y )Nr  r  Fr  r  )r;   r2  r   r  r   r   r  r   )r`   r  r  rp   ro   s        rA   rr   z(TestAndersonKSamp.test_result_attributes  sO    =XXFG""B8U;K
C,S++SZZ8rC   N)rs   rt   ru   r  r  r   r   r  r#  r%  r0  r4  r6  r8  rr   rv   rC   rA   r  r    sN    1"1  [[$2 $2L1@N9`D0J	9rC   r  c                   `    e Zd Zd Zd Zej                  j                  dddg      d        Zy)TestAndersonKSampVariantc                    g d}g d}d}t        j                  t        |      5  t        j                  ||f      }d d d        t              dk(  rt        |d      sJ t        j                  t        |      5  t        j                  ||fd      }d d d        t        j                  |j                         t        |j                  |j                         t        |      dk(  rt        |d      sJ t        j                  t        |      5  t        j                  ||fd	d
      }d d d        t        |j                  |j                         t        |j                  |j                         t        |d      rJ t        j                  ||fd
      }t        |j                  |j                         t        |j                  |j                         t        |d      rJ t        j                  t        |      5  t        j                  ||fd	      }d d d        t        |      dk(  rt        |d      sJ t        j                  t        |      5  t        j                  ||fdd      }d d d        t        |j                  |j                         t        |j                  |j                         t        |d      rJ t        j                  ||fd      }t        |j                  |j                         t        |j                  |j                         t        |d      rJ 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   AxY w# 1 sw Y   xY w)N)r   r   r   r   r   r   )
r   r   r   r   r   r   rH   rH   rH   rK   z*Parameter `variant` has been introduced...r   r   r  Tr  Fr  )r  variantr=  right)
r   r   rQ  r   r  r  hasattrr   r]   r   )r`   rn   yrI  r   rp   s         rA   test_variant_valuesz,TestAndersonKSampVariant.test_variant_values  s   *>\\+W5 	/&&1v.C	/3x1}.?!@@@\\+W5 	=&&1vt<C	=S]]CMM2SZZ,3x1}.?!@@@\\+W5 	Q&&1vuiPC	QS]]CMM2SZZ,3 1222""Aq69=S]]CMM2SZZ,3 1222\\+W5 	>&&1vu=C	>3x1}.?!@@@\\+W5 	N&&1vtWMC	NS]]CMM2SZZ,3 1222""Aq67;S]]CMM2SZZ,3 12222E	/ 	/	= 	=	Q 	Q	> 	>	N 	Ns;   L;=MM	M""M/;MMM"M,/M8c                     t        j                  d      }d}t        j                  t        |      5  t        j                  ||fd       d d d        y # 1 sw Y   y xY w)Nr   z=`variant` must be one of 'midrank', 'right', or 'continuous'.r   Camelotr>  )r;   rm   r   r   rh   r   r  rH  s      rA   test_variant_input_validationz6TestAndersonKSampVariant.test_variant_input_validation  sK    IIbMQ]]:W5 	<  !Q;	< 	< 	<s   AA	n_samplesr   r   c                    t         j                  j                  d      }|j                  |df      dt        j                  |      d d t         j                  f   z  z   }t        j                  |d      }t        j                  |d      }t        |j                  |j                         t        |j                  |j                         y )Nl   0e rl   皙?r?  r>  
continuous)
r;   r]  r^  rm   newaxisr   r  r
   r]   r   )r`   rF  ra  r"  r   rp   s         rA   test_variant_continuousz0TestAndersonKSampVariant.test_variant_continuous  s    ii##K0**i_-BIIi4HBJJ4W0WW""7G<""7LAs}}5

CJJ/rC   N)	rs   rt   ru   rB  rE  r   r   r   rK  rv   rC   rA   r;  r;    s6    &3P< [[[1a&10 20rC   r;  c                   @   e Zd Zd Zd Zd Zej                  j                  dd      ej                  j                  dg dgfdgg fg      d	               Z
d
 Zd Zej                  j                  dg dg dddfg dg dddfg dg dddfg dg dddfg dg dddfg dg dddfg      d        Zd Zej                  j                  dg d      ej                  j                  dddg      ej                  j                  dd d!g      d"                      Zy#)$
TestAnsaric                     |j                  g d      }|j                  g d      }t        j                  ||      \  }}t        ||j                  d             t        ||j                  d             y )N)r   r   r   r   r   )r   r   rH   r   rH   r   r   r   g     7@g8#oG?r  r   ansarir$   r`   xprn   rA  Wpvals         rA   
test_smallzTestAnsari.test_small  sZ    JJ'JJ/0,,q!$42::d+,bjj)<=>rC   c                     |j                  g d      }|j                  g d      }t        j                  ||      \  }}t        ||j                  d             t        ||j                  d             y )Nr  rN  r   c   r  r  m   l   r  rX  r  `   r  r  rN  q   t   r\  n   r  rN  rZ  r  r  i   g   r^  r`  r  r   r[  rZ  ra  r  r   rb  r\  rZ  r  rX  g     0g@g|:?rO  )r`   rR  ramsayparekhrS  rT  s         rA   test_approxzTestAnsari.test_approx  sg     L M & ' ,,vv.42::e,-bjj)<=>rC   c                     |j                  g d      |j                  g d      }}t        j                  ||      \  }}t        ||j                  d             t        ||j                  d             y )Nr   r   r   r   )rl   r   r  rL   r   rJ   rS   g?rO  rQ  s         rA   
test_exactzTestAnsari.test_exact  sY    zz,'4J)K1,,q!$42::d+,bjj)=>?rC   	jax.numpyzno _axis_nan_policy decoratorreasonr?   r,   c                    |D cg c]  }|j                  |       }}t        j                  t        t              5  t        j                  | }t        |j                  |j                  |j                               t        |j                  |j                  |j                               d d d        y c c}w # 1 sw Y   y xY wr   )r  r   r   r   r   r   rP  r%   r]   r   r   )r`   r?   rR  argrp   s        rA   r   zTestAnsari.test_bad_arg  s     ,00C

300\\,4IJ 	<,,%CCMM2::bff+=>CJJ

266(:;	< 	< 1	< 	<s   B8A1B==Cc                     |j                  g d      }|j                  g d      }d}t        t        |      5  t        j                  ||d       d d d        y # 1 sw Y   y xY w)Nrg  r   rH   rK   rL   z!'alternative' must be 'two-sided'r   fooalternative)r  rg   rh   r   rP  )r`   rR  r   r   r   s        rA   test_bad_alternativezTestAnsari.test_bad_alternative  sR    ZZ%ZZ%3:U3 	4LLRU3	4 	4 	4s   AA%c                    |j                  g d      }|j                  g d      }t        j                  ||      \  }}t        j                  ||d      j                  }t        j                  ||d      j                  }|dkD  sJ |dk  sJ t        j
                  j                  t        |      |j                  d   |j                  d         }|j                  t        |            }t        ||z   d	|z   d
       t        ||dz  d
       t        |d	|z   |dz  z
  d
       t        j                  ||d      j                  }	t        j                  ||d      j                  }
|	dk  sJ |
dkD  sJ y )N)r   r   r   rl   r  g      9@)r)  g      !@      #@g      %@r+  g      )@lessrq  greaterffffff?皙?r   r   -q=r0  r   )
r  r   rP  r   r   apmffloatshaper$   )r`   rR  r   r   r]   rT  pval_lpval_gprobpval_l_reversepval_g_reverses              rA   test_alternative_exactz!TestAnsari.test_alternative_exact  sK   ZZ34ZZ9:  ,,r2.	4b"&9@@b")<CC}}}} ||i 0"((1+rxx{Kzz%+&T> 	QU3$tAvE: b"&AHHb")DKK$$$$$$rC   zx, y, alternative, expectedrg  ro  rw  g@A?rx  r   )r   r   rH   rK   rL   gG$I?g%I$I?r   )rH   rK   rL   c                     |j                  |      |j                  |      }}t        j                  |||      j                  }t	        ||j                  |      d       y )Nrq  r{  r0  )r  r   rP  r   r$   )r`   rn   rA  rr  expectedrR  rT  s          rA   test_alternative_exact_with_Rz(TestAnsari.test_alternative_exact_with_R4  sJ    8 zz!}bjjm1||Aqk:AAbjj2?rC   c                    |j                  t        j                  j                  dddd            }|j                  t        j                  j                  dddd            }t        j                  ||d      j
                  }t        j                  ||d	      j
                  }t        ||j                  d
|j                        d       t        ||j                  d|j                        d       |j                  t        j                  j                  dddd            }|j                  t        j                  j                  dddd            }t        j                  ||      j
                  }t        j                  ||d      j
                  }t        j                  ||d	      j
                  }t        ||dz  d       t        |d|dz  z
  d       y )Nr   r   r   {   r\  r   rw  rq  rx  r,   dtyper{  r0  r   r        ?r   )r  r   r   r>   rP  r   r$   float64)r`   rR  r   r   r  r  rT  s          rA   test_alternative_approxz"TestAnsari.test_alternative_approxT  sf   ZZ

q!#CHIZZ

q!#CHI b"&9@@b")<CC

3bjj
 AN

3bjj
 AN ZZ

q!"3GHZZ

q#BSIJ||B#**b"&9@@b")<CCQU3$q&u5rC   r  Nfloat32r  r
  r   r   tiesFTc                    t        |      r)|j                  dk  r|dk(  rt        j                  d       |t	        |      nt        ||      }t        j                  j                  d      }|r|j                  dd|f      n|j                  d|f      \  }}t        j                  ||      }t        j                  |j                  ||      |j                  ||            }	t        |	j                  |j                  |j                  |             t        |	j                  |j                  |j                  |             y )	N2.0r  *Scalar dtypes only respected after NEP 50.l   ]M rH   r   r   r  )r"   __version__r   skipr#   r_  r;   r]  r^  integersr   rP  r  r$   r]   r   )
r`   r  r
  r  rR  ra  rn   rA  r   rp   s
             rA   test_dtypeszTestAnsari.test_dtypesi  s     B<BNNU2u	7IKKDE(- $72u;Mii##N3/3s||AQF|+!Q9P1ll1a ll2::au:5rzz!5z7QRrzz#--uz'MN

BJJszzJ$GHrC   N)rs   rt   ru   rU  re  rh  r   r   skip_xp_backendsr   r   rs  r  r  r  r  rv   rC   rA   rM  rM    sP   ?	?@ [[!!+6U!V[[VrB4jB4*%=>< ? W<4%8 [[% fo	>
i	A
_fo	>
_i	A
9fo	>
9i	A	C@@(6* [[W&BC[[S2s),[[VeT]3	I 4 - D	IrC   rM  c                   f    e Zd Zd Zd Zd Zej                  j                  d      d        Z	d Z
y)TestBartlettc           
      H   t         t        t        t        t        t
        t        t        t        t        g
}|D cg c]  }|j                  |       }}t        j                  | \  }}t        ||j                  d             t        ||j                  d             y c c}w )NgzU@ /4@gG?)g1g2g3g4g5g6g7g8g9g10r  r   bartlettr$   )r`   rR  r?   rm  TrT  s         rA   	test_datazTestBartlett.test_dataz  su    BBBBC8+/0C

300..$'42::&789bjj9: 1   Bc                     d}t        j                  t        |      5  t        j                  |j                  dg             d d d        y # 1 sw Y   y xY w)Nz-Must enter at least two input sample vectors.r   r,   )r   r   rh   r   r  r  r`   rR  rI  s      rA   test_too_few_argszTestBartlett.test_too_few_args  sA    A]]:W5 	-NN2::rd+,	- 	- 	-   &AAc           
          t         t        t        t        t        t
        t        t        t        t        g
}|D cg c]  }|j                  |       }}t        j                  | }d}t        |||       y c c}w Nr]   r   rR  )r  r  r  r  r  r  r  r  r  r  r  r   r  r   r`   rR  r?   rm  rp   ro   s         rA   rr   z#TestBartlett.test_result_attributes  s[    BBBBC8+/0C

300nnd#,
C3 1   A6 ignore:invalid value encounteredc                    t         t        t        t        t        t
        t        t        t        t        g f}|D cg c]  }|j                  |       }}t        t        t        |      5  t        j                  | }d d d        |j                  |j                         }t#        j$                  |       t#        |j&                  |       y c c}w # 1 sw Y   VxY wNr   rR  )r  r  r  r  r  r  r  r  r  r  r  r    r   r   r   r  r   r%   r]   r   )r`   rR  r?   rm  rp   NaNs         rA   test_empty_argzTestBartlett.test_empty_arg  s    BBBBC<+/0C

300+3HRP 	(..$'C	( jj s+

C( 1	( 	(s   C*CCc                 ,   |j                  g d|j                        }|j                  g d|j                        }|j                  g d|j                        }t        j                  |||      }|j	                  |j
                  dk\        sJ y )N)g333333$@gffffff$@g$@g$@r  )L$@     $@33333$@gfffff$@)g$@r  r  r  r   )r  r  r   r  r   r]   )r`   rR  r|  br6  rp   s         rA   test_negative_pvalue_gh21152z)TestBartlett.test_negative_pvalue_gh21152  st    JJ/rzzJBJJ32::JFJJ32::JFnnQ1%vvcmmq()))rC   N)rs   rt   ru   r  r  rr   r   r   r.  r  r  rv   rC   rA   r  r  x  s;    ;-
4 [[ BC	) D	)*rC   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)

TestLevenec           
      H   t         t        t        t        t        t
        t        t        t        t        g
}|D cg c]  }|j                  |       }}t        j                  | \  }}t        ||j                  d             t        ||j                  d             y c c}w )NgYpK?gI{]?r  r  r  r  r  r  r  r  r  r  r  r   levener$   r`   rR  r?   rm  rS  rT  s         rA   r  zTestLevene.test_data  su    BBBBC8+/0C

300,,%42::&89:bjj9: 1r  c           
      N   t         t        t        t        t        t
        t        t        t        t        g
}|D cg c]  }|j                  |       }}t        j                  |ddi\  }}t        ||j                  d             t        ||j                  d             y c c}w )Ncenterrb   g F@g(gX?r  r  s         rA   	test_meanzTestLevene.test_mean  s{    BBBBC8+/0C

300,,4V442::&678bjj):;< 1s   B"c                    |j                  t              |j                  t              |j                  t              f}t	        j
                  |ddi\  }}t	        j
                  |ddd\  }}t        ||       t        ||       y )Nr  rb   trimmedr   r  proportiontocut)r  r  r  r  r   r  r$   )r`   rR  r?   W1pval1W2pval2s          rA   test_trimmed1zTestLevene.test_trimmed1  si     

2

2

2?LL$6v6	ELL$y#N	EBu%rC   c           
      P   t         t        t        t        t        t
        t        t        t        t        g
}|D cg c]  }|j                  |       }}t        j                  |ddd\  }}t        ||j                  d             t        ||j                  d             y c c}w )Nr  r(  r  g˼> @gwW?r  r  s         rA   test_trimmed2zTestLevene.test_trimmed2  sz    BBBBC8+/0C

300,,YM42::&678bjj);<= 1s   B#c                    t        j                  ddd      }t         j                  j                  d      }|j	                  |      }|dz  }|j                  |      |j                  |      |j                  |      }}}t        j                  ||d      \  }}t        j                  ||d      \  }}	t        ||       t        ||	       y )	Nr   r   rB     Kc r   rb   r  median)	r;   r-  r]  r^  permutationr  r   r  r$   )
r`   rR  rn   ra  r   rA  r  r  r  r  s
             rA   test_equal_mean_medianz!TestLevene.test_equal_mean_median  s    KKAr"ii##J/__QqD::a="**R."**Q-q2LLAf5	ELLQx8	EBu%rC   c                     |j                  ddd      }d}t        j                  t        |      5  t	        j
                  ||d       d d d        y # 1 sw Y   y xY wNr   r   rB  z-center must be 'mean', 'median' or 'trimmed'.r   trimr  )r-  r   r   rh   r   r  r`   rR  rn   rI  s       rA   test_bad_center_valuez TestLevene.test_bad_center_value  sL    KKAr"A]]:W5 	.LLAf-	. 	. 	.   AAc                     d}t        j                  t        |      5  t        j                  |j                  dg             d d d        y # 1 sw Y   y xY w)N"Must provide at least two samples.r   r   )r   r   rh   r   r  r  r  s      rA   r  zTestLevene.test_too_few_args  s@    6]]:W5 	*LLQC)	* 	* 	*r  c           
          t         t        t        t        t        t
        t        t        t        t        g
}|D cg c]  }|j                  |       }}t        j                  | }d}t        |||       y c c}w r  )r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  s         rA   rr   z!TestLevene.test_result_attributes  s[    BBBBC8+/0C

300llD!,
C3 1r  N)rs   rt   ru   r  r  r  r  r  r  r  rr   rv   rC   rA   r  r    s*    ;=&>	&.*
4rC   r  c                      e Zd ZdZd Zd Zd Zd Zej                  j                  dg d      d        Zej                  j                  dg d	      d
        Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zej                  j                  dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g      d*        Zd+ Zej                  j                  d,d-d.g      d/        Zd0 Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Zej                  j3                  ej6                  d7k  d89      d:        Zy;)<TestBinomTestzTests for stats.binomtest.c                    d}t        j                  ddd      }t        |j                  d|       t        j                  ddd      }t        |j                  d|       t        j                  d	dd      }t        |j                  d
|       t        j                  ddd      }t        |j                  dd       y )N绽|=iΙ i@o@Q?r,   rQ   iΙ gX7?i	ϙ g=?iϙ gybw?rU   r   	binomtestr
   r   r`   rR   rp   s      rA   test_two_sided_pvalues1z%TestBinomTest.test_two_sided_pvalues1  s     ooh$7

Cd3ooh$7

O$?ooh$7

O$?ooh$7

O$?rC   c                    d}t        j                  ddd      }t        |j                  d|       t        j                  ddd      }t        |j                  d	|       t        j                  d
dd      }t        |j                  d|       t        j                  ddd      }t        |j                  d|       t        j                  ddd      }t        |j                  d|       t        j                  ddd      }t        |j                  d|       t        j                  ddd      }t        |j                  d|       y )Nr  rI   rB  r  r
  r  gX-h?rQ   r   g㤶y?r  g	y}?rK   g+,?r   r   r'  g      ?r   r/  g{Gz?g333333?g<,?r  r  s      rA   test_two_sided_pvalues2z%TestBinomTest.test_two_sided_pvalues2  s    ooa2.

O$?ooaT*

$5DAoob"d+

O$?ooaT*

O$?ooaR(

G$7ooaB'

Dt4ooaB'

F6rC   c                 <   d}t        j                  ddd      }t        |j                  d|       t        j                  ddd	      }t        |j                  d|       t        j                  d
dd      }t        |j                  d|       t        j                  ddd      }t        |j                  d|       t        j                  dd
d      }t        |j                  d|       t        j                  ddd      }t        |j                  d|       y )Nr  i  i  r'  r   rQ   r   r  gAL &W?rM   r  g!YB?rl   r  gE]t?rK   rH   r  r  r  s      rA   test_edge_caseszTestBinomTest.test_edge_cases
  s    ooc3,

AD1ooaT*

AD1oob"e,

AD1oob"e,

AD1ooaS)

AD1ooaS)

AD1rC   c           	         ddd}t        j                  t        j                  z        dz         }t        j                  j                  |      }t        j                  t        j                  j                  |      |k  d      }t        fd| t        j                  z              }|z
  t        |t        j                  j                  |      k(        z   }t        ||d	       d
}t        j                  t        j                  z        dz         }t        j                  j                  |      }t        j                  t        j                  j                  |      |k  d      }t        fd|dt        j                  z              }|dz   }t        ||d	       y )Nr   r'  r   r   r   axisc                 H    t         j                  j                  |        S r:   r   binomr}  r   r
  r  s    rA   <lambda>z>TestBinomTest.test_binary_srch_for_binom_tst.<locals>.<lambda>&  s    +0;;??2q!+D*D rC   rU   rQ   rK   c                 F    t         j                  j                  |       S r:   r  r  s    rA   r  z>TestBinomTest.test_binary_srch_for_binom_tst.<locals>.<lambda>2  s    */++//"a*C rC   )r;   rm   ceilr   r  r}  sumr   intr
   floor)	r`   krq   dy1ixy2r
  r  s	          @@rA   test_binary_srch_for_binom_tstz,TestBinomTest.test_binary_srch_for_binom_tst  sh    IIbgga!enac*KKOOAq!$VVEKKOOAq!,1:) +E+,"bgga!enaA Vc!u{{r1a8899BT*IIbhhq1uo)*KKOOAq!$VVEKKOOAq!,1:) +D*+QQA !VBT*rC   z"alternative, pval, ci_low, ci_high))rw  g$W?r   g?)rx  g}?gGI~?r,   )	two-sidedg}G?g>?6?g4M?c                    t        j                  ddd|      }t        |j                  |d       t	        |j
                  d       |j                  d	      }t        |j                  |j                  f||fd       y )
Nr  r   r(  r
  r  rr  r{  rQ   皙?ry  confidence_level	r   r  r
   r   r   r]   proportion_cilowhighr`   rr  rT  ci_lowci_highrp   cis          rA   test_confidence_intervals1z(TestBinomTest.test_confidence_intervals19  sg     oobC4[I

Du5S]]C(5)FG+<5IrC   ))rw  ga&+w?r   gny?)rx  g5!Rx?g5%?r,   )r  g~th?gSuR&|?g|KnG?c                    t        j                  ddd|      }t        |j                  |d       t	        |j
                  d       |j                  d	      }t        |j                  |j                  f||fd       y )
Nr   r   r	  r  rP   rQ   gQ?r5   r
  r  r  s          rA   test_confidence_intervals2z(TestBinomTest.test_confidence_intervals2H  sg     ooa2+F

Dt4S]]D)5)FG+<4HrC   zalternative, pval, ci_high))rw  gլ?g̓A?)rx  r,   r,   )r  gEow?g;Kڞj?c                     t        j                  ddd|      }t        |j                  |d       |j	                  d      }t        |j                  d	       t        |j                  |d       y )
Nr   r   r(  r  rr  rP   rQ   ry  r
  r   )r   r  r
   r   r  r   r  r  )r`   rr  rT  r  rp   r  s         rA   !test_confidence_interval_exact_k0z/TestBinomTest.test_confidence_interval_exact_k0W  sY     ooatE

Dt45RVVS!t4rC   zalternative, pval, ci_low))rw  r,   r   )rx  6>g@>}_?)r  r  gcڒ ?c                     t        j                  ddd|      }t        |j                  |d       |j	                  d      }t        |j                  d       t        |j                  |d       y )	Nr   r(  r  rP   rQ   ry  r
  r,   )r   r  r
   r   r  r   r  r  )r`   rr  rT  r  rp   r  s         rA   %test_confidence_interval_exact_k_is_nz3TestBinomTest.test_confidence_interval_exact_k_is_nd  sY     oob"+F

Dt45RWWc"T2rC   z+k, alternative, corr, conf, ci_low, ci_high)r   r  Try  g`?g?)r   r  Tr5   grt!?g/?)r   r  Fry  gVK5?g5dM?)r   r  Fr5   gXCVu^?g*r[?)r   rw  Try  r   gP-V?)r   rw  Tr5   r   g^'?)r   rw  Fry  r   gS5a?)r   rw  Fr5   r   g?)r   rx  Try  g!Շ`ⰸ?r,   )r   rx  Tr5   g$x"?r,   )r   rx  Fry  gW~=?r,   )r   rx  Fr5   g	L?r,   )r   r  Try  r   gX?)r   r  Fry  r   gN?)r   rw  Try  r   g/<7#9?)r   rw  Fry  r   gAA?)r   rx  Try  r   r,   )r   rx  Fry  r   r,   )r   r  Try  g7?r,   )r   r  Fry  g؍s?r,   )r   rw  Try  r   r,   )r   rw  Fry  r   r,   )r   rx  Try  ghadn?r,   )r   rx  Fry  gAB/?r,   c                     t        j                  |dd|      }|rd}nd}|j                  ||      }	t        |	j                  |	j
                  f||fd       y )	Nr   rH  r  wilsonccwilson)r  rp  rP   rQ   )r   r  r  r
   r  r  )
r`   r   rr  corrconfr  r  rp   rp  r  s
             rA   test_ci_wilson_methodz#TestBinomTest.test_ci_wilson_methodq  sX    > ooa2+FFFVD)FG+<4HrC   c                     t        j                  ddd      }t        |j                  d       t        |j                  d       y )Nr   r  r(  r,   )r   r  r   r]   r   r`   rp   s     rA   &test_estimate_equals_hypothesized_propz4TestBinomTest.test_estimate_equals_hypothesized_prop  s2     ooaT*S]]D)SZZ%rC   zk, n)r   r   )r   r   c                     t        j                  t        d      5  t        j                  ||       d d d        y # 1 sw Y   y xY w)Nz must be an integer not less thanr   r   r   rh   r   r  )r`   r   r
  s      rA   test_invalid_k_nzTestBinomTest.test_invalid_k_n  s7    ]]:!CE 	"OOAq!	" 	" 	"s	   <Ac                     t        j                  t        d      5  t        j                  ddd       d d d        y # 1 sw Y   y xY w)Nz+k \(11\) must not be greater than n \(10\).r   r  r   r(  r'  ri   s    rA   test_invalid_k_too_bigz$TestBinomTest.test_invalid_k_too_big  s9    ]]:!OQ 	*OOBD)	* 	* 	*s	   =Ac                     t        j                  t        d      5  t        j                  ddgdd       d d d        y # 1 sw Y   y xY w)Nzk must be an integer.r   r   r  rB  r(  )r   r   	TypeErrorr   r  ri   s    rA   test_invalid_k_wrong_typez'TestBinomTest.test_invalid_k_wrong_type  s<    ]]9!8: 	0OORHb$/	0 	0 	0	   ?Ac                 ,   d}t        j                  t        |      5  t        j                  ddd       d d d        d}t        j                  t        |      5  t        j                  ddd       d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)	Nzp \(-0.5\) must be in range...r   r            ࿩r  zp \(1.5\) must be in range...r  r'  rk  s     rA   test_invalid_p_rangez"TestBinomTest.test_invalid_p_range  sw    3]]:W5 	-OOBt,	-2]]:W5 	,OOBs+	, 	,	- 	-	, 	,s   A>B
>B
Bc                     t        j                  ddd      }d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)	Nr   r   rH  r  z/confidence_level \(-1\) must be in the intervalr   r   r
  r   r  r   r   rh   r  )r`   rp   rI  s      rA   test_invalid_confidence_levelz+TestBinomTest.test_invalid_confidence_level  sM    ooa2-D]]:W5 	3r2	3 	3 	3s   AAc                     t        j                  ddd      }t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   y xY w)	Nr   r   rH  r  z$method \('plate of shrimp'\) must ber   zplate of shrimpro  r5  r$  s     rA   test_invalid_ci_methodz$TestBinomTest.test_invalid_ci_method  sJ    ooa2-]]:-TU 	8%67	8 	8 	8s   AAc                     t        j                  t        d      5  t        j                  dddd       d d d        y # 1 sw Y   y xY w)Nzalternative \('ekki'\) not...r   r   r   rH  ekkir  r'  ri   s    rA   test_invalid_alternativez&TestBinomTest.test_invalid_alternative  s<    ]]:-MN 	@OOAs?	@ 	@ 	@r.  c                 t    t        j                  ddd      }t        |j                  |j                         y )Nr   r   rH  r  )r   r  r   proportion_estimater]   r$  s     rA   
test_aliaszTestBinomTest.test_alias  s(    ooa2-S,,cmm<rC   l        z32-bit does not overflowrj  c                     t        j                  t        d      5  t        j                  ddt
        j                  j                         d d d        y # 1 sw Y   y xY w)NzError in function...r   r   rH   r2  )r   r   OverflowErrorr   r  sys
float_infor  ri   s    rA   test_boost_overflow_raisesz(TestBinomTest.test_boost_overflow_raises  sB     ]]=0FG 	8OOAqCNN$6$67	8 	8 	8s   1AAN)rs   rt   ru   __doc__r  r  r  r  r   r   r   r  r  r  r  r"  r%  r(  r*  r-  r3  r6  r8  r;  r>  skipifrA  maxsizerC  rv   rC   rA   r  r    s   $@7"2+@ [[AHIJIJ [[AFGIGI [[9DE5	E5 [[8FG3	G3 [[5	=	;	<	=	0	0	1	1	4	4	4	5	5	6	0	0	-	.	6	7	+	,	4	43	6:I;:I& [[Vfg%67" 8"
*
0
,38
@= [[u,5OP8 Q8rC   r  c                       e Zd ZddZej
                  j                  dg d      d        Zd Zej
                  j                  dd      d	        Z
d
 Zd Zd Zej
                  j                  dd      d        Zy)TestFlignerc                     t         j                  j                  |      }t        j                  |      d|j	                  t        |            z  z   j                         S )Nr  )r;   r]  r^  r  r   r  tolist)r`   gra  s      rA   _perturbzTestFligner._perturb  sF    ii##C(

1(;(;CF(C CCKKMMrC   r  r  c                    t        |      r)|dk(  r$|j                  dk  rt        j                  d       |t	        |      nt        ||      }|j                  d|      }t        j                  ||dz        }|j                  d|      |j                  d|      f}t        |d	   |d	          t        |d
   |d
          y )Nr  2r  r   r  r   gnf	@gDq?r   r   )r"   r  r   r  r#   r_  rm   r   flignerr  r$   )r`   r  rR  r   rp   r   s         rA   r  zTestFligner.test_data  s    B<EY.2>>C3GKKDE(- $72u;MYYqY&mmBA&zz,Ez:zz.ez<>AA'AA'rC   c                    t         j                  j                  d      }|j                  | j	                  t
        |            }|j                  | j	                  t        |            }|j                  | j	                  t        |            }t        j                  |||d      \  }}t        j                  |||dd      \  }}	t        ||       t        ||	       y )Nl   !Cj"	 rv  rb   r  r  r   r  )r;   r]  r^  r  rL  r  r  r  r   rO  r$   )
r`   rR  ra  g1_g2_g3_Xsq1r  Xsq2r  s
             rA   r  zTestFligner.test_trimmed1  s     ii##J/jjrs34jjrs34jjrs34 mmCc&AemmCc)479ed#u%rC   Tz)inconsistent tie-breaking across backendsnp_onlyrk  c           
      p   t         t        t        t        t        t
        t        t        t        t        g
}|D cg c]  }|j                  ||j                        ! }}t        j                  |ddd\  }}t        ||j                  d      d       t        ||j                  d      d       y c c}w )	Nr  r  r(  r  gP:/@vIh%,=rQ   gs4@S_?)r  r  r  r  r  r  r  r  r  r  r  r  r   rO  r$   r  s         rA   test_trimmed_nonregressionz&TestFligner.test_trimmed_nonregression  s     BBBBC8=ABc

3bjj
1BB--iN42::&89Fbjj)<=EJ Cs   $B3c           
      n   t         j                  j                  d      }t        t        t
        t        t        t        t        t        t        t        g
}|D cg c]  }| j                  ||       }}t        j                  |ddd}|D cg c]  }|j!                  ||j"                        ! }}t        j                  |ddd}t%        |j&                  |j!                  |j&                        d       t%        |j(                  |j!                  |j(                        d       y c c}w c c}w )	Nl   7m@ rv  r  r(  r  r  rY  rQ   )r;   r]  r^  r  r  r  r  r  r  r  r  r  r  rL  r   rO  r  r  r$   r]   r   )r`   rR  ra  r?   rm  r   rp   s          rA   test_trimmed_consistencyz$TestFligner.test_trimmed_consistency  s    ii##J/BBBBC87;<cs+<<mmT)TJ=ABc

3bjj
1BBmmT)TJrzz#--'@uM

BJJszz$:G =Bs   D-$D2c                     |j                  ddd      }d}t        j                  t        |      5  t	        j
                  ||d       d d d        y # 1 sw Y   y xY wr  )r-  r   r   rh   r   rO  r  s       rA   r  z!TestFligner.test_bad_center_value  sL    KKAr"A]]:W5 	/MM!Qv.	/ 	/ 	/r  c                     d}t        j                  t        |      5  t        j                  |j                  ddg             d d d        y # 1 sw Y   y xY w)Nr  r   r   r   )r   r   rh   r   rO  r  r  s      rA   test_bad_num_argszTestFligner.test_bad_num_args  sC    6]]:W5 	.MM"**aV,-	. 	. 	.s   'AAri  lazy -> no _axis_nan_policyrj  c                    |j                  d      }t        j                  t        t              5  t        j                  ||dz  |j                  g             }d d d        t        j                  |j                  |j                               t        |j                  |j                  |j                               y # 1 sw Y   hxY w)N      @r   r   )rm   r   r   r   r   r   rO  r  r%   r]   r   r   r`   rR  rn   rp   s       rA   r  zTestFligner.test_empty_arg  s    IIbM\\,4IJ 	9--1a4B8C	9rzz"&&'9:

BJJrvv$67	9 	9s   *CCN)l   \v7F )rs   rt   ru   rL  r   r   r   r  r  r  rZ  r\  r  r_  r  rv   rC   rA   rH  rH    s    N
 [[W&BC
( D
(& [[!!$)T " V	KV	K	H/. [[!!+6S!T8 U8rC   rH  c               #     K   g d} g d}t        |      D ]  \  }}t        j                  j                  |      }|j                  d      }|j	                  ddd      }|j	                  ddd      }t        ||      D ]$  \  }}	t        |dz   ||	z         D ]
  }
||   ||
<    & |j                  |       t        j                  |d	      \  }}||d
g| |     y w)N))g]YCgQɣ?)gme5gϵ5?)g;jgH?)iFeiHcMi%:r   r   rX  r   )r  r  r   r   r   rw  )		enumerater;   r]  r^  r  ziprangeshufflesplit)expected_resultsseedssir  ra  xytie_indnum_ties_per_indrq   r
  jrn   rA  s                rA   mood_cases_with_tiesrq  #  s     @ .Ee$ 2Dii##D)ZZ_,,12A,6<<AAA<>!12 	DAq1q5!a%( 11	 	BxxA1F1-b1112s   CC!c                   *   e Zd Zej                  j                  d e             d        Zej                  j                  dg d      ej                  j                  dg d      d               Zej                  j                  dd	
      d        Z
ej                  j                  dd	
      d        Zej                  j                  dd	
      ej                  j                  dd e       fdg      d               Zej                  j                  dd	
      ej                  j                  dd e       fdg      d               Zej                  j                  dd	
      d        Zej                  j                  dg d      d        Zy)TestMoodz$x,y,alternative,stat_expect,p_expectc                 *   |j                  |j                               |j                  |j                               }}t        j                  |||      \  }}t	        ||j                  |      d       t	        ||j                  |      d       y)am  
        Example code used to generate SAS output:
        DATA myData;
        INPUT X Y;
        CARDS;
        1 0
        1 1
        1 2
        1 3
        1 4
        2 0
        2 1
        2 4
        2 9
        2 16
        ods graphics on;
        proc npar1way mood data=myData ;
           class X;
            ods output  MoodTest=mt;
        proc contents data=mt;
        proc print data=mt;
          format     Prob1 17.16 Prob2 17.16 Statistic 17.16 Z 17.16 ;
            title "Mood Two-Sample Test";
        proc print data=myData;
            title "Data for above results";
          run;
        rq  gؗҜ<r0  N)r  rJ  r   moodr$   )	r`   rn   rA  rr  stat_expectp_expectrR  r]   r   s	            rA   test_against_SASzTestMood.test_against_SAS=  sl    < zz!((*%rzz!((*'=1!JJq!E	6	2::k#:G

8 45ArC   r  r  zalternative, expected))r  )3oXQ?gpL?)rw  )ry  gԣl?)rx  )ry  gpL?c                    t        |      r)|j                  dk  r|dk(  rt        j                  d       |t	        |      nt        ||      }g d}g d}|j                  ||      |j                  ||      }}t        j                  |||      }t        |j                  |j                  |d   |             t        |j                  |j                  |d	   |             y )
Nr  r  !Pre-NEP 50 doesn't respect dtypesrW  r_  r  rq  r   r   )r"   r  r   r  r#   r_  r  r   ru  r$   r]   r   )r`   r  rr  r  rR  rn   rA  rp   s           rA   test_against_SAS_2zTestMood.test_against_SAS_2`  s     B<BNNU2u	7IKK;<(- $72u;M<=zz!5z)2::au:+E1jjA;7rzz(1+Uz'KL

BJJx{%J$HIrC   ri  r`  rj  c                 X   t         j                  j                  d      }|j                  |j	                  d            }|j                  |j	                  d            }t        j                  ||      \  }}t        j                  ||      \  }}t        ||        t        ||       y )Nr  )r   r   )rl   r   )r;   r]  r^  r  r   r   ru  r$   )	r`   rR  ra  r   r   z1p1z2p2s	            rA   test_mood_order_of_argsz TestMood.test_mood_order_of_argsv  s     ii##J/ZZ++G45ZZ++G45B#BB#BRC BrC   c                 \   g d}g d}|j                  |j                  |      d      }|j                  |j                  |      d      }t        j                  ||d       }t	        |j
                  |j                  d             t	        |j                  |j                  d             y )N)gg۟?gy<7xg1)E?g9cç?g
FAg<=ӟ	2?g{![?g_l?gڻ{ӿgGSsA0?g1?g 3ggL?g_lg,*.gː53?gvNqG?gW=?)gd"g `Y#?g^g?gNgBagp5_%?g(?gv]lοgg?ggr6ʺ?ḡj?gK!ٿg{g&?g*h}gZ?gyBU?g .ۋ4?g|w;?g&ck @gRj2g}+w(o?g@F?g}_9t?g =g	S?gx(gg7Y?g{ih?)r   r   )rl   r   r  g4g^}E	?)reshaper  r   ru  r$   r]   r   )r`   rR  r   r   rp   s        rA   test_mood_with_axis_nonez!TestMood.test_mood_with_axis_none  s    4	H ZZ

20ZZ

20jjRd+rzz.'AB

BJJ}$=>rC   zrng_method, argsr   )r  )rL   c                     d}t         j                  j                         }t        ||      } ||dd|fi} ||dd|fi}|j                  }t        j                  |j                  ||      |j                  ||            }	t        |      D ]  }
t        j                  |d d |
f   |d d |
f         }t        |	j                  |
   |j                  |j                               t        |	j                  |
   |j                  |j                                |j                         }|j                         }t        j                  |j                  ||      |j                  ||      d      }	t        |      D ]  }t        j                  ||d d f   ||d d f         }t        |	j                  |   |j                  |j                               t        |	j                  |   |j                  |j                                y )Nr   r   r   rl   r  r   r  )r;   r]  r^  r_  r  r   ru  r  rg  r$   r]   r   	transpose)r`   
rng_methodr?   rR  nyra  r   r   r  rp   rp  r   rq   s                rA   test_mood_2dzTestMood.test_mood_2d  s    ii##%S*-
-RH--RH-

jjBe4bjj5j6QRr 	CA**R1Xr!Q$x0CCMM!,bjj.GHCJJqM2::cjj+AB	C \\^\\^jjBe4bjj5j6Q! r 	CA**R1Xr!Q$x0CCMM!,bjj.GHCJJqM2::cjj+AB		CrC   c                    d}t         j                  j                  d      }t        ||      }|j	                   ||d|i      }|j	                   ||d|i      }t        d      D ]   }t        j                  |||      }	ddgddgddgf}
t        ||
|   d            D ]  }t        ||
|   d            D ]  }|dk(  r|d d ||f   }|d d ||f   }n.|dk(  r||d d |f   }||d d |f   }n|||d d f   }|||d d f   }t        j                  ||      }t        |	j                  ||f   |j                         t        |	j                  ||f   |j                            y )	N)r   r   rH   l   |n- r   r   r  r   r   r   )r;   r]  r^  r_  r  rg  r   ru  r$   r]   r   )r`   r  r?   rR  r  ra  r   r   r  rp   axes_idxrq   rp  slice1slice2r   s                   rA   test_mood_3dzTestMood.test_mood_3d  s    ii##J/S*-
ZZ
D5u56ZZ
D5u56!H 	BD**R$/C AAA/H5$!234 BuXd^A%678 BAqy!#Aq!G!#Aq!G!#Aq!G!#Aq!G!#Aq!G!#Aq!G**VV4C#CMM!Q$$7G#CJJq!t$4cjjABB	BrC   c                    t        j                  t        t              5  t	        j
                  |j                  dg      |j                  g             }t        |j                  |j                  t        j                               t        |j                  |j                  t        j                               d d d        y # 1 sw Y   y xY w)Nr   r,   )r   r   r   r   r   ru  r  r%   r]   r;   r   r   r`   rR  rp   s      rA   test_mood_bad_argzTestMood.test_mood_bad_arg  s     \\,4IJ 	<**RZZ-rzz"~>CCMM2::bff+=>CJJ

266(:;	< 	< 	<s   BCCc                    t        |      r)|j                  dk  r|dk(  rt        j                  d       |t	        |      nt        ||      }t        j                  j                  d      }t        j                  j                  dd|      }t        j                  j                  dd|      }|j                  ||	      |j                  ||	      }}t        j                  ||d
      \  }}t        j                  ||d      \  }}	t        j                  ||d      \  }
}||cxk(  r|
k(  sJ  J t        ||j                  d|	      d       t        |	|j                  |dz  |	             t        ||j                  d|dz  z
  |	             t        j                  t         d      5  t        j                  ||d       d d d        y # 1 sw Y   y xY w)Nr  r  r{  r         ?r   )r   r   r   g      ?r  r  rq  rw  rx  r   Hz>r0  r   r   z`alternative` must be...r   rn  )r"   r  r   r  r#   r_  r;   r]  r   r   r   r>   r  ru  r$   r   rh   )r`   r  rR  ra  rn   rA  stat1r  stat2r  stat3p3s               rA   test_mood_alternativezTestMood.test_mood_alternative  s   B<BNNU2u	7IKK;<(- $72u;Mii##A&JJNNCcNBJJNNCcNBzz!5z)2::au:+E1JJq!=	rJJq!8	rJJq!;	r&&&&&&BJJrJ7dCBJJr!t5J9:BJJq2a4xuJ=>]]:-GH 	6JJq!5	6 	6 	6s   5GG N)rs   rt   ru   r   r   r   rq  rx  r|  r  r  r  r  r  r  r  r  rv   rC   rA   rs  rs  ;  s   [[C135B5BB [[W&BC[[4@AJA DJ [[!!+6S!T	  U	  [[!!+6S!T? U?6 [[!!+6S!T[[/3Deg2N2D2F GCG UC8 [[!!+6S!T[[/3Deg2N2D2F GBG UB: [[!!+6S!T< U< [[W&BC6 D6rC   rs  c                   x    e Zd Zd Zd Zd Zej                  j                  e	 d      d        Z
d Zd Zd	 Zy
)TestProbplotc                 ,   t         j                  j                  dd      }t        j                  |d      \  }}g d}t	        |t        j                  |             t	        ||       t        j                  |d      \  }}g d}t	        ||       y )	Nr  90  r\  Fr  )g+/gY3gtg5Z0gFjg!2gsR{ܿg7Կg>hǿgcz隇gcz隇?g>h?g7?gsR{?g!2?gFj?g5Z0?gt?gY3?g+/?T)gƝV?g?gà?)r   r   r>   probplotr
   r;   sort)r`   rn   osmosrosm_expectedrp   res_fitres_fit_expecteds           rA   re   zTestProbplot.test_basic  sw    JJNNN7>>!/SG
 	RWWQZ(\*~~aT2W?!12rC   c                 ~   t         j                  j                  dd      }t        j                  |d d      \  }}t        j                  |dd      \  }}t        j                  |dd      \  }}t	        ||       t	        ||       t	        ||       t	        ||       t        j                  |dd      \  }}	y )Nr   i@ r\  Fsparamsr  r   rv   )r   r   r>   r  r
   )
r`   rn   osm1osr1osm2osr2osm3osr3r  r  s
             rA   test_sparams_keywordz!TestProbplot.test_sparams_keyword  s    JJNN&N9 ^^At?
d^^Aqe<
d^^Aru=
dd#d#d#d#>>!RU;SrC   c                 @   t         j                  j                  dd      }t        j                  |ddd      \  }}t        j                  |dt         j                  d      \  }}t        ||       t        ||       t        t        t         j                  |d	       t        t        t         j                  |g 	        G d
 d      }t        j                  |dd      \  }}t        j                  | |       d      \  }}t        ||       t        ||       y )Nr  r  r\  Ft)r   )r  r  r  zwrong-dist-namer  c                       e Zd ZdZd Zy)3TestProbplot.test_dist_keyword.<locals>.custom_distz6Some class that looks just enough like a distribution.c                 D    t         j                  j                  |d      S )Nr   )r   )r   r   ppf)r`   qs     rA   r  z7TestProbplot.test_dist_keyword.<locals>.custom_dist.ppf(  s    zz~~aQ~//rC   N)rs   rt   ru   rD  r  rv   rC   rA   custom_distr  &  s
    H0rC   r  )r   r  )r  r  )	r   r   r>   r  r  r
   rg   rh   AttributeError)r`   rn   r  r  r  r  r  s          rA   test_dist_keywordzTestProbplot.test_dist_keyword  s    JJNNN7^^A5sDI
d^^A5uwwM
dd#d#j%..!:KLnennabA	0 	0
 ^^At?
d^^AKMuE
dd#d#rC   no matplotlibrj  c                 V   t        j                         }|j                  d       t        j                  j                  ddd      }t        j                  |t               \  }}t        j                          t        j                  |d       \  }}t        j                  |dt               }t        j                          t        j                  |dd       }t        t        |      t        |      cxk(  xr' t        |      cxk(  xr t        |      cxk(  xr d	k(  nc        t        ||       t        ||       t        ||       t        ||       t        j                         }|j                  d      }	t        j                  |d|	       t        j                          y )
Nr  r   r   t r\  plotF)r  r  r   )pltfigureadd_subplotr   r  r>   r  closer	   r  r
   )
r`   figrn   res1fitres1res2fitres2res3res4axs
             rA   test_plot_kwargzTestProbplot.test_plot_kwarg0  s   jjlGGKK'K:qs3g		qt4g~~aU5		~~aU6 	D	SYE#d)Es4yEAEFd#d#d#) jjl__S!qe"-		rC   c                 H    t        t        t        j                  dgd       y r  )rg   rh   r   r  ri   s    rA   test_probplot_bad_argsz#TestProbplot.test_probplot_bad_argsI  s    j%..1#<MNrC   c                 j   t        t        j                  g d      t        j                  g       t        j                  g       f       t        t        j                  g d      t        j                  g       t        j                  g       ft        j
                  t        j
                  dff       y )NFr  Tr   )r   r   r  r;   r2  r   ri   s    rA   
test_emptyzTestProbplot.test_emptyM  ss    U^^BE2hhrlBHHRL1	3U^^BD1xx|RXXb\2vvrvvs+-	.rC   c           	         d}t        j                  d      5  t        j                  t        |      5  t        t        j                  dgd      t        j                  dg      t        j                  dg      ft         j                  t         j                  t         j                  ff       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	N,One or more sample arguments is too small...r   invalidr   r   Tr  r   )
r;   r   r   r   r   r   r   r  r2  r   rk  s     rA   test_array_of_size_onez#TestProbplot.test_array_of_size_oneT  s    @kk(+ 	5ll-W=	5688RD>288QC=966266266245	5 	5 	5 	5 	5 	5s#   CA<C1CC	CCN)rs   rt   ru   re   r  r  r   r   rE  have_matplotlibr  r  r  r  rv   rC   rA   r  r    sM    3<$( [[O+OD E0O.5rC   r  c                   z   e Zd Zd Zd Zd Zd Zd Zej                  j                  dddid	did	d
ig      d        Zd Zd Zd Zej                  j                  dg d      d        Zd Zej                  j                  dg d      d        Zej                  j                  dg dg dg dg      d        Zd Zej                  j(                  ej                  j+                  d      d               Zej                  j                  dg d      ej                  j+                  d      d               Zd  Zej                  j                  dd!d
g      d"        Zej                  j                  dd! ej6                         f      d#        Zej                  j+                  d$d%&      d'        Zy())TestWilcoxonc                    |j                  ddg      }|j                  dgdz        }d}t        j                  t        |      5  t	        j
                  ||d       d d d        d}t        j                  t        |      5  t	        j
                  ||d	       d d d        d
}t        j                  t        |      5  t	        j
                  |d       d d d        y # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   y xY w)Nr   r   r   z`zero_method` must be one of...r   zdummy...z`alternative` must be one ofdummyrq  z`method` must be one of...xyzro  )r  r   r   rh   r   wilcoxon)r`   rR  rn   r  rI  s        rA   test_wilcoxon_bad_argz"TestWilcoxon.test_wilcoxon_bad_arg_  s     JJ1vJJs2v3]]:W5 	-NN1a,	-0]]:W5 	6NN1aW5	6.]]:W5 	,NN1U+	, 	,	- 	-	6 	6	, 	,s$   C"C.C:"C+.C7:Dc                    |j                  d      }t        j                  d      5  t        j                  ||dd      \  }}t        ||j                  d             t        ||j                  |j                               t        j                  ||dd      \  }}t        ||j                  d             t        ||j                  |j                               d d d        t        j                  ||d	d      \  }}t        ||j                  d
             t        ||j                  d             y # 1 sw Y   \xY w)Nr  r   r  wilcox
asymptoticro  r   prattzsplitg     @Z@r,   )rm   r;   r   r   r  r%   r  r   )r`   rR  rn   r   r  s        rA   test_zero_diffzTestWilcoxon.test_zero_diffn  s    IIbM [[* 	3>>!QFDAqArzz#/Arzz"&&12>>!QEDAqArzz#/Arzz"&&12	3 ~~aH\B12::g./2::c?+	3 	3s   B9D<<Ec                    |j                  g d      }|j                  g d      }t        j                  ||ddd      }t        |j                  |j                  d             t        |j
                  |j                  d             y )	Nrg  )r   r   r   r   r  r  F)zero_methodrp  
correctionr   g|N?)r  r   r  r$   r]   r   )r`   rR  rn   rA  rp   s        rA   
test_prattzTestWilcoxon.test_pratt~  sg     JJ|$JJ|$nnQw|(-/rzz#7

BJJ/B$CDrC   c                     g d}t        j                  |dd      }t        j                  |dd      }t        j                  |dd      }y )N)r   r   r   r   r   r   r   r   r   r   r   r  r  )r  rp  r  r  )r   r  )r`   arrr/  s      rA   test_wilcoxon_arg_typez#TestWilcoxon.test_wilcoxon_arg_type  s?     1NN3GLINN3H\JNN3H\JrC   c           
      b   g d}t        dd      }|j                  t        j                  t	        ||      D cg c]  \  }}|g|z   c}}            }|j                  |      }t        j                  ||ddd      \  }}	t        ||j                  d             t        |	|j                  d	             t        j                  ||d
dd      \  }}	t        ||j                  d             t        |	|j                  d             t        j                  ||ddd      \  }}	t        ||j                  d             t        |	|j                  d             |j                  g d      }|j                  g d      }t        j                  ||dd      \  }}	t        ||j                  d             t        |	|j                  d             t        j                  ||dd      \  }}	t        ||j                  d             t        |	|j                  d             y c c}}w )N)	r   r   r  rl   rL   r   r   r   r   r   r  r  Frp  r  g     pz@g.i?r  g     {@gFYv]Uj?r  g     pt@g%^ Ez?r  rb  r  r         y   r     r\     p         w   r'  r     r&  r\  s   r  r     r  rp  r  g[ӂ<?TgzM+?)
rg  r  r;   concatenaterf  
zeros_liker   r  r$   r%   )
r`   rR  freqnumsur   rn   rA  r  r  s
             rA   test_accuracy_wilcoxonz#TestWilcoxon.test_accuracy_wilcoxon  s   ,R|JJr~~3tT?&K41asQw&KLMMM!~~aGL).012::d+,2::&;<=~~aH\).012::d+,2::&;<=~~aH\).012::d+,2::&678
 JJSTJJST~~au\J12::c?+2::&89:~~atLI12::c?+2::&89:9 'Ls   H+kwargrp  approxmoder  c                 2   |j                  g d      }|j                  g d      }t        j                  ||dfi |}t        j                  ||dd      }t        |j                  |j                         t        |j
                  |j
                         y )N)r   r   r  rK      r  r  r   rL   r.  rI   r  )r   r   r   r  r   r   rJ   r  rX  rJ      rE  r  r  ro  )r  r   r  r%   r]   r   )r`   r  rR  rn   rA  rp   r   s          rA   test_approx_modezTestWilcoxon.test_approx_mode  sq    
 JJBCJJCDnnQ85u5nnQ8LAs}}5

CJJ/rC   c                     |j                  g d      }|j                  g d      }t        j                  ||dd      }d}t        |||       y )Nr  r  Fr  r  r  r  )r  r   r  r   )r`   rR  rn   rA  rp   ro   s         rA   test_wilcoxon_result_attributesz,TestWilcoxon.test_wilcoxon_result_attributes  sE    JJSTJJSTnnQeLI,
C3rC   c                    t         j                  j                  d      }|j                  d      |j                  d      }}|j                  |      |j                  |      }}t	        j
                  ||d      }t        j                  |j                  dz        }t        |j                  |       t	        j
                  ||d      }t        |d      rJ t	        j
                  ||      }t        |d      rJ y )Nl   	m$S rl   r  ro  r   exact
zstatistic)r;   r]  r^  r  r   r  r   ndtrir   r$   r  r@  )r`   rR  ra  rn   rA  rp   r   s          rA   test_wilcoxon_has_zstatisticz)TestWilcoxon.test_wilcoxon_has_zstatistic  s    ii##K0zz"~szz"~1zz!}bjjm1nnQ,7mmCJJqL),nnQ'23---nnQ"3----rC   c                 `   |j                  dgdz        }|j                  d      }t        j                  |dd      \  }}|j                  d      }t        ||       t	        ||       t        j                  |dd      \  }}|j                  d	      }t        ||       t	        ||       y )
NrH  r   r   r  Fr  g4ťY?TgD2_?)r  r   r  r%   r$   )r`   rR  r  expected_statstatr  
expected_ps          rA   test_wilcoxon_tiezTestWilcoxon.test_wilcoxon_tie  s     JJurz"

3..<EJaZZ 45
m,:&..<DIaZZ 34
m,:&rC   r  r  c                 6   t        |      r)|j                  dk  r|dk(  rt        j                  d       ||nt	        ||      }|j                  g d|      }|j                  g d|      }|j                  d|      }t        j                  ||dd	d
      \  }}t        ||       t        ||j                  d|             t        j                  ||ddd	      \  }}t        ||       t        ||j                  d|             t        j                  ||dd	d
      \  }}t        ||       t        ||j                  d|             t        j                  ||ddd	      \  }}t        ||       t        ||j                  d|             y )Nr  r  z*dtypes not preserved with pre-NEP 50 rules)
}   r  r     r  r  r  r  r  r(  r  )
r^  z   r  r  r  |   r     r(           ;@rw  r  F)rr  rp  r  g}5}?T)rr  r  rp  gfh%?rx  g?gNCJT?)
r"   r  r   r  r_  r  r   r  r%   r$   )r`   r  rR  rn   rA  w_refr   r  s           rA   test_onesidedzTestWilcoxon.test_onesided  sp    B<BNNU2u	7IKKDEGB,>JJIQVJWJJIQVJW

4u
-~~a|).015!2::oU:CD~~a4%1315!2::m5:AB~~a	%1eE15!2::oU:CD~~a	)-lD15!2::oU:CDrC   c                     t        dd      D ]Z  }t        |      }t        |      }t        ||dz   z  dz  dz   t	        |             t        t        |      d       t        ||       \ y )Nr   r  r   )rg  r   r   r   r  r  r   )r`   r
  pmf1pmf2s       rA   test_exact_basiczTestWilcoxon.test_exact_basic  sa    q" 	2A&q)D'*DAaCQD	2TA&%dD1	2rC   c                 |   ||nt        ||      }|j                  g d|      }|j                  g d|      }t        j                  ||dd      \  }}t	        ||j                  d|             t        j                  ||dd      \  }}t	        ||j                  d	|             t        j                  ||d
d      \  }}t	        ||j                  d|             |j                  dd|      dz   }|j                  ddd|      }t        j                  ||dd      \  }}t	        ||j                  d|             t        j                  ||dd      \  }}t	        ||j                  d|             t        j                  ||d
d      \  }}t	        ||j                  d|             y )N)
g(\?g=
ףp=?g(\?gQ޿gQ?g{Gz?gp=
ףgq=
ףp?g      gQ?r  )
r   g?gɿg333333?皙gܿgzGgQοg(\gRQr  r  rr  rp  g      ?rw  g?  ?rx  g      ?r   g      4@r'        g    ?g?g    ?)r_  r  r   r  r$   rm   )r`   r  rR  rn   rA  r/  r  s          rA   test_exact_pvalzTestWilcoxon.test_exact_pval  s    GB,>JJ %,1  3JJ &-2  4~~aGL12::j:>?~~awG12::m5:AB~~a	'J12::k:?@IIb#UI+c1IIc2s%I0~~aGL12::&8:FG~~awG12::&8:FG~~a	'J12::&8:FGrC   rn   )r   r   r   )r   r   r.  r  r   )r   r   r   r  ru  irK   rL   c                 &   t        j                  |j                  |            \  }}t        j                  |      }||dkD     j                         }t        ||j                  t        |                   t        ||j                  d             y Nr   r,   )r   r  r  r;   r2  r  r%   r~  )r`   rn   rR  r   r  wtrues         rA   test_exact_p_1zTestWilcoxon.test_exact_p_1<  sg     ~~bjjm,1HHQK!a%2::eEl342::c?+rC   c                 P   |j                  dd      dz   }|j                  ddd      }t        t        j                  ||      j                  t        j                  ||d      j                         t        |      ret        j                         }t        j                   dd      }t        j                  |      \  }}t        ||ft        j                  ||             |j                  d	d
      }t        j                  |      \  }}t        t        j                  |d      j                  |j                  |             t        j                  |      |dk(     j                  d      }t        j                  |      \  }}t        t        j                  |d      j                  |j                  |             |j                  dd      }t        j                  |      \  }}t        t        j                  |d      j                  |j                  |             y )Nr   g      I@r'  r'  r  ro  r   r   ru  rI   r  r   r   r  )rm   r%   r   r  r   r"   r  r;   r   r  xpxatset)	r`   rR  rn   rA  pmr  r   r  r/  s	            rA   	test_autozTestWilcoxon.test_autoF  s   IIb#$IIc2s#q!,33q!G<CC	E B<((*B		"a A>>!$DAq
 !Q"!=> IIb!~~a 1q>EErzzRS}UFF1Ia1f!!!$~~a 1q>EErzzRS}U IIa~~a 1q>EErzzRS}UrC   T)rW  c                    t        j                  dd      }t        j                  |j	                  |            }|j	                  ddg      \  }}t        |j                  |       t        |j                  |       d||dk(  <   t        j                  |j	                  |            }|j	                  ddg      \  }}t        |j                  |       t        |j                  |       y )	Nru  rL   g     ;@g     P?r   r   r  g     0?)r;   rm   r   r  r  r%   r]   r   )r`   rR  r  rp   r   r  s         rA   test_auto_permutation_edge_casez,TestWilcoxon.test_auto_permutation_edge_casef  s    
 IIb!nnRZZ]+zz4./1q)

A&!q&	nnRZZ]+zz2|,-1q)

A&rC   r   )r   r   r   c                    t         j                  j                  d      }|j                  |j                  |            }t	        j
                  |t	        j                               }t	        j
                  |d      }t        |j                  |j                         t        |j                  |j                         |j                  |j                  |dz              }t         j                  j                  d      }t	        j                  d|      }t	        j
                  ||      }t         j                  j                  d      }t	        j                  d|	      }t	        j
                  ||      }t        |j                  |j                  d
      |j                         t        |j                  |j                         y )Nl   aQG1X@
r   ro  r  r   l   VsWFrX  rt  )ru  r   r   )r;   r]  r^  r  r   r  r  r%   r]   r   rx  )r`   r   rR  ra  rn   rp   r   r1  s           rA   test_permutation_methodz$TestWilcoxon.test_permutation_methodz  s9    ii##$56JJszztz,-nnQu'>'>'@AnnQw/s}}5

CJJ/JJszztBwz/0ii##$56$$=nnQr*ii##$56$$#FnnQr*Q/<

CJJ/rC   c                    t         j                  j                  d      }|j                  d      }t         j                  |d<   |j                  |      }t        j                  |      }t        j                  |d      }t        |j                  |j                         t        |j                  |j                         t        |d      sJ t        |d      rJ y )Nl   HF )Z )r  r   r   )r   r   r  ro  r  )r;   r]  r^  normalr   r  r   r  r$   r]   r   r@  )r`   rR  ra  r   rp   r   s         rA   6test_method_auto_nan_propagate_ND_length_gt_50_gh20591zCTestWilcoxon.test_method_auto_nan_propagate_ND_length_gt_50_gh20591  s     ii##O4JJGJ$&&$JJqMnnQnnQ|4s}}5

CJJ/sL)))3----rC   r  c                    |j                  g d      }|j                  g d      }t        j                  ||d|      }t        j                  ||d|      }|j                  d   |j                  d   dz   z  dz  }t	        |j
                        |j
                  k7  sJ t        ||j
                  z
  |j
                         t        |j                  |j                         y )	N)
r  r  rO  r  r<  r  r  r  r  rD  )
r  r  E   rO  rL  r  r  r  r  r  rw  r&  rx  r   r   r   )r  r   r  r  r  r]   r$   r   )r`   rp  rR  var1var2r   rp   max_statistics           rA   test_symmetry_gh19872_gh20752z*TestWilcoxon.test_symmetry_gh19872_gh20752  s     zzBCzzBCnnT4VFKnnT4YvN

1A):;a?3==!S]]2225s}}E

CJJ/rC   c                    |dk7  rt        j                  d       t        j                  |j	                  d      |      }t        |j                  |j                  d             t        |j                  |j                  d             y )Nr  z5PermutationMethod is NumPy-only until gh-23772 mergesr   ro  r   r,   )	r   r  r   r  zerosr$   r]   r  r   )r`   rp  rR  rp   s       rA   test_all_zeros_exactz!TestWilcoxon.test_all_zeros_exact  s]    
 WKKOPnnRXXa[8rzz"~6

BJJrN3rC   ri  zlazy->limited input validationrj  c                    |j                  g d      }|j                  g d      }d}t        j                  t        |      5  t	        j
                  ||d d        d d d        t        |      sy d}t        j                  t        |      5  t	        j
                  ||d d d       d d d        t        t        d	d       xs t        j                  j                  }d
}t        j                  ||      5  t	        j
                  ||d       d d d        d}t        j                  ||      5  t	        j
                  ||d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   y xY w)Nr   r   r   rH   z/Array shapes are incompatible for broadcasting.r   r   z0operands could not be broadcast together with...T)_no_deco	AxisErrorz8source: axis 3 is out of bounds for array of dimension 1r   r  z+`axis` must be compatible with the shape...)r  rE  )r  r   r   rh   r   r  r"   r_  r;   
exceptionsrF  )r`   rR  rn   rA  rI  rF  s         rA   .test_wilcoxon_axis_broadcasting_errors_gh22051z;TestWilcoxon.test_wilcoxon_axis_broadcasting_errors_gh22051  s?   
 JJy!JJy!C]]:W5 	&NN1af%	& |D]]:W5 	5NN1aft4	5 BT2Mbmm6M6M	L]]9G4 	)NN1aa(	) @]]9G4 	8NN1aa$7	8 	8!	& 	&	5 	5
	) 	)	8 	8s0   EE"9E.3E:E"E+.E7:FN)rs   rt   ru   r  r  r  r  r  r   r   r   r	  r  r  r  r  r#  r(  r,  r2  r  r  r4  r6  r9  r?  r   r  rB  rH  rv   rC   rA   r  r  ]  s
   ,, EK;B [[W
H	1FL3IJL0L04.', [[W&BC$E D$EL2 [[W&BCH DHD [[S;#5#@#B C,C,V@ [[[[!!$!/' 0 '$ [[VZ0[[!!$!/0 0 10(.$ [[X'>?
0 @
0 [[X1H1H1H1J'KL4 M4 [[!!+6V!W8 X8rC   r  )gףp=
W0@gQ%@gGz'@g+@g33333/@g3333332@g
ףp=
@gq=
ףp$@g
ףp=
)@g\(\-@gGz0@gGzn3@g=
ףp= @gffffff&@gfffff)@g
ףp=-@Gz0@g3@g!@g)\('@g333333(@g
ףp=
.@rI  g{G0@gQ3@gq=
ף"@g\(\'@gR*@g33333.@g\(3@c                       e Zd Zd Zej
                  j                  d      d        Zd Zej
                  j                  dddg      d        Z
ej
                  j                  d	g d
      d        Zy)	TestKstatc           	      6   t         j                  j                  d      }|j                  |j	                  d      |j
                        }|j                  dD cg c]  }t        j                  ||       c}      }|j                  g d|j                        }t        ||d       t        j                  |d	      }t        j                  |d
	      }t        j                  |d	      }	t        |j                  |||	f      |d d dd       y c c}w )Ni}  r  r  rg  )gHQ,?glZ)rI?g88}?gcJN?r,  rQ   r   )orderr   r   r   g{Gz?{Gz?r*  )r;   r]  r   r  randnr  stackr   kstatr  r$   moment)
r`   rR  ra  ra   r
  momentsr  m1m2m3s
             rA    test_moments_normal_distributionz*TestKstat.test_moments_normal_distribution  s    ii##E*zz#))E*"**z=((,GQEKKa0GH::I$(JJ  05 \\$a(\\$a(\\$a("b"."DtT Hs   Dr  c                     t        t        t        |      5  t        j                  |j                  g             }d d d        t        |j                  |j                               y # 1 sw Y   /xY wr  )r    r   r   r   rQ  r  r%   r   r  s      rA   rj   zTestKstat.test_empty_input  sR    +3HRP 	.++bjjn-C	.RZZ/0	. 	.s   %A**A3c                     |j                  d      }|j                  |dk(  |j                  |      }t        t	        j
                  |      |j                  |j                               y NrS   rH   rm   wherer   r%   r   rQ  r  r`   rR  ra   s      rA   r   zTestKstat.test_nan_input  I    yy~xx	26640D)2::bff+=>rC   r
  r   g/$@c                     |j                  d      }d}t        j                  t        |      5  t	        j
                  ||       d d d        y # 1 sw Y   y xY w)Nr   z'k-statistics only supported for 1<=n<=4r   r
  )rm   r   r   rh   r   rQ  )r`   r
  rR  ra   rI  s        rA   test_kstat_bad_argzTestKstat.test_kstat_bad_arg  sG     yy};]]:W5 	#KK"	# 	# 	#s   AAcase))r   gM~,@)r   2.L)@)r   gP'')r    -"bac                     |\  }}t        j                  |j                  t              |      }t	        ||j                  |             y r:   )r   rQ  r  x_kstatr$   )r`   rb  rR  r
  r   rp   s         rA   test_against_RzTestKstat.test_against_R  s8     3kk"**W-q1RZZ_-rC   N)rs   rt   ru   rW  r   r   r.  rj   r   r   ra  rg  rv   rC   rA   rK  rK    s    U [[ BC1 D1
? [[S1e*-# .# [[V &? @.	@.rC   rK  c                   z    e Zd Zej                  j                  d      d        Zd Z edd      d        Z	d Z
y	)
TestKstatVarr  c                     |j                  g       }t        t        t        |      5  t	        j
                  |      }d d d        t        |j                  |j                               y # 1 sw Y   /xY wr  )r  r    r   r   r   kstatvarr%   r   rc  s       rA   rj   zTestKstatVar.test_empty_input  sW    JJrN+3HRP 	$..#C	$RZZ/0	$ 	$s   A,,A5c                     |j                  d      }|j                  |dk(  |j                  |      }t        t	        j
                  |      |j                  |j                               y rZ  r[  r]  s      rA   r   zTestKstatVar.test_nan_input  r^  rC   Tz2input validation of `n` does not depend on backendrV  c                     dg}d}d}t        j                  t        |      5  t        j                  ||       d d d        y # 1 sw Y   y xY w)Nr   r   zOnly n=1 or n=2 supported.r   r`  )r   r   rh   r   rk  )r`   rR  ra   r
  rI  s        rA   r   zTestKstatVar.test_bad_arg%  sF     s.]]:W5 	&NN41%	& 	& 	&s   AAc                 ~   t        t              }d}d}t        j                  |j	                  t              d      }||z  }t        ||j	                  |             t        j                  |j	                  t              d      }d|dz  z  |z  |dz
  |z  z   ||dz   z  z  }t        ||j	                  |             y )Nrc  rd  r   r   )r  rf  r   rk  r  r$   )r`   rR  r
  k2k4rp   r   s          rA   test_against_R_mathworldz%TestKstatVar.test_against_R_mathworld/  s    
 LnnRZZ0!41fRZZ_-nnRZZ0!4QwqyAaC8#QqS	2RZZ_-rC   N)rs   rt   ru   r   r   r.  rj   r   r  r   rq  rv   rC   rA   ri  ri    sO    [[ BC1 D1? dQS&S&.rC   ri  c                   r    e Zd Zd Zd Zd Zej                  j                  e	 d      d        Z
d Zd Zy	)
TestPpccPlotc                 0    t        ddd      dz   | _        y Nr     r  r\  rB   rn   ri   s    rA   setup_methodzTestPpccPlot.setup_methodC      "13WEIrC   c                     d}t        j                  | j                  dd|      \  }}g d}t        |t	        j
                  dd|             t        ||       y )Nr   r   N)g9%	?gxM _?g";9?g®XZ?g?num)r   	ppcc_plotrn   r
   r;   r-  )r`   r}  svalsppccppcc_expecteds        rA   re   zTestPpccPlot.test_basicF  sK    oodffc2;t%r{{3:;m,rC   c                 p   t        j                  | j                  ddd      \  }}t        j                  | j                  ddt         j                        \  }}t	        ||d       t	        ||d       t        j                  | j                  dd      \  }}t	        ||d       t	        ||d       y )Nr{  r   tukeylambdar  g#B;rQ   )r   r  rn   r  r
   )r`   svals1ppcc1svals2ppcc2svals3ppcc3s          rA   	test_distzTestPpccPlot.test_distN  s    RmLR-2->->@U3u51R8U3u51rC   r  rj  c                 N   t        j                         }|j                  d      }t        j                  | j
                  ddt                |j                  |       |j                  d      }t        j                  | j
                  dd|       t        j                          y Nr  ir  r  )r  r  r  r   r  rn   delaxesr  r`   r  r  s      rA   r  zTestPpccPlot.test_plot_kwargZ  sm     jjl__S!Rc2B __S!Rb1		rC   c                     t        t        t        j                  | j                  dd       t        t        t        j                  g dddd       y )Nr   r   r   r  r  )rg   rh   r   r  rn   ri   s    rA   test_invalid_inputsz TestPpccPlot.test_invalid_inputsg  s5    j%//4661a@ 	j%//9a,	.rC   c                     t        j                  g dd      \  }}t        |t        j                  ddd             t        |t        j
                  dt                     y )Nr   r   r  r~  r  )r   r  r
   r;   r-  rA  r~  )r`   r  r  s      rA   r  zTestPpccPlot.test_emptyo  sF     oob!Q/tr{{1aR89bhhr78rC   N)rs   rt   ru   rx  re   r  r   r   rE  r  r  r  r  rv   rC   rA   rs  rs  B  sH    J-
2 [[O+OD
 E
.9rC   rs  c                   $    e Zd Zd Zd Zd Zd Zy)TestPpccMaxc                 L    dg}t        t        t        j                  |d       y r  )rg   rh   r   ppcc_maxr   s     rA   test_ppcc_max_bad_argz!TestPpccMax.test_ppcc_max_bad_argy  s    sj%..$=NOrC   c                     t         j                  j                  ddddd      dz   }t        t        j                  |      dd	
       y )Nffffffr   r'  '   r        @{rK   rX   )r   r  r>   r   r  r   s     rA   test_ppcc_max_basiczTestPpccMax.test_ppcc_max_basic~  sF    !!$ASu/6 " 8:=>ENN1-/CQOrC   c                 H   t         j                  j                  ddddd      dz   }t        j                  |d	      }t        j                  |t         j                  	      }t	        |d
d       t	        |d
d       t        j                  |      }t	        |d
d       y )Nr  r   r'  r  r  r   r  r  r  r  r   rX   )r   r  r>   r  r   )r`   rn   max1max2max3s        rA   r  zTestPpccMax.test_dist  s    !!$ASu/6 " 8:=> ~~am4~~ae&7&78D"6BD"6B ~~a D"6BrC   c                     t         j                  j                  ddddd      dz   }t        t        t         j
                  |d	       t        t        j
                  |d
	      dd       t        t        j
                  |d	      dd       y )Nr  r   r'  r  r  r   r  )r   r,   r'  brack)r   r   r  rK   rX   r   r   )r   r  r>   rg   rh   r  r   r   s     rA   
test_brackzTestPpccMax.test_brack  sx    !!$ASu/6 " 8:=>j%..!?KENN1F;0!	= 	ENN1G<0!	=rC   N)rs   rt   ru   r  r  r  r  rv   rC   rA   r  r  x  s    P
P
C	=rC   r  c                       e Zd Zej                  j                  dddg      d        Z edd      d        Zd	 Z	d
 Z
d Zd Zd Zy)TestBoxcox_llfr  r  r  c                    t        ||      }t        j                  j                  ddd      }d}t        j                  ||j                  ||            }|j                   dz  t        j                  t        j                  |j                         dz              z  }t        ||j                  ||             y )	Nr  r   1  r   r   r   r   r         @r   )r_  r   r   r>   
boxcox_llfr  r   r;   r<   r  rd   r$   )r`   r  rR  dtrn   lmbdallfllf_expecteds           rA   re   zTestBoxcox_llf.test_basic  s    RJJNN2ENBubjj"j&=>w|bffRVVAEEGQJ-?&@@RZZBZ?@rC   Tz,array-likes only accepted for NumPy backend.rV  c                     t         j                  j                  ddd      }d}t        j                  ||      }t        j                  |t	        |            }t        ||d       y Nr   r   r  r  r   r{  rQ   )r   r   r>   r  listr$   r`   rR  rn   r  r  llf2s         rA   test_array_likezTestBoxcox_llf.test_array_like  sU     JJNN%N@ua(tAw/T.rC   c                 >   t         j                  j                  ddd      }d}t        j                  ||      }t        j                  |t	        j
                  ||g      j                        }t        |j                  ||g      |j                  |      d       y r  )	r   r   r>   r  r;   vstackr  r$   r  r  s         rA   test_2d_inputzTestBoxcox_llf.test_2d_input  sz     JJNN%N@ua(ryy!Q'8':':;

C:.

40@uMrC   c                     d}t        t        ||      5  |j                  |j                  t	        j
                  d|j                  g                         sJ 	 d d d        y # 1 sw Y   y xY wNr  r  r   )r    r   isnanr  r   r  r  s      rA   r  zTestBoxcox_llf.test_empty  s]    @+7rB 	M88BJJu'7'72::b>'JKLLL	M 	M 	Ms   AA%%A.c                     |j                  g d      }t        j                  d|      }t        ||j                  d             y )N)g     h@      m@r  g     x@ig#:x1)r  r   r  r$   r`   rR  ra   r  s       rA   test_gh_6873zTestBoxcox_llf.test_gh_6873  s9     zz67r4(RZZ(:;<rC   c                     |j                  g d|j                        }t        j                  d|      }t	        ||j                  d|j                        d       y )N)i  i  i  i  i  r  g:0yE>gl.gƠ>rQ   )r  r  r   r  r$   r  s       rA   test_instability_gh20021z'TestBoxcox_llf.test_instability_gh20021  sN    zz8

zKtT* 	RZZ(=RZZZP!	#rC   c           
         |j                  ddgddgg      }t        j                  d|d      }|j                  t        j                  d|d d df         t        j                  d|d d df         g      }t	        ||       t        j                  d|d      }|j                  t        j                  d|dd d f         t        j                  d|dd d f         g      }t	        ||       y )Nr      i,  i  r   r   r  )r  r   r  rP  r$   )r`   rR  ra   
llf_axis_0llf_0
llf_axis_1llf_1s          rA   	test_axiszTestBoxcox_llf.test_axis  s    zzC:Sz23%%aA6
QQT
+QQT
+
  	
E*%%aA6
QQT
+QQT
+
  	
E*rC   N)rs   rt   ru   r   r   r   re   r  r  r  r  r  r  r  rv   rC   rA   r  r    si     [[Wy)&<=A >A dKM/M/NM
=#+rC   r  (  iU>  iϵ i i_
 i7 i is iv  i+ i* i-q ir: i  i i i i_ i4  i iD  i i, iE i\  i i| ig  iM iӢ i[  i! i if6 iP i i iI i/ iF& i i i`# i i  i& i i iQ ia i
 iXZ iw  i_ im  iD i- iB  i:C i	 i' i  i % ix i  iz_ iQ i!# i= i  ix i
 iU7 i_ i1k iW9 i& ix iI i  iT i
 i i  irv im i͟  i iO iv i) iP i4 i= ii  iU i i ig> ix	 i` i| i0 i` iM	 i ' i[ i8 i  i3[ i  i) i`N i
	 i  i[ i:+ ip i	% i
  iV i[$ iX  i_ ib ieZ i i`?	 it i  i iE i iT iy i imv i< iZ i! i i(  ir
 i i iɪ i| i i> ii  i i* i# ix i i& i i# i1g iP i) iۆ i{% i? i۽ i| i i& i- iư) i+c i7  iQ i	o i& i|_ iy
 i6 i  i i i:J i#j i8 i  i%  i i%W i( i` i: ina  i  i i% i$ i4 iA( iq  i  i" iy iXZ i izr i i$ i; is igY i i7 ip	 ip iL6" iDH i i!3 i iI( i|C iш i im  iS i  i{8 i  i i iP i2L i( i@ is iu i2 i_ ij i)m igZ i_ iu	 i9 ik  i'; i ii iK i܃ i i= iv i= i ia  ir  i i i}W i*  i  iJ i i  i2  iUF iNj	 iV," ip iA i% i iv9 iI5 i  iT- i  i8~ i?e` i1 iV  i/X i= i4 i iح i^ i i/ ig i( i i|B; ip i ic iE' iE i$
 i i{ ik i: iI iA_ i iP ioP  i6_ i iܲ iO	 iA7 iL  iA i iV  iwm i iZh i|V iԇC iw i& i~ i i'  i!  i i
 i} ie i3 i i i_ i  i@) i  iV ii iF i? i&
 i"Y iw i  iH iS ird ib i@ iK iA; iz| id+ i	 i
8 i"  i	 iO i_ i$l i!9 ii iT iuL iQ'% iqp iC i]K@ i! i i  iIp| i i?	B i i io0 i i

 i  i5% i i i* i i iv0 i* i* iw i  ive i$ i i- iD~ i- i i,4 ib i  i iP0 i) im i	 iR iQ i
 i i c            	       (   e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  dg d      d	        Zd
 Ze	j                  j                  dg d      d        Zd Ze	j                  j                  d ej"                  g d       ej"                  ej$                  ddg      g      d        Ze	j                  j                  d ej"                  g d       ej"                  g d       ej"                  g d      g      d        Zy)
TestBoxcoxc                 >   t        ddd      dz   }t        j                  |d      }t        ||dz
         t        j                  |d      }t        |dd|z  z
         t        j                  |d      }t        |t	        j
                  |             t        j                  t        |      d      }t        |t	        j
                  |             t        j                  t	        j                  d	      d
      }t        |t	        j                  d	             y )Nr   r   r  r\  r   r  r   r   r   r   )
rB   r   r   r
   r;   r<   r  r   r   rA  )r`   rn   xts      rA   test_fixed_lmbdazTestBoxcox.test_fixed_lmbda	  s    abu=A\\!1%AE"\\!2&A!G$\\!1%BFF1I& \\$q'+BFF1I& \\"''"+q)R"&rC   c                     d}t         j                  j                  ddd      }||z  dz   | z  }t        j                  |      \  }}t	        |d|z  d	       y )
Ng      @r   iP  i  )r   r   r   r   r   r   rX   )r   r   r>   r   r   )r`   r  rn   x_invr  r   s         rA   test_lmbda_NonezTestBoxcox.test_lmbda_None*	  sW     JJNNrDNAUQ5&)\\%(
FFBJ:rC   c                    t         j                  j                  d      }t        dd|      dz   }t	        j
                  |d      \  }}}t        |ddg       t	        j
                  |d	      \  }}}t        |d
dg       t        dd|      dz   }t	        j
                  |d      \  }}}t        |ddg       t	        j
                  |d      \  }}}t        |ddg       y )Ni  r   r   r\  r  )alphagx@gv[%@rz  gxˉEk?g8Bhk @rK   rv  rl   r-  g\?gx̡&@r/   g7(U@gp:sY@)r;   r]  r   rB   r   r   r
   )r`   ra  rn   r/  r|   s        rA   
test_alphazTestBoxcox.test_alpha4	  s    ii##D)abs;a? at41h#46G"HIat41h#57H"IJ ac<rAau51h9k":;au51h:z":;rC   c                 B   t        j                  ddg      }t        t        t        j
                  |       t        t        t        j
                  t        j                  dg             t        t        t        j
                  t        j                  dgdgg             y )Nr   r   r   )r;   r2  rg   rh   r   r   r   s     rA   test_boxcox_bad_argzTestBoxcox.test_boxcox_bad_argE	  s_    HHb!Wj%,,2j%,,!>j%,,1#s0DErC   c                 Z    t        t        j                  g       j                  dk(         y N)r   )r	   r   r   r  ri   s    rA   r  zTestBoxcox.test_emptyN	  s    R &&$./rC   c                 X    t        j                  t              \  }}t        |dd       y )NgsHjdrr   rQ   r   r   _boxcox_datar
   )r`   rA  lams      rA   r  zTestBoxcox.test_gh_6873Q	  s"    l+3 	YT2rC   bounds)r   r   )r   r   )r   r%  c                 z    fd}t        j                  t        d |      \  }}d   |cxk  r	d   k  sJ  J y )Nc                 4    t        j                  | d      S Nbounded)r  rp  r   minimize_scalarfunr  s    rA   	optimizerzBTestBoxcox.test_bounded_optimizer_within_bounds.<locals>.optimizer\	      ++C3<> >rC   r  r  r   r   )r   r   r  )r`   r  r  r/  r  s    `   rA   $test_bounded_optimizer_within_boundsz/TestBoxcox.test_bounded_optimizer_within_boundsY	  sA    	> <<DIN5ay5,6!9,,,,,rC   c                     t        j                  t        d       \  }}|dz   |dz   fddifd}t        j                  t        d |      \  }}||k7  sJ t        |d          y )	Nr  rH  r   xatolr{  c                 6    t        j                  | d      S )Nr  )r  rp  optionsr  )r  r  r  s    rA   r  zPTestBoxcox.test_bounded_optimizer_against_unbounded_optimizer.<locals>.optimizern	  s!    ++C3<gO OrC   r  r   r  )r`   r/  r  r  lmbda_boundedr  r  s        @@rA   2test_bounded_optimizer_against_unbounded_optimizerz=TestBoxcox.test_bounded_optimizer_against_unbounded_optimizerc	  su    
 <<D95 #+uqy)E"	O
 !<<D2;==%%%vay1rC   r  )strr   r   rH  c                     t        j                  t        d      5  t        j                  t
        d |       d d d        y # 1 sw Y   y xY w)Nz`optimizer` must be a callabler   r  r   r   rh   r   r   r  r`   r  s     rA   $test_bad_optimizer_type_raises_errorz/TestBoxcox.test_bad_optimizer_type_raises_errorx	  s<     ]]:-MN 	HLLTYG	H 	H 	Hs   AAc                     d }d}t        j                  t        |      5  t        j                  t
        d |       d d d        y # 1 sw Y   y xY w)Nc                      yr   rv   )r  s    rA   r  zCTestBoxcox.test_bad_optimizer_value_raises_error.<locals>.optimizer	  s    rC   z/return an object containing the optimal `lmbda`r   r  r  )r`   r  rI  s      rA   %test_bad_optimizer_value_raises_errorz0TestBoxcox.test_bad_optimizer_value_raises_error~	  sF    
	 D]]:W5 	HLLTYG	H 	H 	Hs   AAbad_x)r   ig@r  r   c                     d}t        j                  t        |      5  t        j                  |       ddd       y# 1 sw Y   yxY w)zHTest boxcox_normmax raises ValueError if x contains non-positive values.z#only positive, finite, real numbersr   N)r   r   rh   r   boxcox_normmax)r`   r  rI  s      rA   "test_negative_x_value_raises_errorz-TestBoxcox.test_negative_x_value_raises_error	  s:    
 8]]:W5 	(  '	( 	( 	(s	   =Arn   
     L@     x@     4@     @@     d@r  g     @g     <@g     \@g     @r  r  r  r  r  gFq$jgS	#jgGewa$jgVBi$jg[(>2$jc                     t        j                  t        d      5  t        j                  |      \  }}t        j                  t        j                  |            sJ 	 d d d        y # 1 sw Y   y xY w)NThe optimal lambda isr   )r   r   rQ  r   r   r;   r   isfinite)r`   rn   xt_bclam_bcs       rA   test_overflowzTestBoxcox.test_overflow	  sT     \\+-DE 	.!LLOME666"++e,---	. 	. 	.s   AA))A2N)rs   rt   ru   r  r  r  r  r  r  r   r   r   r  r  r  r  r;   r2  r   r  r  rv   rC   rA   r  r  	  s'   '$;<"F03 [[X'FG- H-2* [[[*>?H @H

H [[hbhh018288RVVRO3LM
(
( [[S : 	; 	9:MN# ..rC   r  c            
          e Zd Zd Zd Zd Zd Zej                  j                  dg d      ej                  j                  dg d      d	               Z
ej                  j                  d
        Zd Zej                  j                  dg dg df      d        Zd Zej                  j                  d ej"                  g dej$                         ej"                  g dej$                         ej"                  g dej&                         ej"                  g dej&                        g      ej                  j                  dg d      ej                  j                  ddg      d                      Zej                  j                  dg dg dg      ej                  j                  ddg      d               Zy)TestBoxcoxNormmaxc                 0    t        ddd      dz   | _        y Nr   r   r  r\  rw  ri   s    rA   rx  zTestBoxcoxNormmax.setup_method	      "12EBQFrC   c                 ^    t        j                  | j                        }t        |dd       y )Nm?rP   rQ   r   r   rn   r
   r`   r   s     rA   test_pearsonrzTestBoxcoxNormmax.test_pearsonr	  s"    %%dff-t4rC   c                     t        j                  | j                  d      }t        |dd       t        j                  | j                        \  }}t        ||       y )Nmlero  	.!?rP   rQ   )r   r   rn   r
   r   )r`   r   r/  maxlog_boxcoxs       rA   test_mlezTestBoxcoxNormmax.test_mle	  sG    %%dffU;t4 !<</=v.rC   c                 f    t        j                  | j                  d      }t        |ddgd       y )Nr   ro  r  r  rP   rQ   r  )r`   
maxlog_alls     rA   test_allzTestBoxcoxNormmax.test_all	  s)    ))$&&?

Xx$8tDrC   rp  )r  pearsonrr   r  r  c                     fd}t        j                  | j                  ||      }t        j                  d   |k        sJ t        j                  |d   k        sJ y )Nc                 4    t        j                  | d      S r  r  r  s    rA   r  zITestBoxcoxNormmax.test_bounded_optimizer_within_bounds.<locals>.optimizer	  r  rC   )rp  r  r   r   )r   r   rn   r;   r   )r`   rp  r  r  r   s     `  rA   r  z6TestBoxcoxNormmax.test_bounded_optimizer_within_bounds	  s[    	> %%dffV09;vvfQi&()))vvfvay()))rC   c                 6   t        j                  | j                        }t        j                  |d      }t        j
                  |dz
  |dz   d       G d d      fd}t        j                  | j                  |      }||k7  sJ t        ||d       y )	Nr   rN  i  c                       e Zd Zy)?TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.MyResultN)rs   rt   ru   rv   rC   rA   MyResultr'  	  s    rC   r(  c                     g }D ]  }|j                   | |                      }t        j                  |         |_        |S r:   )appendr;   argminrn   )r  objsr  rp   r(  lmbda_ranges       rA   r  z@TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.optimizer	  sG    D$ (CJ'(*C		$0CEJrC   r  r   )r   r   rn   r;   rx  r-  r
   )r`   r  lmbda_roundedr  lmbda2r(  r-  s        @@rA   test_user_defined_optimizerz-TestBoxcoxNormmax.test_user_defined_optimizer	  s     $$TVV,*kk-"4mD6H$O	 		 %%dff	Bt,rC   c                    t         j                  }t        j                  | j                  d |       t        j                  t        d      5  t        j                  | j                  d|       d d d        y # 1 sw Y   y xY w)N)r  r  z,`brack` must be None if `optimizer` is givenr   )g       r  )r   r  r   r   rn   r   r   rh   r  s     rA   2test_user_defined_optimizer_and_brack_raises_errorzDTestBoxcoxNormmax.test_user_defined_optimizer_and_brack_raises_error	  sl    ,,	 	TVV49E
 ]]: .D E 	6   {+46	6 	6 	6s   #A::Brn   r  )gx	 ?gN~jh ?g{ ?gXkI ?g}9" ?c                 6   d}t        j                  t        |      5  t        j                  |d      }d d d        t        j                  t        j                  |            j                         sJ t        j                  t
        j                        j                  dz  }|dkD  rt        j                  |      nt        j                  |      }t        j                  ||      }t        ||t        j                  |      z         y # 1 sw Y   xY w)NzThe optimal lambda is...r   r  ro  r  r   )r   r   rQ  r   r   r;   r  r   r   r   finfor  r  r  r
   sign)r`   rn   rI  r  ymaxx_treme	y_extremes          rA   r  zTestBoxcoxNormmax.test_overflow	  s     -\\+W5 	:((59E	:{{7>>!U3488:::xx

#''%/$qy"&&)bffQiNN7E2		4"''%.#89	: 	:s   DDc                     t        j                  t        d      5  t        j                  | j
                  d       d d d        y # 1 sw Y   y xY w)Nz `ymax` must be strictly positiver   r   )r7  )r   r   rh   r   r   rn   ri   s    rA   test_negative_ymaxz$TestBoxcoxNormmax.test_negative_ymax	  s:    ]]:-OP 	2  b1	2 	2 	2s   "AAr  )g	i@g     `h@gfffffh@g      i@gi@)gKH9KH9r<  r<  r<  r<  r7  )g    _Bgꌠ9Y>)FNr  c           	         t        j                  t        d      5  |d|ini }t        j                  |fd|i|}t        j                  |      t        j                  |      g}t        t        t        j                  ||                  }|,t        j                  |j                        j                  dz  }t        ||d       d d d        y # 1 sw Y   y xY w)Nr  r   r7  rp  r  r   rQ   )r   r   rQ  r   r   r;   r  r  absr   r5  r  r
   )r`   rn   r7  rp  r  lmbr8  ymax_ress           rA   'test_user_defined_ymax_input_float64_32z9TestBoxcoxNormmax.test_user_defined_ymax_input_float64_32	  s    & \\+-DE 	7&*&6VTNBE&&qAA5ACvvay"&&),G3u||GS9:;H|xx(,,u4D(6	7 	7 	7s   B/CCc                    t        j                  |t         j                        }t        j                  |t         j                        }t	        j
                  t        d      5  t        j                  ||       d d d        t        j                  ||       t        j                  |t         j                  |      }t        j                  |t         j                  |      }t        ||d       y # 1 sw Y   {xY w)Nr  r  r   ro  )r7  rp  rN  rQ   )r;   r  r  r  r   r   rQ  r   r   re  r
   )r`   rn   rp  x_32x_64lmb_32lmb_64s          rA   test_user_defined_ymax_infz,TestBoxcoxNormmax.test_user_defined_ymax_inf
  s     zz!2::.zz!2::. \\+-DE 	6  f5	6T&1 %%dG%%dGT2	6 	6s   &C88DN)rs   rt   ru   rx  r  r  r!  r   r   r   r  slowr1  r3  r  r;  r;   r2  r  r  rA  rG  rv   rC   rA   r  r  	  s   G5/E [[X'AB[[X'FG	* H C	* [[- -,6  [[6JLM	:M	:2 [[S9zz	# 	Mzz	# 	4zz	# 	;zz	##  [[V%78[[Xw/
7 0 9"
7 [[S+2	#  [[Xw/3 03rC   r  c                   l    e Zd Zd Zd Zej                  j                  e d      d        Z	d Z
d Zy)	TestBoxcoxNormplotc                 0    t        ddd      dz   | _        y ru  rw  ri   s    rA   rx  zTestBoxcoxNormplot.setup_method1
  ry  rC   c                     d}t        j                  | j                  dd|      \  }}g d}t        |t	        j
                  dd|             t        ||       y )Nr   r{  r   r|  )g!X4}?g΁i?g-	15?gW$?g\ܱ{?r~  )r   boxcox_normplotrn   r
   r;   r-  )r`   r}  lmbdasr  r  s        rA   re   zTestBoxcoxNormplot.test_basic4
  sM    ,,TVVS"B%C ;<m,rC   r  rj  c                 N   t        j                         }|j                  d      }t        j                  | j
                  ddt                |j                  |       |j                  d      }t        j                  | j
                  dd|       t        j                          y r  )r  r  r  r   rM  rn   r  r  r  s      rA   r  z"TestBoxcoxNormplot.test_plot_kwarg<
  sq     jjl__S!dffc2C8B __S!dffc2B7		rC   c                     t        t        t        j                  | j                  dd       t        t        t        j                  ddgdd       y )Nr   r   r   )rg   rh   r   rM  rn   ri   s    rA   r  z&TestBoxcoxNormplot.test_invalid_inputsI
  s6    j%"7"7AFj%"7"7"a!QGrC   c                 ^    t        t        j                  g dd      j                  dk(         y Nr   r   )r	   r   rM  r   ri   s    rA   r  zTestBoxcoxNormplot.test_emptyO
  s$    %%b!Q/449:rC   N)rs   rt   ru   rx  re   r   r   rE  r  r  r  r  rv   rC   rA   rJ  rJ  0
  sD    J- [[O+OD
 E
H;rC   rJ  c                       e Zd Zd Zd Zd Zy)TestYeojohnson_llfc                     t         j                  j                  ddd      }d}t        j                  ||      }t        j                  |t	        |            }t        ||d       y )Nr   r   r  r  r   r{  rQ   )r   r   r>   yeojohnson_llfr  r
   )r`   rn   r  r  r  s        rA   r  z"TestYeojohnson_llf.test_array_likeV
  sS    JJNNN?""5!,##E473T.rC   c                 :   t         j                  j                  ddd      }|j                  |      }d}t        j                  ||      }t        j                  ||j                  ||g      j                        }t        ||j                  ||f      d       y r  )r   r   r>   r  rV  rP  r  r$   )r`   rR  rn   r  r   rp   s         rA   r  z TestYeojohnson_llf.test_2d_input^
  s|    JJNN%N@JJqM""5!,""5"((Aq6*:*<*<=RXXsCj1>rC   c           	          d}t        t        ||      5  |j                  t        j                  d|j                  g                   sJ 	 d d d        y # 1 sw Y   y xY wr  )r    r   r  r   rV  r  r  s      rA   r  zTestYeojohnson_llf.test_emptyf
  sT    @+7rB 	E88E00BJJrNCDDD	E 	E 	Es   7AAN)rs   rt   ru   r  r  r  rv   rC   rA   rT  rT  S
  s    /?ErC   rT  c                      e Zd Zd Zej
                  j                  dg d      d        Zd Zd Z	ej
                  j                  de
j                  e
j                  g      d        Zej
                  j                  de
j                  e
j                  e
j                   e
j"                  g      d	        Zd
 Zej
                  j                  d e
j(                  d ed      dg       e
j(                  d ed      dg       e
j(                  d ed       dg       e
j(                  d ed       ed       ed       dg      g      d        Zej
                  j                  d e
j(                  g d       e
j(                  g d       e
j(                  g d      g      d        Zej
                  j                  d e
j(                  g d       e
j(                  g d      g      ej
                  j                  dg d      ej
                  j                  dddg      d                      Zej
                  j                  d e
j(                  g d       e
j(                  g d       e
j(                  g d      g      ej
                  j                  dddg      ej
                  j                  dd d!g      d"                      Zy )#TestYeojohnsonc                    t         j                  j                  d      }t        dd|      dz   }t        j                  |dkD        sJ t        j                  |d      }t        ||       t        j                  |d      }t        |dd|dz   z  z
         t        j                  |d      }t        |t        j                  |dz                t        j                  |d      }t        ||       t        dd|      dz
  }t        j                  |dk        sJ t        j                  |d	      }t        |t        j                  | dz                 t        j                  |d      }t        ||       t        j                  |d
      }t        |d| dz   z  dz
         t        dd|      d	z
  }t        j                  |dk        rJ t        j                  |dk\        rJ |dk\  }t        j                  |d      }t        ||   ||          t        j                  |d      }t        ||   dd||   dz   z  z
         t        j                  |d      }t        ||   t        j                  ||   dz                t        j                  |d      }t        ||   ||          | }t        j                  |d	      }t        ||   t        j                  ||    dz                 t        j                  |d      }t        ||   ||          t        j                  |d
      }t        ||   d||    dz   z  dz
         y )Nr  r   r   r\  r   r   r  r   r   r   )	r;   r]  r   rB   r   r   
yeojohnsonr
   r<   )r`   ra  rn   r  posnegs         rA   r  zTestYeojohnson.test_fixed_lmbdan
  s   ii##E* abs;a?vva!e}}aq)Aar*AQUO,aq)BFF1q5M*aq)A abs;a?vva!e}}aq)RVVQBF^O,aq)Aaq)A!aL1,- abs;a?66!a%=  66!q&>!!1faq)33(ar*3Q!C&1*%5!56aq)3#
!34aq)33(daq)3"&&!C&1"5!56aq)33(aq)3qvgk!2Q!67rC   r  )r   rH  r'  r   c                    d }d}t         j                  j                  d      }|j                  dd|      } |||      }t	        j
                  |      \  }}t        ||d       t        dt         j                  j                  ||z
        |z  d	
       t        d|j                         d
       t        d|j                         d
       y )Nc                 &   t        j                  | j                  | j                        }| dk\  }t	        |      t        j
                  d      k  rt        j                  | |         dz
  ||<   n(t        j                  | |   |z  dz   d|z        dz
  ||<   t	        |dz
        t        j
                  d      kD  r3dt        j                  d|z
   | |    z  dz   dd|z
  z        z
  || <   |S dt        j                  | |           z
  || <   |S )Nr  r   r,   r   r   )r;   rA  r  r  r>  spacingexppower)rn   r  r  r]  s       rA   _inverse_transformz:TestYeojohnson.test_lmbda_None.<locals>._inverse_transform
  s   HHQWWAGG4Eq&C 5zBJJrN*VVAcF^a/c
XXafunq&8!e)DqHc
 519~

2."((QY<!SD'+AA+E+,E	?#< <sd
 L  "&&!SD'"22sdLrC   i N  r  r   r   )r   r   r   rN  r0  r   rX   )r;   r]  r   r8  r   r\  r
   r   linalgr   rb   rd   )	r`   r  rd  rF  ra  rn   r  r  r   s	            rA   r  zTestYeojohnson.test_lmbda_None
  s    
	& 	ii##G,JJ1AYJ8"1e,%%e,
FD1Aryy~~a"f5	A1MArwwy!4Arvvx3rC   c                 Z    t        t        j                  g       j                  dk(         y r  )r	   r   r\  r  ri   s    rA   r  zTestYeojohnson.test_empty
  s       $**d23rC   c                     t         j                  j                  ddd      }t        j                  |      \  }}t        j                  t	        |            \  }}t        ||d       y )Nr   r   r  r  r{  rQ   )r   r   r>   r\  r  r
   )r`   rn   xt1r/  xt2s        rA   r  zTestYeojohnson.test_array_like
  sR    JJNNN?!!!$Q!!$q'*QSu-rC   r  c                     t        j                  d|      }d}t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)NrH   r  z>Yeo-Johnson transformation is not defined for complex numbers.r   )r;   rm   r   r   rh   r   r\  )r`   r  rn   err_msgs       rA   test_input_dtype_complexz'TestYeojohnson.test_input_dtype_complex
  sJ    IIau%]]:W5 	 Q	  	  	 s   AAc                    t        j                  d|      }t        j                  dt         j                        }t        j                  |      \  }}t        j                  |      \  }}t        ||d       t        ||d       y )NrL   r  r  rQ   )r;   rm   r  r   r\  r
   )r`   r  x_intx_floatxt_int	lmbda_intxt_floatlmbda_floats           rA   test_input_dtype_integerz'TestYeojohnson.test_input_dtype_integer
  sh    		!5)))ARZZ0!,,U3	 % 0 0 9+t4	;T:rC   c                     t        j                  g d      }t        j                  |      \  }}t        j                  |dz         \  }}t        ||d       t        ||d       y )N)(HAG."A    5fAg(@Ag   VAgHzuoAg)\¿+Arx  g(\^@Ag    RArw  g    #Ag\µ=Ag
ףNArv  gp=oHAg    6bAg{csAg)\tmhAg/BAg   '|Ag(\wipAg    ݃hAgQlBAgףp @Ar   rP   rQ   )r;   r2  r   r\  r   r
   )r`   rn   xt_yeolam_yeoxt_boxlam_boxs         rA   test_input_high_variancez'TestYeojohnson.test_input_high_variance
  sY    HH " #  **1-,,q1u-T2t4rC   rn   r,   r   r  re  r'  c                     t        j                  t        d      5  t        j                  |      \  }}d d d        y # 1 sw Y   y xY w)Nz Yeo-Johnson input must be finiter   )r   r   rh   r   r\  )r`   rn   ry  rz  s       rA   test_nonfinite_inputz#TestYeojohnson.test_nonfinite_input
  s<     ]]:-OP 	2#..q1OFG	2 	2 	2s	   >Ar  r  r	  c                    d }t        j                  d      5  t        j                  |      \  }}t        j                  |dz   t        ||            \  }}t        j                  t        j                  |            sJ t        j                  t        j                  |            sJ t        ||d       t        ||d	       d d d        y # 1 sw Y   y xY w)
Nc                 p    t        j                  | | |d      }t        j                         }||_        |S )Ng`sbO>)xtol)r   	fminboundOptimizeResultrn   )r  rz  outresults       rA   r  z/TestYeojohnson.test_overflow.<locals>.optimizer   s4    $$S7(G(KC,,.FFHMrC   raiser   r   )rz  r.  rP   rQ   r,  )	r;   r   r   r\  r   r   r  rc   r
   )r`   rn   r  ry  rz  r{  r|  s          rA   r  zTestYeojohnson.test_overflow
  s    	 [[W% 	7#..q1OFG#llAG!DFOFG;;rvvf~...;;rvvf~...GW48FF6	7 	7 	7s   B1CCr   )r   r{  g3#I9gu?j/ gnFgZbtir6  r   r   c                    t        j                  d      5  t        j                  ||z  |z        \  }}t        j                  t        j
                  ||z        t        j
                  |      k(        sJ t        j                  |      sJ t        j                  t        j                  |            sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r   )r;   r   r   r\  r   r6  r  rc   )r`   rn   r   r6  ry  rz  s         rA   #test_overflow_underflow_signed_dataz2TestYeojohnson.test_overflow_underflow_signed_data  s     [[W% 	/#..tax%/?@OFG66"''$(+rwwv>???;;w''';;rvvf~...		/ 	/ 	/s   B#CC)r   r   r   r   )r   r   r   r.  )r   r   r   r  Nr  c                    t        j                  d      5  ||z  }|j                  t         j                        }t	        j
                  ||      }t	        j                  ||      }t	        j
                  ||      }t	        j                  ||      }	t        j                  t        j                  |      t        j                  |      k(        sJ t        j                  |      sJ t        j                  t        j                  |            sJ ||k(  sJ t        j                  ||	k(        sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r   r  r  )r;   r   astyper  r   yeojohnson_normmaxr\  r   r6  r  rc   )
r`   rn   r6  r  rn  ro  lam_yeo_int
xt_yeo_intlam_yeo_floatxt_yeo_floats
             rA   test_integer_signed_dataz'TestYeojohnson.test_integer_signed_data  s    [[W% 	61HEll2::.G225FK))%{CJ!44WEJM ++G=IL66"''%.BGGJ,??@@@;;{+++;;rvvj1222-///66*4555	6 	6 	6s   D#EE)rs   rt   ru   r  r   r   r   r  r  r  r;   	complex64
complex128rl  int8uint8int16int32rt  r}  r2  r~  r  r  r  r  rv   rC   rA   rZ  rZ  l
  s   -8^ [[Wn5"4 6"4H4. [[Wr||R]]&CD  E  [[Wrww"((BHH&MN; O;5 [[S#uU|S)*#uU|S)*#e}c*+$eeElU5\M3GH	# 22 [[S : 	; 	9:MN# 77$ [[S : 	;9:# 
 [[W&LM[[VaW-/ . N/ [[S # 
 [[VaW-[[WtWo66 7 .6rC   rZ  c                       e Zd Zd Zd Zd Zy)TestYeojohnsonNormmaxc                 0    t        ddd      dz   | _        y r  rw  ri   s    rA   rx  z"TestYeojohnsonNormmax.setup_method5  r  rC   c                 ^    t        j                  | j                        }t        |dd       y )Ng?rP   rQ   )r   r  rn   r
   r  s     rA   r  zTestYeojohnsonNormmax.test_mle8  s"    ))$&&1t4rC   c                 j    g d}t        j                  |      }t        j                  |dd      sJ y )N)gffffff@g r,   r  ffffff?g333333@r  gffffff@g?g@g      @      @g"@r)  g      gzG?r-  r0  )r   r  r;   allclose)r`   rn   r  s      rA   test_darwin_examplez)TestYeojohnsonNormmax.test_darwin_example<  s/    ((+{{5%d333rC   N)rs   rt   ru   rx  r  r  rv   rC   rA   r  r  4  s    G54rC   r  c            
          e Zd Zej                  j                  dej                  dfej                  dfej                  dfg      d        Z
d Zej                  j                  dej                  ej                  fej                  ej                  fej                  ej                  fg      d        Zej                  j                  d	ej                  ej                  ej                  g      d
        Zej                  j                  dej                  dfej                  dfej                  dfg      d        Zej                  j                  dej                  ej                  ej                  g      d        Zej                  j                  dej                  ej                  ej                  g      d        Zej                  j                  dej                  ej*                  dddfej                  ej*                  dddfej                  ej*                  dddfg      d        Zd Zd Zd Zd Zd Zd Zy)TestCircFuncstest_func,expectedA:wv?gpz?E|2@c                 p    |j                  g d      }t         ||d      |j                  |             y )N)g     0v@rb  r       pv@rS        u@h  r  r  r$   r`   	test_funcr  rR  rn   s        rA   test_circfuncszTestCircFuncs.test_circfuncsM  s-    
 JJ67	!#.

80DErC   c                    |j                  g d|j                        }|j                  |      }t        j                  |d      }t        ||d       |j                  ||j                  z  dz  d	      }|d
z  }t        j                  |d      }t        ||d       |j                  |d	      }t        j                  |d      }t        ||d       y )N)r  rB  r  r     g     4@g3333333@r  r  r  r   rQ   r  r   r  r  r,  )r  r  rb   r   circmeanr$   rc   picircvarrd   circstd)	r`   rR  rn   M1M2V1V2S1S2s	            rA   test_circfuncs_smallz"TestCircFuncs.test_circfuncs_smallU  s     JJ7rzzJJWWQZ^^AC(BT*VVAbeeGCKAV. "W]]13'BT*VVA!V$]]13'BT*rC   ztest_func, numpy_funcc                     t        j                  dgdz  dgdz  z         } ||j                  |            }|j                   ||            }t        ||d       y )Ng˛ɦv9?r   guv9?r   g:0yU>r0  )r;   r  r$   )r`   r  
numpy_funcrR  rn   circstatr8  s          rA   test_circfuncs_closez"TestCircFuncs.test_circfuncs_closei  sY     JJ+,r15H4IC4OOPRZZ]+JqM*&t4rC   circfuncc           	      2   |j                  g dg dg dg      } ||d      } ||j                  |d      d      }t        ||j                  |              ||dd      }t        |j                  d	         D cg c]  } |||d d f   d       }}t        ||j                  |              ||dd	      }t        |j                  d         D cg c]  } ||d d |f   d       }}t        ||j                  |             y c c}w c c}w )
N)c  r   r   r  r   ^  )_  rK   r   `  rI   ]  )ie  rI   rL   if  r   g     @v@r  r  r   r   r  r  r   )r  r  r$   rg  r  rP  )r`   rR  r  rn   rp   r   rq   s          rA   test_circmean_axisz TestCircFuncs.test_circmean_axist  s    JJ1013 4 qs#rzz!U+#6RZZ_-qs+49!''!*4EFqx!Q$c*FFRXXc]+qs+49!''!*4EFqx!Q$c*FFRXXc]+ G Gs   ?DD @pz?c                 p    |j                  g d      }t         ||d      |j                  |             y )N)r  r   r   r  r   r  r  r  r  r  s        rA   test_circfuncs_array_likez'TestCircFuncs.test_circfuncs_array_like  s-    
 JJ12	!#.

80DErC   r  c                     |j                   }|j                  g |      }t        t        t        |      5   ||      }d d d        t        |j                  |j                  |             y # 1 sw Y   1xY w)Nr  r  )r  r  r    r   r   r%   r   )r`   r  rR  r  rn   rp   s         rA   r  zTestCircFuncs.test_empty  sh     

JJrJ'+3HRP 	A,C	 	RZZeZ<=	 	s   	A//A8c           	          |j                  ddddddt        j                  g      }t         ||d      |j                  |j                               y )	Nr  r   r   r  r   r  r  r  )r  r;   r   r%   )r`   r  rR  rn   s       rA   test_nan_propagatez TestCircFuncs.test_nan_propagate  sC     JJQ3C89	!#.

2660BCrC   g5:v@gfPb?rR  gee?gOQOv?g#q@gauy+@c                 :   |j                  g dddddddt        j                  gdt        j                  t        j                  t        j                  t        j                  t        j                  t        j                  gg      }|j                         D ]  } ||d	|
      }|&t	        ||j                  |j                               6t        |d   |j                  ||                t	        |dd  |j                  |dd  |j                                y )N)r  r   r   r  r   r  r   r  rK   r   r  rI   r  r   r  r  r   )r  r;   r   keysr%   r$   	full_like)r`   r  r  rR  rn   r  r  s          rA   test_nan_propagate_arrayz&TestCircFuncs.test_nan_propagate_array  s     JJ4aCC8BFFBFFBFFBFFBFFBFFKM N MMO 	HDACd3C|RZZ%78A

8D>(BCABc!"grvv)FG	HrC   c                 v    |j                  d      d   }|}t        j                  |      }t        ||d       y )Nr,   rv   r   rQ   )r  r   r  r$   )r`   rR  rn   r  r  s        rA   test_circmean_scalarz"TestCircFuncs.test_circmean_scalar  s3    JJrN2^^ABT*rC   c                    t        j                  |j                  ddd      |j                  |j                         }t	        ||j                  |j                               t	        | |j                  |j                               y )Nr   r   rH  )r   r  rm   r  r&   r  )r`   rR  r5  s      rA   test_circmean_rangez!TestCircFuncs.test_circmean_range  s]     NN299Q3/?q"**RUU+,r2::bee,-rC   c                 b   |j                  ddg|j                        }t        t        j                  |d      |j                  d             t        t        j
                  |d      |j                  d             t        t        j                  |d      |j                  d             y )	Nr0  r   r  r  r  g     @e@gLwqA?g)#p_4@)r  r  r$   r   r  r  r  )r`   rR  rn   s      rA   test_circfuncs_uint8z"TestCircFuncs.test_circfuncs_uint8  sx     JJRyJ1qs3RZZ5FGac2BJJ4OPac2BJJ{4KLrC   c                     t        j                  |j                  dg            }t        j                  d|      dk(  sJ y r*  )r   r  r  mathcopysign)r`   rR  rA  s      rA   test_circstd_zerozTestCircFuncs.test_circstd_zero  s3    MM"**aS/*}}S!$+++rC   c                    |j                  ddd      }|j                  |j                  |      |k(        r#|j                  |j                  |      dk(        sJ |d|j                  z  z  d|j                  z  z  |k7  }|j                  |      sJ ||   }t        j                  |d d d f   d      }|j                  ||k(        sJ y )NrU   gA:9>r   r,   r   r   r  )r-  r   sincosr  anyr   r  )r`   rR  rn   r5  rA  s        rA   !test_circmean_accuracy_tiny_inputz/TestCircFuncs.test_circmean_accuracy_tiny_input  s     KKdB'vvbffQi1n%"&&c1A*BBB!bee)_BEE	*q0vvayyaDNN1QW:A.vva1f~~rC   c                 X   |j                  d|j                        }t        j                  |j	                  |      |j                  |            }|j                  ||j                        }t        j                  ||j                  |j                         }t        ||dd       y )Ng ؅W4vCr  )r  r  gV瞯<r   )rR   r1  )
r  r  r  atan2r  r  r   r  r  r$   )r`   rR  rn   rA  r  actuals         rA   !test_circmean_accuracy_huge_inputz/TestCircFuncs.test_circmean_accuracy_huge_input  sz     JJt2::J.JJrvvay"&&),::arzz:2BEE6:u3?rC   N)rs   rt   ru   r   r   r   r   r  r  r  r  r  r;   rb   rc   rd   r  r  r  r  r  r   r  r  r  r  r  r  r  rv   rC   rA   r  r  E  sf    [[1$~~{;$}}.BC$}}k:<=F	=F+( [[4$~~rww7$}}bff5$}}bff5785	85 [[Z%..*/--*/--*9 :,:,  [[1$~~{;$}}.BC$}}k:<=F	=F [[[5>>5==+0==+: ;>;> [[[5>>5==+0==+: ;D;D [[1$~~&(ff*MO$}}&(ff#7#7 9:  %}}&(ff
KMNO
HO
H+.M,
*@rC   r  c                      e Zd Zej                  j                  dej                  d ej                  g d       ej                  ddg      dfej                  d ej                  g d      ej                  d	z  d
z  z   ej                  ddg      dfej                  d ej                  g d       ej                  ddg      dfg      d        Zej                  j                  dej                  dfej                  dfej                  dfg      d        Zej                  j                  dej                  ej                  ej                  g      d        Zej                  j                  dej                  ej                  ej                  g      d        Zej                  j                  dddd
dddej"                  g ej                  ddd
dddej"                  gddd d!ej"                  d"d#gg      g      ej                  j                  dej                  ej                  ej                  g      d$               Zej                  j                  dddd
dddej"                  g ej                  ddd
dddej"                  gddd d!ej"                  d"d#gg      g      ej                  j                  dej                  ej                  ej                  g      d%               Zy&)'TestCircFuncsNanPolicyr  grQvv@)g     v@g      @r  g     8v@rv  g     u@g5@v?g2>Bjv@rR  gG2?)gaF+?z?r  gA ~@碲?r  r  r   r  gX҄?gJPm$@)gj  @竃 ?r  g)h;@{ ?r  gun2@g+fa @c                    t        j                  ddddddt         j                  gddd	d
ddt         j                  gt         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  gg      }|j                         D ]  }| ||dd|      }t	        |||   d       #t        j                  t        t              5   ||dd|      }t	        |d d ||   d       t        t        j                  |d                d d d         y # 1 sw Y   xY w)Nr  r   r   r  r   r  r  rK   r   r  rI   r  r  omit)r  
nan_policyr  r  rQ   r   r   )r;   r2  r   r  r
   r   r   r   r   r	   r  )r`   r  r  rn   r  r  s         rA   test_nan_omit_arrayz*TestCircFuncsNanPolicy.test_nan_omit_array  s   ( HHsAq#r37Aq#q#rvv6vvrvvrvvrvvrvvrvvrvvNP Q MMO 	/D|TJXd^$?\\"4<MN /#ACFNC#CHhtn4HBHHSW-./ /	/
/ /s   >AEE	r  r  c                 `    ddddddt         j                  g}t         ||dd	      |d
       y )Nr  r   r   r  r   r  r  r  r  r  r  rQ   )r;   r   r
   )r`   r  r  rn   s       rA   test_nan_omitz$TestCircFuncsNanPolicy.test_nan_omit  s4    
 !QRbff-	!#&A t	-rC   r  c           	      R   t         j                  t         j                  t         j                  t         j                  t         j                  g}t        j                  t        t
              5  t        t        j                   ||d                   d d d        y # 1 sw Y   y xY w)Nr   r  r  )r;   r   r   r   r   r   r	   r  r`   r  rn   s      rA   test_nan_omit_allz(TestCircFuncsNanPolicy.test_nan_omit_all  se     VVRVVRVVRVVRVV4\\,4EF 	?BHHYqV<=>	? 	? 	?s   -'BB&c           	      b   t        j                  t        t              5  t	        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  gt        j                  t        j                  t        j                  t        j                  t        j                  gg      } ||dd      }t        t	        j                  |      j                                t        t        |      dk(         d d d        y # 1 sw Y   y xY w)Nr   r  r   )r  r  r   )r   r   r   r   r;   r2  r   r	   r  r   r  )r`   r  rn   r  s       rA   test_nan_omit_all_axisz-TestCircFuncsNanPolicy.test_nan_omit_all_axis%  s     \\,4EF 	#266266266266266B66266266266266BD EAA&q9CBHHSM%%'(CHM"	# 	# 	#s   C<D%%D.rn   r  r   r  r   r  r  rK   r   r  rI   r  c                 ,    t        t        ||dd       y )Nr  r  r  rg   rh   r  s      rA   test_nan_raisez%TestCircFuncsNanPolicy.test_nan_raise/  s     	j)QSWMrC   c                 ,    t        t        ||dd       y )Nr  foobarr  r  r  s      rA   test_bad_nan_policyz*TestCircFuncsNanPolicy.test_bad_nan_policy8  s     	j)QSXNrC   N)rs   rt   ru   r   r   r   r   r  r;   r2  r  r  r  r  r  r  r  r   r  r   rv   rC   rA   r  r    sC    [[1$~~&7#+288 -4 $5#+288Z,F#G IJ
  %}}&:#+288 -N $./1uuSy1n$= $,288-A-@-B $C	 DE  %}}&7#+288 -9 $: $,288Z,D#E	 GHIJ&/'J&/ [[1$~~{;$}}.BC$}}k:<=-	=-
 [[[5>>5==+0==+: ;?;?
 [[[5>>5==+0==+: ;#;# [[S"Aq#r3?&bhhaCS"&&(I),aCC(H(J KLM [[[5>>5==+0==+: ;N;	MN [[S"Aq#r3?&bhhaCS"&&(I),aCC(H(J KLM [[[5>>5==+0==+: ;O;	MOrC   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zej                  j!                  dddg      d        Zy)TestMedianTestc                 F    t        t        t        j                  g d       y Nr   rg   rh   r   median_testri   s    rA   test_bad_n_samplesz!TestMedianTest.test_bad_n_samplesD  s    j%"3"3Y?rC   c                 H    t        t        t        j                  g g d       y r  r  ri   s    rA   r8  z TestMedianTest.test_empty_sampleH  s    j%"3"3RCrC   c                 V    t        t        t        j                  g dg dddgd       y )N)r   r   r   r   )r   r   r   r   r   r   r  r  ri   s    rA   test_empty_when_ties_ignoredz+TestMedianTest.test_empty_when_ties_ignoredL  s$    
 	j%"3"3"I1vH	FrC   c                     t        t        t        j                  g dg d       t        t        t        j                  g dg dd       y )N)r   r   r   abover
  r  ri   s    rA   test_empty_contingency_rowz)TestMedianTest.test_empty_contingency_rowT  s3    
 	j%"3"3Y	J 	j%"3"3Y	"	$rC   c                 P    t        t        t        j                  g dddgd       y )Nr   r   r   rp  r
  r  ri   s    rA   test_bad_tieszTestMedianTest.test_bad_ties`  s    j%"3"3YA 	"rC   c                 P    t        t        t        j                  g dddgd       y )Nr   r   r   r  r  r  ri   s    rA   r   z"TestMedianTest.test_bad_nan_policyd  s    j%"3"3YA!)	+rC   c                 P    t        t        t        j                  g dddgd       y )Nr   r   r   rp  )rp  )rg   r,  r   r  ri   s    rA   test_bad_keywordzTestMedianTest.test_bad_keywordh  s    i!2!2I1v	!rC   c                     g d}g d}t        j                  ||      \  }}}}t        |d       t        |ddgddgg       t        |d       t        |d       y )Nr   r  r   r   r   )r   r  r   r   )r`   rn   rA  r  r  medtbls          rA   test_simplezTestMedianTest.test_simplel  s`    !--a3ac 	S#3!Q!Q 01 	T1QrC   c                    g d}ddg}g d}t        j                  |||      \  }}}}t        |d       t        |g dg dg       t        j                  |||d      \  }}}}t        |d       t        |g dg d	g       t        j                  |||d
      \  }}}}t        |d       t        |g dg d	g       y )Nrg  r   rH   )rK   rL   rI   )r   r   r   )r   r   r   r   r
  )r   r   r   r  )r   r   r   )r   r  r   )r`   rn   rA  zr  r  r5  r  s           rA   test_ties_optionsz TestMedianTest.test_ties_options{  s    F  ++Aq!4aCQS9i01++Aq!(CaCQS9i01++Aq!'BaCQS9i01rC   c                    ddt         j                  g}g d}t        j                  ||d      }t        j                  ||d      \  }}}}t	        |t         j                  t         j                  t         j                  d f       t        |d       t        |d       t	        |d	       t	        |t        j                  d
dgddgg             t        t        t        j                  ||d       y )Nr   r   rD  	propagater  r  g     ?gإvao?g      @r   r  )	r;   r   r   r  r   r
   r2  rg   rh   )r`   rn   rA  mt1r  r  r5  r  s           rA   test_nan_policy_optionsz&TestMedianTest.test_nan_policy_options  s    266N1=&&q!?
1aS266266266489././QQ1a&1a&!123j%"3"3QgNrC   c                    g d}g d}t        j                  ||      \  }}}}t        |d       t        |ddgddgg       t        j                  |      \  }}}	}
t	        ||       t	        ||       t        j                  ||d      \  }}}}t        |d       t        |ddgddgg       t        j                  |d      \  }}}	}
t	        ||       t	        ||       t        j                  ||d	      \  }}}}t        |d       t        |ddgddgg       t        j                  |d	      \  }}}	}
t	        ||       t	        ||       y )
Nr   )r   r   rH   rL   r   r   r   r   )lambda_Fr  )r   r  r   chi2_contingencyr
   )r`   rn   rA  r  r  r5  r  exp_statexp_pdofes              rA   re   zTestMedianTest.test_basic  sN    ++Aq1aCQSAq6Aq6*+"'"8"8"=%ah'5!++Aq!<aCQSAq6Aq6*+"'"8"8a"H%ah'5!++AqUCaCQSAq6Aq6*+"'"8"8"O%ah'5!rC   r  FTc                     g d}g d}t        j                  |||      }t        |j                  |j                  |j
                  |j                  f|       y )Nr   r  )r   r  r   r]   r   r  table)r`   r  rn   rA  rp   s        rA   test_resultzTestMedianTest.test_result  sC    1<cmmSZZSYYGMrC   N)rs   rt   ru   r  r8  r  r  r  r   r  r  r  r  re   r   r   r   r(  rv   rC   rA   r  r  B  sh    @DF
$"+!2(O"> [[\E4=9N :NrC   r  c                   4   e Zd Zd Zej
                  j                  dej                   dz  ej                  dz  gdfddej                  z  gdfg      d        Z	d Z
d	 Z ed
d      d        Zd Zej
                  j                  dddg      d        Zy)TestDirectionalStatsc                    t        j                  t        j                  g d             }t        j                  t        j                  g d             }t        j                  t        j                  |      t        j                  |      z  t        j                  |      t        j
                  |      z  t        j
                  |      fd      }|j                  |j                               }|j                  |j                               }|j                  |j                               }t        j                  |      }|j                  }|j                  g d      }t        ||d       y )N)	g33333su@g      O@g33333sB@r  r  g@g333333I@gYv@r  )	gfffffP@g,Q@gfffffQ@gfffffT@g     S@g     @R@g33333SQ@gffffffM@g33333I@r   r  )gHP?g&S:g[<r,  r0  )r;   deg2radr2  rP  r  r  r  rJ  r   directional_statsmean_directionr$   )r`   rR  declinclra   dirstatsdirectional_meanreference_means           rA   "test_directional_stats_correctnessz7TestDirectionalStats.test_directional_stats_correctness  s    

288 %< = > >

288 %< = > >xxt4t4'  
 zz$++-(zz$++-(zz$++-(**40#22$>?(.tDrC   zangles, refr   r,   r   r   c                 
   |j                  |      }|j                  |      }|j                  |j                  |      |j                  |      gd      }dt	        j
                  |      j                  z
  }t        ||       y )Nr   r  )r  rP  r  r  r   r-  mean_resultant_lengthr$   )r`   anglesr   rR  ra   rp   s         rA   'test_directional_stats_2d_special_casesz<TestDirectionalStats.test_directional_stats_2d_special_cases  sk    
 F#jjoxx8qxA%))$/EEES!rC   c                 @   t         j                  j                  d      }|j                  d|j                  z  |j                  d      z        }|j                  |j                  |      |j                  |      fd      }t        j                  |      }|j                  }|j                  |d   |d         }|d|j                  z  z  }t        j                  |      }t        ||       d|j                  z
  }	t        j                  |      }
t        |	|
       y )Nl	   }7Qh0P4u&4M r   )r[  r   r  r   r,   )r;   r]  r^  r  r  rP  r  r  r   r-  r.  r  r  r$   r6  r  )r`   rR  ra  testdatatestdata_vectorr1  r2  directional_mean_angler  directional_varcircular_vars              rA   test_directional_stats_2dz.TestDirectionalStats.test_directional_stats_2d  s     ii##$FG::a"%%i#**X*>>?((BFF8$4$&FF8$4$6() # + **?;#22!#*:1*=?OPQ?R!S!71ruu9!E>>(+.9x===}}X.6rC   c                    |j                  g dg dg      }|j                  |j                  |d            }|j                  g dg dgg dg dgg      }t        j                  |d      }t	        |j
                  |       y )N+Pz?r'  r   )rB  r1  r   )r   r   r   r   )r,   r   r   r   r  )r  tiler   r-  r$   r.  )r`   rR  ra   
full_arrayr  r1  s         rA    test_directional_mean_higher_dimz5TestDirectionalStats.test_directional_mean_higher_dim  s     zz/02 3ZZl ;<
:: , . , , ./ 0 **:A>//:rC   Tzchecking array-like inputrV  c                 ^   g dg dg}|j                  ||j                        }t        j                  |      }t        j                  |      }t	        |j
                  |j                  |j
                               t	        |j                  |j                  |j                               y )NrA  )rB  r1  r   r  )r  r  r   r-  r$   r.  r6  )r`   rR  ra   
data_arrayr   rp   s         rA   )test_directional_stats_list_ndarray_inputz>TestDirectionalStats.test_directional_stats_list_ndarray_input  s     %&:;ZZBJJZ7
%%d+%%j1**

3#5#56	811

3#<#<=	?rC   c                     |j                  d      }d}t        j                  t        t	        j
                  |            5  t        j                  |       d d d        y # 1 sw Y   y xY w)N)r   zIsamples must at least be two-dimensional. Instead samples has shape: (5,)r   )r   r   r   rh   reescaper   r-  )r`   rR  ra   rI  s       rA   test_directional_stats_1d_errorz4TestDirectionalStats.test_directional_stats_1d_error  sP    wwu~6]]:RYYw-?@ 	*##D)	* 	* 	*s   A!!A*r  r  r  c                    t        j                  g dg dg|      }t        j                  |j	                  |      d      }|t         j
                  j                  |dd      z  }t        j                  |d      }t        |j                  |j	                  |j                               t        |j                  |j	                  |j                               y )	NrA  )g+Pz?r'  r   r  T)	normalizer   )r  keepdimsF)
r;   r2  r   r-  r  re  r   r$   r.  r6  )r`   r  rR  ra   rp   normalized_datar   s          rA    test_directional_stats_normalizez5TestDirectionalStats.test_directional_stats_normalize  s    
 xx--/6;=%%bjj&6$G29= "0 "? ?%%oG**

3#5#56	811

3#<#<=	?rC   N)rs   rt   ru   r4  r   r   r   r;   r  r8  r?  rE  r  rH  rL  rQ  rv   rC   rA   r*  r*    s    E, [[]55&(BEE!G	b!
QY- "	"7&; d+FG	? H	?* [[Wy)&<=? >?rC   r*  c                       e Zd Zd Zd Zej                  j                  dg ddfg ddfg      d        Zd	 Z	ej                  j                  d
g d      d        Z
d Zy)TestFDRControlc                 @   d}t        j                  t        |      5  t        j                  |j                  g d             d d d        t        j                  t        |      5  t        j                  |j                  g d             d d d        t        j                  t        |      5  t        j                  |j                  dd|j                  g             d d d        d}t        j                  t        |      5  t        j                  |j                  g d      d	
       d d d        d}t        j                  t        |      5  t        j                  |j                  g d      d       d d d        t        j                  t        |      5  t        j                  |j                  g d      d       d d d        y # 1 sw Y   xY w# 1 sw Y   Ux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)Nz.`ps` must include only numbers between 0 and 1r   )r   r'  r  )r'  r  r   r'  r  zUnrecognized `method` 'YAK')r'  r  rz   YAKro  z#`axis` must be an integer or `None`r  r  r  )r   r   rh   r   false_discovery_controlr  r   r  s      rA   test_input_validationz$TestFDRControl.test_input_validation/  s   B]]:W5 	F))"**^*DE	F]]:W5 	E))"**]*CD	E]]:W5 	J))"**c35G*HI	J 0]]:W5 	U))"**_*EeT	U 8]]:W5 	Q))"**_*ECP	Q]]:W5 	T))"**_*EFS	T 	T	F 	F	E 	E	J 	J	U 	U	Q 	Q	T 	TsG   'G('G"22G/	)G<)H#)HG"G,/G9<HHHc                     |j                  g d      }t        j                  |      }|j                  g d      }t        ||d       y )N)r~  g;On?g~jt?gI+?g&1?gB`"۹?gv?S㥛?);On?rZ  I+?r[  gˡE?gHzG?rY  rY  r-  r0  )r  r   rV  r$   )r`   rR  psrp   r   s        rA   test_against_TileStatsz%TestFDRControl.test_against_TileStatsB  s<    ZZPQ++B/jjQRSt,rC   rb  )
go?gQ]
Y?ghD@?u?D?gn@t?g=T	[ے?g=!s?r^  r^  g	L?bh)
glߢ?gq?g.0?R]D?g)<Gh?g$͂?g2-p?r`  r`  g]:?byc                 D   |\  }}t         j                  j                  d      }t        j                  j                  ddd|      j                         }|d   |d<   t        j                  |j                  |      |      }t        ||j                  |      d	
       y )N   <U) r-  r'  r   r\  rK   r   ro  rP   r0  )
r;   r]  r^  r   
loguniformr>   rJ  rV  r  r$   )r`   rb  rR  r   rp  ra  r\  rp   s           rA   rg  zTestFDRControl.test_against_RI  s     Vii##$78!!$"3!GNNP11++BJJrN6JRZZ_48rC   c                 ,   t         j                  j                  d      }t        j                  j                  ddd|      }|j                  |      }t        j                  |d       }t        j                  t        |            }t        ||       y Nrc  r-  r'  )r   r   r   r\  r  )
r;   r]  r^  r   rd  r>   r  rV  r!   r%   )r`   rR  ra  r\  rp   r   s         rA   test_axis_NonezTestFDRControl.test_axis_None[  ss    ii##$78!!$)#!NZZ^++BT:++HRL9S!rC   r  )r   r   r   c                 T   t         j                  j                  d      }t        j                  j                  ddd|      }t        j                  |j                  |      |      }t        j                  t        j                  ||      }t        ||j                  |             y rf  )
r;   r]  r^  r   rd  r>   rV  r  apply_along_axisr$   )r`   r  rR  ra  r\  rp   r   s          rA   r  zTestFDRControl.test_axisc  s|    ii##$78!!$)#!N++BJJrNF!!%"?"?rJRZZ_-rC   c                    |j                  dg      }t        t        j                  |      |       |j                  g       }t        t        j                  |      |       t	        |      r t        t        j                  d      d       y y )Nr(  )r  r%   r   rV  r"   )r`   rR  r\  s      rA   r  zTestFDRControl.test_edge_casesk  sj    ZZ55b92>ZZ^55b92>B<E99$?F rC   N)rs   rt   ru   rW  r]  r   r   r   rg  rg  r  r  rv   rC   rA   rS  rS  -  s    T&- [[V 89=? 89=?@A	9A	9" [[VZ0. 1.GrC   rS  c                       e Zd Zej                  j                  dej                  i fej                  ddifej                  ddifej                  i fg      d        Z
y)TestCommonAxisrb  r
  r   r   c                    t        |      r,|d   t        j                  k(  rt        j                  d       |\  }}t
        j                  j                  d      }|j                  |j                  d            } ||fi |ddi}|j                  t        |j                  d         D cg c]  } ||d d |f   fi | c}      }	t        ||	        ||fi |ddi}|j                  t        |j                  d         D cg c]  } |||d d f   fi | c}      }	t        ||	        ||fi |dd i} ||j                  |d      fi |}	t        ||	       y c c}w c c}w )	Nr   z3copysign doesn't accept scalar array-api-compat#271rj  l   @ms|Y)rH   rK   r  r   r  )r   r   	variationr   xfailr;   r]  r^  r  rP  rg  r  r$   r  )
r`   rb  rR  r  r@   ra  rn   rp   rq   r   s
             rA   r  zTestCommonAxis.test_axis}  sK   
 B<DGu6LL UVVii##N3JJszz&)*!&v&A&hhaggaj8IJ1AadG.v.JKS!!&v&A&hhaggaj8IJ1AadG.v.JKS!!)v)D)"**Q&1&1S! K Ks   .E'
E,N)rs   rt   ru   r   r   r   r   semrQ  rn  r  rv   rC   rA   rl  rl  v  sb     [[Vuyy"o',{{S!H&=',{{S!H&=',&;&= >"	>"rC   rl  )r  rJ  rA  r   	functoolsr   numpyr;   numpy.randomr   numpy.testingr   r   r   r   r	   r
   r   r   r   rg   scipyr   r   r   scipy.stats._morestatsr   r   r   common_testsr   
_hypotestsr   r   scipy.stats._binomtestr   scipy.stats._distr_paramsr   scipy.stats._axis_nan_policyr   r   r   r   scipy._lib.array_api_extra_libarray_api_extrar.  scipy._lib._array_apir   r   r    r!   r"   r#   scipy._lib._array_api_no_0dr$   r%   r&   r   r  dict
matplotlibrcParamsmatplotlib.pyplotpyplotr  r  	Exceptionr  r  r  r  r  r  r  r  r  r  rB   rE   rx   r   r.  r   rh  r  r;  rP  rM  r  r  r  r  r  rO  rH  rq  ru  rs  r  r  r  rf  rQ  rK  rk  ri  rs  r  r  r  r  r  r  rJ  rV  rT  rZ  r  r  r  r  r  r  r  r-  r*  rV  rS  rl  rv   rC   rA   <module>r     sC  
  	 
    $C C C  * * * N N - B ? .T T ) (? ?  ;;// >%*J	"#O LKKKKKKKKL
4/ />? ?Bu@ u@p EFM> M> GM>`O( O(d GHL9 L9 IL9^60 60r 5<< HI HI !HIV 5>>"&* &* #&*R 5<< >4 >4 !>4Bk8 k8\ 5==!M8 M8 "M8`20 5::~6 ~6 ~6B]5 ]5@ 5>>"v8 v8 #v8xP
 5;;3. 3.  3.l 5>>"(. (. #(.V39 39l"= "=J 5##$@+ @+ %@+J0fI. I.XK3 K3\ ;  ;F 5''(E E )E0E6 E6P4 4" 5>>5==%--@e@ e@ Ae@PQO QOhN ND 5**+e? e? ,e?P 5001EG EG 2EGP" "Mj  Os   9N. .N98N9