o
    i(                    @   s  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mZ d dlZd dlmZ d dlZd dlmZmZmZ d dlmZmZmZ dd	lmZ d
dl m!Z!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-Z- d dl.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4 ej5j6Z6e7e&Z&zd dl8Z8de8j9d< d dl:m;Z< dZ=W n e>y   dZ=Y nw g dZ?g dZ@g dZAg dZBg dZCg dZDg dZEg dZFg dZGg dZHd d! ZIG d"d# d#ZJG d$d% d%ZKG d&d' d'ZLG d(d) d)ZMG d*d+ d+ZNG d,d- d-ZOe-G d.d/ d/ZPG d0d1 d1ZQG d2d3 d3ZRG d4d5 d5ZSd6d7 ZTG d8d9 d9ZUG d:d; d;ZVG d<d= d=ZWg d>ZXe-G d?d@ d@ZYe-G dAdB dBZZG dCdD dDZ[G dEdF dFZ\e6dGdHdIej5]dJe-G dKdL dLZ^g dMZ_G dNdO dOZ`G dPdQ dQZaG dRdS dSZbG dTdU dUZcG dVdW dWZdG dXdY dYZee-G dZd[ d[ZfG d\d] d]ZgG d^d_ d_Zhe-G d`da daZiG dbdc dcZje-G ddde deZkdS )f    N)partial)RandomState)assert_array_equalassert_almost_equalassert_array_lessassert_array_almost_equalassert_assert_allcloseassert_equalsuppress_warnings)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)array_api_compatible)array_namespaceis_numpy)xp_assert_closexp_assert_equalxp_assert_lessZAggbackendTF)
jt?Zd;?V-?      ?gX9v?-?x&1?+?+?r(   )
r'   r%   r(   r*   灕Cl?r'   r&   r(   r%   V-?)
ʡE?g/$?r-   r+   ףp=
?r,   r(   r+   r&   r&   )
gGz?r*   r,   r(   r0   r,   r'   r&   r*   r&   )
r'   r'   gCl?Gz?r*   rh|?r&   r)   g\(\?r&   )
羟/$?gh|?5?r3   r-   r.   r*   r0   r'   g1Zd?r&   )
r1   Mb?r&   gjt?r'   r(   g}?5^I?g)\(?r&   r*   )
r'   r(   r%   r(   r*   r&   r'   r&   r*   r%   )
r*   r'   r&   r0   r&   r4   r4   r'   r+   r/   )
r/   r0   r2   r,   r-   r-   r/   r'   r4   r-   c                  O   s   t tjj| i |S N)nplogr   gammarvs)argskwargs r<   Z/home/kim/smarthome/.venv/lib/python3.10/site-packages/scipy/stats/tests/test_morestats.py_old_loggamma_rvsD      r>   c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestBayes_mvsc                 C   st   g d}t |\}}}t|jd t|jddd t|jd t|jddd t|jd	d
d t|jddd d S )N   	            rG            "@gURH#j@gV[%@ư>rtol      $@gai	@gӇu8@&.>_紫@   decimalgYs?g1O@+=)r   	bayes_mvsr   	statisticr	   minmaxselfdatameanvarstdr<   r<   r=   
test_basicI   s   
zTestBayes_mvs.test_basicc                 C      t ttjg  d S r5   )assert_raises
ValueErrorr   rW   r[   r<   r<   r=   test_empty_input[      zTestBayes_mvs.test_empty_inputc                 C   s0   t d}d}t|}|D ]}t|| qd S )N   )rX   rY   )r6   aranger   rW   r   )r[   x
attributesresir<   r<   r=   test_result_attributes^   s   

z$TestBayes_mvs.test_result_attributesN)__name__
__module____qualname__r`   re   rm   r<   r<   r<   r=   rA   H   s    rA   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestMvsdistc                 C   s   g d}t |\}}}t| d t|dddd t| d t|ddd	d t| d
dd t|dddd d S )NrB   rI   ?rJ   rV   rL   rN   rO   rP   rQ   rR   rS   rU   )r   mvsdistr   r]   r	   intervalrZ   r<   r<   r=   r`   h   s   
zTestMvsdist.test_basicc                 C   ra   r5   rb   rc   r   rt   rd   r<   r<   r=   re   w   rf   zTestMvsdist.test_empty_inputc                 C   s   dg}t ttj| d S Nr   rv   r[   r\   r<   r<   r=   test_bad_argz   s   zTestMvsdist.test_bad_argc                 C   sj   t  ' t dt dd tg dD  dd tg dD  W d    d S 1 s.w   Y  d S )Nerrorc                 S      g | ]}|  qS r<   r]   .0ri   r<   r<   r=   
<listcomp>       z*TestMvsdist.test_warns.<locals>.<listcomp>r   r      c                 S   r{   r<   r|   r}   r<   r<   r=   r      r   r   r   r         )warningscatch_warningssimplefilterRuntimeWarningr   rt   rd   r<   r<   r=   
test_warns   s
   
"zTestMvsdist.test_warnsN)rn   ro   rp   r`   re   ry   r   r<   r<   r<   r=   rr   g   s
    rr   c                   @   sV   e Zd Zdd Zdd Zejdg dgddgfdd	 Zd
d Z	dd Z
dd ZdS )TestShapiroc           
      C   s  g d}t |\}}t |}t|ddd t|jddd t|ddd t|jddd g d}t |\}}t |}t|ddd t|jddd t|dd	d t|jdd	d t jjd
d	ddd}t |\}}t |}t|ddd t|jddd t|dd	d t|jdd	d g d}d}d}	t |\}}t |}t||dd t|j|dd t||	d
d t|j|	d
d d S )N))\(?{Gz@q=
ףp@HzG$@@Q	@q=
ףp?Q@zG?      @Q?RQ?Q	@(\?zG?zG@(\#@333333@Gz?p=
ף@   ?rC   rS      Ɍ?)(\?=
ף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   rX   pvaluenormr9   )
r[   x1wpwshapiro_testx2Zx3Zx4Z
W_expectedZ
p_expectedr<   r<   r=   r`      s<   



zTestShapiro.test_basicc                 C   s   g dg dg}t |\}}t |}t|ddd t|jddd t|ddd t|jddd g dg dg}t |\}}t |}t|d	dd t|jd	dd t|d
dd t|jd
dd d S )N)
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   rC   rS   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   rX   r   )r[   r   r   r   r   r   r<   r<   r=   test_2d   s$   

zTestShapiro.test_2dri   r   r   c                 C   sZ   t jttd t|}t|jtj	 t|j
tj	 W d    d S 1 s&w   Y  d S Nmatch)pytestwarnsr   r   r   r   r
   rX   r6   nanr   r[   ri   rk   r<   r<   r=   test_not_enough_values   
   
"z"TestShapiro.test_not_enough_valuesc                 C   sd   t d}t j|d< t|\}}t|}t|t j t|jt j t|t j t|jt j d S )NrN   rD   )	r6   rh   r   r   r   r
   rX   r   r   )r[   ri   r   r   r   r<   r<   r=   test_nan_input   s   


zTestShapiro.test_nan_inputc                 C   s2   t g d\}}t |}d}t||dd d S )N)i i = i@ )gPq~?gF?h㈵>rL   )r   boxcoxr   r	   )r[   Z	trans_valmaxlogrk   refr<   r<   r=   test_gh14462   s   
zTestShapiro.test_gh14462c                 C   sN   t g d}|jdksJ g d}t |}t|jd t|jddd d S )N)g9B.?        r   r   )g1gIۿg0!?gr??gel?rK   rL   )r   r   r   r	   rX   )r[   rk   ri   r<   r<   r=   test_length_3_gh18322   s   
z!TestShapiro.test_length_3_gh18322N)rn   ro   rp   r`   r   r   markparametrizer   r   r   r   r<   r<   r<   r=   r      s    +
r   c                   @   s~   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zejdg ddd Zdd ZdS )TestAndersonc                 C   s   t d}|jdd}|jdd}t|\}}}t|d d | t|\}}}t||dd   td}d|d< t|\}}}t|d d S )	NI2   r   
   r   g	@)	r   standard_exponentialstandard_normalr   andersonr   r6   onesr	   )r[   rsr   r   Acritsigvr<   r<   r=   test_normal  s   

zTestAnderson.test_normalc                 C   s   t d}|jdd}|jdd}t|d\}}}t||dd   tjdd t|d\}}}W d    n1 s<w   Y  t||d k d S )	Nr   r   r   exponr   ignoreallr   )	r   r   r   r   r   r   r6   errstater   )r[   r   r   r   r   r   r   r<   r<   r=   
test_expon  s   zTestAnderson.test_exponc              	   C   s   t d}d|d< t|d\}}}t|}tj|\}}tj|||}tj|||}	t 	d|d }
| t 
d|
 d ||	d d d    }t|| d S )Nr   r   r   gumbelr   r   r   )r6   r   r   r   lengumbel_lfitlogcdflogsfrh   r]   r	   )r[   r   Za2r   r   nxbarsr   r   rl   Zexpected_a2r<   r<   r=   test_gumbel"  s   
*zTestAnderson.test_gumbelc                 C      t ttjdgdd d S Nr   plate_of_shrimpdist)rb   rc   r   r   rd   r<   r<   r=   ry   2  r?   zTestAnderson.test_bad_argc                 C   s0   t d}|jdd}t|}d}t|| d S )Nr   r   r   rX   critical_valuessignificance_level)r   r   r   r   r   )r[   r   ri   rk   rj   r<   r<   r=   rm   5  s
   
z#TestAnderson.test_result_attributesc           	      C   sF   t d}|jdd}t|d\}}}t|d\}}}t|| d S )Nr   r   r   r   r   )r   r   r   r   r	   )	r[   r   ri   A1crit1sig1A2crit2sig2r<   r<   r=   test_gumbel_l<  s
   zTestAnderson.test_gumbel_lc           
      C   sp   t d}|jdd}td}d|d< t|d\}}}t|d\}}}	t||dd   t||d k d S )	Nr   r   r   r&   r   gumbel_rr   r   )r   r   r6   r   r   r   r   r   )
r[   r   r   r   r  r  r  r  r  r  r<   r<   r=   test_gumbel_rF  s   
zTestAnderson.test_gumbel_rc           
      C   s   t g d}t|d}|jj\}}}t|||fddd t|jddd |j|jd k s0J d	| }t|d
dd t	d }t	d }||d d ||   }	t 
|j|	ksYJ t|j|	dd d S )N)
            r        r  u   r  weibull_min)g
