B
    0d               @   s  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mZ d dlmZ d dlmZ dd	lmZ d
dlmZ d dlmZ y&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
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,G d+d, d,Z-G d-d. d.Z.G d/d0 d0Z/G d1d2 d2Z0G d3d4 d4Z1G d5d6 d6Z2G d7d8 d8Z3G d9d: d:Z4G d;d< d<Z5G d=d> d>e5Z6G d?d@ d@Z7G dAdB dBZ8G dCdD dDZ9G dEdF dFZ:G dGdH dHZ;G dIdJ dJZ<G dKdL dLZ=G dMdN dNZ>G dOdP dPZ?G dQdR dRZ@dSdTdUdVdWdXdYdZd[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gZAG dd dZBG dd dZCG dd dZDG dd dZEG dd dZFG dd dZGG dd dZHG dd  d ZId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)_binary_search_for_binom_tstZAggbackendTFgjt?gZd;?gV-?g      ?gX9v?g-?gx&1?g+?g+?gCl?gV-?gʡE?g/$?gףp=
?gGz?gCl?gGz?grh|?g\(\?g/$?gh|?5?g1Zd?gMb?gjt?g}?5^I?g)\(?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   	               g      "@)g4`H#j@gO[%@g+=)rtolg      $@)gai	@gӇu8@g&.>g_紫@   )decimal)gYs?g1O@)r   	bayes_mvsr   	statisticr   minmax)selfdatameanvarstd r'   R/var/www/html/venv/lib/python3.7/site-packages/scipy/stats/tests/test_morestats.py
test_basic/   s    zTestBayes_mvs.test_basicc             C   s   t ttjg  d S )N)assert_raises
ValueErrorr   r   )r"   r'   r'   r(   test_empty_inputA   s    zTestBayes_mvs.test_empty_inputc             C   s4   t d}d}t|}x|D ]}t|| qW d S )N   )r    r!   )nparanger   r   r   )r"   x
attributesresir'   r'   r(   test_result_attributesD   s
    


z$TestBayes_mvs.test_result_attributesN)__name__
__module____qualname__r)   r,   r4   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 )
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   g      "@g?)g4`H#j@gO[%@g+=)r   g      $@)gai	@gӇu8@g&.>g_紫@r   )r   )gYs?g1O@)r   mvsdistr   r$   r   interval)r"   r#   r$   r%   r&   r'   r'   r(   r)   N   s    zTestMvsdist.test_basicc             C   s   t ttjg  d S )N)r*   r+   r   r9   )r"   r'   r'   r(   r,   ]   s    zTestMvsdist.test_empty_inputc             C   s   dg}t ttj| d S )Nr   )r*   r+   r   r9   )r"   r#   r'   r'   r(   test_bad_arg`   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 d Q R X d S )
Nerrorc             S   s   g | ]}|  qS r'   )r$   ).0r0   r'   r'   r(   
<listcomp>j   s    z*TestMvsdist.test_warns.<locals>.<listcomp>r   r      c             S   s   g | ]}|  qS r'   )r$   )r=   r0   r'   r'   r(   r>   k   s          )warningscatch_warningssimplefilterRuntimeWarningr   r9   )r"   r'   r'   r(   
test_warnse   s    
zTestMvsdist.test_warnsN)r5   r6   r7   r)   r,   r;   rF   r'   r'   r'   r(   r8   M   s   r8   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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 )PNg)\(?g{Gz@gq=
ףp@gHzG$@g@gQ	@gq=
ףp?gQ@gzG?g      @gQ?gRQ?gQ	@g(\?gzG?gzG@g(\#@g333333@gGz?gp=
ף@g   ?r   )r   g   Ɍ?g(\?g=
ףp=?g\(\@gffffff@g\(\?g(\?gGz@g(\gףp=
@g?g)\(?gRQgp=
ף?g@g
ףp=
?g{Gz?g\(\@g{Gz@gQ@gIddY?gDio?r?   rA   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normrvs)
r"   x1wpwshapiro_testx2Zx3Zx4Z
W_expectedZ
p_expectedr'   r'   r(   r)   o   sH    



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 )/Ng)\(?g{Gz@gq=
ףp@gHzG$@g@gQ	@gq=
ףp?gQ@gzG?g      @gQ?gRQ?gQ	@g(\?gzG?gzG@g(\#@g333333@gGz?gp=
ף@g   ?r   )r   g   Ɍ?g(\?g=
ףp=?g\(\@gffffff@g\(\?g(\?gGz@g(\gףp=
@g?g)\(?gRQgp=
ף?g@g
ףp=
?g{Gz?g\(\@g{Gz@gQ@gIddY?gDio?r?   )r   rM   r   r    rN   )r"   rQ   rR   rS   rT   rU   r'   r'   r(   test_2d   s$    

zTestShapiro.test_2dc             C   s&   t ttjg  t ttjg g g g d S )N)r*   r+   r   rM   )r"   r'   r'   r(   r,      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)r*   r+   r   rM   r.   arrayobject)r"   r'   r'   r(   test_not_enough_values   s    z"TestShapiro.test_not_enough_valuesc             C   s   dg}t ttj| d S )Nr   )r*   r+   r   rM   )r"   r0   r'   r'   r(   r;      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 )Ng      $@r   g      ?)	r.   r/   nanr   rM   r	   r    r   rN   )r"   r0   rR   rS   rT   r'   r'   r(   test_nan_input   s    



zTestShapiro.test_nan_inputN)	r5   r6   r7   r)   rV   r,   rZ   r;   r\   r'   r'   r'   r(   rG   n   s   +rG   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 )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 )	NiI2   )rK   
   r   g	@)	r   standard_exponentialstandard_normalr   andersonr   r.   onesr   )r"   rsrQ   rU   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 Q R X t||d k d S )	NiIr^   )rK   Zexponr`   ignore)allr_   )	r   rb   rc   r   rd   r   r.   errstater   )r"   rf   rQ   rU   rg   rh   ri   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 )NrH   g        r   gumbelr   r   r_   )r.   re   r   rd   lengumbel_lfitlogcdflogsfr/   r$   r   )r"   rj   Za2rh   ri   nZxbarsrt   ru   r3   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)r*   r+   r   rd   )r"   r'   r'   r(   r;      s    zTestAnderson.test_bad_argc             C   s0   t d}|jdd}t|}d}t|| d S )NiIr^   )rK   )r    critical_valuessignificance_level)r   rb   r   rd   r   )r"   rf   r0   r2   r1   r'   r'   r(   r4      s
    
