U
    Hvf#                   @   s  d dl Z d dl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 d dlmZ d dlmZ dd	lmZ d
dlmZmZ d dlmZ d dlm Z  e!e Z z&d dl"Z"de"j#d< d dl$m%Z& dZ'W n e(k
r   dZ'Y nX ddddddddddg
Z)ddddddddddg
Z*ddddddddddg
Z+d dddddddddg
Z,ddd!d"dd#ddd$dg
Z-d%d&d%dddddd'dg
Z.d"d(dd)ddd*d+ddg
Z/ddddddddddg
Z0dddddd(d(dddg
Z1ddd#dddddd(dg
Z2d,d- Z3G d.d/ d/Z4G d0d1 d1Z5G d2d3 d3Z6G d4d5 d5Z7G d6d7 d7Z8G d8d9 d9Z9G d:d; d;Z:G d<d= d=Z;G d>d? d?Z<G d@dA dAZ=G dBdC dCZ>dDdE Z?G dFdG dGZ@G dHdI dIZAG dJdK dKZBG dLdM dMZCG dNdO dOZDG dPdQ dQZEG dRdS dSZFG dTdU dUZGdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddÐdĐdŐdƐdǐdȐdɐdʐdːd̐d͐dΐdϐdАdѐdҐdӐdԐdՐd֐dאdؐdِdڐdېdܐdݐdސdߐddddddddddddddddddddgZHG dd 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ZOG dd dZPG dd dZQdS (      N)RandomState)assert_array_equalassert_almost_equalassert_array_lessassert_array_almost_equalassert_assert_allcloseassert_equalsuppress_warnings)raises)optimize)stats)
_abw_state   )check_named_results   )_get_wilcoxon_distr_get_wilcoxon_distr2)_binary_search_for_binom_tst)distcontZAggbackendTFgjt?Zd;?gV-?      ?gX9v?g-?gx&1?+?g+?gCl?gV-?gʡE?g/$?gףp=
?gGz?gCl?Gz?grh|?g\(\?g/$?gh|?5?g1Zd?gMb?gjt?g}?5^I?g)\(?c                  O   s   t tjj| |S N)nplogr   gammarvs)argskwargs r"   D/tmp/pip-unpacked-wheel-96ln3f52/scipy/stats/tests/test_morestats.py_old_loggamma_rvs5   s    r$   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestBayes_mvsc                 C   s~   dddddddg}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   	                     "@g4`H#j@gO[%@+=rtol      $@gai	@gӇu8@&.>_紫@   decimalgYs?g1O@)r   	bayes_mvsr   	statisticr   minmaxselfdatameanvarstdr"   r"   r#   
test_basic:   s    zTestBayes_mvs.test_basicc                 C   s   t ttjg  d S r   )assert_raises
ValueErrorr   r9   r=   r"   r"   r#   test_empty_inputL   s    zTestBayes_mvs.test_empty_inputc                 C   s0   t d}d}t|}|D ]}t|| qd S )N   )r:   r;   )r   aranger   r9   r   )r=   x
attributesresir"   r"   r#   test_result_attributesO   s
    

z$TestBayes_mvs.test_result_attributesN)__name__
__module____qualname__rB   rF   rM   r"   r"   r"   r#   r%   9   s   r%   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestMvsdistc                 C   s   dddddddg}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 )Nr&   r'   r(   r)   r*   r+   r,   g?r-   r.   r/   r1   r2   r3   r4   r5   r6   r8   )r   mvsdistr   r?   r   intervalr<   r"   r"   r#   rB   Y   s    zTestMvsdist.test_basicc                 C   s   t ttjg  d S r   rC   rD   r   rR   rE   r"   r"   r#   rF   h   s    zTestMvsdist.test_empty_inputc                 C   s   dg}t ttj| d S Nr   rT   r=   r>   r"   r"   r#   test_bad_argk   s    zTestMvsdist.test_bad_argc              	   C   s\   t  J t dt dd tdddgD  dd tddddd	gD  W 5 Q R X d S )
Nerrorc                 S   s   g | ]}|  qS r"   r?   .0rI   r"   r"   r#   
<listcomp>u   s     z*TestMvsdist.test_warns.<locals>.<listcomp>r   r      c                 S   s   g | ]}|  qS r"   rY   rZ   r"   r"   r#   r\   v   s           )warningscatch_warningssimplefilterRuntimeWarningr   rR   rE   r"   r"   r#   
test_warnsp   s    
zTestMvsdist.test_warnsN)rN   rO   rP   rB   rF   rW   rd   r"   r"   r"   r#   rQ   X   s   rQ   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 )TestShapiroc           
      C   s  ddddddddd	d
ddddddddddg}t |\}}t |}t|ddd t|jddd t|ddd t|jddd dddddddd d!d"d#d$dd%d&d'd(d)d*d+g}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.d0d1d2}t |\}}t |}t|d3dd t|jd3dd t|d4d.d t|jd4d.d d5d6d7d8d9d:d;d<d=d>d?d@dAdBd'dCdDdEdFdGdHdIdJdKdLg}dM}dN}	t |\}}t |}t||dOd t|j|dOd t||	d/d t|j|	d/d d S )PN)\(?{Gz@q=
ףp@HzG$@@Q	@q=
ףp?Q@zG?      @Q?RQ?Q	@(\?zG?zG@(\#@333333@Gz?p=
ף@   ?r&   r6      Ɍ?(\?=
ףp=?\(\@ffffff@\(\?(\?Gz@(\ףp=
@皙?)\(?RQp=
ף?@
ף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^?gCl?g1Zd@gS@g(\	@gGz@g rh@g"~j@gQ@gtV@gʡE @ghyܝ?g0M?r^   )r   shapiror   r:   pvaluenormr   )
r=   x1wpwshapiro_testx2Zx3Zx4Z
W_expectedZ
p_expectedr"   r"   r#   rB   z   s               
          

              
zTestShapiro.test_basicc                 C   s  ddddddddd	d
g
ddddddddddg
g}t |\}}t |}t|ddd t|jddd t|ddd t|jddd dddddddd d!d"g
d#d$dd%d&d'd(d)d*d+g
g}t |\}}t |}t|d,dd t|jd,dd t|d-d.d t|jd-d.d d S )/Nrf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r&   r6   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r]   )r   r   r   r:   r   )r=   r   r   r   r   r   r"   r"   r#   test_2d   sL            
    
zTestShapiro.test_2dc                 C   s&   t ttjg  t ttjg g g g d S r   rC   rD   r   r   rE   r"   r"   r#   rF      s    zTestShapiro.test_empty_inputc                 C   s4   t ttjddg t ttjtjg dggtd d S )Nr   r   dtype)rC   rD   r   r   r   arrayobjectrE   r"   r"   r#   test_not_enough_values   s    z"TestShapiro.test_not_enough_valuesc                 C   s   dg}t ttj| d S rU   r   r=   rI   r"   r"   r#   rW      s    zTestShapiro.test_bad_argc                 C   s`   t d}t j|d< t|\}}t|}t|t j t|jt j t|d t|jd d S )Nr1   r'   r   )	r   rH   nanr   r   r	   r:   r   r   )r=   rI   r   r   r   r"   r"   r#   test_nan_input   s    



zTestShapiro.test_nan_inputc                 C   s4   t dddg\}}t |}d}t||dd d S )Ni i = i@ )gPq~?gF?h㈵>r/   )r   boxcoxr   r   )r=   Z	trans_valmaxlogrK   refr"   r"   r#   test_gh14462   s    
zTestShapiro.test_gh14462N)
rN   rO   rP   rB   r   rF   r   rW   r   r   r"   r"   r"   r#   re   y   s   +re   c                
   @   sh   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	e
jddddddddg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   r   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 5 Q R X t||d k d S )	Nr   r   r   exponr   ignore)allr   )	r   r   r   r   r   r   r   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   gumbelr   r   r   )r   r   r   r   lengumbel_lfitlogcdflogsfrH   r?   r   )r=   r   Za2r   r   nZxbarsr   r   rL   Zexpected_a2r"   r"   r#   test_gumbel  s    
*zTestAnderson.test_gumbelc                 C   s   t ttjdgdd d S Nr   plate_of_shrimpdist)rC   rD   r   r   rE   r"   r"   r#   rW     s    zTestAnderson.test_bad_argc                 C   s0   t d}|jdd}t|}d}t|| d S )Nr   r   r   r:   Zcritical_valuessignificance_level)r   r   r   r   r   )r=   r   rI   rK   rJ   r"   r"   r#   rM     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   r   r   r   r   r   r   )
r=   r   r   r   r   r   r   r   r   r   r"   r"   r#   test_gumbel_r*  s    
zTestAnderson.test_gumbel_rdistnamer   r   r   extreme1r   r   Zlogisticc                 C   s\   t jd}|dkrdn|}tt|}t| }|j|d|d}t||}|jj	sXt
d S )Nl   'Dah$>   r   r   r     r   r   )r   randomdefault_rnggetattrr   r   r   r   Z
fit_resultsuccessAssertionError)r=   r   rngZreal_distnamer   paramsrI   rK   r"   r"   r#   test_anderson_fit_params9  s    
z%TestAnderson.test_anderson_fit_paramsN)rN   rO   rP   r   r   r   rW   rM   r   r   pytestmarkparametrizer   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 )TestAndersonKSampc              
   C   s   ddddddddg}t d	d