ףp=
@gzGX@gQS@Mb`?rL   gp=
ף?MbP?r   r   g?r   皙?g?atol)r6   arrayr   r   
fit_resultparamsr	   rX   r   r   r   )
r[   ri   rk   mr   r   cZAs40ZAs45ZAs_refr<   r<   r=   test_weibull_min_case_AU  s   z$TestAnderson.test_weibull_min_case_Ac                 C   sR   t g d}d}tjt|d t|d W d    d S 1 s"w   Y  d S )N)J   9   0        rE   F      r"    ;            iF  z/Maximum likelihood estimation has converged to r   r  )r6   r  r   r   rc   r   r   )r[   ri   messager<   r<   r=   test_weibull_min_case_Bh  s
   "z$TestAnderson.test_weibull_min_case_Bc              	   C   s   t g d }d}d}tjt|d}tjt|d}|) | t|d W d    n1 s0w   Y  W d    d S W d    d S 1 sHw   Y  d S )N)	r  K   r      k   rE   =   +   r"  z:Critical values of the test statistic are given for the...z;An error occurred while fitting the Weibull distribution...r   r  )	r6   r  r   r   UserWarningr   rc   r   r   )r[   ri   ZwmessageZemessageZwcontextZecontextr<   r<   r=   test_weibull_warning_errorp  s   Pz'TestAnderson.test_weibull_warning_errordistname)r   r   r   extreme1r   r	  Zlogisticr  c                 C   s\   t jd}|dv rdn|}tt|}t| }|j|d|d}t||}|jj	s,J d S )Nl   'Dah$>   r   r5  r     r   r   )
r6   randomdefault_rnggetattrr   r   r9   r   r  success)r[   r4  rngZreal_distnamer   r  ri   rk   r<   r<   r=   test_anderson_fit_params{  s   
z%TestAnderson.test_anderson_fit_paramsc                 C   s:   d}t td| td  tj}t td| td  d S )Nr   r   r   )r
   r   r   r6   inf)r[   r  r<   r<   r=   test_anderson_weibull_As  s   z%TestAnderson.test_anderson_weibull_AsN)rn   ro   rp   r   r   r   ry   rm   r  r
  r  r,  r3  r   r   r   r=  r?  r<   r<   r<   r=   r      s     


r   c                   @   s\   e Zd Zdd Zdd Zejjdd Zdd Z	d	d
 Z
dd Zdd Zdd Zdd ZdS )TestAndersonKSampc                 C   s   g d}t g d}t g d}t g d}tj||||fdd\}}}t|dd tg d	|d
d d t|ddd d S )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@rE        F@g     F@rD  ffffffA@rH  g33333A@gB@gfffffB@gD@gffffffE@Fmidrankg@r   gCl?gvq-?g,Ԛ?gl@gPk	@r   r   r   gJ4a?Mb0?r  r6   r  r   anderson_ksampr   r   r	   r[   t1t2t3t4Tktmpr<   r<   r=   test_example1a  s   z TestAndersonKSamp.test_example1ac                 C   s   t g d}t g d}t g d}t g d}tj||||fdd\}}}t|dd tg d	|d
d d t|ddd d S )NrA  rB  rC  rG  TrI  gQ@r   rK  r   r   r   r  rL  r  rM  rO  r<   r<   r=   test_example1b  s   z TestAndersonKSamp.test_example1bc                 C   s,  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d\}}}t|dd tg d|dd d t|ddd tjd}t jd|d}t j|d|d}t	|j
| t	|j| t|j|dd d S )N   rg   )   r"  !      i  rR   :   %   r   A   rD      i     $      v   
"         rj  C   r   >   rF      rh  Z   r   <      r0  1   rR      8      O   T   ,   r'  r"  rf        i6  L   r*  rx     rl        r$  e   r  r  r   r!  r"  r#  rE   r$  r%  r"  r&  r'  r(  7   i@  rt  h         /            r\  r|  i  W   rF   x   rR   rl  r  r  G   r  r%  *   ru  r   rE   r     r   rR   r  r  rR   r     ro  r   r  4   _   a   3   r  r      rj     D   M   P   r   r  j      R   6   ri     .   o   '   ?   rj     rj     rs  r   rx  f   H   rm  r  r   rg         rv  X   r  r   r   rd  rm        r     r|  rH   rR   	g  rD   rE   i  i[  r   r  r   i  r      r   i  #   rE   i  rj  r   rF   b   r   U   [   r1     r   r~  r     rR   r   r      rk  r'        r(  rR   r  B   r0  rh  FrI  gM
@r   g^I+?g~:?g+e?gH.!@gcZB>h@r   r   r   	^)p?rL  r  l   <Ic i'  n_resamplesr<  )rJ  methodga2U0*C?)r   rN  r   r   r	   r6   r8  r9  PermutationMethodr   rX   r   r   )r[   rP  rQ  rR  rS  t5t6t7t8t9t10t11t12t13t14ZsamplesrT  rU  rV  r<  r  rk   r<   r<   r=   test_example2a  s6    z TestAndersonKSamp.test_example2ac                 C   s   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d\}}}t|dd tg d|dd d t|ddd d S )NrY  r^  rg  rn  r}  r  r  r  r  r  r  r  r  r  TrI  g'1Z
@r   r  r   r   r   r  rL  r  )r   rN  r   r   r	   )r[   rP  rQ  rR  rS  r  r  r  r  r  r  r  r  r  r  rT  rU  rV  r<   r<   r=   test_example2b  s0   z TestAndersonKSamp.test_example2bc                 C   s~  t ddd}t }|jtdd tj||d gdd\}}}W d    n1 s*w   Y  t|dd	 t|d
 t }|jtdd t||d g\}}}W d    n1 s[w   Y  t|dd	 t|d
 t }|jtdd tj||d gdd\}}}W d    n1 sw   Y  t|dd t|d t }|jtdd t||d g\}}}W d    n1 sw   Y  t|dd t|d tj||d gdd\}}}t|dd t	|dddd t||d g\}}}t|dd t	|dddd tj||d gdd\}}}t|dd t	|dddd tj||d gdd\}}}t|d d t	|d!d"dd d S )#Nr   r   zp-value floored)r+  g     @D@FrI  g=
ףpD@r   r  gGzD@zp-value capped      ?g?ܵr         ?g?ܵ      @g!u?gףp=
׳?{Gzt?r   r  rM   rC   gBiq?g鷯?      '@g:M@g46<Rv?gMb@?g      +@g6>W[1@g1ZGUS?-C6?)
r6   linspacer   filterr2  r   rN  r   r
   r	   )r[   r   supr   _rV  r<   r<   r=   test_R_kSamples  sJ   !



z!TestAndersonKSamp.test_R_kSamplesc                 C   s   t ttjtd d S Nr   rb   rc   r   rN  r6   r   rd   r<   r<   r=   test_not_enough_samplesI  r?   z)TestAndersonKSamp.test_not_enough_samplesc                 C   s"   t ttjtdtdf d S r  r  rd   r<   r<   r=   test_no_distinct_observationsL  s   z/TestAndersonKSamp.test_no_distinct_observationsc                 C   s   t ttjtdg f d S r  r  rd   r<   r<   r=   test_empty_sampleP     z#TestAndersonKSamp.test_empty_samplec                 C   sH   g d}t g d}tj||fdd}d}t|| t|j|j d S )NrA  rB  FrI  r   )r6   r  r   rN  r   r
   r  r   )r[   rP  rQ  rk   rj   r<   r<   r=   rm   S  s   
z(TestAndersonKSamp.test_result_attributesN)rn   ro   rp   rW  rX  r   r   xslowr  r  r  r  r  r  rm   r<   r<   r<   r=   r@    s    
& Pr@  c                   @   s   e Zd Zdd Zdd Zdd Zejdg dgfdgg fgd	d
 Z	dd Z
dd Zdd Ze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d Zdd  Zd!S )"
TestAnsaric                 C   sn   g d}g d}t  }|td t||\}}W d    n1 s$w   Y  t|dd t|dd d S )Nr   r   r   r   r   r   r   rC   r   rC   r   r   r   %Ties preclude use of exact statistic.g     7@r  g8#oG?)r   r  r2  r   ansarir   )r[   ri   yr  Wpvalr<   r<   r=   
test_smalla  s   zTestAnsari.test_smallc                 C   sr   t d}t d}t }|td t||\}}W d    n1 s&w   Y  t|dd t|dd d S )Nr  r/  r   c   r  r  m   l   r  r  r  `   r  r  r/  q   t   r  n   r  r/  r  r  r  i   g   r  r  r  r   r  r  r  r  r   r  r  r  r  r  r  g     0g@r  g|:?)r6   r  r   r  r2  r   r  r   )r[   ZramsayZparekhr  r  r  r<   r<   r=   test_approxj  s   

zTestAnsari.test_approxc                 C   s4   t g dg d\}}t|dd t|dd d S )Nr   r   r   r   )rg   r   ru  rG   r   rE   rN   r  g?rF   )r   r  r   )r[   r  r  r<   r<   r=   
test_exactx  s   zTestAnsari.test_exactr:   r   c                 C   sZ   t jttd tj| }t|jtj	 t|j
tj	 W d    d S 1 s&w   Y  d S r   )r   r   r   r   r   r  r
   rX   r6   r   r   )r[   r:   rk   r<   r<   r=   ry   }  r   zTestAnsari.test_bad_argc                 C   s`   g d}g d}t  }|td t||}W d    n1 s"w   Y  d}t|| d S )Nr  r  r  rX   r   )r   r  r2  r   r  r   )r[   ri   r  r  rk   rj   r<   r<   r=   rm     s   z!TestAnsari.test_result_attributesc                 C   sV   g d}g d}d}t t|d tj||dd W d    d S 1 s$w   Y  d S )Nr  r   rC   rF   rG   z!'alternative' must be 'two-sided'r   fooalternative)rb   rc   r   r  )r[   r   r   r   r<   r<   r=   test_bad_alternative  s   "zTestAnsari.test_bad_alternativec           
      C   s   g d}g d}t ||\}}t j||ddj}t j||ddj}|dks(J |dk s.J tj|t|t|}t|| d| d	d
 t||d d	d
 t|d| |d  d	d
 t j||ddj}t j||ddj}	|dk ssJ |	dksyJ d S )N)r   r   r   rg   ru  ry  )r  g      !@      #@g      %@r  g      )@lessr   greaterffffff?皙?r   -q=r  r   )r   r  r   r   apmfr   r	   )
r[   r   r   rX   r  pval_lpval_gZprobZpval_l_reverseZpval_g_reverser<   r<   r=   test_alternative_exact  s   z!TestAnsari.test_alternative_exactzx, y, alternative, expectedr  r  r  g@A?r  r   )r   r   rC   rF   rG   gG$I?g%I$I?r   )rC   rF   rG   c                 C   s$   t j|||dj}t||dd d S )Nr   r	  r  )r   r  r   r	   )r[   ri   r  r  expectedr  r<   r<   r=   test_alternative_exact_with_R  s   z(TestAnsari.test_alternative_exact_with_Rc                 C   s   t jjddddd}t jjddddd}t j||ddj}t j||d	dj}t|d
dd t|ddd t jjddddd}t jjddddd}t ||j}t j||ddj}t j||d	dj}t||d dd t|d|d  dd d S )Nr   r   r   {   r7  r   r  r   r  r(   r	  r  r   rp        ?r   )r   r   r9   r  r   r	   )r[   r   r   r  r  r  r<   r<   r=   test_alternative_approx  s   z"TestAnsari.test_alternative_approxN)rn   ro   rp   r  r  r  r   r   r   ry   rm   r  r  r  r  r<   r<   r<   r=   r  _  s*    	
	
r  c                   @   sR   e Zd Zdd Zdd Zdd Zejjddd	d
ej	ddd Z
dd ZdS )TestBartlettc              
      s\   t ttttttttt	g
} fdd|D }t
j| \}}t| d t| d d S )Nc                       g | ]}  |qS r<   asarrayr~   argxpr<   r=   r         z*TestBartlett.test_data.<locals>.<listcomp>gzU@ /4@gG?)g1g2g3g4g5g6g7g8g9g10r   bartlettr!   r  )r[   r  r:   Tr  r<   r  r=   	test_data  s
   zTestBartlett.test_datac                 C   sJ   d}t jt|d t|dg W d    d S 1 sw   Y  d S )Nz-Must enter at least two input sample vectors.r   r(   )r   r   rc   r   r'  r  )r[   r  r+  r<   r<   r=   test_too_few_args  s   "zTestBartlett.test_too_few_argsc              
      sJ   t ttttttttt	g
} fdd|D }t
j| }d}t|| d d S )Nc                    r  r<   r  r  r  r<   r=   r     r  z7TestBartlett.test_result_attributes.<locals>.<listcomp>r  r  )r  r  r  r   r!  r"  r#  r$  r%  r&  r   r'  r   )r[   r  r:   rk   rj   r<   r  r=   rm     s
   
z#TestBartlett.test_result_attributes	jax.numpyTz8`var` incorrect when `correction > n` (google/jax#21330))Zcpu_onlyreasonskip_xp_backendsc                    s   t ttttttttt	g f} fdd|D }t
 r7tjttd tj| }W d    n1 s1w   Y  n,tj }|td |td |td tj| }W d    n1 s^w   Y    j}t|j| t|j| d S )Nc                    r  r<   r  r  r  r<   r=   r     r  z/TestBartlett.test_empty_arg.<locals>.<listcomp>r   invalid value encounteredz$var\(\): degrees of freedom is <= 0.z!Degrees of freedom <= 0 for slice)r  r  r  r   r!  r"  r#  r$  r%  r&  r    r   r   r   r   r   r'  r6   testingr   r  r   r2  r  r   r"   rX   r   )r[   r  r:   rk   r  NaNr<   r  r=   test_empty_arg  s    zTestBartlett.test_empty_argc                 C   sb   |j g d|jd}|j g d|jd}|j g d|jd}t|||}||jdks/J d S )N)g333333$@gffffff$@g$@g$@dtype)L$@     $@33333$@gfffff$@)g$@r4  r5  r6  r   )r  float32r   r'  r   rX   )r[   r  r
  br  rk   r<   r<   r=   test_negative_pvalue_gh21152  s
   z)TestBartlett.test_negative_pvalue_gh21152N)rn   ro   rp   r)  r*  rm   r   r   r-  usefixturesr1  r9  r<   r<   r<   r=   r    s    
r  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )
TestLevenec              
   C   sB   t ttttttttt	g
}t
j| \}}t|dd t|dd d S )NgYpK?rF   gI{]?)r  r  r  r   r!  r"  r#  r$  r%  r&  r   levener   )r[   r:   r  r  r<   r<   r=   r)    s   zTestLevene.test_datac                 C   sF   t jtttdd\}}t jtttddd\}}t|| t|| d S )Nr]   centertrimmedr   r>  Zproportiontocut)r   r<  r  r  r  r   )r[   W1pval1W2pval2r<   r<   r=   test_trimmed1!  s   

zTestLevene.test_trimmed1c           
      C   s   g d}g d}t jd t j|}tj||ddd\}}tj||ddd\}}tj|dd |dd d	d
\}}	t|| t|| t||	 d S )Ng333333?       @      @      @      @      @      @g      Y@r   rH        @rI  g      @rJ  g      @      i@  r?        ?r@  r   r   r]   r=  )r6   r8  seedpermutationr   r<  r   )
r[   ri   r  r   ZW0Zpval0rA  rB  rC  rD  r<   r<   r=   test_trimmed2*  s   



$

zTestLevene.test_trimmed2c                 C   sn   t ddd}t jd t j|}|d }tj||dd\}}tj||dd\}}t|| t|| d S )	Nr   r   r%  rP  r   r]   r=  median)r6   r  r8  rR  rS  r   r<  r   )r[   ri   r   r  rA  rB  rC  rD  r<   r<   r=   test_equal_mean_median<  s   
z!TestLevene.test_equal_mean_medianc                 C   &   t ddd}tttj||dd d S Nr   r   r%  皙?)Zportiontocut)r6   r  rb   	TypeErrorr   r<  r[   ri   r<   r<   r=   test_bad_keywordF     zTestLevene.test_bad_keywordc                 C   rW  Nr   r   r%  Ztrimr=  )r6   r  rb   rc   r   r<  r[  r<   r<   r=   test_bad_center_valueJ  r]  z TestLevene.test_bad_center_valuec                 C      t ttjdg d S rw   )rb   rc   r   r<  rd   r<   r<   r=   r*  N  s   zTestLevene.test_too_few_argsc              
   C   s4   t ttttttttt	g
}t
j| }d}t|| d S )Nr  )r  r  r  r   r!  r"  r#  r$  r%  r&  r   r<  r   )r[   r:   rk   rj   r<   r<   r=   rm   Q  s   
z!TestLevene.test_result_attributesc                 C   s*   t ddgddgg}tttjt| d S )Nr   r   r   r   )r6   r  rb   rc   r   r<  r  r[  r<   r<   r=   test_1d_inputX  s   zTestLevene.test_1d_inputN)rn   ro   rp   r)  rE  rT  rV  r\  r_  r*  rm   ra  r<   r<   r<   r=   r;    s    	
r;  c                   @   s  e Zd ZdZdd Zdd Zdd Zdd	 Zej	
d
g ddd Zej	
d
g ddd Zej	
dg ddd Zej	
dg ddd Ze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 d0g d1gd2d3 Zd4d5 Zej	
d6d7d8gd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH Zej	jejdIkdJdKdLdM ZdNS )OTestBinomTestzTests for stats.binomtest.c                 C   s   d}t ddd}t|jd|d t ddd}t|jd|d t d	dd}t|jd
|d t ddd}t|jddd d S )N绽|=iΙ i@o@Q?r(   rL   iΙ gX7?i	ϙ g=?iϙ gybw?rP   r   	binomtestr	   r   r[   rM   rk   r<   r<   r=   test_two_sided_pvalues1d  s   z%TestBinomTest.test_two_sided_pvalues1c                 C   s   d}t jdddd}t|jd|d t ddd}t|jd	|d t d
dd}t|jd|d t ddd}t|jd|d t ddd}t|jd|d t ddd}t|jd|d t ddd}t|jd|d d S )Nrc  rD   r%  rd  r   rV  gX-h?rL   r   g㤶y?r  g	y}?rF   g+,?r   r   r  g      ?r   r  g{Gz?g333333?g<,?re  rg  r<   r<   r=   test_two_sided_pvalues2r  s   z%TestBinomTest.test_two_sided_pvalues2c                 C   s   d}t ddd}t|jd|d t ddd	}t|jd|d t d
dd}t|jd|d t ddd}t|jd|d t dd
d}t|jd|d t ddd}t|jd|d d S )Nrc  i  i  r  r   rL   r   r  gAL &W?rH   r  g!YB?rg   rx  gE]t?rF   rC   r  re  rg  r<   r<   r=   test_edge_cases  s   zTestBinomTest.test_edge_casesc                    s,  d dd}t t    d }tj| }t jtj| |kdd}t fdd| t    } | t|tj| k }t	||d	d
 d}t t 
  d }tj| }t jtj| |kdd}t fdd|dt 
  }|d }t	||d	d
 d S )Nr   r  r   r   r   axisc                    s   t j|   S r5   r   binomr  r   ri  r<   r=   <lambda>  rf   z>TestBinomTest.test_binary_srch_for_binom_tst.<locals>.<lambda>rP   rL   rF   c                    s   t j|  S r5   rn  rp  ri  r<   r=   rq       )r6   rh   ceilr   ro  r  sumr   intr	   floor)r[   krl   dy1Zixy2r<   ri  r=   test_binary_srch_for_binom_tst  s(    z,TestBinomTest.test_binary_srch_for_binom_tstz"alternative, pval, ci_low, ci_high))r  g$W?r   g?)r  g}?gGI~?r(   )	two-sidedg}G?g>?6?g4M?c                 C   X   t jddd|d}t|j|dd t|jd |jdd	}t|j|jf||fdd d S )
Nru  r   r  r   rV  r  r	  rL   皙?r  confidence_level	r   rf  r	   r   r
   rX   proportion_cilowhighr[   r  r  ci_lowci_highrk   cir<   r<   r=   test_confidence_intervals1  
   z(TestBinomTest.test_confidence_intervals1))r  ga&+w?r   gny?)r  g5!Rx?g5%?r(   )r|  g~th?gSuR&|?g|KnG?c                 C   r}  )
Nr   r   r  r~  rK   rL   gQ?r1   r  r  r  r<   r<   r=   test_confidence_intervals2  r  z(TestBinomTest.test_confidence_intervals2zalternative, pval, ci_high))r  gլ?g̓A?)r  r(   r(   )r|  gEow?g;Kڞj?c                 C   sN   t jddd|d}t|j|dd |jdd}t|jd	 t|j|dd d S )
Nr   r   r  rV  r  rK   rL   r  r  r   )r   rf  r	   r   r  r
   r  r  )r[   r  r  r  rk   r  r<   r<   r=   !test_confidence_interval_exact_k0  
   z/TestBinomTest.test_confidence_interval_exact_k0zalternative, pval, ci_low))r  r(   r   )r  6>g@>}_?)r|  r  gcڒ ?c                 C   sN   t jddd|d}t|j|dd |jdd}t|jd t|j|dd d S )	Nr   r  r  rK   rL   r  r  r(   )r   rf  r	   r   r  r
   r  r  )r[   r  r  r  rk   r  r<   r<   r=   %test_confidence_interval_exact_k_is_n  r  z3TestBinomTest.test_confidence_interval_exact_k_is_nz+k, alternative, corr, conf, ci_low, ci_high)r   r|  Tr  g`?g?)r   r|  Tr1   grt!?g/?)r   r|  Fr  gVK5?g5dM?)r   r|  Fr1   gXCVu^?g*r[?)r   r  Tr  r   gP-V?)r   r  Tr1   r   g^'?)r   r  Fr  r   gS5a?)r   r  Fr1   r   g?)r   r  Tr  g!Շ`ⰸ?r(   )r   r  Tr1   g$x"?r(   )r   r  Fr  gW~=?r(   )r   r  Fr1   g	L?r(   )r   r|  Tr  r   gX?)r   r|  Fr  r   gN?)r   r  Tr  r   g/<7#9?)r   r  Fr  r   gAA?)r   r  Tr  r   r(   )r   r  Fr  r   r(   )r   r|  Tr  g7?r(   )r   r|  Fr  g؍s?r(   )r   r  Tr  r   r(   )r   r  Fr  r   r(   )r   r  Tr  ghadn?r(   )r   r  Fr  gAB/?r(   c           
      C   sL   t j|dd|d}|rd}nd}|j||d}	t|	j|	jf||fdd d S )	Nr   rY  r~  ZwilsonccZwilson)r  r  rK   rL   )r   rf  r  r	   r  r  )