z#TestAnderson.test_result_attributesc       	      C   sF   t d}|jdd}t|d\}}}t|d\}}}t|| d S )NiIrH   )rK   rp   rr   )r   rp   r   rd   r   )	r"   rf   r0   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 )	NiIrH   )rK   gZd;?r   Zgumbel_rr`   r_   )r   rp   r.   re   r   rd   r   r   )
r"   rf   rQ   rU   r}   r~   r   r   r   r   r'   r'   r(   test_gumbel_r  s    
zTestAnderson.test_gumbel_rN)
r5   r6   r7   rk   ro   rx   r;   r4   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 )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 )-NgYC@g     D@gfffffE@g     @F@g     F@g      G@gG@g      M@gC@gfffffC@gC@g33333D@gfffffD@g33333sE@gfffffE@gfffffF@g      A@g     A@g     C@g      D@g     E@g      F@g     F@gffffffA@g33333A@gB@gfffffB@gD@gffffffE@F)midrankg@r?   gCl?gvq-?g,Ԛ?gl@gPk	@r   rA   r@   gJ4a?gMb0?)atol)r.   rX   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 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 )-NgYC@g     D@gfffffE@g     @F@g     F@g      G@gG@g      M@gC@gfffffC@gC@g33333D@gfffffD@g33333sE@gfffffE@gfffffF@g      A@g     A@g     C@g      D@g     E@g      F@g     F@gffffffA@g33333A@gB@gfffffB@gD@gffffffE@T)r   gQ@r?   gCl?gvq-?g,Ԛ?gl@gPk	@r   rA   r@   gMb`?gMb0?)r   )r.   rX   r   r   r   r   r   )r"   r   r   r   r   r   r   r   r'   r'   r(   test_example1b0  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   r-   )      !      i  r   :   %   rH   A   r      i     $      v   "         C   9   >   r      Z   ra   <      =   1      8      O   T   ,   ;         i6  L               F   e   J   0   i  r      i     7   i@  h         /            i  W   x      G   *   rA      r?      r   4   _   a   3   r@         D   M   P   j      R   6      .   o   '   ?         r^   f   H         X            r   ig  i  i[  r   i     i  #   i  b   U   [   +                   B   F)r   gM
@g^I+?g~:?g+e?gH.!@gcZB>h@r   g	^)p?gMb0?)r   )r   r   r   r   r   )r"   r   r   r   r   t5t6t7t8t9t10t11t12t13t14r   r   r   r'   r'   r(   test_example2a@  s4    " 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   r-   r   r   r   r   i  r   r   r   rH   r   r   r   i  r   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   i6  r   r   r   r   r   r   r   r   r   i  r   r   i  r   r   i@  r   r   r   r   r   r   r   i  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   r   r^   r   r   r   r   r   r   r   r   r   ig  i  i[  r   i  r   i  r   i  r   r   r   r   r   r   r   r   r   r   T)r   g'1Z
@g^I+?g~:?g+e?gH.!@gcZB>h@r   g	^)p?gMb0?)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_example2b`  s4    " z TestAndersonKSamp.test_example2bc          	   C   s.  t ddd}t 0}|jtdd tj||d gdd\}}}W d Q R X t|dd	 t|d
 t ,}|jtdd t||d g\}}}W d Q R X t|dd	 t|d
 t 0}|jtdd tj||d gdd\}}}W d Q R X t|dd t|d t ,}|jtdd t||d g\}}}W d 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   rH   zp-value floored)messageg     @D@F)r   g=
ףpD@r?   gMbP?gGzD@zp-value cappedg      ?g?ܵr@   g      ?g?ܵg      @g!u?gףp=
׳?g{Gzt?r   )r   r   r   gBiq?g鷯?g      '@g:M@g46<Rv?gMb@?g      +@g6>W[1@g1ZGUS?g-C6?)
r.   linspacer
   filterUserWarningr   r   r   r	   r   )r"   rQ   suprw   _r   r'   r'   r(   test_R_kSamples  sB    !&
"
&
"
z!TestAndersonKSamp.test_R_kSamplesc             C   s   t ttjtd d S )NrA   )r*   r+   r   r   r.   re   )r"   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 )NrA   )r*   r+   r   r   r.   re   )r"   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 )NrA   )r*   r+   r   r   r.   re   )r"   r'   r'   r(   test_empty_sample  s    z#TestAndersonKSamp.test_empty_samplec          
   C   sR   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|| d S )NgYC@g     D@gfffffE@g     @F@g     F@g      G@gG@g      M@gC@gfffffC@gC@g33333D@gfffffD@g33333sE@gfffffE@gfffffF@F)r   )r    r{   r|   )r.   rX   r   r   r   )r"   r   r   r2   r1   r'   r'   r(   r4     s
    z(TestAndersonKSamp.test_result_attributesN)r5   r6   r7   r   r   r   r  r  r	  r
  r  r4   r'   r'   r'   r(   r     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 d Q R X t|dd t|d	d d S )
Nr   r   r?   r@   r   z%Ties preclude use of exact statistic.g     7@r   g8#oG?)r
   r  r  r   ansarir   )r"   r0   yr  Wpvalr'   r'   r(   
test_small  s    zTestAnsari.test_smallc          	   C   s^   t d}t d}t "}|td t||\}}W d Q R X t|dd t|dd d S )N)r   k   rH   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   rH   r  r  r  r   r   r  r  r  r   r  z%Ties preclude use of exact statistic.g     0g@r   g|:?)r.   rX   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@   r-   rA   r   r   ra   r   g      $@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 )Nr   )r*   r+   r   r  )r"   r'   r'   r(   r;     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 d Q R X d}t|| d S )Nr   r   r?   r@   r   z%Ties preclude use of exact statistic.)r    rN   )r
   r  r  r   r  r   )r"   r0   r  r  r2   r1   r'   r'   r(   r4     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 d Q R X d S )Nr   r   r?   r@   rA   r   r   r   z!'alternative' must be 'two-sided')matchfoo)alternative)r*   r+   r   r  )r"   rQ   rU   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   rA   ra   r-   r   r   g      @g      !@g      #@g      %@g      '@g      )@less)r!  greatergffffff?g?g-q=)r   r   )r   r  rN   AssertionErrorr   pmfrq   r   )
r"   rQ   rU   r    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?   r@   rA   r   r   r   r$  g@A?r%  gG$I?g%I$I?c             C   s$   t j|||dj}t||dd d S )N)r!  g-q=)r   )r   r  rN   r   )r"   r0   r  r!  expectedr  r'   r'   r(   test_alternative_exact_with_R2  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   rA   rH   {   )rK   rL   r   r$  )r!  r%  g      ?g-q=)r   g        r   g      ?r   )r   rO   rP   r  rN   r   )r"   rQ   rU   r(  r)  r  r'   r'   r(   test_alternative_approxQ  s    z"TestAnsari.test_alternative_approxN)r5   r6   r7   r  r  r  r;   r4   r"  r*  pytestmarkparametrizer,  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"   argsTr  r'   r'   r(   	test_datai  s    zTestBartlett.test_datac             C   s   t ttjdg d S )Nr   )r*   r+   r   r=  )r"   r'   r'   r(   r;   p  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 )N)r    rN   )r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r   r=  r   )r"   r>  r2   r1   r'   r'   r(   r4   t  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 )N)r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r	   r.   r[   r   r=  )r"   r>  r'   r'   r(   test_empty_argz  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.   rX   r*   r+   r   r=  r3  )r"   r0   r'   r'   r(   test_1d_input  s    zTestBartlett.test_1d_inputN)r5   r6   r7   r@  r;   r4   rA  rB  r'   r'   r'   r(   r2  g  s
   r2  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{]?)r3  r4  r5  r6  r7  r8  r9  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trimmedg        )rE  proportiontocut)r   rD  r3  r4  r5  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 )Ng333333?g       @g      @g      @g      @g      @g      @g      Y@g        g      @g      @g      @g      i@i  rF  g      ?)rE  rG  r   r_   r$   )rE  )r.   randomseedpermutationr   rD  r   )