ddddddg}t ddddddddg}t ddddddddg}tj||||fdd\}}}t|d d! td"d#d$d%d&g|d'd( d) t|d*d+d, d S )-N皙YC@     D@fffffE@     @F@     F@      G@皙G@      M@皙C@fffffC@皙C@33333D@fffffD@33333sE@fffffE@fffffF@      A@     A@     C@      D@     E@      F@     F@ffffffA@33333A@皙B@fffffB@皙D@ffffffE@FZmidrankg@r]   灕Cl?vq-?,Ԛ?l@Pk	@r   r_   r^   gJ4a?Mb0?atolr   r   r   anderson_ksampr   r   r   r=   t1t2t3t4Tktmpr"   r"   r#   test_example1aI  s    
 z TestAndersonKSamp.test_example1ac              
   C   s   t ddddddddg}t d	d
ddddddg}t ddddddddg}t ddddddddg}tj||||fdd\}}}t|d d! td"d#d$d%d&g|d'd( d) t|d*d+d, d S )-Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  Tr
  gQ@r]   r  r  r  r  r  r   r_   r^   gMb`?r  r  r  r  r"   r"   r#   test_example1bZ  s    
 z TestAndersonKSamp.test_example1bc                 C   s>  ddddddg}ddd	d
dddddddddg}ddddddddddg
}ddddd d!dd"d#d$d%d&d'd(ddd)d*d+d,d-d'd.dg}d/d0d1d2d0g}d3dd4dd5d6d1d7dd8d(d9g}d:d;d#d<d=d>d?d@dAdBdg}d.dCdDddEddd?dFdGd@d7dHd$dId6dEdJdKddGdJddJdLddMdLdNdOg}dPdQdJdRdSddTdUdVdWdMdLdXdYdZd[dd\d]d^d_d`ddaddbd"g}	dcd'dddedd_dKddfdgd%dhd]dIdIdddidjdPdkd.dldg}
dmdd6dndodKd<dpdqg	}dcdrdIdsdtd6g}duddddvdIdwdxdydzdKd/g}ddd{ddd[d|dd(d}d~d9ddzdd dg}t j|||||||||	|
||||fdd\}}}t|ddK tdddddg|ddI dR t|ddd d S )N   rG   )      !        r5   :   %   r   A   r'           $      v   "         C   9   >   r)      Z   r   <      =   1      8      O   T   ,   ;         6  L               F   e   J   0     r(           7   @  h         /              W   x      G   *   r_      r]      r   4   _   a   3   r^         D   M   P   j      R   6      .   o   '   ?         r   f   H         X            r+   g    [  r          #     b   U   [   +                   B   Fr
  gM
@^I+?~:?+e?H.!@cZB>h@r   	^)p?r  r  r   r  r   r   r   r=   r  r  r  r  Zt5Zt6Zt7Zt8Zt9Zt10Zt11Zt12Zt13Zt14r  r  r  r"   r"   r#   test_example2aj  s                                                   
 z TestAndersonKSamp.test_example2ac                 C   s>  ddddddg}ddd	d
dddddddddg}ddddddddddg
}ddddd d!dd"d#d$d%d&d'd(ddd)d*d+d,d-d'd.dg}d/d0d1d2d0g}d3dd4dd5d6d1d7dd8d(d9g}d:d;d#d<d=d>d?d@dAdBdg}d.dCdDddEddd?dFdGd@d7dHd$dId6dEdJdKddGdJddJdLddMdLdNdOg}dPdQdJdRdSddTdUdVdWdMdLdXdYdZd[dd\d]d^d_d`ddaddbd"g}	dcd'dddedd_dKddfdgd%dhd]dIdIdddidjdPdkd.dldg}
dmdd6dndodKd<dpdqg	}dcdrdIdsdtd6g}duddddvdIdwdxdydzdKd/g}ddd{ddd[d|dd(d}d~d9ddzdd dg}t j|||||||||	|
||||fdd\}}}t|ddK tdddddg|ddI dR t|ddd d S )Nr  rG   r   r!  r"  r#  r$  r5   r%  r&  r   r'  r'   r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r)   r4  r5  r   r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  r(   rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r_   r`  r]   ra  r   rb  rc  rd  re  r^   rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  r   rv  rw  rx  ry  rz  r{  r|  r}  r+   r~  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Tr
  g'1Z
@r  r  r  r  r  r   r  r  r  r  r  r"   r"   r#   test_example2b  s                                                   
 z TestAndersonKSamp.test_example2bc              	   C   s.  t ddd}t 0}|jtdd tj||d gdd\}}}W 5 Q R X t|dd	 t|d
 t ,}|jtdd t||d g\}}}W 5 Q R X t|dd	 t|d
 t 0}|jtdd tj||d gdd\}}}W 5 Q R X t|dd t|d t ,}|jtdd t||d g\}}}W 5 Q R X 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messageg     @D@Fr
  g=
ףpD@r]   MbP?gGzD@zp-value capped      ?g?ܵr^         ?g?ܵ      @g!u?gףp=
׳?g{Gzt?r   r  r0   r&   gBiq?g鷯?      '@g:M@g46<Rv?gMb@?g      +@g6>W[1@g1ZGUS?-C6?)
r   linspacer
   filterUserWarningr   r  r   r	   r   )r=   r   supr   _r  r"   r"   r#   test_R_kSamples  sB    !&
"
&
"
z!TestAndersonKSamp.test_R_kSamplesc                 C   s   t ttjtd d S Nr_   rC   rD   r   r  r   r   rE   r"   r"   r#   test_not_enough_samples  s    z)TestAndersonKSamp.test_not_enough_samplesc                 C   s"   t ttjtdtdf d S r  r  rE   r"   r"   r#   test_no_distinct_observations  s    z/TestAndersonKSamp.test_no_distinct_observationsc                 C   s   t ttjtdg f d S r  r  rE   r"   r"   r#   test_empty_sample  s    z#TestAndersonKSamp.test_empty_samplec              
   C   s`   ddddddddg}t d	d
ddddddg}tj||fdd}d}t|| t|j|j d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Fr
  r   )r   r   r   r  r   r	   r   r   )r=   r  r  rK   rJ   r"   r"   r#   rM     s    
z(TestAndersonKSamp.test_result_attributesN)rN   rO   rP   r  r  r  r  r  r  r  r  rM   r"   r"   r"   r#   r   H  s     P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	e
jdddddgddddgddfddddgddddgddfdddgdddddgddfdddgdddddgddfdddddgdddgddfdddddgdddgddfgdd Zdd  Zd!S )"
TestAnsaric              	   C   sl   dddddg}ddddddddg}t  "}|td t||\}}W 5 Q R X t|dd t|d	d d S )
Nr   r   r]   r^   r&   %Ties preclude use of exact statistic.g     7@r`  g8#oG?)r
   r  r  r   ansarir   )r=   rI   yr  Wpvalr"   r"   r#   
test_small  s    zTestAnsari.test_smallc              	   C   s^   t d}t d}t "}|td t||\}}W 5 Q R X t|dd t|dd d S )N)rq  k   r   c   rv  rk  m   l   rS  r  rJ  `   rd  rv  r  q   t   r  n   r  )r  r  rk  r  i   g   r  r  rS  r   r  r  r  rS  r   r  r  r  rk  r  r  g     0g@r`  g|:?)r   r   r
   r  r  r   r  r   )r=   ZramsayZparekhr  r  r  r"   r"   r#   test_approx  s    