r[   rw  r  ZcorrZconfr  r  rk   r  r  r<   r<   r=   test_ci_wilson_method  s   z#TestBinomTest.test_ci_wilson_methodc                 C   s*   t ddd}t|jd t|jd d S )Nr   r  r  r(   )r   rf  r
   rX   r   r[   rk   r<   r<   r=   &test_estimate_equals_hypothesized_prop  s   z4TestBinomTest.test_estimate_equals_hypothesized_propzk, n)r   r   )r   r   c                 C   s@   t jtdd t|| W d    d S 1 sw   Y  d S )Nz must be an integer not less thanr   r   r   rc   r   rf  )r[   rw  r   r<   r<   r=   test_invalid_k_n  s
   "zTestBinomTest.test_invalid_k_nc                 C   sB   t jtdd tddd W d    d S 1 sw   Y  d S )Nz+k \(11\) must not be greater than n \(10\).r   r  r   r  r  rd   r<   r<   r=   test_invalid_k_too_big  s
   "z$TestBinomTest.test_invalid_k_too_bigc                 C   sF   t jtdd tddgdd W d    d S 1 sw   Y  d S )Nzk must be an integer.r   r   r  r%  r  )r   r   rZ  r   rf  rd   r<   r<   r=   test_invalid_k_wrong_type$  s
   "z'TestBinomTest.test_invalid_k_wrong_typec                 C   s   d}t jt|d tjdddd W d    n1 sw   Y  d}t jt|d tjdddd W d    d S 1 s>w   Y  d S )	Nzp \(-0.5\) must be in range...r   r            ࿩rV  zp \(1.5\) must be in range...r  r  r[   r+  r<   r<   r=   test_invalid_p_range)  s   "z"TestBinomTest.test_invalid_p_rangec                 C   sT   t jdddd}d}tjt|d |jdd W d    d S 1 s#w   Y  d S )	Nr   r   rY  ri  z/confidence_level \(-1\) must be in the intervalr   r   r  r   rf  r   r   rc   r  )r[   rk   r+  r<   r<   r=   test_invalid_confidence_level1  s
   "z+TestBinomTest.test_invalid_confidence_levelc                 C   sP   t jdddd}tjtdd |jdd W d    d S 1 s!w   Y  d S )	Nr   r   rY  ri  z$method \('plate of shrimp'\) must ber   zplate of shrimpr  r  r  r<   r<   r=   test_invalid_ci_method7  s   "z$TestBinomTest.test_invalid_ci_methodc                 C   sF   t jtdd tjddddd W d    d S 1 sw   Y  d S )Nzalternative \('ekki'\) not...r   r   r   rY  Zekkir~  r  rd   r<   r<   r=   test_invalid_alternative<  s   "z&TestBinomTest.test_invalid_alternativec                 C   s"   t jdddd}t|j|j d S )Nr   r   rY  ri  )r   rf  r
   Zproportion_estimaterX   r  r<   r<   r=   
test_alias@  s   zTestBinomTest.test_aliasl        z32-bit does not overflowr,  c                 C   sH   t jtdd tjddtjjd W d    d S 1 sw   Y  d S )NzError in function...r   r   rC   r  )r   r   OverflowErrorr   rf  sys
float_infominrd   r<   r<   r=   test_boost_overflow_raisesD  s   "z(TestBinomTest.test_boost_overflow_raisesN)rn   ro   rp   __doc__rh  rj  rk  r{  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  skipifr  maxsizer  r<   r<   r<   r=   rb  ]  s~     


	
	


rb  c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestFlignerc                 C   s&   t d}tt||d dd d S )Nr   r   )gnf	@gDq?r  )r6   rh   r   r   fligner)r[   r   r<   r<   r=   r)  M  s
   
zTestFligner.test_datac           	         sv   t jd  fdd}|t}|t}|t}tj|||dd\}}tj|||ddd\}}t|| t|| d S )	Nr  c                    s    t | d t|    S )Nrc  )r6   r  randnr   tolist)gr   r<   r=   _perturbY  s    z+TestFligner.test_trimmed1.<locals>._perturbr]   r=  r?  r   r@  )	r6   r8  r   r  r  r  r   r  r   )	r[   r  Zg1_Zg2_Zg3_Xsq1rB  Xsq2rD  r<   r  r=   rE  T  s   

zTestFligner.test_trimmed1c                 C   sb   g d}g d}t j||ddd\}}t j|dd |dd dd	\}}t|| t|| d S )
NrF  rM  r?  rQ  r@  r   r   r]   r=  )r   r  r   )r[   ri   r  r  rB  r  rD  r<   r<   r=   rT  g  s   

$
zTestFligner.test_trimmed2c                 C   rW  rX  )r6   r  rb   rZ  r   r  r[  r<   r<   r=   r\    r]  zTestFligner.test_bad_keywordc                 C   rW  r^  )r6   r  rb   rc   r   r  r[  r<   r<   r=   r_    r]  z!TestFligner.test_bad_center_valuec                 C   r`  rw   )rb   rc   r   r  rd   r<   r<   r=   test_bad_num_args  s   zTestFligner.test_bad_num_argsc                 C   sl   t d}tjttd  t||d g }t|j	t j
 t|jt j
 W d    d S 1 s/w   Y  d S )Nr   r   r   )r6   rh   r   r   r   r   r   r  r
   rX   r   r   r   r<   r<   r=   r1    s   
"zTestFligner.test_empty_argN)
rn   ro   rp   r)  rE  rT  r\  r_  r  r1  r<   r<   r<   r=   r  K  s    r  c                  c   s    g d} g d}t |D ]S\}}tj|}|d}|jdddd}|jdddd}t||D ]\}}	t|d ||	 D ]}
|| ||
< q>q1|| t|d	\}}||d
g| | R V  qd S )N))g]YCgQɣ?)gme5gϵ5?)g;jgH?)iFeiHcMi%:r   r   r  r   )r  r  r   r   r   r  )		enumerater6   r8  r9  Zintegersziprangeshufflesplit)Zexpected_resultsZseedssirR  r<  ZxyZtie_indZnum_ties_per_indrl   r   jri   r  r<   r<   r=   mood_cases_with_ties  s    

r  c                   @   s   e Zd Zejde dd Zejdg ddd Zdd	 Z	d
d Z
dd Zdd Zdd Zdd Zejdg ddd ZdS )TestMoodz$x,y,alternative,stat_expect,p_expectc                 C   s4   t j|||d\}}t||dd t||dd dS )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;
        r   gؗҜ<r  Nr   moodr	   )r[   ri   r  r  Zstat_expectZp_expectrX   r   r<   r<   r=   test_against_SAS  s   zTestMood.test_against_SASzalternative, expected))r|  )3oXQ?gpL?)r  )r  gԣl?)r  )r  gpL?c                 C   s.   g d}g d}t j|||d}t|| d S )Nr  r  r   r  )r[   r  r  ri   r  rk   r<   r<   r=   test_against_SAS_2  s   	zTestMood.test_against_SAS_2c                 C   s`   t jd t jdd}t jdd}t||\}}t||\}}t||g| |g d S )NrP  r   r   rg   )r6   r8  rR  r  r   r  r   )r[   r   r   Zz1p1Zz2p2r<   r<   r=   test_mood_order_of_args  s   z TestMood.test_mood_order_of_argsc                 C   sN   g d}g d}t |}t |}d|_d|_ttj||d dddg d S )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   )rg   r   rl  g4g^}E	?)r6   r  shaper   r   r  )r[   r   r   r<   r<   r=   test_mood_with_axis_none  s   

z!TestMood.test_mood_with_axis_nonec              
   C   s   d}t jd t jd|}t jd|}t||\}}t|D ]}t|| || gt|d d |f |d d |f  q"| }| }tj||dd\}}t|D ]}t|| || gt||d d f ||d d f  qVd S )Nr   rP  r   rg   r   rl  )	r6   r8  rR  r  r   r  r  r   Z	transpose)r[   nyr   r   	z_vectestpval_vectestr  rl   r<   r<   r=   test_mood_2d  s"   ""zTestMood.test_mood_2dc              	   C   s>  d}t jd t jj| }t jj| }tdD ]}tj|||d\}}ddgddgddgf}t||| d  D ]b}t||| d  D ]U}	|dkr^|d d ||	f }