r"   r0   r  rU   ZW0Zpval0rH  rI  rJ  rK  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   i  r?   r$   )rE  Zmedian)r.   r  rM  rN  rO  r   rD  r   )r"   r0   rU   r  rH  rI  rJ  rK  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   r   g?)portiontocut)r.   r  r*   	TypeErrorr   rD  )r"   r0   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   r   trim)rE  )r.   r  r*   r+   r   rD  )r"   r0   r'   r'   r(   test_bad_center_value  s    z TestLevene.test_bad_center_valuec             C   s   t ttjdg d S )Nr   )r*   r+   r   rD  )r"   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 )N)r    rN   )r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r   rD  r   )r"   r>  r2   r1   r'   r'   r(   r4     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@   )r.   rX   r*   r+   r   rD  r3  )r"   r0   r'   r'   r(   rB    s    zTestLevene.test_1d_inputN)r5   r6   r7   r@  rL  rP  rQ  rT  rV  rW  r4   rB  r'   r'   r'   r(   rC    s   	
rC  c               @   sB   e Zd ZdZeejZdd Zdd Z	dd Z
dd	 Zd
d ZdS )
TestBinomPzTests for stats.binom_test.c             C   sR   |  dd}t|dd |  dd}t|dd | j dd	gd
d}t|dd d S )NrH      g-"^?r   r   i  g`w?i     g      ?)r   gz?)binom_test_funcr   )r"   r  r'   r'   r(   r@    s    zTestBinomP.test_datac             C   s   t t| jdddg d S )Nr   r   r?   )r*   r+   r[  )r"   r'   r'   r(   test_bad_len_x  s    zTestBinomP.test_bad_len_xc             C   s(   t t| jdg t t| jdgdd d S )NrH   r^   )rv   )r*   r+   r[  )r"   r'   r'   r(   
test_bad_n  s    zTestBinomP.test_bad_nc             C   s   t t| jddgdd d S )Nr^   g       @)r   )r*   r+   r[  )r"   r'   r'   r(   
test_bad_p  s    zTestBinomP.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 )Nr      gUUUUUU?r$  )r   r!  g-$Ǻl?r%  gs0,j.?z	two-sidedgJfJ"f?)r[  r   )r"   r2   r'   r'   r(   test_alternatives  s    

zTestBinomP.test_alternativesN)r5   r6   r7   __doc__staticmethodr   Z
binom_testr[  r@  r\  r]  r^  r`  r'   r'   r'   r(   rX    s   
rX  c               @   s   e Zd ZdZedddZdS )TestBinomTestPzJ
    Tests for stats.binomtest as a replacement for stats.binom_test.
    N      ?	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_rq   r+   r   	binomtestrN   )r0   rv   r   r!  resultr'   r'   r(   r[    s    
zTestBinomTestP.binom_test_func)Nrd  re  )r5   r6   r7   ra  rb  r[  r'   r'   r'   r(   rc    s   rc  c                @   s@  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dUS )V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 )Ng|=iΙ i@o@gQ?g      ?)r   iΙ gX7?i	ϙ g=?iϙ gybw?g&.>)r   rg  r   rN   )r"   r   r2   r'   r'   r(   test_two_sided_pvalues1  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 )Ng|=r   r   gQ?)rv   r   gX-h?)r   r@   g㤶y?r   g	y}?r   g+,?r?   ra   g      ?g      ?r   g?g{Gz?g333333?g<,?)r   rg  r   rN   )r"   r   r2   r'   r'   r(   test_two_sided_pvalues2  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 )Ng|=i  i  g      ?r   )r   r?   r   gAL &W?r   r   g!YB?r-   r   gE]t?r   r   r   )r   rg  r   rN   )r"   r   r2   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 )Nra   g      ?r?   r   r   )axisc                s   t j|   S )N)r   binomr'  )rQ   )rv   r   r'   r(   <lambda>I  s    z>TestBinomTest.test_binary_srch_for_binom_tst.<locals>.<lambda>g&.>)r   r   c                s   t j|  S )N)r   rn  r'  )rQ   )rv   r   r'   r(   ro  U  s    )r.   r/   ceilr   rn  r'  sumr   intr   floor)r"   kr3   dy1Zixy2r'   )rv   r   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?g        g?)r%  g}?gGI~?g      ?)z	two-sidedg}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   rH   g      ?)rv   r   r!  g-q=)r   g?gffffff?)confidence_level)	r   rg  r   rN   r	   proportion_estimateproportion_cilowhigh)r"   r!  r  ci_lowci_highr2   cir'   r'   r(   test_confidence_intervals1\  s
    z(TestBinomTest.test_confidence_intervals1)r$  ga&+w?g        gny?)r%  g5!Rx?g5%?g      ?)z	two-sidedg~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^   g?)rv   r   r!  gư>)r   gQ?gGz?)ry  )	r   rg  r   rN   r	   rz  r{  r|  r}  )r"   r!  r  r~  r  r2   r  r'   r'   r(   test_confidence_intervals2k  s
    z(TestBinomTest.test_confidence_intervals2zalternative, pval, ci_high)r$  gլ?g̓A?)r%  g      ?g      ?)z	two-sidedgE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   ra   g      ?)r   r!  gư>)r   gffffff?)ry  g        )r   rg  r   rN   r{  r	   r|  r}  )r"   r!  r  r  r2   r  r'   r'   r(   !test_confidence_interval_exact_k0z  s
    z/TestBinomTest.test_confidence_interval_exact_k0zalternative, pval, ci_low)r$  g      ?g        )r%  g6>g@>}_?)z	two-sidedg6>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 )	Nra   g      ?)r   r!  gư>)r   gffffff?)ry  g      ?)r   rg  r   rN   r{  r	   r}  r|  )r"   r!  r  r~  r2   r  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?   z	two-sidedTgffffff?g`?g?gGz?grt!?g/?FgVK5?g5dM?gXCVu^?g*r[?r$  g        gP-V?g^'?gS5a?g?r%  g!Շ`ⰸ?g      ?g$x"?gW~=?g	L?r   gX?gN?g/<7#9?gAA?ra   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 )	Nra   g?)rv   r   r!  ZwilsonccZwilson)ry  methodgư>)r   )r   rg  r{  r   r|  r}  )
r"   rt  r!  Zcorrconfr~  r  r2   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   g      ?g      ?)r   rg  r	   rz  rN   )r"   r2   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 Q R X d S )Nz must be an integer not less than)r  )r/  r   r+   r   rg  )r"   rt  rv   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 d Q R X d S )Nzk must not be greater than n)r  r   ra   g      ?)r/  r   r+   r   rg  )r"   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 d Q R X d S )	Nr?   ra   g?)rv   r   zmust be in the interval)r  r_   )ry  )r   rg  r/  r   r+   r{  )r"   r2   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 d Q R X d S )	Nr?   ra   g?)rv   r   zmethod must be)r  zplate of shrimp)r  )r   rg  r/  r   r+   r{  )r"   r2   r'   r'   r(   test_invalid_ci_method  s    z$TestBinomTest.test_invalid_ci_methodN)r5   r6   r7   ra  rj  rk  rl  rx  r/  r0  r1  r  r  r  r  r  r  r  r  r  r  r'   r'   r'   r(   ri    sh    