zTestAnsari.test_approxc              	   C   s@   t ddddgddddd	d
g\}}t|dd t|dd d S )Nr   r   r]   r^   rG   r_   r<  r*   r   r(   r1   r`  g?r)   )r   r  r   )r=   r  r  r"   r"   r#   
test_exact)  s    $zTestAnsari.test_exactc                 C   s(   t ttjg dg t ttjdgg  d S rU   rC   rD   r   r  rE   r"   r"   r#   rW   .  s    zTestAnsari.test_bad_argc              	   C   s^   dddddg}ddddddddg}t  }|td t||}W 5 Q R X d}t|| d S )Nr   r   r]   r^   r&   r  r:   r   )r
   r  r  r   r  r   )r=   rI   r  r  rK   rJ   r"   r"   r#   rM   2  s    z!TestAnsari.test_result_attributesc              	   C   sH   ddddg}ddddg}d	}t t|d
 tj||dd W 5 Q R X d S )Nr   r   r]   r^   r_   r&   r)   r*   z!'alternative' must be 'two-sided'matchfooalternativer  )r=   r   r   r  r"   r"   r#   test_bad_alternative;  s
    zTestAnsari.test_bad_alternativec           
      C   s  dddddddg}dd	d
dddg}t ||\}}t j||ddj}t j||ddj}|dksbt|dk sntt|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 st|	dkstd S )Nr   r_   r   rG   r<  rA  r  g      !@      #@g      %@r  g      )@lessr  greaterffffff?皙?-q=r  r   )r   r  r   r   r   pmfr   r   )
r=   r   r   r:   r  pval_lpval_gZprobZpval_l_reverseZpval_g_reverser"   r"   r#   test_alternative_exactC  s    z!TestAnsari.test_alternative_exactzx, y, alternative, expectedr   r   r]   r^   r_   r&   r)   r*   r  g@A?r  gG$I?g%I$I?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   {   r   r   r  r  r  r   r  r  r   r6  g      ?r   )r   r   r   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  rW   rM   r  r  r   r   r   r  r  r"   r"   r"   r#   r    s&   		
r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestBartlettc              
   C   sB   t ttttttttt	g
}t
j| \}}t|dd t|dd d S )NgzU@ /4@r)   gG?)g1g2g3g4g5g6g7g8g9g10r   bartlettr   )r=   r    Tr  r"   r"   r#   	test_data  s    zTestBartlett.test_datac                 C   s   t ttjdg d S rU   )rC   rD   r   r  rE   r"   r"   r#   rW     s    zTestBartlett.test_bad_argc              
   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     s    
z#TestBartlett.test_result_attributesc                 C   s6   t ttttttttt	g f}t
tjtjftj|  d S r   )r  r  r  r  r  r  r  r  r  r  r	   r   r   r   r  )r=   r    r"   r"   r#   test_empty_arg  s    zTestBartlett.test_empty_argc                 C   s*   t ddgddgg}tttjt| d S Nr   r   r]   r^   )r   r   rC   rD   r   r  r  r   r"   r"   r#   test_1d_input  s    zTestBartlett.test_1d_inputN)rN   rO   rP   r  rW   rM   r  r  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?r)   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   ddddddddg}d	dd
dddddg}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 )N333333?       @      @      @      @      @      @      Y@r         @      @      @      i@  r        ?r  r   r   r?   r  )r   r   seedpermutationr   r  r   )
r=   rI   r  r   ZW0Zpval0r  r  r  r  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   rN  r  r]   r?   r  median)r   r  r   r  r  r   r  r   )r=   rI   r   r  r  r  r  r  r"   r"   r#   test_equal_mean_median  s    
z!TestLevene.test_equal_mean_medianc                 C   s&   t ddd}tttj||dd d S Nr   r   rN  皙?)Zportiontocut)r   r  rC   	TypeErrorr   r  r   r"   r"   r#   test_bad_keyword  s    zTestLevene.test_bad_keywordc                 C   s&   t ddd}tttj||dd d S Nr   r   rN  Ztrimr  )r   r  rC   rD   r   r  r   r"   r"   r#   test_bad_center_value  s    z TestLevene.test_bad_center_valuec                 C   s   t ttjdg d S rU   )rC   rD   r   r  rE   r"   r"   r#   test_too_few_args  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 r  )r  r  r  r  r  r  r  r  r  r  r   r  r   r  r"   r"   r#   rM     s    
z!TestLevene.test_result_attributesc                 C   s*   t ddgddgg}tttjt| d S r  )r   r   rC   rD   r   r  r  r   r"   r"   r#   r    s    zTestLevene.test_1d_inputN)rN   rO   rP   r  r  r  r	  r  r  r  rM   r  r"   r"   r"   r#   r    s   	
r  c                   @   sd   e Zd ZdZedddZdd Zd	d
 Zdd Zdd Z	dd Z
ejjejdkdddd ZdS )TestBinomTestPzU
    Tests for stats.binomtest as a replacement for deprecated stats.binom_test.
    Nr  	two-sidedc                 C   s   t | t j} t| dkr8| d | d  }| d } n@t| dkrp| d } |d ks\|| k rdtdt |}ntdtj| |||d}|jS )Nr   r   r   zn must be >= xzIncorrect length for x.r  r  )	r   Z
atleast_1dZastypeint_r   rD   r   	binomtestr   )rI   r   r  r  resultr"   r"   r#   binom_test_func  s    
zTestBinomTestP.binom_test_funcc                 C   sR   |  dd}t|dd |  dd}t|dd | j dd	gd
d}t|dd d S )Nr      g-"^?r`  r,  i  g`w?i           ?r  gz?r  r   )r=   r  r"   r"   r#   r    s    zTestBinomTestP.test_datac                 C   s   t t| jdddg d S Nr   r   r]   rC   rD   r  rE   r"   r"   r#   test_bad_len_x  s    zTestBinomTestP.test_bad_len_xc                 C   s(   t t| jdg t t| jdgdd d S )Nr   r   r   r  rE   r"   r"   r#   
test_bad_n  s    zTestBinomTestP.test_bad_nc                 C   s   t t| jddgdd d S )Nr   r  r  r  rE   r"   r"   r#   
test_bad_p  s
      zTestBinomTestP.test_bad_pc                 C   sX   | j ddddd}t|d | j ddddd}t|d | j dddd	d}t|d
 d S )Nre     gUUUUUU?r  r  g-$Ǻl?r  gs0,j.?r  gJfJ"f?r  r=   rK   r"   r"   r#   test_alternatives"  s    

z TestBinomTestP.test_alternativesl        z32-bit does not overflowreasonc                 C   s   t t| jddtjjd d S )Nr  r&   r  )rC   OverflowErrorr  sys
float_infominrE   r"   r"   r#   test_boost_overflow_raises,  s    z)TestBinomTestP.test_boost_overflow_raises)Nr  r  )rN   rO   rP   __doc__staticmethodr  r  r  r!  r"  r%  r   r   skipifr)  maxsizer,  r"   r"   r"   r#   r    s   
r  c                    @   sH  e Zd ZdZdd Zdd Zdd Zdd	 Zej	
d
dddgdd Zej	
d
dddgdd Zej	
ddddgdd Zej	
ddddgdd  Zej	
d!d"d#d$d%d&d'gd"d#d$d(d)d*gd"d#d+d%d,d-gd"d#d+d(d.d/gd"d0d$d%d1d2gd"d0d$d(d1d3gd"d0d+d%d1d4gd"d0d+d(d1d5gd"d6d$d%d7d8gd"d6d$d(d9d8gd"d6d+d%d:d8gd"d6d+d(d;d8gd<d#d$d%d1d=gd<d#d+d%d1d>gd<d0d$d%d1d?gd<d0d+d%d1d@gd<d6d$d%d1d8gd<d6d+d%d1d8gdAd#d$d%dBd8gdAd#d+d%dCd8gdAd0d$d%d1d8gdAd0d+d%d1d8gdAd6d$d%dDd8gdAd6d+d%dEd8ggdFdG ZdHdI Zej	
dJdKdLgdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWS )X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   r/   iΙ gX7?i	ϙ g=?iϙ gybw?r3   r   r  r   r   r=   r0   rK   r"   r"   r#   test_two_sided_pvalues19  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 )Nr2  r'   rN  r3  r   r  gX-h?r/   r^   g㤶y?r`  g	y}?r)   g+,?r]   r   r  g      ?r   g?g{Gz?g333333?g<,?r4  r5  r"   r"   r#   test_two_sided_pvalues2G  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 )Nr2  i  i  r  r   r/   r]   rV  gAL &W?r+   rp  g!YB?rG   r?  gE]t?r)   r&   r`  r4  r5  r"   r"   r#   test_edge_casesX  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 r   r   binomr  r   r7  r"   r#   <lambda>t  s    z>TestBinomTest.test_binary_srch_for_binom_tst.<locals>.<lambda>r3   r/   r)   c                    s   t j|  S r   r<  r>  r7  r"   r#   r?    s    )r   rH   ceilr   r=  r  sumr   intr   floor)r=   krL   dy1ixy2r"   r7  r#   test_binary_srch_for_binom_tstg  s0         z,TestBinomTest.test_binary_srch_for_binom_tstz"alternative, pval, ci_low, ci_high)r  g$W?r   g?)r  g}?gGI~?r   )r  g}G?g>?6?g4M?c                 C   sX   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 )
Nr<  r   r  r   r  r  r  r/   皙?r  confidence_level	r   r  r   r   r	   r:   proportion_cilowhighr=   r  r  ci_lowci_highrK   cir"   r"   r#   test_confidence_intervals1  s
    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   sX   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 )
Nr]   r   rK  rJ  ư>r/   gQ?r   rL  rN  rR  r"   r"   r#   test_confidence_intervals2  s
    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  r  rW  r/   r  rL  r   )r   r  r   r   rO  r	   rP  rQ  )r=   r  r  rT  rK   rU  r"   r"   r#   !test_confidence_interval_exact_k0  s
    z/TestBinomTest.test_confidence_interval_exact_k0zalternative, pval, ci_low)r  r   r   )r  6>g@>}_?)r  rZ  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  rW  r/   r  rL  r   )r   r  r   r   rO  r	   rQ  rP  )r=   r  r  rS  rK   rU  r"   r"   r#   %test_confidence_interval_exact_k_is_n  s
    z3TestBinomTest.test_confidence_interval_exact_k_is_nz+k, alternative, corr, conf, ci_low, ci_highr]   r  Tr  g`?g?r   grt!?g/?FgVK5?g5dM?gXCVu^?g*r[?r  r   gP-V?g^'?gS5a?g?r  g!Շ`ⰸ?r   g$x"?gW~=?g	L?r   gX?gN?g/<7#9?gAA?r   g7?g؍s?ghadn?gAB/?c           
      C   sL   t j|dd|d}|rd}nd}|j||d}	t|	j|	jf||fdd d S )	Nr   r  rJ  ZwilsonccZwilson)rM  methodrW  r/   )r   r  rO  r   rP  rQ  )