|d d ||	f }n)|dkru||d d |	f }
||d d |	f }n|||	d d f }
|||	d d f }t|||	f |||	f gt|
| qEq9qd S )N)r   r   rC   rP  r   rl  r   r   r   )r6   r8  rR  r  r  r   r  r   )r[   r  r   r   rm  r  r  Zaxes_idxrl   r  Zslice1Zslice2r<   r<   r=   test_mood_3d  s2   

zTestMood.test_mood_3dc                 C   s^   t jttd tdgg }t|jtj	 t|j
tj	 W d    d S 1 s(w   Y  d S )Nr   r   )r   r   r   r   r   r  r
   rX   r6   r   r   r  r<   r<   r=   test_mood_bad_arg9  s
   "zTestMood.test_mood_bad_argc           	      C   s   t jd tjjddd}tjjddd}tj||dd\}}tj||dd\}}tj||d	d\}}||  kr?|ksBJ  J t|dd
d t||d  t|d|d   tj	t
dd tj||dd W d    d S 1 stw   Y  d S )Nr         ?r   )r   r   g      ?r|  r   r  r  Hz>r  r   r   z`alternative` must be...r   z	ekki-ekki)r6   r8  rR  r   r   r9   r  r	   r   r   rc   )	r[   ri   r  Zstat1r  Zstat2r  Zstat3Zp3r<   r<   r=   test_mood_alternative@  s   "zTestMood.test_mood_alternativer  )r|  r  r  c                 C   sF   t jd}|d}|d}tj|||d}t|j|jf| d S )Nl	   hTt fU6H~ )r   r   )rg   r   r   )	r6   r8  r9  r   r   r  r
   rX   r   )r[   r  r<  r   r   rk   r<   r<   r=   test_resultR  s
   

zTestMood.test_resultN)rn   ro   rp   r   r   r   r  r  r  r  r  r  r  r  r  r  r<   r<   r<   r=   r    s"    
 
	
r  c                   @   sV   e Zd Zdd Zdd Zdd Zejje	 ddd	d
 Z
dd Zdd Zdd ZdS )TestProbplotc                 C   sl   t jjddd}t j|dd\}}g d}t|t| t|| t j|dd\}}g d}t|| d S )	Nru  90  r7  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   r9   probplotr	   r6   sort)r[   ri   osmosrZosm_expectedrk   Zres_fitZres_fit_expectedr<   r<   r=   r`   ^  s   
zTestProbplot.test_basicc           
      C   s   t jjddd}t j|d dd\}}t j|ddd\}}t j|ddd\}}t|| t|| t|| t|| t j|ddd\}}	d S )Nr   i@ r7  Fsparamsr   r   r<   )r   r   r9   r  r	   )
r[   ri   osm1osr1osm2osr2Zosm3Zosr3r  r  r<   r<   r=   test_sparams_keywordm  s   



z!TestProbplot.test_sparams_keywordc                 C   s   t jjddd}t j|dddd\}}t j|dt jdd\}}t|| t|| ttt j|dd	 ttt j|g d	 G d
d d}t j|ddd\}}t j|| dd\}}t|| t|| d S )Nru  r  r7  Ft)r   )r   r   r  zwrong-dist-namer   c                   @   s   e Zd ZdZdd ZdS )z3TestProbplot.test_dist_keyword.<locals>.custom_distz6Some class that looks just enough like a distribution.c                 S   s   t jj|ddS )Nr   )r   )r   r   ppf)r[   qr<   r<   r=   r    rr  z7TestProbplot.test_dist_keyword.<locals>.custom_dist.ppfN)rn   ro   rp   r  r  r<   r<   r<   r=   custom_dist  s    r  )r   r  )r   r   )	r   r   r9   r  r  r	   rb   rc   AttributeError)r[   ri   r  r  r  r  r  r<   r<   r=   test_dist_keyword{  s   


zTestProbplot.test_dist_keywordno matplotlibr  c           
      C   s  t  }|d tjjdddd}tj|t d\}}t   tj|d d\}}tj|dt d}t   tj|dd d}tt	|t	|  koXt	|  koXt	|  koXd	kn   t
|| t
|| t
|| t
|| t  }|d}	tj|d|	d t   d S )
Nr  r   r   t r7  plotF)r   r  r   )pltfigureadd_subplotr   r  r9   r  closer   r   r	   )
r[   figri   res1Zfitres1res2Zfitres2res3res4axr<   r<   r=   test_plot_kwarg  s$   
@




zTestProbplot.test_plot_kwargc                 C   r   r   )rb   rc   r   r  rd   r<   r<   r=   test_probplot_bad_args     z#TestProbplot.test_probplot_bad_argsc                 C   sZ   t tjg ddtg tg f t tjg ddtg tg ftjtjdff d S )NFr  Tr   )r
   r   r  r6   r  r   rd   r<   r<   r=   
test_empty  s   zTestProbplot.test_emptyc                 C   sj   t jdd% ttjdgddt dgt dgft jt jdff W d    d S 1 s.w   Y  d S )Nr   invalidr   Tr  r   )r6   r   r
   r   r  r  r   rd   r<   r<   r=   test_array_of_size_one  s   "z#TestProbplot.test_array_of_size_oneN)rn   ro   rp   r`   r  r  r   r   r  have_matplotlibr  r  r  r  r<   r<   r<   r=   r  \  s    
r  c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zejdg dg dg dgdd Zdd  Zejjd!d" Zejd#g d$d%d& Zd'd( Zejd)d*d+gd,d- Zejd)d*e fd.d/ Zd0S )1TestWilcoxonc                 C   sR   t ttjddgddgd t ttjddgddgdd t ttjdgd dd d S )Nr   r   dummyr   r   Zxyzr  )rb   rc   r   wilcoxonrd   r<   r<   r=   test_wilcoxon_bad_arg  s
   z"TestWilcoxon.test_wilcoxon_bad_argc                 C   s   t d}t jdd2 tj||ddd\}}t||fdt jf tj||ddd\}}t||fdt jf W d    n1 s@w   Y  ttj||d	ddd
 d S )Nru  r   r  wilcox
asymptoticr  r   prattzsplit)g     @Z@r(   )r6   rh   r   r   r   r
   r   )r[   ri   r   rV  r<   r<   r=   test_zero_diff  s   
zTestWilcoxon.test_zero_diffc                 C   s2   g d}g d}t j||dddd}t|d d S )Nr  )r   r   r   r   r  r  F)zero_methodr  
correction)r   g|N?)r   r   r	   )r[   ri   r  rk   r<   r<   r=   
test_pratt  s   zTestWilcoxon.test_prattc                 C   s<   g d}t j|ddd}t j|ddd}t j|ddd}d S )N)r   r   r   r   r   r   r   r   r   r   r   r  r  )r  r  r  r  )r   r   )r[   Zarrr  r<   r<   r=   test_wilcoxon_arg_type  s   z#TestWilcoxon.test_wilcoxon_arg_typec                 C   s8  g d}t dd}tdd t||D }t|j}tj||dddd	\}}t|d
 t|d tj||dddd	\}}t|d t|d tj||dddd	\}}t|d t|d t	g d}t	g d}tj||ddd\}}t
|d t|ddd tj||ddd\}}t
|d t|ddd d S )N)	r   r   r  rg   rG   r   r   r   r   r   c                 S   s   g | ]	\}}|g| qS r<   r<   )r~   ur   r<   r<   r=   r     s    z7TestWilcoxon.test_accuracy_wilcoxon.<locals>.<listcomp>r  r  Fr  r  i  g.i?r  i  gFYv]Uj?r  iG  g%^ Ez?r  r  r]  r        y   r     r     p         w   r  r     r  r  s   r  r     r  r  rh  g^҂<?rK   rL   Tg:b+?)r  r6   Zconcatenater  zerosr   r   r   r	   r  r
   )r[   freqZnumsri   r  r(  rV  r<   r<   r=   test_accuracy_wilcoxon  s6   











z#TestWilcoxon.test_accuracy_wilcoxonc                 C   s   t g d}t g d}tj||ddd}tj||ddd}tj||ddd}tj||ddd}||  krB|  krB|ksEJ  J d S )N)r   r   r|  rF      r_  r  r   rG   r  rD   r  )r   r   r   r|  r   r   rE   rj  r  rE      r(  r  Zapproxr  r  )mode)r6   r  r   r   )r[   ri   r  r  r  r  r  r<   r<   r=   test_approx_mode  s   *zTestWilcoxon.test_approx_modec                 C   s@   t g d}t g d}tj||ddd}d}t|| d S )Nr  r  Fr  r  r  )r6   r  r   r   r   )r[   ri   r  rk   rj   r<   r<   r=   test_wilcoxon_result_attributes  s
   z,TestWilcoxon.test_wilcoxon_result_attributesc                 C   s   t jd}|d|d}}tj||dd}tj|jd }t|j	| tj||dd}t
|dr7J t||}t
|drDJ d S )Nl   	m$S rg   r  r  r   exact
zstatistic)r6   r8  r9  r   r   r   r  r   r	   r&  hasattr)r[   r<  ri   r  rk   r   r<   r<   r=   test_wilcoxon_has_zstatistic  s   z)TestWilcoxon.test_wilcoxon_has_zstatisticc                 C   sp   t jdgd ddd\}}d}t|d t||dd	 t jdgd d
dd\}}d}t|d t||dd	 d S )NrY  r   r  Fr  g4IťY?r   rK   rL   Tr  gc2_?)r   r   r
   r	   )r[   statrV  Z
expected_pr<   r<   r=   test_wilcoxon_tie"  s   	



zTestWilcoxon.test_wilcoxon_tiec                 C   s   g d}g d}t j||dddd\}}t|d t|dd	d
 t j||dddd\}}t|d t|dd	d
 t j||dddd\}}t|d t|dd	d
 t j||dddd\}}t|d t|dd	d
 d S )N)
}   r  r~     r,  r  r,  r+  r,  r  )
r  z   r+  r  r,  |   r     r     r  r  F)r  r  r  r(  g13}?rC   rS   T)r  r  r  g7a%?r  g?gڏoJT?)r   r   r
   r   )r[   ri   r  r   rV  r<   r<   r=   test_onesided7  s,   	









zTestWilcoxon.test_onesidedc                 C   sZ   t ddD ]%}t|}t|}t||d  d d t| tt|d t|| qd S )Nr   r  r   )r  r   r   r
   r   rt  r   )r[   r   Zpmf1Zpmf2r<   r<   r=   test_exact_basicW  s   zTestWilcoxon.test_exact_basicc                 C   s  t g d}t g d}tj||ddd\}}t|ddd tj||d	dd\}}t|d