ri  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 )NrA   r   )gnf	@gDq?r   )r.   r/   r   r   fligner)r"   rQ   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 )Ng|=)r.   Zasarrayrandnrq   tolist)g)rf   r'   r(   ro        z+TestFligner.test_trimmed1.<locals>.<lambda>r$   )rE  rF  g        )rE  rG  )	r.   rM  r   r3  r4  r5  r   r  r   )	r"   Z_perturbZg1_Zg2_Zg3_Xsq1rI  Xsq2rK  r'   )rf   r(   rL    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 )Ng333333?g       @g      @g      @g      @g      @g      @g      Y@g        g      @g      @g      @g      i@rF  g      ?)rE  rG  r   r_   r$   )rE  )r   r  r   )r"   r0   r  r  rI  r  rK  r'   r'   r(   rP    s    
$
zTestFligner.test_trimmed2c             C   s&   t ddd}tttj||dd d S )Nr_   r   r   g?)rR  )r.   r  r*   rS  r   r  )r"   r0   r'   r'   r(   rT    s    zTestFligner.test_bad_keywordc             C   s&   t ddd}tttj||dd d S )Nr_   r   r   rU  )rE  )r.   r  r*   r+   r   r  )r"   r0   r'   r'   r(   rV    s    z!TestFligner.test_bad_center_valuec             C   s   t ttjdg d S )Nr   )r*   r+   r   r  )r"   r'   r'   r(   test_bad_num_args  s    zTestFligner.test_bad_num_argsc             C   s.   t d}tt jt jft||d g  d S )NrA   r   )r.   r/   r	   r[   r   r  )r"   r0   r'   r'   r(   rA    s    
zTestFligner.test_empty_argN)
r5   r6   r7   r@  rL  rP  rT  rV  r  rA  r'   r'   r'   r(   r    s   r  c               @   sn   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jdde
jddddgdd ZdS )TestMoodc             C   s&   t d}tt||d dd d S )NrA   r   )g8!giT?r   )r.   r/   r   r   mood)r"   rQ   r'   r'   r(   	test_mood  s    
zTestMood.test_moodc             C   s`   t jd t jdd}t jdd}t||\}}t||\}}t||g| |g d S )Ni  ra   r   r-   )r.   rM  rN  r  r   r  r   )r"   rQ   rU   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?)ra   r   )r-   r   )rm  g4g^}E	?)r.   rX   shaper   r   r  )r"   rQ   rU   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||\}}xFt|D ]:}t|| || gt|d d |f |d d |f  qFW | }| }tj||dd\}}xFt|D ]:}t|| || gt||d d f ||d d f  qW d S )NrA   i  ra   r-   r   )rm  )	r.   rM  rN  r  r   r  ranger   Z	transpose)r"   nyrQ   rU   	z_vectestpval_vectestjr3   r'   r'   r(   test_mood_2dK  s    *zTestMood.test_mood_2dc          	   C   sN  d}t jd t jj| }t jj| }xtdD ]}tj|||d\}}ddgddgddgf}xt||| d  D ]}xt||| 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|
| qW qzW q4W d S )N)ra   rA   r   i  r?   )rm  r   r   r   )r.   rM  rN  r  r  r   r  r   )r"   r  rQ   rU   rm  r  r  Zaxes_idxr3   r  Zslice1Zslice2r'   r'   r(   test_mood_3db  s(    zTestMood.test_mood_3dc             C   s   t ttjdgg  d S )Nr   )r*   r+   r   r  )r"   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 d Q R X d S )Nr   g      ?rH   )rJ   rK   g      ?z	two-sided)r!  r$  r%  gHz>)r   r   r   zalternative must be...)r  z	ekki-ekki)r.   rM  rN  r   rO   rP   r  r&  r   r/  r   r+   )	r"   r0   r  Zstat1r  Zstat2r  Zstat3Zp3r'   r'   r(   test_mood_alternative  s    zTestMood.test_mood_alternativez,SciPy needs tie correction like R (gh-13730))reasonzalternative, expected)z	two-sided)g!}?g-?)r$  )g~?g4?)r%  )g!}?g-?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 )Nr   r  rH   r  r   r   r  r  r   r   r  r   r  r  r  r   r  r  r  )r!  )r   r  r   )r"   r!  r+  r0   r  r2   r'   r'   r(   test_mood_alternative_against_R  s    z(TestMood.test_mood_alternative_against_RN)r5   r6   r7   r  r  r  r  r  r  r  r/  r0  Zxfailr1  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   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   i90  )rK   rL   F)rs   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   rO   rP   probplotr   r.   sort)r"   r0   osmosrZosm_expectedr2   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 )NrH   i@ )rK   rL   F)sparamsrs   r   r'   )r   rO   rP   r  r   )
r"   r0   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   i90  )rK   rL   Ft)r?   )rs   rz   r  zwrong-dist-name)rz   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   )rI   )r   rO   ppf)r"   qr'   r'   r(   r    s    z7TestProbplot.test_dist_keyword.<locals>.custom_dist.ppfN)r5   r6   r7   ra  r  r'   r'   r'   r(   custom_dist  s   r  )r   )r  rs   )rz   rs   )	r   rO   rP   r  r  r   r*   r+   AttributeError)r"   r0   r  r  r  r  r  r'   r'   r(   test_dist_keyword  s    


zTestProbplot.test_dist_keywordzno matplotlib)r  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 )
Nr   r?   rH   it )rK   rL   )plotF)rs   r  r   )pltfigureadd_subplotr   r  rP   r  closer   rq   r   )
r"   figr0   Zres1Zfitres1Zres2Zfitres2Zres3Zres4axr'   r'   r(   test_plot_kwarg  s$    
@




zTestProbplot.test_plot_kwargc             C   s   t ttjdgdd d S )Nr   ry   )rz   )r*   r+   r   r  )r"   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 )NF)rs   Tg        )r	   r   r  r.   rX   r[   )r"   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 d Q R X d S )Nrl   )invalidr   T)rs   g        )r.   rn   r	   r   r  rX   r[   )r"   r'   r'   r(   test_array_of_size_one  s    z#TestProbplot.test_array_of_size_oneN)r5   r6   r7   r)   r  r  r/  r0  skipif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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   dummy)r!  ra   Zxyz)mode)r*   r+   r   wilcoxon)r"   r'   r'   r(   test_wilcoxon_bad_arg
  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approx)r  prattzsplit)g     @Z@g      ?)r.   r/   r*   r+   r   r  r	   )r"   r0   r'   r'   r(   test_zero_diff  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 d Q R X t|d d S )Nr   r   r?   r@   rA   zSample size too small)r  r  r  )zero_methodr  )g        g|N?)r
   r  r  r   r  r   )r"   r0   r  r  r2   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  )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@   r   r-   r   rA   r   c             S   s   g | ]\}}|g| qS r'   r'   )r=   urj   r'   r'   r(   r>   4  s    z7TestWilcoxon.test_accuracy_wilcoxon.<locals>.<listcomp>r  r  )r  i  g.i?r  i  gFYv]Uj?r  iG  g%^ Ez?r   r  r   r         y   r      r     p         w            s   r      F)
correctionr  r   g^҂<?gư>)r   Tg:b+?)r  r.   ZconcatenatezipzerosrK   r   r  r   rX   r	   )r"   freqnumsr0   r  r?  r   r'   r'   r(   test_accuracy_wilcoxon1  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   r   r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r   r  Fr  )r  r  )r    rN   )r.   rX   r   r  r   )r"   r0   r  r2   r1   r'   r'   r(   test_wilcoxon_result_attributesN  s
    ""z,TestWilcoxon.test_wilcoxon_result_attributesc             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 )Ng?ra   r  )r  g4IťY?r   gư>)r   T)r  r  gc2_?)r   r  r	   r   )r"   statr   Z
expected_pr'   r'   r(   test_wilcoxon_tieU  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 d Q R X t|d t|ddd t  ,}|jtdd tj||dddd\}}W d Q R X t|d t|ddd t  *}|jtdd tj||ddd\}}W d Q R X t|d t|ddd t  ,}|jtdd tj||dddd\}}W d Q R X t|d t|ddd d S )N}   r  r         r  z   r   |   r-        zSample size too small)r  r$  r  )r!  r  r   g13}?r   )r   T)r!  r  r  g7a%?r%  g?gڏoJT?)r
   r  r  r   r  r	   r   )r"   r0   r  r  rR   r   r'   r'   r(   test_onesidedh  s0    	 

 

zTestWilcoxon.test_onesidedc             C   sP   xJt ddD ]<}t|}t||d  d d t| tt|d|  qW d S )Nr   r   r   )r  r   r	   rq   rq  )r"   rv   Zcntr'   r'   r(   test_exact_basic  s    zTestWilcoxon.test_exact_basicc             C   sV  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 t d&d' }tttj|dd( d S ))Ng(\?g=
ףp=?g(\?gQ޿gQ?g{Gz?gp=
ףgq=
ףp?g      gQ?gQ?g?gɿg333333?ggܿgzGgQοg(\gRQz	two-sidedexact)r!  r  g֔  ?r   )r   r$  gYJ?r%  g*  ?r   r   g      ?r_   g(?g(?gS?r   r   )r  )r.   rX   r   r  r   r/   r*   r+   )r"   r0   r  r  r   ru  r'   r'   r(   test_exact_pval  s(    

zTestWilcoxon.test_exact_pvalr0   r_   r`   r?   r   r  rA   r#  ir   r   c             C   s@   t |\}}t|}||dk  }t|| t|d d S )Nr   r   )r   r  r.   rX   rq  r	   )r"   r0   rR   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 d Q R X ttj|d
d||f t dd}tt|tj|d
d d S )Nr   r   g      ?r_   r  )r  r   zExact p-value calculation)r  r  r   r   )r.   r/   r	   r   r  r
   r  r  )r"   r0   r  ru  r  rR   r   r'   r'   r(   	test_auto  s    zTestWilcoxon.test_autoN)r5   r6   r7   r  r  r  r  r  r  r  r  r  r  r/  r0  r1  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 )
	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}  i90  c                s   g | ]}t  |qS r'   )r   kstat)r=   rv   )r#   r'   r(   r>     s    z>TestKstat.test_moments_normal_distribution.<locals>.<listcomp>)r   r   r?   r@   gHQ,?glZ)rI?g88}?gcJN?g-C6?)r   r   )momentr   r?   r_   g{Gz?g{Gz?)r   r   )r.   rM  rN  r  r   r   r  )r"   Zmomentsr+  m1m2Zm3r'   )r#   r(    test_moments_normal_distribution  s    z*TestKstat.test_moments_normal_distributionc             C   s   t ttjg  d S )N)r*   r+   r   r  )r"   r'   r'   r(   r,     s    zTestKstat.test_empty_inputc             C   s*   t d}t j|d< tt|t j d S )Ng      $@r   )r.   r/   r[   r	   r   r  )r"   r#   r'   r'   r(   r\     s    