r=   rD  r  ZcorrconfrS  rT  rK   r\  rU  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^   ra  r  r   )r   r  r	   r:   r   r$  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 5 Q R X d S )Nz must be an integer not less thanr  r   r   rD   r   r  )r=   rD  r   r"   r"   r#   test_invalid_k_n  s    zTestBinomTest.test_invalid_k_nc              	   C   s,   t jtdd tddd W 5 Q R X d S )Nzk must not be greater than nr  r`  r   r  r`  rE   r"   r"   r#   test_invalid_k_too_big  s    z$TestBinomTest.test_invalid_k_too_bigc              	   C   s:   t jdddd}tjtdd |jdd W 5 Q R X d S )	Nr]   r   r  r7  zmust be in the intervalr  r   rL  r   r  r   r   rD   rO  r$  r"   r"   r#   test_invalid_confidence_level  s    z+TestBinomTest.test_invalid_confidence_levelc              	   C   s:   t jdddd}tjtdd |jdd W 5 Q R X d S )	Nr]   r   r  r7  zmethod must ber  zplate of shrimpr\  rc  r$  r"   r"   r#   test_invalid_ci_method  s    z$TestBinomTest.test_invalid_ci_methodc                 C   s"   t jdddd}t|j|j d S )Nr]   r   r  r7  )r   r  r	   Zproportion_estimater:   r$  r"   r"   r#   
test_alias  s    zTestBinomTest.test_aliasN)rN   rO   rP   r-  r6  r8  r9  rI  r   r   r   rV  rX  rY  r[  r^  r_  ra  rb  rd  rf  rg  r"   r"   r"   r#   r1  2  s    


	
	


r1  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`  )r   rH   r   r   fligner)r=   r   r"   r"   r#   r  
  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 )Nr2  )r   asarrayrandnr   tolist)gr   r"   r#   r?        z+TestFligner.test_trimmed1.<locals>.<lambda>r?   r  r  r   r  )	r   r   r   r  r  r  r   ri  r   )	r=   Z_perturbZg1_Zg2_Zg3_Xsq1r  Xsq2r  r"   rn  r#   r    s    

zTestFligner.test_trimmed1c                 C   sz   ddddddddg}d	dd
dddddg}t j||ddd\}}t j|dd |dd dd\}}t|| t|| d S )Nr  r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r   r   r?   r  )r   ri  r   )r=   rI   r  rp  r  rq  r  r"   r"   r#   r  !  s    

$
zTestFligner.test_trimmed2c                 C   s&   t ddd}tttj||dd d S r
  )r   r  rC   r  r   ri  r   r"   r"   r#   r  ;  s    zTestFligner.test_bad_keywordc                 C   s&   t ddd}tttj||dd d S r  )r   r  rC   rD   r   ri  r   r"   r"   r#   r  ?  s    z!TestFligner.test_bad_center_valuec                 C   s   t ttjdg d S rU   )rC   rD   r   ri  rE   r"   r"   r#   test_bad_num_argsC  s    zTestFligner.test_bad_num_argsc                 C   s.   t d}tt jt jft||d g  d S )Nr_   r   )r   rH   r	   r   r   ri  r   r"   r"   r#   r  G  s    
zTestFligner.test_empty_argN)
rN   rO   rP   r  r  r  r  r  rr  r  r"   r"   r"   r#   rh    s   rh  c                  c   s   dddg} dddg}t |D ]\}}tj|}|d}|jdd	d
d}|jdd
d
d}t||D ],\}}	t|d ||	 D ]}
|| ||
< q~qd|| t|d\}}||df| | V  qd S )N)g]YCgQɣ?)gme5gϵ5?)g;jgH?iFeiHcMi%:r   r   r  r_   )rP  rQ  r   r   r   r  )		enumerater   r   r   Zintegersziprangeshufflesplit)Zexpected_resultsZseedssir  r   ZxyZtie_indZnum_ties_per_indrL   r   jrI   r  r"   r"   r#   mood_cases_with_tiesL  s     


rz  c                   @   s   e Zd Zejde dd Zejddddg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dg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_expectr:   r   r"   r"   r#   test_against_SASd  s    zTestMood.test_against_SASzalternative, expected)r  )3oXQ?gpL?)r  )r  gԣl?)r  )r  gpL?c                 C   sv   ddddddddd	dd
dddddddddg}ddddddddd	ddddd	ddddddg}t j|||d}t|| d S )Nrq  r  r   r  rv  rk  r  r  rS  rJ  r  rd  r  r  r  r  r  r  r  r  r|  )r=   r  r  rI   r  rK   r"   r"   r#   test_against_SAS_2  s4    	                  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 )Nr  r   r   rG   )r   r   r  rk  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   s   ddddddddd	d
ddddddddddg}dddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2g}t |}t |}d3|_d4|_ttj||d d5d6d7g d S )8Ng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   r:  g4g^}E	?)r   r   shaper   r   r}  )r=   r   r   r"   r"   r#   test_mood_with_axis_none  sn                                 

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  qD| }| }tj||dd\}}t|D ]:}t|| || gt||d d f ||d d f  qd S )Nr_   r  r   rG   r   r:  )	r   r   r  rk  r   r}  ru  r   Z	transpose)r=   nyr   r   	z_vectestpval_vectestry  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 ]}t||| d  D ]}	|dkr|d d ||	f }
|d d ||	f }nR|dkr||d d |	f }
||d d |	f }n$|||	d d f }
|||	d d f }t|||	f |||	f gt|
| qqtq0d S )N)r   r_   r&   r  r]   r:  r   r   r   )r   r   r  rk  ru  r   r}  r   )r=   r  r   r   r;  r  r  Zaxes_idxrL   ry  Zslice1Zslice2r"   r"   r#   test_mood_3d  s,    

zTestMood.test_mood_3dc                 C   s   t ttjdgg  d S rU   )rC   rD   r   r}  rE   r"   r"   r#   test_mood_bad_arg  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sn tt|dd
d t||d  t|d|d   t	j
tdd tj||dd W 5 Q R X d S )Nr   r  r   )r   r   g      ?r  r  r  r  Hz>r  r   r   zalternative must be...r  z	ekki-ekki)r   r   r  r   r   r   r}  r   r   r   r   rD   )	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  )	r   r   r   r   r   r}  r	   r:   r   )r=   r  r   r   r   rK   r"   r"   r#   test_result  s
    

zTestMood.test_resultN)rN   rO   rP   r   r   r   rz  r~  r  r  r  r  r  r  r  r  r"   r"   r"   r#   r{  c  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   s   t jjddd}t j|dd\}}dddd	d
dddddddddddddddg}t|t| t|| t j|dd\}}dddg}t|| d S )Nr<  90  r   Fr   g+/gY3gtg5Z0gFjg!2gsR{ܿg7Կg>hǿgcz隇gcz隇?g>h?g7?gsR{?g!2?gFj?g5Z0?gt?gY3?g+/?TgƝV?g?gà?)r   r   r   probplotr   r   sort)r=   rI   osmosrZosm_expectedrK   Zres_fitZres_fit_expectedr"   r"   r#   rB     s2                

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@ r   Fsparamsr   r   r"   )r   r   r   r  r   )
r=   rI   osm1osr1osm2osr2Zosm3Zosr3r  r  r"   r"   r#   test_sparams_keyword!  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 )Nr<  r  r   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  ;  s    z7TestProbplot.test_dist_keyword.<locals>.custom_dist.ppfN)rN   rO   rP   r-  r  r"   r"   r"   r#   custom_dist9  s   r  )r   r  )r   r   )	r   r   r   r  r  r   rC   rD   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ot	|  kot	|  kod	kn   t
|| t
|| t
|| t
|| t  }|d}	tj|d|	d t   d S )
Nrq  r]   r   t r   plotF)r   r  r   )pltfigureadd_subplotr   r  r   r  closer   r   r   )
r=   figrI   Zres1Zfitres1Zres2Zfitres2Zres3Zres4axr"   r"   r#   test_plot_kwargC  s$    
@




zTestProbplot.test_plot_kwargc                 C   s   t ttjdgdd d S r   )rC   rD   r   r  rE   r"   r"   r#   test_probplot_bad_args\  s    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  r   r   r   rE   r"   r"   r#   
test_empty`  s    zTestProbplot.test_emptyc              	   C   sT   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 5 Q R X d S )Nr   )invalidr   Tr  r   )r   r   r	   r   r  r   r   rE   r"   r"   r#   test_array_of_size_oneg  s    z#TestProbplot.test_array_of_size_oneN)rN   rO   rP   rB   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ejddddgdddddgdddddd d!d"ggd#d$ Zd%d& Zd'S )(TestWilcoxonc                 C   sh   t ttjdgddg 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xyzmode)rC   rD   r   wilcoxonrE   r"   r"   r#   test_wilcoxon_bad_argo  s    z"TestWilcoxon.test_wilcoxon_bad_argc                 C   sR   t d}tttj||ddd tttj||ddd ttj||dddd d S )Nr<  wilcoxapproxr  prattzsplit)g     @Z@r   )r   rH   rC   rD   r   r  r	   r   r"   r"   r#   test_zero_diffx  s    
zTestWilcoxon.test_zero_diffc              	   C   sX   ddddg}ddddg}t  &}|jtdd tj||dd	d
}W 5 Q R X t|d d S )Nr   r   r]   r^   r_   Sample size too smallr  r  r  Zzero_methodr  )r   g|N?)r
   r  r  r   r  r   )r=   rI   r  r  rK   r"   r"   r#   