dd tj||ddd\}}t|ddd t ddd }t ddd}tj||ddd\}}t|ddd tj||d	dd\}}t|ddd tj||ddd\}}t|ddd d S )N)
g(\?g=
ףp=?g(\?gQ޿gQ?g{Gz?gp=
ףgq=
ףp?g      gQ?)
r   g?gɿg333333?皙gܿgzGgQοg(\gRQr|  r%  r  r  g֔  ?rC   rS   r  gYJ?r  g*  ?r   ru  r  r   g(?g(?gS?)r6   r  r   r   r   rh   )r[   ri   r  r  rV  r<   r<   r=   test_exact_pval_  s    zTestWilcoxon.test_exact_pvalri   )r   r   r   )r   r   r  r  r   )r   r   r   r  r  irF   rG   c                 C   s@   t |\}}t|}||dk  }t|| t|d d S Nr   r   )r   r   r6   r  rt  r
   )r[   ri   r   rV  Zwtruer<   r<   r=   test_exact_p_1{  s
   

zTestWilcoxon.test_exact_p_1c                 C   s  t ddd }t ddd}tt||tj||dd t }t dd}t|\}}t||ftj||d t d	d
}t|\}}t||ftj|dd d||dk< t|\}}t||ftj|dd t dd}tt|tj|dd d S )Nr   r   r  r   r%  r  r   r   r  rD   r  r   r  )r6   rh   r
   r   r   r  )r[   ri   r  pmrx  r   rV  r<   r<   r=   	test_auto  s"   zTestWilcoxon.test_autoc                 C   sL   t dd}t|}d}t|| d||dk< t|}d}t|| d S )Nr  rG   )g     ;@g     P?r   r   )r  g     0?)r6   rh   r   r   r
   )r[   rx  rk   r   r<   r<   r=   test_auto_permutation_edge_case  s   


z,TestWilcoxon.test_auto_permutation_edge_caser   )r   r   r   c                 C   s   t jd}|j|d}tj|t d}tj|dd}t|j|j t|j|j |j|d d}t jd}tjd|d}tj||d}t jd}tjd|d	}tj||d}tt 	|jd
|j t|j|j d S )Nl   aQG1X@
r   r  r%  r   l   VsWFr  r  )r  r   r   )
r6   r8  r9  r   r   r  r
   rX   r   round)r[   r   r<  ri   rk   r   r8  r<   r<   r=   test_permutation_method  s   z$TestWilcoxon.test_permutation_methodc                 C   sd   t jd}|jdd}t j|d< t|}tj|dd}t|| t|ds)J t|dr0J d S )Nl   HF )Z )r  r   r   )r   r   r  r  r&  )	r6   r8  r9  normalr   r   r   r	   r'  )r[   r<  r   rk   r   r<   r<   r=   6test_method_auto_nan_propagate_ND_length_gt_50_gh20591  s   


zCTestWilcoxon.test_method_auto_nan_propagate_ND_length_gt_50_gh20591r  r%  r  c                 C   s   g d}g d}t j||d|d}t j||d|d}t|t|d  d }t|j|jks0J t||j |jdd	 t|j|jdd	 d S )
N)
rl  r  r0  r  r  rl  r  rl  r  r'  )
r  r  E   r0  r-  r  r  r  rl  ra  r  r4  r  r   r   V瞯<rL   )r   r   r   ru  rX   r	   r   )r[   r  Zvar1Zvar2r   rk   Zmax_statisticr<   r<   r=   test_symmetry_gh19872_gh20752  s   z*TestWilcoxon.test_symmetry_gh19872_gh20752c                 C   s&   t jtd|d}t|ddg d S )Nr   r  r   r   )r   r   r6   r  r	   )r[   r  rk   r<   r<   r=   test_all_zeros_exact  s   z!TestWilcoxon.test_all_zeros_exactN)rn   ro   rp   r  r  r	  r
  r  r#  r$  r(  r*  r1  r2  r5  r   r   r   r7  r9  r  r:  r<  r>  rA  r   r  rB  r<   r<   r<   r=   r    s8    		  



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=
.@rC  g{G0@gQ3@gq=
ף"@g\(\'@gR*@g33333.@g\(3@c                   @   sX   e Zd Zdd Zdd Zdd Zejddd	gd
d Z	ejdg ddd Z
dS )	TestKstatc                    s   t jd |jt jd|jd | fdddD }|jg d jd}t||dd	 tj	 d
d}tj	 dd}tj	 dd}t||||f|d d ddd d S )Ni}  r  r2  c                    s   g | ]}t  |qS r<   )r   kstat)r~   r   r\   r<   r=   r     s    z>TestKstat.test_moments_normal_distribution.<locals>.<listcomp>r  )gHQ,?glZ)rI?g88}?gcJN?r  rL   r   )orderr   r   r   g{Gz?{Gz?r  )
r6   r8  rR  r  r  float64r3  r!   r   Zmoment)r[   r  Zmomentsr  m1m2Zm3r<   rF  r=    test_moments_normal_distribution  s   
(z*TestKstat.test_moments_normal_distributionc                 C   s   t |r$tjttd t|g }W d    n1 sw   Y  ntj	dd t|g }W d    n1 s=w   Y  t
|||j d S Nr   r   r  )r    r   r   r   r   r   rE  r  r6   r   r"   r   )r[   r  rk   r<   r<   r=   re     s   zTestKstat.test_empty_inputc                 C   @   | d}||dk||j|}tt|||j d S NrN   rC   rh   wherer  r   r"   r   rE  r[   r  r\   r<   r<   r=   r        
zTestKstat.test_nan_inputr   r   g/$@c                 C   sP   | d}d}tjt|d tj||d W d    d S 1 s!w   Y  d S )Nr   z'k-statistics only supported for 1<=n<=4r   r   )rh   r   r   rc   r   rE  )r[   r   r  r\   r+  r<   r<   r=   test_kstat_bad_arg  s
   
"zTestKstat.test_kstat_bad_argcase))r   gM~,@)r   2.L)@)r   gP'')r    -"bac                 C   s.   |\}}t |t|}t||| d S r5   )r   rE  r  x_kstatr!   )r[   rV  r  r   r   rk   r<   r<   r=   test_against_R  s   zTestKstat.test_against_RN)rn   ro   rp   rL  re   r   r   r   r   rU  rZ  r<   r<   r<   r=   rD    s    	
rD  c                   @   sD   e Zd Zdd Zdd Zedddejdd	d
 Z	dd Z
dS )TestKstatVarc                 C   s   | g }t|r&tjttd t|}W d    n1 s w   Y  ntj	dd t|}W d    n1 s<w   Y  t
|| |j d S rM  )r  r    r   r   r   r   r   kstatvarr6   r   r"   r   )r[   r  ri   rk   r<   r<   r=   re   0  s   
zTestKstatVar.test_empty_inputc                 C   rN  rO  rP  rR  r<   r<   r=   r   :  rS  zTestKstatVar.test_nan_inputTz2input validation of `n` does not depend on backendZnp_onlyr,  r-  c                 C   sP   dg}d}d}t jt|d tj||d W d    d S 1 s!w   Y  d S )Nr   r   zOnly n=1 or n=2 supported.r   rT  )r   r   rc   r   r\  )r[   r\   r   r+  r<   r<   r=   ry   @  s   "zTestKstatVar.test_bad_argc                 C   s   t t}d}d}t|td}|| }t||| t|td}d|d  | |d |  ||d   }t||| d S )NrW  rX  r   r   )r   rY  r   r\  r  r!   )r[   r  r   Zk2Zk4rk   r   r<   r<   r=   test_against_R_mathworldK  s   (z%TestKstatVar.test_against_R_mathworldN)rn   ro   rp   re   r   r-  r   r   r:  ry   r^  r<   r<   r<   r=   r[  .  s    

r[  c                   @   sN   e Zd Zdd Zdd Zdd Zejje	 ddd	d
 Z
dd Zdd ZdS )TestPpccPlotc                 C      t ddddd | _d S Nr     r  r7  r>   ri   rd   r<   r<   r=   setup_method_  r?   zTestPpccPlot.setup_methodc                 C   H   d}t j| jdd|d\}}g d}t|tjdd|d t|| d S )Nr   r   N)g9%	?gxM _?g";9?g®XZ?g?num)r   	ppcc_plotri   r	   r6   r  )r[   rh  svalsppccppcc_expectedr<   r<   r=   r`   b  
   zTestPpccPlot.test_basicc                 C   s   t j| jdddd\}}t j| jddt jd\}}t||dd t||dd t | jdd\}}t||dd t||dd d S )Nrf  r   tukeylambdar   g#B;rL   )r   rk  ri   rp  r	   )r[   Zsvals1Zppcc1Zsvals2Zppcc2Zsvals3Zppcc3r<   r<   r=   	test_distj  s   
zTestPpccPlot.test_distr  r  c                 C   Z   t  }|d}tj| jddt d || |d}tj| jdd|d t   d S Nr  iru  r  )r  r  r  r   rk  ri   delaxesr  r[   r  r  r<   r<   r=   r  v     


zTestPpccPlot.test_plot_kwargc                 C   s2   t ttj| jdd t ttjg ddddd d S )Nr   r   r   r   r   )rb   rc   r   rk  ri   rd   r<   r<   r=   test_invalid_inputs  s   
z TestPpccPlot.test_invalid_inputsc                 C   s@   t g dd\}}t|tjdddd t|tjdtd d S )Nr   r   r  ri  r2  )r   rk  r	   r6   r  r  float)r[   rl  rm  r<   r<   r=   r    s   zTestPpccPlot.test_emptyN)rn   ro   rp   rd  r`   rq  r   r   r  r  r  rw  r  r<   r<   r<   r=   r_  ^  s    
r_  c                   @   rq   )
TestPpccMaxc                 C   s   dg}t ttj|dd d S r   )rb   rc   r   ppcc_maxrx   r<   r<   r=   test_ppcc_max_bad_arg  s   z!TestPpccMax.test_ppcc_max_bad_argc                 C   s2   t jjddddddd }tt |dd	d
 d S )Nffffffr   r  '   r        @{rF   rS   )r   rp  r9   r   rz  r[  r<   r<   r=   test_ppcc_max_basic  s   zTestPpccMax.test_ppcc_max_basicc                 C   sp   t jjddddddd }t j|dd	}t j|t jd	}t|d
dd t|d
dd t |}t|d
dd d S )Nr|  r   r  r}  r~  r   r  rp  r   r  r   rS   )r   rp  r9   rz  r   )r[   ri   Zmax1Zmax2Zmax3r<   r<   r=   rq    s   
zTestPpccMax.test_distc                 C   s`   t jjddddddd }ttt j|dd	 tt j|d
d	ddd tt j|dd	ddd d S )Nr|  r   r  r}  r~  r   r  )r   r(   r  brack)r   r   r  rF   rS   r   r   )r   rp  r9   rb   rc   rz  r   r[  r<   r<   r=   
test_brack  s   
zTestPpccMax.test_brackN)rn   ro   rp   r{  r  rq  r  r<   r<   r<   r=   ry    s
    ry  r+  z)JAX arrays do not support item assignmentr  r-  c                   @   sZ   e Zd Zejdddgdd Zedddd	d
 Zdd Z	dd Z
dd Zdd ZdS )TestBoxcox_llfr3  r7  rI  c                 C   sr   t ||}tjjdddd}d}t||j||d}|j d tt	|
 d  }t||j||d d S )	Nr}  r   1  r   r   r   r   r2  rG  r   )r:  r   r   r9   
boxcox_llfr  r   r6   r7   rt  r_   r!   )r[   r3  r  dtri   lmbdallfZllf_expectedr<   r<   r=   r`     s   
$zTestBoxcox_llf.test_basicTz,array-likes only accepted for NumPy backend.r]  c                 C   sD   t jjdddd}d}t ||}t |t|}t||dd d S Nr   r   r  r  r   r	  rL   )r   r   r9   r  listr!   r[   r  ri   r  r  llf2r<   r<   r=   test_array_like  s
   zTestBoxcox_llf.test_array_likec                 C   s\   t jjdddd}d}t ||}t |t||gj}t|||g||dd d S r  )	r   r   r9   r  r6   vstackr(  r!   r  r  r<   r<   r=   test_2d_input  s
   "zTestBoxcox_llf.test_2d_inputc              
   C   s&   | |td|g sJ d S rw   )isnanr  r   r  )r[   r  r<   r<   r=   r    s   &zTestBoxcox_llf.test_emptyc                 C   s.   | g d}td|}t|| d d S )N)g     h@      m@r  g     x@ig#:x1)r  r   r  r!   r[   r  r\   r  r<   r<   r=   test_gh_6873  s   zTestBoxcox_llf.test_gh_6873c                 C   s4   | g d}td|}t||j d|jd d S )N)i  i  i  i  i  :0yE>gl.r2  )r  r   r  r!   rI  r  r<   r<   r=   test_instability_gh20021  s   z'TestBoxcox_llf.test_instability_gh20021N)rn   ro   rp   r   r   r   r`   r-  r  r  r  r  r  r<   r<   r<   r=   r    s    


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                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dg ddd Zdd Ze	j
dg ddd Zdd Ze	j
deg deejddggdd Ze	j
deg d eg d!eg d"gd#d$ Zd%S )&
TestBoxcoxc                 C   s   t ddddd }tj|dd}t||d  tj|dd}t|dd|   tj|dd}t|t| tjt|dd}t|t| ttd	d
}t|t	d	 d S )Nr   r   r  r7  r   r  r   r   r   r   )
r>   r   r   r	   r6   r7   r  r   r
   r  )r[   ri   xtr<   r<   r=   test_fixed_lmbda$  s   zTestBoxcox.test_fixed_lmbdac                 C   sL   d}t jjdddd}|| d |  }t |\}}t|d| dd	 d S )
Ng      @r   iP  i  )r   r   r   r   r   r   rS   )r   r   r9   r   r   )r[   r  ri   x_invr  r   r<   r<   r=   test_lmbda_None6  s
   zTestBoxcox.test_lmbda_Nonec                 C   s   t jd}tdd|dd }tj|dd\}}}t|ddg tj|d	d\}}}t|d