zTestKstat.test_nan_inputc             C   s.   t d}xdD ]}tttj||d qW d S )Nra   )r   g/$@)rv   )r.   r/   r*   r+   r   r  )r"   r#   rv   r'   r'   r(   test_kstat_bad_arg  s    

zTestKstat.test_kstat_bad_argN)r5   r6   r7   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 )TestKstatVarc             C   s   t ttjg  d S )N)r*   r+   r   kstatvar)r"   r'   r'   r(   r,     s    zTestKstatVar.test_empty_inputc             C   s*   t d}t j|d< tt|t j d S )Ng      $@r   )r.   r/   r[   r	   r   r  )r"   r#   r'   r'   r(   r\     s    

zTestKstatVar.test_nan_inputc             C   s    dg}d}t ttj||d d S )Nr   ra   )rv   )r*   r+   r   r  )r"   r#   rv   r'   r'   r(   r;     s    zTestKstatVar.test_bad_argN)r5   r6   r7   r,   r\   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   s   t jjddddd | _d S )NrA   i  it )rK   rL   )r   loggammarP   r0   )r"   r'   r'   r(   setup_method   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 )NrA   ira   )Ng9%	?gxM _?g";9?g®XZ?g?)num)r   	ppcc_plotr0   r   r.   r  )r"   r  svalsppccppcc_expectedr'   r'   r(   r)     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 )Nira   tukeylambda)rz   g#B;)r   )r   r
  r0   r  r   )r"   Zsvals1Zppcc1Zsvals2Zppcc2Zsvals3Zppcc3r'   r'   r(   	test_dist  s    zTestPpccPlot.test_distzno matplotlib)r  c             C   sZ   t  }|d}tj| jddt d || |d}tj| jdd|d t   d S )Nr   ir   )r  )r  r  r  r   r
  r0   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?   ry   )rz   )r*   r+   r   r
  r0   )r"   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   )r	  )rW   )r   r
  r   r.   r  r  float)r"   r  r  r'   r'   r(   r  ,  s    zTestPpccPlot.test_emptyN)r5   r6   r7   r  r)   r  r/  r0  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 )Nr   ry   )rz   )r*   r+   r   ppcc_max)r"   r#   r'   r'   r(   test_ppcc_max_bad_arg6  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 )Ngffffffr   g      ?i'  i )rI   rJ   rK   rL   g     @g{r   )r   )r   r  rP   r   r  )r"   r0   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 )Ngffffffr   g      ?i'  i )rI   rJ   rK   rL   g     @r  )rz   g{rA   )r   )r   r  rP   r  r   )r"   r0   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 )Ngffffffr   g      ?i'  i )rI   rJ   rK   rL   g     @)g        g      ?g      ?)brack)r   r   g{r   )r   )r`   r   )r   r  rP   r*   r+   r  r   )r"   r0   r'   r'   r(   