test_pratt  s    zTestWilcoxon.test_prattc                 C   sN   dddddddddddg}t j|ddd}t j|d	dd}t j|d
dd}d S )Nr   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   sh  dddddddddg	}t dd}td	d
 t||D }t|j}tj||ddd\}}t|d t|d tj||ddd\}}t|d t|d tj||ddd\}}t|d t|d t	ddddddddddd d!g}t	d"d#d$d%d!d&d'dd(dd)d*g}tj||d+dd,\}}t
|d- t|d.d/d0 tj||d1dd,\}}t
|d- t|d2d/d0 d S )3Nr   r^   ra  rG   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  r  i  g.i?r  i  gFYv]Uj?r  iG  g%^ Ez?r\  r  r#  ry        y   rt     r     p         w            s   rg     F
correctionr  r.  g^҂<?rW  r/   Tg:b+?)ru  r   Zconcatenatert  zerosr   r   r  r   r   r	   )r=   freqnumsrI   r  r  r  r"   r"   r#   test_accuracy_wilcoxon  s*    






""

z#TestWilcoxon.test_accuracy_wilcoxonc                 C   sh   t ddddddddd	d
ddg}t dddddddd
ddddg}tj||ddd}d}t|| d S )Nr\  r  r#  ry  r  r  r  rt  r  r  r  r  r  r  r  r  r  r  r  rg  r  Fr  r  r  )r   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rntt||}t
|drtd S )Nl   	m$S rG   r  r  r   exact
zstatistic)r   r   r   r   r  r   r  r   r   r  hasattrr   )r=   r   rI   r  rK   r   r"   r"   r#   test_wilcoxon_has_zstatistic  s    z)TestWilcoxon.test_wilcoxon_has_zstatisticc                 C   sn   t jdg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 )Nr  r   r  r  g4IťY?r   rW  r/   Tr  gc2_?)r   r  r	   r   )r=   statr  Z
expected_pr"   r"   r#   test_wilcoxon_tie  s    	

zTestWilcoxon.test_wilcoxon_tiec              
   C   sp  ddddddddddg
}dddddd	d
dddg
}t  *}|jtdd tj||ddd\}}W 5 Q R X t|d t|ddd t  ,}|jtdd tj||dddd\}}W 5 Q R X t|d t|ddd t  *}|jtdd tj||ddd\}}W 5 Q R X t|d t|ddd t  ,}|jtdd tj||dddd\}}W 5 Q R X t|d t|ddd d S )N}   r  rG        r  z   r\  |   r        r  r  r  r  r  r  rP  g13}?r&   r6   T)r  r  r  g7a%?r  g?gڏoJT?)r
   r  r  r   r  r	   r   )r=   rI   r  r  r   r  r"   r"   r#   test_onesided  s4    	 

 

zTestWilcoxon.test_onesidedc                 C   sZ   t ddD ]J}t|}t|}t||d  d d t| tt|d t|| q
d S )Nr   re  r   )ru  r   r   r	   r   rA  r   )r=   r   Zpmf1Zpmf2r"   r"   r#   test_exact_basic  s    zTestWilcoxon.test_exact_basicc                 C   s6  t ddddddddd	d
g
}t ddddddddddg
}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 )&Ng(\?g=
ףp=?g(\?gQ޿gQ?g{Gz?gp=
ףgq=
ףp?g      gQ?rp   g?gɿg333333?皙gܿgzGgQοg(\gRQr  r  r  g֔  ?r&   r6   r  gYJ?r  g*  ?r   r<  r  r   g(?g(?gS?)r   r   r   r  r   rH   )r=   rI   r  r  r  r"   r"   r#   test_exact_pval	  s,      zTestWilcoxon.test_exact_pvalrI   r   r   r]   r   r  r_   r  ir)   r*   c                 C   s@   t |\}}t|}||dk  }t|| t|d d S Nr   r   )r   r  r   r   rA  r	   )r=   rI   r   r  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 dd}t "}|jtdd	 t|\}}W 5 Q R X ttj|d
d||f t dd}tt|tj|d
d d S )Nr   rA  r  r   r  r  r+   zExact p-value calculationr  r  r   rb  )r   rH   r	   r   r  r
   r  r  )r=   rI   r  rE  r  r   r  r"   r"   r#   	test_auto/  s    zTestWilcoxon.test_autoN)rN   rO   rP   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  r"   r"   r"   r#   r  n  s"   	
	&
r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestKstatc                    s   t jd t jd  fdddD }dddd	g}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  c                    s   g | ]}t  |qS r"   )r   kstat)r[   r   r>   r"   r#   r\   F  s     z>TestKstat.test_moments_normal_distribution.<locals>.<listcomp>)r   r   r]   r^   gHQ,?glZ)rI?g88}?gcJN?r  r/   r   )momentr   r]   r   g{Gz?{Gz?r  )r   r   r  rk  r   r   r  )r=   Zmomentsr  m1m2Zm3r"   r  r#    test_moments_normal_distributionC  s    z*TestKstat.test_moments_normal_distributionc                 C   s   t ttjg  d S r   )rC   rD   r   r  rE   r"   r"   r#   rF   Q  s    zTestKstat.test_empty_inputc                 C   s*   t d}t j|d< tt|t j d S Nr1   r&   r   rH   r   r	   r   r  rV   r"   r"   r#   r   T  s    

zTestKstat.test_nan_inputc                 C   s*   t d}dD ]}tttj||d qd S )Nr   )r   g/$@r   )r   rH   rC   rD   r   r  r=   r>   r   r"   r"   r#   test_kstat_bad_argZ  s    
zTestKstat.test_kstat_bad_argN)rN   rO   rP   r  rF   r   r  r"   r"   r"   r#   r  B  s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestKstatVarc                 C   s   t ttjg  d S r   rC   rD   r   ZkstatvarrE   r"   r"   r#   rF   b  s    zTestKstatVar.test_empty_inputc                 C   s*   t d}t j|d< tt|t j d S r  r  rV   r"   r"   r#   r   e  s    

zTestKstatVar.test_nan_inputc                 C   s    dg}d}t ttj||d d S )Nr   r   r   r  r  r"   r"   r#   rW   k  s    zTestKstatVar.test_bad_argN)rN   rO   rP   rF   r   rW   r"   r"   r"   r#   r  a  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   s   t ddddd | _d S Nr_     r  r   r$   rI   rE   r"   r"   r#   setup_methods  s    zTestPpccPlot.setup_methodc                 C   sN   d}t j| jdd|d\}}ddddd	g}t|tjdd|d
 t|| d S )Nr_   r   Ng9%	?gxM _?g";9?g®XZ?g?num)r   	ppcc_plotrI   r   r   r  )r=   r  svalsppccppcc_expectedr"   r"   r#   rB   v  s    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 )Nr  r   tukeylambdar   g#B;r/   )r   r  rI   r  r   )r=   Zsvals1Zppcc1Zsvals2Zppcc2Zsvals3Zppcc3r"   r"   r#   	test_dist~  s    
zTestPpccPlot.test_distr  r&  c                 C   sZ   t  }|d}tj| jddt d || |d}tj| jdd|d t   d S Nrq  ir<  r  )r  r  r  r   r  rI   delaxesr  r=   r  r  r"   r"   r#   r    s    