dg tdd|dd }tj|dd\}}}t|ddg tj|dd\}}}t|ddg d S )NrP  r   r   r7  r  )alphagx@gv[%@r  gxˉEk?g8Bhk @rF   rb  rg   r  g\?gx̡&@r+   g7(U@gp:sY@)r6   r8  r   r>   r   r   r	   )r[   r<  ri   r  ru   r<   r<   r=   
test_alpha@  s   zTestBoxcox.test_alphac                 C   sR   t ddg}tttj| tttjt dg tttjt dgdgg d S )Nr   r   r   )r6   r  rb   rc   r   r   r[  r<   r<   r=   test_boxcox_bad_argQ  s    zTestBoxcox.test_boxcox_bad_argc                 C      t tg jdk d S N)r   )r   r   r   r  rd   r<   r<   r=   r  Z  r?   zTestBoxcox.test_emptyc                 C   s    t t\}}t|ddd d S )NgsHjdrr   rL   r   r   _boxcox_datar	   )r[   r  Zlamr<   r<   r=   r  ]  s   zTestBoxcox.test_gh_6873bounds)r   r   )r   r   )r   r3  c                    sH    fdd}t jtd |d\}} d |  k r d k s"J  J d S )Nc                       t j|  ddS Nbounded)r  r  r   minimize_scalarfunr  r<   r=   	optimizerh     zBTestBoxcox.test_bounded_optimizer_within_bounds.<locals>.optimizerr  r  r   r   )r   r   r  )r[   r  r  r  r  r<   r  r=   $test_bounded_optimizer_within_boundse  s   (z/TestBoxcox.test_bounded_optimizer_within_boundsc                    sj   t jtd d\}}|d |d f ddi fdd}t jtd |d\}}||ks,J t| d	  d S )
Nr  rY  r   Zxatolr	  c                    s   t j|  ddS )Nr  )r  r  optionsr  r  r  r  r<   r=   r  z  s   zPTestBoxcox.test_bounded_optimizer_against_unbounded_optimizer.<locals>.optimizerr  r   r  )r[   r  r  r  Zlmbda_boundedr<   r  r=   2test_bounded_optimizer_against_unbounded_optimizero  s   
z=TestBoxcox.test_bounded_optimizer_against_unbounded_optimizerr  )strr   r   rY  c                 C   sD   t jtdd tjtd |d W d    d S 1 sw   Y  d S )Nz`optimizer` must be a callabler   r  r   r   rc   r   r   r  r[   r  r<   r<   r=   $test_bad_optimizer_type_raises_error  s   "z/TestBoxcox.test_bad_optimizer_type_raises_errorc                 C   sP   dd }d}t jt|d tjtd |d W d    d S 1 s!w   Y  d S )Nc                 S   s   dS rw   r<   r  r<   r<   r=   r    s   zCTestBoxcox.test_bad_optimizer_value_raises_error.<locals>.optimizerz/return an object containing the optimal `lmbda`r   r  r  )r[   r  r+  r<   r<   r=   %test_bad_optimizer_value_raises_error  s
   "z0TestBoxcox.test_bad_optimizer_value_raises_errorbad_x)r   ig@r  r   c                 C   sB   d}t jt|d t| W d   dS 1 sw   Y  dS )zHTest boxcox_normmax raises ValueError if x contains non-positive values.z#only positive, finite, real numbersr   N)r   r   rc   r   boxcox_normmax)r[   r  r+  r<   r<   r=   "test_negative_x_value_raises_error  s   "z-TestBoxcox.test_negative_x_value_raises_errorri   
     L@     x@     4@     @@     d@r  g     @g     <@g     \@g     @r  r  r  r  r  gFq$jgS	#jgGewa$jgVBi$jg[(>2$jc                 C   sV   t jtdd t|\}}tt|sJ W d    d S 1 s$w   Y  d S )NThe optimal lambda isr   )r   r   r2  r   r   r6   r   isfinite)r[   ri   Zxt_bcZlam_bcr<   r<   r=   test_overflow  s   
"zTestBoxcox.test_overflowN)rn   ro   rp   r  r  r  r  r  r  r   r   r   r  r  r  r  r6   r  r   r  r  r<   r<   r<   r=   r  "  s.    
	
	
 
	r  c                
   @   sL  e Zd Zdd Zdd Zdd Zdd Zej	d	g d
ej	dg ddd Z
ejjdd Zdd Zej	dg dg dfdd Zdd Zej	dejg dejdejg dejdejg dejdejg dejdgej	dg dej	d	dgd d! Zej	dg dg dgej	d	dgd"d# Zd$S )%TestBoxcoxNormmaxc                 C   r`  Nr   r   r  r7  rc  rd   r<   r<   r=   rd    r?   zTestBoxcoxNormmax.setup_methodc                 C      t | j}t|ddd d S )Nm?rK   rL   r   r  ri   r	   r[   r   r<   r<   r=   test_pearsonr     zTestBoxcoxNormmax.test_pearsonrc                 C   s<   t j| jdd}t|ddd t | j\}}t|| d S )Nmler  	.!?rK   rL   )r   r  ri   r	   r   )r[   r   r  Zmaxlog_boxcoxr<   r<   r=   test_mle  s   zTestBoxcoxNormmax.test_mlec                 C   s&   t j| jdd}t|ddgdd d S )Nr   r  r  r  rK   rL   r  )r[   Z
maxlog_allr<   r<   r=   test_all  s   zTestBoxcoxNormmax.test_allr  )r  Zpearsonrr   r  r  c                    sN    fdd}t j| j||d}t d |k sJ t| d k s%J d S )Nc                    r  r  r  r  r  r<   r=   r    r  zITestBoxcoxNormmax.test_bounded_optimizer_within_bounds.<locals>.optimizer)r  r  r   r   )r   r  ri   r6   r   )r[   r  r  r  r   r<   r  r=   r    s   
z6TestBoxcoxNormmax.test_bounded_optimizer_within_boundsc                    sv   t | j}t|d}t|d |d dG dd d  fdd}t j| j|d}||ks3J t||d	 d S )
Nr   rH  i  c                   @   s   e Zd ZdS )z?TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.MyResultN)rn   ro   rp   r<   r<   r<   r=   MyResult  s    r  c                    s6   g }D ]	}| | | q  }t| |_|S r5   )appendr6   Zargminri   )r  Zobjsr  rk   r  Zlmbda_ranger<   r=   r    s   z@TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.optimizerr  r   )r   r  ri   r6   r;  r  r	   )r[   r  Zlmbda_roundedr  Zlmbda2r<   r  r=   test_user_defined_optimizer  s   	z-TestBoxcoxNormmax.test_user_defined_optimizerc                 C   s^   t j}tj| jd |d tjtdd tj| jd|d W d    d S 1 s(w   Y  d S )N)r  r  z,`brack` must be None if `optimizer` is givenr   )g       rG  )r   r  r   r  ri   r   r   rc   r  r<   r<   r=   2test_user_defined_optimizer_and_brack_raises_error  s   
"zDTestBoxcoxNormmax.test_user_defined_optimizer_and_brack_raises_errorri   r  )gx	 ?gN~jh ?g{ ?gXkI ?g}9" ?c                 C   s   d}t jt|d tj|dd}W d    n1 sw   Y  tt||	 s-J t
tjjd }|dkr?t|nt|}t||}t||t|  d S )NzThe optimal lambda is...r   r  r  r}  r   )r   r   r2  r   r  r6   r  r   r   r   finforI  maxr  r	   sign)r[   ri   r+  r  ymaxx_tremeZ	y_extremer<   r<   r=   r    s   zTestBoxcoxNormmax.test_overflowc                 C   sD   t jtdd tj| jdd W d    d S 1 sw   Y  d S )Nz `ymax` must be strictly positiver   r   )r  )r   r   rc   r   r  ri   rd   r<   r<   r=   test_negative_ymax	  s   "z$TestBoxcoxNormmax.test_negative_ymaxr2  )g	i@g     `h@gfffffh@rO  gi@)gKH9KH9r  r  r  r  r  )g    _Bgꌠ9Y>)FNr  c                 C   s   t jtddF |d urd|ini }tj|fd|i|}t|t|g}ttt	||}|d u r>t
|jjd }t||dd W d    d S 1 sPw   Y  d S )Nr  r   r  r  r}  r   rL   )r   r   r2  r   r  r6   r  r  absr   r  r3  r	   )r[   ri   r  r  kwargZlmbr  Zymax_resr<   r<   r=   'test_user_defined_ymax_input_float64_32	  s   "z9TestBoxcoxNormmax.test_user_defined_ymax_input_float64_32c                 C   s   t j|t jd}t j|t jd}tjtdd tj||d W d    n1 s)w   Y  tj||d tj|t j	|d}tj|t j	|d}t
||dd d S )Nr2  r  r   r  )r  r  rH  rL   )r6   r  r7  rI  r   r   r2  r   r  r>  r	   )r[   ri   r  Zx_32Zx_64Zlmb_32Zlmb_64r<   r<   r=   test_user_defined_ymax_inf%	  s   	z,TestBoxcoxNormmax.test_user_defined_ymax_infN)rn   ro   rp   rd  r  r  r  r   r   r   r  Zslowr  r  r  r  r6   r  rI  r7  r  r  r<   r<   r<   r=   r    sR    





r  c                   @   sF   e Zd Zdd Zdd Zejje dddd Z	d	d
 Z
dd ZdS )TestBoxcoxNormplotc                 C   r`  ra  rc  rd   r<   r<   r=   rd  =	  r?   zTestBoxcoxNormplot.setup_methodc                 C   re  )Nr   rf  r   rg  )g!X4}?g΁i?g-	15?gW$?g\ܱ{?ri  )r   boxcox_normplotri   r	   r6   r  )r[   rh  Zlmbdasrm  rn  r<   r<   r=   r`   @	  ro  zTestBoxcoxNormplot.test_basicr  r  c                 C   rr  rs  )r  r  r  r   r  ri   rt  r  ru  r<   r<   r=   r  H	  rv  z"TestBoxcoxNormplot.test_plot_kwargc                 C   s.   t ttj| jdd t ttjddgdd d S )Nr   r   r   )rb   rc   r   r  ri   rd   r<   r<   r=   rw  U	  s   z&TestBoxcoxNormplot.test_invalid_inputsc                 C   s   t tg ddjdk d S r6  )r   r   r  r   rd   r<   r<   r=   r  [	  r  zTestBoxcoxNormplot.test_emptyN)rn   ro   rp   rd  r`   r   r   r  r  r  rw  r  r<   r<   r<   r=   r  <	  s    
r  c                   @   r@   )TestYeojohnson_llfc                 C   sD   t jjdddd}d}t ||}t |t|}t||dd d S )Nr   r   r  r  r   r	  rL   )r   r   r9   yeojohnson_llfr  r	   r[   ri   r  r  r  r<   r<   r=   r  a	  s
   z"TestYeojohnson_llf.test_array_likec                 C   sP   t jjdddd}d}t ||}t |t||gj}t||g|dd d S r  )r   r   r9   r  r6   r  r(  r	   r  r<   r<   r=   r  h	  s
   z TestYeojohnson_llf.test_2d_inputc                 C   s   t ttdg  d S rw   )r   r6   r  r   r  rd   r<   r<   r=   r  o	  s   zTestYeojohnson_llf.test_emptyN)rn   ro   rp   r  r  r  r<   r<   r<   r=   r  _	  s    r  c                   @   s  e Zd Zdd Zejdg ddd Zdd Zd	d
 Z	ejde
je
jgdd Zejde
je
je
je
jgdd Zdd Zejde
deddge
deddge
ded dge
dededed dggdd Zejde
g de
g de
g dgdd Zejde
g de
g dgejdg d ejd!d"d#gd$d% Zejde
g d&e
g d'e
g d(gejd!d"d#gejd)d*d+gd,d- Zd*S ).TestYeojohnsonc                 C   s  t jd}tdd|dd }t |dksJ tj|dd}t|| tj|dd}t|dd|d    tj|dd}t|t |d  tj|dd}t|| tdd|dd }t |dk seJ tj|d	d}t|t | d   tj|dd}t|| tj|d
d}t|d| d  d  tdd|dd	 }t |dk rJ t |dkrJ |dk}tj|dd}t|| ||  tj|dd}t|| dd|| d    tj|dd}t|| t || d  tj|dd}t|| ||  | }tj|d	d}t|| t ||  d   tj|dd}t|| ||  tj|d
d}t|| d||  d  d  d S )Nr  r   r   r7  r   r   r  r   r   r   )	r6   r8  r   r>   r   r   
yeojohnsonr	   r7   )r[   r<  ri   r  posnegr<   r<   r=   r  u	  sL   


 $zTestYeojohnson.test_fixed_lmbdar  )r   rY  r  r   c                 C   s   dd }d}t jd t jjdd|d}|||}t|\}}t||dd	 tdt j	|| | d
d td|
 dd td| dd d S )Nc                 S   s   t j| j| jd}| dk}t|t dk r"t | | d ||< nt | | | d d| d ||< t|d t dkrZdt d|  | |   d dd|   || < |S dt | |    || < |S )Nr2  r   r(   r   r   )r6   r  r  r3  r  spacingexppower)ri   r  r  r  r<   r<   r=   _inverse_transform	  s   $