test_brackN  s    
zTestPpccMax.test_brackN)r5   r6   r7   r  r  r  r  r'   r'   r'   r(   r  5  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 )Ni'  ra   i1  )rK   rI   rL   r   g       @r   )
r   rO   rP   
boxcox_llfrK   r.   logrq  r&   r   )r"   r0   lmbdallfZllf_expectedr'   r'   r(   r)   \  s
    $zTestBoxcox_llf.test_basicc             C   sD   t jjdddd}d}t ||}t |t|}t||dd d S )NrH   ra   i1  )rK   rI   rL   r   g-q=)r   )r   rO   rP   r  listr   )r"   r0   r  r  llf2r'   r'   r(   test_array_likec  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 )NrH   ra   i1  )rK   rI   rL   r   g-q=)r   )r   rO   rP   r  r.   vstackr?  r   )r"   r0   r  r  r  r'   r'   r(   test_2d_inputj  s
    zTestBoxcox_llf.test_2d_inputc             C   s   t ttdg  d S )Nr   )r   r.   isnanr   r  )r"   r'   r'   r(   r  t  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_6873w  s    zTestBoxcox_llf.test_gh_6873N)r5   r6   r7   r)   r   r"  r  r$  r'   r'   r'   r(   r  Z  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 jj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| d S )	NrA   r^   i90  )rK   rL   r   )r  r_   r   )r   r  rP   boxcoxr   r.   r  r  )r"   r0   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      @ra   iP  i  )rI   rK   rL   r   r_   r   )r   )r   rO   rP   r&  r   )r"   r  r0   x_invr'  maxlogr'   r'   r(   test_lmbda_None  s
    zTestBoxcox.test_lmbda_Nonec             C   s   t jd}tjjdd|dd }tj|dd\}}}t|ddg tj|d	d\}}}t|d
dg tjjdd|dd }tj|dd\}}}t|ddg tj|dd\}}}t|ddg d S )Ni  rA   r^   )rK   rL   g      ?)alphagx@gv[%@g?gxˉEk?g8Bhk @r   i  r-   gMbP?g\?gx̡&@g+?g7(U@gp:sY@)r.   rM  r   r   r  rP   r&  r   )r"   rngr0   r  r:   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   )r.   rX   r*   r+   r   r&  )r"   r0   r'   r'   r(   test_boxcox_bad_arg  s    zTestBoxcox.test_boxcox_bad_argc             C   s   t tg jdk d S )N)r   )r   r   r&  r  )r"   r'   r'   r(   r    s    zTestBoxcox.test_emptyc             C   s    t t\}}t|ddd d S )NgsHjdrgh㈵>)r   )r   r&  _boxcox_datar   )r"   r  Zlamr'   r'   r(   r$    s    zTestBoxcox.test_gh_6873bounds)r_   r   )g?r   )r`   gc                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)r1  r  )r   minimize_scalar)fun)r1  r'   r(   	optimizer  s    zBTestBoxcox.test_bounded_optimizer_within_bounds.<locals>.optimizer)r  r5  r   r   )r   r&  r0  r&  )r"   r1  r5  r  r  r'   )r1  r(   $test_bounded_optimizer_within_bounds  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 )
N)r  g?r   Zxatolg-q=c                s   t j|  ddS )Nr2  )r1  r  options)r   r3  )r4  )r1  r7  r'   r(   r5    s    zPTestBoxcox.test_bounded_optimizer_against_unbounded_optimizer.<locals>.optimizer)r  r5  r   )r   r&  r0  r&  r   )r"   r  r  r5  Zlmbda_boundedr'   )r1  r7  r(   2test_bounded_optimizer_against_unbounded_optimizer  s    z=TestBoxcox.test_bounded_optimizer_against_unbounded_optimizerr5  str)r   r   g?c          	   C   s.   t jtdd tjtd |d W d Q R X d S )Nz`optimizer` must be a callable)r  )r  r5  )r/  r   r+   r   r&  r0  )r"   r5  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 d Q R X d S )Nc             S   s   dS )Nr   r'   )r4  r'   r'   r(   r5    s    zCTestBoxcox.test_bad_optimizer_value_raises_error.<locals>.optimizerz;`optimizer` must return an object containing the optimal...)r  )r  r5  )r/  r   r+   r   r&  r0  )r"   r5  r  r'   r'   r(   %test_bad_optimizer_value_raises_error  s    z0TestBoxcox.test_bad_optimizer_value_raises_errorN)r5   r6   r7   r(  r+  r.  r/  r  r$  r/  r0  r1  r6  r8  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	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 jjddddd | _d S )NrA   r^   i90  )rK   rL   )r   r  rP   r0   )r"   r'   r'   r(   r  &  s    zTestBoxcoxNormmax.setup_methodc             C   s   t | j}t|ddd d S )Ngm?gư>)r   )r   boxcox_normmaxr0   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mle)r  g	.!?gư>)r   )r   r=  r0   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 )Nrm   )r  gm?g	.!?gư>)r   )r   r=  r0   r   )r"   Z
maxlog_allr'   r'   r(   test_all5  s    zTestBoxcoxNormmax.test_allr  r?  Zpearsonrrm   r1  )r_   r   )g?r   )r`   gc                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 )Nr2  )r1  r  )r   r3  )r4  )r1  r'   r(   r5  =  s    zITestBoxcoxNormmax.test_bounded_optimizer_within_bounds.<locals>.optimizer)r  r5  r   r   )r   r=  r0   r.   rm   r&  )r"   r  r1  r5  r*  r'   )r1  r(   r6  9  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 )
NrA   g{Gz?i  c               @   s   e Zd ZdS )z?TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.MyResultN)r5   r6   r7   r'   r'   r'   r(   MyResultL  s   rB  c                s:   g }xD ]}| | | q
W   }t| |_|S )N)appendr.   Zargminr0   )r4  Zobjsr  r2   )rB  lmbda_ranger'   r(   r5  O  s    
z@TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.optimizer)r5  gh㈵>)r   r=  r0   r.   roundr  r&  r   )r"   r  Zlmbda_roundedr5  Zlmbda2r'   )rB  rD  r(   test_user_defined_optimizerF  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 d Q R X d S )N)r  r5  z,`brack` must be None if `optimizer` is given)r  )g       g       @)r   r3  r   r=  r0   r/  r   r+   )r"   r5  r'   r'   r(   2test_user_defined_optimizer_and_brack_raises_error\  s
    
zDTestBoxcoxNormmax.test_user_defined_optimizer_and_brack_raises_errorN)r5   r6   r7   r  r>  r@  rA  r/  r0  r1  r6  rF  rG  r'   r'   r'   r(   r<  %  s   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   s   t jjddddd | _d S )NrA   i  it )rK   rL   )r   r  rP   r0   )r"   r'   r'   r(   r  n  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 )NrA   ira   )r  g!X4}?g΁i?g-	15?gW$?g\ܱ{?)r	  )r   boxcox_normplotr0   r   r.   r  )r"   r  Zlmbdasr  r  r'   r'   r(   r)   q  s    zTestBoxcoxNormplot.test_basiczno matplotlib)r  c             C   sZ   t  }|d}tj| jddt d || |d}tj| jdd|d t   d S )Nr   ir   )r  )r  r  r  r   rI  r0   r  r  )r"   r  r  r'   r'   r(   r  y  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_   )r*   r+   r   rI  r0   )r"   r'   r'   r(   r    s    z&TestBoxcoxNormplot.test_invalid_inputsc             C   s   t tg ddjdk d S )Nr   r   )r   r   rI  rK   )r"   r'   r'   r(   r    s    zTestBoxcoxNormplot.test_emptyN)r5   r6   r7   r  r)   r/  r0  r  r  r  r  r  r'   r'   r'   r(   rH  m  s
   rH  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 )NrH   r   i1  )rK   rI   rL   r   g-q=)r   )r   rO   rP   yeojohnson_llfr  r   )r"   r0   r  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 )NrH   ra   i1  )rK   rI   rL   r   g-q=)r   )r   rO   rP   rK  r.   r!  r?  r   )r"   r0   r  r  r  r'   r'   r(   r"    s
    z TestYeojohnson_llf.test_2d_inputc             C   s   t ttdg  d S )Nr   )r   r.   r#  r   rK  )r"   r'   r'   r(   r    s    zTestYeojohnson_llf.test_emptyN)r5   r6   r7   r   r"  r  r'   r'   r'   r(   rJ    s   rJ  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S )TestYeojohnsonc             C   s  t jd}tjjdd|dd }t |dks4t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j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jjdd|dd	 }t |dk r`tt |dkrtt|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 )Ni90  rA   r^   )rK   rL   r   r   )r  r_   r   r?   )r.   rM  r   r   r  rP   rm   r&  