zTestPpccPlot.test_plot_kwargc                 C   s4   t ttj| jdd t ttjdddgdddd d S )Nr   r   r   r]   r   r   )rC   rD   r   r  rI   rE   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   rj  r  r   )r   r  r   r   r  r  float)r=   r  r	  r"   r"   r#   r    s    zTestPpccPlot.test_emptyN)rN   rO   rP   r  rB   r  r   r   r/  r  r  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	S )
TestPpccMaxc                 C   s   dg}t ttj|dd d S r   )rC   rD   r   ppcc_maxrV   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        @{r)   r6   )r   r  r   r   r  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  r  r   r  r_   r6   )r   r  r   r  r   )r=   rI   Zmax1Zmax2Zmax3r"   r"   r#   r    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  r)   r6   )r   r   )r   r  r   rC   rD   r  r   r   r"   r"   r#   
test_brack  s      zTestPpccMax.test_brackN)rN   rO   rP   r  r  r  r  r"   r"   r"   r#   r    s   r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestBoxcox_llfc                 C   sT   t jjdddd}d}t ||}|j d tt| d  }t	|| d S )Nr  r   1  r   r   r   r   r  r   )
r   r   r   
boxcox_llfr   r   r   rA  rA   r   )r=   rI   lmbdallfZllf_expectedr"   r"   r#   rB     s
    $zTestBoxcox_llf.test_basicc                 C   sD   t jjdddd}d}t ||}t |t|}t||dd d S Nr   r   r  r  r   r  r/   )r   r   r   r   listr   r=   rI   r!  r"  Zllf2r"   r"   r#   test_array_like  s
    zTestBoxcox_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   r   r   r   vstackr  r   r%  r"   r"   r#   test_2d_input  s
    zTestBoxcox_llf.test_2d_inputc                 C   s   t ttdg  d S rU   )r   r   isnanr   r   rE   r"   r"   r#   r    s    zTestBoxcox_llf.test_emptyc                 C   s&   ddddg}t d|}t|d d S )Ng     h@g      m@g     x@ig#:x1)r   r   r   )r=   r>   r"  r"   r"   r#   test_gh_6873  s    zTestBoxcox_llf.test_gh_6873N)rN   rO   rP   rB   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dddgdd Zdd Ze	j
ddddgdd Z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  r   r   r!  r   r   r   r   )
r$   r   r   r   r   r   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   r6   )r   r   r   r   r   )r=   r!  rI   x_invr-  r   r"   r"   r#   test_lmbda_None;  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 )Nr  r_   r   r   r  )alphagx@gv[%@r  gxˉEk?g8Bhk @r)   r  rG   r  g\?gx̡&@r   g7(U@gp:sY@)r   r   r   r$   r   r   r   )r=   r   rI   r  rS   r"   r"   r#   
test_alphaE  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   )r   r   rC   rD   r   r   r   r"   r"   r#   test_boxcox_bad_argV  s    zTestBoxcox.test_boxcox_bad_argc                 C   s   t tg jdk d S N)r   )r   r   r   r  rE   r"   r"   r#   r  _  s    zTestBoxcox.test_emptyc                 C   s    t t\}}t|ddd d S )NgsHjdrr   r/   )r   r   _boxcox_datar   )r=   r  Zlamr"   r"   r#   r*  b  s    zTestBoxcox.test_gh_6873boundsr   r   r   r   r   r  c                    sF    fdd}t jtd |d\}} d |  k r< d k sBn td S )Nc                    s   t j|  ddS Nbounded)r6  r\  r   minimize_scalarfunr6  r"   r#   	optimizerm  s    zBTestBoxcox.test_bounded_optimizer_within_bounds.<locals>.optimizerr!  rA  r   r   )r   r   r5  r   )r=   r6  rA  r  r!  r"   r@  r#   $test_bounded_optimizer_within_boundsj  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sXtt| d	  d S )
Nr,  r  r   Zxatolr  c                    s   t j|  ddS )Nr;  )r6  r\  optionsr<  r>  r6  rD  r"   r#   rA    s     zPTestBoxcox.test_bounded_optimizer_against_unbounded_optimizer.<locals>.optimizerrB  r   )r   r   r5  r   r   )r=   r  r!  rA  Zlmbda_boundedr"   rE  r#   2test_bounded_optimizer_against_unbounded_optimizert  s    
z=TestBoxcox.test_bounded_optimizer_against_unbounded_optimizerrA  str)r   r   r  c              	   C   s.   t jtdd tjtd |d W 5 Q R X d S )Nz`optimizer` must be a callabler  rB  r   r   rD   r   r   r5  r=   rA  r"   r"   r#   $test_bad_optimizer_type_raises_error  s    z/TestBoxcox.test_bad_optimizer_type_raises_errorc              	   C   s:   dd }d}t jt|d tjtd |d W 5 Q R X d S )Nc                 S   s   dS rU   r"   r>  r"   r"   r#   rA    s    zCTestBoxcox.test_bad_optimizer_value_raises_error.<locals>.optimizerz;`optimizer` must return an object containing the optimal...r  rB  rH  )r=   rA  r  r"   r"   r#   %test_bad_optimizer_value_raises_error  s    z0TestBoxcox.test_bad_optimizer_value_raises_errorN)rN   rO   rP   r.  r0  r2  r3  r  r*  r   r   r   rC  rF  rJ  rK  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	d
ddgej	ddddgdd Z
dd Zdd ZdS )TestBoxcoxNormmaxc                 C   s   t ddddd | _d S Nr_   r   r  r   r   rE   r"   r"   r#   r    s    zTestBoxcoxNormmax.setup_methodc                 C   s   t | j}t|ddd d S )Nm?rW  r/   r   boxcox_normmaxrI   r   r=   r   r"   r"   r#   test_pearsonr  s    zTestBoxcoxNormmax.test_pearsonrc                 C   s<   t j| jdd}t|ddd t | j\}}t|| d S )Nmlere  	.!?rW  r/   )r   rP  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   re  rN  rT  rW  r/   rO  )r=   Z
maxlog_allr"   r"   r#   test_all  s    zTestBoxcoxNormmax.test_allr\  rS  Zpearsonrr   r6  r7  r8  r9  c                    sN    fdd}t j| j||d}t d |k s4tt| d k sJtd S )Nc                    s   t j|  ddS r:  r<  r>  r@  r"   r#   rA    s    zITestBoxcoxNormmax.test_bounded_optimizer_within_bounds.<locals>.optimizer)r\  rA  r   r   )r   rP  rI   r   r   r   )r=   r\  r6  rA  r   r"   r@  r#   rC    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sftt||d	 d S )
Nr_   r  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   rW  c                    s6   g }D ]}| | | q  }t| |_|S r   )appendr   ZargminrI   )r?  objsr!  rK   rW  Zlmbda_ranger"   r#   rA    s    z@TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.optimizer)rA  r   )r   rP  rI   r   roundr  r   r   )r=   r!  Zlmbda_roundedrA  Zlmbda2r"   rZ  r#   test_user_defined_optimizer  s    	z-TestBoxcoxNormmax.test_user_defined_optimizerc              	   C   sH   t j}tj| jd |d tjtdd tj| jd|d W 5 Q R X d S )N)r  rA  z,`brack` must be None if `optimizer` is givenr  )g       r  )r   r=  r   rP  rI   r   r   rD   rI  r"   r"   r#   2test_user_defined_optimizer_and_brack_raises_error  s    
zDTestBoxcoxNormmax.test_user_defined_optimizer_and_brack_raises_errorN)rN   rO   rP   r  rR  rU  rV  r   r   r   rC  r\  r]  r"   r"   r"   r#   rL    s   rL  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   s   t ddddd | _d S r  r   rE   r"   r"   r#   r    s    zTestBoxcoxNormplot.setup_methodc                 C   sN   d}t j| jdd|d\}}ddddd	g}t|tjdd|d
 t|| d S )Nr_   r  r   r  g!X4}?g΁i?g-	15?gW$?g\ܱ{?r  )r   boxcox_normplotrI   r   r   r  )r=   r  Zlmbdasr	  r
  r"   r"   r#   rB     s    zTestBoxcoxNormplot.test_basicr  r&  c                 C   sZ   t  }|d}tj| jddt d || |d}tj| jdd|d t   d S r  )r  r  r  r   r_  rI   r  r  r  r"   r"   r#   r    s    


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   )rC   rD   r   r_  rI   rE   r"   r"   r#   r    s    z&TestBoxcoxNormplot.test_invalid_inputsc                 C   s   t tg ddjdk d S r  )r   r   r_  r   rE   r"   r"   r#   r    s    zTestBoxcoxNormplot.test_emptyN)rN   rO   rP   r  rB   r   r   r/  r  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S )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  r/   )r   r   r   yeojohnson_llfr$  r   r%  r"   r"   r#   r&  	  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   r   ra  r   r'  r  r   r%  r"   r"   r#   r(    s
    z TestYeojohnson_llf.test_2d_inputc                 C   s   t ttdg  d S rU   )r   r   r)  r   ra  rE   r"   r"   r#   r    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ddddg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dS )TestYeojohnsonc                 C   s  t jd}tdd|dd }t |dks0t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 st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 rTtt |dkrht|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   r   r   r   r,  r   r   r]   )
r   r   r   r$   r   r   r   
yeojohnsonr   r   )r=   r   rI   r-  posnegr"   r"   r#   r.    sL    


 zTestYeojohnson.test_fixed_lmbdar!  r   r  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 rDt | | d ||< n$t | | | d d| d ||< t|d t dkrdt d|  | |   d dd|   || < ndt | |    || < |S )Nr   r   r   r   r   )r   r  r  r   absspacingexppower)rI   r!  r/  rd  r"   r"   r#   _inverse_transformQ  s    $
