U
    »mœdq' ã                   @   sè	  d Z ddlZddlZddlZddlm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mZmZ ddlZddlmZ ddlm  mZ ddlmZmZmZmZmZ ddlZ ddl!m"Z" ddl#m"  m$Z$ ddl%m"  m&Z' ddl(m)Z) dd	l*m+Z+ dd
l,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 edddddddddg	e:ƒZ;edddddddddg	e:ƒZ<eddddddd d!d"g	e:ƒZ=ed#d$d%d&d'd(d)d*d+g	e:ƒZ>ed,d-d.d/d0d1d2d3d4g	e:ƒZ?ed5d6d7d8d9d:d;d<d=g	e:ƒZ@ed>d?d@dAdBdCdDdEdFg	e:ƒZAG dGdH„ dHƒZBG dIdJ„ dJƒZCG dKdL„ dLƒZDG dMdN„ dNƒZEG dOdP„ dPƒZFdQdR„ ZGdSdT„ ZHdUdV„ ZIdWdX„ ZJG dYdZ„ dZƒZKd[d\„ ZLd]d^„ ZMd_d`„ ZNdadb„ ZOG dcdd„ ddƒZPG dedf„ dfƒZQdgdh„ ZRdidj„ ZSdkdl„ ZTG dmdn„ dnƒZUejV Wdo¡G dpdq„ dqƒƒZXdrds„ ZYG dtdu„ duƒZZG dvdw„ dwƒZ[G dxdy„ dyƒZ\dzd{„ Z]G d|d}„ d}ƒZ^G d~d„ dƒZ_G d€d�„ d�ƒZ`G d‚dƒ„ dƒƒZaed„d…d†d‡dˆd‰dŠd‹dŒgƒZbebddd�dgdddddde  cd>¡ d�e  cd?¡   dde  cdŽ¡ de  cd�¡   d�d‘�ebddd�dgdd’d�dgddd“dde  cdŽ¡ de  cd>¡  de  cd”¡   dde  cd>¡ d’e  cdŽ¡  de  cd•¡   d–d‘�ebddd�dgdddddde  cd>¡ d�e  cd?¡   dde  cdŽ¡ de  cd�¡   d�d‘�ebddddgddddgddddddd‘�gZdebg dddddddd‘�ebe  g g g g¡jeddddddgdddgdddgdddgd‘�ebe  g g g g¡dddg g g g d‘�gZfG d—d˜„ d˜ƒZgd™dš„ ZhejV id›dœe jjfd�e jkfg¡dždŸ„ ƒZld d¡„ Zmd¢d£„ Znd¤d¥„ ZoG d¦d§„ d§ƒZpG d¨d©„ d©ƒZqG dªd«„ d«ƒZrd¬d­„ Zsd®d¯„ Ztd°d±„ ZuejV id²e  vd³¡d´fe  vdµ¡d¶fg¡d·d¸„ ƒZwd¹dº„ ZxejV id»d¼d½d¾g¡d¿dÀ„ ƒZyejV idÁe"jze  dÂ¡dffe"j{e  dÂ¡e  dÂ¡ffg¡dÃdÄ„ ƒZ|�d0dÅdÆ„Z}dÇdÈ„ Z~G dÉdÊ„ dÊƒZG dËdÌ„ dÌƒZ€G dÍdÎ„ dÎƒZ�dÏdÐ„ Z‚dÑdÒ„ ZƒdÓdÔ„ Z„dÕdÖ„ Z…ejV id²e  vd³¡d´fe  vdµ¡d¶fg¡d×dØ„ ƒZ†dÙdÚ„ Z‡dÛdÜ„ ZˆdÝdÞ„ Z‰dßdà„ ZŠdádâ„ Z‹dãdä„ ZŒG dådæ„ dæƒZ�dçdè„ ZŽG dédê„ dêƒZ�G dëdì„ dìƒZ�dídî„ Z‘dïdð„ Z’G dñdò„ dòƒZ“dódô„ Z”dõdö„ Z•�d1dødù„Z–�d2dúdû„Z—�d3düdý„Z˜G dþdÿ„ dÿƒZ™G �d �d„ �dƒZšG �d�d„ �dƒZ›G �d�d„ �dƒZœejV id»d¼d¾d½g¡�d�d„ ƒZ��d�d	„ Zž�d
�d„ ZŸ�d�d„ Z G �d�d„ �dƒZ¡G �d�d„ �dƒZ¢G �d�d„ �dƒZ£G �d�d„ �dƒZ¤G �d�d„ �dƒZ¥G �d�d„ �dƒZ¦G �d�d„ �dƒZ§G �d�d„ �dƒZ¨G �d�d„ �dƒZ©G �d �d!„ �d!ƒZªG �d"�d#„ �d#ƒZ«G �d$�d%„ �d%ƒZ¬G �d&�d'„ �d'ƒZ­G �d(�d)„ �d)ƒZ®e j¯ °�d*¡Z±e± ¯dÂ¡Z²e± ¯dÂ¡Z³ejV i�d+e"j´e²ffe"jµe²e"j¶j·ffe"j¸e²e³ffe"j¹e²e³ffg¡�d,�d-„ ƒZºG �d.�d/„ �d/ƒZ»dS (4  zü Test functions for stats module

    WRITTEN BY LOUIS LUANGKESORN <lluang@yahoo.com> FOR THE STATS MODULE
    BASED ON WILKINSON'S STATISTICS QUIZ
    https://www.stanford.edu/~clint/bench/wilk.txt

    Additional tests by a host of SciPy developers.
é    N)Ú
namedtuple)Úproduct)
Úassert_Úassert_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚassert_approx_equalÚassert_allcloseÚassert_warnsÚsuppress_warningsÚassert_array_less)Úraises)ÚarrayÚarangeÚfloat32Úfloat64Úpower)Úkolmogn)ÚFuncData)Úbinom)Úoptimizeé   )Úcheck_named_results)Úcdist)ÚNumpyVersion)Ú_broadcast_concatenate)Ú_permutation_distribution_té   é   é   é   é   é   é   é	   i÷àõiøàõiùàõiúàõiûàõiüàõiýàõiþàõiÿàõgƒ~®Ïÿÿï?g<âÕÿÿï?gôEkÚÿÿï?g­©Éßÿÿï?ge(åÿÿï?gq†êÿÿï?gÖÔäïÿÿï?g�8Cõÿÿï?gGœ¡úÿÿï?g   ¢”mBg   ¢”}Bg  €yïÓ…Bg   ¢”�Bg  @åœ0’Bg  €yïÓ•Bg  ÀBw™Bg   ¢”�Bg   ›ó^ Bçê-�™—q=gê-�™—�=gßÄAfcŠ=gê-�™—‘=g•dyáý•=gßÄAfcš=gžY¢LÉž=gê-�™—¡=gS§S±ŒÊ£=ç      à?ç      ø?ç      @ç      @ç      @ç      @ç      @ç      @ç      !@c                   @   sJ   e Zd Ze ej¡jZdd„ Zdd„ Z	dd„ Z
dd„ Zd	d
„ Zdd„ ZdS )ÚTestTrimmedStatsc              
   C   s>  t  tdd¡}t|d| jd� t jtddd�}t jtd d�}t||| jd� tdtd	� d
d¡}t j|d d�}t|| ¡ | jd� t j|dd�}t	||jdd�dd� t j|dd�}t	||jdd�dd� t j|dd d�}t|d| jd� t j|ddd�}ddd
ddddg}t	||dd� t j|dddd�}ddd
ddddg}t	||dd� t
 |¡}t
j|ddd …f< t j|d dd�}dd!d"d#t
jt
jt
jg}t	||dd� tƒ ��}| td$¡ t j|ddd�}d%dd&d't
jt
jt
jt
jt
jg	}t	||dd� t j|dd(dd�}d!dd&d't
jt
jt
jt
jt
jg	}t	||dd� W 5 Q R X d S ))N©r   r$   ©TTç      @©Úsignificant)FF©ÚlimitsÚ	inclusive©r7   é?   ©Údtyper%   r#   ©Úaxisr   r$   ©Údecimalr   )r   é=   )r7   r>   g     €?@)r   é   é   ç      '@é
   é   é   é   ©TF)r7   r8   r>   ç      %@éÿÿÿÿéýÿÿÿ)r   rH   r+   r,   r-   úMean of empty slicer    é   rB   ©FT)ÚstatsZtmeanÚXr	   Údprecr   r   ÚreshapeÚmeanr   Únpr   Únanr   ÚrecordÚRuntimeWarning)ÚselfÚyÚy1Úy2Úx_2dZy_trueZx_2d_with_nanÚsup© r_   úU/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/stats/tests/test_stats.pyÚ
test_tmeanE   sH    
  ÿ zTestTrimmedStats.test_tmeanc              	   C   sr  t jtddd�}t|d| jd� t jtd d�}t|tjdd�| jd� td	td
� d¡}t j|d d�}t||jdd�| jd� t j|dd�}t	|d t
 dd¡dd� t j|dd�}t	|d t
 dd¡dd� t  |dd d …f ¡}t|d| jd� tƒ �n}| td¡ t j|dddd�}t|d d| jd� t j|dddd�}t|d d| jd� t|d t
jƒ W 5 Q R X d S )Nr1   r2   r6   gªªªªªª@r4   r9   r   ©Úddofr:   r;   )r%   r#   r=   r   )r   r#   g     øv@r$   r?   )r   r%   gÒîãªªª@r   g«ªªªªª@z"Degrees of freedom <= 0 for slice.)r   r!   )r7   r>   r8   r)   ©r   r"   )rP   ÚtvarrQ   r	   rR   Úvarr   r   rS   r   rU   Úfullr   rW   rX   r   rV   )rY   rZ   r]   r^   r_   r_   r`   Ú	test_tvart   s(    zTestTrimmedStats.test_tvarc                 C   sH   t  tdd¡}t|d| jd� t jtd d�}t|tjdd�| jd� d S )Nr1   r2   gBÄ†/H@r4   r9   r   rb   )rP   ZtstdrQ   r	   rR   Ústd©rY   rZ   r_   r_   r`   Ú	test_tstd”   s    zTestTrimmedStats.test_tstdc              
   C   sT  t t d¡dƒ t d¡}t t |¡dƒ t tj|dd�dƒ t tj|ddd�dƒ | d¡}t tj|ddd�d	dgƒ t tj|dd
�dd	dddgƒ t tj|d d
�dƒ t d¡}tj|d< tƒ �†}| t	d¡ t t |¡tjƒ t tj|dd�dƒ t
ttj|dd� t
ttj|dd� d}t
t|d�� tj|dd� W 5 Q R X W 5 Q R X d S )Nr    rE   r   )Ú
lowerlimitF)rl   r8   r   ©r!   r   r   r=   r"   r$   ç      $@r%   úinvalid value*Úomit©Ú
nan_policyç        ÚraiseÚfoobarz'propagate', 'raise', 'omit'©ÚmatchZfoo)r   rP   ZtminrU   r   rS   rV   r   rW   rX   Úassert_raisesÚ
ValueError)rY   Úxr^   Úmsgr_   r_   r`   Ú	test_tmin›   s(    



zTestTrimmedStats.test_tminc              	   C   s*  t t d¡dƒ t d¡}t t |¡dƒ t tj|dd�dƒ t tj|ddd�dƒ | d¡}t tj|ddd�dd	gƒ t tj|d
d�d
ddd	dgƒ t tj|d d�dƒ t d¡}tj|d< tƒ �\}| t	d¡ t t |¡tjƒ t tj|dd�dƒ t
ttj|dd� t
ttj|dd� W 5 Q R X d S )Nr    rE   r%   )Ú
upperlimitF)r}   r8   r$   rm   r#   r   r=   r   r!   rn   r"   ro   rp   rq   ç      "@rt   ru   )r   rP   ZtmaxrU   r   rS   rV   r   rW   rX   rx   ry   )rY   rz   r^   r_   r_   r`   Ú	test_tmax´   s"    



zTestTrimmedStats.test_tmaxc                 C   st   t jtddd�}t dddddg¡}t||jd	d
�t |j¡ | j	d� tt jtddgd�t jtd d�| j	d� d S )N)r   r$   rO   r6   r    r!   r"   r#   r$   r   rb   r4   rK   rE   r9   )
rP   ZtsemrQ   rU   r   r	   ri   ÚsqrtÚsizerR   )rY   rZ   Zy_refr_   r_   r`   Ú	test_tsemÊ   s    ÿþzTestTrimmedStats.test_tsemN)Ú__name__Ú
__module__Ú__qualname__rU   Zfinfor   Ú	precisionrR   ra   rh   rk   r|   r   r‚   r_   r_   r_   r`   r0   A   s   / r0   c                	   @   sZ  e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Z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d0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ Z"d@dA„ Z#e$j% &dBdCdDdEdFdGdHg¡dIdJ„ ƒZ'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUS )VÚTestCorrPearsonráE   W.II.D. Compute a correlation matrix on all the variables.

        All the correlations, except for ZERO and MISS, should be exactly 1.
        ZERO and MISS should have undefined or missing correlations with the
        other variables.  The same should go for SPEARMAN correlations, if
        your program has them.
    c                 C   s"   t  tt¡}|d }t|dƒ d S ©Nr   ç      ð?)rP   ÚpearsonrrQ   r	   ©rY   rZ   Úrr_   r_   r`   Útest_pXXÞ   s    zTestCorrPearsonr.test_pXXc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   rQ   ÚBIGr	   rŒ   r_   r_   r`   Ú
test_pXBIGã   s    zTestCorrPearsonr.test_pXBIGc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   rQ   ÚLITTLEr	   rŒ   r_   r_   r`   Útest_pXLITTLEè   s    zTestCorrPearsonr.test_pXLITTLEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   rQ   ÚHUGEr	   rŒ   r_   r_   r`   Útest_pXHUGEí   s    zTestCorrPearsonr.test_pXHUGEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   rQ   ÚTINYr	   rŒ   r_   r_   r`   Útest_pXTINYò   s    zTestCorrPearsonr.test_pXTINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   rQ   ÚROUNDr	   rŒ   r_   r_   r`   Útest_pXROUND÷   s    zTestCorrPearsonr.test_pXROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r�   r	   rŒ   r_   r_   r`   Útest_pBIGBIGü   s    zTestCorrPearsonr.test_pBIGBIGc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r�   r‘   r	   rŒ   r_   r_   r`   Útest_pBIGLITTLE  s    z TestCorrPearsonr.test_pBIGLITTLEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r�   r“   r	   rŒ   r_   r_   r`   Útest_pBIGHUGE  s    zTestCorrPearsonr.test_pBIGHUGEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r�   r•   r	   rŒ   r_   r_   r`   Útest_pBIGTINY  s    zTestCorrPearsonr.test_pBIGTINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r�   r—   r	   rŒ   r_   r_   r`   Útest_pBIGROUND  s    zTestCorrPearsonr.test_pBIGROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r‘   r	   rŒ   r_   r_   r`   Útest_pLITTLELITTLE  s    z#TestCorrPearsonr.test_pLITTLELITTLEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r‘   r“   r	   rŒ   r_   r_   r`   Útest_pLITTLEHUGE  s    z!TestCorrPearsonr.test_pLITTLEHUGEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r‘   r•   r	   rŒ   r_   r_   r`   Útest_pLITTLETINY  s    z!TestCorrPearsonr.test_pLITTLETINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r‘   r—   r	   rŒ   r_   r_   r`   Útest_pLITTLEROUND$  s    z"TestCorrPearsonr.test_pLITTLEROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r“   r	   rŒ   r_   r_   r`   Útest_pHUGEHUGE)  s    zTestCorrPearsonr.test_pHUGEHUGEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r“   r•   r	   rŒ   r_   r_   r`   Útest_pHUGETINY.  s    zTestCorrPearsonr.test_pHUGETINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r“   r—   r	   rŒ   r_   r_   r`   Útest_pHUGEROUND3  s    z TestCorrPearsonr.test_pHUGEROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r•   r	   rŒ   r_   r_   r`   Útest_pTINYTINY8  s    zTestCorrPearsonr.test_pTINYTINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r•   r—   r	   rŒ   r_   r_   r`   Útest_pTINYROUND=  s    z TestCorrPearsonr.test_pTINYROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r‹   r—   r	   rŒ   r_   r_   r`   Útest_pROUNDROUNDB  s    z!TestCorrPearsonr.test_pROUNDROUNDc                 C   s,   t  tt¡}d}t||ƒ t|j|jƒ d S ©N©ÚcorrelationÚpvalue)rP   r‹   rQ   r   r   rª   Ú	statistic©rY   ÚresÚ
attributesr_   r_   r`   Útest_pearsonr_result_attributesG  s    
z0TestCorrPearsonr.test_pearsonr_result_attributesc              	   C   sH   t dƒ}t ||¡\}}t|ddd� t|dt dt d¡ ¡d� d S )Nç      @rŠ   çVçž¯Ò<©Úatolrs   r   ©r   rP   r‹   r
   rU   r€   Úspacing©rY   Úar�   Úprobr_   r_   r`   Útest_r_almost_exactly_pos1M  s    z+TestCorrPearsonr.test_r_almost_exactly_pos1c              	   C   sJ   t dƒ}t || ¡\}}t|ddd� t|dt dt d¡ ¡d� d S )Nr±   ç      ð¿r²   r³   rs   r   rŠ   rµ   r·   r_   r_   r`   Útest_r_almost_exactly_neg1V  s    z+TestCorrPearsonr.test_r_almost_exactly_neg1c                 C   sN   t dddgƒ}t dddgƒ}t ||¡\}}t|t d¡d ƒ t|dƒ d S )NrK   r   r   r   r   çUUUUUUÕ?)r   rP   r‹   r	   rU   r€   )rY   r¸   Úbr�   r¹   r_   r_   r`   Ú
test_basic_  s
    zTestCorrPearsonr.test_basicc              	   C   sV   d}t tj|d��: t dddgdddg¡\}}t|tjƒ t|tjƒ W 5 Q R X d S )NúAn input array is constantrv   çòÒMbXå?ç°rh‘í|¿?çÉv¾Ÿ/Ý?çsh‘í|?é?)r   rP   ÚConstantInputWarningr‹   r   rU   rV   )rY   r{   r�   Úpr_   r_   r`   Útest_constant_inputh  s
    z$TestCorrPearsonr.test_constant_inputc              	   C   s^   dddt  d¡ g}ddddt  d¡  g}d}ttj|d�� t ||¡\}}W 5 Q R X d S )Nr   r   r"   z/An input array is nearly constant; the computedrv   )rU   r¶   r   rP   ZNearConstantInputWarningr‹   )rY   rz   rZ   r{   r�   rÆ   r_   r_   r`   Útest_near_constant_inputq  s
    z)TestCorrPearsonr.test_near_constant_inputc                 C   sD   dddddg}dddd	d
g}t  ||¡\}}t|dƒ t|dƒ d S )Ngµ¦yÇ)r?gx‹dè{s?gßnp?g$›«æ9"o?ge œ=:ïk?g†ûãoÈŸûg`Ðÿ
,™ˆg“zó‰ÊÎàgÔ2ól?³g>?°…?'ge‡;üEç?g3RÚÅÂöÄ?)rP   r‹   r
   ©rY   rz   rZ   r�   rÆ   r_   r_   r`   Útest_very_small_input_values{  s
    
z-TestCorrPearsonr.test_very_small_input_valuesc              
   C   sR   dt  dddddddg¡ }dt  d¡ }t ||¡\}}t|dƒ t|dƒ d S )NgÇY)	kŸRr   r   r#   gªLXèz¶ë?gÍ—‚~-ˆ?)rU   r   r   rP   r‹   r
   rÉ   r_   r_   r`   Útest_very_large_input_valuesˆ  s
    
z-TestCorrPearsonr.test_very_large_input_valuesc                 C   sL   t  ddddg¡}t  ddddg¡}t ||¡\}}t|d	ƒ t|d
ƒ d S )Ng±7øÂ	ˆig¥NÒòûƒ—ig_bÄ4‹�¡igZb××ç¤igøœDig<'È(Â½œigm–žQŽÅiçZb××çtigá*D¸æ{Ö?g�êÝ£Âä?)rU   r   rP   r‹   r
   rÉ   r_   r_   r`   Ú!test_extremely_large_input_values–  s
    
z2TestCorrPearsonr.test_extremely_large_input_valuesc                 C   sB   t  ddgddg¡}|\}}t|dƒ t|dƒ t| ¡ dƒ d S )Nr   r   r   r!   ©rK   r   )rP   r‹   r   Úconfidence_interval)rY   r®   r�   rÆ   r_   r_   r`   Útest_length_two_pos1£  s
    

z%TestCorrPearsonr.test_length_two_pos1c                 C   s0   t  ddgddg¡\}}t|dƒ t|dƒ d S )Nr   r   r   r!   rK   )rP   r‹   r   )rY   r�   rÆ   r_   r_   r`   Útest_length_two_neg2¬  s    
z%TestCorrPearsonr.test_length_two_neg2z$alternative, pval, rlow, rhigh, sign)ú	two-sidedçˆöïÑèÙÔ?gÐmãúê¿g¸“ÆŽúÀï?r   )ÚlessçKôƒË…Éê?rK   gé?ú
Šï?r   )ÚgreaterçÓ.ðÑèÙÄ?gðÕ¤ÑÎ¶å¿r   r   )rÒ   rÓ   gÓfÇŽúÀï¿g¡ëlãúê?rK   )rÔ   r×   r»   gðÕ¤ÑÎ¶å?rK   )rÖ   rÕ   gé?ú
Šï¿rŠ   rK   c           
      C   st   ddddg}t  ddddg¡| }tj|||d�}t|jd| d	d
� t|j|dd
� | ¡ }	t|	||fdd
� d S )Nr   r   r   r    r   r'   ©Úalternativegê—“å?r&   ©Úrtolç�íµ ÷Æ°>)rU   r   rP   r‹   r
   r¬   r«   rÏ   )
rY   rÙ   ÚpvalZrlowZrhighÚsignrz   rZ   ÚresultÚcir_   r_   r`   Útest_basic_exampleº  s    z#TestCorrPearsonr.test_basic_examplec                 C   sP   t  d¡}| }tj||dd�}tj||dd�}t|jdƒ t|jddd� d S )	NrE   rÖ   rØ   rÔ   r   r   g#B’¡œÇ;r³   )rU   r   rP   r‹   r
   r«   )rY   rz   rZ   Ztest_greaterZ	test_lessr_   r_   r`   Ú(test_negative_correlation_pvalue_gh17795Ê  s    
z9TestCorrPearsonr.test_negative_correlation_pvalue_gh17795c                 C   sR   dddg}dddg}t  ||¡}|\}}t|dƒ t|dd	d
� t| ¡ dƒ d S )Nr   r   r   r!   éüÿÿÿióÿÿÿr»   rs   çH¯¼šò×z>r³   rÎ   )rP   r‹   r
   r   rÏ   )rY   rz   rZ   r®   r�   rÆ   r_   r_   r`   Ú#test_length3_r_exactly_negative_oneÒ  s    


z4TestCorrPearsonr.test_length3_r_exactly_negative_onec                 C   s&   dddg}ddg}t ttj||ƒ d S ©Nr   r   r   r    r!   ©rx   ry   rP   r‹   ©rY   rz   rZ   r_   r_   r`   Útest_unequal_lengthsÞ  s    
z%TestCorrPearsonr.test_unequal_lengthsc                 C   s    dg}dg}t ttj||ƒ d S ©Nr   r   rç   rè   r_   r_   r`   Ú	test_len1ã  s    zTestCorrPearsonr.test_len1c              	   C   sB   dddg}dddg}d}t jt|d�� t ||¡ W 5 Q R X d S )Ny       €      ð¿y       €       Ày       €      Àz+This function does not support complex datarv   )Úpytestr   ry   rP   r‹   )rY   rz   rZ   Úmessager_   r_   r`   Útest_complex_dataè  s
    

z"TestCorrPearsonr.test_complex_dataN)-rƒ   r„   r…   Ú__doc__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ì   ÚmarkÚparametrizerá   râ   rå   ré   rë   rî   r_   r_   r_   r`   r‡   Õ   s`   				
	ûÿ
	r‡   c                   @   s|   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zej	j
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 )ÚTestFisherExacta¢  Some tests to show that fisher_exact() works correctly.

    Note that in SciPy 0.9.0 this was not working well for large numbers due to
    inaccuracy of the hypergeom distribution (see #1218). Fixed now.

    Also note that R and SciPy have different argument formats for their
    hypergeometric distribution functions.

    R:
    > phyper(18999, 99000, 110000, 39000, lower.tail = FALSE)
    [1] 1.701815e-09
    c                 C   s²  t j}|ddgddggƒd }t|ddd� |d	d
gddggƒd }t|ddd� |d
dgdd
ggƒd }t|ddd� |ddgddggƒd }t|ddd� |ddgddggƒd }t|ddd� |ddgddggƒd }t|ddd� |ddgddggƒd }t|ddd� |ddgddggƒd }t|ddd� |ddgdd
ggƒd }t|dƒ |dd
gddggƒd }t|dƒ |d
dgdd
ggƒ}t|d ddd� t|d dƒ d S ) Né¤8  é N  é0u  é@œ  r   gØžY ¦†?r    r4   éd   r   éè  r!   g,Ôšæ§À?r#   r$   gÕ2c‘—?r"   rE   göY
íAÉ?é   é   g_Ð£†¸?é   é   gOÖ^úMÆ?r   g˜ïÖ…a¨?r   rŠ   gƒÞgÑEÝ?g’$I’$I²?)rP   Úfisher_exactr	   )rY   rý   r®   r_   r_   r`   r¿   þ  s0    

zTestFisherExact.test_basicc                 C   s  ddgddggdfddgddggdfdd	gd
d
ggdfddgddggdfddgddggdfd
dgd
d	ggdfd
dgd
dggdfddgd	dggt jdffddgd	dggdfdd	gddggt jdffdd	gddggdfg}|D ]4\}}t t  |¡¡}t jj|d	 |d	 ddd� qÚd S )Nr÷   r   rø   r!   )gAnº&	Ð?g“}K
T¦À?r#   r$   )g¦›	7ûµ?gÑÉÀ ‘—?r   rE   )g!çÁç@çjô)íAÉ?rù   rú   )gUþ‰!a¹Õ?gÌKY£†¸?rû   rü   )g7�úXÙ?g~l²tPÆ?)gFu|Ë?rþ   r   )rs   gQÆìN^¯?r    g†a†a¨?©rs   rŠ   g†a†a¨?r   rF   T)r@   Úverbose)rU   ÚinfrP   rý   ÚasarrayÚtestingr   )rY   ZtablistÚtableZres_rr®   r_   r_   r`   Útest_precise  s"    õÿzTestFisherExact.test_precisec                 C   s|   ddgddgg}t  |¡}t|d dƒ ddgdd	gg}t  |¡}t|d d
ƒ ddgddgg}t  |¡}t|d dƒ d S )Nr"   é%   él   éÈ   r   gÑm¤Üt?é   r   éf   gÔÈ,‹×Áë:é^   é0   iù  i\B  gº–N¶¨šQ8©rP   rý   r
   ©rY   rz   r®   r_   r_   r`   Útest_gh41301  s    


zTestFisherExact.test_gh4130c                 C   s0   ddgddgg}t  |¡}t|d ddd� d S )NiiòX iÝV i¿çW r   r   g¯žÑ§›R£r³   r  r  r_   r_   r`   Útest_gh9231G  s    
zTestFisherExact.test_gh9231c                 C   sx   dddg}t |dddgƒD ]0\}}t ddgd	|gg¡d
 }t||dd� qt ddgddgg¡d
 }t|ddd� d S )Ng±Æ?‘Î=gNuP½=gËsù­=éK   éL   éM   i(E  ið  i)  r   r    r4   iPF  i€8 rô   i�_ g^KÈ=›Ñ?)ÚziprP   rý   r	   )rY   ÚpvalsrÝ   Únumr®   r_   r_   r`   Útest_large_numbersN  s    
z"TestFisherExact.test_large_numbersc                 C   s    t ttjt d¡ dd¡ƒ d S )Nr"   r   r   )rx   ry   rP   rý   rU   r   rS   ©rY   r_   r_   r`   Útest_raisesY  s    ÿzTestFisherExact.test_raisesc                 C   sn   ddgddggddgddggddgddggddgddggf}|D ](}t  |¡\}}t|dƒ t|tjƒ q@d S )Nr   r!   rE   rŠ   )rP   rý   r   rU   rV   )rY   Útablesr  Z	oddsratiorÝ   r_   r_   r`   Útest_row_or_col_zero^  s    ý
z$TestFisherExact.test_row_or_col_zeroc                 C   s  ddgddggddgddggddgdd	ggd
dgddggddgddggddgddggddgddggddgddggddgddggf	}ddgddgddgddgddgddgddgddgddgf	}t ||ƒD ]L\}}g }| tj|dd�d ¡ | tj|d d�d ¡ t||dd!d"� qÆd S )#Nr   r#   r$   r  i,  é   rB   r"   i¥  é¾   i   i„  r   r   r   r    gIëü[÷’?gq}“!î÷ï?rŠ   g2½á\„ª&g’ŠQ“pô6g:O‡_»ç?gÚ×Ë añÒ?çš™™™™™¹?çffffffæ?çÍÌÌÌÌÌì?ç333333Ó?çUUUUUUå?r½   rÔ   rØ   rÖ   rä   )r´   rÛ   )r  ÚappendrP   rý   r
   )rY   r  r  r  rÝ   r®   r_   r_   r`   Útest_less_greaterh  s2    ôõz!TestFisherExact.test_less_greaterc                 C   s   t  ddgddgg¡\}}d S )Nr   r   r%   i¡")rP   rý   )rY   Zoddsr«   r_   r_   r`   Útest_gh3014Š  s    zTestFisherExact.test_gh3014rÙ   rÒ   rÔ   rÖ   c                 C   s:   t  ddgddgg¡}tj||d�}t|j|jf|ƒ d S )Nró   rô   rõ   rö   rØ   )rU   r   rP   rý   r   r¬   r«   )rY   rÙ   r  r®   r_   r_   r`   Útest_result�  s    zTestFisherExact.test_resultN)rƒ   r„   r…   rï   r¿   r  r  r  rì   rð   Úslowr  r  r  r$  r%  rñ   r&  r_   r_   r_   r`   rò   ð  s   


"rò   c                   @   s   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ Z"d@dA„ Z#dBdC„ Z$dDdE„ Z%dFS )GÚTestCorrSpearmanrrˆ   c                 C   s"   t  dd¡}tt |¡ ¡ ƒ d S )Nç      @ç       @)rP   Ú	spearmanrr   rU   ÚisnanÚallrj   r_   r_   r`   Útest_scalarŸ  s    zTestCorrSpearmanr.test_scalarc                 C   s4   t ttjdddgddgƒ t ttjdddgdƒ d S )Nr   r   r$   r%   )rx   ry   rP   r+  r  r_   r_   r`   Útest_uneven_lengths£  s    z%TestCorrSpearmanr.test_uneven_lengthsc                 C   sŒ   t j d¡ t j dd¡}t j dd¡}t ||¡jjdks@t‚tj|j	|j	dd�j
jdks`t‚tttj||dd� tttj|j	|j	ƒ d S )Né„‹ r    r   r   ©r!   r!   r   r=   )rU   ÚrandomÚseedÚrandnrP   r+  r¬   ÚshapeÚAssertionErrorÚTr«   rx   ry   rè   r_   r_   r`   Útest_uneven_2d_shapes§  s     z'TestCorrSpearmanr.test_uneven_2d_shapesc                 C   sz   t j d¡ t j ddd¡}tttj|ƒ tttj||ƒ tttj|d d ƒ ttj||d d�tj| 	¡ | 	¡ dd�ƒ d S )Nr0  r    r   r   r=   r   )
rU   r2  r3  r4  rx   ry   rP   r+  r
   Úflatten©rY   rz   r_   r_   r`   Útest_ndim_too_high²  s    ÿz$TestCorrSpearmanr.test_ndim_too_highc                 C   sp   t  d¡}t j|d< tt ||¡t jt jfƒ ttj||dd�dƒ tttj||dd� tttj||dd� d S )Nrn   r%   rp   rq   )rŠ   rs   rt   ru   )rU   r   rV   r   rP   r+  rx   ry   r:  r_   r_   r`   Útest_nan_policy¼  s    

ÿz!TestCorrSpearmanr.test_nan_policyc                 C   s¸   t j d¡ t j dd¡}d}t j|d d …|f< t j||dd�}tj|dd�\}}t |¡\}}t jt j||dd�|dd�}t jt j||dd�|dd�}t||d	d
� t||d	d
� d S )Nr!   rE   r"   r   r=   rp   rq   r   ç›+¡†›„=r³   )	rU   r2  r3  ÚrandrV   ÚdeleterP   r+  r
   )rY   rz   ÚkrZ   ZcorxZpxZcoryÚpyr_   r_   r`   Útest_nan_policy_bug_12458Å  s    z+TestCorrSpearmanr.test_nan_policy_bug_12458c                    sp   t j d¡ d‰ d}t j ˆ |¡‰t jˆd< t jˆd< tjˆddd�\}}‡ ‡fdd	„tˆ ƒD ƒ}t||ƒ d S )
Nr!   rE   ©r   r   )r   rK   r   Ú	propagate©r>   rr   c                    s$   g | ]‰ ‡ ‡fd d„t ˆƒD ƒ‘qS )c              	      s2   g | ]*}t  ˆ|d d …f ˆˆ d d …f ¡j‘qS ©N)rP   r+  r¬   ©Ú.0Úi)Újrz   r_   r`   Ú
<listcomp>Ú  s     zJTestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>.<listcomp>©Úrange©rH  ©Úmrz   ©rJ  r`   rK  Ú  s   ÿz?TestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>)	rU   r2  r3  r4  rV   rP   r+  rM  r
   )rY   ÚnÚcorrr«   r®   r_   rO  r`   Útest_nan_policy_bug_12411Ò  s    

ÿz+TestCorrSpearmanr.test_nan_policy_bug_12411c                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  rQ   r	   rŒ   r_   r_   r`   Útest_sXXÞ  s    zTestCorrSpearmanr.test_sXXc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  rQ   r�   r	   rŒ   r_   r_   r`   Ú
test_sXBIGã  s    zTestCorrSpearmanr.test_sXBIGc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  rQ   r‘   r	   rŒ   r_   r_   r`   Útest_sXLITTLEè  s    zTestCorrSpearmanr.test_sXLITTLEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  rQ   r“   r	   rŒ   r_   r_   r`   Útest_sXHUGEí  s    zTestCorrSpearmanr.test_sXHUGEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  rQ   r•   r	   rŒ   r_   r_   r`   Útest_sXTINYò  s    zTestCorrSpearmanr.test_sXTINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  rQ   r—   r	   rŒ   r_   r_   r`   Útest_sXROUND÷  s    zTestCorrSpearmanr.test_sXROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r�   r	   rŒ   r_   r_   r`   Útest_sBIGBIGü  s    zTestCorrSpearmanr.test_sBIGBIGc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r�   r‘   r	   rŒ   r_   r_   r`   Útest_sBIGLITTLE  s    z!TestCorrSpearmanr.test_sBIGLITTLEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r�   r“   r	   rŒ   r_   r_   r`   Útest_sBIGHUGE  s    zTestCorrSpearmanr.test_sBIGHUGEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r�   r•   r	   rŒ   r_   r_   r`   Útest_sBIGTINY  s    zTestCorrSpearmanr.test_sBIGTINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r�   r—   r	   rŒ   r_   r_   r`   Útest_sBIGROUND  s    z TestCorrSpearmanr.test_sBIGROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r‘   r	   rŒ   r_   r_   r`   Útest_sLITTLELITTLE  s    z$TestCorrSpearmanr.test_sLITTLELITTLEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r‘   r“   r	   rŒ   r_   r_   r`   Útest_sLITTLEHUGE  s    z"TestCorrSpearmanr.test_sLITTLEHUGEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r‘   r•   r	   rŒ   r_   r_   r`   Útest_sLITTLETINY  s    z"TestCorrSpearmanr.test_sLITTLETINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r‘   r—   r	   rŒ   r_   r_   r`   Útest_sLITTLEROUND$  s    z#TestCorrSpearmanr.test_sLITTLEROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r“   r	   rŒ   r_   r_   r`   Útest_sHUGEHUGE)  s    z TestCorrSpearmanr.test_sHUGEHUGEc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r“   r•   r	   rŒ   r_   r_   r`   Útest_sHUGETINY.  s    z TestCorrSpearmanr.test_sHUGETINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r“   r—   r	   rŒ   r_   r_   r`   Útest_sHUGEROUND3  s    z!TestCorrSpearmanr.test_sHUGEROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r•   r	   rŒ   r_   r_   r`   Útest_sTINYTINY8  s    z TestCorrSpearmanr.test_sTINYTINYc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r•   r—   r	   rŒ   r_   r_   r`   Útest_sTINYROUND=  s    z!TestCorrSpearmanr.test_sTINYROUNDc                 C   s"   t  tt¡}|d }t|dƒ d S r‰   )rP   r+  r—   r	   rŒ   r_   r_   r`   Útest_sROUNDROUNDB  s    z"TestCorrSpearmanr.test_sROUNDROUNDc                 C   s,   t  tt¡}d}t||ƒ t|j|jƒ d S r¨   )rP   r+  rQ   r   r   rª   r¬   r­   r_   r_   r`   Ú test_spearmanr_result_attributesG  s    
z2TestCorrSpearmanr.test_spearmanr_result_attributesc                 C   sP   ddddddg}ddddddg}t  ||¡}t  t ||g¡j¡}t||ƒ d S )Nr   r   r   r    r!   r"   )rP   r+  rU   r  r7  r
   ©rY   Úx1Úx2Úres1Úres2r_   r_   r`   Útest_1d_vs_2dM  s
    zTestCorrSpearmanr.test_1d_vs_2dc                 C   sf   dD ]\}dt jddddg}dddddt jg}tj|||d�}tjt  ||g¡j|d�}t||ƒ qd S )	N)rD  rp   r   r   r    r!   r"   r   rq   )rU   rV   rP   r+  r  r7  r
   )rY   rr   rl  rm  rn  ro  r_   r_   r`   Útest_1d_vs_2d_nansT  s    z$TestCorrSpearmanr.test_1d_vs_2d_nansc                 C   s®   t  d¡}| }t  ddddddg¡}t  |||g¡j}t |¡}t  ddd	gddd
gd	d
dgg¡}t jdtd�}d|ddd…f< d|dd…df< t	|j
|ƒ t	|j|ƒ d S )Nr"   r   r   r   r   r!   r    rK   g÷3£¼â+î?g÷3£¼â+î¿©r   r   r;   g+Hs]®s?)rU   r   r   r  r7  rP   r+  ÚzerosÚfloatr
   r¬   r«   )rY   rl  rm  Úx3rz   ÚactualZexpected_corrZexpected_pvaluer_   r_   r`   Ú
test_3cols]  s    

þzTestCorrSpearmanr.test_3colsc                 C   sÈ   t  t jddddddgdt jddd	ddgd
ddddddgg¡j}t  t jt jt jgt jt jt jgt jt jdgg¡}ttj|dd�j|ƒ tj|dd�j}t|d d |d d |d d fddd� d S )Nr±   r)  r3   çffffff@ç      @çffffff"@çffffff@g333333@çš™™™™™@r'   çffffff@çffffff@ç       @çffffff@rŠ   rD  rq   rp   r   r   r   )gaÑcJÚCÊ?g%Ålnñß?g_0nYt!Þ¿rÜ   rÚ   )rU   r   rV   r7  r
   rP   r+  r¬   )rY   rz   rS  r®   r_   r_   r`   Útest_gh_9103m  s     þþÿ" ÿzTestCorrSpearmanr.test_gh_9103c           
      C   s¨   d}t j d¡ t j |¡}t j |¡dk}|dk}t  |¡}tj||dd�j}t j||< tj||dd�j}| 	t j
¡}tj||dd�j}dddg}	t|||g|	ƒ d S )	Nr÷   iH” r  r'   rp   rq   g¬onjµë?g)Wn%·ë?)rU   r2  r3  r>  r   rP   r+  r¬   rV   ÚastypeÚint32r
   )
rY   rR  rz   rP  r¸   r¾   rn  ro  Úres3Úexpectedr_   r_   r`   Útest_gh_8111|  s    


zTestCorrSpearmanr.test_gh_8111N)&rƒ   r„   r…   rï   r.  r/  r8  r;  r<  rB  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rp  rq  rw  r�  r†  r_   r_   r_   r`   r(  –  sF   
		r(  c                   @   sž   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej d d!¡d"d#„ ƒZd$S )%ÚTestCorrSpearmanr2z-Some further tests of the spearmanr function.c                 C   sT   dddddg}dddddg}d	}t  ||¡}t|d
 |d
 ƒ t|d |d ƒ d S )Nr   r   r   r    r!   r"   r#   r$   ©g™hÜ
ÚCê?g€¬R£­¶?r   )rP   r+  r	   ©rY   rl  rm  r…  r®   r_   r_   r`   Útest_spearmanr_vs_r—  s    z&TestCorrSpearmanr2.test_spearmanr_vs_rc                 C   s   t t g g ¡tjtjfƒ d S rF  )r   rP   r+  rU   rV   r  r_   r_   r`   Útest_empty_arrays¡  s    z$TestCorrSpearmanr2.test_empty_arraysc                 C   sš   t j d¡ t  t jjdddd�t jjdddd�g¡}ddgddgg}t  t j |¡|¡}d}t 	|d |d ¡}t
|d |d ƒ t
|d |d ƒ d S )	Néz  r   éô  ©ÚlocÚscaler�   rŠ   r!  )g‚CzYšWÒ?geÞü™*Ò=r   )rU   r2  r3  r   ÚnormalÚdotÚlinalgÚcholeskyrP   r+  r	   )rY   rz   rS  r…  r®   r_   r_   r`   Útest_normal_draws¤  s    ÿÿz$TestCorrSpearmanr2.test_normal_drawsc                 C   s&   t t dddgdddg¡d dƒ d S )Nr   r   r   rŠ   )r	   rP   r+  r  r_   r_   r`   Útest_corr_1°  s    zTestCorrSpearmanr2.test_corr_1c                 C   sp   t  d¡}t j|d< tt ||¡t jt jfƒ ttj||dd�dƒ tttj||dd� tttj||dd� d S )Nrn   r%   rp   rq   )rŠ   r   rt   ru   )	rU   r   rV   r   rP   r+  r
   rx   ry   r:  r_   r_   r`   Útest_nan_policies³  s    

ÿz$TestCorrSpearmanr2.test_nan_policiesc                 C   s(   t  d¡}t  d¡}tttj||ƒ d S )Nrn   ç      4@)rU   r   rx   ry   rP   r+  rè   r_   r_   r`   ré   ¼  s    

z'TestCorrSpearmanr2.test_unequal_lengthsc                 C   sX   ddddg}dddt jg}tj||dd	�}tj|d d… |d d… dd	�}t||ƒ d S )
Nr   r   r   r    r$   r#   r"   rp   rq   )rU   rV   rP   r+  r   rk  r_   r_   r`   Útest_omit_paired_valueÁ  s
     z)TestCorrSpearmanr2.test_omit_paired_valuec                 C   sš   t tdƒƒ}t tdƒƒ}|d |d  |d< |d< |d |d  |d< |d< |d |d  |d< |d< | tj¡ | d¡ ttj||d	d
�d dƒ d S )NéÐ  r%   r   i²  rE   iå  i³  r±   rp   rq   gV-²�ïï?)ÚlistrM  r#  rU   rV   r   rP   r+  rè   r_   r_   r`   Ú#test_gh_issue_6061_windows_overflowÈ  s    
z6TestCorrSpearmanr2.test_gh_issue_6061_windows_overflowc              	   C   s¾   d}t tj|d��¢ t dddgdddg¡\}}t|tjƒ t|tjƒ t dddgdddg¡\}}t|tjƒ t|tjƒ t dddgdddg¡\}}t|tjƒ t|tjƒ W 5 Q R X d S )NrÀ   rv   r   r   )r   rP   rÅ   r+  r   rU   rV   )rY   Úwarn_msgr�   rÆ   r_   r_   r`   Ú	test_tie0Õ  s    zTestCorrSpearmanr2.test_tie0c                 C   sV   ddddg}ddddg}ddddg}ddddg}t  ||¡}t  ||¡}t||ƒ d S )NrŠ   r*  r±   r)  r)   )rP   r+  r‹   r   )rY   rz   rZ   ZxrÚyrÚsrÚprr_   r_   r`   Ú	test_tie1ã  s    zTestCorrSpearmanr2.test_tie1c                 C   sb   ddddg}ddddg}ddddt jg}ddddt jg}t ||¡}tj||dd�}t||ƒ d S )Nr   r   r)   r   r    rp   rq   )rU   rV   rP   r+  r   )rY   rl  r[   rm  r\   Zsr1Zsr2r_   r_   r`   Ú	test_tie2ð  s    zTestCorrSpearmanr2.test_tie2c              	   C   sú   t  ddddgddddgg¡}t  ddddgddddgg¡}t  ddddgddddgg¡}d}ttj|d��„ tj|dd�\}}t|t jƒ t|t jƒ tj|dd�\}}t|t jƒ t|t jƒ tj|dd�\}}t|t jƒ t|t jƒ W 5 Q R X d S )Nr   r   r   r    rÀ   rv   r=   ©rU   r   r   rP   rÅ   r+  r   rV   )rY   Úz1Zz2Zz3r�  r�   rÆ   r_   r_   r`   Útest_ties_axis_1þ  s    z#TestCorrSpearmanr2.test_ties_axis_1c                 C   s†   t  ddddddddddg
¡}t  ddddddddddg
¡}d}ttj|d	��. t ||¡\}}t|t jƒ t|t jƒ W 5 Q R X d S )
NrŠ   r   ç‘NÂ}	„?ç	™ï–Ï/`?çY%uX-±H?çC1štºq1?çˆ¥*­I?rÀ   rv   r¤  )rY   rz   rZ   r�  r�   rÆ   r_   r_   r`   Útest_gh_11111  s       þz TestCorrSpearmanr2.test_gh_11111c                 C   sT   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ttj||d
d� d S )NrŠ   ç      @r*  r   r§  r¨  r©  rª  r«  r   r=   )rU   r   rx   ry   rP   r+  rè   r_   r_   r`   Útest_index_error  s       þz#TestCorrSpearmanr2.test_index_errorc              	   C   sÂ   dddddg}dddddg}d	}t j||d
d�}t|d |d ƒ t|d d|d d  ƒ t j||dd�}t|d |d ƒ t|d |d d ƒ tjtdd�� t j||dd� W 5 Q R X d S )Nr   r   r   r    r!   r"   r#   r$   rˆ  rÔ   rØ   r   rÖ   úalternative must be 'less'...rv   ú	ekki-ekki)rP   r+  r	   rì   r   ry   r‰  r_   r_   r`   Útest_alternative   s    z#TestCorrSpearmanr2.test_alternativerÙ   ©rÒ   rÔ   rÖ   c           	   	   C   sÞ   dddddg}dddddg}|t jg }|t jg }tt ||¡t jt jfƒ tj||d	|d
�}tj|||d�}t||ƒ d}tjt|d�� tj||d|d
� W 5 Q R X d}tjt|d�� tj||d|d
� W 5 Q R X d S )Nr   r   r   r    r!   r"   r#   r$   rp   ©rr   rÙ   rØ   úThe input contains nan valuesrv   rt   únan_policy must be one of...r°  )	rU   rV   r   rP   r+  r
   rì   r   ry   )	rY   rÙ   rl  rm  Úx1nanÚx2nanÚ
res_actualÚres_expectedrí   r_   r_   r`   Útest_alternative_nan_policy7  s(    
ÿ

ÿ
ÿz.TestCorrSpearmanr2.test_alternative_nan_policyN)rƒ   r„   r…   rï   rŠ  r‹  r•  r–  r—  ré   r™  rœ  rž  r¢  r£  r¦  r¬  r®  r±  rì   rð   rñ   rº  r_   r_   r_   r`   r‡  ”  s$   
	r‡  c                  C   s
  d} dddddddd	g}dddddd	ddg}d
}| D ]4}t  ||¡}t|d |d ƒ t|d |d ƒ q4ddddddddd	g	}ddddddd	ddg	}d
}| D ]4}t  ||¡}t|d |d ƒ t|d |d ƒ qždddddddg}dddddddg}d}| D ]6}t  ||¡}t|d |d ƒ t|d |d ƒ �q ddddddd	g}ddddd	ddg}d}| D ]6}t  ||¡}t|d |d ƒ t|d |d ƒ �qdt d¡}t d¡}d}| D ]:}t j|||d�}t|d |d ƒ t|d |d ƒ �q¸|d }|d |d< ||d< d}| D ]:}t j|||d�}t|d |d ƒ t|d |d ƒ �q|d }|d |d< ||d< d}| D ]:}t j|||d�}t|d |d ƒ t|d |d ƒ �qxt d¡}t d¡d d d… }d}| D ]:}t j|||d�}t|d |d ƒ t|d |d ƒ �qÚ|d }|d |d< ||d< d}| D ]:}t j|||d�}t|d |d ƒ t|d |d ƒ �q:|d }|d |d< ||d< d}| D ]:}t j|||d�}t|d |d ƒ t|d |d ƒ �qštdddddddd	ddg
ƒ}tddddddd	d	d	dg
ƒ}d}tt j||dd�d |ƒ d}tt j||dd�d |ƒ |d |d< ttt j||dd� ttt j||dd� ttt j||dd� d ddd dg}dddddg}d!}t  ||¡}t|d |d ƒ t|d |d ƒ d"}	| D ].}t j|||d�}t||	ƒ t	|j
|jƒ �qê| D ]„}t	t jdddgdddg|d�tjtjfƒ t	t jdddgdddg|d�tjtjfƒ t	t jdddgdddg|d�tjtjfƒ �qt	t  g g ¡tjtjfƒ tj d#¡ t tjjddd$d%�tjjddd$d%�g¡}d&d'gd'd&gg}
t tj |
¡|¡}d(}t  |d |d ¡}t|d |d ƒ t|d |d ƒ tt jdddgdddgdd�d d&ƒ tt jdddgdddgdd�d d)ƒ t d*¡}tj|d< tt  ||¡tjtjfƒ tt j||d+d,�d-d.d/� tt j||d+d0d1�d2d.d/� ttt j||d3d,� ttt j||d4d,� t d*¡}t d5¡}ttt j||ƒ t  g g ¡\}}t	tj|ƒ t	tj|ƒ t  dgdg¡\}}t	tj|ƒ t	tj|ƒ tjd6td7�}tj |d8¡}tjd6td7�}t |d9d … |d d9… f¡}tt t  ||¡d ¡ƒ d S ):N)r¾   Úcr!   r   r   r   r"   r    r#   r$   rÿ   r   )g®¶J’$IÂ¿gm¹”K¹è?)gJka†a¨?rŠ   rE   )rŠ   ç´žx·O~¢>)Úvariant)g?é“>é“î?çaÆV¥ã×>)g}Ò'}Ò'í?ço‡›…&5ÿ>rK   )r»   r¼  )g?é“>é“î¿r¾  )g}Ò'}Ò'í¿r¿  r%   gok¨¤�|ë?r¾   gffffffê?r»  Úexact©ÚmethodÚbananaZrmsrG   )çgúþÝ}+Þ¿g`=ài€Ò?r©   rŒ  r�  rŽ  rŠ   r!  )gå\zf±È?gÔ^nŠÅ)ß=g#¬Çqì?rn   rp   rq   )rŠ   g®È/¢ã×>rÜ   rÚ   Ú
asymptotic)rr   rÂ  )rŠ   g�Îóèíà&?rt   ru   r˜  rš  r;   iË  rø   )rP   Ú
kendalltaur	   rU   r   r   rx   ry   r   r   rª   r¬   rV   r2  r3  r‘  r’  r“  r”  r   r
   rt  ÚmaZmasked_greaterÚconcatenater   Úisfinite)Úvariantsrz   rZ   r…  Ztauxr®   r¾   rl  rm  r¯   rS  ÚtauÚp_valuer_   r_   r`   Útest_kendalltau_  s0   




ÿ
ÿ
ÿÿÿ ÿ ÿ

 ÿ ÿ

rÍ  c                  C   sœ   t j d¡ tddƒD ]€} g }t| ƒD ]}||g| 7 }q&t|ƒ}t j |¡ t j |¡ t ||¡}t ||¡}t	|d |d ƒ t	|d |d ƒ qd S )Né*   r   rE   r   r   )
rU   r2  r3  rM  r›  ÚshuffleÚmstats_basicrÆ  rP   r	   )Úsr¸   rI  r¾   r…  rv  r_   r_   r`   Útest_kendalltau_vs_mstats_basic9  s    rÒ  c                  C   s\   ddddg} t jdddg}tj| |dd�}t | d	d … |d	d … ¡}t|j|jd
d� d S )NrŠ   r*  r±   r)  ç333333@ç333333@rp   rq   r   r²   r³   )rU   rV   rP   rÆ  r
   r¬   )rz   rZ   Úr1Úr2r_   r_   r`   Útest_kendalltau_nan_2nd_argI  s
    r×  c                	   C   s.   t jtdd�� tjg g dd� W 5 Q R X d S )Nz/'kendalltau' keyword argument 'initial_lexsort'rv   T)Zinitial_lexsort)rì   ÚwarnsÚDeprecationWarningrP   rÆ  r_   r_   r_   r`   Ú#test_kendalltau_dep_initial_lexsortS  s
    þrÚ  c                   @   sX  e Zd Zdd„ ZdZejejejgZdddgZdddgZ	dddgZ
d	dd	gZd
dd
gZdddgZdddgZdddgZdd„ Zeeeedgd ƒƒeeeeeƒdgd ƒƒ Zej de¡dd„ ƒZeeeedgd ƒƒeeeeeƒdgd ƒƒ Zej de¡dd„ ƒZeeee	dgd ƒƒeeeee	ƒdgd ƒƒ Zej de¡dd„ ƒZeeee
dgd ƒƒeeeee
ƒdgd ƒƒ Zej de¡d d!„ ƒZeeeedgd ƒƒeeeeeƒdgd ƒƒ Zej de¡d"d#„ ƒZ eeeedgd ƒƒeeeeeƒdgd ƒƒ Z!ej de!¡d$d%„ ƒZ"eeeedgd ƒƒeeeeeƒdgd ƒƒ Z#ej de#¡d&d'„ ƒZ$eeeedgd ƒƒeeeeeƒdgd ƒƒ Z%ej de%¡d(d)„ ƒZ&eeeedgd ƒƒeeeeeƒdgd ƒƒ Z'ej de'¡d*d+„ ƒZ(eeedgd ƒƒeeedgd ƒƒ Z)ej d,e)¡d-d.„ ƒZ*ej d/d0¡ej d1d2¡d3d4„ ƒƒZ+d5S )6ÚTestKendallTauAlternativec              	   C   sz  dddddg}dddddg}t j||d	d
�}|d dks<t‚t j||dd
�}t|d |d ƒ t|d d|d d  ƒ t j||dd
�}t|d |d ƒ t|d |d d ƒ | ¡  t j||d	d
�}|d dk sØt‚t j||dd
�}t|d |d ƒ t|d d|d d  ƒ t j||dd
�}t|d |d ƒ t|d |d d ƒ tjtdd�� t j||dd
� W 5 Q R X d S )Nr   r   r   r    r!   r"   r#   r$   rÒ   rØ   r   rÔ   rÖ   r¯  rv   r°  )	rP   rÆ  r6  r   r
   Úreverserì   r   ry   r‰  r_   r_   r`   Ú&test_kendalltau_alternative_asymptotic\  s*    z@TestKendallTauAlternative.test_kendalltau_alternative_asymptotic)rÔ   rÒ   rÖ   r   r'   gýRUUUUÕ?gZUUUUÅ?g~©ªªªªî?gðîîîîâ?gË®[°…á?g­¢¯ÝÌî?gýSÇŒ“¾?gýSÇŒ“®?g¼:Ÿ
±„Ï?g²3Ÿ
±„ß?g§<t‡'.è?gN  Aƒï?g‰ÌÉssŸ?gY”ÌÉss�?c           	      C   s@   |rt  |¡ }|d9 }tj||d|d�}||f}t||ƒ d S )NrK   rÀ  ©rÂ  rÙ   )rU   r  rP   rÆ  r
   )	rY   rz   rZ   rÙ   ÚrevÚstat_expectedÚ
p_expectedr®   r¹  r_   r_   r`   Ú
exact_test›  s    z$TestKendallTauAlternative.exact_testFr   Tzalternative, p_expected, revc                 C   s,   dgdg }}t j}|  ||||||¡ d S rê   )rU   rV   râ  ©rY   rÙ   rá  rß  rz   rZ   rà  r_   r_   r`   Útest_against_R_n1¦  s    z+TestKendallTauAlternative.test_against_R_n1c                 C   s.   ddgddg }}d}|   ||||||¡ d S )Nr   r   r   r    gþÿÿÿÿÿï?©râ  rã  r_   r_   r`   Útest_against_R_n2¯  s    z+TestKendallTauAlternative.test_against_R_n2c                 C   s2   dddgdddg }}d}|   ||||||¡ d S ©Nr   r   r   rå  rã  r_   r_   r`   Útest_against_R_c0¸  s    z+TestKendallTauAlternative.test_against_R_c0c                 C   s6   ddddgddddg }}d}|   ||||||¡ d S )Nr   r   r   r    gVUUUUUå?rå  rã  r_   r_   r`   Útest_against_R_c1Á  s    z+TestKendallTauAlternative.test_against_R_c1c                 C   s:   dddddgdddddg }}d}|   ||||||¡ d S )Nr   r   r   r    r!   r   rå  rã  r_   r_   r`   Útest_against_R_no_correlationË  s    z7TestKendallTauAlternative.test_against_R_no_correlationc              	   C   sF   ddddddddgddddddddg }}d	}|   ||||||¡ d S )
Nr   r   r   r    r!   r"   r#   r$   r   rå  rã  r_   r_   r`   Útest_against_R_no_correlationbÕ  s    *z8TestKendallTauAlternative.test_against_R_no_correlationbc              	   C   sH   ddddddddd	g	}d
ddddddddg	}d}|   ||||||¡ d S )Ng333333F@g33333óF@g33333óD@gfffff¦J@gš™™™™YF@gÍÌÌÌÌF@gš™™™™YI@gš™™™™™F@gÍÌÌÌÌN@gÍÌÌÌÌÌ@çÍÌÌÌÌÌ@r)   r3   çÍÌÌÌÌÌ@r)  gÍÌÌÌÌÌ@çffffff@r~  gÇqÇqÜ?rå  rã  r_   r_   r`   Útest_against_R_lt_171Þ  s    z/TestKendallTauAlternative.test_against_R_lt_171c                 C   s@   t j d¡ t j d¡}t j d¡}d}|  ||||||¡ d S )Nr   r÷   gUm�*,ÿ§¿©rU   r2  r3  r>  râ  rã  r_   r_   r`   Útest_against_R_lt_171bë  s
    z0TestKendallTauAlternative.test_against_R_lt_171bc                 C   s@   t j d¡ t j d¡}t j d¡}d}|  ||||||¡ d S )Nr   éª   gƒHÌÍ4‘¼?rð  rã  r_   r_   r`   Útest_against_R_lt_171c÷  s
    z0TestKendallTauAlternative.test_against_R_lt_171czalternative, revc                 C   st   t j d¡ t j d¡}t j d¡}tj||d|d�}tj||d|d�}t|d |d ƒ t|d |d dd� d S )	Nr   i�  rÀ  rÞ  rÅ  r   çü©ñÒMbP?rÚ   )rU   r2  r3  r>  rP   rÆ  r   r
   )rY   rÙ   rß  rz   rZ   Úres0rn  r_   r_   r`   Útest_gt_171  s    
ÿ
ÿz%TestKendallTauAlternative.test_gt_171rÂ  )rÀ  rÅ  rÙ   r²  c           
   	   C   sô   dddddg}ddddd	g}|t jg }|t jg }tj||||d
�}t jt jf}t||ƒ tj||d||d�}tj||||d
�}t||ƒ d}	tjt|	d�� tj||d||d� W 5 Q R X d}	tjt|	d�� tj||d||d� W 5 Q R X d S )Nr   r   r   r    r!   r"   r#   r$   r%   rÞ  rp   )rr   rÂ  rÙ   r´  rv   rt   rµ  r°  )rU   rV   rP   rÆ  r
   rì   r   ry   )
rY   rÂ  rÙ   rl  rm  r¶  r·  r¸  r¹  rí   r_   r_   r`   r<    s<     ÿ

 ÿ
ÿ

 ÿ
 ÿz)TestKendallTauAlternative.test_nan_policyN),rƒ   r„   r…   rÝ  ZalternativesrU   rV   Zp_n1Zp_n2Zp_c0Zp_c1Zp_no_correlationZp_no_correlationbZ
p_n_lt_171Zp_n_lt_171bZp_n_lt_171crâ  r›  r  ÚreversedZ	case_R_n1rì   rð   rñ   rä  Z	case_R_n2ræ  Z	case_R_c0rè  Z	case_R_c1ré  Zcase_R_no_corrrê  Zcase_no_cor_brë  Zcase_R_lt_171rï  Zcase_R_lt_171brñ  Zcase_R_lt_171cró  Zcase_gt_171rö  r<  r_   r_   r_   r`   rÛ  [  s’   4







ÿ
ÿ
ÿ
ÿ
ÿÿ
ÿÿ
ÿ
ÿÿ
ÿÿ
ÿ
rÛ  c                  C   sX  dddddg} dddddg}t  | |¡\}}t|dƒ ttj|ƒ t j| |dd	�\}}t|d
ƒ ttj|ƒ t j| |dd„ d�\}}t|dƒ ttj|ƒ t  | |¡}d}t||ƒ t|j|jƒ t j| |d d�\}}t|dƒ ttj|ƒ t j|| d d�\}}t|dƒ ttj|ƒ t j| |d dd�\}}t|dƒ ttj|ƒ t j|| d dd�\}}t|dƒ ttj|ƒ t j| |dd�\}}t|dƒ ttj|ƒ t j| |ddd„ d�\}}t|dƒ ttj|ƒ t j|| ddd„ d�\}}t|dƒ ttj|ƒ t  tj	| tj
d�|¡\}}t|dƒ t  tj	| tjd�|¡\}}t|dƒ t  tj	| tj
d�tj	|tj
d�¡\}}t|dƒ t  g g ¡\}}ttj|ƒ ttj|ƒ t  dgdg¡\}}ttj|ƒ ttj|ƒ ttt jddgdddgƒ ttt jddgddgdgƒ dddddg} ddddtjg}t  | |¡\}}t|dƒ ddtjddg} t  | |¡\}}t|dƒ dddddg} ddd dtjg}t  | |¡\}}t|dƒ ddtjddg} t  | |¡\}}t|dƒ dddddg} ddd ddg}t  | |¡\}}t|d!ƒ ddtjdtjg} t  | |¡\}}t|d!ƒ tjdd tjtjg}t  | |¡\}}t|d!ƒ d S )"NrG   r   r   r    r#   r   g‰´•¨s$â¿F)ÚadditivegROêoäçã¿c                 S   s   dS ©Nr   r_   ©rz   r_   r_   r`   Ú<lambda>;  ó    z"test_weightedtau.<locals>.<lambda>)ÚweigherrÄ  r©   )Úrankg�‡Äå›Ú¿gÒççnôúæ¿)rþ  rø  g‡ œ@Ú¿g[Ä‘(Îê¿gIŸÚ©nƒà¿Tc                 S   s   dS rù  r_   rú  r_   r_   r`   rû  V  rü  )rþ  rý  c                 S   s   dS rù  r_   rú  r_   r_   r`   rû  Y  rü  r;   ç      (@r*  rŠ   r)  r­  g„t3ß4+å¿)rP   Úweightedtaur	   r   rU   rV   r   rª   r¬   r  r   Úint16rx   ry   )rz   rZ   rË  rÌ  r®   r¯   r_   r_   r`   Útest_weightedtau1  s”    












(






r  c                   C   s6   t  dgdg¡ t  dgdg¡ t  tjgdg¡ d S )Nr   rŠ   é4   )rP   r   rU   rV   r_   r_   r_   r`   Útest_segfault_issue_9710Š  s    r  c                  C   sZ   d} t  | d ¡ t¡}t  | d ¡ t¡}t j|d< tj||ddd�\}}t|dƒ d S )Né¬   r   rK   rÀ  rp   )rÂ  rr   rs   )rU   r   r‚  rt  rV   rP   rÆ  r   )rR  rz   rZ   Ú_rÝ   r_   r_   r`   Útest_kendall_tau_large”  s    
r  c               
   C   sÖ   dd„ } dd„ }t j d¡ tddƒD ]ª}g }t|ƒD ]}||g| 7 }q6t|ƒ}t j |¡ t j |¡ t jt|ƒt jd�}td	ƒD ]H}d
D ]2}| |||||ƒ}	t	 
|||||¡j}
t|	|
ƒ qŽt j |¡ q†q&d S )Nc                 S   s`  d } } } }}	t tt| ƒƒtt| ƒƒƒD �]
\}
}|rT|||
 ƒ||| ƒ n|||
 ƒ||| ƒ }||7 }| |
 | | krŒ||7 }||
 || kr¤|	|7 }	| |
 | | k rÄ||
 || k sä| |
 | | krî||
 || krî||7 }q.| |
 | | k �r||
 || k�s2| |
 | | kr.||
 || k r.||7 }q.|| t || ¡ t ||	 ¡ S ©Nr   )r   rM  ÚlenrU   r€   )rz   rZ   rþ  rý  ÚaddZtotZconcZdiscÚuÚvrI  rJ  Úwr_   r_   r`   Úwkq   s    $ÿ@
D
z*test_weightedtau_vs_quadratic.<locals>.wkqc                 S   s   d| d  S )NrŠ   r   r_   rú  r_   r_   r`   rý  °  s    z.test_weightedtau_vs_quadratic.<locals>.weigherrÎ  r   rE   r;   r   rI   )rU   r2  r3  rM  r›  rÏ  r   r	  ZintprP   r   r¬   r	   )r  rý  rÑ  r¸   rI  r¾   rþ  r  r
  r…  rv  r_   r_   r`   Útest_weightedtau_vs_quadraticž  s"    r  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestFindRepeatsc                 C   sP   dddddddddddg}t  |¡\}}t|ddddgƒ t|ddddgƒ d S ræ   ©rP   Zfind_repeatsr   )rY   r¸   r®   Únumsr_   r_   r`   r¿   É  s    zTestFindRepeats.test_basicc                 C   s>   dddddgg fD ]&}t  |¡\}}t|g ƒ t|g ƒ qd S )NrE   rú   é2   é   é(   r  )rY   r¸   ZrepeatedÚcountsr_   r_   r`   Útest_empty_resultÏ  s    
z!TestFindRepeats.test_empty_resultN)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	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'S )(ÚTestRegressionc                 C   s@   t  tt¡}t|jdƒ t|jdƒ t|jdƒ t|jdƒ d S )NiöàõrŠ   rs   )	rP   Ú
linregressrQ   r�   r   Ú	interceptÚrvalueÚstderrÚintercept_stderr©rY   rß   r_   r_   r`   Útest_linregressBIGXÙ  s
    z"TestRegression.test_linregressBIGXc                 C   s@   t  tt¡}t|jdƒ t|jdƒ t|jdƒ t|jdƒ d S )Nrs   rŠ   )rP   r  rQ   r   r  r  r  r  r  r_   r_   r`   Útest_regressXXã  s
    zTestRegression.test_regressXXc                 C   s(   t  tt¡}t|jdƒ t|jdƒ d S )Nrs   )rP   r  rQ   ÚZEROr   r  r  r  r_   r_   r`   Útest_regressZEROXø  s    z TestRegression.test_regressZEROXc                 C   sn   t  ddd¡}dt  ddd¡ d }|t  t  ddd¡¡7 }t ||¡}tjj}tt||ƒƒ t	|j
dƒ d S )Nr   r÷   çš™™™™™É?rE   rú   ç©·4_Q c?)rU   ÚlinspaceÚsinrP   r  Ú_stats_mstats_commonÚLinregressResultr   Ú
isinstancer   r  )rY   rz   rZ   rß   Úlrr_   r_   r`   Útest_regress_simple  s    z"TestRegression.test_regress_simplec              	   C   sâ   t  ddd¡}dt  ddd¡ d }|t  t  ddd¡¡7 }tjtdd�� tj||dd	� W 5 Q R X tj||d
d	�}tj||dd	�}t|j	d|j	d  ƒ tj||dd	�}t|j	|j	d ƒ |j
|j
  krØ|j
ksÞn t‚d S )Nr   r÷   r#  rE   rú   r¯  rv   r°  rØ   rÒ   rÔ   r   r   rÖ   )rU   r%  r&  rì   r   ry   rP   r  r
   r«   r  r6  )rY   rz   rZ   rn  ro  r„  r_   r_   r`   Útest_regress_alternative  s    z'TestRegression.test_regress_alternativec              
   C   s’   ddddddddd	d
g
}ddddddddddg
}t j||dd�}t|jdƒ t|jdƒ t|jt d¡ƒ t|jdƒ t|j	dƒ t|j
dƒ d S )Né—   é®   éŠ   éº   é€   éˆ   é³   é£   é˜   éƒ   r:   éQ   é8   é[   é/   é9   r  éH   é>   r  rÒ   rØ   gØ—§h–å?gŸJK@:CÀgag€“�î?gé¸-‰³>g5Õ’O“ª?g]ØŠE @)rP   r  r
   Úsloper  r  rU   r€   r«   r  r  ©rY   rz   rZ   r®   r_   r_   r`   Útest_regress_against_R!  s    z%TestRegression.test_regress_against_Rc                 C   sp   t  ddd¡}dt  ddd¡ d }|t  t  ddd¡¡7 }t  ||f¡}t |¡}t|jdƒ t|jdƒ d S )Nr   r÷   r#  rE   rú   r$  ç8Äèê¿Á?)	rU   r%  r&  ÚvstackrP   r  r   r  r  )rY   rz   rZ   Úrowsrß   r_   r_   r`   Útest_regress_simple_onearg_rows4  s    
z.TestRegression.test_regress_simple_onearg_rowsc                 C   s€   t  ddd¡}dt  ddd¡ d }|t  t  ddd¡¡7 }t  t  |d¡t  |d¡f¡}t |¡}t|jdƒ t|j	dƒ d S )	Nr   r÷   r#  rE   rú   r   r$  rA  )
rU   r%  r&  ÚhstackÚexpand_dimsrP   r  r   r  r  )rY   rz   rZ   Úcolumnsrß   r_   r_   r`   Útest_regress_simple_onearg_cols@  s    
z.TestRegression.test_regress_simple_onearg_colsc                 C   s   t ttjt d¡ƒ d S )Nrr  )rx   ry   rP   r  rU   Úonesr  r_   r_   r`   Útest_regress_shape_errorJ  s    z'TestRegression.test_regress_shape_errorc                 C   sž   t  d¡}t  dd¡}|ddg  d8  < |ddg  d7  < t ||¡}dd	„ }||jd
ƒ ||jdƒ ||jdƒ ||jdƒ ||jdƒ ||j	dƒ d S )NrF   r!   rû   r   éþÿÿÿr   rK   c                 S   s   t | |dd�S )NrC   r?   )r   ©rz   rZ   r_   r_   r`   rû  \  rü  z0TestRegression.test_linregress.<locals>.<lambda>rŠ   r3   gePUÿnï?g.«¶bt>g¢©•Ú½E°?gÊºL7Ø?)
rU   r   rP   r  r>  r  r  r«   r  r  )rY   rz   rZ   rß   Z	assert_aer_   r_   r`   Útest_linregressO  s    
zTestRegression.test_linregressc                 C   sz   d\}}t  |d| |¡}t  d| ||¡}t ||¡}t|jdkƒ t|jdƒ tt  |j¡ ƒ tt  |j	¡ ƒ d S )N)gJ‘rä «11é † r   rK   )
rU   r%  rP   r  r   r  r   r,  r  r  )rY   r¸   rR  rz   rZ   rß   r_   r_   r`   Ú test_regress_simple_negative_cord  s    z/TestRegression.test_regress_simple_negative_corc                 C   s€   t  ddd¡}dt  ddd¡ d }|t  t  ddd¡¡7 }t ||¡}tjj}tt||ƒƒ d}t	||ƒ dt
|ƒks|t‚d S )Nr   r÷   r#  rE   rú   )r>  r  r  r«   r  r  )rU   r%  r&  rP   r  r'  r(  r   r)  r   Údirr6  )rY   rz   rZ   rß   r*  r¯   r_   r_   r`   Ú!test_linregress_result_attributesv  s    
z0TestRegression.test_linregress_result_attributesc                 C   sJ   t  d¡}t  dd¡}t ||¡}t|jdƒ t|jdƒ t|jdƒ d S )Nr   r   r!   rs   )rU   r   rP   r  r   r«   r  r  ©rY   rz   rZ   rß   r_   r_   r`   Útest_regress_two_inputs†  s    
z&TestRegression.test_regress_two_inputsc                 C   sH   t  d¡}t  d¡}t ||¡}t|jdƒ t|jdƒ t|jdƒ d S )Nr   rŠ   rs   )	rU   r   rI  rP   r  r   r«   r  r  rR  r_   r_   r`   Ú'test_regress_two_inputs_horizontal_line“  s    

z6TestRegression.test_regress_two_inputs_horizontal_linec              $   C   sô   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#g$}d$d%d&d'd(dd)d*d+d,d-dd$d.d/d0d"d1d2d3d4d5d6ddd7d0d'd*d,d8d9d:d;d<dg$}t  ||¡}t|jd=ƒ t|jd>ƒ t|jd? d@ƒ t|jdAƒ t|jdBƒ t|jdCƒ d S )DNr#  gfffffu@gÍÌÌÌÌŒ]@gÍÌÌÌÌ¤‹@ç333333$@g     Pl@gfffffÒ„@gfffff"�@gš™™™™	|@g     Hˆ@gš™™™™q�@çš™™™™™Ù?ç333333ã?g     <ˆ@g33333×„@g      u@g     ø{@g333333'@g     `�@g33333ƒl@gfffff�@gÍÌÌÌÌ¼‹@gÍÌÌÌÌ^@r!  gffffff�@gš™™™™1u@gš™™™™¹‹@g     8�@g     Xˆ@g333333&@g33333“]@gfffff¦l@gÍÌÌÌÌè„@gfffff|@r'   r  gÍÌÌÌÌ,u@gfffff†]@g     À‹@rz  g     ä„@g     4�@gš™™™™|@g33333Wˆ@gš™™™™y�@gÍÌÌÌÌPˆ@gfffffæ„@gÍÌÌÌÌ4u@gš™™™™™%@gš™™™™m�@gš™™™™‰l@g     0�@gfffffÆ‹@gfffffæ]@gÍÌÌÌÌl�@gffffff$@gffffff]@gÍÌÌÌÌœl@g33333ã„@g33333|@gîµ¥«ð?g!¶·æÉÐ¿r   gpÍXâòÿï?rs   gŠh-hË*<?g›gçüÌÍ?)	rP   r  r   r>  r  r  r«   r  r  rR  r_   r_   r`   Útest_nist_norris   s~                           ý                       ýzTestRegression.test_nist_norrisc                 C   sz   t  ddd¡}dt  ddd¡ d }|t  t  ddd¡¡7 }t ||¡}t  ||d¡}t|j|d ƒ t|j|d ƒ d S )Nr   r÷   r#  rE   rú   r   )	rU   r%  r&  rP   r  Zpolyfitr   r>  r  )rY   rz   rZ   rß   Zpolyr_   r_   r`   Útest_compare_to_polyfit´  s    z&TestRegression.test_compare_to_polyfitc                 C   s   t ttjg g ƒ d S rF  )rx   ry   rP   r  r  r_   r_   r`   Útest_empty_inputÀ  s    zTestRegression.test_empty_inputc              	   C   sr   t  d¡}t j|d< t jdd�� t ||¡}W 5 Q R X tjj}tt	||ƒƒ t
|t jfd ƒ t|jt jƒ d S )Nrn   r%   Úignore©Úinvalidr!   )rU   r   rV   ÚerrstaterP   r  r'  r(  r   r)  r   r   r  )rY   rz   rß   r*  r_   r_   r`   Útest_nan_inputÃ  s    

zTestRegression.test_nan_inputc              	   C   sB   t  d¡}t j d¡}d}tt|d�� t ||¡ W 5 Q R X d S )NrE   z$Cannot calculate a linear regressionrv   )rU   rs  r2  rx   ry   rP   r  )rY   rz   rZ   r{   r_   r_   r`   Útest_identical_xÐ  s
    
zTestRegression.test_identical_xN)rƒ   r„   r…   r  r   r"  r+  r,  r@  rD  rH  rJ  rM  rO  rQ  rS  rT  rX  rY  rZ  r_  r`  r_   r_   r_   r`   r  ×  s&   
	
r  c               	   C   sJ  t  dddg¡\} }}}t| dƒ t|dƒ d}tjt|d�� t jdddgdd� W 5 Q R X t jdddgdd�\} }}}t| dƒ t|d	ƒ dd
dddddg}dddddddg}t j||ddd�\} }}}t| dƒ t|dƒ t|dd
d� t|dd
d� t j||ddd�\} }}}t| dƒ t|dƒ t|dd
d� t|dd
d� d S )Nr   r   r'   zHmethod must be either 'joint' or 'separate'.'joint_separate' is invalid.rv   Zjoint_separaterÁ  Zjointrs   r   r   r    rE   rG   é   r%   rù   é   rú   é-   é7   éN   gìQ¸…ë±?Zseparater)  g…ëQ¸…@r?   g®Gáz®@ry  )rP   Ztheilslopesr   rì   r   ry   )r>  r  ÚlowerÚupperr{   rz   rZ   r_   r_   r`   Útest_theilslopesØ  s6    

ÿ


ÿ


ÿ

rh  c                  C   s„   ddddddg} t j| dd�\}}}}t|t dddd	g¡ƒ t j| dd
d�\}}}}t|dkƒ d}t j| dd
d�}t||ƒ d S )Nr   r    r   r   ©Únumbinsr±   r)  r3   ry  )r(   r!   )rj  Zdefaultreallimits)Zcumcountrl   ÚbinsizeÚextrapoints)rP   Zcumfreqr   rU   r   r   r   )rz   ZcumfreqsÚlowlimrk  rl  r¯   r®   r_   r_   r`   Útest_cumfreqú  s    ÿrn  c                  C   sŽ   t  ddddddg¡} tj| dd�\}}}}t|tddddgƒƒ d}tj| dd�}t||ƒ tjddddddgdd�\}}}}t||ƒ d S )	Nr   r    r   r   ri  r'   gKÚ}\UUÅ?)Z	frequencyrl   rk  rl  )rU   r   rP   Zrelfreqr   r   )r¸   Zrelfreqsrm  rk  rl  r¯   r®   Z	relfreqs2r_   r_   r`   Útest_relfreq  s    ÿ
ÿro  c                   @   sL   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S )ÚTestScoreatpercentilec                 C   sD   dddddddg| _ ddd	d
ddddg| _ddddddddg| _d S )Nr   r    r!   rE   rL   éûÿÿÿr"   iúÿÿÿrK  r$   r#   r   r   r±   r­  )Úa1Úa2Úa3r  r_   r_   r`   Úsetup_method  s    z"TestScoreatpercentile.setup_methodc                 C   sF   t dƒd }tt |d¡dƒ tt |d¡dƒ tt |d¡dƒ d S )	Nr$   r'   r   rs   r÷   r*   r  ç      ü?)r   r   rP   Úscoreatpercentiler:  r_   r_   r`   r¿     s    z TestScoreatpercentile.test_basicc                 C   s0  t j}t|ttdƒƒdƒdƒ t|ttdƒƒddƒdƒ t|ttdƒƒddd�dƒ t|t dddg¡dd	ƒd
ƒ t|t dddg¡ddƒdƒ t|ttdƒƒddd�dƒ t|ttdƒƒdddd�dƒ t|ttdƒƒdddd�dƒ t|t dddg¡dd	dd�d
ƒ t|t dddg¡dddd�dƒ d S )NrE   r  r+   ©r   r#   r÷   ©r   r$   )Úlimitr   ©rE   r÷   rd  ©r   rE   r,   Úfraction©Úinterpolation_method©rz  r  ©rP   rw  r   r›  rM  rU   r   ©rY   Úscoreatpercr_   r_   r`   Útest_fraction%  s:    ÿÿþÿþÿþÿþz#TestScoreatpercentile.test_fractionc                 C   sB  t j}t|ttdƒƒddd�dƒ t|ttdƒƒddd�dƒ t|ttdƒƒdddd�dƒ t|ttdƒƒdddd	�dƒ t|ttd
ƒƒdddd�dƒ t|ttd
ƒƒdddd�dƒ t|t ddd
g¡dddd�dƒ t|t ddd
g¡dddd	�d
ƒ t|t ddd
g¡dddd�dƒ t|t ddd
g¡dddd	�dƒ d S )NrE   r  rf  r~  r    Úhigherr!   rx  r€  r÷   ry  r   r{  r|  r�  r‚  r_   r_   r`   Útest_lower_higher?  sf    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿz'TestScoreatpercentile.test_lower_higherc              	   C   sÆ   t dƒd }t dddg¡}t |dddg¡}t||ƒ tt|tjƒƒ tt |t dddg¡¡|ƒ tjt  d¡ 	d	¡t dd
ddg¡d
d�}tdddgdddgdddgdddggƒ}t||ƒ d S )Nr$   r'   r   r*   rv  r÷   r  rG   ©r   r    r   r=   r    ç¸…ëQ¸ž?g…ëQ¸@g�Âõ(\ @r   r#   rF   )
r   rU   r   rP   rw  r
   r   r)  ZndarrayrS   )rY   rz   r…  r®   ro  Z	expected2r_   r_   r`   Útest_sequence_perX  s$    
ÿ ÿ
ýz'TestScoreatpercentile.test_sequence_perc                 C   s  t j}tdƒ dd¡}t||dƒdddgƒ dddd	gdd	d
dgddddgg}t||ddd�|ƒ dddgdddgdddgg}t||ddd�|ƒ tdddgdddgdddgdddgdddggƒ}t  |d¡}t|jdƒ t|dƒ t j|ddd�}t|jdƒ t|dddgƒ d S )NrG   r   r    )rü   r  r÷   g      @r,   ç      &@r   r!   r"   r#   r$   r%   rE   rF   r   r=   ç      è?g      @g     €!@r(   ç      #@r   r  r_   rŠ   ©r   )rP   rw  r   rS   r   r   r5  )rY   rƒ  rz   Zr0rÕ  Úscorer_   r_   r`   Ú	test_axisj  s&    "
ü
zTestScoreatpercentile.test_axisc                 C   s@   t ttjddgddd� t ttjdgdƒ t ttjdgdƒ d S )Nr   r   r8  ru   r~  ée   rK   )rx   ry   rP   rw  r  r_   r_   r`   Útest_exception‚  s
    ÿz$TestScoreatpercentile.test_exceptionc                 C   sT   t t g d¡tjƒ t t t g g g¡d¡tjƒ t t g ddg¡tjtjgƒ d S )Nr  éc   )r   rP   rw  rU   rV   r   r  r_   r_   r`   Ú
test_emptyˆ  s    z TestScoreatpercentile.test_emptyN)rƒ   r„   r…   ru  r¿   r„  r†  r‰  r�  r‘  r“  r_   r_   r_   r`   rp    s   rp  zignore::FutureWarningc                
   @   s  e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zej	 
d
e dd¡¡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gdejddddgdddgdejddgg¡dd„ ƒZdd „ Zej	 
d
e d!d¡¡ej	 
d"ejd#g¡d$d%„ ƒƒZd&d'„ Zd(d)„ Zd*d+„ Zd,S )-ÚTestModez2Support for non-numeric arrays has been deprecatedc                 C   s2   t  g ¡\}}t|t g ¡ƒ t|t g ¡ƒ d S rF  ©rP   Úmoder   rU   r   ©rY   Úvalsr  r_   r_   r`   r“  “  s    zTestMode.test_emptyc                 C   s6   t  d¡\}}t|t dg¡ƒ t|t dg¡ƒ d S )Nr)  r   r•  r—  r_   r_   r`   r.  ˜  s    zTestMode.test_scalarc                 C   sN   ddddddddddddg}t  |¡}t|d	 d	 dƒ t|d d	 dƒ d S )
Nr   r!   r   rE   é   r   r"   r$   r   ©rP   r–  r   ©rY   Údata1r˜  r_   r_   r`   r¿   �  s    
zTestMode.test_basicc              	   C   s6  ddddg}ddddg}ddddg}ddddg}ddddg}t  |||||g¡}tj|d d�}t|d t  dg¡ƒ t|d t  dg¡ƒ tj|dd�}t|d t  ddddgg¡ƒ t|d t  d	d
d
d	gg¡ƒ tj|dd�}t|d t  dgdgdgdgdgg¡ƒ t|d t  d	gdgd
gdgd
gg¡ƒ d S )NrE   r  r  rú   r=   r   r   r$   r   r   r    )rU   r   rP   r–  r   )rY   rœ  Údata2Zdata3Zdata4Zdata5Úarrr˜  r_   r_   r`   Ú	test_axes£  s    (zTestMode.test_axesr>   rã   r   c                 C   sR   t j d¡ t j dddd¡}tj||j| d�}tj||d�}t j ||¡ d S )Né‹é©:rE   rF   rG   rH   r=   )	rU   r2  r3  r>  rP   r–  Úndimr  r   )rY   r>   r¸   rõ  rn  r_   r_   r`   Útest_negative_axes_gh_15375·  s
    z$TestMode.test_negative_axes_gh_15375c              	   C   sX   dddg}t jt| jd�� t |¡}W 5 Q R X t|d d dƒ t|d d dƒ d S )NZrainZshowersrv   r   r   r   )rì   rØ  rÙ  Údeprecation_msgrP   r–  r   r›  r_   r_   r`   Útest_strings¿  s
    
zTestMode.test_stringsc              	   C   sx   ddt jddg}t jdtd�}||d d …< tjt| jd�� t 	|¡}W 5 Q R X t
|d d dƒ t
|d d d	ƒ d S )
NrE   TÚhello©r!   r;   rv   r   r   r   )rU   rV   ÚemptyÚobjectrì   rØ  rÙ  r£  rP   r–  r   )rY   Úobjectsrž  r˜  r_   r_   r`   Útest_mixed_objectsÆ  s    zTestMode.test_mixed_objectsc              	      s²   G dd„ dƒ‰ ‡ fdd„dD ƒ}t jdtd�}||d d …< ttt|ƒƒdkƒ tt  |¡jd	ƒ t	j
t| jd
�� t |¡}W 5 Q R X t|d d ˆ dƒƒ t|d d dƒ d S )Nc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )z$TestMode.test_objects.<locals>.Pointc                 S   s
   || _ d S rF  rú  r:  r_   r_   r`   Ú__init__Ó  s    z-TestMode.test_objects.<locals>.Point.__init__c                 S   s   | j |j kS rF  rú  ©rY   Úotherr_   r_   r`   Ú__eq__Ö  s    z+TestMode.test_objects.<locals>.Point.__eq__c                 S   s   | j |j kS rF  rú  r¬  r_   r_   r`   Ú__ne__Ù  s    z+TestMode.test_objects.<locals>.Point.__ne__c                 S   s   | j |j k S rF  rú  r¬  r_   r_   r`   Ú__lt__Ü  s    z+TestMode.test_objects.<locals>.Point.__lt__c                 S   s
   t | jƒS rF  )Úhashrz   r  r_   r_   r`   Ú__hash__ß  s    z-TestMode.test_objects.<locals>.Point.__hash__N)rƒ   r„   r…   r«  r®  r¯  r°  r²  r_   r_   r_   r`   ÚPointÒ  s
   r³  c                    s   g | ]}ˆ |ƒ‘qS r_   r_   )rH  rz   ©r³  r_   r`   rK  â  s     z)TestMode.test_objects.<locals>.<listcomp>)r   r   r   r    r   r   r   r   )r$   r;   r    )r    rv   r   r   r   )rU   r§  r¨  r   r	  Úsetr   Úuniquer5  rì   rØ  rÙ  r£  rP   r–  )rY   Zpointsrž  r˜  r_   r´  r`   Útest_objectsÏ  s    zTestMode.test_objectsc                 C   sP   ddddddddddddg}g }t  |¡}d	}t||ƒ t  |¡}t||ƒ d S )
Nr   r!   r   rE   r™  r   r"   r$   )r–  Úcount)rP   r–  r   )rY   rœ  r�  rv  r¯   Zactual2r_   r_   r`   Útest_mode_result_attributesí  s    


z$TestMode.test_mode_result_attributesc                 C   st   dt jdddddddddddg}t |¡}t|d	ƒ tj|d
d�}t|d	ƒ tttj|dd� tttj|dd� d S )Nr   r!   r   rE   r™  r   r"   r$   )r"   r   rp   rq   rt   ru   )rU   rV   rP   r–  r   rx   ry   )rY   rœ  rv  r_   r_   r`   Útest_mode_nanö  s     


zTestMode.test_mode_nanÚdatar   r!   r   c                 C   s$   t j|dd�}t|d d dƒ d S )Nrp   rq   r   r   rš  )rY   r»  rß   r_   r_   r`   Útest_smallest_equal 	  s    zTestMode.test_smallest_equalc              	   C   s  dgdgdgdgg}t j|td�}tjt| jd�� tj|dd�}W 5 Q R X t  	|jdk¡rh|jj
dkslt‚t  	|jd	k¡rˆ|jj
dksŒt‚|t jgg }t j|td�}tjt| jd�� tj|dd�}W 5 Q R X t  	|jdk¡rî|jj
dksòt‚t  	|jd	k¡�r|jj
dk�st‚d S )
NZ	OxidationZPolymerizationZ	Reductionr;   rv   r   r=   ©r   r   r   )rU   r   r¨  rì   rØ  rÙ  r£  rP   r–  r-  r5  r6  r¸  rV   )rY   r»  ÚarrP  rœ  Zar1r_   r_   r`   Útest_obj_arrays_ndim
	  s       zTestMode.test_obj_arrays_ndimrL   r<   r¨  c              	   C   s    t j d¡}|jdd� |¡}|dkrTtjt| jd�� t	j
||dd�}W 5 Q R X nt	j
||dd�}t|jƒ}| |¡ t j |j
j|¡ t j |jj|¡ d S )Nr   )r   r    r!   ©r�   r¨  rv   F©r>   Úkeepdims)rU   r2  Údefault_rngÚuniformr‚  rì   rØ  rÙ  r£  rP   r–  r›  r5  Úpopr  r   r¸  )rY   r>   r<   Úrngr¸   r®   Zreference_shaper_   r_   r`   Útest_mode_shape_gh_9955	  s    

z TestMode.test_mode_shape_gh_9955c              	   C   sò   dt jdt jg}tt jƒdkrJt |¡}t  |jd ¡rF|jd dksJt‚t j	|dd�}t
jt| jd�� t |¡}W 5 Q R X t  |jd ¡rœ|jd dks t‚t j	dd	d
dgdd�}t
jt| jd�� t |¡}W 5 Q R X t|dgdggƒ d S )Nr   r   z1.21.0r   r¨  r;   rv   rE   Tr¥  )rU   rV   r   Ú__version__rP   r–  r,  r¸  r6  r   rì   rØ  rÙ  r£  r   )rY   r¸   r®   r_   r_   r`   Ú!test_nan_policy_propagate_gh_9815)	  s    
""z*TestMode.test_nan_policy_propagate_gh_9815c                 C   s
  t  d¡}tj|ddd�}|jj|jj  kr6dks<n t‚tj|ddd�}|jj|jj  krhdksnn t‚dddt jgddt jdgg}tj|ddd�}t|jddgƒ t|jd	dgƒ tj|ddd�}t|jdgdggƒ t|jd	gdggƒ t  	|¡}tj|d dd�}tj| 
¡ dd
�}t||ƒ |jj|jj  k�rHdk�sNn t‚tj|d dd�}tj| 
¡ dd
�}t||ƒ |jj|jj  k�ršdk�s n t‚dt jt jt jdgt jt jt jt jd	gdd	t jddgg}tj|dddd�}t|jdd	dgƒ t|jd	dd	gƒ tj|dddd�}t|jdgd	gdggƒ t|jd	gdgd	ggƒ t  	|¡}tj|d ddd�}tj| 
¡ ddd�}t||ƒ |jj|jj  k�rªdk�s°n t‚tj|d ddd�}tj| 
¡ ddd�}t||ƒ |jj|jj  k�r dk�sn t‚d S )N)r   r   r   r   r   FrÁ  )r   r   r   T)r   r   r   r   r   r   ©rÂ  r_   ©r   r!   rp   )r>   rÂ  rr   )rÂ  rr   )rU   rs  rP   r–  r5  r¸  r6  rV   r   r   Úravel)rY   r¸   r®   Úrefr_   r_   r`   Útest_keepdims=	  sP    
""

&
&þ

&
zTestMode.test_keepdimsc                 C   sV   d}t  |¡}t j|d< tj|dddd�}t|jddddgƒ t|jddddgƒ d S )	N)r    r   ©r   r   r   Frp   )r¸   r>   rÂ  rr   r   r   )rU   rI  rV   rP   r–  r   r¸  )rY   r5  r»  r®   r_   r_   r`   Útest_gh16952u	  s    

zTestMode.test_gh16952N)rƒ   r„   r…   r£  r“  r.  r¿   rŸ  rì   rð   rñ   rU   r   r¢  r¤  rª  r·  r¹  rº  rV   r¼  r¿  r   rÇ  rÉ  rÎ  rÐ  r_   r_   r_   r`   r”  Ž  s4   
		
ü
8r”  c               	   C   sˆ   dddddg} d}t jt|d�� t | ¡}W 5 Q R X t|dgdgfƒ tj| dd�}t|dgdgfƒ tj| d	d�}t|ddgƒ d S )
Nr   r   r!   r   z#Unlike other reduction functions...rv   TrÊ  F)rì   rØ  ÚFutureWarningrP   r–  r   )r¸   Z
future_msgr®   r_   r_   r`   Útest_mode_futurewarning	  s    rÒ  c                   @   s$   e Zd ZddddgZdZdd„ ZdS )	ÚTestSEMr   r   r   r    r)  c              
   C   s  t ƒ �6}tjdd�� | td¡ t | j¡}W 5 Q R X W 5 Q R X tt 	|¡ƒ t | j
¡}t|dƒ t| j
ƒ}ttj| j
dd�t ||d  ¡ tj| j
dd�ƒ t d¡}tj|d	< tt |¡tjƒ ttj|d
d�dƒ tttj|dd� tttj|dd� d S )Nr[  r\  ú!Degrees of freedom <= 0 for slicegã�ŽËé§ä?r   rb   r   rn   r%   rp   rq   g¿ÜH=6í?rt   ru   )r   rU   r^  ÚfilterrX   rP   ZsemÚscalar_testcaser   r,  Útestcaser	   r	  r
   r€   r   rV   r   rx   ry   )rY   r^   rZ   rR  rz   r_   r_   r`   Útest_sem”	  s      

"ÿ

zTestSEM.test_semN)rƒ   r„   r…   r×  rÖ  rØ  r_   r_   r_   r`   rÓ  �	  s   rÓ  c                
   @   s0  e Zd Zej dddddgddddgfdddgdddddgfg¡dd„ ƒZd	d
„ Zdd„ Zej dddg¡dd„ ƒZ	ej 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dd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zej d,e g ¡e d-¡g¡d.d/„ ƒZd0d1„ Zd2d3„ Zd4S )5ÚTestZmapZscorezx, yr   r   r   r    r   c                 C   s6   t  ||¡}|t |¡ t |¡ }t||dd� d S )Nr&   rÚ   )rP   ÚzmaprU   rT   ri   r
   )rY   rz   rZ   Úzr…  r_   r_   r`   Ú	test_zmap¯	  s    zTestZmapZscore.test_zmapc           	      C   sò   t  ddddgddddgddddgg¡}dt  d¡ }t  d¡d }t  d¡}tj||dd�}tj||d	d�}| | d
 | d
 dgd|| d
 |g|| d
 || gg}ddddg| | | t  d¡gddddgg}t||ƒ t||ƒ d S ©Nrs   rŠ   r*  r"  r±   r   r   r=   r   r   r»   )rU   r   r€   rP   rÚ  r   ©	rY   rz   Út1Út2Út3Úz0r¥  Úz0_expectedÚz1_expectedr_   r_   r`   Útest_zmap_axis»	  s&    

þ
þ

þ
zTestZmapZscore.test_zmap_axisc                 C   sŒ   t  ddddgddddgg¡}tj||ddd�}t  ddddg¡dt  d	¡  }t  d
dddg¡t  d¡ }t|d |ƒ t|d |ƒ d S ©Nrs   rŠ   r*  r±   r   ©r>   rc   ç      à¿r'   r   ç      ø¿r(   g«ªªªªªú?r   )rU   r   rP   rÚ  r€   r   ©rY   rz   rÛ  rã  rä  r_   r_   r`   Útest_zmap_ddofÒ	  s    
ÿ zTestZmapZscore.test_zmap_ddofrc   c                 C   sd   t  dddt jg¡}t  dddddt jg¡}tj|||dd�}t|tj||t  |¡  |d	�ƒ d S )
NrL   rK   r   éøÿÿÿr#   rG   rp   ©rc   rr   rb   )rU   r   rV   rP   rÚ  r
   r,  )rY   rc   ÚscoresÚcomparerÛ  r_   r_   r`   Útest_zmap_nan_policy_omitÞ	  s    ÿz(TestZmapZscore.test_zmap_nan_policy_omitc              
   C   sÄ   t  dd¡ dd¡}t  ddd¡ dd¡}t j|d< t j|d	< t j|d
< tj||dd|d�}t  tj|d |d t  |d ¡  |d�tj|d |d t  |d ¡  |d�g¡}t	||dd� d S )Nç      Àr~   r   rK   rì  r"   é   )r   r    rd   r½  rp   r   )rr   r>   rc   r   rb   r=  rÚ   )
rU   r   rS   r%  rV   rP   rÚ  r   r,  r
   )rY   rc   rî  rï  rÛ  r…  r_   r_   r`   Ú#test_zmap_nan_policy_omit_with_axisè	  s     


þ
þýz2TestZmapZscore.test_zmap_nan_policy_omit_with_axisc              	   C   sV   t  dddg¡}t  dddddt jg¡}tjtdd	�� tj||d
d� W 5 Q R X d S )Nr   r   r   rì  rL   r#   rG   zinput contains nanrv   rt   rq   )rU   r   rV   rì   r   ry   rP   rÚ  )rY   rî  rï  r_   r_   r`   Útest_zmap_nan_policy_raiseø	  s    z)TestZmapZscore.test_zmap_nan_policy_raisec                 C   s0   t  ddddg¡}ddddg}t||d	d
� d S )Nr   r   r   r    gÙòOT\wõ¿gþí¿Å%ŸÜ¿gþí¿Å%ŸÜ?gÙòOT\wõ?rG   r?   )rP   Úzscorer   )rY   rZ   Údesiredr_   r_   r`   Útest_zscoreþ	  s
    ÿzTestZmapZscore.test_zscorec           	      C   sî   t  ddddgddddgddddgg¡}dt  d¡ }t  d¡d }t  d¡}tj|dd�}tj|d	d�}| | d
 | d
 dgd|| d
 |g|| d
 || gg}ddddg| | | t  d¡gddddgg}t||ƒ t||ƒ d S rÝ  )rU   r   r€   rP   rõ  r   rÞ  r_   r_   r`   Útest_zscore_axis
  s&    

þ
þ

þ
zTestZmapZscore.test_zscore_axisc                 C   sŠ   t  ddddgddddgg¡}tj|ddd�}t  ddddg¡dt  d	¡  }t  d
dddg¡t  d¡ }t|d |ƒ t|d |ƒ d S ræ  )rU   r   rP   rõ  r€   r   rê  r_   r_   r`   Útest_zscore_ddof
  s    
ÿ zTestZmapZscore.test_zscore_ddofc                 C   s:   t  ddt jddg¡}tj|dd�}tt  |¡ƒs6t‚d S )Nr   r   r    r!   rD  rq   )rU   r   rV   rP   rõ  r-  r,  r6  ©rY   rz   rÛ  r_   r_   r`   Útest_zscore_nan_propagate)
  s    z(TestZmapZscore.test_zscore_nan_propagatec                 C   sH   t  ddt jddg¡}tj|dd�}t  ddt jd	d
g¡}t||ƒ d S )Nr   r   r    r!   rp   rq   gIHb=ô¿gIHb=ä¿gIHb=ä?gIHb=ô?)rU   r   rV   rP   rõ  r   ©rY   rz   rÛ  r…  r_   r_   r`   Útest_zscore_nan_omit.
  s    üz#TestZmapZscore.test_zscore_nan_omitc                 C   s\   t  t jdddddg¡}tj|ddd�}t jt jtj|dd … dd	�f }t||d
d� d S )NrŠ   r±   r3   r­  r~   r   rp   rí  rb   ç‚vIhÂ%<=rÚ   )rU   r   rV   rP   rõ  Úr_r
   rü  r_   r_   r`   Útest_zscore_nan_omit_with_ddof;
  s    "z-TestZmapZscore.test_zscore_nan_omit_with_ddofc                 C   s,   t  ddt jddg¡}tttj|dd� d S )Nr   r   r    r!   rt   rq   )rU   r   rV   rx   ry   rP   rõ  r:  r_   r_   r`   Útest_zscore_nan_raiseA
  s    z$TestZmapZscore.test_zscore_nan_raisec                 C   s0   dgd }t  |¡}t|t t|ƒtj¡ƒ d S )NgƒÀÊ¡E¶¿r   )rP   rõ  r   rU   rg   r	  rV   rú  r_   r_   r`   Útest_zscore_constant_input_1dF
  s    

z,TestZmapZscore.test_zscore_constant_input_1dc              	   C   sì   t  ddddgddddgg¡}tj|dd�}t|t  t jdddgt jdddgg¡ƒ tj|d	d�}t|t  t jt jt jt jgt |d	 ¡g¡ƒ tj|d d�}t|t | ¡ ¡ |j¡ƒ t  	d
¡}tj|d d�}t|t  
|jt j¡ƒ d S )Nrn   rŠ  rÿ  ç      *@r   r=   r»   rŠ   r   )r   r"   )rU   r   rP   rõ  r   rV   rÌ  rS   r5  rI  rg   )rY   rz   râ  r¥  rÛ  rZ   r_   r_   r`   Útest_zscore_constant_input_2dK
  s     
ÿÿÿ
z,TestZmapZscore.test_zscore_constant_input_2dc                 C   sê   t  ddddgdddt jgddt jdgg¡}tj|ddd�}t  d¡}t  d¡}t|t  t j| d	t jgt jdd
t jgt j|t jt jgg¡ƒ tj|ddd�}t|t  t jt jt jt jg| d|t jg| d |t j| d gg¡ƒ d S )Nrn   rŠ  rÿ  rp   r   ©rr   r>   r(   r   r»   rŠ   r   )rU   r   rV   rP   rõ  r€   r
   )rY   rz   râ  rÑ  Ús2r¥  r_   r_   r`   Ú-test_zscore_constant_input_2d_nan_policy_omit[
  s     þ

þþz<TestZmapZscore.test_zscore_constant_input_2d_nan_policy_omitc              	   C   sf   t  t jt jt jt jgddddgg¡}tj|ddd�}t|t  t jt jt jt jgddddgg¡ƒ d S )Nrn   rÿ  rp   r   r  r»   rŠ   )rU   r   rV   rP   rõ  r   rú  r_   r_   r`   Útest_zscore_2d_all_nan_rowj
  s    
ÿ
ÿz)TestZmapZscore.test_zscore_2d_all_nan_rowc                 C   s,   t  dt j¡}tj|dd d�}t||ƒ d S )N©r   r   rp   r  )rU   rg   rV   rP   rõ  r   )rY   rZ   rÛ  r_   r_   r`   Útest_zscore_2d_all_nanr
  s    z%TestZmapZscore.test_zscore_2d_all_nanrz   )r   r   r!   c                 C   s   t  |¡}t||ƒ d S rF  )rP   rõ  r   rú  r_   r_   r`   Útest_zscore_empty_inputx
  s    
z&TestZmapZscore.test_zscore_empty_inputc                 C   s,   t  ddddg¡}ddddg}t||ƒ d S )	Nr   r   r   r    ç0À’Êjø¿ç”¹`óëÈ¿ç/‹ÈAö°â?ç·(ÒÍ/ò?)rP   Úgzscorer
   )rY   rÛ  rö  r_   r_   r`   Útest_gzscore_normal_array}
  s
    ÿz(TestZmapZscore.test_gzscore_normal_arrayc                 C   sV   t  dddddg¡}t jj|dddddgd�}t |¡}dd	t jd
dg}t||ƒ d S )Nr   r   rK   r   r    r   ©Úmaskr  r  r  r  )rU   r   rÇ  Úmasked_arrayrP   r  r  r
   )rY   rz   ZmxrÛ  rö  r_   r_   r`   Útest_gzscore_masked_arrayƒ
  s    

ÿz(TestZmapZscore.test_gzscore_masked_arrayN)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   r   rs  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ej	 
dddddg¡dd„ ƒZej	 
dde ejddg¡fde ejejdg¡fg¡dd„ ƒZej	 
dddddgfdg¡dd„ ƒZdd „ ZdS )!ÚTestMedianAbsDeviationc                 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t jg¡| _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g¡| _d S )Ngš™™™™™@rÓ  r)   çš™™™™™@rî  ç333333@g=
×£p=@rì  gö(\�Âõ
@rÔ  r*   rí  gš™™™™™@g)\�Âõ(@g…ëQ¸@g33333ó<@)rU   r   rV   Údat_nanÚdatr  r_   r_   r`   Úsetup_class�
  sF                  þ             þz"TestMedianAbsDeviation.setup_classc                 C   sR   t tj| jd d�dƒ | j dd¡}tj|dd�}t dddd	g¡}t||ƒ d S )
Nr=   g¸…ëQ¸Ö?r"   r    r   g×£p=
×Û?r'   çÍÌÌÌÌÌÜ?rV  )r   rP   Úmedian_abs_deviationr  rS   rU   r  r   )rY   r  ÚmadZmad_expectedr_   r_   r`   Útest_median_abs_deviation•
  s    ÿz0TestMedianAbsDeviation.test_median_abs_deviationc                 C   s   t j| jdd�}t|dƒ d S )Nrp   rq   gÃõ(\�ÂÕ?)rP   r  r  r   )rY   r  r_   r_   r`   Útest_mad_nan_omit�
  s    z(TestMedianAbsDeviation.test_mad_nan_omitc                 C   sL   t  ddddt jgdddddgg¡}tj|dd	�}t|t  t jdg¡ƒ d S )
NrŠ   r*  r±   r)  r3   r  r~   r   r=   ©rU   r   rV   rP   r  r   )rY   rz   r  r_   r_   r`   Útest_axis_and_nan¡
  s
    ÿz(TestMedianAbsDeviation.test_axis_and_nanc              	   C   s8   t  dddddt jt jg¡}tj|dd�}t|dƒ d S )	Nr   r   r    r"   r’  rp   rq   r±   )rU   r   rV   r  rP   r  r   )ZsefrÛ  r  r_   r_   r`   Útest_nan_policy_omit_with_inf§
  s    z4TestMedianAbsDeviation.test_nan_policy_omit_with_infr>   r   r   r   Nc                 C   s:   t  d¡}tj||d�}t|t j|j|d�t jd�ƒ d S )N)r   r   r    r=   ©Ú
fill_value)rU   rs  rP   r  r   Ú	full_likeÚsumrV   )rY   r>   rz   r  r_   r_   r`   Útest_size_zero_with_axis¬
  s    
z/TestMedianAbsDeviation.test_size_zero_with_axisznan_policy, expectedrp   r(   rD  c              
   C   sb   t  t jt jt jt jt jt jgddddt jt jgddddddgg¡}tj||dd�}t||ƒ d S )	Nr   r!   r   r"   r#   r%   rE   r  r!  )rY   rr   r…  rz   r  r_   r_   r`   Útest_nan_policy_with_axis²
  s    þz0TestMedianAbsDeviation.test_nan_policy_with_axiszaxis, expectedr)   r*  rÿ  )Nr+   c              	   C   sX   t  ddddt jgdddddgdddddgg¡}tj|t jd	|d
�}t||ddd� d S )Nr   r   r    r%   r   rG   éöÿÿÿrú   rp   )Úcenterrr   r>   r²   )rÛ   r´   )rU   r   rV   rP   r  rT   r
   )rY   r>   r…  rz   r  r_   r_   r`   Útest_center_mean_with_nan¼
  s    þÿz0TestMedianAbsDeviation.test_center_mean_with_nanc              	   C   s4   t jtdd�� tjddddgdd� W 5 Q R X d S )	NÚcallablerv   r   r   r   r!   r’  )r+  )rì   r   Ú	TypeErrorrP   r  r  r_   r_   r`   Útest_center_not_callableÆ
  s    z/TestMedianAbsDeviation.test_center_not_callable)rƒ   r„   r…   r  r  r   r"  r#  rì   rð   rñ   r(  rU   r   rV   r)  r,  r/  r_   r_   r_   r`   r  Œ
  s$   
ÿÿ
ÿ
r  c                 C   s,   t t| ƒ|dƒ | D ]}t|j|kƒ qdS )z¼
    Checks that all of the warnings from a list returned by
    `warnings.catch_all(record=True)` are of the required type and that the list
    contains expected number of warnings.
    znumber of warningsN)r   r	  r   Úcategory)Z	warn_listÚexpected_typeÚexpected_lenZwarn_r_   r_   r`   Ú_check_warningsË
  s    r3  c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestIQRc                 C   s.   t  d¡d }t j |¡ tt |¡dƒ d S )Nr$   r'   rv  )rU   r   r2  rÏ  r   rP   Úiqrr:  r_   r_   r`   r¿   Ø
  s    zTestIQR.test_basicc              	   C   s–   t  d¡}t |¡ t |d ¡ t |d¡ t |d¡ t |d d¡ t |d dd¡ t |d ddd	¡ t |d d
ddd¡ t |d ddddd¡ d S )Nr1  r   ©r   r   )rE   éZ   )r  rú   rŠ   )rü   r  r(   rD  )r  r  r‘  rt   Úlineargš™™™™™Ù¿rp   rf  T)rU   rI  rP   r5  )rY   Údr_   r_   r`   Útest_apiÝ
  s    

zTestIQR.test_apic                 C   s.   t t g ¡tjƒ t t t d¡¡tjƒ d S r  )r   rP   r5  rU   rV   r   r  r_   r_   r`   r“  é
  s    zTestIQR.test_emptyc                 C   sl  t  d¡}tt |¡dƒ ttj|dd�t  d¡ƒ ttj|dd�t  d¡ƒ ttj|dd	�dƒ ttj|d
d	�dƒ ttj|dd	�dƒ ttj|dd	�dƒ ttj|dd	�dƒ t  d¡t  d¡ }ttj|dd�t  d¡ƒ ttj|dd�t  d¡ƒ ttj|dd�t  dd¡ƒ ttj|dd�t  d¡ƒ ttj|dd�t  dd¡ƒ ttj|dd�t  dd¡ƒ d S )N)r#   r    rs   r   r=   r    r   r#   r8  ©ÚinterpolationÚmidpointÚnearestrf  r…  )r    r!   r"   r"   )r!   r"   )r    r"   r   )r    r!   r)   r6  ©r   r   r!   r±   ©r   r   )	rU   rI  r   rP   r5  r   rs  r   rg   rè   r_   r_   r`   Útest_constantí
  s     
zTestIQR.test_constantc                 C   sL   t  d¡d }tt |d ¡dƒ tt |¡dƒ ttj|dd�dgƒ d S )Nr   r­  r   rs   TrÊ  )rU   r   r   rP   r5  r   r:  r_   r_   r`   Útest_scalarlike  s    zTestIQR.test_scalarlikec                 C   s„   t  d¡ d¡}tt |¡dƒ ttj|dd�t  dd¡ƒ ttj|dd�t  d	d
¡ƒ ttj|dd�dƒ ttj|dd�dƒ d S )Nrù   ©r   r!   r­  r   r=   r!   r3   r   r   r*  r6  rC  )rU   r   rS   r   rP   r5  r   rg   r:  r_   r_   r`   Útest_2D	  s    zTestIQR.test_2Dc              
   C   sš  t jjdd�}t  |gd ¡}t |¡}ttj|dd�|ƒ t  |dd¡}ttj|dd�|ƒ | dd	¡}ttj|d
d�|ƒ | dd	¡}ttj|dd�tj|d d�ƒ ttj|dd�tj|dd�ƒ t  	d¡}t j 
|¡ | d¡}ttj|dd�d t |d d …d d …d d …df  ¡ ¡ƒ ttj|dd�d	 t |d d …d d …d	d d …f  ¡ ¡ƒ ttj|dd�d t |d d …d d …dd d …f  ¡ ¡ƒ ttj|dd�d t |dd d …d d …d d …f  ¡ ¡ƒ ttj|dd�d t |dd	d d …d d …f  ¡ ¡ƒ ttj|dd�d t |dd d …d d …d	f  ¡ ¡ƒ ttj|dd�d t |dd d …dd d …f  ¡ ¡ƒ tt jtj|dd� tttj|dd� d S )N)éG   r™  rÀ  rE   r6  r=   rK   r   )r   r   r   r?  ©r   r   r   ©r   iƒ  ©r   r!   r#   rF   ©r   r   r   )r   r   rã   r   )r   r   r   ©r   r   )r   rK  )r   r   ©r   r   r    rÏ  )rU   r2  r‘  ÚdstackrP   r5  r   ÚmoveaxisZswapaxesr   rÏ  rS   rÌ  rx   Ú	AxisErrorry   )rY   Úorz   Úqr9  r_   r_   r`   r�    sR    
ÿÿ

$ÿ$ÿ$ÿ$ÿ ÿ ÿ ÿzTestIQR.test_axisc                 C   s–   t  d¡}tt |¡dƒ ttj|dd�dƒ ttj|dd�dƒ ttj|dd�dƒ tttj|d	d� tttj|t jd
fd� tt	tj|dd� d S )Nr!   r   )rü   g     àU@)rÆ  r)   )g      )@r  )rE   r  gš™™™™™ù?)r   r�  rü   )r   r  é<   )
rU   r   r   rP   r5  r   rx   ry   rV   r.  r:  r_   r_   r`   Útest_rng:  s    
zTestIQR.test_rngc                 C   s~  t  d¡}t  d¡}tt |¡dƒ tt |¡dƒ ttj|dd�dƒ ttj|dd�dƒ ttj|dd�dƒ ttj|ddd	�d
ƒ ttj|dd�dƒ ttj|dd�dƒ ttj|ddd	�dƒ ttj|dd�dƒ ttj|dd�dƒ ttj|dd�dƒ ttj|dd�dƒ ttj|ddd	�dƒ ttj|dd�dƒ tt jƒdk�rhdD ]}tj||d� �qRtttj|dd� d S )Nr!   r    r   r(   r8  r;  r…  )rü   éP   )rÆ  r<  r   rf  r>  r   r=  r)   z1.22.0)Zinverted_cdfZaveraged_inverted_cdfZclosest_observationZinterpolated_inverted_cdfZhazenZweibullZmedian_unbiasedZnormal_unbiasedru   )	rU   r   r   rP   r5  r   rÈ  rx   ry   )rY   rz   rZ   rÂ  r_   r_   r`   Útest_interpolationE  s*    

zTestIQR.test_interpolationc                 C   s^  t  d¡}ttj|d dd�jdƒ ttj|ddd�jdƒ ttj|ddd�jdƒ ttj|d	dd�jd
ƒ ttj|ddd�jdƒ ttj|ddd�jdƒ ttj|ddd�jdƒ ttj|d dd�jdƒ ttj|ddd�jdƒ ttj|ddd�jdƒ ttj|d	dd�jdƒ ttj|ddd�jdƒ ttj|ddd�jdƒ ttj|ddd�jdƒ d S )NrH  FrÁ  r_   r   )r   r!   rF   r6  )r#   rF   )r   r   )r!   r#   rË  )r   r#   rF   )r   r   r   r   rÊ  rI  )r#   T)r   r   r   r   )r   r!   r   rF   )r   r   r#   rF   )r   r!   r#   r   )r   r   r#   rF   )r   r   r#   r   )rU   rI  r   rP   r5  r5  r:  r_   r_   r`   rÎ  h  s    
zTestIQR.test_keepdimsc              	   C   sŽ  t  d¡ d¡}ttj|dd�dƒ ttj|dd�dƒ ttj|dd�dƒ t j|d< tjd	d
��f t 	d¡ ttj|dd�t jƒ ttj|ddd�ddt jddgƒ ttj|ddd�dt jdgƒ W 5 Q R X tjd	d
��^ t 	d¡ ttj|dd�dƒ ttj|ddd�t  
dd¡ƒ ttj|ddd�dddgƒ W 5 Q R X tttj|dd� tttj|ddd� tttj|ddd� tttj|dd� d S )Nç      .@rC  rD  rq   r#   rp   rt   r@  T©rW   Úalwaysr   rE  r!   r   r   r.   r)   Zbarfood)rU   r   rS   r   rP   r5  rV   ÚwarningsÚcatch_warningsÚsimplefilterrg   rx   ry   r:  r_   r_   r`   Útest_nanpolicy{  s&    

"(
&zTestIQR.test_nanpolicyc              	   C   s¬  t  d¡ d¡}ttj|dd�dƒ ttj|dd�dƒ ttj|dd�d	ƒ t j|d
< tj	dd��Â t 
d¡ ttj|ddd�t jƒ ttj|ddd�t jƒ ttj|ddd�t jƒ ttj|dddd�dt jdgƒ ttj|dddd�t  dt jdg¡d ƒ ttj|dddd�dt jdgƒ W 5 Q R X ttj|ddd�dƒ ttj|ddd�dƒ ttj|ddd�dƒ tttj|dd� tjtdd�� tjdgdd� W 5 Q R X d S )NrU  rC  rŠ   ©r�  r#   r‘  g=V^w¥Á@r*  r*   r@  TrV  rW  rD  )r�  rr   r   )r>   r�  rr   r   gF—7‡k•õ?rp   r.   gŠ¥	I1=@g      @ru   zThe use of 'scale="raw"'rv   Úraw)rU   r   rS   r   rP   r5  r   rV   rX  rY  rZ  r   rx   ry   rì   rØ  rÙ  r:  r_   r_   r`   Ú
test_scale˜  sD    

ÿ
ÿÿþ
ÿÿþzTestIQR.test_scaleN)rƒ   r„   r…   r¿   r:  r“  rA  rB  rD  r�  rR  rT  rÎ  r[  r^  r_   r_   r_   r`   r4  Ö
  s   )#r4  c                   @   sú   e Zd ZdZddddgZdZej d¡ ej 	d¡Z
d	d
dddgZdddœdd„Zdd„ Zej dejejejg¡ej 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d&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Z d2d3„ Z!dS )4ÚTestMomentsa  
        Comparison numbers are found using R v.1.5.1
        note that length(testcase) = 4
        testmathworks comes from documentation for the
        Statistics Toolbox for Matlab and can be found at both
        https://www.mathworks.com/help/stats/kurtosis.html
        https://www.mathworks.com/help/stats/skewness.html
        Note that both test cases came from here.
    r   r   r   r    r)  éÒ  rÎ  g¤p=
×£ò?gæ?¤ß¾ä?gDúíëÀ9³?gª‚QI�€Ö?g}?5^ºIæ¿N©r5  r<   c                C   sH   t  |¡}|d k	rt  ||¡}t||ƒ |d kr6|j}|j|ksDt‚d S rF  )rU   r  Úbroadcast_tor   r<   r6  )rY   rv  Úexpectr5  r<   r_   r_   r`   Ú_assert_equalÒ  s    

zTestMoments._assert_equalc              	   C   sH  t  | j¡}t|dƒ t  | jd¡}t|dƒ t  | jd¡}t|ddƒ t  | jd¡}t|dƒ t  | jd¡}t|dƒ t  | jd	¡}t|d
ƒ t  | jdddd	g¡}t|dddd
gƒ t  | jd¡}t|dƒ ttt j| jdƒ t  | jddddg¡}t|dddd
gƒ d}tj	t
|d��Â t  g ¡}| j|tjtjd� t  tjg tjd�¡}| j|tjtjd� t jt d¡dd�}| j|g dtjd� t jg gdd�}| j|tjdtjd� t jg gddgdd�}| j|g dd� W 5 Q R X t d¡}tj|d< tt  |d¡tjƒ tt j|dd�dƒ ttt j|dd� ttt j|dd� d S )Nrs   r   rŠ   r   rE   r   ç      ô?r   r    g     €@ç333333ó?r)  úMean of empty slice.rv   r;   rC  r=   rG  ra  rË  )Úmomentr>   )r   r   )r5  rn   r%   rp   rq   rt   ru   )rP   rh  rÖ  r	   r×  r
   rx   ry   rì   rØ  rX   rd  rU   rV   r   r   r   rs  r   r   r   )rY   rZ   rí   rz   r_   r_   r`   Útest_momentÛ  sJ    








zTestMoments.test_momentr<   zexpect, momentr6  rC  c                 C   s²   t j d¡ |¡}tj||d�}| j|||d� tjt  |d¡d|d�}| j||d|d� tjt  |d	¡d
|d�}| j||d|d� tjt  |d	¡d |d�}| j||d|d� d S )Nr!   ©rh  r;   )r"   r!   r   )r>   rh  r¦  ra  )r   r   r   r    r!   r   )r   r   r    r!   r_   )rU   r2  r>  r‚  rP   rh  rd  rb  )rY   r<   rc  rh  rz   rZ   r_   r_   r`   Útest_constant_moments
  s    ÿÿz!TestMoments.test_constant_momentsc                 C   sP   t  d¡ dd¡ t¡}t j|d< tj|dddd�}t jj	|dt jgd	d
� d S )Nr$   r   rK   rC  r   rD  rE  re  r²   r³   )
rU   r   rS   r‚  rt  rV   rP   rh  r  r
   )rY   r¸   Úmmr_   r_   r`   Útest_moment_propagate_nan  s    
z%TestMoments.test_moment_propagate_nanc              	   C   s4   t jtdd�� tjddddgg d� W 5 Q R X d S )Nz7'moment' must be a scalar or a non-empty 1D list/array.rv   r   r   r   r    rj  )rì   r   ry   rP   rh  r  r_   r_   r`   Útest_moment_empty_moment$  s    z$TestMoments.test_moment_empty_momentc              	   C   sú   t jtdd��  t | j¡}t |¡s*t‚W 5 Q R X t | j	¡}t
|ddƒ tj| j	dd�}t
|ddƒ t | j¡}t
|ddƒ t d	¡}tj|d
< tjdd�� tt |¡tjƒ W 5 Q R X ttj|dd�dƒ tttj|dd� tttj|dd� d S )NúPrecision loss occurredrv   g7l•*ÄÒ¿rE   r   ©Úbiasg¨õ2Û ùÛ¿rs   rn   r%   r[  r\  rp   rq   rt   ru   )rì   rØ  rX   rP   ÚskewrÖ  rU   r,  r6  Útestmathworksr	   r×  r   rV   r^  r   rx   ry   ©rY   rZ   rz   r_   r_   r`   Útest_skewness*  s     

zTestMoments.test_skewnessc                 C   s   t t tdƒ¡dƒ d S )NrE   rs   )r   rP   rr  r   r  r_   r_   r`   Útest_skewness_scalar@  s    z TestMoments.test_skewness_scalarc              	   C   sf   t  d¡ dd¡ t¡}t j|d< t jdd�� tj|ddd	�}W 5 Q R X t j	j
|d
t jgdd� d S )Nr$   r   rK   rC  r[  r\  r   rD  rE  r   r²   r³   )rU   r   rS   r‚  rt  rV   r^  rP   rr  r  r
   )rY   r¸   rÑ  r_   r_   r`   Útest_skew_propagate_nanD  s
    
z#TestMoments.test_skew_propagate_nanc              
   C   sÌ   t jtdd��´ t dd¡}t t |¡¡s0t‚t t |t	dƒ ¡¡sLt‚t t |t	dƒ ¡¡sht‚t tj|dd�¡s€t‚t t dgd	 ¡¡sšt‚t t d
t 
dd¡d  ¡¡s¾t‚W 5 Q R X d S )Nro  rv   çË9Ÿ•ÏÑ¿rE   ì           Frp  gš™™™™™,@r#   r   rL   r    g¼‰Ø—²Òœ<)rì   rØ  rX   rU   Úrepeatr,  rP   rr  r6  rt  r   ©rY   r¸   r_   r_   r`   Útest_skew_constant_valueM  s    z$TestMoments.test_skew_constant_valuec              	   C   sî   t jtdd��  t | j¡}t |¡s*t‚W 5 Q R X tj| j	dddd�}t
|ddƒ tj| j	ddd�}t
|ddƒ t | jdd¡}t
|d	ƒ t d
¡}tj|d< tt |¡tjƒ ttj|dd�dƒ tttj|dd� tttj|dd� d S )Nro  rv   r   r   ©Úfisherrq  gOß»S@rE   gâx|ïN@g=
×£p=ú?rn   r%   rp   rq   ç®Gáz®ó¿rt   ru   )rì   rØ  rX   rP   ÚkurtosisrÖ  rU   r,  r6  rs  r	   r×  r   rV   r   r   rx   ry   rt  r_   r_   r`   Útest_kurtosis[  s    


zTestMoments.test_kurtosisc                 C   s   t tt dddg¡ƒtƒ d S rç  )r   ÚtyperP   r€  rt  r  r_   r_   r`   Útest_kurtosis_array_scalarw  s    z&TestMoments.test_kurtosis_array_scalarc                 C   sN   t  d¡ dd¡ t¡}t j|d< tj|ddd�}t jj	|dt jgd	d
� d S )Nr$   r   rK   rC  r   rD  rE  gÃõ(\�Âõ¿r²   r³   )
rU   r   rS   r‚  rt  rV   rP   r€  r  r
   )rY   r¸   r@  r_   r_   r`   Útest_kurtosis_propagate_nanz  s    
z'TestMoments.test_kurtosis_propagate_nanc              	   C   sœ   t  dd¡}tjtdd��x t  tj|dd�¡s4t‚t  tj|t	dƒ dd�¡sTt‚t  tj|t	dƒ dd�¡stt‚t  tj|ddd�¡sŽt‚W 5 Q R X d S )	Nrx  rE   ro  rv   F)r~  ry  r}  )
rU   rz  rì   rØ  rX   r,  rP   r€  r6  rt  r{  r_   r_   r`   Útest_kurtosis_constant_value‚  s      z(TestMoments.test_kurtosis_constant_valuec                 C   s6   | j t | j ¡ }tt |d¡ ¡ t | j d¡ƒ d S )NrÎ  )Útestcase_moment_accuracyrU   rT   r
   r   rP   rh  )rY   Z
tc_no_meanr_   r_   r`   Útest_moment_accuracyŒ  s    
ÿÿz TestMoments.test_moment_accuracyc              	   C   sT   t jtdd��< tj d¡}|jdd�}d|d d …df< t |¡d  W 5 Q R X d S )Nro  rv   l   :"z` )r÷   rE   rÀ  ç)\�Âõ(ð?r   )rì   rØ  rX   rU   r2  rÃ  rP   rr  )rY   rÆ  r¸   r_   r_   r`   Útest_precision_loss_gh15554”  s
    z'TestMoments.test_precision_loss_gh15554c              	   C   sP   d}t jt|d�� t g ¡ W 5 Q R X t jt|d�� t g ¡ W 5 Q R X d S )Nrg  rv   )rì   rØ  rX   rP   rr  r€  ©rY   rí   r_   r_   r`   Útest_empty_1dž  s
    zTestMoments.test_empty_1d)"rƒ   r„   r…   rï   r×  rÖ  rU   r2  r3  r>  r†  rs  rd  ri  rì   rð   rñ   r   r   Z
complex128rk  rm  rn  ru  rv  rw  r|  r�  rƒ  r„  r…  r‡  r‰  r‹  r_   r_   r_   r`   r_  Â  s0   		/	

r_  c                   @   s”   e Zd Ze dddg¡Ze dddg¡ZdZdZdZ	dZ
dZdZd	Zd
Ze
d Zde
d  Zdd„ Zdd„ Zej ddddg¡dd„ ƒZdd„ ZdS )ÚTestStudentTestrK   r   r   r   g÷�Sèz¶û¿gEˆý.ÚÌ?gÇ {¶ÀgÊB…4tý²?gÇ {¶û?g�ŠôìÚÌ?c                 C   sÒ  t ƒ �T}tjdd��< tjtdd��" | td¡ t dd¡\}}W 5 Q R X W 5 Q R X W 5 Q R X t	t 
|¡ƒ t	t 
|¡ƒ t | jd¡\}}t|| jƒ t|| jƒ t | jd¡}d	}t||ƒ t | jd¡\}}t|| jƒ t|| jƒ t | jd
¡\}}t|| jƒ t|| jƒ t | jd¡\}}t|| jƒ t|| jƒ tjjddddd�}tj|d< tjdd��^ tt |d¡tjtjfƒ ttj|ddd�dƒ tttj|ddd� tttj|ddd� W 5 Q R X d S )Nr[  r\  ro  rv   rÔ  r)  r±   r   ©r¬   r«   r   r   r!   rE   é3   i§Ìt ©r�  r�  r�   Úrandom_stater  r3   rp   rq   )gÍ„Á^œBú¿g/kCÒüm»?rt   ru   )r   rU   r^  rì   rØ  rX   rÕ  rP   Úttest_1sampr   r,  ÚX1r   ÚT1_0ÚP1_0r   ÚX2ÚT2_0ÚP2_0ÚT1_1ÚP1_1ÚT1_2ÚP1_2ÚnormÚrvsrV   r   rx   ry   )rY   r^   ÚtrÆ   r®   r¯   rz   r_   r_   r`   Útest_onesample´  sB    ÿ.

ÿÿzTestStudentTest.test_onesamplec                 C   sv   t ttj| jddd� tj| jddd�\}}t|| jƒ t|| jƒ tj| jddd�\}}t|| jƒ t|| jƒ d S )Nr   ÚerrorrØ   r   rÔ   rÖ   )	rx   ry   rP   r‘  r’  r
   ÚP1_1_lr˜  ÚP1_1_g)rY   rž  rÆ   r_   r_   r`   Útest_1samp_alternativeà  s    ÿz&TestStudentTest.test_1samp_alternativerÙ   rÒ   rÔ   rÖ   c           	      C   s„   t j d¡}d}|j|ddd�}| ¡ }ddgdt jgt j d	gd
œ}tj|||d�}|jdd�}t||| ƒ t	|j
|d ƒ d S )Nl   <Ple¦H† rE   r(   r   ©r�   r�  r�  gÃ�Ž]×?g$(ÔØ}w@géS1žèç?gâ¤ù¼›]@©rÒ   rÖ   rÔ   )ÚpopmeanrÙ   ç333333ë?©Zconfidence_levelr   )rU   r2  rÃ  r‘  r  rP   r‘  rÏ   r
   r   Údf)	rY   rÙ   rÆ  rR  rz   r¦  rÍ  r®   rà   r_   r_   r`   Útest_1samp_ci_1dì  s    
þz TestStudentTest.test_1samp_ci_1dc              	   C   s@   t  t d¡d¡}d}tjt|d�� |jdd� W 5 Q R X d S )NrE   r   ú4`confidence_level` must be a number between 0 and 1.rv   r¨  )rP   r‘  rU   r   rì   r   ry   rÏ   )rY   r®   rí   r_   r_   r`   Útest_1samp_ci_iv  s    z TestStudentTest.test_1samp_ci_ivN)rƒ   r„   r…   rU   r   r’  r•  r“  r”  r˜  r™  rš  r›  r–  r—  r¡  r¢  rŸ  r£  rì   rð   rñ   rª  r¬  r_   r_   r_   r`   rŒ  ¦  s"   ,
rŒ  c                   @   sº  e Zd Zdd„ Zej dddddg¡dd	„ ƒZej dd
dddg¡dd„ ƒZej dddddg¡dd„ ƒZ	ej dddddg¡dd„ ƒZ
ej dddddg¡dd„ ƒZej dddddg¡dd„ ƒZej dddddg¡dd„ ƒZej ddd d!d"d"gfd#d d$d%d"gfd&d d d'd"gfd(d d!d"d"gfg¡d)d*„ ƒZej ddd d!d"gfd#d d$d%gfd&d d d'gfd(d d!d"gfg¡d+d,„ ƒZd-g d.ejfd-ejgd.ejfd-ejgd d.d/gejejejgfd-d.d/gd.d/ejgd0d"ejgfd1d.d/ejgd d.d/gd d0d"gfd1d.d/gd d.ejgd d0ejgfd1ejejgd d.d/gejejejgfgZej d2e¡d3d4„ ƒZd5d.d/d6ejgd.d/d6gd7fd5d.d/d6gd.d/d6ejgd7fgZej d8e¡d9d:„ ƒZej d;d<d=d>d?g¡d@dA„ ƒZdBS )CÚTestPercentileOfScorec                 O   s   t j||ŽS rF  )rP   Zpercentileofscore)rY   ÚargsÚkwargsr_   r_   r`   Úf  s    zTestPercentileOfScore.fzkind, result)rþ  r  )rT   é#   )Ústrictr  )Úweakr  c              
   C   s2   ddddddddd	d
g
}t | j|d|d�|ƒ d S )Nr   r   r   r    r!   r"   r#   r$   r%   rE   ©Úkind©r   r°  ©rY   rµ  rß   r¸   r_   r_   r`   Útest_unique  s    z!TestPercentileOfScore.test_unique)rþ  rc  )rT   r  )r³  r  c              
   C   s2   dddddddddd	g
}t | j|d|d
�|ƒ d S ©Nr   r   r   r    r!   r"   r#   r$   r%   r´  r¶  r·  r_   r_   r`   Útest_multiple2  s    z$TestPercentileOfScore.test_multiple2)rþ  r  )rT   rc  )r³  rQ  c              
   C   s2   ddddddddddg
}t | j|d|d	�|ƒ d S )
Nr   r   r   r    r!   r"   r#   r$   r´  r¶  r·  r_   r_   r`   Útest_multiple3  s    z$TestPercentileOfScore.test_multiple3)rþ  r  )rT   r  )r³  r  c              
   C   s2   ddddddddd	d
g
}t | j|d|d�|ƒ d S )Nr   r   r   r!   r"   r#   r$   r%   rE   rF   r    r´  r¶  r·  r_   r_   r`   Útest_missing&  s    z"TestPercentileOfScore.test_missingc              
   C   s2   ddddddddd	d
g
}t | j|d|d�|ƒ d S )NrE   rú   r  r  r  rQ  éF   rS  r7  r÷   r´  r¶  r·  r_   r_   r`   r  .  s    z(TestPercentileOfScore.test_large_numbersc              
   C   s2   ddddddddddg
}t | j|d|d	�|ƒ d S )
NrE   rú   r  r  r  rQ  r½  rS  r´  r¶  r·  r_   r_   r`   Útest_large_numbers_multiple36  s    z2TestPercentileOfScore.test_large_numbers_multiple3c              
   C   s2   ddddddddd	d
g
}t | j|d|d�|ƒ d S )NrE   rú   r  r  rQ  r½  rS  r7  r÷   én   r  r´  r¶  r·  r_   r_   r`   Útest_large_numbers_missing>  s    z0TestPercentileOfScore.test_large_numbers_missingrþ  r   rE   r÷   rT   r!   é_   r²  r7  r³  c              
   C   s:   ddddddddd	d
g
}t | j|ddd
dg|d�|ƒ d S )NrE   rú   r  r  rQ  r½  rS  r7  r÷   r¿  r   r  r´  r¶  r·  r_   r_   r`   Útest_boundariesF  s    z%TestPercentileOfScore.test_boundariesc              
   C   sD   ddddddddd	t j
 g
}t| j|t j dt j
 g|d
�|ƒ d S r¹  )rU   r  r   r°  r·  r_   r_   r`   Útest_infN  s    zTestPercentileOfScore.test_infrD  r   r   r  rp   zpolicy, a, score, resultc                 C   s   t | j|||d�|ƒ d S )Nrq   r¶  )rY   Úpolicyr¸   rŽ  rß   r_   r_   r`   Útest_nans_ok^  s    z"TestPercentileOfScore.test_nans_okrt   r   r´  zpolicy, a, score, messagec              	   C   s,   t t|d�� | j|||d� W 5 Q R X d S )Nrv   rq   )rx   ry   r°  )rY   rÄ  r¸   rŽ  rí   r_   r_   r`   Útest_nans_faili  s    z$TestPercentileOfScore.test_nans_failr5  )r"   r	  )r   r   r   )r   r   r   r   c              
   C   sZ   t  ddddddg¡}| |¡}|d }ddddddd	d
ddg
}t| j||dd�|ƒ d S )Nr   r   r   r   r    r!   rE   r"   r#   r$   r%   rþ  r´  )rU   r   rS   r   r°  )rY   r5  r¸   rî  Úresultsr_   r_   r`   Útest_ndn  s
    
zTestPercentileOfScore.test_ndN)rƒ   r„   r…   r°  rì   rð   rñ   r¸  rº  r»  r¼  r  r¾  rÀ  rÂ  rÃ  rU   rV   ZcasesrÅ  rÆ  rÈ  r_   r_   r_   r`   r­  	  s¢   
ý

ý

ý

ý

ý

ý

ý
ý
ý
 $ú
ÿÿý
ür­  ZCaseÚf_obsÚf_exprc   r>   Úchi2ÚlogÚmod_logÚcrrG   r*  r"  gfœx­(@)rÉ  rÊ  rc   r>   rË  rÌ  rÍ  rÎ  rû   rò  r)  ç      Ð?g‡æÙ{TÉ4@c                   @   sL   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S )ÚTestPowerDivergencec              	   C   sÐ   t  |¡}|d kr|j}nt  ||¡}|j| }tƒ �d}	|	 td¡ tj	|||||d�\}
}t
|
|ƒ |dksv|dkr–tj||||d�\}
}t
|
|ƒ W 5 Q R X t  |¡}tjj ||d | ¡}t
||ƒ d S )NrM   ©rÉ  rÊ  rc   r>   Úlambda_r   Úpearson)rÉ  rÊ  rc   r>   )rU   r  r�   Ú	broadcastr5  r   rÕ  rX   rP   Úpower_divergencer
   Ú	chisquareÚdistributionsrË  Úsf)rY   rÉ  rÊ  rc   r>   rÒ  Úexpected_statZnum_obsr¾   r^   ÚstatrÆ   Z
expected_pr_   r_   r`   Úcheck_power_divergence½  s2    

   þ


ÿ



ÿz*TestPowerDivergence.check_power_divergencec              	   C   sà   t D ]Ö}|  |j|j|j|jd |j¡ |  |j|j|j|jd|j¡ |  |j|j|j|jd|j¡ |  |j|j|j|jd|j¡ |  |j|j|j|jd|j¡ |  |j|j|j|jd|j	¡ |  |j|j|j|jd|j	¡ qd S ©NrÓ  r   úlog-likelihoodúmod-log-likelihoodúcressie-readr"  )
Úpower_div_1d_casesrÛ  rÉ  rÊ  rc   r>   rË  rÌ  rÍ  rÎ  ©rY   Úcaser_   r_   r`   r¿   Ø  sr        þ    þ    þ    þ    þ    þ    þzTestPowerDivergence.test_basicc              	   C   sà   t D ]Ö}tj |j¡}|  ||j|j|jd |j	¡ |  ||j|j|jd|j	¡ |  ||j|j|jd|j	¡ |  ||j|j|jd|j
¡ |  ||j|j|jd|j¡ |  ||j|j|jd|j¡ |  ||j|j|jd|j¡ qd S rÜ  )rà  rU   rÇ  r   rÉ  rÛ  rÊ  rc   r>   rË  rÌ  rÍ  rÎ  )rY   râ  Úmobsr_   r_   r`   Útest_basic_maskedð  st        þ    þ    þ    þ    þ    þ    þz%TestPowerDivergence.test_basic_maskedc              	   C   sà   t d }t d }t |j|jf¡}t t |j¡t |j¡ |jf¡}|  ||ddd|j|jg¡ |  ||ddd|j	|j	g¡ |  ||ddd|j
|j
g¡ |  ||ddd|j|jg¡ |  t |j¡ dd¡d dd d|j¡ d S )Nr   r   rÓ  rÝ  rÞ  rß  r   )rà  rU   rB  rÉ  Ú	ones_likerT   rÊ  rÛ  rË  rÌ  rÍ  rÎ  r   rS   )rY   Úcase0Úcase1rÉ  rÊ  r_   r_   r`   r�  	  s\    ÿ    
þ    
þ    
þ    
þ    þzTestPowerDivergence.test_axisc                 C   sÎ   t d }t d }t |j|jf¡j}t t |j¡t |j¡ |jf¡j}|j|jg}t 	dgdgg¡}t
j|||d�\}}t||ƒ t
j|||d d�\}	}
t
j|||d d�\}}t|t |
|f¡ƒ d S )Nr   r   rb   rÏ  rC  )rà  rU   rB  rÉ  r7  rå  rT   rÊ  rË  r   rP   rÕ  r
   r   )rY   ræ  rç  rÉ  rÊ  Zexpected_chi2rc   rÚ  rÆ   Zstat0Úp0Zstat1Úp1r_   r_   r`   Útest_ddof_broadcasting#  s    ÿ
z*TestPowerDivergence.test_ddof_broadcastingc              
   C   sš   t  ¡ �ˆ tD ]|}|  |j|j|j|jd|j¡ |  |j|j|j|jd|j	¡ |  |j|j|j|jd|j
¡ |  |j|j|j|jd|j¡ qW 5 Q R X d S )NrÓ  rÝ  rÞ  rß  )rX  rY  Úpower_div_empty_casesrÛ  rÉ  rÊ  rc   r>   rË  rÌ  rÍ  rÎ  rá  r_   r_   r`   Útest_empty_cases?  sD    
    þ    þ    þ    þz$TestPowerDivergence.test_empty_casesc                 C   sN   t d j}t d j}t d j}t d j}tj||||dd�}d}t||ƒ d S )Nr   rÓ  rÑ  r�  )rà  rÉ  rÊ  rc   r>   rP   rÕ  r   )rY   rÉ  rÊ  rc   r>   r®   r¯   r_   r_   r`   Ú'test_power_divergence_result_attributesO  s    




 ÿz;TestPowerDivergence.test_power_divergence_result_attributesc              	   C   s´   t  ddgddgg¡}t  ddgddgg¡}ttdd	�� tjddgdd
gd� W 5 Q R X ttdd	�� tj||dd� W 5 Q R X tj||d�\}}t|ddgƒ t|ddgƒ d S )NrE   rú   r  r!   rù   r±  rü   úFor each axis slice...rv   rQ  ©rÉ  rÊ  r   )rÉ  rÊ  r>   gòÌ‘¶mÛ@g¥ÝÇUUU@g¤j�^4;‘?gè4¨‰€;º?)rU   r   rx   ry   rP   rÕ  r
   )rY   rÉ  rÊ  rÚ  rÝ   r_   r_   r`   Útest_power_divergence_gh_12282Z  s     z2TestPowerDivergence.test_power_divergence_gh_12282N)rƒ   r„   r…   rÛ  r¿   rä  r�  rê  rì  rí  rð  r_   r_   r_   r`   rÐ  »  s   rÐ  c                	   C   s2   t tdd�� tjddgddgd� W 5 Q R X d S )Nrî  rv   rE   rú   r  rQ  rï  )rx   ry   rP   rÖ  r_   r_   r_   r`   Útest_gh_chisquare_12282g  s    rñ  zn, dtyper  i@B c                 C   sN   t j| dg|d�}t j| d | d g|d�}t ||¡\}}t|| dd� d S )Nr   r;   r   rþ  rÚ   )rU   r   rP   rÖ  r
   )rR  r<   ÚobsÚexprÚ  rÆ   r_   r_   r`   Útest_chiquare_data_typeso  s    rô  c               
   C   s¦  t  dddddgdddddgg¡j} t  ddddd	gd	d	dddgg¡j}t j | |¡}t  d
dg¡}t  ddt  d¡ dt  d¡   ddt  d¡ dt  d¡   g¡}tjj}t 	|¡\}}t
 ||¡ t
 || ||jdd�d	 ¡¡ tj|dd�\}}t
j||dd� t
 || ||jdd�d	 ¡¡ tj	|jd	d�\}}t
 ||¡ t
 || ||jjd	d�d	 ¡¡ tj|jd	dd�\}}t
j||dd� t
 || ||jdd�d	 ¡¡ t jjdddddgdddd	dgd�}	t jjdddddgddddd	gd�}
tj	|	|
d�\}}t
 |d¡ tj	t j d	ddg¡d d�\}}tt|t jƒƒ tt|t jƒƒ t|dƒ t|tjj dd¡ƒ t jdd��: tƒ �(}| td¡ t 	t j g ¡¡\}}W 5 Q R X W 5 Q R X tt|t jjƒƒ t|jdƒ t|jƒ t j g g g g¡}t 	|¡\}}tt|t jjƒƒ t
 |g ¡ t jdd��4 tƒ �"}| td¡ t 	|j¡\}}W 5 Q R X W 5 Q R X tt|t jjƒƒ t|jd ƒ tt  |j¡ƒ d S )!Nr$   rû   é    rK   r   r    r!   r   r   g      8@r'   r   r*  r‹  re  r=   rÝ  ©rÒ  rù   r?   )r>   rÒ  r"   r’  rE   r  )rÊ  rŠ   r[  r\  rM   r_   r�  )rU   r   r7  rÇ  r  rÌ  rP   r×  rË  rÖ  Úmatr   r   rØ  r¸  rÕ  r   r)  r   r   r   r^  r   rÕ  rX   ZMaskedArrayr5  r  r-  )rò  r  rã  Zexpected_chisqZ
expected_grË  ZchisqrÆ   ÚgZobs1Zexp1r^   Zempty3r_   r_   r`   Útest_chisquare_masked_arraysx  sn    $$"ÿÿÿÿÿ$$ 
*
$rù  c               "   C   s&  t  ddddddddddd	d
ddddddg¡} d}t  dt| ƒd ¡}t  |  ¡ t  || ¡ ¡  ¡}t  |||  ¡}t  | |f¡j}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'd(d)d*d+d,d-d.g ¡ 	d/d0¡}|D ]B\}}t
j|d d …d1f |d d …df |d2�\}	}
t|	|d3d4� qÞd S )5Nrù   rF   rC   rN   r!   rE   r    r$   r#   r%   r   r"   r   gñ*k›âqµ¿g      $Àg    € ñ@rñ  g     r@g      ÀgffffffP@g       ÀgÍÌÌÌÌLD@ré  g      A@r»   g     €=@rè  g     €:@rs   gš™™™™™8@r'   gffffff7@gq=
×£på?gš™™™™7@rŠ   g33333³6@r(   gš™™™™™6@r*  gfffffæ6@r±   gÍÌÌÌÌÌ8@r3   g     ÀA@rn   g     Àj@rK   r   r   rö  g{®Gázt?rÚ   )rU   r   r   r	  rÌ  r'  ró  rB  r7  rS   rP   rÕ  r
   )rò  ÚbetarI  ÚalphaZexpected_countsZtable4Ztable5rÒ  rÙ  rÚ  rÆ   r_   r_   r`   Ú/test_power_divergence_against_cressie_read_dataÃ  st    	        ÿ                 ï î ÿ
rü  c                  C   sV  t dd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ddgƒt dd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/d0d1gƒg} t d2d3d4d3d4d3d5d4d2d2d2d3gƒt d5d5d6d5d3d6d5d3d5d6d6d3gƒt d5d2d3d3d2d3d3d2d2d6d5d6gƒt d3d4d2d3d2d2d3d3d3d2d2d2gƒg}t d7d8d9d:d;gƒt d<d=d>d?d@gƒt dAdBdCdDdEgƒt dFdGdHdIdJgƒg}tt | dK | d6 | d5 | d3 ¡dLƒ tt |dK |d6 |d5 |d3 ¡dMƒ tt |dK |d6 |d5 |d3 ¡dNƒ tttj|dK |d6 ƒ dO}tj| Ž }t||ƒ tt | dK | d6 | d5 | d3 ¡dLƒ tt |dK |d6 |d5 |d3 ¡dNƒ tttj|dK |d6 ƒ d S )PNgÑ"Ûù~jè?g^ºI+ã?gºI+‡î?gj¼t“ä?gÓMbX9ì?gÁÊ¡E¶óí?gôýÔxé&å?g-²�ï§â?gÍÌÌÌÌÌè?rŠ   g®Gázî?g+‡ÙÎã?g´Èv¾Ÿï?g9´Èv¾Ÿî?gú~j¼t“è?g¶óýÔxéâ?gßO�—nï?gÑ"Ûù~jì?g˜nƒÀÊí?gÇK7‰A`å?g7‰A`åÐê?gbX9´Èî?gZd;ßOå?g1¬Zdï?g²�ï§ÆKï?gyé&1¬è?gáz®Gáâ?g`åÐ"Ûùî?g!°rh‘íä?g'1¬Zì?gZd;ßOí?g°rh‘í|ã?gj¼t“â?gƒÀÊ¡E¶ë?gáz®Gáî?gÙÎ÷Sã¥ã?gŒJê4ï?gƒÀÊ¡Eî?gð§ÆK7‰é?gh‘í|?5â?g‹lçû©ñî?g /Ý$å?g#Ûù~j¼ì?gìQ¸…ëå?ç      ä?g      ì?gœÄ °rhå?g333333ï?ç
×£p=
ï?r    r   r!   r   r   r­  gÍÌÌÌÌÌ#@r/   rx  gš™™™™™$@g333333@gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@r*   gÍÌÌÌÌÌ@r|  r€  r,   rî  çÍÌÌÌÌÌ @gš™™™™™!@gÍÌÌÌÌÌ!@ç333333 @çffffff
@g333333"@r   )g–N§Óét$@g ¥—Bv‘?)g
_ñ_ñ2@g˜5"]i2?)g\�Âõ(\%@g¯¢·+Ô‹?r�  )r   r   rP   Zfriedmanchisquarerx   ry   r   Úmstats)rl  rm  ru  r¯   r®   r_   r_   r`   Útest_friedmanchisquareð  sŠ         ÿ     ÿ     ÿ     ÿú
ýý ÿ ÿ ÿ

 ÿþ ÿþr  c                   @   s4   e Zd ZdZddd„Zddd„Zdd	„ Zd
d„ ZdS )Ú
TestKSTestzLTests kstest and ks_1samp agree with K-S various sizes, alternatives, modes.ÚautorC   c           	      C   s8   t j|d||d�}t ||g¡}tt |¡||d� d S ©Nrœ  ©rÙ   r–  r?   )rP   ÚkstestrU   r   r   ©	rY   rz   rÙ   Úexpected_statisticÚexpected_probr–  r@   rß   r…  r_   r_   r`   Ú_testOne(  s    zTestKSTest._testOnec                 C   s@   t j|d||d�}t j|t jj||d�}tt |¡||d� d S r  )rP   r  Úks_1samprœ  Úcdfr   rU   r   )rY   rz   rÙ   r–  r@   rß   Zresult_1sampr_   r_   r`   Ú_test_kstest_and_ks1samp-  s    z#TestKSTest._test_kstest_and_ks1sampc                 C   s,   t  ddd¡}d}t |d¡}t||ƒ d S )NrK   r   r%   r�  rœ  )rU   r%  rP   r  r   ©rY   rz   r¯   r®   r_   r_   r`   Útest_namedtuple_attributes2  s    z%TestKSTest.test_namedtuple_attributesc              
   C   s|   t  ddd¡}|  |d¡ t  ddd¡}|  |d¡ ddd	d
ddddddg
}|  |d¡ | j|ddd� | j|ddd� d S )NrK   r   r%   rÒ   éñÿÿÿrù   r  ç¸…ëQ¸®?ç333333ã¿çÃõ(\�ÂÅ?ç…ëQ¸å?çÃõ(\�ÂÅ¿ç{®Gáz´¿çHáz®GÑ?ç\�Âõ(\ï¿ç®Gáz®ï¿rÖ   rÀ  ©r–  rÔ   )rU   r%  r  r:  r_   r_   r`   Útest_agree_with_ks_1samp9  s    z#TestKSTest.test_agree_with_ks_1sampN)r  rC   )r  rC   )rƒ   r„   r…   rï   r  r  r  r  r_   r_   r_   r`   r  %  s
   

r  c                   @   sn   e Zd ZdZddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Ze	j
 dejejg¡e	j
 dddddg¡dd„ ƒƒZdS )ÚTestKSOneSamplezOTests kstest and ks_samp 1-samples with K-S various sizes, alternatives, modes.r  rC   c           	      C   s<   t j|t jj||d�}t ||g¡}tt |¡||d� d S )Nr  r?   )rP   r  rœ  r  rU   r   r   r	  r_   r_   r`   r  K  s    zTestKSOneSample._testOnec                 C   s0   t  ddd¡}d}t |tjj¡}t||ƒ d S )NrK   r   r%   r�  )rU   r%  rP   r  rœ  r  r   r  r_   r_   r`   r  P  s    z*TestKSOneSample.test_namedtuple_attributesc              
   C   s�   t  ddd¡}|  |ddd¡ t  ddd¡}|  |dd	d
¡ ddddddddddg
}|  |ddd¡ | j|ddddd� | j|ddddd� d S )NrK   r   r%   rÒ   g²|»ÐNÄ?gÎï7.×sî?r  rù   gî{CTpÜ?g M<b*ä£?r  r  r  r  r  r  r  r  r  r  gZ­×LÊÒ?g86ùJ4ÇÒ?rÖ   gŸ+±·‡ÐÂ?rÀ  r  rÔ   gš…ˆHDþ»?gŽ–¿×rç?©rU   r%  r  r:  r_   r_   r`   Útest_agree_with_rW  s    z!TestKSOneSample.test_agree_with_rc                 C   sJ   t jjdddd�}| j|ddddd	� |  |d
dd¡ |  |ddd¡ d S )Nr#  r÷   é±hÞ:)r�  r�   r�  rÒ   ghúÑ…Ÿè¿?gøÆÏ7Üå¶?Úasympr  rÔ   gð^hˆü¤?rÖ   gvÇ!�Ô‰}?g*zº)¬‡ï?)rP   rœ  r�  r  r:  r_   r_   r`   Útest_known_examplesd  s    z#TestKSOneSample.test_known_examplesc                 C   s˜   t t ttjddƒ¡ƒ ttdd�� tdddƒ W 5 Q R X t t tdddƒ¡ƒ t ddd	d
ddddddddddg¡}tt|ddƒj	t
ttgd� d S )Nr   Tzn is not integral: 1.5rv   r(   rK   )r�  r   TrŠ   )r�  çš™™™™™ñ?TrŠ   )r�  r   Trs   )r�  gš™™™™™¹¿Trs   )rõ  ç      �?Trs   )rõ  r%  FrŠ   )rõ  r'   TgbÏÝÿÿï?)rõ  r'   Fgiƒ¯õNq>)rõ  ç      À?Tgâ‡vÕ(Ö?)rõ  rÏ  TgÂò¨TÖ	ï?)é@  g\�Âõ(\ß?Frs   )r'  ç      °?Fg¾¸·(¶Ý>)r'  gìQ¸…ë�?Fgß@c“êüï?)r'  ç       ?FgX+Ê³P¶?rF  r   )Zdtypes)r   rU   r,  r   rV   rx   ry   r  r   ÚcheckÚintrt  Úbool)rY   Zdatasetr_   r_   r`   Útest_ks1samp_allpathsk  s*    íz%TestKSOneSample.test_ks1samp_allpathsÚksfuncú*alternative, x6val, ref_location, ref_sign)rÖ   r"   r"   r   )rÔ   r#   r#   rK   )rÒ   r"   r"   r   )rÒ   r#   r#   rK   c           	      C   sb   t  d¡d }||d< tjdd�j}||||d�}t|jddd� |j|ksPt‚|j	|ks^t‚d S )	NrE   r'   r"   r\  rØ   r  r²   rÚ   )
rU   r   rP   rÄ  r  r
   r¬   Ústatistic_locationr6  Ústatistic_sign)	rY   r.  rÙ   Úx6valÚref_locationÚref_signrz   r  r®   r_   r_   r`   Útest_location_sign‰  s    
z"TestKSOneSample.test_location_signN)r  rC   )rƒ   r„   r…   rï   r  r  r   r#  r-  rì   rð   rñ   rP   r  r  r5  r_   r_   r_   r`   r  H  s   
ýÿr  c                   @   s  e Zd ZdZd4d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„ ƒZejjdd„ ƒZdd„ Zdd„ Zejjdd„ ƒZejjdd„ ƒZejjdd „ ƒZd!d"„ Zejjd#d$„ ƒZd%d&„ Zejjd'd(„ ƒZd)d*„ Zej d+ejejg¡ej d,d-d.d/d0g¡d1d2„ ƒƒZ d3S )5ÚTestKSTwoSamplesz<Tests 2-samples with K-S various sizes, alternatives, modes.r  c           	      C   s4   t j||||d�}t ||g¡}tt |¡|ƒ d S )Nr  )rP   Úks_2samprU   r   r   )	rY   rl  rm  rÙ   r
  r  r–  rß   r…  r_   r_   r`   r  ¡  s    zTestKSTwoSamples._testOnec                 C   sˆ   |   dgdgddd¡ |   dgdgddd¡ |   dgdgddd¡ |   dgdgddd¡ |   dgdgddd¡ |   dgdgddd¡ d S )	Nr   r   rÒ   rŠ   rÖ   r'   rÔ   rs   )r  r  r_   r_   r`   Ú	testSmall¦  s    zTestKSTwoSamples.testSmallc                 C   sž   t  ddg¡}|d }|d }t  dddg¡}|  ||ddd¡ |  ||ddd¡ |  ||d	dd¡ |  ||dd
d¡ |  ||dd
d¡ |  ||d	dd¡ d S )NrŠ   r*  ç{®Gáz„?r±   rÒ   r½   rÖ   r  rÔ   r"  rW  r!  r   ©rU   r   r  ©rY   rœ  Zdata1pZdata1mr�  r_   r_   r`   ÚtestTwoVsThree®  s    zTestKSTwoSamples.testTwoVsThreec                 C   s    t  ddg¡}|d }|d }t  ddddg¡}|  ||ddd¡ |  ||d	dd
¡ |  ||ddd¡ |  ||ddd¡ |  ||d	dd¡ |  ||ddd¡ d S )NrŠ   r*  r9  r±   r)  rÒ   r'   gÞÝÝÝÝÝí?rÖ   gá?rÔ   rÏ  çš™™™™™é?r‹  rV  r#  r   r:  r;  r_   r_   r`   ÚtestTwoVsFourº  s    zTestKSTwoSamples.testTwoVsFourc                 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¡ d S )Nr   r÷   r   r  rÒ   rˆ  g~zÿÿÿÿï?rÖ   gz³;ê.Bí?rÔ   r   rŠ   ç{®Gáz”?gn2IáUÀî?r  )rY   Úx100Z	x100_2_p1Z	x100_2_m1r_   r_   r`   Útest100_100Ç  s    zTestKSTwoSamples.test100_100c                 C   s¤   t  ddd¡}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¡ d S )Nr   r÷   r¿  rú   r  rÒ   gÿñ¯ÿÊ?g@Âß¿î�?rÖ   g}nÝï€?rÔ   r   g¦:[ª³¥Ê?gà]O);’?gÑ«³—);‚?rs   rŠ   r  )rY   r@  Zx110Z
x110_20_p1Z
x110_20_m1r_   r_   r`   Útest100_110Ò  s    zTestKSTwoSamples.test100_110c                 C   s  t jdgd dgd  dgd  dgd  td�}|d }t jdgd dgd  dgd  dgd  td�}t jdgd dgd  dgd  d	gd  td�}|  ||d
dd¡ |  ||ddd¡ |  ||ddd¡ |  ||d
dd¡ |  ||ddd¡ |  ||ddd¡ d S )Nr   r   r    r!   r"   r;   r   rE   r#   rÒ   g      Ô?g�¾^dHÛ?rÖ   gQl6¢ÊyË?rÔ   rs   rŠ   gVdEVdEÖ?g(f“„^ˆ·?gÄû·!ƒˆ§?g‘i�iÀ?gè+© Ï–ã?)rU   r   r+  r  )rY   Zx2233Zx3344Zx2356Zx3467r_   r_   r`   ÚtestRepeatedValuesß  s    222z#TestKSTwoSamples.testRepeatedValuesc                 C   sÚ   t  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d¡ |  ||d dd
d¡ |  ||d d	dd¡ d S )NrŠ   r*  r±   r   rÒ   r½   rÖ   r‹  rÔ   rs   r'   r:  )rY   r�  r_   r_   r`   ÚtestEqualSizesë  s    zTestKSTwoSamples.testEqualSizesc           	   	   C   sb  d\}}d| | d d }t  dd|¡| }t  dd|¡}| j||dd| | ddd	� | j||dd| | dd
d	� | j||dd| | dd
d	� | j||dd| | dd
d	� tƒ �R}d}| t|¡ | j||dd| | ddd	� | j||dd| | ddd	� W 5 Q R X tjdd��:}t d¡ | j||dd| | ddd	� t	|tdƒ W 5 Q R X d S )N)r�  iX  rŠ   r   r   r  rÒ   g     @Ÿ@r  r  r"  rÖ   g½­2JEï?rÔ   g     @@gsW\ncæï?ú)ks_2samp: Exact calculation unsuccessful.rÀ  TrV  rW  ©
rU   r%  r  r   rÕ  rX   rX  rY  rZ  r3  ©	rY   Ún1Ún2Údeltarz   rZ   r^   rí   r  r_   r_   r`   ÚtestMiddlingBoth÷  s"    (
z!TestKSTwoSamples.testMiddlingBothc           	   	   C   sb  d\}}d| | d d }t  dd|¡| }t  dd|¡}| j||dd| | ddd	� | j||dd| | dd
d	� | j||dd| | ddd	� | j||dd| | ddd	� tƒ �R}d}| t|¡ | j||dd| | ddd	� | j||dd| | ddd	� W 5 Q R X tjdd��:}t d¡ | j||dd| | ddd	� t	|tdƒ W 5 Q R X d S )N)rø   éL  rŠ   r   r   r  rÒ   g     È¹@r"  r  r  rÖ   g«¹�“Z¢î?rÔ   g     @�@g @¾J—ñï?rE  rÀ  TrV  rW  rF  rG  r_   r_   r`   ÚtestMediumBoth  s"    (
zTestKSTwoSamples.testMediumBothc                 C   sŠ   d\}}|d }d| | d d }t  dd|¡| }t  dd|¡}|  ||dd	| d
¡ |  ||dd| d¡ |  ||dd	| d¡ d S )N)é'  r¿  rŠ  rŠ   r   r   r  r÷   rÒ   g    `ýê@g      ó<rÖ   g     ˆ�@gé”ò¼‰·ï?rÔ   gi·ÑÂmb£:r  )rY   rH  rI  ÚlcmrJ  rz   rZ   r_   r_   r`   Ú	testLarge"  s    zTestKSTwoSamples.testLargec                 C   s\   t j d¡ t jjdd�}t jjdd�d }| j||dddd	d
� | j||ddddd
� d S )Né@â i¸  rÀ  i¹  r(   rÒ   g�¸Cåæè¼?ç      é<r"  r  rÀ  ©rU   r2  r3  r‘  r  rè   r_   r_   r`   Útest_gh11184-  s
    zTestKSTwoSamples.test_gh11184c                 C   sˆ   t j d¡ t jjdd�}t jjdd�d }| j||dddd	d
� | j||ddddd
� | j||dddd	d
� | j||dddd	d
� d S )NrQ  rN  rÀ  i'  r(   rÒ   g 	_Êr!»?gADà®ß5r"  r  rR  rÀ  rÖ   g×œN#ýyƒ7rÔ   gvqíãw¹¸?rS  rè   r_   r_   r`   Útest_gh11184_bigger5  s    z$TestKSTwoSamples.test_gh11184_biggerc                 C   s„   t j d¡ tdddƒD ]f}t jj|d�}t jj|d dd�}tj||dd	�j}tj||d
d	�j}t|d| ƒ t|d| ƒ qd S )NrQ  rø   ià.  rÀ  rE   r'   ©r�   r�  rÀ  r  r"  r   )	rU   r2  r3  rM  r‘  rP   r7  r«   r   )rY   rz   Zvals1Zvals2rÀ  r"  r_   r_   r`   Útest_gh12999@  s    zTestKSTwoSamples.test_gh12999c           	   	   C   s  d\}}|d }d| | d d }t  dd|¡| }t  dd|¡}| j||dd| d	d
d� | j||dd| ddd� | j||dd| d	dd� |  ||dd| d¡ |  ||dd| d¡ tƒ �J}d}| t|¡ | j||dd| ddd� | j||dd| ddd� W 5 Q R X d S )N)rN  iø*  rŠ  rŠ   r   r   r  rÒ   g     ˜�@gkHYøï?r"  r  gLÆÉ”.øï?rÀ  r  rÖ   g.LbG«2è?rÔ   rn   g¶r?ÖŽþï?rE  )rU   r%  r  r   rÕ  rX   )	rY   rH  rI  rO  rJ  rz   rZ   r^   rí   r_   r_   r`   ÚtestLargeBothL  s    zTestKSTwoSamples.testLargeBothc                 C   s$   d}t  ddgdg¡}t||ƒ d S )Nr�  r   r   r   )rP   r7  r   ©rY   r¯   r®   r_   r_   r`   ÚtestNamedAttributes_  s    z$TestKSTwoSamples.testNamedAttributesc              	   C   sl   ddl m}m} |ddddƒ |ddddƒ tjdd��* tt|dd	ddƒ tt|d
dddƒ W 5 Q R X d S )Nr   )Ú_count_paths_outside_methodÚ!_compute_outer_prob_inside_methodr   rø   ié  rt   r\  rL  iK  rš  )Úscipy.stats._stats_pyr[  r\  rU   r^  rx   ÚFloatingPointError)rY   r[  r\  r_   r_   r`   Útest_some_code_pathse  s        ÿ   ÿz%TestKSTwoSamples.test_some_code_pathsc                 C   s8   t ttjg dgƒ t ttjdgg ƒ t ttjg g ƒ d S rù  )rx   ry   rP   r7  r  r_   r_   r`   Útest_argument_checkingv  s    z'TestKSTwoSamples.test_argument_checkingc                 C   sd   t j d¡ d}tjj|ddd�}|d }tj||ddd� tj||d	dd� tj||d
dd� dS )zEnsure gh-12218 is fixed.éNa¼ i    rs   r   r¤  rÖ   r"  r  rÔ   rÒ   N)rU   r2  r3  rP   rÄ  r�  r7  )rY   rH  Úrvs1Úrvs2r_   r_   r`   Útest_gh12218|  s    zTestKSTwoSamples.test_gh12218c              	   C   sr   t j ttdƒƒ¡}|jdd�d }|jdd�}d}tjt|d��& tj	||dd	�}t
|jd
dd� W 5 Q R X d S )NÚtest_warnings_gh_14019iq  rÀ  r'   iq  z(ks_2samp: Exact calculation unsuccessfulrv   rÔ   rØ   r   r=  r³   )rU   r2  rÃ  Úabsr±  rì   rØ  rX   rP   r7  r
   r«   )rY   rÆ  rœ  r�  rí   r®   r_   r_   r`   re  ‰  s    z'TestKSTwoSamples.test_warnings_gh_14019r.  r/  )rÖ   çš™™™™™@rg  r   )rÔ   çffffff@ry  rK   )rÒ   rg  rg  r   )rÒ   rh  ry  rK   c           	      C   s^   t jdt jd�}| ¡ }||d< tj|||d�}|jdks>t‚|j|ksLt‚|j	|ksZt‚d S )NrE   r;   r"   rØ   r  )
rU   r   r   ÚcopyrP   r7  r¬   r6  r0  r1  )	rY   r.  rÙ   r2  r3  r4  rz   rZ   r®   r_   r_   r`   r5  •  s    
z#TestKSTwoSamples.test_location_signN)r  )!rƒ   r„   r…   rï   r  r8  r<  r>  rA  rB  rC  rD  rì   rð   r'  rK  rM  rP  rT  ÚxslowrU  rW  rX  rZ  r_  r`  rd  re  rñ   rP   r  r7  r5  r_   r_   r_   r`   r6  ž  sJ   








ýÿr6  c                  C   sh  d\} }| |  g||gf}t  ddd¡}t  ddd¡}t  t  ddd¡t  ddd¡g¡}t  t  ddd¡t  ddd¡g¡}tj||dd�\}}t||g| |fƒ tj|j|jdd�\}}t||g|ƒ tj||dd�\}}t||g|ƒ tƒ �T}	t jdd	��< t	j
td
d��" |	 td¡ t dd¡\}}W 5 Q R X W 5 Q R X W 5 Q R X tt  |¡ƒ tt  |¡ƒ d}
tj||dd�}t||
ƒ t  |||g¡}t  |||g¡}tj||dd�\}}tt  |¡| ƒ tt  |¡|ƒ t|jdƒ tjt  |dd¡t  |dd¡dd�\}}tt  |¡| ƒ tt  |¡|ƒ t|jdƒ tttj||dd� tj||ddd�\}}t|d|d  ƒ t|| ƒ tj||ddd�\}}t||d ƒ t|| ƒ t j d¡}tjjddd|d�}t j|d< tjjddd|d�tjjdd|d� }t j|d< t jdd	��  tt ||¡t jt jfƒ W 5 Q R X ttj||d d!�d"ƒ tttj||d#d!� tttj||d$d!� t	j
td
d��" t dddgdddg¡\}}W 5 Q R X tt  |¡|ft jdfƒ t jdd	��l tt dddgdddg¡t jt jfƒ t  dt jgd%dgg¡}tt |t  d&¡¡dt jgdt jgfƒ W 5 Q R X t   d'¡}tttj| !d(¡| !d)¡ƒ d*d+„ }t  "|¡}t j|d d …d,d-…f< t j|d d …d.d/…f< tj||dd d!�\} }tj||dd dd0�\}}t|| d1d2� t jdd	�� t||| |dƒd1d2� W 5 Q R X tj||dd dd0�\}}t|| d1d2� t jdd	�� t||| |dƒd1d2� W 5 Q R X d S )3N)gÆ”uâÿé?gÈµ·IÈÚ?r   r÷   rˆ  gžï§ÆKÿX@r   r=   r[  r\  ro  rv   rÔ  r)  r±   r�  r	  r   rJ  r   rØ   rÔ   ©r>   rÙ   rÖ   ra  r!   rE   éõ  r�  r�  r#  )r�  r�   r�  rp   rq   )ghømÇ#1Ð?gr¦yÌ§œé?rt   ru   rK   rK  rò  )r$   r   )r   r   r    c                 S   s4   | dk r|dks | dkr(|dkr(|d S d|d  S ©Nr   rÔ   rÖ   r   r   r_   ©rž  rÆ   Úaltr_   r_   r`   Úconvert  s     ztest_ttest_rel.<locals>.convertrú   r  rù   rü   r³  r=  rÚ   )#rU   r%  r   rP   Ú	ttest_relr   r7  r   r^  rì   rØ  rX   rÕ  r   r,  r   rL  rf  r   r5  rM  rx   ry   r
   r2  ÚRandomStaterœ  r�  rV   r   r  rs  r   rS   Ú	vectorize)Útrr¡  Útprrb  rc  Úrvs1_2DÚrvs2_2Drž  rÆ   r^   r¯   r®   Úrvs1_3DÚrvs2_3DrÆ  rz   rZ   Úananrp  Ú	converterr_   r_   r`   Útest_ttest_rel§  s¬    ""ÿ.
þ



ÿ
$ÿ&&ÿ
ÿ
ÿ
 ÿ
r|  c                  C   sœ   t jdddg} ddddg}tj| |dd�}tj|| dd�}t|j|j dd� t|j|jdd� t |d	d … | d	d … ¡}t||dd� t|d
dd� d S )Nr*  r±   r)  rŠ   rp   rq   r²   r³   r   )rK  g°rh‘í|Ç?ç-Cëâ6?)rU   rV   rP   rq  r
   r¬   r«   ©rz   rZ   rÕ  rÖ  Úr3r_   r_   r`   Útest_ttest_rel_nan_2nd_arg  s    r€  c                  C   s4   t  g g ¡} t| t jjƒst‚t| tjtjfƒ d S rF  )	rP   rq  r)  Ú	_stats_pyÚTtestResultr6  r   rU   rV   ©rß   r_   r_   r`   Ú#test_ttest_rel_empty_1d_returns_nan.  s    r„  zb, expected_shape)r   r!   r   rC  )r   r   r   )r   r   c                 C   sX   t  d¡}tj|| dd�}t|tjjƒs,t‚t j|t j	d�}t
|j|ƒ t
|j|ƒ d S ©N)r   r   r   rK   r=   r$  )rU   r§  rP   rq  r)  r�  r‚  r6  rg   rV   r   r¬   r«   ©r¾   Zexpected_shaper¸   rß   Zexpected_valuer_   r_   r`   Útest_ttest_rel_axis_size_zero6  s    
r‡  c                  C   sV   t  d¡} t  d¡}tj| |dd�}t|tjjƒs6t‚t|j	j
dƒ t|jj
dƒ d S ©N)r   r$   r   ©r!   r$   r   r   r=   ©r!   r   )rU   r§  rP   rq  r)  r�  r‚  r6  r   r¬   r5  r«   ©r¸   r¾   rß   r_   r_   r`   Ú test_ttest_rel_nonaxis_size_zeroE  s    

rŒ  rÙ   rÒ   rÔ   rÖ   c                 C   sŒ   t j d¡}d}|j|ddd�}|j|ddd�}ddgdt jgt j d	gd
œ}tj||| d�}|jdd�}t|||  ƒ t	|j
|d ƒ d S )Nl   C67l:  rE   r(   r   r¤  gÜZÜ?Y˜þ¿g¦ši{aœÙ?g8Èÿ ëù¿gà€ºÿC•ª?r¥  rØ   r§  r¨  r   )rU   r2  rÃ  r‘  r  rP   rq  rÏ   r
   r   r©  )rÙ   rÆ  rR  rz   rZ   rÍ  r®   rà   r_   r_   r`   Útest_ttest_rel_ci_1dR  s    	
þr�  ztest_fun, argsrE   c              	   C   s6   | |Ž }d}t jt|d�� |jdd� W 5 Q R X d S )Nr«  rv   rE   r¨  )rì   r   ry   rÏ   )Ztest_funr®  r®   rí   r_   r_   r`   Útest_ttest_ci_ivj  s    rŽ  c                 C   s   ddd„}|| |ƒ|||ƒ S )Nr   c                 S   s<   t  | ¡} t j| |d�}t j| |dd�}| j| }|||fS )Nr=   r   rç  )rU   r  rT   ri   r5  )rz   r>   Úmuri   Únobsr_   r_   r`   Ú_statsv  s
    

z_desc_stats.<locals>._stats)r   r_   )rl  rm  r>   r‘  r_   r_   r`   Ú_desc_statsu  s    
r’  c                  C   sÈ  d} d}| |  g||gf}t  ddd¡}t  ddd¡}t  ||g¡}t  ||g¡}tj||dd�\}}t||g| |fƒ ttjt||ƒŽ ||gƒ tj|j|jdd�\}}t||g|ƒ t|j|jƒ}	ttj|	Ž ||gƒ tj||dd�\}}t||g|ƒ t||dd�}	ttj|	Ž ||gƒ t	ƒ �T}
t j
d	d
��< tjtdd��" |
 td¡ t dd¡\}}W 5 Q R X W 5 Q R X W 5 Q R X tt  |¡ƒ tt  |¡ƒ t  |||g¡}t  |||g¡}tj||dd�\}}tt  |¡t  | ¡ƒ tt  |¡|ƒ t|jdƒ tjt  |dd¡t  |dd¡dd�\}}tt  |¡t  | ¡ƒ tt  |¡|ƒ t|jdƒ tttj||dd� tttjft|j|jƒžddiŽ tj||dd�\}}t|d|d  ƒ t|| ƒ tj||dd�\}}t||d ƒ t|| ƒ tj|j|jddd�\}}t|j|jƒ}	ttj|	ddiŽ||gƒ tj|j|jddd�\}}t|j|jƒ}	ttj|	ddiŽ||gƒ t j d¡}tjjddd|d�}t j|d< tjjddd|d�}t j
d	d
��  tt ||¡t jt jfƒ W 5 Q R X ttj||dd�d ƒ tttj||d!d� tttj||d"d� tjtdd��" t dddgdddg¡\}}W 5 Q R X tt  |¡|ft j dfƒ t j
d	d
��l tt dddgdddg¡t jt jfƒ t  dt jgd#dgg¡}tt |t  !d$¡¡dt jgdt jgfƒ W 5 Q R X t j|d d …d d …dd%…f< t j|d d …d d …d&d'…f< d(d)„ }t  "|¡}tj||ddd�\} }tj||dddd*�\}}t|| d+d,� t||| |dƒd+d,� tj||dddd*�\}}t|| d+d,� t||| |dƒd+d,� d S )-Nç	ÌùrÜuñ?g8Mè�Ñ±Ñ?r   r÷   r!   éi   r   r=   r[  r\  ro  rv   rÔ  r)  r±   r	  r   rJ  r   rØ   rÙ   rÔ   rÖ   rk  ra  rE   rl  r�  r�  rp   rq   )gÔò¨uÍ·Ï?g*Ž�Ø,½é?rt   ru   rK   rK  rù   r"   rG   c                 S   s4   | dk r|dks | dkr(|dkr(|d S d|d  S rm  r_   rn  r_   r_   r`   rp  ê  s     ztest_ttest_ind.<locals>.convertr³  r=  rÚ   )#rU   r%  r   rP   Ú	ttest_indr   Úttest_ind_from_statsr’  r7  r   r^  rì   rØ  rX   rÕ  r   r,  rL  r   rf  r   r5  rM  rx   ry   r
   r2  rr  rœ  r�  rV   r   r  rs  rs  )rt  r¡  ru  rc  rb  rv  rw  rž  rÆ   r®  r^   rx  ry  rÆ  rz   rZ   rz  rp  r{  r_   r_   r`   Útest_ttest_ind  sÒ    
ÿþ
ÿ
ÿÿ.þ

ÿÿ

 ÿ ÿ
$ÿ&&ÿ
ÿ
ÿ
r—  c                   @   s8  e Zd ZdZej d¡ e e de d ¡ej de d ¡f¡Z	e e ed ¡d ej ed ¡f¡Z
e d¡Ze d¡d ZddgZddgZej d¡ ejjd	dd
d� dd	¡jZejjdddd�ZddgZddgZdddddgZe	e
ddiefe	je
jddiefe	ddd…f e
ddd…f ddied fe	ddd…f  ¡ e
ddd…f  ¡ ddied fe	e
dddœefe	e
ej d¡ddœefeeddidfeedddœefeei dfe	e
ej d¡ddœefg
Zej de¡dd„ ƒZ d d!„ Z!d"d#„ Z"d$d%„ Z#d&d'„ Z$ej %¡ d(d)„ ƒZ&d*d+„ Z'd,d-„ Z(d.d/„ Z)dS )0ÚTest_ttest_ind_permutationsrú   r   r   r    r÷   rE   r   r   r!   r�  rŽ  r$   çœî£'^P?gCêŒq¤å?g$ûšRµƒå?g=Bõ™¶Æï?g³¤îå?goÅœã–âê?g‡pº�î?gœî£'^Ð?r>   N)r�  r>   Ú	equal_varTrK   )r>   r�  r½   za,b,update,p_dc                 C   sn   d ddœ}d ddddœ}|  |¡ |  |¡ tj||f|Ž\}}tj||f|Ž\}	}
t||	dƒ t|
|ƒ d S )NF©r>   rš  rø   r   )r>   rš  Úpermutationsr�  r!   )ÚupdaterP   r•  r   )rY   r¸   r¾   r�  Úp_dZ	options_aÚ	options_pZstat_ar  Zstat_pr«   r_   r_   r`   Útest_ttest_ind_permutations&  s    
 ÿ

z7Test_ttest_ind_permutations.test_ttest_ind_permutationsc                 C   sˆ  t j d¡ d}t j d|d¡}t j d|d¡}dddœ}|jdd� tj||f|Ž}tj||f|Ž}|jd	d� tj||f|Ž}tj||f|Ž}|jd
d� tj||f|Ž}	tj||f|Ž}
t|j|jƒ t|j|	jƒ t|j|j ƒ t|j|j ƒ t|	j|
j ƒ t|	j	|
j	ƒ t|j	|j	ƒ t|j	|j	ƒ |j	dk}t|j	| |j	|  |	j	| ƒ t|j	|  |j	|   |	j	|  ƒ d S )Nr   r   r   r   rø   )r>   rœ  rÖ   rØ   rÔ   rÒ   r'   ©
rU   r2  r3  r>  r�  rP   r•  r   r¬   r«   )rY   ÚNr¸   r¾   rŸ  Úres_g_abÚres_g_baÚres_l_abÚres_l_baÚres_2_abZres_2_bar  r_   r_   r`   Ú test_ttest_ind_exact_alternative3  s:    

ÿ
ÿz<Test_ttest_ind_permutations.test_ttest_ind_exact_alternativec                 C   sš   t j d¡ d}t j |¡}t j |¡}t ||¡}tj||dd�}tj||dd�}tj||t jd�}|j|jksvt‚|j|jks†t‚|j|jks–t‚d S )Nr   r   rø   ©rœ  )	rU   r2  r3  r>  rP   r•  r  r«   r6  )rY   r¢  r¸   r¾   rõ  rn  ro  r„  r_   r_   r`   Útest_ttest_ind_exact_selection]  s    z:Test_ttest_ind_permutations.test_ttest_ind_exact_selectionc           
      C   s’   t j d¡ t j d¡}t j d¡}t  ||f¡}t|ƒt|ƒ }}d}t|||dƒ\}}}tt|ƒƒ}	|	t|| |ƒks~t	‚t|ƒ|	ksŽt	‚d S )Nr   r   r    rN  T)
rU   r2  r3  r>  rÈ  r	  r   rµ  r   r6  )
rY   r¸   r¾   r»  ÚnaÚnbrœ  Zt_statr  Zn_uniquer_   r_   r`   Ú!test_ttest_ind_exact_distributionk  s    ÿ
z=Test_ttest_ind_permutations.test_ttest_ind_exact_distributionc           	      C   s  t j d¡ d}t j dd|¡}t j d|¡}ddddœ}|jdd	� tj||f|Ž}tj||f|Ž}|jd
d	� tj||f|Ž}tj||f|Ž}t|j|jƒ t|j|j ƒ t|j|j ƒ t|j	|j	 dd|d d   ƒ t|j	|j	 dd|d d   ƒ d S )Nr   r  r   r   rK   rø   )r>   rœ  r�  rÖ   rØ   rÔ   r   rœ  r¡  )	rY   r¢  r¸   r¾   rŸ  r£  r¤  r¥  r¦  r_   r_   r`   Ú#test_ttest_ind_randperm_alternative~  s(    ÿÿz?Test_ttest_ind_permutations.test_ttest_ind_randperm_alternativec           	      C   sB  t j d¡ d}t j |d¡}t j |d¡}dddœ}|jdd� tj||f|Ž}|jdd� tj||f|Ž}|jd	d� tj||f|Ž}t|j|j d
d
|d d
   ƒ |jdk}t	d|j|  |j| dd� t	dd
|j|    |j|  dd� t	d|j|   |j|  dd� t	dd
|j|   |j| dd� d S )Nr   r  r    rô   ©rœ  r�  rÖ   rØ   rÔ   rÒ   r   rœ  r'   r   r?  r³   )
rU   r2  r3  r>  r�  rP   r•  r   r«   r
   )	rY   r¢  r¸   r¾   rŸ  r£  r¥  r§  r  r_   r_   r`   Ú$test_ttest_ind_randperm_alternative2›  s>    
ÿ
 ÿ
 ÿ
 ÿ ÿz@Test_ttest_ind_permutations.test_ttest_ind_randperm_alternative2c           	   	   C   sª  t j d¡ d}t j |d¡}t j |d¡}t j|d< t j|d< t j|d< t j|d< dddœ}|jd	d
� ttdd�� tj	||f|Ž}W 5 Q R X t
ƒ ��}| td¡ |jdd
� tj	||f|Ž}t  |¡jdd�t  |¡jdd�B }tj	|d d …| f |d d …| f f|Ž}t|j| t jƒ t|j| t jƒ t|j|  |jƒ t|j|  |jƒ tj	| ¡ | ¡ f|Ž}t  |j¡�sŠt‚t  |j¡�sœt‚W 5 Q R X d S )Nr   r  r!   )r!   r   )r$   r   )r%   r   rø   r¯  rt   rq   r´  rv   ro   rD  r=   )rU   r2  r3  r>  rV   r�  rx   ry   rP   r•  r   rW   rX   r,  Úanyr   r«   r¬   r
   rÌ  r6  )	rY   r¢  r¸   r¾   rŸ  r®   r^   r  ro  r_   r_   r`   Ú$test_ttest_ind_permutation_nanpolicy½  s2    





$,z@Test_ttest_ind_permutations.test_ttest_ind_permutation_nanpolicyc              	   C   sŠ   t tdd�� tj| j| jdd� W 5 Q R X t tdd�� tj| j| jdd� W 5 Q R X t tdd�� tj| j| jddd	� W 5 Q R X d S )
NzPermutations must berv   rL   r©  r(   z'hello' cannot be usedr   r¥  r¯  )rx   ry   rP   r•  rs  Úb2r¸   r¾   r  r_   r_   r`   Ú'test_ttest_ind_permutation_check_inputsá  s    ÿzCTest_ttest_ind_permutations.test_ttest_ind_permutation_check_inputsc                 C   sN   d}t j |d¡}t j |d¡}tj||dd�j}td|kƒ d|ksJt‚d S )NrE   rú   r   r©  rs   )rU   r2  r>  rP   r•  r«   Úprintr6  )rY   r¢  r¸   r¾   Zp_valuesr_   r_   r`   Ú)test_ttest_ind_permutation_check_p_valuesê  s    zETest_ttest_ind_permutations.test_ttest_ind_permutation_check_p_values)*rƒ   r„   r…   r¢  rU   r2  r3  rB  r   r¸   r¾   rs  r³  rt  Zb3rP   rœ  r�  rS   r7  rb  rc  rž  Zp_d_genZp_d_bigÚtolistrr  rÃ  Úparamsrì   rð   rñ   r   r¨  rª  r­  r®  r'  r°  r²  r´  r¶  r_   r_   r_   r`   r˜  ý  sX   ,(

ÿ ÿ ÿ*2
õ
*
!$	r˜  c                   @   s¢   e Zd Zej ¡ ejjddddœddii gdddgd	�ejjd
ddgd
dgd	�dd„ ƒƒƒZejjddddœddii gdddgd	�ej dddg¡dd„ ƒƒZdS )ÚTest_ttest_ind_commonÚkwdsr  r   r¯  Útrimr#  rœ  Úbasic)Zidsrš  TFZunequal_varc                 C   s¶  t j d¡ t j dddddd¡}t j ddddd¡}tj||fd	d
i|—Ž}d\}}}||d d …|d d …dd d …f }	|d d …dd d …|d d …f }
tj|	|
fd	di|—Ž}t|j|d d …||d d …f |jƒ t|j|d d …||d d …f |jƒ t  	t  
|d¡d
d¡}t  	t  
|d¡d
d¡}|jd d… }t  |¡}t  |¡}tdd„ |D ƒŽ D ]B}|| }|| }tj||fd	di|—Ž}|j||< |j||< �qVt||jƒ t||jƒ d S )Nr   r!   r    r#   r   r"   r$   r   r>   rL   )r   r   r   rK  ©r   r   r   r   r   r   rK   ©r!   r   r    r   r   r   c                 s   s   | ]}t |ƒV  qd S rF  rL  rG  r_   r_   r`   Ú	<genexpr>  s     z=Test_ttest_ind_common.test_ttest_many_dims.<locals>.<genexpr>)rU   r2  r3  r>  rP   r•  r   r¬   r«   rM  Útiler5  rs  r   r
   )rY   rº  rš  r¸   r¾   r®   rI  rJ  r@  rs  r³  ro  rz   rZ   r5  Ú
statisticsÚpvaluesÚindicesÚxiÚyir„  r_   r_   r`   Útest_ttest_many_dims÷  s6    
 ÿÿ


z*Test_ttest_ind_common.test_ttest_many_dimsr>   rK   c           
   
   C   sò   t jjddd� d¡}t jjddd� d¡}t j|d d d< t j|d d d< t  t j|| |d	�¡}tƒ �N}t jd
d��6 | 	t
d¡ | 	t
d¡ tj||fd|i|—Ž}W 5 Q R X W 5 Q R X t  |j¡}t||ƒ t  |j¡}	t|	|ƒ d S )NrE   )r!   r   rE   rÀ  rt  r   r   r   r"   r=   r[  r\  z'invalid value encountered in less_equalro  r>   )rU   r2  Úrandintr‚  rV   r,  r'  r   r^  rÕ  rX   rP   r•  r«   r   r¬   )
rY   rº  r>   r¸   r¾   r…  r^   r®   Zp_nansZstatistic_nansr_   r_   r`   Útest_nans_on_axis   s    ÿ,
z'Test_ttest_ind_common.test_nans_on_axisN)	rƒ   r„   r…   rì   rð   r'  rñ   rÆ  rÈ  r_   r_   r_   r`   r¹  ô  s&    ÿþÿ# ÿþr¹  c                   @   s\  e Zd Zdddgdddgddd	gd
ddddddgdddgddd	gd
ddddddgdddgdddgdddddddddddgddddddd d!d"d#d$gd%d&d	gd'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:gd;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNgdOdPd	ggZej dQe¡dRdS„ ƒZdTdU„ ZdVdW„ Z	ej dXdY¡dZd[„ ƒZ
d\d]„ Zej d^d_ddg¡d`da„ ƒZdbS )cÚTest_ttest_trimr   r   r   r$  r  çÍÌÌÌÌÌ@çú9‚(á?çøe¡Ä÷å¿r#  r8  g33333`@rG   g33333ó^@gö(\�ÂP@re  gfffffÚ‡@g—BŒM)u„?g¯îÌ]@gyàþ¶déº?g	ÿs5v¨@g{®GázÔ?r  r±   çffffffþ?r~  r!  r-   çš™™™™™@r   r*   r'   ç333333@r|  rŒ  çÍÌÌÌÌÌ@r{  gn4aÆ‚•g?ç‡ý^üÀgü,¿¡
ë¿gÎmãËÁ?gãÙi”ÃI@gE|Š�x!ä¿gí¯vwQá?gl­õfP¤ò¿g‘®_Ñ)Ÿ¶¿g¯XG~’õò?g=šn¡×@g8$œ³‘mù¿g({ðìºú¿g]ç:èmÇÓ?gùYvÒû Àgb‘²©©×?gb¶	œªð¿gSTÃŸ}â¿g9¾’yí¿g.äÏ¿v“ñ?g¹Þº‹ÅiÚ?g	'XÒ@â÷¿gá>²_\ô?g hO§ò?gau?Ú@g×Œg+ŠÒó?gÂ:éØœ^î¿g†‡z54ñ¿gŠ7–f©ñ?g±áDO%î@g›#†xG@gÖ\ÉéF³Ú?gÙûž¢4Eð?g÷’ÿnfè¿gÝ>P"…Û¿gƒ�‡uX@gvŸˆêR¨ù?g%š›Êýéà?g2YÜdzè¿g€o‰ãëø?gih¨öŽßõ?gn¡úÂò?gÒÚ!÷n®u?gúJ+bÉÀza,b,pr,tr,trimc                 C   s6   t j|||dd�\}}t||dd� t||dd� dS )a  
        Using PairedData's yuen.t.test method. Something to note is that there
        are at least 3 R packages that come with a trimmed t-test method, and
        comparisons were made between them. It was found that PairedData's
        method's results match this method, SAS, and one of the other R
        methods. A notable discrepancy was the DescTools implementation of the
        function, which only sometimes agreed with SAS, WRS2, PairedData and
        this implementation. For this reason, most comparisons in R are made
        against PairedData's method.

        Rather than providing the input and output for all evaluations, here is
        a representative example:
        > library(PairedData)
        > a <- c(1, 2, 3)
        > b <- c(1.1, 2.9, 4.2)
        > options(digits=16)
        > yuen.t.test(a, b, tr=.2)

            Two-sample Yuen test, trim=0.2

        data:  x and y
        t = -0.68649512735573, df = 3.4104431643464, p-value = 0.5361949075313
        alternative hypothesis: true difference in trimmed means is not equal
        to 0
        95 percent confidence interval:
         -3.912777195645217  2.446110528978550
        sample estimates:
        trimmed mean of x trimmed mean of y
        2.000000000000000 2.73333333333333
        F©r»  rš  r²   r³   N©rP   r•  r
   )rY   r¸   r¾   r¡  rt  r»  r¬   r«   r_   r_   r`   Útest_ttest_compare_rQ  s     z$Test_ttest_trim.test_ttest_compare_rc                 C   sr   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g}t j||ddd�\}}t|ddd� t|ddd� d S )NrG   rC   ra  rü   rõ  é,   rN   r	  r  é   rb  g
×£p=
·?FrÒ  gRb×övà?rÜ   r³   gŸçOÕiå?rÓ  ©rY   r¸   r¾   r¬   r«   r_   r_   r`   Útest_compare_SASu  s
     z Test_ttest_trim.test_compare_SASc                 C   sh   dddddddddddg}ddd	d
dddddddg}t j||dd�\}}t|ddd� t|ddd� dS )aÞ  
        The PairedData library only supports unequal variances. To compare
        samples with equal variances, the multicon library is used.
        > library(multicon)
        > a <- c(2.7, 2.7, 1.1, 3.0, 1.9, 3.0, 3.8, 3.8, 0.3, 1.9, 1.9)
        > b <- c(6.5, 5.4, 8.1, 3.5, 0.5, 3.8, 6.8, 4.9, 9.5, 6.2, 4.1)
        > dv = c(a,b)
        > iv = c(rep('a', length(a)), rep('b', length(b)))
        > yuenContrast(dv~ iv, EQVAR = TRUE)
        $Ms
           N                 M wgt
        a 11 2.442857142857143   1
        b 11 5.385714285714286  -1

        $test
                              stat df              crit                   p
        results -4.246116897032513 12 2.178812829667228 0.00113508833897713
        r  r$  r±   rÍ  r~  r!  r-   rÎ  r   r*   r'   rÏ  r|  rŒ  rÐ  r{  r#  ©r»  gþ‡ÐÒç˜R?ç»½×Ùß|Û=r³   g–ý^üÀNrÓ  r×  r_   r_   r`   Útest_equal_var„  s
    zTest_ttest_trim.test_equal_varz	alt,pr,tr))rÖ   gjÎœ>5ôï?rÑ  )rÔ   gn4aÆ‚•W?rÑ  c                 C   sl   dddddddddddg}ddd	d
dddddddg}t j||dd|d�\}}t||dd� t||dd� dS )zõ
        > library(PairedData)
        > a <- c(2.7,2.7,1.1,3.0,1.9,3.0,3.8,3.8,0.3,1.9,1.9)
        > b <- c(6.5,5.4,8.1,3.5,0.5,3.8,6.8,4.9,9.5,6.2,4.1)
        > options(digits=16)
        > yuen.t.test(a, b, alternative = 'greater')
        r  r$  r±   rÍ  r~  r!  r-   rÎ  r   r*   r'   rÏ  r|  rŒ  rÐ  r{  r#  F)r»  rš  rÙ   rÚ  r³   NrÓ  )rY   ro  r¡  rt  r¸   r¾   r¬   r«   r_   r_   r`   Útest_alternativesž  s    ÿ
z!Test_ttest_trim.test_alternativesc              	   C   st   d}t t|d��  tjddgddgddd� W 5 Q R X d}t t|d��$ tjddgdtjdgdd	d
� W 5 Q R X d S )Nz7Permutations are currently not supported with trimming.rv   r   r   r   r#  )r»  rœ  z4not supported by permutation tests or trimmed tests.rp   )r»  rr   )rx   ry   rP   r•  rU   rV   )rY   rw   r_   r_   r`   Útest_errors_unsupported²  s    $z'Test_ttest_trim.test_errors_unsupportedr»  gš™™™™™É¿c              	   C   s8   d}t t|d�� tjddgddg|d� W 5 Q R X d S )Nz/Trimming percentage should be 0 <= `trim` < .5.rv   r   r   rÙ  )rx   ry   rP   r•  )rY   r»  rw   r_   r_   r`   Útest_trim_bounds_error¼  s    z&Test_ttest_trim.test_trim_bounds_errorN)rƒ   r„   r…   r¸  rì   rð   rñ   rÔ  rØ  rÛ  rÜ  rÝ  rÞ  r_   r_   r_   r`   rÉ  =  sˆ   ÿ  ÿ  ÿ  þ
            ý           ý  ùö
#ÿ

rÉ  c            
   	   C   s  t j d¡ t j dddddd¡} t j ddddd¡}t| |fd	d
�}t  | d¡} t  |d d¡}tdd„ |jD ƒŽ D ]†}|\}}}}}}	|| jd	 k rÆ| ||||||	f |||||||	f ksüt‚qv|||||| jd	  ||	f |||||||	f ksvt‚qvd S )Nr   r!   r    r   r   r"   r$   r   rL   r=   r½  )N.r¾  c                 s   s   | ]}t |ƒV  qd S rF  rL  rG  r_   r_   r`   r¿  Í  s     z.test__broadcast_concatenate.<locals>.<genexpr>)	rU   r2  r3  r>  r   rÀ  r   r5  r6  )
r¸   r¾   r»  ÚindexrI  rJ  r@  ÚlrP  rR  r_   r_   r`   Útest__broadcast_concatenateÃ  s    .rá  c               	   C   sº  d} d}d}d}t j| |dd�\}}t||g||gƒ tt jt| |ƒddiŽ||gƒ d} d	}d
}t j| |dd�\}}t||g||gƒ tt jt| |ƒddiŽ||gƒ d}d}d}d}|| g||gf}t ddd¡}	t ddd¡}
t ddd¡}t ||
g¡}t |
|g¡}t j||
ddd�\}}t||g||fƒ tt jt||
ƒddiŽ||fƒ t j||	ddd�\}}t||g||fƒ tt jt||	ƒddiŽ||fƒ t j|j|jddd�\}}t||g|ƒ t|j|jƒ}tt j|ddiŽ||fƒ t j||ddd�\}}t||g|ƒ t||dd�}tt j|ddiŽ||fƒ d}t j||
ddd�}t	||ƒ t 
|||g¡}t 
|||g¡}t j||ddd�\}}tt |¡t |¡ƒ tt |¡|ƒ t|jdƒ t||dd�}t j|ddiŽ\}}tt |¡t |¡ƒ tt |¡|ƒ t|jdƒ t jt |dd¡t |dd¡ddd�\}}tt |¡t |¡ƒ tt |¡|ƒ t|jdƒ tt |dd¡t |dd¡dd�}t j|ddiŽ\}}tt |¡t |¡ƒ tt |¡|ƒ t|jdƒ tjtdd��& t jdddgdddgdd�\}}W 5 Q R X tt |¡|ftjdfƒ tjdd��t tt jdddgdddgdd�tjtjfƒ t dtjgddgg¡}tt j|t d ¡dd�dtjgdtjgfƒ W 5 Q R X d S )!N)r   r   r   )r$  r  rÊ  rË  rÌ  F©rš  rš  )r   r   r   r    gÌ„Jþê?g* ÿªýÊ¿r“  g÷‹@Í[å?g�Ï‰Ò±Ñ?gþÞh�Gà?r   r÷   rü   r!   r”  r   r›  r=   r�  r	  r   rJ  ro  rv   r[  ©r-  rK   rK  )rP   r•  r   r–  r’  rU   r%  r   r7  r   rL  r   rf  r   r5  rM  rì   rØ  rX   r  r^  rV   rs  )r¸   r¾   r¡  rt  rž  rÆ   Z	tr_uneq_nZ	pr_uneq_nru  Zrvs3rc  rb  rv  rw  r®  r¯   r®   rx  ry  rz  r_   r_   r`   Útest_ttest_ind_with_uneq_varÕ  sÔ    ÿþÿþ
ÿþý
ÿþý
ÿþ
ÿþ
 þ
 ÿ*
ÿÿrä  c                  C   s”   t jdddg} ddddg}tj| |dd�}tj|| dd�}t|j|j dd� t|j|jdd� t || d	d … ¡}t||dd� t|d
dd� d S )Nr*  r±   r)  rŠ   rp   rq   r²   r³   r   )g¹8£³ HÀg“WØ@…·ª?)rU   rV   rP   r•  r
   r¬   r«   r~  r_   r_   r`   Útest_ttest_ind_nan_2nd_argB  s    ÿrå  c                  C   s4   t  g g ¡} t| t jjƒst‚t| tjtjfƒ d S rF  )	rP   r•  r)  r�  ÚTtest_indResultr6  r   rU   rV   rƒ  r_   r_   r`   Ú#test_ttest_ind_empty_1d_returns_nanX  s    rç  c                 C   sX   t  d¡}tj|| dd�}t|tjjƒs,t‚t j|t j	d�}t
|j|ƒ t
|j|ƒ d S r…  )rU   r§  rP   r•  r)  r�  ræ  r6  rg   rV   r   r¬   r«   r†  r_   r_   r`   Útest_ttest_ind_axis_size_zero`  s    
rè  c                  C   sV   t  d¡} t  d¡}tj| |dd�}t|tjjƒs6t‚t|j	j
dƒ t|jj
dƒ d S rˆ  ©rU   r§  rP   r•  r)  r�  ræ  r6  r   r¬   r5  r«   r‹  r_   r_   r`   Ú test_ttest_ind_nonaxis_size_zeroo  s    

rê  c                  C   sV   t  d¡} t  d¡}tj| |dd�}t|tjjƒs6t‚t|j	j
dƒ t|jj
dƒ d S )N)r   r#   r   r‰  r   r=   rŠ  ré  r‹  r_   r_   r`   Ú2test_ttest_ind_nonaxis_size_zero_different_lengths|  s    

rë  c                  C   sr   t  ddg¡t  ddg¡ } }t  ddg¡t  ddg¡ }}t  ddg¡t  dd	g¡ }}t | |||||¡ d S )
Nr   r   r   r    r!   é‚   éŒ   r÷   é–   )rU   r   rP   r–  )Zmean1Zmean2Zstd1Zstd2Znobs1Znobs2r_   r_   r`   Útest_gh5686Š  s    rï  c               	   C   s.   t jdddddddd�} t| tjtjgƒ d S )Nr   r"   Frâ  )rP   r–  r   rU   rV   rƒ  r_   r_   r`   Ú%test_ttest_ind_from_stats_inputs_zero’  s    rð  c               	   C   sz  d\} }}t jjdd| ||fd�}t j|d d …d d …d d …f t ||f¡dd�\}}t j|d d …d d …d d …f ddd�\}}t  |d d …ddf d¡\}}	t||dd	� t|d
 |dd	� t|j	||fƒ t j|d d …d d …d d …f t | d|f¡dd�\}}t j|d d …d d …d d …f ddd�\}}t  |dd d …df d¡\}}	t||dd	� t|d
 |dd	� t|j	| |fƒ t j|d d …d d …d d …f t | |df¡dd�\}}t j|d d …d d …d d …f ddd�\}}t  |ddd d …f d¡\}}	t||dd	� t|d
 |dd	� t|j	| |fƒ t  dddgd¡\}
}tt 
|
¡|ftjdfƒ dd„ }t |¡}t  |d d …d d …d d …f d¡\}}t j|d d …d d …d d …f ddd�\}
}|||dƒ}t||ƒ t|
|ƒ t j|d d …d d …d d …f ddd�\}
}|||dƒ}t||ƒ t|
|ƒ tjdd��` tt  dddgd¡tjtjfƒ t dtjgddgg¡}tt  |d¡dtjgdtjgfƒ W 5 Q R X tj|dd…dd…dd…f< t j|d d …d d …d d …f ddd�\}}t j|d d …d d …d d …f dddd�\}
}|||dƒ}t||ƒ t|
|ƒ t j|d d …d d …d d …f dddd�\}
}|||dƒ}t||ƒ t|
|ƒ d S )N)rE   rù   rú   r!   rE   rŽ  r   r=   r   rC   r?   rÏ  r   c                 S   s4   | dk r|dks | dkr(|dkr(|d S d|d  S rm  r_   rn  r_   r_   r`   rp  ¹  s     z%test_ttest_1samp_new.<locals>.convertrÖ   rØ   rÔ   r[  rã  rK   r   r    r$   rp   rq   r³  )rP   rœ  r�  r‘  rU   rI  r   r   r   r5  rf  r  rs  r
   r^  rV   r   )rH  rI  Zn3Zrvn1rß  ré  rà  Úp2rá  Úp3rž  rÆ   rp  r{  rt  r¡  Zpcrz  r_   r_   r`   Útest_ttest_1samp_new˜  sf    
4*6*6*
&*

*

 ,* ÿ


 ÿ

ró  c               	   C   s°   t j d¡} | jdd�}d}| jdd�}tjt|d�� tj||dd� W 5 Q R X | jd	d�}tj||dd�}|jj	d
ks~t
‚t j| ¡ dd�}tj||dd�}t|jdƒ d S )Nl   iIýÔ}pC )r   rù   rú   rÀ  z%`popmean.shape\[axis\]` must equal 1.)r!   r   rú   rv   rK  )r¦  r>   )r!   r   rú   )r!   rú   r=   gš™™™™™©?)rU   r2  rÃ  rì   r   ry   rP   r‘  r¬   r5  r6  rF  rÏ   r
   r«   )rÆ  rz   rí   r¦  r®   rà   r_   r_   r`   Útest_ttest_1samp_popmean_arrayâ  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S )ÚTestDescribec                 C   s²   t ƒ �Z}tjdd��B tjtdd��( | td¡ t d¡\}}}}}}W 5 Q R X W 5 Q R X W 5 Q R X t	|dƒ t	|dƒ t	|dƒ t 
|¡s’t‚t 
|¡s t‚t 
|¡s®t‚d S )	Nr[  r\  ro  rv   rÔ  r)  r   )r)  r)  )r   rU   r^  rì   rØ  rX   rÕ  rP   Údescriber   r,  r6  )rY   r^   rR  rl  rP  r  ÚskÚkurtr_   r_   r`   Útest_describe_scalarø  s    ÿ4


z!TestDescribe.test_describe_scalarc                 C   sÚ  t  t  d¡t  dd¡f¡}dddddgddddgf }}t  ddddg¡}t  ddddg¡}d	gd
 }dgd
 }t |¡\}}	}
}}}t||ƒ t|	|ƒ t|
|ƒ t||ƒ t||dd� t||dd� tj|j	dd�\}}	}
}}}t||ƒ t|	|ƒ t|
|ƒ t||ƒ t||dd� t||dd� t  
d¡}t j|d< d\}}d}d}d}d}tj|dd�\}}	}
}}}t||ƒ t|	|ƒ t|
|ƒ t||ƒ t||ƒ t||dd� tttj|dd� tttj|dd� d S )Nr‡  ©r   r    r   r!   rŠ   r*  çffffffö?r!  çH,p½ Ú?r    çTUUUUUý¿rH   r?   r   r=   rn   r%   )r%   )rs   r  r)  r.   rs   g¯Gáz®ó¿rp   rq   rt   ru   )rU   rB  rI  rg   r   rP   rö  r   r   r7  r   rV   rx   ry   ©rY   rz   ÚncZmmcZmcÚvcZskcZkurtcrR  rl  rP  r  r÷  rø  r_   r_   r`   Útest_describe_numbers  sH    
















z"TestDescribe.test_describe_numbersc                 C   s"   t  t d¡¡}d}t||ƒ d S )Nr!   )r�  ÚminmaxrT   ÚvarianceÚskewnessr€  )rP   rö  rU   r   r   )rY   rv  r¯   r_   r_   r`   Útest_describe_result_attributes-  s    z,TestDescribe.test_describe_result_attributesc                 C   sà   t  t  d¡t  dd¡f¡}dddddgddddgf }}t  ddddg¡}t  ddddg¡}d	gd
 }dgd
 }tj|dd�\}}	}
}}}t||ƒ t|	|dd� t|
|dd� t||dd� t	||dd� t	||dd� d S )Nr‡  rú  r   r!   rŠ   r*  rû  g¸…ëQ¸Î?rü  r    rý  r   rb   r²   rÚ   rH   r?   )
rU   rB  rI  rg   r   rP   rö  r   r
   r   rþ  r_   r_   r`   Útest_describe_ddof3  s    


zTestDescribe.test_describe_ddofc           	      C   s–   t  t  d¡t  dd¡f¡}d\}}d}d}d}d}tj|d d	�}t|j|ƒ t|j	|ƒ t|j
|ƒ t|j|ƒ t|j|d
d� t|j|d
d� d S )Nr‡  rú  r   )rú   )rŠ   r*  rû  g³a¤+Ð?gE,p½ Ú?gUUUUUUý¿r=   rH   r?   )rU   rB  rI  rg   rP   rö  r   r�  r   r  rT   r  r   r  r€  )	rY   rz   Ze_nobsZe_minmaxZe_meanZe_varZe_skewZe_kurtr¸   r_   r_   r`   Útest_describe_axis_noneB  s    z$TestDescribe.test_describe_axis_nonec                 C   s   t ttjg ƒ d S rF  )rx   ry   rP   rö  r  r_   r_   r`   Útest_describe_emptyV  s    z TestDescribe.test_describe_emptyN)	rƒ   r„   r…   rù  r  r  r  r  r  r_   r_   r_   r`   rõ  ÷  s   )rõ  c               
   C   s8  t jtdd��0 tttjdƒ tttjdƒ tttjdƒ W 5 Q R X d\} }}d\}}}d|d  |d  }}|d d|d   }}	t	 
d¡d }
d	}tt |
¡| |fƒ tt |
¡|ƒ tt |
¡||fƒ ttj|
d
d�||fƒ ttj|
dd�||fƒ tt |
¡|ƒ tt |
¡||fƒ ttj|
d
d�||fƒ ttj|
dd�||	fƒ tt |
¡|ƒ tjjdddd�}tj|dd�j}t|ddd� tjjddd�}tj|dd�j}t|dƒ ttj|
d d�| |fƒ ttj|
d d�||fƒ ttj|
d d�||fƒ t	 d¡}
t	j|
d< t	jdd�� tt |
¡t	jt	jfƒ W 5 Q R X d}ttj|
dd�|ƒ t	j|dd…< tj|dd�\}}tj|dd
d�\}}tj|ddd�\}}t||dd � t||dd � t|d|d  dd � t||d dd � t	jdd!�� tttj|
d"d� W 5 Q R X tttj|
d#d� tttjttd$ƒƒd#d� t	 d%¡}
t	j|
d&< t	jdd!�� tt |
¡t	jt	jfƒ W 5 Q R X d'}ttj|
dd�|ƒ t	j|dd(…< tj|d d… dd�\}}tj|d d… dd
d�\}}tj|d d… ddd�\}}t||dd � t||dd � t|d|d  dd � t||d dd � tttj|
d"d� tttj|
d#d� tttjttd(ƒƒd#d� t	jdd!�� tt |
¡t	jt	jfƒ W 5 Q R X d)}ttj|
dd�|ƒ tttj|
d"d� tttj|
d#d� d*d+d,d-d+d.d/d+d+d0g
}t	 d1d2„ t|ƒD ƒ¡}
tt |
¡d d3k d4ƒ d S )5Nro  rv   r)  )g²M¦áÆc@gÐO±ÿ?g{\Èá›¿Œ¿)g2$£ÚÿÁ?g×’eóþ`¨?gÇƒÊK@¤ï?r   r   )rK  rK   r   r   r   r   rK  rK   r   r   r   r   rK  rK   r   r   r   r   rK  rK   r   r   r   r   r�  rÔ   rØ   rÖ   rN  é{   )r¸   r�   r�  rs   r!   r?   ©r�   r�  r=   rn   r%   r[  r\  )ge©G¡Kð?gZ^<ÒÃ½Ó?rp   rq   rE   r÷   r³  r²   r³   rã  rt   ru   r$   g      >@rÖ  )gË9+—%Àg�?*òÝ—?rú   )gÒÅwGwç@g³{8NÄ¦?r1  r   é:   r#   é)   rû   é§   c                 S   s   g | ]\}}t  ||¡‘qS r_   )rU   rg   )rH  rI  r»  r_   r_   r`   rK  È  s     z'test_normalitytests.<locals>.<listcomp>r9  T)rì   rØ  rX   rx   ry   rP   ÚskewtestÚkurtosistestZ
normaltestrU   r   r   r   Zskewnormr�  r«   r   Zlaplacer   rV   r^  r   r
   r›  rM  rE  Ú	enumerater   )Z	st_normalZst_skewZst_kurtZ	pv_normalZpv_skewZpv_kurtZpv_skew_lessZpv_kurt_lessZpv_skew_greaterZpv_kurt_greaterrz   r¯   rr  rÝ   rs  r…  rÛ  rÆ   ZzlÚplZzgZpgr  r_   r_   r`   Útest_normalitytestsZ  sÂ    

ÿÿÿÿ
ÿÿÿ

"ÿ

"ÿÿ
ÿ
ÿ"r  c                   @   sV   e Zd Zej d¡ ej dd¡\ZZe	j
 ddddg¡dd	„ ƒZd
d„ Zdd„ ZdS )ÚTestRankSumsr   r   rE   rÙ   rÔ   rÖ   rÒ   c                 C   s<   t j| j| j|d�j}t j| j| jd|d�j}t||ƒ d S )NrØ   F)Zuse_continuityrÙ   )rP   Úranksumsrz   rZ   r«   Úmannwhitneyur
   )rY   rÙ   rn  ro  r_   r_   r`   Útest_ranksums_result_attributesÑ  s    ÿÿz,TestRankSums.test_ranksums_result_attributesc                 C   s   t  | j| j¡}t|dƒ d S )Nr�  )rP   r  rz   rZ   r   )rY   r®   r_   r_   r`   Útest_ranksums_named_resultsÚ  s    z(TestRankSums.test_ranksums_named_resultsc              	   C   s0   t tdd�� tj| j| jdd� W 5 Q R X d S )Nzalternative must be 'less'rv   ru   rØ   )rx   ry   rP   r  rz   rZ   r  r_   r_   r`   Útest_input_validationÞ  s    z"TestRankSums.test_input_validationN)rƒ   r„   r…   rU   r2  r3  r>  rz   rZ   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 )
ÚTestJarqueBerac                 C   s˜  t j d¡ t j ddd¡}t j dd¡}t j dd¡}tt |¡d t |¡j	ƒ tt |¡d t |¡j
ƒ tt |¡d t |¡j	ƒ tt |¡d t |¡j
ƒ tt |¡d t |¡j	ƒ tt |¡d t |¡j
ƒ tt |¡d t |¡d kƒ tt |¡j
t |¡j
kƒ tt |¡d t |¡d kƒ tt |¡j
t |¡j
kƒ tt |¡d t |¡d kƒ tt |¡j
t |¡j
kƒ d S )Nr!  r   r   rN  rN  )rU   r2  r3  r‘  rÖ  Zrayleighr   rP   Újarque_berar¬   r«   r   ©rY   rz   rZ   rÛ  r_   r_   r`   Útest_jarque_bera_statsä  s        z%TestJarqueBera.test_jarque_bera_statsc                 C   sæ   t j d¡ t j ddd¡}t t|ƒ¡ }\}}t t|ƒ¡ }\}}t | dd¡¡ }\}	}
t	||  koš|	  koš|j
  koš|j
  koš|j
kn  ƒ t	||  koÚ|
  koÚ|j  koÚ|j  koÚ|jkn  ƒ d S )Nr!  r   r   rN  r   éPÃ  )rU   r2  r3  r‘  rP   r  r›  ÚtuplerS   r   r¬   r«   )rY   rz   Zjb_test1ZJB1ré  Zjb_test2ZJB2rñ  Zjb_test3ZJB3rò  r_   r_   r`   Útest_jarque_bera_array_likeü  s    @z*TestJarqueBera.test_jarque_bera_array_likec                 C   s   t ttjg ƒ d S rF  )rx   ry   rP   r  r  r_   r_   r`   Útest_jarque_bera_size  s    z$TestJarqueBera.test_jarque_bera_sizec           	      C   s¾   t j ttdƒƒ¡}|jdd�}ttj|d d�t | ¡ ¡ƒ tj|dd�}t |dd d …f ¡\}}t |dd d …f ¡\}}t	|j
||gƒ t	|j||gƒ tj|jdd�}t	||ƒ d S )NZ
JarqueBera)r   rc  rÀ  r=   r   r   )rU   r2  rÃ  rf  r±  r   rP   r  rÌ  r
   r¬   r«   r7  )	rY   rÆ  rz   r®   Ús0rè  Ús1ré  ZresTr_   r_   r`   r�  
  s    ÿzTestJarqueBera.test_axisN)rƒ   r„   r…   r  r  r   r�  r_   r_   r_   r`   r  ã  s   r  c                  C   s   t  d¡} tttj| ƒ d S )Nr­  )rU   r   rx   ry   rP   r  rú  r_   r_   r`   Útest_skewtest_too_few_samples  s    
r#  c                  C   s   t  d¡} tttj| ƒ d S )Nr)  )rU   r   rx   ry   rP   r  rú  r_   r_   r`   Ú!test_kurtosistest_too_few_samples"  s    
r$  c                   @   s¬   e Zd Z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gZdd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2gZd3Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z	d<d=„ Z
d>d?„ Zd@S )AÚTestMannWhitneyUg®Þ	ÂUå3@g^û�Â–‹3@g™òtÇ3@g½¢™]o·5@g·z³S4@gÔtÆ< 4@gM	‚«X3@gXÄmCók4@gLìo&£3@gfÉ˜ÊâÇ2@gžý{m;^3@ga A$|3@gMÑ¢Á_À4@gŽÌ#é3@g19T•_3@gg§„Cÿ2@gúqïR4@g˜Kk/±4@gè—Ü�Š3@gÌZ†û2@g„_
À²ƒ3@g«ÝÀ$`Ó3@g
ŒÃx„4@g3ƒ#Ð»5@g;VND÷ò1@g >®ƒåH2@g—µâr4@g³»ØyÜ¤2@gèà’?4@g=bòÉ‡Ž3@gÔäìpG3@g„Lä:jþ0@gýî„¨Š2@g«¹JNnC1@gRÀ;`(3@g+Pi,ƒ2@g6:Z›2@gZ"3=ùÕ2@gF	uSa	3@gXâÒ€2@g¥ÙX3^83@g§2¡Õ1@g÷��J2@gZ)Eû‡ª2@g¦U8ø3@g°»°50@g�ˆ³Ô†3@gFz‰™33@gøèãz3@g¨¢²Ú´3@rC   c           	      C   sÌ   t j| j| jdd�\}}t j| j| jdd�\}}t j| j| jdd�\}}t j| j| jdd�\}}t||ƒ t||ƒ t||kƒ t|dƒ t|dƒ t|dƒ t|dƒ t|d| jd� t|d| jd� d S )	NrÔ   rØ   rÖ   éò  r
  g=_A§ÿï?r4   glP†z.?©rP   r  rQ   ÚYr   r   r	   r5   ©	rY   Úu1ré  Úu2rñ  Úu3rò  Zu4Zp4r_   r_   r`   Útest_mannwhitneyu_one_sided;  s    





z,TestMannWhitneyU.test_mannwhitneyu_one_sidedc                 C   sb   t j| j| jdd�\}}t j| j| jdd�\}}t||ƒ t|dƒ t|dƒ t|d| jd� d S )NrÒ   rØ   r&  r
  glP†z.?r4   ©rP   r  rQ   r(  r   r	   r5   ©rY   r*  ré  r+  rñ  r_   r_   r`   Útest_mannwhitneyu_two_sidedK  s    


ÿz,TestMannWhitneyU.test_mannwhitneyu_two_sidedc           	      C   sÔ   t j| j| jddd�\}}t j| j| jddd�\}}t j| j| jddd�\}}t j| j| jddd�\}}t||ƒ t||ƒ t||kƒ t|dƒ t|dƒ t|dƒ t|dƒ t|d| jd� t|d	| jd� d S )
NFrÔ   rØ   rÖ   r&  r
  gii5‡£ÿï?r4   g¬2¥¥2?r'  r)  r_   r_   r`   Ú&test_mannwhitneyu_no_correct_one_sidedU  s*    ÿ
ÿ
ÿ
ÿ






z7TestMannWhitneyU.test_mannwhitneyu_no_correct_one_sidedc                 C   sf   t j| j| jddd�\}}t j| j| jddd�\}}t||ƒ t|dƒ t|dƒ t|d| jd� d S )NFrÒ   rØ   r&  r
  g¬2¥¥2?r4   r.  r/  r_   r_   r`   Ú&test_mannwhitneyu_no_correct_two_sidedi  s    ÿ
ÿ



ÿz7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sidedc              ö   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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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gô¡}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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ddddddddddddgž¡}ttj||dd�dƒ ttj||dd�dƒ ttj||d	d�d
ƒ d S )NrŠ   r*  r±   rÔ   rØ   )ç     •Ð@g €?Õ¹•ý>rÖ   )r3  gÜ&)EÅÿï?rÒ   )r3  g�Ž?Õ¹•?)rU   r   r
   rP   r  rè   r_   r_   r`   Útest_mannwhitneyu_onesu  s                                                                                                                                                                                                                         ï                                                                                                                                      õÿÿÿz'TestMannWhitneyU.test_mannwhitneyu_onesc                 C   s&   d}t j| j| jdd�}t||ƒ d S )Nr�  rÔ   rØ   )rP   r  rQ   r(  r   rY  r_   r_   r`   Ú#test_mannwhitneyu_result_attributes   s    z4TestMannWhitneyU.test_mannwhitneyu_result_attributesN)rƒ   r„   r…   rQ   r(  r5   r-  r0  r1  r2  r4  r5  r_   r_   r_   r`   r%  )  sj                      ù	            ü
+r%  c               "   C   sÔ   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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dddddddg"}t t | |¡d d d!ƒ d"}t | |¡}t||ƒ t|j|jƒ d S )#Nr   r   gš™™™™™-@gš™™™™™+@gÍÌÌÌÌÌ(@rU  r}  rh  g333333@çffffff@g333333@r*   r  çš™™™™™	@r±   rî  r)   rÓ  gffffff@çÍÌÌÌÌÌ @g333333û?r(   gÍÌÌÌÌÌô?rf  r$  r=  r  rW  r'   r#  r  gÂ/õó¦"×?r!   r©   )r   rP   Zpointbiserialrr   r   rª   r¬   )rz   rZ   r¯   r®   r_   r_   r`   Útest_pointbiserial§  sF    :    ÿ                   þ
r9  c                  C   sŒ  t  dddg¡} t | ¡}dddg}t|d |ƒ t  ddddg¡}t |¡}t  d	ddd	g¡}t|d |ƒ t | |¡\}}t||d ƒ t||d ƒ t | || ¡\}}}t||d ƒ t||d ƒ t||d ƒ t  d
¡} t  dddddgdddddgg¡}tt | d|  ¡|dd� td
dƒ}	t  d
dddddg¡}
t  	|	|
¡}t  ddddddg¡}t  	||
¡}t |¡}t|d |dd� d S )Nr   r   r    r#   rK  r   r"   r%   r  r!   gÒîãªªª@gI»�«ªªð?g&í>®ªªÚ¿gµû¸ªªª5@gÒîãªªª@gI»�«ªªú¿r$   r?   rF   gŸ«­Ø_v	@gù1æ®%äá?g"ýöuàœ¡?g”‡…ZÓ¼ù?gÿ!ýöu @g³q¬‹&@)
rU   r   rP   Zobrientransformr
   r   r   r   rM  rz  )rl  rß  r…  rm  rà  r¸   r¾   r»  rß   ÚvaluesÚrepsr»  Ztransformed_valuesr_   r_   r`   Útest_obrientransform¸  sB    



ÿÿ

  ÿ
r<  rä   c                 C   s0   t j| |||d�}t|||d� t|j|ƒ d S ©N)r>   r<   ÚweightsrÚ   )rP   Úgmeanr
   r   r<   ©Ú
array_likerö  r>   r<   rÛ   r>  rz   r_   r_   r`   Úcheck_equal_gmeanã  s    rB  c                 C   s0   t j| |||d�}t|||d� t|j|ƒ d S r=  )rP   Úhmeanr
   r   r<   r@  r_   r_   r`   Úcheck_equal_hmeanë  s    rD  c                 C   s2   t j| ||||d�}t|||d� t|j|ƒ d S r=  )rP   Úpmeanr
   r   r<   )rA  ró  rö  r>   r<   rÛ   r>  rz   r_   r_   r`   Úcheck_equal_pmeanò  s    rF  c                   @   s„   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚTestHarMeanc                 C   s   dddg}d}t ||ƒ d S ©Nr   r   r   ©rD  ©rY   r¸   rö  r_   r_   r`   Útest_0ú  s    
zTestHarMean.test_0c              
   C   sD   ddddddddd	d
g
}d}t ||ƒ ddddg}d}t ||ƒ d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   ç¶=b¹#A@r   r   r   r    gº…ëQ¸þ?rI  rJ  r_   r_   r`   Útest_1d_listÿ  s    
zTestHarMean.test_1d_listc                 C   s0   t  ddddddddd	d
g
¡}d}t||ƒ d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   rL  ©rU   r   rD  rJ  r_   r_   r`   Útest_1d_array	  s    zTestHarMean.test_1d_arrayc                 C   s&   t  ddg¡}d}tt |¡|ƒ d S )Nr   r   rs   )rU   r   r   rP   rC  rJ  r_   r_   r`   Útest_1d_array_with_zero  s    z#TestHarMean.test_1d_array_with_zeroc                 C   s"   t  dddg¡}tttj|ƒ d S )Nr   r   rK   )rU   r   rx   ry   rP   rC  r{  r_   r_   r`   Ú!test_1d_array_with_negative_value  s    z-TestHarMean.test_1d_array_with_negative_valuec                 C   s4   ddddgddddgd	d
ddgg}d}t ||ƒ d S ©NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   r¿  éx   gmôW¶UC@rI  rJ  r_   r_   r`   Útest_2d_list  s    "zTestHarMean.test_2d_listc                 C   s:   ddddgddddgd	d
ddgg}d}t t |¡|ƒ d S rR  )rD  rU   r   rJ  r_   r_   r`   Útest_2d_array  s    "zTestHarMean.test_2d_arrayc                 C   sF   ddddgddddgd	d
ddgg}t  ddddg¡}t||dd� d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   r¿  rS  çU|ÏŠ á6@g4.=²�C@çJQº6LsJ@çë’ÌE]P@r   r=   rN  rJ  r_   r_   r`   Útest_2d_axis0%  s    "zTestHarMean.test_2d_axis0c                 C   sL   ddddgddddgd	d
ddgg}t  ddddg¡}ttj|dd�|ƒ d S )NrE   r   r  r  r  rQ  r½  rS  r7  r÷   r¿  rS  rV  rs   rW  rX  r=   ©rU   r   r
   rP   rC  rJ  r_   r_   r`   Útest_2d_axis0_with_zero+  s    "z#TestHarMean.test_2d_axis0_with_zeroc                 C   sD   ddddgddddgd	d
ddgg}t  dddg¡}t||dd� d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   r¿  rS  g3333333@çú¯÷…O@çâŽy@óY@r   r=   rN  rJ  r_   r_   r`   Útest_2d_axis10  s    "zTestHarMean.test_2d_axis1c                 C   sJ   ddddgddddgd	d
ddgg}t  dddg¡}ttj|dd�|ƒ d S )NrE   r   r  r  r  rQ  r½  rS  r7  r÷   r¿  rS  rs   r\  r]  r   r=   rZ  rJ  r_   r_   r`   Útest_2d_axis1_with_zero6  s    "z#TestHarMean.test_2d_axis1_with_zeroc                 C   s,   dddg}dddg}d}t |||dd� d S )Nr   rE   r"   r!   r   çñhãˆµøä>©r>  rÛ   rI  ©rY   r¸   r>  rö  r_   r_   r`   Útest_weights_1d_list;  s    

z TestHarMean.test_weights_1d_listc                 C   s\   t  ddgddgddgg¡}t  ddgddgddgg¡}t  ddg¡}t||d|dd	� d S )
Nr   r!   rE   r"   r   r   r   r`  ©r>   r>  rÛ   rN  rb  r_   r_   r`   Útest_weights_2d_array_axis0C  s    z'TestHarMean.test_weights_2d_array_axis0c                 C   sX   t  dddgdddgg¡}t  dddgdddgg¡}t  ddg¡}t||d|dd	� d S )
Nr   rE   r"   r#   r!   r   r   r`  rd  rN  rb  r_   r_   r`   Útest_weights_2d_array_axis1K  s    z'TestHarMean.test_weights_2d_array_axis1c                 C   sJ   t  ddddg¡}t jjddddgddddgd	�}d}t|||d
d� d S )Nr   rE   r"   rÎ  r!   r   r   r   r  r`  ra  )rU   r   rÇ  rD  rb  r_   r_   r`   Útest_weights_masked_1d_arrayS  s     z(TestHarMean.test_weights_masked_1d_arrayN)rƒ   r„   r…   rK  rM  rO  rP  rQ  rT  rU  rY  r[  r^  r_  rc  re  rf  rg  r_   r_   r_   r`   rG  ù  s   
rG  c                   @   s|   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestGeoMeanc                 C   s   dddg}d}t ||ƒ d S rH  ©rB  rJ  r_   r_   r`   rK  ]  s    
zTestGeoMean.test_0c              
   C   sN   ddddddddd	d
g
}d}t ||ƒ ddddg}tddƒ}t ||dd� d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   çs©ÑÅ¤F@r   r   r   r    rò  rÏ  r=  rÚ   )rB  r   rJ  r_   r_   r`   rM  b  s    

zTestGeoMean.test_1d_listc                 C   sZ   t  ddddddddd	d
g
¡}d}t||ƒ tddddgtƒ}tddƒ}t||td� d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   rj  r   r   r   r    rò  rÏ  r;   )rU   r   rB  r   r   rJ  r_   r_   r`   rO  l  s    

zTestGeoMean.test_1d_arrayc                 C   s4   ddddgddddgd	d
ddgg}d}t ||ƒ d S ©NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   r¿  rS  g/,$»qJ@ri  rJ  r_   r_   r`   rT  w  s    "zTestGeoMean.test_2d_listc                 C   s8   ddddgddddgd	d
ddgg}d}t t|ƒ|ƒ d S rk  )rB  r   rJ  r_   r_   r`   rU  }  s    "zTestGeoMean.test_2d_arrayc                 C   sŒ   ddddgddddgd	d
ddgg}t  ddddg¡}t||dd� tddddgddddgddddggƒ}tddddgƒ}t||ddd� d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   r¿  rS  gù4@ÌÒÈA@g5ÇÁ¾€©H@g`8|wÐ­N@gm~Ó&Ô+R@r   r=   r   r   r   r    r=  ©r>   rÛ   ©rU   r   rB  rJ  r_   r_   r`   rY  ƒ  s    "&zTestGeoMean.test_2d_axis0c                 C   s’   ddddgddddgd	d
ddgg}t  dddg¡}t||dd� tddddgddddgddddggƒ}tddƒ}t|||gƒ}t||ddd� d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   r¿  rS  gDŠ" 6"6@gñ¡ÑcP@g
øÒ§Z@r   r=   r   r   r    rò  rÏ  r=  rl  )rU   r   rB  r   )rY   r¸   rö  r  r_   r_   r`   r^  �  s    "&
zTestGeoMean.test_2d_axis1c                 C   s$   t dddgƒ}d}t||dd� d S )Ng}Ã”%­I²TrÌ   gœu ˆ<ä7~rþ  rÚ   )r   rB  rJ  r_   r_   r`   Útest_large_values˜  s    zTestGeoMean.test_large_valuesc              
   C   sB   ddddddddd	d
g
}d}t jdd�� t||ƒ W 5 Q R X d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r   rs   r[  rã  )rU   r^  rB  rJ  r_   r_   r`   Útest_1d_list0�  s    zTestGeoMean.test_1d_list0c                 C   sH   t  ddddddddd	d
g
¡}d}t jdd�� t||ƒ W 5 Q R X d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r   rs   r[  )Údivide)rU   r   r^  rB  rJ  r_   r_   r`   Útest_1d_array0¤  s    zTestGeoMean.test_1d_array0c              
   C   sD   ddddddddd	d
g
}t j}t jdd�� t||ƒ W 5 Q R X d S )NrE   rú   r  r  r  rQ  r½  rS  r7  rK   r[  r\  )rU   rV   r^  rB  rJ  r_   r_   r`   Útest_1d_list_neg«  s    zTestGeoMean.test_1d_list_negc                 C   s4   dddddg}dddddg}d}t |||dd	� d S ©
Nr   r   r   r    r!   r"   çGZ*oG8@r`  ra  ri  rb  r_   r_   r`   rc  ²  s    z TestGeoMean.test_weights_1d_listc                 C   s@   t  dddddg¡}t  dddddg¡}d}t|||dd	� d S rs  rm  rb  r_   r_   r`   Útest_weights_1d_arrayº  s    z!TestGeoMean.test_weights_1d_arrayc                 C   sV   t  ddddddg¡}t jjddddddgddddddgd�}d	}t|||d
d� d S )Nr   r   r   r    r!   r"   r   r  rt  r`  ra  )rU   r   rÇ  rB  rb  r_   r_   r`   rg  Â  s    (z(TestGeoMean.test_weights_masked_1d_arrayN)rƒ   r„   r…   rK  rM  rO  rT  rU  rY  r^  rn  ro  rq  rr  rc  ru  rg  r_   r_   r_   r`   rh  \  s   

rh  c                
   @   sx  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gddgddggdfe ddgddgddgg¡dfg¡dd„ ƒZe
j dddddgddddgddddggdfdd ddgddddgddddggdfg¡d!d"„ ƒZe
j dddddgddddgddddggdfdd ddgddddgddddggdfg¡d#d$„ ƒZd%d&„ Zd'd(„ Ze
j d)d*d+d,g¡d-d.„ ƒZd/S )0ÚTestPowMeanc                 C   s   t  | | ¡| j d|  S rù  )rU   r'  r�   ©r¸   rÆ   r_   r_   r`   Úpmean_referenceÍ  s    zTestPowMean.pmean_referencec                 C   s$   t  || |  ¡t  |¡ d|  S rù  )rU   r'  )r¸   rÆ   r>  r_   r_   r`   Úwpmean_referenceÐ  s    zTestPowMean.wpmean_referencec              	   C   sf   t jtdd�� t dddgdg¡ W 5 Q R X t jtdd��  t dddgt dg¡¡ W 5 Q R X d S )NzPower mean only defined forrv   r   r   r   r   )rì   r   ry   rP   rE  rU   r   r  r_   r_   r`   Útest_bad_exponentÓ  s    zTestPowMean.test_bad_exponentc              
   C   sh   ddddddddd	d
g
d }}t  t |¡|¡}t|||ƒ ddddgd }}t d¡}t|||ƒ d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   r*   r   r   r   r    r.   )rv  rx  rU   r   rF  r€   ©rY   r¸   rÆ   rö  r_   r_   r`   rM  Ù  s    
zTestPowMean.test_1d_listc                 C   s@   t  ddddddddd	d
g
¡d }}t ||¡}t|||ƒ d S )NrE   rú   r  r  r  rQ  r½  rS  r7  r÷   g      À)rU   r   rv  rx  rF  r{  r_   r_   r`   rO  â  s    $zTestPowMean.test_1d_arrayc                 C   s.   t  ddg¡d }}d}tt ||¡|ƒ d S )Nr   r   rK   rs   )rU   r   r   rP   rE  r{  r_   r_   r`   rP  ç  s    z#TestPowMean.test_1d_array_with_zeroc              	   C   s@   t  dddg¡d }}tjtdd�� t ||¡ W 5 Q R X d S )Nr   r   rK   g®Gáz®ó?zPower mean only defined if allrv   )rU   r   rì   r   ry   rP   rE  )rY   r¸   rÆ   r_   r_   r`   rQ  ì  s    z-TestPowMean.test_1d_array_with_negative_valuerw  rE   rú   r  rQ  r7  r÷   rè  r'   c                 C   s"   t  t |¡|¡}t|||ƒ d S rF  )rv  rx  rU   r   rF  r{  r_   r_   r`   Útest_2d_axisnoneñ  s    zTestPowMean.test_2d_axisnoner  r  r½  rS  r¿  rS  r   c                    s4   ‡ ‡fdd„t tˆ d ƒƒD ƒ}tˆ ˆ|dd� d S )Nc              
      s6   g | ].‰ t  t ‡‡ fd d„ttˆƒƒD ƒ¡ˆ¡‘qS )c                    s   g | ]}ˆ | ˆ ‘qS r_   r_   rG  )r¸   rJ  r_   r`   rK    s     z=TestPowMean.test_2d_list_axis0.<locals>.<listcomp>.<listcomp>)rv  rx  rU   r   rM  r	  rN  rw  rQ  r`   rK     s
   ý  ÿz2TestPowMean.test_2d_list_axis0.<locals>.<listcomp>r   r=   )rM  r	  rF  r{  r_   rw  r`   Útest_2d_list_axis0ú  s    üzTestPowMean.test_2d_list_axis0c                    s&   ‡ fdd„|D ƒ}t |ˆ |dd� d S )Nc                    s   g | ]}t  t |¡ˆ ¡‘qS r_   )rv  rx  rU   r   )rH  Za_©rÆ   r_   r`   rK    s     z2TestPowMean.test_2d_list_axis1.<locals>.<listcomp>r   r=   )rF  r{  r_   r~  r`   Útest_2d_list_axis1  s    zTestPowMean.test_2d_list_axis1c                 C   sD   dddgd }}dddg}t  t |¡||¡}t||||dd� d S )	Nr   rE   r"   gÞƒBÊÀó¿r!   r   r`  ra  )rv  ry  rU   r   rF  ©rY   r¸   rÆ   r>  rö  r_   r_   r`   rc    s    
z TestPowMean.test_weights_1d_listc                 C   s\   t  ddddg¡d }}t jjddddgddddgd	�}t j||d
�}t||||dd� d S )Nr   rE   r"   rÎ  r   r!   r   r   r  ©r>  r`  ra  )rU   r   rÇ  ÚaveragerF  r€  r_   r_   r`   rg    s     z(TestPowMean.test_weights_masked_1d_array)r>   Úfun_namerÆ   )Nry  g3öˆEÊÀ#@)r   r?  r   )r   rC  rK   c                    s~   |dkr‡ fdd„}n
t t|ƒ}t ddgddgddgg¡}t ddgddgd	dgg¡}||||d
�}t|ˆ |||dd� d S )Nry  c                    s   t  | ˆ |¡S rF  )rv  ry  )r¸   r>   r>  r~  r_   r`   Úfun%  s    z.TestPowMean.test_weights_2d_array.<locals>.funr   r!   rE   r"   r   r   )r>   r>  r`  rd  )ÚgetattrrP   rU   r   rF  )rY   r>   rƒ  rÆ   r„  r¸   r>  rö  r_   r~  r`   Útest_weights_2d_array  s    
z!TestPowMean.test_weights_2d_arrayN)rƒ   r„   r…   rx  ry  rz  rM  rO  rP  rQ  rì   rð   rñ   rU   r   r|  r}  r  rc  rg  r†  r_   r_   r_   r`   rv  Ë  sL   	ÿþ
$$ÿþ
	$$ÿþ
þþrv  c                   @   sœ   e Zd Ze d¡d ZdZe ddd¡Zdd„ Z	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#S )$ÚTestGeometricStandardDeviationrò  r   gvé aòZ@r   r   r    c                 C   s   t  | j¡}t|| jƒ d S rF  )rP   ÚgstdÚarray_1dr
   Úgstd_array_1d©rY   Úgstd_actualr_   r_   r`   rO  5  s    z,TestGeometricStandardDeviation.test_1d_arrayc                 C   s    t  t| jƒ¡}t|| jƒ d S rF  )rP   rˆ  r  r‰  r
   rŠ  r‹  r_   r_   r`   Ú test_1d_numeric_array_like_input9  s    z?TestGeometricStandardDeviation.test_1d_numeric_array_like_inputc              	   C   s(   t jtdd�� t d¡ W 5 Q R X d S )NzInvalid array inputrv   z3This should fail as it can not be cast to an array.)rì   r   ry   rP   rˆ  r  r_   r_   r`   Ú,test_raises_value_error_non_array_like_input=  s    zKTestGeometricStandardDeviation.test_raises_value_error_non_array_like_inputc              	   C   s4   t jtdd�� t t | jdg¡¡ W 5 Q R X d S )NúNon positive valuerv   r   ©rì   r   ry   rP   rˆ  rU   r#  r‰  r  r_   r_   r`   Ú"test_raises_value_error_zero_entryA  s    zATestGeometricStandardDeviation.test_raises_value_error_zero_entryc              	   C   s4   t jtdd�� t t | jdg¡¡ W 5 Q R X d S )Nr�  rv   rK   r�  r  r_   r_   r`   Ú&test_raises_value_error_negative_entryE  s    zETestGeometricStandardDeviation.test_raises_value_error_negative_entryc              	   C   s6   t jtdd�� t t | jtjg¡¡ W 5 Q R X d S )NzInfinite valuerv   )	rì   r   ry   rP   rˆ  rU   r#  r‰  r  r  r_   r_   r`   Ú!test_raises_value_error_inf_entryI  s    z@TestGeometricStandardDeviation.test_raises_value_error_inf_entryc                 C   sF   t ddddgtjdddggƒ}tj|dd�}t|t  dtjg¡ƒ d S )Nr   rû   r   r   r=   r    )r   rU   rV   rP   rˆ  r
   )rY   r¸   rŒ  r_   r_   r`   Útest_propagates_nan_valuesM  s    z9TestGeometricStandardDeviation.test_propagates_nan_valuesc              	   C   s2   t jtdd�� tj| j| jjd� W 5 Q R X d S )NzDegrees of freedom <= 0rv   rb   )rì   r   ry   rP   rˆ  r‰  r�   r  r_   r_   r`   Ú)test_ddof_equal_to_number_of_observationsR  s    zHTestGeometricStandardDeviation.test_ddof_equal_to_number_of_observationsc                 C   s    t j| jd d�}t|| jƒ d S )Nr=   )rP   rˆ  Úarray_3dr
   rŠ  r‹  r_   r_   r`   Útest_3d_arrayV  s    z,TestGeometricStandardDeviation.test_3d_arrayc                 C   s"   t j| jdd�}t|ddgƒ d S )Nr@  r=   g~ßdÀþ@g<ë…È
Šó?)rP   rˆ  r–  r
   r‹  r_   r_   r`   Útest_3d_array_axis_type_tupleZ  s    z<TestGeometricStandardDeviation.test_3d_array_axis_type_tuplec                 C   sF   t j| jdd�}t ddddgddd	d
gddddgg¡}t||ƒ d S )Nr   r=   g¢ÁÄ¶?ˆ@gQ¾”ßÓ«@gµÖŒ÷@gÊ×Ÿ7R@g%È€‚ª@gÂ–¤òŠe@gv6ÈB5 @gœ ã_·•þ?gÇÛE£è ý?gÞ©³»ñû?gkÌŠYôú?g%:ŒÔú?©rP   rˆ  r–  rU   r   r
   ©rY   rŒ  Úgstd_desiredr_   r_   r`   Útest_3d_array_axis_0^  s    


ýz3TestGeometricStandardDeviation.test_3d_array_axis_0c                 C   s<   t j| jdd�}t ddddgddd	d
gg¡}t||ƒ d S )Nr   r=   gNÃÊî²ó@g§85@g§�'Ä¥ñþ?gwtœhçâû?gHnÆaÛXô?gGè¦ô?gBu•ÕÒó?gƒŒ Ešó?r™  rš  r_   r_   r`   Útest_3d_array_axis_1g  s    

þz3TestGeometricStandardDeviation.test_3d_array_axis_1c                 C   s8   t j| jdd�}t dddgdddgg¡}t||ƒ d S )	Nr   r=   gtüƒ80ý?g‘ÐÑ–—ó?gæÐÿúò?gÛ˜]è~ñ?g—mT6¿(ñ?g³	Gòð?r™  rš  r_   r_   r`   Útest_3d_array_axis_2o  s    þz3TestGeometricStandardDeviation.test_3d_array_axis_2c                 C   sb   t j | jdk| j¡}tj|dd�}tj| jdd�}dddgdddgg}t||ƒ t|j|ƒ d S )Nrû   r   r=   r   r   )	rU   rÇ  Zmasked_wherer–  rP   rˆ  r
   r   r  )rY   rÇ  rŒ  r›  r  r_   r_   r`   Útest_masked_3d_arrayw  s    
z3TestGeometricStandardDeviation.test_masked_3d_arrayN)rƒ   r„   r…   rU   r   r‰  rŠ  rS   r–  rO  r�  rŽ  r‘  r’  r“  r”  r•  r—  r˜  rœ  r�  rž  rŸ  r_   r_   r_   r`   r‡  /  s"   	r‡  c              
   C   s¬   d}d}t j d¡}| dd|f¡}|| dd|f¡ }| dd|f¡}t|||ƒD ]R\}}}	tjt|d�� t	j
|||	| d�}
W 5 Q R X |
t	j|||	| d�jksTt‚qTd S )	Nzk'binom_test' is deprecated in favour of 'binomtest' from version 1.7.0 and will be removed in Scipy 1.12.0.rE   l	   }l³6wIK&ÏWåw^?9u r÷   r   r   rv   rØ   )rU   r2  rÃ  ZintegersrÄ  r  rì   rØ  rÙ  rP   Z
binom_testÚ	binomtestr«   r6  )rÙ   r£  r  rÆ  rQ   r¢  ÚPrz   rR  rÆ   r®   r_   r_   r`   Útest_binom_test_deprecation€  s    r¢  c                  C   sª   t  t  ddd¡t  ddd¡t  ddd¡f¡} d}d	}d
d
dddddddddddddg}t| |ƒD ](\}}tt |||¡j|dd| d� qbtt ddd¡jddd� d S )Nr  r#  r!   r  gÍÌÌÌÌÌä?r§  gffffffî?rl  iÂ  rs   g»¿s ÖÑ g‚ÕG|G{ðg	ÙÉºM>6g>
zªÍtt+g#ÓŒR´M/gF×¸fzâ¤2gšUÁ8u¥5g´ÎíâË8M8gÐ¤)ØBa?g%£ªŸ‡Õ¾?g*+a£5ì?g·øö›Å›?gÚ’Jç|åÅ>rG   zfail forp=%f)r5   Úerr_msgr  r÷   gVèÝ¶3;r4   )rU   rÈ  r%  r  r	   rP   r   r«   )ÚpprR  rz   rÇ  rÆ   r®   r_   r_   r`   Útest_binomtest�  s:    þ      ú ÿþr¥  c                     sÞ   ddgdddgddddgdddddgddddddgdd	d
dd
d	dgddddddddg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gg
} t ddƒD ]4‰ ‡ fdd„t ˆ d ƒD ƒ}t|| ˆ d  dd� q¤d S ) NrŠ   r'   rÏ  r&  rý  r(  ç      Ø?r)  g      Ì?ç      æ?r%  g      Ý?g      €?g      ²?g     €Ò?ç     @ç?g      p?g      ¤?g      Ç?g     @à?g      `?g      –?g      ¼?g      Ö?ç      è?r   rF   c                    s   g | ]}t  |ˆ d ¡j‘qS )r'   )rP   r   r«   )rH  r  ©r@  r_   r`   rK  »  s     z#test_binomtest2.<locals>.<listcomp>rE   r?   )rM  r   )ro  rn  r_   rª  r`   Útest_binomtest2§  sB    
ÿ  ÿ
    ÿ
    þór«  c               \   C   sî  dd„ t ddƒD ƒ} t| t t| ƒt¡ƒ 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ddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^gZ¡}t dd_d`dadbdcdddedfddgdhdidjdkdldmdnddodpdqdrdsdtdudvd dwdxdydzd{d|d}d~d)dd€d�d‚dƒd„d…d†d2d‡dˆd‰dŠd‹dŒd�dŽd;d�d�d‘d’d“d”d•d–dDd—d˜d™dšd›dœd�dždMdŸd d¡d¢d£d¤d¥d¦dVd§d¨d©dªd«d¬d­d®gZ¡}d¯d„ t ddƒD ƒ}d°d„ t ddƒD ƒ}t||d±d²� t||d±d²� d S )³Nc              	   S   s4   g | ],}t d dƒD ]}t ||| d| ¡j‘qqS )r   rF   rŠ   ©rM  rP   r   r«   ©rH  r  r@  r_   r_   r`   rK  Â  s     ÿz#test_binomtest3.<locals>.<listcomp>r   rF   r'   grÇqÇá?g     €â?glÞqŠŽäâ?gx0f¥Ñ#ã?g%d)’MOã?g   	oã?gÀ¹ß6‡ã?gÊ:¾X@šã?rý  gàs¦–wå?g    €æ?gR'jMVæ?gEƒÅÇf†æ?g¶F5a§æ?gAéQU¿æ?g'W®æ…Ñæ?gk¼å˜Îßæ?r§  gÒ
Å†Bç?g  €�½ç?g€µ$·Üþç?g{dŸ•U'è?gDà:½çBè?gÀ¯wŽæVè?gR0àNfè?gOž‚¸÷qè?r¨  g[ƒk¦^è?g €T+Ëè?gÊO°‚é?gggªh(é?gî·PÔ-@é?g´ôO°Qé?g×Ç}ö^é?gVÿ7“_ié?r©  gäÔþ‡e$é?gþÿùÑ€†é?gó#‰>ºé?g5Íz@Úé?gô:÷ðé?g�fÈÿé?gzPÀºê?g ¼Ý ê?g     Èè?gg*)·,¸é?g}ãA _ê?g}–æaâAê?gHÛ]×@_ê?g�
y7sê?gÂP‘G¬�ê?g>)\R Œê?gÄjc‚6•ê?güÿÿÿÿKé?gäoð; ,ê?g!æO0ïê?g�í“õ¬ê?gì¹Ù}eÇê?gôŠ5ñÙê?g?„!A^çê?gNÅ/#Šñê?g›Æ*ƒùê?g    @·é?gÏéŒñ‰ê?gŠßñÀØê?g—…¢¥3ë?g.1Íë?gdT\1-ë?gt0W5È9ë?g¢ŽºoQCë?gXÔ4ÌÊJë?g    ê?gÙ
ù€Øê?gf?Cè¤"ë?gä\ã6ÑIë?g´—º4bë?g|Ø$orë?gÍÍWNS~ë?g¸¢ùT‡ë?gXnõcŽë?g   ˜\ê?gY\ÖÆë?gp ¶^aë?g“X-Kš†ë?g®#c¬–�ë?g��
3­ë?g7é5Q¸ë?gMJ[¿Áë?gP8ýRÂÇë?gw	í%´—Ð?g     ÀÐ?gãS ŒgÐÐ?g²±v^«ØÐ?gÔ*uCiÝÐ?g  ÀaàÐ?gžöŒƒ]âÐ?g¯E9QÁãÐ?g/¡½„öÚ?g     ûÚ?g	x­²&~Û?gÉ#ò´ŸÒÛ?g5üB�Ü?g	¦AÅ'9Ü?gÁ»†pžZÜ?gWV¤$uÜ?gqº–Ib‰ß?g  @«Nà?g1Ó÷®Y›à?g°ÒäÑ5Ìà?gOŒ¨îà?gc»-ñá?gk¦Áöøá?g Ü)á?glMÊV–á?gÿÿ¢?$â?gâšTÝ*râ?gÅCqRv£â?gÀr¨‹xÅâ?g¢òÏ‰ZÞâ?gE©xàYñâ?gö<ƒÈT ã?gJ9Ï½dèâ?g `Ô–™tã?g’T�ÿóÀã?gEáðzñã?gù×Qä?g¬7‰C<*ä?g‘¿æ¢<ä?gÿ~Ä Kä?g¹Ù8ìã?g~È�EŸtä?g¬â¿’¾ä?g€Ð<vûìä?gHEì:Õå?g8ÉZ$å?g†ÙbÂº5å?gvýÒá£Cå?gÍ`Yëw»ä?gA?$ß?å?gÈEÑ=‡å?g„4¸ë³å?gàôÚ3‰Òå?g•{G9Ôèå?gªpåýÉùå?g½âH æ?gúòz6få?gÂ¯ÉøFæå?g–Ø(é+æ?g¶	ÞÍ$Væ?gq^wõ•sæ?g!­‰æ?gXÌNùJ™æ?gK©Ü¦æ?g4ÄPª´õå?g‘<ÍìÃqæ?gdVÕè;´æ?gÓy´Ýæ?g$‘wúæ?gU<vO­ç?gÉMÜXç?g	È™z§*ç?giÀqS°pæ?gªšMMâèæ?g0çV$)ç?g]
yi/Qç?gûê‹lç?gÃö«�l€ç?g‘ß3È†�ç?gÑ¾_‘c›ç?c              	   S   s8   g | ]0}t d dƒD ] }t |d || d| ¡j‘qqS ©r   rF   r   rŠ   r¬  r­  r_   r_   r`   rK    s     ÿc              	   S   s8   g | ]0}t d dƒD ] }t |d || d| ¡j‘qqS r®  r¬  r­  r_   r_   r`   rK    s     ÿrH   r?   )rM  r   rU   rI  r	  r+  r   r   )r„  Zbinom_testm1Zbinom_testp1Zres4_p1Zres4_m1r_   r_   r`   Útest_binomtest3¿  sˆ   ÿ	                                                             ã(                                                              äÿÿr¯  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestTrimc                 C   sr  t  d¡}tt  t |d¡¡t  d¡ƒ tt  t |d¡¡t  d¡ƒ tt  tj|ddd�¡t  dd¡ƒ tt  tj|d	dd�¡t  d
d¡ƒ tt |d¡g ƒ ttj|ddd�g ƒ tt g d¡g ƒ ttjg d	dd�g ƒ tt g d¡g ƒ t  d¡ dd¡}t  dd¡ dd¡}d}tj|dd|d�}tt j||d�|ƒ d}tj|jdd|d�}tt j||d�|jƒ d S )NrF   r  rE   r#  r%   Úleft)Útailr   çtÑE]tÑ?r   rŠ   r"  rò  r"   r    r!   r   )r²  r>   r=   r   )rU   r   r   ÚsortrP   Ztrim1rS   r7  )rY   r¸   rÍ  r>   Ztrimmedr_   r_   r`   Ú
test_trim1  s,    

ÿ
ÿzTestTrim.test_trim1c                 C   s(  t  d¡}tt  t |d¡¡t  dd¡ƒ tt  t |d¡¡t  ddddd	d
dg¡ƒ tt  t t  d¡ d	d¡d¡¡t  dd¡ dd¡ƒ tt  t t  d¡ dd	¡jd¡¡t  ddddgddddgg¡ƒ t	t
tjt  d¡ dd	¡jdƒ tt g d¡g ƒ tt g d¡g ƒ tt g d¡g ƒ d S )NrF   r³  r   r$   r#  r   r    r!   r"   r#   rò  rú   r½   rC   r%   rù   rB   r"  r  )rU   r   r   r´  rP   Ztrimbothr   rS   r7  rx   ry   r{  r_   r_   r`   Útest_trimboth;  s(    
 ÿ ÿÿþ ÿzTestTrim.test_trimbothc           
      C   s,  t  ddddddddd	d
dg¡}t  d
dddddg¡}t  d¡ dd¡|d d …f }t  d¡jdddd�|d d …f }tt |d¡t  ddddg¡ƒ tt |d¡t  ddddg¡ƒ t  ddd
dg¡}t  d¡ dd¡|d d …f }tt |d¡t  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}tt |d¡d'ƒ tt ddd
dddgd¡dƒ t j d(¡ t jj	d$d)d*�}d+D ]6}tj|d|d,�}t t  
||d¡d¡}	t||	ƒ �qŽtj|dd d,�}t | ¡ d¡}	t||	ƒ tttj|d-ƒ tt g d.¡t jƒ tt g d-¡t jƒ d S )/Nr    r$   r   r   r%   r!   rE   r   r#   r   r"   rò  ÚF)Úorderr½   r)   r/   g      -@g     €4@rn   rŠ  rÿ  r  r~   g      ,@rF   rG   rB   rû   r	  ra  rN   rb  rù   r™  rú   rC   rH   rD   r`  )r!   r"   r    r#   rÀ  )r   r   r   r   rK   r=   rW  rs   )rU   r   r   rS   r   rP   Z	trim_meanr2  r3  rÇ  rM  rÌ  rx   ry   rV   )
rY   r¸   Úidxrs  rt  Zidx4Za4r>   rn  ro  r_   r_   r`   Útest_trim_meanM  sL     "ÿÿÿ"      ÿ
zTestTrim.test_trim_meanN)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 )ÚTestSigmaClipc                 C   sœ   t  t  ddd¡t  ddd¡f¡}d}t |¡\}}}t| ¡ |kƒ t| ¡ |k ƒ t|| 	¡ || 
¡   ƒ t|| 	¡ || 
¡   ƒ t|j|jƒ d S )NrŒ  rJ   é   r   rú   r!   r    ©rU   rÈ  r%  rP   Ú	sigmaclipr   ÚminÚmaxr   rT   ri   r�   ©rY   r¸   Úfactr»  ÚlowZuppr_   r_   r`   Útest_sigmaclip1u  s    "zTestSigmaClip.test_sigmaclip1c                 C   sª   t  t  ddd¡t  ddd¡f¡}d}t |||¡\}}}t| ¡ |kƒ t| ¡ |k ƒ t|| 	¡ || 
¡   ƒ t|| 	¡ || 
¡   ƒ t|jdƒ t|jd	ƒ d S )
NrŒ  rJ   r¼  r   rú   r!   r(   r    é$   r½  rÁ  r_   r_   r`   Útest_sigmaclip2  s    "zTestSigmaClip.test_sigmaclip2c                 C   s¦   t  t  ddd¡t  ddd¡f¡}d}t |||¡\}}}t| ¡ |kƒ t| ¡ |k ƒ t|| 	¡ || 
¡   ƒ t|| 	¡ || 
¡   ƒ t|t  ddd¡ƒ d S )NrŒ  rJ   rF   éœÿÿÿéÎÿÿÿr   çÍÌÌÌÌÌü?)rU   rÈ  r%  rP   r¾  r   r¿  rÀ  r   rT   ri   rÁ  r_   r_   r`   Útest_sigmaclip3Š  s    ÿzTestSigmaClip.test_sigmaclip3c                 C   sF   t  t  ddd¡t  ddd¡f¡}d}t |||¡}d}t||ƒ d S )	NrŒ  rJ   rF   rÇ  rÈ  r   rÉ  )Zclippedrf  rg  )rU   rÈ  r%  rP   r¾  r   )rY   r¸   rÂ  r®   r¯   r_   r_   r`   Ú test_sigmaclip_result_attributes•  s    ÿz.TestSigmaClip.test_sigmaclip_result_attributesc                 C   s"   t  d¡}tt |¡d |ƒ d S )NrE   r   )rU   rI  r   rP   r¾  r:  r_   r_   r`   Útest_std_zero�  s    
zTestSigmaClip.test_std_zeroN)rƒ   r„   r…   rÄ  rÆ  rÊ  rË  rÌ  r_   r_   r_   r`   r»  t  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 )ÚTestAlexanderGovernc           
      C   s  dddddddddg	dddddddddg	dddddddddg	dddddddddg	g}t j|t jd�}t j|t jd�}t j|t jd�}t j|t jd�}tj|Ž }tj|Ž }tj|Ž }tj|Ž }	|j|j  krâ|j  krâ|	jksèn t	‚|j
|j
  k�r|j
  k�r|	j
k�sn t	‚d S )NrH   rG   rC   rF   rù   r;   )rU   r   r  rƒ  Úuint8r   rP   Úalexandergovernr«   r6  r¬   )
rY   r®  Z
args_int16Z
args_int32Z
args_uint8Zargs_float64Z	res_int16Z	res_int32Z	res_unit8Zres_float64r_   r_   r`   Útest_compare_dtypes¤  s.    ý



ÿÿÿ
ÿz'TestAlexanderGovern.test_compare_dtypesc              	   C   sâ   t tdd�� t ddgg ¡ W 5 Q R X t tdd�� t ddgd¡ W 5 Q R X t tdd�� t ddgdg¡ W 5 Q R X t tdd�� t ddgtjtjg¡ W 5 Q R X t tdd��" t ddgddgddgg¡ W 5 Q R X d S )	Nz+Input sample size must be greater than one.rv   r   r   zInput samples must be finite.z%Input samples must be one-dimensionalr   r    )rx   ry   rP   rÏ  rU   r  r  r_   r_   r`   Útest_bad_inputs¸  s    "z#TestAlexanderGovern.test_bad_inputsc              (   C   sê   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(g(}d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFg}dGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZg}t  |||¡}t|jd[ƒ t|jd\ƒ d]S )^a„  
        Data generated in R with
        > set.seed(1)
        > library("onewaytests")
        > library("tibble")
        > y <- c(rnorm(40, sd=10),
        +        rnorm(30, sd=15),
        +        rnorm(20, sd=20))
        > x <- c(rep("one", times=40),
        +        rep("two", times=30),
        +        rep("eight", times=20))
        > x <- factor(x)
        > ag.test(y ~ x, tibble(y,x))

        Alexander-Govern Test (alpha = 0.05)
        -------------------------------------------------------------
        data : y and x

        statistic  : 1.359941
        parameter  : 2
        p.value    : 0.5066321

        Result     : Difference is not statistically significant.
        -------------------------------------------------------------
        Example adapted from:
        https://eval-serv2.metpsy.uni-jena.de/wiki-metheval-hp/index.php/R_FUN_Alexander-Govern

        g5·ßãÀgÈÊÒbý?gl†"k¶ Àg†^ösÖç/@güûé´Q\
@gÞÆRÌh ÀgIäF@gpZ>êqˆ@gßï7D @gÉ-ÑªZnÀgç(ÐQ<.@gºO¬Ný/@g	Oè€ÙÀg�ÒÒ·¡%6Àg•­ùs¥&@g‘w)ìÁÜ¿g78ž´9¹Ä¿g€z�ÿpà"@g‘z§l @g57ó­ŒÁ@g>m@*a"@g–,ZbI@gX°9
]Üç?gÕÀ‡½ä3Àg”1Ë@g÷®Íûöá¿g"ÚJbíø¿gy:‹�@j-Àgˆâ2®A Àg£à;¹¸·@gL97vp,+@gÔîšp/rð¿gøÎ"½ƒ@gfT|µ7á¿g^v˜€‹Š+ÀgÙ˜Y‹™Àg0/šé‹Àg›ŒÜôúâ¿güÑlA! &@gÝoë†@g!‰_5*¾Àgq‚TEgÀgŒ1ÌÀ­è$@g	´³a,³ @gö·ÂË¤©$Àg´ë�9%ÀgZµ›úß@gÖÉT6U'@gž‡S �öú¿g‡6aGèn*@g�O¿èâ@gåëÙ\\"Àgø^±4™w@g¥Áð0Àgrû¥žÏ~5@gDôP¼´=@gÙ¿Ô™…Àg:…Ã4ôR/ÀgO¢x]r!@gÅUŸà4 Àg°ta)B@g,GÐÀÏÕâ¿g³Ä2±$@gD%­ÏáÚ?gˆI,—VL&Àg·’³§@gÕÌÑ‡
;Àg–˜»û5@gWÀòJñc@g°Y•jK@@g­j³7#@g<ØÌøÙe,Àg¢ù}Öm(@gŒ©Ÿr”®2Àg#Ð^š9Àgr/§£ÑP@gÜ:RO»!Àg'¬Ø9£–?g6F÷�
Ê÷?gÊcÊ±”'Àgt‡„ö*¿&Àgšìƒê ÀgÜ~*0Î�7@gÿWz©x>ÀgëIKÂ'@gê?œ×Ò¢@g°²ý7C5@g;C>Ï¯UÀgµŸ×7ü™@g)n}è.^@g¹FQÂõ?gsýdlT6à?N©rP   rÏ  r
   r¬   r«   )rY   ÚoneÚtwoÚeightÚsolnr_   r_   r`   Útest_compare_rÍ  s´                            ó                  ÷           úz"TestAlexanderGovern.test_compare_rc                 C   s²   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g}d d!d"d#d$d%d&d'd(d)d*d+d,d-d.g}t  |||¡}t|jd/d0d1� t|jd2d3d1� t|jd4ƒ t|jd5ƒ d6S )7zØ
        Data taken from 'The Modification and Evaluation of the
        Alexander-Govern Test in Terms of Power' by Kingsley Ochuko, T.,
        Abdullah, S., Binti Zain, Z., & Soaad Syed Yahaya, S. (2015).
        g{®Gá&~@gö(\�ÂE~@g=
×£p�~@gfffffò~@g¤p=
×ó~@g×£p=
k@gR¸…ë‰@g¸…ëQ2€@gÍÌÌÌÌ8€@gÍÌÌÌÌ`€@g)\�Âõ`€@g=
×£p™€@g�Âõ(\#�@gÍÌÌÌÌà�@g=
×£pE‚@g…ëQ¸ƒ@g
×£p=ƒ@g×£p=
Õ„@g33333#…@g=
×£pùt@g{®Gá&u@gq=
×£v@g¸…ëQDy@g     X{@g\�Âõ(P}@gš™™™™]~@gÍÌÌÌÌt~@gáz®GÑ~@g)\�Âõä~@gš™™™™1@gáz®G³‹@g®Gáz8€@g     „€@g¤p=
×‘€@g
×£p=À€@g®GázÔ€@gq=
×£Ö€@gR¸…ëi�@g{®Gát�@gš™™™™w�@g=
×£p«�@g…ëQ¸S‚@gìQ¸…•‚@gö(\�Â©ƒ@gìQ¸…-„@g…ëQ¸ž…@g]ÜFxK@rô  r³   g R›8¹ß±?r}  g.Ui‹kL@göç&Z‡Ý±?NrÒ  )rY   ZyoungÚmiddleÚoldrÖ  r_   r_   r`   Útest_compare_scholar  sF              þ    ÿ      ÿ z(TestAlexanderGovern.test_compare_scholarc                 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(g}t  ||¡}t|jd)d*d+� t|jd,d*d+� t|jd-ƒ t|jd.ƒ d/S )0aA  
        Data taken from 'Robustness And Comparative Power Of WelchAspin,
        Alexander-Govern And Yuen Tests Under Non-Normality And Variance
        Heteroscedasticity', by Ayed A. Almoied. 2017. Page 34-37.
        https://digitalcommons.wayne.edu/cgi/viewcontent.cgi?article=2775&context=oa_dissertations
        g›¬QÑhü¿gM„O¯”ö¿gYÝê9æ¿gÀnÝÍSá¿g„dÈ¿gŠ}"O²¿gÐ¸p $¨?gë8~¨4ª?g
pÃ?g•�Zº‚Å?gá)äJ=Û?g·´÷XÝ?gpê”G·ã?gá›¦Ï¸æ?gù†Âgëàê?gýh8enë?g¹§«»í?guw�ùgï?gbÀ’«Xüï?gŸ9ëSŽIú?g°�N]ù¬÷¿g	ŠcîZô¿gAJ˜ií¿gMg'ƒ£äé¿gãkÏ,	Pè¿gÉ<÷ç¿gÎˆÒÞà×¿g%zÅrKÕ¿gøü0BxÒ¿gëÅPN´«¸¿g½:Ç€ìõ¶¿gv‰ê­�­’¿gê?k~ü¥Ð?gIò\ß‡ƒÒ?gŠ­ i‰•à?g†<‚)Ûå?g�0Xrì?g¦
F%uÂò?gs�FZ*oõ?g£7ün:ù?gñ[z4Õæ?r`  r³   gO²žZ}Ù?g¦9Ã$Õæ?gê6MDd}Ù?NrÒ  )rY   rl  rm  rÖ  r_   r_   r`   Útest_compare_scholar3A  sJ               ý           ýz)TestAlexanderGovern.test_compare_scholar3c                 C   s@   ddddgdt jgg}tj|Ž }t|jt jƒ t|jt jƒ d S )Nr   r   r   r    ©rU   rV   rP   rÏ  r   r«   r¬   )rY   r®  r®   r_   r_   r`   Útest_nan_policy_propogates  s    
z-TestAlexanderGovern.test_nan_policy_propogatec              	   C   sB   ddddgdt jgg}ttdd�� tj|ddiŽ W 5 Q R X d S )	Nr   r   r   r    r´  rv   rr   rt   )rU   rV   rx   ry   rP   rÏ  ©rY   r®  r_   r_   r`   Útest_nan_policy_raisez  s    z)TestAlexanderGovern.test_nan_policy_raisec                 C   sl   dddd dgdt jddgg}ddddgdddgg}tj|ddiŽ}tj|Ž }t|j|jƒ t|j|jƒ d S )	Nr   r   r   r    rb  rü   rr   rp   rÜ  )rY   Zargs_nanZargs_no_nanZres_nanZ
res_no_nanr_   r_   r`   Útest_nan_policy_omit  s    
z(TestAlexanderGovern.test_nan_policy_omitc              	   C   sV   d}t tj|d��: t dddgdddg¡}t|jtjƒ t|jtjƒ W 5 Q R X d S )Nz9An input array is constant; the statistic is not defined.rv   rÁ   rÂ   rÃ   rÄ   )	r   rP   rÅ   rÏ  r   r¬   rU   rV   r«   )rY   r{   r®   r_   r_   r`   rÇ   ‡  s    ÿz'TestAlexanderGovern.test_constant_inputN)rƒ   r„   r…   rÐ  rÑ  r×  rÚ  rÛ  rÝ  rß  rà  rÇ   r_   r_   r_   r`   rÍ  £  s   B22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e	j
 de dddg¡e dddg¡ejdffe dddg¡e dddg¡ejejffg¡dd„ ƒZe	j
 dddddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd „ Ze	j
 d!d"dd#d$gfg¡d%d&„ ƒZd'd(„ Zd)d*„ Zd+S ),ÚTestFOneWayc                 C   s0   t  ddgddg¡\}}t|dƒ t|dƒ d S )Nr   r   rs   rŠ   ©rP   Úf_onewayr   ©rY   r·  rÆ   r_   r_   r`   Útest_trivial“  s    
zTestFOneWay.test_trivialc                 C   s>   t  ddgddg¡\}}t|dƒ t|dt d¡ dd� d S )	Nr   r   r    r*  r   r'   r=  rÚ   )rP   rã  r   r
   rU   r€   rä  r_   r_   r`   r¿   ™  s    
zTestFOneWay.test_basicc                 C   s4   t  dgdgdddg¡\}}t|dƒ t|dƒ d S )Nr   r   r    rW  rý  râ  rä  r_   r_   r`   Útest_known_exact   s    
zTestFOneWay.test_known_exactc                 C   sJ   t jddgt jd�}t jddgt jd�}t ||¡\}}t|ddd� d S )	Né�  é  r;   é  é  gÞüÅ¸Èè?r=  rÚ   )rU   r   Úuint16rP   rã  r
   )rY   r¸   r¾   r·  rÆ   r_   r_   r`   Útest_large_integer_arrayª  s    z$TestFOneWay.test_large_integer_arrayc                 C   sF   t jddgt jd�}t jddgt jd�}t ||¡}d}t||ƒ d S )Nrç  rè  r;   ré  rê  r�  )rU   r   rë  rP   rã  r   )rY   r¸   r¾   r®   r¯   r_   r_   r`   Útest_result_attributes²  s
    z"TestFOneWay.test_result_attributesc                    s  ddddddddd	d
dg}|D ]ä}d}t j t j t j t¡d|¡¡}t|dƒ�}| ¡  d¡}W 5 Q R X dd„ |dd… D ƒ}t	j
|dd�}|j\‰‰ ˆ t¡‰t	 ˆ¡}	t|d d ƒ}‡ ‡fdd„|	D ƒ}
tj|
Ž }d}||krêd}t|d ||d| d� qd S )Nz
SiRstv.datz
SmLs01.datz
SmLs02.datz
SmLs03.datzAtmWtAg.datz
SmLs04.datz
SmLs05.datz
SmLs06.datú
SmLs07.datú
SmLs08.datú
SmLs09.daträ   zdata/nist_anovar�   Ú
c                 S   s   g | ]}|  ¡ r| ¡ ‘qS r_   )ÚstripÚsplit)rH  Úliner_   r_   r`   rK  Æ  s    ÿz)TestFOneWay.test_nist.<locals>.<listcomp>r  r  rQ  )Zskiprowsr   rK   c                    s   g | ]}ˆ ˆ|k ‘qS r_   r_   rG  rL  r_   r`   rK  Î  s     )rî  rï  rð  r}  zFailing testcase: %s)rÛ   r£  )ÚosÚpathÚabspathÚjoinÚdirnameÚ__file__ÚopenÚreadró  rU   Zloadtxtr7  r‚  r+  r¶  rt  rP   rã  r
   )rY   Ú	filenamesZ	test_caserÛ   Úfnamer°  ÚcontentZ	certifiedZdatafZcatyZxlistr®   Zhard_tcr_   rL  r`   Ú	test_nist¹  s>         þ ÿ



ÿzTestFOneWay.test_nistza, b, expectedrÎ  r#   r   c              	   C   sB   d}t tj|d��& t ||¡\}}|s4t||kƒ‚W 5 Q R X d S )Nú%Each of the input arrays is constant;rv   )r   rP   rÅ   rã  r6  )rY   r¸   r¾   r…  r{   r°  rÆ   r_   r_   r`   rÇ   Ù  s    zTestFOneWay.test_constant_inputr>   rK  rK   r   c                 C   sö  t  ddddgddddgddddgddddgddddgg¡}t  ddddgddddgddddgddddgddddgddddgddddgddddgg¡}t  ddddgddddgddddgddddgg¡}|dkrè|j}|j}|j}d	}nd}d
}ttj|d�� tj||||d�\}}W 5 Q R X dD ]Z}	t t  ||	|¡t  ||	|¡t  ||	|¡¡\}
}t||	 |
dd� t||	 |dd� �q$dD ]l}	ttj|d��R t t  ||	|¡t  ||	|¡t  ||	|¡¡\}
}t	||	 |
ƒ t	||	 |ƒ W 5 Q R X �q„d S )Nr   r    r   r   r!   r"   r$   rÎ   r   r  rv   r=   r6  r=  rÚ   r	  )
rU   r   r7  r   rP   rÅ   rã  Ztaker
   r   )rY   r>   r¸   r¾   r»  Z	take_axisr�  r°  rÆ   rJ  ÚfjZpjr_   r_   r`   Útest_2d_inputsä  sX    



ü






ù


ý þþzTestFOneWay.test_2d_inputsc           
   
   C   s  dt  dd¡ ddd¡ }dt  dd¡ dd	d¡ }t  dt  dd
¡ ddd¡ ¡}tj|||dd�\}}|jdksxt‚|jdks†t‚t|jd ƒD ]x}t|jd ƒD ]d}t ||d d …|f ||d d …|f ||d d …|f ¡\}}	t	||||f ƒ t	|	|||f ƒ q¦q”d S )Nr   rŠ   é�   r    r!   r#   r   éá   r$   éq   r=   )r    r#   r   )
rU   r   rS   ÚcosrP   rã  r5  r6  rM  r
   )
rY   r¸   r¾   r»  r°  rÆ   rI  rJ  ZfijZpijr_   r_   r`   Útest_3d_inputs  s     <zTestFOneWay.test_3d_inputsc              	   C   sP   d}t tj|d��4 t dddgg dddd	g¡}t|tjtjfƒ W 5 Q R X d S )
Núall input arrays have length 1.rv   r   r   r   r    r!   r"   r#   ©r   rP   ÚDegenerateDataWarningrã  r   rU   rV   ©rY   r{   rß   r_   r_   r`   Útest_length0_1d_error%  s    z!TestFOneWay.test_length0_1d_errorc           	   	   C   sˆ   d}t tj|d��l d}t d|f¡}t d|f¡}t d|f¡}t |||¡\}}tj|ftjd�}t||ƒ t||ƒ W 5 Q R X d S )Nr	  rv   r   r    r   r!   r$  )	r   rP   r  rU   rI  rã  rg   rV   r   )	rY   r{   Zncolsr¸   r¾   r»  r°  rÆ   Znansr_   r_   r`   Útest_length0_2d_error,  s    
z!TestFOneWay.test_length0_2d_errorc              	   C   sL   d}t tj|d��0 t dgdgdgdg¡}t|tjtjfƒ W 5 Q R X d S )Nr	  rv   rE   rF   rG   rH   r
  r  r_   r_   r`   Útest_all_length_one8  s    zTestFOneWay.test_all_length_oner®  r_   r   r   c              	   C   s"   t tƒ� tj|Ž  W 5 Q R X d S rF  )rx   r.  rP   rã  rÞ  r_   r_   r`   Útest_too_few_inputs>  s    
zTestFOneWay.test_too_few_inputsc              	   C   s>   t  d¡}t  d¡}tt jƒ� tj||dd� W 5 Q R X d S )Nr‡  ©r!   r    r   r=   )rU   rI  rx   rN  rP   rã  ©rY   r¸   r¾   r_   r_   r`   Útest_axis_errorC  s    

zTestFOneWay.test_axis_errorc              	   C   s<   t  d¡}t  d¡}ttƒ� tj||dd� W 5 Q R X d S )Nr‡  r  r   r=   )rU   rI  rx   ry   rP   rã  r  r_   r_   r`   Útest_bad_shapesI  s    


zTestFOneWay.test_bad_shapesN)rƒ   r„   r…   rå  r¿   ræ  rì  rí  r   rì   rð   rñ   rU   r   r  rV   rÇ   r  r  r  r  r  r  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 )ÚTestKruskalc                 C   s|   dg}dg}t  ||¡\}}t|dƒ t|t jj |d¡ƒ t  t |¡t |¡¡\}}t|dƒ t|t jj |d¡ƒ d S )Nr   r   rŠ   )	rP   Úkruskalr   r	   r×  rË  rØ  rU   r   ©rY   rz   rZ   ÚhrÆ   r_   r_   r`   Útest_simpleQ  s    

zTestKruskal.test_simplec                 C   s”   dddddg}dddd	d
g}t  ||¡\}}t|dd
d� t|t jj dd¡ƒ t  t |¡t |¡¡\}}t|dd
d� t|t jj dd¡ƒ d S )Nr   r   r!   r#   r%   r   r    r"   r$   rE   r³  r4   )rP   r  r	   r×  rË  rØ  rU   r   r  r_   r_   r`   r¿   [  s    zTestKruskal.test_basicc                 C   s<   dg}ddg}d}d}|| }t  ||¡\}}t||ƒ d S )Nr   r   r¦  r‹  )rP   r  r   ©rY   rz   rZ   Úh_uncorrrS  r…  r  rÆ   r_   r_   r`   Útest_simple_tiee  s    zTestKruskal.test_simple_tiec                 C   sR   ddddg}ddddg}d}dt dƒd  }|| }t ||¡\}}t||ƒ d S )Nr   r   r±   é�   éø  )rt  rP   r  r	   r  r_   r_   r`   Útest_another_tiep  s    zTestKruskal.test_another_tiec           	      C   sn   dddg}dddg}ddg}d}dt dƒd  }|| }t |||¡\}}t||ƒ t|tjj |d¡ƒ d S )Nr   r   r3   r  r  )rt  rP   r  r	   r×  rË  rØ  )	rY   rz   rZ   rÛ  r  rS  r…  r  rÆ   r_   r_   r`   Útest_three_groupsy  s    


zTestKruskal.test_three_groupsc                 C   s8   dddg}dddg}g }t t |||¡tjtjfƒ d S rê   )r   rP   r  rU   rV   r  r_   r_   r`   r“  …  s    

zTestKruskal.test_emptyc                 C   s:   dddddg}dddd	d
g}t  ||¡}d}t||ƒ d S )Nr   r   r!   r#   r%   r   r    r"   r$   rE   r�  )rP   r  r   )rY   rz   rZ   r®   r¯   r_   r_   r`   Útest_kruskal_result_attributesŒ  s
    z*TestKruskal.test_kruskal_result_attributesc                 C   sp   t  d¡}t j|d< tt ||¡t jt jfƒ ttj||dd�dƒ tttj||dd� tttj||dd� d S )Nrn   r%   rp   rq   rÿ   rt   ru   )	rU   r   rV   r   rP   r  r   rx   ry   r:  r_   r_   r`   r<  “  s    

zTestKruskal.test_nan_policyc                 C   sB   d}t j |¡}t j |¡d }t ||¡\}}d}t||ƒ d S )Nr  r  r   )rU   r2  r4  rP   r  r	   )rY   rR  rz   rZ   r  rÆ   r…  r_   r_   r`   Útest_large_no_samples›  s    z!TestKruskal.test_large_no_samplesN)rƒ   r„   r…   r  r¿   r  r  r   r“  r!  r<  r"  r_   r_   r_   r`   r  P  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dddgZej ddddg¡ej de¡dd„ ƒƒZej de¡dd „ ƒZd!S )"ÚTestCombinePvaluesc                 C   s*   t jdddgdd�\}}t|ddd� d S )	Nr9  r#  r!  r~  rÁ  gùf›Ó–?r    r4   ©rP   Úcombine_pvaluesr	   )rY   ZxsqrÆ   r_   r_   r`   Útest_fisher§  s    zTestCombinePvalues.test_fisherc                 C   s*   t jdddgdd�\}}t|ddd� d S )	Nr9  r#  r!  ÚstoufferrÁ  ç¹S:Xÿç�?r    r4   r$  ©rY   ÚZrÆ   r_   r_   r`   Útest_stouffer¬  s    z TestCombinePvalues.test_stoufferc                 C   s*   t jdddgdd�\}}t|ddd� d S )Nr'   r'  rÁ  r    r4   r$  r)  r_   r_   r`   Útest_stouffer2°  s    z!TestCombinePvalues.test_stouffer2c                 C   s2   t jdddgdt d¡d�\}}t|ddd	� d S )
Nr9  r#  r!  r'  r   ©rÂ  r>  r(  r    r4   )rP   r%  rU   rI  r	   r)  r_   r_   r`   Útest_weighted_stouffer´  s    ÿ
z)TestCombinePvalues.test_weighted_stoufferc                 C   s2   t jdddgdt d¡d�\}}t|ddd	� d S )
Nr9  r#  r!  r'  )r   r    r%   r-  g46<½Â?r    r4   )rP   r%  rU   r   r	   r)  r_   r_   r`   Útest_weighted_stouffer2¹  s    ÿ
z*TestCombinePvalues.test_weighted_stouffer2c                 C   s*   t jdddgdd�\}}t|ddd� d S )	Nr9  r#  r!  rÓ  rÁ  gE»
)?©–?r    r4   r$  r)  r_   r_   r`   Útest_pearson¾  s    zTestCombinePvalues.test_pearsonc                 C   s*   t jdddgdd�\}}t|ddd� d S )	Nr9  r#  r!  ÚtippettrÁ  gïÉÃB­iž?r    r4   r$  r)  r_   r_   r`   Útest_tippettÂ  s    zTestCombinePvalues.test_tippettc                 C   s*   t jdddgdd�\}}t|ddd� d S )Nr  Úmudholkar_georgerÁ  g&¶Øí“?r    r4   r$  r)  r_   r_   r`   Útest_mudholkar_georgeÆ  s    z(TestCombinePvalues.test_mudholkar_georgec                 C   sb   t jdddgdd�\}}t jdddgdd�\}}t jdddgdd�\}}td||  |d	d
� d S )Nr9  r#  r!  r3  rÁ  r~  rÓ  r'   r    r4   r$  )rY   r*  rÆ   ZZ_fZp_fZZ_pZp_pr_   r_   r`   Ú2test_mudholkar_george_equal_fisher_pearson_averageÊ  s    zETestCombinePvalues.test_mudholkar_george_equal_fisher_pearson_averager~  rÓ  r1  r'  r3  r½  Úsingler-  r2  rÂ  c                    sÈ   d\}}t j d¡}|dkrNt  ||f| |¡¡}t  dd|¡|d d …df< nL|dkrtt  ||ft  dd|¡¡j}n&|dkršt j|jdd	||fd
�dd�}‡ fdd„|D ƒ}t  t  	|¡dk¡sÄt
‚d S )N)rE   r#   l	   «TrU™(´	Ë"b¤-•=Ñ r6  r  r   r   r-  r2  r   rÀ  r=   c                    s   g | ]}t j|ˆ d �d ‘qS )rÁ  r   )rP   r%  )rH  rÂ  rÁ  r_   r`   rK  å  s   ÿz8TestCombinePvalues.test_monotonicity.<locals>.<listcomp>)rU   r2  rÃ  rg   r%  r7  r´  rÄ  r-  Údiffr6  )rY   r½  rÂ  rP  rR  rÆ  ZpvaluessZcombined_pvaluesr_   rÁ  r`   Útest_monotonicityÒ  s    
þz$TestCombinePvalues.test_monotonicityc                 C   s*   t jdddg|d�}t|j|jf|ƒ d S )Nr9  r#  r!  rÁ  )rP   r%  r   r¬   r«   )rY   rÂ  r®   r_   r_   r`   r&  ë  s    zTestCombinePvalues.test_resultN)rƒ   r„   r…   r&  r+  r,  r.  r/  r0  r2  r4  r5  Úmethodsrì   rð   rñ   r8  r&  r_   r_   r_   r`   r#  ¥  s   r#  c                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTestCdfDistanceValidationzg
    Test that _cdf_distance() (via wasserstein_distance()) raises ValueErrors
    for bad inputs.
    c                 C   s<   t ttjdgdgdgddgƒ t ttjdgdgddgƒ d S )Nr   r   r    r   r   ©rx   ry   rP   Úwasserstein_distancer  r_   r_   r`   Ú&test_distinct_value_and_weight_lengths÷  s       ÿz@TestCdfDistanceValidation.test_distinct_value_and_weight_lengthsc                 C   s@   t ttjddgdgddgƒ t ttjddgdgddgdgƒ d S )Nr   r   r   r   r;  r  r_   r_   r`   Útest_zero_weightþ  s      ÿ   ÿz*TestCdfDistanceValidation.test_zero_weightc                 C   s(   t ttjddgddgddgddgƒ d S )Nr   r   r   r   rK   r;  r  r_   r_   r`   Útest_negative_weights  s       ÿz/TestCdfDistanceValidation.test_negative_weightsc                 C   s*   t ttjg ddgƒ t ttjdgg ƒ d S )Nr   r   r;  r  r_   r_   r`   Útest_empty_distribution  s    z1TestCdfDistanceValidation.test_empty_distributionc                 C   s.   t ttjdddgddgdtjdgddgƒ d S rê   )rx   ry   rP   r<  rU   r  r  r_   r_   r`   Útest_inf_weight  s      
 ÿz)TestCdfDistanceValidation.test_inf_weightN)	rƒ   r„   r…   rï   r=  r>  r?  r@  rA  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d
d„ Zdd„ Z	dd„ Z
dS )ÚTestWassersteinDistancez5 Tests for wasserstein_distance() output values.
    c                 C   sˆ   t t ddgdgddgdg¡dƒ t t ddgdgddgdg¡dƒ t t ddgdgddgdg¡dƒ t t dddgdddg¡dƒ d S )Nr   r   r'   r   rÏ  r   ©r   rP   r<  r  r_   r_   r`   r    s4    þ   ÿþ   ÿþ ÿþz#TestWassersteinDistance.test_simplec              	   C   sP   t t dddgdddg¡dƒ t t ddddgddgddddgddg¡dƒ d S ©Nr   r   r   r   r    )r   rP   r<  r  r_   r_   r`   Útest_same_distribution+  s    
 ÿýz.TestWassersteinDistance.test_same_distributionc              	   C   s„   t t dgdg¡dƒ t t dgdg¡dƒ t t dddddgd	d
dddg¡dƒ t t dddgdddgdddgdddg¡dƒ d S )Nr   r   rq  r!   rE   r   r   r    rF   rG   rH   rC   rù   r+   gÍÌÌÌÌÌ@r8  r6  r#   rz  r)   rC  r  r_   r_   r`   Ú
test_shift4  s    þ ÿýz"TestWassersteinDistance.test_shiftc                 C   sv   t t dddddddgdddddddgdddddddgdddddddg¡t dddgdddgdddgdddg¡ƒ d S ©Nr   r   r!   r   r    r   rC  r  r_   r_   r`   Útest_combine_weightsA  s      þ ÿüz,TestWassersteinDistance.test_combine_weightsc                 C   s|   t  ddd¡}t  |¡}tt ||¡t  t  |¡¡ƒ t  t|ƒ¡}|d d d… }tt ||||¡t j	t  |¡|d�ƒ d S )Nr*  r  r!  rK   r�  )
rU   r   Z
zeros_liker   rP   r<  rT   rf  r	  r‚  )rY   r  r  Z	u_weightsZ	v_weightsr_   r_   r`   Útest_collapseK  s    

þþz%TestWassersteinDistance.test_collapsec              	   C   sJ   t t dddgddgdddgddg¡t ddgddgddgddg¡ƒ d S ©Nr   r   rN  r   rC  r  r_   r_   r`   r>  Z  s     ÿýz(TestWassersteinDistance.test_zero_weightc              	   C   s¬   t t ddtjgddg¡tjƒ t t ddtjgtj dg¡tjƒ t t dtj tjgddg¡tjƒ tƒ �4}| td¡ t t ddtjgtjdg¡tjƒ W 5 Q R X d S ©Nr   r   ro   )	r   rP   r<  rU   r  r   rW   rX   rV   ©rY   r^   r_   r_   r`   Útest_inf_valuesa  s$    þþþþz'TestWassersteinDistance.test_inf_valuesN)rƒ   r„   r…   rï   r  rE  rF  rH  rI  r>  rM  r_   r_   r_   r`   rB    s   	
rB  c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚTestEnergyDistancez0 Tests for energy_distance() output values.
    c                 C   s¦   t t ddgdgddgdg¡t d¡d ƒ t t ddgdgddgdg¡t d¡d ƒ t t ddgdgddgdg¡dƒ t t dddgdddg¡t d¡d ƒ d S )	Nr   r   r   r'   r   rÏ  rŠ   g3�E§yâ?©r   rP   Úenergy_distancerU   r€   r  r_   r_   r`   r  x  s0    þ   ÿþ   ÿþþzTestEnergyDistance.test_simplec              	   C   sP   t t dddgdddg¡dƒ t t ddddgddgddddgddg¡dƒ d S rD  )r   rP   rP  r  r_   r_   r`   rE  ˆ  s
    &þz)TestEnergyDistance.test_same_distributionc                 C   s@   t t dgdg¡t d¡ƒ t t dgdg¡t d¡d ƒ d S )Nr   r   r   rq  r!   gS[Ú:XL	@rO  r  r_   r_   r`   rF  �  s
    þzTestEnergyDistance.test_shiftc                 C   sv   t t dddddddgdddddddgdddddddgdddddddg¡t dddgdddgdddgdddg¡ƒ d S rG  ©r   rP   rP  r  r_   r_   r`   rH  ˜  s    $ ÿ&ýz'TestEnergyDistance.test_combine_weightsc              	   C   sJ   t t dddgddgdddgddg¡t ddgddgddgddg¡ƒ d S rJ  rQ  r  r_   r_   r`   r>     s    "þz#TestEnergyDistance.test_zero_weightc              	   C   s¬   t t ddtjgddg¡tjƒ t t ddtjgtj dg¡tjƒ t t dtj tjgddg¡tjƒ tƒ �4}| td¡ t t ddtjgtjdg¡tjƒ W 5 Q R X d S rK  )	r   rP   rP  rU   r  r   rW   rX   rV   rL  r_   r_   r`   rM  ¦  s     þþþz"TestEnergyDistance.test_inf_valuesN)
rƒ   r„   r…   rï   r  rE  rF  rH  r>  rM  r_   r_   r_   r`   rN  t  s   rN  c                   @   sª   e Zd ZddddddddddddddgZdddddddddddgZdZdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚTestBrunnerMunzelr   r   r    r   r!   rH   c           	      C   sð   t j| j| jdd�\}}t j| j| jdd�\}}t j| j| jdd�\}}t j| j| jdd�\}}t||| jd� t||| jd� t||kƒ t|d| jd� t|d| jd� t|d| jd� t|d| jd� t|d| jd� t|d| jd� d S )	NrÔ   rØ   rÖ   r4   ç|	&�ˆ	@ç|	&�ˆ	Àg°¿Ò�G³g?g@-p¸Lèï?)rP   ÚbrunnermunzelrQ   r(  r	   r5   r   r)  r_   r_   r`   Útest_brunnermunzel_one_sided½  s2    ÿÿÿÿÿÿz.TestBrunnerMunzel.test_brunnermunzel_one_sidedc                 C   st   t j| j| jdd�\}}t j| j| jdd�\}}t||| jd� t|d| jd� t|d| jd� t|d| jd� d S )NrÒ   rØ   r4   rS  rT  ç ÀÒ�G³w?©rP   rU  rQ   r(  r	   r5   r/  r_   r_   r`   Útest_brunnermunzel_two_sidedÔ  s    ÿÿÿz.TestBrunnerMunzel.test_brunnermunzel_two_sidedc                 C   sl   t  | j| j¡\}}t  | j| j¡\}}t||| jd� t|d| jd� t|d| jd� t|d| jd� d S )Nr4   rS  rT  rW  rX  r/  r_   r_   r`   Útest_brunnermunzel_defaultá  s    ÿÿÿz,TestBrunnerMunzel.test_brunnermunzel_defaultc                 C   s6   d}d}d}t |dkƒ tttj| j| j|||ƒ d S )Nr   rž  rD  r¥  ©r   rx   ry   rP   rU  rQ   r(  ©rY   rÙ   Údistributionrr   r_   r_   r`   Ú$test_brunnermunzel_alternative_errorî  s    úz6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc                 C   st   t j| j| jdd�\}}t j| j| jdd�\}}t||| jd� t|d| jd� t|d| jd� t|d| jd� d S )Nr‘  ©r]  r4   rS  rT  g œ"H°ë[?rX  r/  r_   r_   r`   Ú$test_brunnermunzel_distribution_normû  s    ÿÿÿz6TestBrunnerMunzel.test_brunnermunzel_distribution_normc                 C   s6   d}d}d}t |dkƒ tttj| j| j|||ƒ d S )NrÒ   r   rD  )rž  r‘  r[  r\  r_   r_   r`   Ú%test_brunnermunzel_distribution_error  s    úz7TestBrunnerMunzel.test_brunnermunzel_distribution_errorc                 C   s€   t  | jg ¡\}}t  g | j¡\}}t  g g ¡\}}t|tjƒ t|tjƒ t|tjƒ t|tjƒ t|tjƒ t|tjƒ d S rF  )rP   rU  rQ   r(  r   rU   rV   )rY   r*  ré  r+  rñ  r,  rò  r_   r_   r`   Útest_brunnermunzel_empty_imput  s    z0TestBrunnerMunzel.test_brunnermunzel_empty_imputc                 C   sš   ddddddddddddddt jg}dddddddddddg}tj||dd�\}}tj||dd�\}}t|t jƒ t|t jƒ t|t jƒ t|t jƒ d S )Nr   r   r    r   r!   rD  rq   )rU   rV   rP   rU  r   ©rY   rQ   r(  r*  ré  r+  rñ  r_   r_   r`   Ú&test_brunnermunzel_nan_input_propagate  s    $z8TestBrunnerMunzel.test_brunnermunzel_nan_input_propagatec                 C   sz   ddddddddddddddt jg}dddddddddddg}d}d}d}tttj|||||ƒ tttj|||||ƒ d S )	Nr   r   r    r   r!   rÒ   rž  rt   )rU   rV   rx   ry   rP   rU  )rY   rQ   r(  rÙ   r]  rr   r_   r_   r`   Ú"test_brunnermunzel_nan_input_raise*  s*    $úúz4TestBrunnerMunzel.test_brunnermunzel_nan_input_raisec                 C   sª   ddddddddddddddt jg}dddddddddddg}tj||dd�\}}tj||dd�\}}t||| jd� t|d	| jd� t|d
| jd� t|d| jd� d S )Nr   r   r    r   r!   rp   rq   r4   rS  rT  rW  )rU   rV   rP   rU  r	   r5   rc  r_   r_   r`   Ú!test_brunnermunzel_nan_input_omit@  s    $ÿÿÿz3TestBrunnerMunzel.test_brunnermunzel_nan_input_omitc              	   C   sF   dddg}dddddg}t jtd	d
�� tj||dd� W 5 Q R X dS )z| tests that a warning is emitted when p is nan
        p-value with t-distributions can be nan (0/0) (see gh-15843)
        r   r   r   r!   r"   r#   r$   r%   zp-value cannot be estimatedrv   rž  r_  N)rì   rØ  rX   rP   rU  rè   r_   r_   r`   Útest_brunnermunzel_return_nanN  s    
z/TestBrunnerMunzel.test_brunnermunzel_return_nanc              	   C   sT   dddg}dddddg}t jtd	d
�� tj||dd�\}}W 5 Q R X t|dƒ dS )zo tests that a p is 0 for datasets that cause p->nan
        when t-distribution is used (see gh-15843)
        r   r   r   r!   r"   r#   r$   r%   zdivide by zerorv   r‘  r_  r   N)rì   rØ  rX   rP   rU  r   )rY   rz   rZ   r  rÆ   r_   r_   r`   Útest_brunnermunzel_normal_distX  s
    
z0TestBrunnerMunzel.test_brunnermunzel_normal_distN)rƒ   r„   r…   rQ   r(  r5   rV  rY  rZ  r^  r`  ra  rb  rd  re  rf  rg  rh  r_   r_   r_   r`   rR  ·  s    
rR  c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestRatioUniformsz# Tests for rvs_ratio_uniforms.
    c                 C   s´   t jj}t |t d¡ƒ¡t d¡ }t |dƒ¡| |  }}}t j||||ddd�}tt  |d¡d dkd	ƒ t jd
d„ dddt d¡ ddd�}tt  |d¡d dkd	ƒ d S )Nr   r   iÄ	  i90  r
  rœ  r   rÏ  Tc                 S   s   t  |  ¡S rF  )rU   ró  rú  r_   r_   r`   rû  s  rü  z6TestRatioUniforms.test_rv_generation.<locals>.<lambda>rK   rø   )ÚumaxÚvminÚvmaxr�   r�  Zexpon)	rP   rœ  ÚpdfrU   r€   Úrvs_ratio_uniformsr   r  ró  )rY   r°  Úv_boundrj  rk  rl  r�  r_   r_   r`   Útest_rv_generationh  s    ÿ  þz$TestRatioUniforms.test_rv_generationc                 C   sR  t jj}t |t d¡ƒ¡t d¡ }t |dƒ¡| |  }}}t j||||ddd�}t j||||ddd�}t j||||ddd�}t||ƒ t|| ¡ ƒ t|jdƒ t|jdƒ t j||||dd	d�}	t j||||d
d	d�}
t|	 ¡ |
ƒ t|	jdƒ t j||||dd�}t j||||ddd�}t j||||ddd�}t||ƒ t||ƒ d S )Nr   r   r   r`  r
  r�  )r   r   )r   r   r   rG   é   ©r�  r   rË  )	rP   rœ  rm  rU   r€   rn  r   r9  r5  )rY   r°  ro  rj  rk  rl  rÕ  rÖ  r  Zr4Zr5Zr6Zr7Úr8r_   r_   r`   Ú
test_shapex  sB    ÿÿÿ
ÿÿÿÿ
zTestRatioUniforms.test_shapec                 C   s†   t jj}t |t d¡ƒ¡t d¡ }t |dƒ¡| |  }}}tj d¡ t j||||dd�}t j||||ddd�}t||ƒ d S )Nr   r   r`  r‡  rÀ  r
  )	rP   rœ  rm  rU   r€   r2  r3  rn  r   )rY   r°  ro  rj  rk  rl  rÕ  rÖ  r_   r_   r`   Útest_random_state˜  s    ÿz#TestRatioUniforms.test_random_statec                 C   sd   t jj}ttt j|dddd� ttt j|dddd� ttt j|dddd� ttt j|dddd� d S )Nr   r   )rm  rj  rk  rl  rK   r   )rP   rœ  rm  rx   ry   rn  )rY   r°  r_   r_   r`   Útest_exceptions¢  s:        ÿ    ÿ    ÿ    ÿz!TestRatioUniforms.test_exceptionsN)rƒ   r„   r…   rï   rp  rt  ru  rv  r_   r_   r_   r`   ri  d  s
    
ri  c                   @   sb   e Zd Z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d„ Zdd„ ZdS )ÚTestMGCErrorWarningsz1 Tests errors and warnings derived from MGC.
    c                 C   s8   t  d¡}dgd }tttj||ƒ tttj||ƒ d S )Nrú   r!   ©rU   r   rx   ry   rP   Úmultiscale_graphcorrrè   r_   r_   r`   Útest_error_notndarray³  s    

z*TestMGCErrorWarnings.test_error_notndarrayc                 C   s2   t  d¡ dd¡}| dd¡}tttj||ƒ d S )Nr÷   rü   r    rE   )rU   r   rS   rx   ry   rP   ry  rè   r_   r_   r`   Útest_error_shapeº  s    z%TestMGCErrorWarnings.test_error_shapec                 C   s(   t  d¡}t  d¡}tttj||ƒ d S )Nr   rx  rè   r_   r_   r`   Útest_error_lowsamplesÀ  s    

z*TestMGCErrorWarnings.test_error_lowsamplesc                 C   sF   t jdtd�}t j|d< tttj||ƒ t  d¡}tttj||ƒ d S )Nrú   r;   r   )rU   r   rt  rV   rx   ry   rP   ry  rè   r_   r_   r`   Útest_error_nansÆ  s
    

z$TestMGCErrorWarnings.test_error_nansc                 C   s&   t  d¡}d}tttj|||d� d S )Nrú   r   )Úcompute_distancerx  )rY   rz   r~  r_   r_   r`   Útest_error_wrongdisttypeÏ  s
    
ÿz-TestMGCErrorWarnings.test_error_wrongdisttyper;  rK   Ú1c                 C   s"   t  d¡}tttj|||d� d S )Nrú   ©r;  rx  )rY   r;  rz   r_   r_   r`   Útest_error_repsÖ  s    
z$TestMGCErrorWarnings.test_error_repsc                 C   s&   t  d¡}d}tttj|||d� d S )Nrú   r÷   r�  )rU   r   r   rX   rP   ry  )rY   rz   r;  r_   r_   r`   Útest_warns_repsß  s    
z$TestMGCErrorWarnings.test_warns_repsc                 C   s.   t  d¡}t  d¡t j }tttj||ƒ d S )Nrú   )rU   r   rI  r  rx   ry   rP   ry  rè   r_   r_   r`   Útest_error_inftyå  s    
z%TestMGCErrorWarnings.test_error_inftyN)rƒ   r„   r…   rï   rz  r{  r|  r}  r  rì   rð   rñ   r‚  rƒ  r„  r_   r_   r_   r`   rw  °  s   	þ
rw  c                   @   sÀ   e Zd ZdZddd„Zejjej ddd	d
g¡dd„ ƒƒZ	ejjej dddg¡dd„ ƒƒZ
ejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZdS )ÚTestMGCStatz) Test validity of MGC test statistic
    r÷   r   Ú c                 C   st  |dkr<t jjdd|dfd�}|dt jj|jdfd�  }nú|dkr¢t  t jjdd|dfd�¡}|t  t j| ¡ }|t  t j| ¡ d	t jj|jdfd�  }n”|d
k�r.t jj	dd|dfd�}t jj	dd|dfd�}t jj
dd|dfd�}	t jj
dd|dfd�}
|d d|	  d }|d d|
  d }ntdƒ‚|dk�rlt jj	dd||d fd�}t j||fdd�}||fS )Nr8  rK   r   rÀ  r!  Ú	nonlinearr   r!   rV  Úindependencer'   )rÆ   r�   r   r   z3sim_type must be linear, nonlinear, or independencer=   )rU   r2  rÄ  Zrandom_sampler�   r   r  Úpir&  r‘  Úbinomialry   rÈ  )rY   ÚsampsÚdimsÚsim_typerz   rZ   Zunifr  r  Zu_2Zv_2Z
dims_noiser_   r_   r`   Ú_simulationsï  s*    ÿ

zTestMGCStat._simulationszsim_type, obs_stat, obs_pvalue)r8  rþ  rô  )r‡  çw¾Ÿ/ÝÄ?rô  )rˆ  gUÁ¨¤N@ƒ¿gö(\�Âõè?c           	      C   sR   t j d¡ | jdd|d�\}}t ||¡\}}}t||dd� t||dd� d S )Nra  r÷   r   ©r‹  rŒ  r�  r4   ©rU   r2  r3  rŽ  rP   ry  r	   ©	rY   r�  Zobs_statZ
obs_pvaluerz   rZ   rÚ  r«   r  r_   r_   r`   Ú	test_oned  s
    zTestMGCStat.test_oned)r8  gZd;ßO�Ç?rô  )r‡  gÛù~j¼t“?gÁÊ¡E¶ó½?c           	      C   sR   t j d¡ | jdd|d�\}}t ||¡\}}}t||dd� t||dd� d S )Nra  r÷   r!   r�  r   r4   r‘  r’  r_   r_   r`   Ú
test_fived"  s
    zTestMGCStat.test_fivedc                 C   s¦   t j d¡ t jjdddd�}t jjdddd�}t ||¡\}}}t|d	dd
� t|ddd
� t jjdddd�}tj||dd�\}}}t|d	dd
� t|ddd
� d S )Nra  r÷   r'   )r÷   r!   rÀ  r   r   )rS  r!   rŠ   r4   rô  T)Z
is_twosamp)rU   r2  r3  rŠ  r‘  rP   ry  r	   ©rY   rz   rZ   rÚ  r«   r  r_   r_   r`   Útest_twosamp2  s    zTestMGCStat.test_twosampc                 C   sV   t j d¡ | jdddd�\}}tj||dd�\}}}t|ddd	� t|d
dd	� d S )Nra  r÷   r   r8  r�  r   )Úworkersrþ  r4   rô  r‘  r•  r_   r_   r`   Útest_workersG  s
    zTestMGCStat.test_workersc                 C   sJ   | j dddd�\}}tj||dd�\}}}t|ddd� t|ddd� d S )	Nr÷   r   r8  r�  rr  rþ  r4   rô  )rŽ  rP   ry  r	   r•  r_   r_   r`   ru  S  s    zTestMGCStat.test_random_statec                 C   st   t j d¡ | jdddd�\}}t||dd�}t||dd�}tj||d dd�\}}}t|d	dd
� t|ddd
� d S )Nra  r÷   r   r‡  r�  Z	euclidean)Zmetric)r~  r�  r�  r4   rô  )rU   r2  r3  rŽ  r   rP   ry  r	   )rY   rz   rZ   ZdistxZdistyZ	stat_distZpvalue_distr  r_   r_   r`   Útest_dist_perm]  s    þzTestMGCStat.test_dist_permc                 C   sD   t j d¡ | jdddd�\}}tj||dd�\}}}t|dƒ d S )Nra  r÷   r   r8  r�  rr  r™  )rU   r2  r3  rŽ  rP   ry  r
   )rY   rz   rZ   r  r«   r_   r_   r`   Útest_pvalue_literaturek  s    z"TestMGCStat.test_pvalue_literaturec                 C   sB   t j d¡ | jdddd�\}}tj||dd�}t|j|jƒ d S )Nra  r÷   r   r8  r�  rr  )	rU   r2  r3  rŽ  rP   ry  r   rÚ  r¬   r?  r_   r_   r`   Ú
test_aliasv  s    zTestMGCStat.test_aliasN)r÷   r   r†  )rƒ   r„   r…   rï   rŽ  rì   rð   r'  rñ   r“  r”  rj  r–  r˜  ru  r™  rš  r›  r_   r_   r_   r`   r…  ì  s6   
"ýþ


	


r…  c                !   @   s¦  e Zd Zej d¡ ej dd¡Zej dd¡Zdddd	efd
ddd	ef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"gd#d$d%d&d'dd(d)d*dd+d,d,d-d.d/dd!d0d1ddd"ddgdd2d3dd4d5d6d7d*d8d9d8d#d:d9d;d<dddd=d2d>d?d@ggfdAdBddCdDdEdFdGdHdIgdGdJdKddd*gdLdMdd5dNdOggfdPdQdRdCdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgddJdTdSgdTdSddJgdTdSddJgdTdSddJgdTdSddJgdTdSddJggfdUdVdRdCddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgdSdTdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdggfdWdXdRdCdYdGdJddSdTgdYdGdJddSdTgdTddJdGdSdYggfdZd[dRdCdGdJddSdTgdGdJddSdTgdGdJddSdTgdGdJddSdTgdGdJddSdTgdGdJddSdTgdJdTddSdGgdTdSddJdGgdTdSddJdGgdTdSddJdGgg
fd\d]dRdCddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgdSdTdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdggfd^d_dRdCd`dYdGdJddSdTgd`dYdGdJddSdTgdYdGd`dJddSdTgdTdSddJdGdYd`ggfdadbdRdCddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgdSdTdgdTdSdggfgZ	e
j dce	¡ddde„ ƒZdfdgdRdCddhdid`dYdGdJddSdTg
dTdidJd`dYdGdhddSdg
gfdjdkdRdCddhdid`dYdGdJddSdTg
ddhdid`dYdGdJddSdTg
ddhdid`dYdGdJddSdTg
dhdSdid`dYdGdJdddTg
dTdSddJdGdYd`didhdg
gfdldmdRdCdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdTddGdYdJd`dSdigdTdSddJdGdYd`digdTdSddJdGdYd`digdTdSddJdGdYd`digdTdSddJdGdYd`digdTdSddJdGdYd`diggfgZe
j dce	¡e
j ¡ dndo„ ƒƒZdpdq„ Zdrds„ Zdtdu„ ZdvS )wÚTestPageTrendTestr   r   rü   rE   é   i2  g:hÓÑžßØ?FrÅ  iô¿  gsœ´°H•�?i,0  gYµ–Ù@¶è?r<  r:  éI   r±  é`   r  é;   r  rÅ  r8  é1   r7  é+   r½  r  r=  rú   rA   rS  rò  r  éD   r  rQ  é"   rÕ  éA   éX   rB   r  r¼  éC   éE   r  r  éW   rH   éU   éO   rG   é\   éV   é@   rû   rN   éY   rE  é6   éB   rŽ  rd  i
  gXYþ›?rÀ  r(   r)  gš™™™™™ @r!   rb  rF   r    r*   rÿ  r7  rC   rù   iL  gs¾¬®Ëœî?Tr   r   éñ   gÄžªºƒÊî?éÅ   g£>K=Èî?r"   i§  gÓqÅá€°î?éÙ   gaŽ¹·�ï?i‹  g“;¸º�ºï?r#   éu   g°[^6þï?zL, p, ranked, method, datac                 C   sD   t j d¡ tj|||d�}t||jƒ t||jƒ t||j	ƒ d S ©NrÎ  )ÚrankedrÂ  ©
rU   r2  r3  rP   Úpage_trend_testr   r¬   r
   r«   rÂ  ©rY   ÚLrÆ   r·  rÂ  r»  r®   r_   r_   r`   Útest_accuracyÀ  s
    zTestPageTrendTest.test_accuracyi  g-lp¦Wî?r%   r$   i*  ghÑÕâ[úï?iî  g&]àŽ2µï?c                 C   sD   t j d¡ tj|||d�}t||jƒ t||jƒ t||j	ƒ d S r¶  r¸  rº  r_   r_   r`   Útest_accuracy2Ý  s
    z TestPageTrendTest.test_accuracy2c                 C   sà   t j d¡ d\}}t  d|d ¡}t j t  |¡¡}t j ||¡}tj|dd�}t |¡}tj|dd�}tj|dd�}	tj||d�}
tj|d d …|f || d�}t	|j
|j
ƒ t	|j
|	j
ƒ t	|j
|
j
ƒ t	|j
|j
ƒ d S )	NrÎ  )rE   rú   r   r=   T©r·  F)Úpredicted_ranks)rU   r2  r3  r   Zpermutationr>  rP   Zrankdatar¹  r   r¬   )rY   rP  rR  r¿  Úpermr»  Zranksrn  ro  r„  Zres4Zres5r_   r_   r`   Útest_optionsæ  s"    
ÿzTestPageTrendTest.test_optionsc                 C   s¸   t j d¡ dddgdddgdd	d
gdddgdddgdddgg}t  |¡j}t  dd¡}tj|d|dd�}t|j	dƒ t
|jddd� tj|d|dd�}t|j	dƒ t
|jddd� d S )NrÎ  r�  rµ  éo   r9  r7  ék   ég   é…   éy   r2  rí  r  r  é¡   éÉ   é’   rS  ét   r   r#   FrÅ  )r·  r¿  rÂ  i  gyé&1¬l?r    r?   rÀ  gHPüs×b?)rU   r2  r3  r   r7  r   rP   r¹  r   r¬   r   r«   )rY   r»  r¿  r®   r_   r_   r`   Útest_Ames_assayø  s(      ÿþþz!TestPageTrendTest.test_Ames_assayc              	   C   sê  t tdd�� t d ¡ W 5 Q R X t tdd�� t g ¡ W 5 Q R X t tdd�� t ddg¡ W 5 Q R X t tdd�� t dggg¡ W 5 Q R X t tdd�� t tj dd¡¡ W 5 Q R X t tdd�� t tj dd¡¡ W 5 Q R X d}t t|d��* tjdddgdddggdddgd	� W 5 Q R X t t|d��* tjdddgdddggd
ddgd	� W 5 Q R X t t|d��, tjdddgdddggddddgd	� W 5 Q R X t t|d��$ tjdddgdddggdd	� W 5 Q R X t tdd��" t dddgdddggd¡ W 5 Q R X t tdd��" t dddgdddggd¡ W 5 Q R X t tdd��& tjdddgddtjggdd� W 5 Q R X t tdd��$ tjdddgdddggdd� W 5 Q R X t tdd��$ tjdddgdddggdd� W 5 Q R X d S )Nz`data` must be a 2d array.rv   r   r   zPage's L is only appropriater   z+`predicted_ranks` must include each integerr   )r»  r¿  r$  r]  z`data` is not properly rankedTr    z`data` contains NaNsFr¾  z`method` must be inZekki)r»  rÂ  z`ranked` must be boolean.)r»  r·  )	rx   ry   rP   r¹  rU   r2  r>  rV   r.  rŠ  r_   r_   r`   r    sZ    ÿÿ
ÿÿ&&ÿÿÿz'TestPageTrendTest.test_input_validationN)rƒ   r„   r…   rU   r2  r3  r>  Z	data_3_25Z
data_10_26Útsrì   rð   rñ   r¼  Zts2r'  r½  rÁ  rË  r  r_   r_   r_   r`   rœ  �  s\             ÿ           ÿ           ÿüÿþÿ(
 
 
 

 
 
 

 
ýÿ0            ýÿ,ÿ$    ýÿ0          ýÿ  ÿÿ0    ÿÿÙ,
ÿÿ, þÿ$      ùÿørœ  iv¡È5z	fun, argsc              	   C   sf   | |ddiŽ}| |ddiŽ}t ||ƒ | j› d�}tjtt |¡d�� | |dddœŽ W 5 Q R X d S )NrÂ  rÀ  r–  z#() got multiple values for argumentrv   )rÂ  r–  )r   rƒ   rì   r   r.  ÚreÚescape)r„  r®  r®   ro  Úerrr_   r_   r`   Útest_rename_mode_methodD  s    
rÐ  c                   @   sx   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	d
ddddg¡ej 	dddg¡dd„ ƒƒZ
ej 	dddg¡dd„ ƒZdS )ÚTestExpectilec                 C   s6   t j d¡}|jdd�}ttj|dd�t  |¡ƒ d S )NrÎ  rú   rÀ  r'   ©rû  )rU   r2  rÃ  r
   rP   Ú	expectilerT   ©rY   rÆ  rz   r_   r_   r`   Útest_same_as_meanV  s    zTestExpectile.test_same_as_meanc                 C   s6   t j d¡}|jdd�}ttj|dd�t  |¡ƒ d S )NrÎ  rú   rÀ  r   rÒ  )rU   r2  rÃ  r
   rP   rÓ  ZaminrÔ  r_   r_   r`   Útest_minimum[  s    zTestExpectile.test_minimumc                 C   s6   t j d¡}|jdd�}ttj|dd�t  |¡ƒ d S )NrÎ  rú   rÀ  r   rÒ  )rU   r2  rÃ  r
   rP   rÓ  ZamaxrÔ  r_   r_   r`   Útest_maximum`  s    zTestExpectile.test_maximumc           	         sj   t j d¡}dd„ ‰ ‡ fdd„}d}| |¡}| ¡ }| |¡}tj|||d�}||||ƒ}t||ƒ d S )Nl   bÊ@©lN c                 S   s8   t j||d�}d| ||| k< t  || ||  d  ¡S )Nr$  r   r   )rU   r&  r'  )r  r¸   rû  r>  r  r_   r_   r`   r„  l  s    z'TestExpectile.test_weights.<locals>.func                    s,   t  | ¡t  | ¡f}tjˆ || ||fd�jS )N)Úbracketr®  )rU   r¿  rÀ  r   Zminimize_scalarrz   )r¸   rû  r>  rØ  ©r„  r_   r`   Ú
expectile2q  s    ÿz.TestExpectile.test_weights.<locals>.expectile2rE   r�  )rU   r2  rÃ  rP   rÓ  r
   )	rY   rÆ  rÚ  rR  r¸   rû  r>  r®   rÍ  r_   rÙ  r`   Útest_weightse  s    

zTestExpectile.test_weightsrû  r#  g¢¹ÿÿÿÿß?r'   g/#    à?r=  rR  rú   rš  c              	   C   sæ  t j d¡}|j|d�}dD ]"}ttjt j||d�|d�|ƒ q| ¡ }ttj|| |d�tj||d�| ƒ ttj|| |d�tj||d�| ƒ ttj|| |d�|tj||d� ƒ |j	|dd�}|dkrÚd	d
„ }n|dkrìdd
„ }ndd
„ }|tjt j
||  |d�tj||d�tj||d� ƒ |j|dd�}tj||d�tj||d�k�sZt‚|j	|dd�}dD ]N}|tjd| | ||  |d�d| tj||d� |tj||d�  ƒ �qlttj| |d�tj|d| d� ƒ dS )u²  
        See Section 6 of
        I. Steinwart, C. Pasin, R.C. Williamson & S. Zhang (2014).
        "Elicitation and Identification of Properties". COLT.
        http://proceedings.mlr.press/v35/steinwart14.html

        and

        Propositions 5, 6, 7 of
        F. Bellini, B. Klar, and A. MÃ¼ller and E. Rosazza Gianin (2013).
        "Generalized Quantiles as Risk Measures"
        http://doi.org/10.2139/ssrn.2225751
        rÎ  rÀ  )rq  r   r'   )r5  r%  rÒ  rE   rV  r'   c                 S   s   t | |ƒ d S rF  )r
   ©r¸   r¾   r_   r_   r`   Ú	assert_op¸  s    z:TestExpectile.test_expectile_properties.<locals>.assert_opc                 S   s   | |k st ‚d S rF  ©r6  rÜ  r_   r_   r`   rÝ  ¼  s    c                 S   s   | |kst ‚d S rF  rÞ  rÜ  r_   r_   r`   rÝ  À  s    r!   )r  r'   r=  r   N)rU   r2  rÃ  r‘  r
   rP   rÓ  rg   ZexponentialZlogisticrÿ  r6  )rY   rû  rR  rÆ  rz   r»  rZ   rÝ  r_   r_   r`   Útest_expectile_properties  s^    þþþþ

ÿþ
ÿÿþþz'TestExpectile.test_expectile_propertiesc                 C   sˆ   t j d¡}|jd|d�}g }t  dt  d¡d¡}t jd|d|d d	d	…  df D ]}| tj	||d
�¡ qRt  
t  |¡dk¡s„t‚d S )NrÎ  r   )r¸   r�   r  r'   r÷   r   r   rK   rÒ  )rU   r2  rÃ  ZparetoZlogspaceÚlog10rÿ  r#  rP   rÓ  r-  r7  r6  )rY   rR  rÆ  rz   Ze_listZ	alpha_seqrû  r_   r_   r`   Útest_monotonicity_in_alphaä  s    $z(TestExpectile.test_monotonicity_in_alphaN)rƒ   r„   r…   rÕ  rÖ  r×  rÛ  rì   rð   rñ   rß  rá  r_   r_   r_   r`   rÑ  U  s    ÿarÑ  )r   )NNrä   N)NNrä   N)NNrä   N)¼rï   rõ  rÍ  rX  Úcollectionsr   Ú	itertoolsr   Znumpy.testingr   r   r   r   r   r	   r
   r   r   r   rì   r   rx   Znumpy.ma.testutilsrÇ  Z	testutilsr÷  Únumpyr   r   r   r   r   rU   Zscipy.statsrP   Zscipy.stats.mstatsr  Zscipy.stats._mstats_basicZ_mstats_basicrÐ  Zscipy.stats._ksstatsr   Zscipy.special._testutilsr   Zscipy.specialr   Zscipyr   Zcommon_testsr   Zscipy.spatial.distancer   Z	numpy.libr   Zscipy.stats._axis_nan_policyr   r]  r   rt  rQ   r!  r�   r‘   r“   r•   r—   r0   r‡   rò   r(  r‡  rÍ  rÒ  r×  rÚ  rÛ  r  r  r  r  r  r  rh  rn  ro  rp  rð   Úfilterwarningsr”  rÒ  rÓ  rÙ  r  r3  r4  r_  rŒ  r­  ZPowerDivCaserÌ  rà  r7  rë  rÐ  rñ  rñ   rÎ  rƒ  rô  rù  rü  r  r  r  r6  r|  r€  r„  r§  r‡  rŒ  r�  r‘  rq  rŽ  r’  r—  r˜  r¹  rÉ  rá  rä  rå  rç  rè  rê  rë  rï  rð  ró  rô  rõ  r  r  r  r#  r$  r%  r9  r<  rB  rD  rF  rG  rh  rv  r‡  r¢  r¥  r«  r¯  r°  r»  rÍ  rá  r  r#  r:  rB  rN  rR  ri  rw  r…  rœ  r2  rÃ  rÆ  rz   rZ   Zwilcoxonr  rœ  r  r7  r  rÐ  rÑ  r_   r_   r_   r`   Ú<module>   s
  0 ÿÿ  ÿÿ    '    L [
 WY

)  "u
 q `? m ecsüÿü,,üü   ÿë     þ  û	  ûï -
K-5#V  rÿÿ

ÿÿ

~ xI mÿÿ
Jcr8~+ ÿ
 ÿ
   ÿ
codQ^W/ o @UL&]C .L<  ?



ýÿ