yeojohnsonr   r  )r"   r-  r0   r'  posnegr'   r'   r(   r(    sL    


 zTestYeojohnson.test_fixed_lmbdar  r   g?g      ?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 )N)rW   r   g      ?r   r   )r.   r  r  rW   absspacingexppower)r0   r  r)  rN  r'   r'   r(   _inverse_transform  s    $z:TestYeojohnson.test_lmbda_None.<locals>._inverse_transformi N  i r   r   )rI   rJ   rK   g{Gz?)r   r   )r   )r.   rM  rN  normalr   rM  r   r   ZlinalgrO   r$   r&   )r"   r  rT  Z	n_samplesr0   r)  r'  r*  r'   r'   r(   r+    s    
zTestYeojohnson.test_lmbda_Nonec             C   s   t tg jdk d S )N)r   )r   r   rM  r  )r"   r'   r'   r(   r    s    zTestYeojohnson.test_emptyc             C   sD   t jjdddd}t |\}}t t|\}}t||dd d S )NrH   r   i1  )rK   rI   rL   g-q=)r   )r   rO   rP   rM  r  r   )r"   r0   Zxt1r  Zxt2r'   r'   r(   r     s    zTestYeojohnson.test_array_likerW   c          	   C   s:   t jd|d}d}tjt|d t| W d Q R X d S )Nr   )rW   z>Yeo-Johnson transformation is not defined for complex numbers.)r  )r.   r/   r/  r   r+   r   rM  )r"   rW   r0   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 )Nr   )rW   gHz>)r   )r.   r/   Zfloat64r   rM  r   )r"   rW   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_integerN)r5   r6   r7   r(  r/  r0  r1  r+  r  r   r.   Z	complex64Z
complex128rW  Zint8uint8Zint16Zint32rX  r'   r'   r'   r(   rL    s   /%rL  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestYeojohnsonNormmaxc             C   s   t jjddddd | _d S )NrA   r^   i90  )rK   rL   )r   r  rP   r0   )r"   r'   r'   r(   r    s    z"TestYeojohnsonNormmax.setup_methodc             C   s   t | j}t|ddd d S )Ng?gư>)r   )r   yeojohnson_normmaxr0   r   )r"   r*  r'   r'   r(   r@    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 g      ?g       @gffffff?g333333@g      @gffffff@g?g@g      @g      @g"@g      @g      gzG?gMbP?)r   )r   r[  r.   Zallcloser&  )r"   r0   r  r'   r'   r(   test_darwin_example  s    
z)TestYeojohnsonNormmax.test_darwin_exampleN)r5   r6   r7   r  r@  r\  r'   r'   r'   r(   rZ    s   rZ  c               @   sL  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dd0gdfej	d1ed2d3d3d4d5d5ged6d7gdfgd8d9 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@dAdBdCdDdEdFejgedAdBdCdDdEdFejgdGdHdIdJejdKdLgggejdejejej	gdMdN Zejd@dAdBdCdDdEdFejgedAdBdCdDdEdFejgdGdHdIdJejdKdLgggejdejejej	gdOdP ZdQdR Z dSdT Z!dUdV Z"dWS )XTestCircFuncsztest_func,expectedgA:wv?gk~_ЀBE@gE|2@c             C   s0   t ddddddg}t||dd|d	d
 d S )Nic  rA   r   ig  ra   i^  ih  )r}  gHz>)r   )r.   rX   r   )r"   	test_funcr+  r0   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||dd | }tj	|dd	}t||dd d S )Nr   r   r   r      g     4@g3333333@ih  )r}  gh㈵>)r   g-C6?)