z:TestYeojohnson.test_lmbda_None.<locals>._inverse_transformi N  r~  r   r   )r   r   r   rH  r  r   rS   )r6   r8  rR  r=  r   r  r	   r   linalgr   r]   r_   )r[   r  r  Z	n_samplesri   r  r  r   r<   r<   r=   r  	  s   
zTestYeojohnson.test_lmbda_Nonec                 C   r  r  )r   r   r  r  rd   r<   r<   r=   r  	  r?   zTestYeojohnson.test_emptyc                 C   sD   t jjdddd}t |\}}t t|\}}t||dd d S )Nr   r   r  r  r	  rL   )r   r   r9   r  r  r	   )r[   ri   Zxt1r  Zxt2r<   r<   r=   r  	  s   zTestYeojohnson.test_array_liker3  c                 C   sP   t jd|d}d}tjt|d t| W d    d S 1 s!w   Y  d S )NrC   r2  z>Yeo-Johnson transformation is not defined for complex numbers.r   )r6   rh   r   r   rc   r   r  )r[   r3  ri   err_msgr<   r<   r=   test_input_dtype_complex	  s
   "z'TestYeojohnson.test_input_dtype_complexc                 C   sZ   t jd|d}t jdt jd}t|\}}t|\}}t||dd t||dd d S )NrG   r2  r  rL   )r6   rh   rI  r   r  r	   )r[   r3  x_intx_floatZxt_intZ	lmbda_intZxt_floatZlmbda_floatr<   r<   r=   test_input_dtype_integer	  s   z'TestYeojohnson.test_input_dtype_integerc                 C   sN   t g d}t|\}}t|d \}}t||dd t||dd d S )N)(HAG."A    5fAg(@Ag   VAgHzuoAg)\¿+Ar  g(\^@Ag    RAr  g    #Ag\µ=Ag
ףNAr  gp=oHAg    6bAg{csAg)\tmhAg/BAg   '|Ag(\wipAg    ݃hAgQlBAgףp @Ar   rK   rL   )r6   r  r   r  r   r	   )r[   ri   xt_yeolam_yeoxt_boxlam_boxr<   r<   r=   test_input_high_variance	  s
   z'TestYeojohnson.test_input_high_varianceri   r(   r   rG  r>        c                 C   sB   t jtdd t|\}}W d    d S 1 sw   Y  d S )Nz Yeo-Johnson input must be finiter   )r   r   rc   r   r  )r[   ri   r  r   r<   r<   r=   test_nonfinite_input	  s   "z#TestYeojohnson.test_nonfinite_inputr  r  r  c                 C   s   dd }t jddA t|\}}tj|d t||dd\}}t t |s+J t t |s5J t||dd	 t||d
d	 W d    d S 1 sNw   Y  d S )Nc                 S   s&   t j| | |dd}t  }||_|S )Ng`sbO>)Zxtol)r   Z	fminboundZOptimizeResultri   )r  r   outresultr<   r<   r=   r  
  s   z/TestYeojohnson.test_overflow.<locals>.optimizerraiser   r   )r   r  rK   rL   r  )	r6   r   r   r  r   r   r  r^   r	   )r[   ri   r  r  r   r  r  r<   r<   r=   r  	  s   
"zTestYeojohnson.test_overflowr   )r   r	  g3#I9gu?j/ gnFgZbtir  r   r   c                 C   s   t jdd6 t|| | \}}t t || t |ks#J t |s*J t t |s4J W d    d S 1 s?w   Y  d S )Nr  r   )r6   r   r   r  r   r  r  r^   )r[   ri   r   r  r  r   r<   r<   r=   #test_overflow_underflow_signed_data
  s   	""z2TestYeojohnson.test_overflow_underflow_signed_data)r   r   r   r   )r   r   r   r  )r   r   r   r  Nr  c           
      C   s   t jdd^ || }|t j}tj||d}tj||d}tj||d}tj||d}	t t |t |ks<J t 	|sCJ t 	t 
|sMJ ||ksSJ t ||	ks\J W d    d S 1 sgw   Y  d S )Nr  r   r  r  )r6   r   ZastyperI  r   yeojohnson_normmaxr  r   r  r  r^   )
r[   ri   r  r  r  r  Zlam_yeo_intZ
xt_yeo_intZlam_yeo_floatZxt_yeo_floatr<   r<   r=   test_integer_signed_data%
  s   "z'TestYeojohnson.test_integer_signed_data)rn   ro   rp   r  r   r   r   r  r  r  r6   Z	complex64Z
complex128r  Zint8uint8Zint16Zint32r  r  r  rx  r  r  r	  r  r<   r<   r<   r=   r  s	  sN    /
$

 

	r  c                   @   r@   )TestYeojohnsonNormmaxc                 C   r`  r  rc  rd   r<   r<   r=   rd  <
  r?   z"TestYeojohnsonNormmax.setup_methodc                 C   r  )Ng?rK   rL   )r   r
  ri   r	   r  r<   r<   r=   r  ?
  r  zTestYeojohnsonNormmax.test_mlec                 C   s*   g d}t |}tj|dddsJ d S )N)gffffff@g r(   rG  ffffff?g333333@rN  gffffff@g?g@rL  rH  g"@r  g      gzG?r  r  )r   r
  r6   Zallclose)r[   ri   r  r<   r<   r=   test_darwin_exampleC
  s   
z)TestYeojohnsonNormmax.test_darwin_exampleN)rn   ro   rp   rd  r  r  r<   r<   r<   r=   r  ;
  s    r  c                   @   s  e Zd Zejdejdfejdfej	dfgdd Z
dd Zejd	ejejfejejfej	ejfgd
d Zejdejejej	gdd Zejdejdfejdfej	dfgdd Zejdejejej	gdd Zejdejejej	gdd Zeddde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!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/S )0TestCircFuncstest_func,expectedA:wv?gpz?E|2@c                 C   *   | g d}t||dd| | d S )N)g     0v@rJ  rG       pv@rN        u@h  r  r  r!   r[   	test_funcr  r  ri   r<   r<   r=   test_circfuncsT
     zTestCircFuncs.test_circfuncsc           
      C   s   |j g d|jd}||}tj|dd}t||dd t|}|j||j d dd	}|d
 }tj	|dd}t||dd |j
|dd	}tj|dd}	t|	|dd d S )N)ru  r%  rm  rj     g     4@g3333333@r2  r  r  r   rL   r  r   r  rG  r  )r  rI  r]   r   circmeanr!   r   r^   picircvarr_   circstd)
r[   r  ri   M1M2xp_testZV1ZV2ZS1ZS2r<   r<   r=   test_circfuncs_small\
  s   
z"TestCircFuncs.test_circfuncs_smallztest_func, numpy_funcc                 C   sH   t dgd dgd  }|||}|||}t||dd d S )Ng˛ɦv9?r   guv9?r   g:0yU>r  )r6   r  r!   )r[   r  Z
numpy_funcr  ri   Zcircstatr=  r<   r<   r=   test_circfuncs_closer
  s   z"TestCircFuncs.test_circfuncs_closecircfuncc                    s   | g dg dg dg dd} |ddd}t|| |  ddd} fd	d
tjd D }t|| |  ddd} fdd
tjd D }t|| | d S )N)c  r   r   r  r   ^  )_  rF   r   `  rD   ]  )ie  rD   rG   if  r   g     @v@r  r  r   r   r  rm  c                    s$   g | ]} |d d f ddqS Nr  r  r<   r~   rl   r)  ri   r<   r=   r   
     $ z4TestCircFuncs.test_circmean_axis.<locals>.<listcomp>r   c                    s$   g | ]} d d |f ddqS r1  r<   r2  r3  r<   r=   r   
  r4  )r  reshaper!   r  r  )r[   r  r)  rk   r   r<   r3  r=   test_circmean_axis}
  s   
z TestCircFuncs.test_circmean_axis @pz?c                 C   r  )N)r*  r   r   r  r   r  r  r  r  r  r<   r<   r=   test_circfuncs_array_like
  r  z'TestCircFuncs.test_circfuncs_array_liker  c                 C   s   |j }|jg |d}t|r*tjttd ||}W d    n1 s$w   Y  n%tj	 }|
td |
td ||}W d    n1 sJw   Y  t||j|j|d d S )Nr2  r   zMean of empty slicer.  )rI  r  r    r   r   r   r   r6   r/  r   r  r   r"   r   )r[   r  r  r3  ri   rk   r  r<   r<   r=   r  
  s   

zTestCircFuncs.test_emptyc              	   C   s8   | ddddddtjg}t||dd| |j d S )	Nr*  r   r   r  r   r+  r  r  )r  r6   r   r"   )r[   r  r  ri   r<   r<   r=   test_nan_propagate
  s   z TestCircFuncs.test_nan_propagateZcupyzcupy/cupy#8391r  g5:v@gfPb?r6  gee?gOQOv?g#q@gauy+@c                 C   s   | 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}| D ]5}||d	|d
}|d u r:t|| |j q#t|d | ||  t|dd  ||dd  |j q#d S )N)r*  r   r   r  r   r+  r   r,  rF   r   r-  rD   r.  r   r  r0  r   )r  r6   r   keysr"   r!   Z	full_like)r[   r  r  r  ri   rm  r  r<   r<   r=   test_nan_propagate_array
  s   
&z&TestCircFuncs.test_nan_propagate_arrayc                 C   s.   | dd }|}t|}t||dd d S )Nr(   r<   r   rL   )r  r   r   r!   )r[   r  ri   r$  r%  r<   r<   r=   test_circmean_scalar
  s   
z"TestCircFuncs.test_circmean_scalarc                 C   sH   t |ddd|j|j }t|||j t| ||j d S )Nr   r   rY  )r   r   rh   r!  r#   r  )r[   r  r  r<   r<   r=   test_circmean_range
  s   z!TestCircFuncs.test_circmean_rangec                 C   sf   |j ddg|jd}ttj|dd| d ttj|dd| d ttj|dd| d d S )	Nr  r   r2  r  r  g     @e@gLwqA?g)#p_4@)r  r  r!   r   r   r"  r#  )r[   r  ri   r<   r<   r=   test_circfuncs_uint8
  s   z"TestCircFuncs.test_circfuncs_uint8c                 C   s*   t |dg}td|dksJ d S )Nr   r(   )r   r#  r  mathcopysign)r[   r  r  r<   r<   r=   test_circstd_zero
  s   zTestCircFuncs.test_circstd_zeroc                 C   s   | ddd}||||kr|||dksJ |d|j  d|j  |k}||s2J || }tj|d d d f dd}|||ksLJ d S )NrP   r  r   r(   r   r   rl  )r  r   sincosr!  anyr   r   )r[   r  ri   r  r  r<   r<   r=   !test_circmean_accuracy_tiny_input
  s   ,z/TestCircFuncs.test_circmean_accuracy_tiny_inputc                 C   sb   |j d|jd}t||||}|j ||jd}tj||j|j d}t	||ddd d S )Ng ؅W4vCr2  )r  r  r@  r   )rM   r  )
r  rI  r?  atan2rB  rC  r   r   r!  r!   )r[   r  ri   r  r  actualr<   r<   r=   !test_circmean_accuracy_huge_input
  s
   z/TestCircFuncs.test_circmean_accuracy_huge_inputN)rn   ro   rp   r   r   r   r   r   r"  r#  r  r'  r6   r]   r^   r_   r(  r6  r8  r  r9  r-  r   r;  r<  r=  r>  rA  rE  rH  r<   r<   r<   r=   r  L
  sv    









	r  c                   @   s  e Zd Zejdejde	g de	ddgdfej
de	g dejd	 d
  e	ddgdfejde	g de	ddgdfgdd Zejdejdfej
dfejdfgdd Zejdejej
ejgdd Zejdejej
ejgdd Zejdddd
dd d!ejge	ddd
dd d!ejgd"d#d$d%ejd&d'gggejdejej
ejgd(d) Zejdddd
dd d!ejge	ddd
dd d!ejgd"d#d$d%ejd&d'gggejdejej
ejgd*d+ Zd,S )-TestCircFuncsNanPolicyr  grQvv@)g     v@rK  rH  g     8v@r  g     u@g5@v?g2>Bjv@r6  gG2?)gaF+?z?rJ  gA ~@碲?rK  r  r   r7  gX҄?gJPm$@)gj  @竃 ?rL  g)h;@{ ?rM  gun2@g+fa @c                 C   s   t 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}| D ]M}|d u rB||dd|d}t||| dd q*tjttd& ||dd|d}t|d d || dd t	t 
|d  W d    n1 srw   Y  q*d S )Nr*  r   r   r  r   r+  r,  rF   r   r-  rD   r.  r  omit)r  
nan_policyrm  r  rL   r   r   )r6   r  r   r:  r	   r   r   r   r   r   r  )r[   r  r  ri   rm  r  r<   r<   r=   test_nan_omit_array  s   z*TestCircFuncsNanPolicy.test_nan_omit_arrayr  r  c                 C   s0   ddddddt jg}t||ddd	|d
d d S )Nr*  r   r   r  r   r+  r  rN  r  rO  r  rL   )r6   r   r	   )r[   r  r  ri   r<   r<   r=   test_nan_omit%  s   
z$TestCircFuncsNanPolicy.test_nan_omitr  c                 C   sb   t jt jt jt jt jg}tjttd tt ||dd W d    d S 1 s*w   Y  d S )Nr   rN  rO  )r6   r   r   r   r   r   r   r  r[   r  ri   r<   r<   r=   test_nan_omit_all.  s   "z(TestCircFuncsNanPolicy.test_nan_omit_allc              	   C   s   t jttd< t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d}tt|	  tt
|dk W d    d S 1 sFw   Y  d S )Nr   rN  r   )rO  rm  r   )r   r   r   r   r6   r  r   r   r  r   r   )r[   r  ri   r  r<   r<   r=   test_nan_omit_all_axis5  s   "z-TestCircFuncsNanPolicy.test_nan_omit_all_axisri   r*  r   r  r   r+  r,  rF   r   r-  rD   r.  c                 C      t t||ddd d S )Nr  r  rQ  rb   rc   rT  r<   r<   r=   test_nan_raise?     z%TestCircFuncsNanPolicy.test_nan_raisec                 C   rW  )Nr  foobarrQ  rX  rT  r<   r<   r=   test_bad_nan_policyH  rZ  z*TestCircFuncsNanPolicy.test_bad_nan_policyN)rn   ro   rp   r   r   r   r   r   r6   r  r"  r!  r#  rP  rR  rU  rV  r   rY  r\  r<   r<   r<   r=   rI  
  s    



rI  c                   @   s~   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zejdddgdd ZdS )TestMedianTestc                 C   s   t ttjg d d S Nr   rb   rc   r   median_testrd   r<   r<   r=   test_bad_n_samplesT  s   z!TestMedianTest.test_bad_n_samplesc                 C   s   t ttjg g d d S r^  r_  rd   r<   r<   r=   r  X  r  z TestMedianTest.test_empty_samplec                 C   s&   t ttjg dg dddgdd d S )N)r   r   r   r   )r   r   r   r   r   r   Ztiesr_  rd   r<   r<   r=   test_empty_when_ties_ignored\  s   
z+TestMedianTest.test_empty_when_ties_ignoredc                 C   s8   t ttjg dg d t ttjg dg ddd d S )N)r   r   r   aboverb  r_  rd   r<   r<   r=   test_empty_contingency_rowd  s   
z)TestMedianTest.test_empty_contingency_rowc                 C       t ttjg dddgdd d S )Nr   r   r   r  rb  r_  rd   r<   r<   r=   test_bad_tiesp     
zTestMedianTest.test_bad_tiesc                 C   rf  )Nr   r   r   r[  rS  r_  rd   r<   r<   r=   r\  t  rh  z"TestMedianTest.test_bad_nan_policyc                 C   rf  )Nr   r   r   r  )r  )rb   rZ  r   r`  rd   r<   r<   r=   r\  x  rh  zTestMedianTest.test_bad_keywordc                 C   s\   g d}g d}t ||\}}}}t|d t|ddgddgg t|d t|d d S )Nr   rG  r   r   r   )r   r`  r
   r   )r[   ri   r  r)  rV  Zmedtblr<   r<   r=   test_simple|  s   

zTestMedianTest.test_simplec                 C   s   g d}ddg}g d}t |||\}}}}t|d t|g dg dg t j|||dd\}}}}t|d t|g dg d	g t j|||d
d\}}}}t|d t|g dg d	g d S )Nr  r   rC   )rF   rG   rD   )r   r   r   )r   r   r   r   rb  )r   r   r   rd  )r   r   r   )r   r`  r
   )r[   ri   r  zr)  rV  r  ri  r<   r<   r=   test_ties_options  s   