z:TestYeojohnson.test_lmbda_None.<locals>._inverse_transformi N  r  r   r   )r   r   r   r  r  r   r6   )r   r   r  normalr   rc  r   r   linalgr   r?   rA   )r=   r!  rj  Z	n_samplesrI   r/  r-  r   r"   r"   r#   r0  L  s    
zTestYeojohnson.test_lmbda_Nonec                 C   s   t tg jdk d S r4  )r   r   rc  r  rE   r"   r"   r#   r  q  s    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  r/   )r   r   r   rc  r$  r   )r=   rI   Zxt1r  Zxt2r"   r"   r#   r&  t  s    zTestYeojohnson.test_array_liker   c              	   C   s:   t jd|d}d}tjt|d t| W 5 Q R X d S )Nr&   r   z>Yeo-Johnson transformation is not defined for complex numbers.r  )r   rH   r   r   rD   r   rc  )r=   r   rI   err_msgr"   r"   r#   test_input_dtype_complexz  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 )Nr*   r   r  r/   )r   rH   Zfloat64r   rc  r   )r=   r   Zx_intZx_floatZxt_intZ	lmbda_intZxt_floatZlmbda_floatr"   r"   r#   test_input_dtype_integer  s    z'TestYeojohnson.test_input_dtype_integerc                 C   s|   t dddddddddd	dd
dddddddddddddg}t|\}}t|d \}}t||dd t||dd d S )Ng(HAgG."Ag    5fAg(@Ag   VAgHzuoAg)\¿+Ag(\^@Ag    RAg    #Ag\µ=Ag
ףNAgp=oHAg    6bAg{csAg)\tmhAg/BAg   '|Ag(\wipAg    ݃hAgQlBAgףp @Ar   rW  r/   )r   r   r   rc  r   r   )r=   rI   Zxt_yeoZlam_yeoZxt_boxZlam_boxr"   r"   r#   test_input_high_variance  s6                   z'TestYeojohnson.test_input_high_varianceN)rN   rO   rP   r.  r   r   r   r0  r  r&  r   Z	complex64Z
complex128rn  Zint8uint8Zint16Zint32ro  rp  r"   r"   r"   r#   rb    s   /
$

rb  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestYeojohnsonNormmaxc                 C   s   t ddddd | _d S rM  r   rE   r"   r"   r#   r    s    z"TestYeojohnsonNormmax.setup_methodc                 C   s   t | j}t|ddd d S )Ng?rW  r/   )r   yeojohnson_normmaxrI   r   rQ  r"   r"   r#   rU    s    zTestYeojohnsonNormmax.test_mlec                 C   sD   ddddddddd	d
dddddg}t |}tj|ddds@td S )Ngffffff@g r   r  gffffff?g333333@r  gffffff@g?g@r  r  g"@r  g      gzG?r  r  )r   rs  r   Zallcloser   )r=   rI   r!  r"   r"   r#   test_darwin_example  s     
z)TestYeojohnsonNormmax.test_darwin_exampleN)rN   rO   rP   r  rU  rt  r"   r"   r"   r#   rr    s   rr  c                   @   sZ  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dd Zdd Z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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ejdejd"ed#d$d%d&d'd(ged)d*gdfejd+ed,d-d-d.d/d/gejd0 d1  edd2gdfej	d3ed4d5d5d6d7d7ged8d9g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@dA ZejdBdCdDd1dEdFdGejgedCdDd1dEdFdGejgdHdIdJdKejdLdMgggejdejejej	gdNdO ZejdBdCdDd1dEdFdGejgedCdDd1dEdFdGejgdHdIdJdKejdLdMgggejdejejej	gdPdQ Z dRdS Z!dTdU Z"dVdW Z#dXS )YTestCircFuncsztest_func,expectedgA:wv?g @pz?gE|2@c                 C   s0   t ddddddg}t||dd|d	d
 d S Nc  r_   r   r~  r   ^  h  rQ  r  r/   r   r   r   r=   	test_funcr  rI   r"   r"   r#   test_circfuncs  s    zTestCircFuncs.test_circfuncsc              	   C   s   t dddddddg}| }tj|dd	}t||d
d |t j d  }|d }tj|dd	}t||dd |	 }tj
|dd	}t||dd d S )Nr<  rN  r4  r0     g     4@g3333333@ry  rz  r   r/   r  r  r  )r   r   r?   r   circmeanr   pir@   circvarrA   circstd)r=   rI   M1M2V1V2S1S2r"   r"   r#   test_circfuncs_small  s    z"TestCircFuncs.test_circfuncs_smallztest_func, numpy_funcc                 C   s<   t dgd dgd  }||}||}t||dd d S )Ng˛ɦv9?r   guv9?r   g:0yU>r  r{  )r=   r}  Z
numpy_funcrI   Zcircstatrk  r"   r"   r#   test_circfuncs_close  s    z"TestCircFuncs.test_circfuncs_closec              
      s   t ddddddgddd	d
ddgddddd	dgg tj dd}tj  dd}t||dd tj ddd} fddt jd D }t||dd tj ddd} fddt jd D }t||dd d S )Nrw  r_   r   r~  r   rx  _  r)   r^   `  r'   ]  e  r*   f  d  ry  rz  r.   r/   r   rQ  r;  c                    s   g | ]}t j | d dqS ry  rz  r   r  r[   rL   rI   r"   r#   r\     s     z4TestCircFuncs.test_circmean_axis.<locals>.<listcomp>r   c                    s&   g | ]}t j d d |f ddqS Nry  rz  r  r  r  r"   r#   r\     s     )r   r   r   r  ravelr   ru  r  )r=   r  r  r"   r  r#   test_circmean_axis  s    z TestCircFuncs.test_circmean_axisc              
      s   t ddddddgddd	d
ddgddddd	dgg tj dd}tj  dd}t||dd tj ddd} fddt jd D }t||dd tj ddd} fddt jd D }t||dd d S )Nrw  r_   r   r~  r   rx  r  r)   r^   r  r'   r  r  r*   r  r  ry  rz  dy=r/   r   r  c                    s   g | ]}t j | d dqS r  r   r  r  r  r"   r#   r\     s     z3TestCircFuncs.test_circvar_axis.<locals>.<listcomp>r   c                    s&   g | ]}t j d d |f ddqS r  r  r  r  r"   r#   r\     s     )r   r   r   r  r  r   ru  r  )r=   r  r  r"   r  r#   test_circvar_axis  s    zTestCircFuncs.test_circvar_axisc              
      s   t ddddddgddd	d
ddgddddd	dgg tj dd}tj  dd}t||dd tj ddd} fddt jd D }t||dd tj ddd} fddt jd D }t||dd d S )Nrw  r_   r   r~  r   rx  r  r)   r^   r  r'   r  r  r*   r  r  ry  rz  r  r/   r   r  c                    s   g | ]}t j | d dqS r  r   r  r  r  r"   r#   r\   	  s     z3TestCircFuncs.test_circstd_axis.<locals>.<listcomp>r   c                    s&   g | ]}t j d d |f ddqS r  r  r  r  r"   r#   r\   	  s     )r   r   r   r  r  r   ru  r  )r=   r  r  r"   r  r#   test_circstd_axis  s    zTestCircFuncs.test_circstd_axisc                 C   s*   ddddddg}t ||dd|d	d
 d S rv  )r   r|  r"   r"   r#   test_circfuncs_array_like	  s    z'TestCircFuncs.test_circfuncs_array_liker}  c                 C   s   t t|g  d S r   )r   r   r)  )r=   r}  r"   r"   r#   r  	  s    zTestCircFuncs.test_emptyc                 C   s.   ddddddt jg}tt ||dd d S )	Nrw  r_   r   r~  r   rx  ry  rz  r   r   r   r)  r=   r}  rI   r"   r"   r#   test_nan_propagate	  s    z TestCircFuncs.test_nan_propagateg5:v@gfPb?r  gee?gOQOv?g#q@gauy+@c                 C   s   t dddddddg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 ]Z}||d|d}|d krztt | qPt|d || dd tt |dd    qPd S )Nrw  r_   r   r~  r   rx  r   r  r)   r^   r  r'   r  ry  r  r   r  r/   )r   r   r   keysr   r)  r   r   r=   r}  r  rI   r;  outr"   r"   r#   test_nan_propagate_array	  s    
z&TestCircFuncs.test_nan_propagate_arraygrQvv@g     v@r  r  g     8v@r  g     u@g5@v?g2>Bjv@gG2?gaF+?gz?gA ~@g?r  r   gX҄?gJPm$@gj  @g ?g)h;@g{ ?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 ]\}||dd|d}|d krt||| dd qTt|d d || dd tt |d  qTd S )Nrw  r_   r   r~  r   rx  r  r)   r^   r  r'   r  ry  omit)rQ  
nan_policyr;  r  r/   r   )r   r   r   r  r   r   r)  r  r"   r"   r#   test_nan_omit_array0	  s    z!TestCircFuncs.test_nan_omit_arrayc                 C   s0   ddddddt jg}t||ddd	|d
d d S )Nrw  r_   r   r~  r   rx  ry  r  rQ  r  r  r/   )r   r   r   r|  r"   r"   r#   test_nan_omitO	  s
     zTestCircFuncs.test_nan_omitc                 C   s2   t jt jt jt jt jg}tt ||dd d S )Nr  r  r  r  r"   r"   r#   test_nan_omit_allX	  s    zTestCircFuncs.test_nan_omit_allc                 C   sj   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 d S )Nr  r   )r  r;  r   )r   r   r   r   r)  r   r   )r=   r}  rI   r  r"   r"   r#   test_nan_omit_all_axis^	  s    z$TestCircFuncs.test_nan_omit_all_axisrI   rw  r_   r~  r   rx  r  r)   r^   r  r'   r  c                 C   s   t t||ddd d S )Nry  raiser  rC   rD   r  r"   r"   r#   test_nan_raiseg	  s    zTestCircFuncs.test_nan_raisec                 C   s   t t||ddd d S )Nry  foobarr  r  r  r"   r"   r#   test_bad_nan_policyp	  s    z!TestCircFuncs.test_bad_nan_policyc                 C   s$   d}|}t |}t||dd d S )Nr   r   r/   )r   r  r   )r=   rI   r  r  r"   r"   r#   test_circmean_scalary	  s    
z"TestCircFuncs.test_circmean_scalarc                 C   s@   t tdddtjtj }t|tjk  t|tj k d S )Nr   r   r  )r   r  r   rH   r  r   )r=   mr"   r"   r#   test_circmean_range	  s    z!TestCircFuncs.test_circmean_rangec                 C   sZ   t jddgdd}ttj|ddd ttj|dddd	d
 ttj|dddd	d
 d S )N   r   rq  r   r  rz  g     @e@gLwqA?r  r/   g)#p_4@)r   r   r	   r   r  r   r  r  r   r"   r"   r#   test_circfuncs_uint8	  s    z"TestCircFuncs.test_circfuncs_uint8N)$rN   rO   rP   r   r   r   r   r  r  r  r~  r  r   r?   r@   rA   r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r"   r"   r"   r#   ru    s   







	

  
 



ru  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dddg d S r  rC   rD   r   median_testrE   r"   r"   r#   test_bad_n_samples	  s    z!TestMedianTest.test_bad_n_samplesc                 C   s   t ttjg dddg d S r  r  rE   r"   r"   r#   r  	  s    z TestMedianTest.test_empty_samplec                 C   s,   t ttjddddgdddgddgdd d S )Nr   r   r   r   Ztiesr  rE   r"   r"   r#   test_empty_when_ties_ignored	  s    
   z+TestMedianTest.test_empty_when_ties_ignoredc                 C   s@   t ttjdddgdddg t ttjdddgdddgdd d S )Nr   abover  r  rE   r"   r"   r#   test_empty_contingency_row	  s    z)TestMedianTest.test_empty_contingency_rowc                 C   s"   t ttjdddgddgdd d S )Nr   r   r]   r^   r_   r  r  r  rE   r"   r"   r#   test_bad_ties	  s    zTestMedianTest.test_bad_tiesc                 C   s"   t ttjdddgddgdd d S )Nr   r   r]   r^   r_   r  r  r  rE   r"   r"   r#   r  	  s    z"TestMedianTest.test_bad_nan_policyc                 C   s"   t ttjdddgddgdd d S )Nr   r   r]   r^   r_   r  )r  )rC   r  r   r  rE   r"   r"   r#   r  	  s    zTestMedianTest.test_bad_keywordc                 C   s`   dddg}dddg}t ||\}}}}t|d t|ddgddgg t|d t|d d S )Nr   r   r]   r  r   )r   r  r	   r   )r=   rI   r  r  r  Zmedtblr"   r"   r#   test_simple	  s    