r.   rX   r$   r   circmeanr   r%   circvarr&   circstd)r"   r0   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?ra   guv9?rH   g:0yU>)r   )r.   rX   r   )r"   r^  Z
numpy_funcr0   ZcircstatrU  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 )Nic  rA   r   ig  ra   i^  i_  r   r@   i`  r   i]  ie  r   if  id  ih  )r}  g+=)r   r   )r}  rm  c                s   g | ]}t j | d dqS )ih  )r}  )r   ra  )r=   r3   )r0   r'   r(   r>   Q  s    z4TestCircFuncs.test_circmean_axis.<locals>.<listcomp>r   c                s&   g | ]}t j d d |f ddqS )Nih  )r}  )r   ra  )r=   r3   )r0   r'   r(   r>   U  s    )r.   rX   r   ra  ravelr   r  r  )r"   rd  re  r'   )r0   r(   test_circmean_axisH  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 )Nic  rA   r   ig  ra   i^  i_  r   r@   i`  r   i]  ie  r   if  id  ih  )r}  gdy=)r   r   )r}  rm  c                s   g | ]}t j | d dqS )ih  )r}  )r   rb  )r=   r3   )r0   r'   r(   r>   b  s    z3TestCircFuncs.test_circvar_axis.<locals>.<listcomp>r   c                s&   g | ]}t j d d |f ddqS )Nih  )r}  )r   rb  )r=   r3   )r0   r'   r(   r>   f  s    )r.   rX   r   rb  rl  r   r  r  )r"   rf  rg  r'   )r0   r(   test_circvar_axisX  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 )Nic  rA   r   ig  ra   i^  i_  r   r@   i`  r   i]  ie  r   if  id  ih  )r}  gdy=)r   r   )r}  rm  c                s   g | ]}t j | d dqS )ih  )r}  )r   rc  )r=   r3   )r0   r'   r(   r>   s  s    z3TestCircFuncs.test_circstd_axis.<locals>.<listcomp>r   c                s&   g | ]}t j d d |f ddqS )Nih  )r}  )r   rc  )r=   r3   )r0   r'   r(   r>   w  s    )r.   rX   r   rc  rl  r   r  r  )r"   rh  ri  r'   )r0   r(   test_circstd_axisi  s    zTestCircFuncs.test_circstd_axisc             C   s*   ddddddg}t ||dd|d	d
 d S )Nic  rA   r   ig  ra   i^  ih  )r}  gHz>)r   )r   )r"   r^  r+  r0   r'   r'   r(   test_circfuncs_array_likez  s    z'TestCircFuncs.test_circfuncs_array_liker^  c             C   s   t t|g  d S )N)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 )	Nic  rA   r   ig  ra   i^  ih  )r}  )r.   r[   r   r#  )r"   r^  r0   r'   r'   r(   test_nan_propagate  s    z TestCircFuncs.test_nan_propagateg5:v@gfPb?)Nr   r   gڴV0@gLԿAB@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}xf| D ]Z}||d|d}|d kr|tt | qRt|d || dd tt |dd    qRW d S )Nic  rA   r   ig  ra   i^  r   i_  r   r@   i`  r   i]  ih  )r}  rm  r   gHz>)r   )r.   rX   r[   keysr   r#  r   rm   )r"   r^  r+  r0   rm  outr'   r'   r(   test_nan_propagate_array  s    "z&TestCircFuncs.test_nan_propagate_arraygrQvv@g     v@g      @g      @g     8v@g      #@g     u@g5@v?g2>Bjv@gtUuYK@gR @gzw<5 ?g~/ϔ(@gK ?g sQP@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}xh| D ]\}||dd|d}|d krt||| dd qVt|d d || dd tt |d  qVW d S )Nic  rA   r   ig  ra   i^  i_  r   r@   i`  r   i]  ih  omit)r}  
nan_policyrm  gHz>)r   r_   )r.   rX   r[   rr  r   r   r#  )r"   r^  r+  r0   rm  rs  r'   r'   r(   test_nan_omit_array  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 )Nic  rA   r   ig  ra   i^  ih  ru  )r}  rv  gHz>)r   )r.   r[   r   )r"   r^  r+  r0   r'   r'   r(   test_nan_omit  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 )Nru  )rv  )r.   r[   r   r#  )r"   r^  r0   r'   r'   r(   test_nan_omit_all  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 )Nru  r   )rv  rm  r   )r.   rX   r[   r   r#  rm   rq   )r"   r^  r0   rs  r'   r'   r(   test_nan_omit_all_axis  s
    z$TestCircFuncs.test_nan_omit_all_axisr0   ic  rA   r   ig  ra   i^  i_  r   r@   i`  r   i]  c             C   s   t t||ddd d S )Nih  raise)r}  rv  )r*   r+   )r"   r^  r0   r'   r'   r(   test_nan_raise  s    zTestCircFuncs.test_nan_raisec             C   s   t t||ddd d S )Nih  foobar)r}  rv  )r*   r+   )r"   r^  r0   r'   r'   r(   test_bad_nan_policy  s    z!TestCircFuncs.test_bad_nan_policyc             C   s$   d}|}t |}t||dd d S )Ng      ?gh㈵>)r   )r   ra  r   )r"   r0   rd  re  r'   r'   r(   test_circmean_scalar  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   g?)r   ra  r.   r/   pir   )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   ra   rY  )rW   r  )r}  g     @e@g.}}VW{@gHz>)r   g)#p_4@)r.   rX   r	   r   ra  r   rb  rc  )r"   r0   r'   r'   r(   test_circfuncs_unit8  s    z"TestCircFuncs.test_circfuncs_unit8N)#r5   r6   r7   r/  r0  r1  r   ra  rb  rc  r_  rj  r.   r$   r%   r&   rk  rm  rn  ro  rp  r  rq  r[   rt  rX   rw  rx  ry  rz  r|  r~  r  r  r  r'   r'   r'   r(   r]  &  s   



 r]  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d Z
dd Zdd Zdd ZdS )TestMedianTestc             C   s   t ttjdddg d S )Nr   r   r?   )r*   r+   r   median_test)r"   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 )Nr   r   r?   )r*   r+   r   r  )r"   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   rl   )ties)r*   r+   r   r  )r"   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   above)r  )r*   r+   r   r  )r"   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@   rA   r   )r  )r*   r+   r   r  )r"   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@   rA   r}  )rv  )r*   r+   r   r  )r"   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@   rA   r   )r   )r*   rS  r   r  )r"   r'   r'   r(   rT  #	  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?   g       @r   )r   r  r	   r   )r"   r0   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@   rA   r   r   r   r   r   rl   )r  r  )r   r  r	   )r"   r0   r  zr  r   r  r  r'   r'   r(   test_ties_options6	  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@   rA   r   	propagate)rv  ru  g     ?gإvao?g      @r   r{  )	r.   r[   r   r  r	   r   rX   r*   r+   )r"   r0   r  Zmt1rw   r   r  r  r'   r'   r(   test_nan_policy_optionsJ	  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@   rA   r   r   r   )Zlambda_F)r  )r   r  r	   Zchi2_contingencyr   )r"   r0   r  r  r   r  r  Zexp_statZexp_pZdofer'   r'   r(   r)   W	  s(    







zTestMedianTest.test_basicN)r5   r6   r7   r  r  r  r  r  r~  rT  r  r  r  r)   r'   r'   r'   r(   r    s   r  )JrB   numpyr.   Znumpy.randomr   Znumpy.testingr   r   r   r   r   r   r	   r
   r/  r   r*   Zscipyr   r   Zscipy.stats.morestatsr   Zcommon_testsr   Z
_hypotestsr   Zscipy.stats._binomtestr   Z
matplotlibZrcParamsZmatplotlib.pyplotZpyplotr  r  	Exceptionr3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r   r8   rG   r]   r   r  r2  rC  rX  rc  ri  r  r  r  r  r  r  r  r  r  r0  r%  r<  rH  rJ  rL  rZ  r]  r  r'   r'   r'   r(   <module>   s   (

!ZV G E' SD ^ G6%) $$$$$$$$$$$$$$$$$$$$$ $$$$
qH#q Y