z TestMedianTest.test_ties_optionsc                 C   s   ddt jg}g d}tj||dd}tj||dd\}}}}t|t jt jt jd f t|d t|d t|d	 t|t d
dgddgg tttj||dd d S )Nr   r   )r   r   rC   	propagaterS  rN  g     ?gإvao?rI  r   r  )	r6   r   r   r`  r
   r	   r  rb   rc   )r[   ri   r  Zmt1r   rV  r  r  r<   r<   r=   test_nan_policy_options  s   


z&TestMedianTest.test_nan_policy_optionsc                 C   s2  g d}g d}t ||\}}}}t|d t|ddgddgg t |\}}}	}
t|| t|| t j||dd\}}}}t|d t|ddgddgg t j|dd\}}}	}
t|| t|| t j||dd	\}}}}t|d t|ddgddgg t j|dd	\}}}	}
t|| t|| d S )
Nr   )r   r   rC   rG   r   r   r   r   )Zlambda_Fr  )r   r`  r
   Zchi2_contingencyr	   )r[   ri   r  r)  rV  r  ri  Zexp_statZexp_pZdofer<   r<   r=   r`     s(   







zTestMedianTest.test_basicr  FTc                 C   s>   g d}g d}t j|||d}t|j|j|j|jf| d S )Nr   r  )r   r`  r
   rX   r   rU  table)r[   r  ri   r  rk   r<   r<   r=   r    s   zTestMedianTest.test_resultN)rn   ro   rp   ra  r  rc  re  rg  r\  r\  rj  rl  rn  r`   r   r   r   r  r<   r<   r<   r=   r]  R  s    r]  c                   @   s   e Zd Zdd Zejdej d ejd gdfddej gdfgdd	 Z	d
d Z
dd Zeddddd Zdd Zejdddgdd ZdS )TestDirectionalStatsc                 C   s   t t g d }t t g d }t jt |t | t |t | t |fdd}|| }|| }|| }t	|}|j
}|g d}t||dd d S )N)	g33333su@g      O@g33333sB@g      ;@r  g@g333333I@gYv@rF  )	gfffffP@g,Q@gfffffQ@gfffffT@g     S@g     @R@g33333SQ@gffffffM@g33333I@r   rl  )gHP?g&S:g[<r  r  )r6   Zdeg2radr  stackrC  rB  r  r  r   directional_statsmean_directionr!   )r[   r  declZinclr\   dirstatsdirectional_meanZreference_meanr<   r<   r=   "test_directional_stats_correctness  s   
z7TestDirectionalStats.test_directional_stats_correctnesszangles, refr   r(   r   r   c                 C   sP   | |}| |}|j||||gdd}dt|j }t|| d S )Nr   rl  )r  rr  rC  rB  r   rs  mean_resultant_lengthr!   )r[   Zanglesr   r  r\   rk   r<   r<   r=   'test_directional_stats_2d_special_cases  s
   

z<TestDirectionalStats.test_directional_stats_2d_special_casesc                 C   s   t jd}|d|j |d }|j||||fdd}t	|}|j
}t|}||d |d }|d|j  }t|}	t||	 d|j }
t|}t|
| d S )Nl	   }7Qh0P4u&4M r   )r6  r   rl  r   r(   )r6   r8  r9  r  r!  rr  rC  rB  r   rs  rt  r   rF  r   r!   ry  r"  )r[   r  r<  ZtestdataZtestdata_vectorrv  rw  r&  Zdirectional_mean_angler   Zdirectional_varZcircular_varr<   r<   r=   test_directional_stats_2d  s&   





z.TestDirectionalStats.test_directional_stats_2dc                 C   sl   | g dg dg}| ||d}| g dg dgg dg dgg}tj|dd}t|j| d S )N+Pz?r  r   )r}  r  r   )r   r   r   r   )r(   r   r   r   rl  )r  Ztiler   rs  r!   rt  )r[   r  r\   Z
full_arrayr  rv  r<   r<   r=    test_directional_mean_higher_dim  s   

z5TestDirectionalStats.test_directional_mean_higher_dimTzchecking array-like inputr]  c                 C   s`   g dg dg}|j ||jd}t|}t|}t|j| |j t|j| |j d S )Nr|  )r}  r  r   r2  )r  rI  r   rs  r!   rt  ry  )r[   r  r\   Z
data_arrayr   rk   r<   r<   r=   )test_directional_stats_list_ndarray_input  s   



z>TestDirectionalStats.test_directional_stats_list_ndarray_inputc                 C   sR   | d}d}tjtt|d t| W d    d S 1 s"w   Y  d S )N)r   zIsamples must at least be two-dimensional. Instead samples has shape: (5,)r   )r   r   r   rc   reescaper   rs  )r[   r  r\   r+  r<   r<   r=   test_directional_stats_1d_error%  s
   
"z4TestDirectionalStats.test_directional_stats_1d_errorr3  r7  rI  c                 C   s~   t jg dg dg|d}tj||dd}|t jj|ddd }tj|dd}t|j||j t|j	||j	 d S )	Nr|  )g+Pz?r  r   r2  T)	normalizer   )rm  ZkeepdimsF)
r6   r  r   rs  r  r  r   r!   rt  ry  )r[   r3  r  r\   rk   Znormalized_datar   r<   r<   r=    test_directional_stats_normalize-  s    


z5TestDirectionalStats.test_directional_stats_normalizeN)rn   ro   rp   rx  r   r   r   r6   r!  rz  r{  r~  r-  r  r  r  r<   r<   r<   r=   rq    s    


rq  c                   @   sp   e Zd Zdd Zdd Zejdg ddfg dd	fgd
d Zdd Z	ejdg ddd Z
dd ZdS )TestFDRControlc                 C   s  d}t jt|d tg d W d    n1 sw   Y  t jt|d tg d W d    n1 s9w   Y  t jt|d tddtjg W d    n1 sYw   Y  d}t jt|d tjg dd	d
 W d    n1 s{w   Y  d}t jt|d tjg ddd W d    n1 sw   Y  t jt|d tjg ddd W d    d S 1 sw   Y  d S )Nz.`ps` must include only numbers between 0 and 1r   )r   r  r  )r  r  r   r  r  zUnrecognized `method` 'YAK')r  r  rs   ZYAKr  z#`axis` must be an integer or `None`r  rl  r  )r   r   rc   r   false_discovery_controlr6   r   r  r<   r<   r=   test_input_validation?  s*   "z$TestFDRControl.test_input_validationc                 C   s,   g d}t |}g d}t||dd d S )N)r  g;On?g~jt?gI+?g&1?gB`"۹?gv?S㥛?);On?r  I+?r  gˡE?gHzG?r  r  r  r  )r   r  r	   )r[   psrk   r   r<   r<   r=   test_against_TileStatsR  s   
z%TestFDRControl.test_against_TileStatsrV  )
go?gQ]
Y?ghD@?u?D?gn@t?g=T	[ے?g=!s?r  r  g	L?Zbh)
glߢ?gq?g.0?R]D?g)<Gh?g$͂?g2-p?r  r  g]:?Zbyc                 C   sT   |\}}t jd}tjjddd|d}|d |d< tj||d}t||d	d
 d S )N   <U) r  r  r   r7  rF   r   r  rK   r  )r6   r8  r9  r   
loguniformr9   r  r	   )r[   rV  r   r  r<  r  rk   r<   r<   r=   rZ  Y  s   zTestFDRControl.test_against_Rc                 C   sJ   t jd}tjjddd|d}tj|d d}t| }t|| d S Nr  r  r  )r   r   r   r7  rl  )	r6   r8  r9  r   r  r9   r  Zravelr
   )r[   r<  r  rk   r   r<   r<   r=   test_axis_Nonek  s
   zTestFDRControl.test_axis_Nonerm  )r   r   r   c                 C   sL   t jd}tjjddd|d}tj||d}t tj||}t|| d S r  )	r6   r8  r9  r   r  r9   r  Zapply_along_axisr
   )r[   rm  r<  r  rk   r   r<   r<   r=   	test_axisr  s
   zTestFDRControl.test_axisc                 C   s8   t tdgdg t tdd t tg g  d S )Nr  )r   r   r  rd   r<   r<   r=   rk  z  s   zTestFDRControl.test_edge_casesN)rn   ro   rp   r  r  r   r   r   rZ  r  r  rk  r<   r<   r<   r=   r  >  s"    

r  c                   @   sJ   e Zd Zejdeji fejddifejddifej	i fgdd Z
dS )TestCommonAxisrV  r   r   r   c                    s   |\ t jd}||d fi ddi}| fddtjd D }t||  fi ddi}| fddtjd D }t||  fi dd i} |d	fi }t|| d S )
Nl   @ms|Y)rC   rF   rm  r   c                    s(   g | ]} d d |f fi qS r5   r<   r2  r  r;   ri   r<   r=   r        ( z,TestCommonAxis.test_axis.<locals>.<listcomp>r   c                    s(   g | ]} |d d f fi qS r5   r<   r2  r  r<   r=   r     r  r/  )r6   r8  r9  r  r  r  r!   r5  )r[   rV  r  r<  rk   r   r<   r  r=   r    s   &
&
zTestCommonAxis.test_axisN)rn   ro   rp   r   r   r   r   ZsemrE  Z	variationr  r<   r<   r<   r=   r    s    r  )lr?  r   r  	functoolsr   numpyr6   Znumpy.randomr   Znumpy.testingr   r   r   r   r   r	   r
   r   r   r   rb   r  Zscipyr   r   r   Zscipy.stats._morestatsr   r   r   Zcommon_testsr   Z
_hypotestsr   r   Zscipy.stats._binomtestr   Zscipy.stats._distr_paramsr   Zscipy.stats._axis_nan_policyr   r   r   r   Zscipy.conftestr   Zscipy._lib._array_apir   r    Zscipy._lib._array_api_no_0dr!   r"   r#   r   r-  dictZ
matplotlibZrcParamsZmatplotlib.pyplotZpyplotr  r  	Exceptionr  r  r  r   r!  r"  r#  r$  r%  r&  r>   rA   rr   r   r   r@  r  r  r;  rb  r  r  r  r  r  rY  rD  r[  r_  ry  r:  r  r  r  r  r  r  r  r  r  rI  r]  rq  r  r  r<   r<   r<   r=   <module>   s   (
!x  P 2E oJ 0^  79/6
%
33  # I 2T jB