zTestMedianTest.test_simplec                 C   s   ddddg}ddg}ddd	g}t |||\}}}}t|d t|d
ddgddd
gg t j|||dd\}}}}t|d t|d
ddgdd
d
gg t j|||dd\}}}}t|d t|d
ddgdd
d
gg d S )Nr   r   r]   r^   r_   r&   r)   r*   r'   r   r   r  r  )r   r  r	   )r=   rI   r  zr  r  r  r  r"   r"   r#   test_ties_options	  s    



z TestMedianTest.test_ties_optionsc                 C   s   ddt jg}dddg}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_   r&   	propagater  r  g     ?gإvao?r  r   r  )	r   r   r   r  r	   r   r   rC   rD   )r=   rI   r  Zmt1r   r  r  r  r"   r"   r#   test_nan_policy_options	  s    



z&TestMedianTest.test_nan_policy_optionsc                 C   s<  dddddg}ddddg}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]   r^   r_   r&   r*   r   )Zlambda_Fr  )r   r  r	   Zchi2_contingencyr   )r=   rI   r  r  r  r  r  Zexp_statZexp_pZdofer"   r"   r#   rB   	  s(    







zTestMedianTest.test_basicr  FTc                 C   sB   dddg}dddg}t j|||d}t|j|j|j|jf| d S )Nr   r   r]   r  )r   r  r	   r:   r   r  table)r=   r  rI   r  rK   r"   r"   r#   r  
  s    

zTestMedianTest.test_resultN)rN   rO   rP   r  r  r  r  r  r  r  r  r  r  rB   r   r   r   r  r"   r"   r"   r#   r  	  s   r  c                   @   sz   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dd Zdd Zdd ZdS )TestDirectionalStatsc                 C   s   t t ddddddddd	g	 }t t d
ddddddddg	 }t jt |t | t |t | t |fdd}t|}|j}t 	|d}t dddg}t
|| d S )Ng33333su@g      O@g33333sB@g      ;@g     pv@g@g333333I@gYv@r  gfffffP@g,Q@gfffffQ@gfffffT@g     S@g     @R@g33333SQ@gffffffM@g33333I@r   r:  r^   gHP?g&S:g[<)r   Zdeg2radr   stackcossinr   directional_statsmean_directionr[  r   )r=   declZinclr>   dirstatsdirectional_meanZmean_roundedZreference_meanr"   r"   r#   "test_directional_stats_correctness
  s.       
   

z7TestDirectionalStats.test_directional_stats_correctnesszangles, refr   r   r   r   c                 C   sL   t |r||}tjt|t|gdd}dt|j }t|| d S )Nr   r:  )	callabler   r  r  r  r   r  mean_resultant_lengthr   )r=   Zanglesr   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t j |d }t jt |t |fdd}t|}|j	}t 
|d |d }|dt j  }t|}t|| d|j }t|}	t||	 d S )Nl	   }7Qh0P4u&4M r   )r   r   r:  r   )r   r   r   r  r  r  r  r   r  r  Zarctan2r  r   r  r  )
r=   r   ZtestdataZtestdata_vectorr  r  Zdirectional_mean_angler  Zdirectional_varZcircular_varr"   r"   r#   test_directional_stats_2d1
  s$    





z.TestDirectionalStats.test_directional_stats_2dc                 C   sr   t dddgdddgg}t |d}t dddgdddggdddgdddggg}tj|dd}t||j d S )	N+Pz?r  r         )r   r   r   r   r   r   r:  )r   r   Ztiler   r  r   r  )r=   r>   Z
full_arrayr  r  r"   r"   r#    test_directional_mean_higher_dimE
  s    z5TestDirectionalStats.test_directional_mean_higher_dimc                 C   sR   dddgdddgg}t |}t|}t|}t|j|j t|j|j d S )Nr  r  r   r  r   )r   rj  r   r  r   r  r  )r=   r>   Z
data_arrayrK   r   r"   r"   r#   )test_directional_stats_list_ndarray_inputR
  s    


z>TestDirectionalStats.test_directional_stats_list_ndarray_inputc              	   C   s<   t d}d}tjtt|d t| W 5 Q R X d S )N)r_   zIsamples must at least be two-dimensional. Instead samples has shape: (5,)r  )	r   r   r   r   rD   reescaper   r  )r=   r>   r  r"   r"   r#   test_directional_stats_1d_error\
  s    
z4TestDirectionalStats.test_directional_stats_1d_errorc                 C   sl   t dddgdddgg}tj|dd}|t jj|ddd	 }tj|d
d}t|j|j t|j|j d S )Nr  r  r   g+Pz?g      T)	normalizer   )r;  ZkeepdimsF)	r   r   r   r  rl  r   r   r  r  )r=   r>   rK   Znormalized_datar   r"   r"   r#    test_directional_stats_normalized
  s    z5TestDirectionalStats.test_directional_stats_normalizeN)rN   rO   rP   r  r   r   r   r   r  r  r  r  r  r  r  r"   r"   r"   r#   r  
  s   

r  )Rr`   r)  Znumpyr   Znumpy.randomr   Znumpy.testingr   r   r   r   r   r   r	   r
   r   r   rC   r  Zscipyr   r   Zscipy.stats._morestatsr   Zcommon_testsr   Z
_hypotestsr   r   Zscipy.stats._binomtestr   Zscipy.stats._distr_paramsr   dictZ
matplotlibZrcParamsZmatplotlib.pyplotZpyplotr  r  	Exceptionr  r  r  r  r  r  r  r  r  r  r$   r%   rQ   re   r   r   r  r  r  r  r1  rh  rz  r{  r  r  r  r  r  r  r  r5  r+  rL  r^  r`  rb  rr  ru  r  r  r"   r"   r"   r#   <module>   s  (

!kd I E= WD .^ U6%)                                                                                                                                                                                                                                                                                                                                                                               2uH# e 