3
Odb               $   @   s  d dl Zd dlmZmZ d dlmZmZ d dlZG dd de	Z
G dd de	Zg dg fg d	g fg d
g fg dg fg dg fdgddgfdgd	dgfdgd
dgfdgddgfdgddgfdddgddddgfdddgd	dddgfdddgd
dddgfdddgddddgfdddgddddgfdddgddddgfdddgd	dddgfdddgd
dddgfdddgddddgfdddgddddgfddddgdddddgfddddgd	ddddgfddddgd
ddddgfddddgdddddgfddddgdddddgfdddddgddddddgfdddddgd	dddddgfdddddgd
dddddgfdddddgddddddgfdddddgddddddgfdgd dejddffZdd ZdS )    N)assert_equalassert_array_equal)rankdata
tiecorrectc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestTieCorrectc             C   s&   t jg t jd}t|}t|d dS )z9An empty array requires no correction, should return 1.0.)dtypeg      ?N)nparrayfloat64r   r   )selfranksc r   O/var/www/html/virt/lib64/python3.6/site-packages/scipy/stats/tests/test_rank.py
test_empty
   s    zTestTieCorrect.test_emptyc             C   s(   t jdgt jd}t|}t|d dS )z;A single element requires no correction, should return 1.0.g      ?)r   N)r   r	   r
   r   r   )r   r   r   r   r   r   test_one   s    zTestTieCorrect.test_onec             C   s<   t jd}t|}t|d t jd}t|}t|d dS )z*Arrays with no ties require no correction.g       @g      ?g      @N)r   aranger   r   )r   r   r   r   r   r   test_no_correction   s    


z!TestTieCorrect.test_no_correctionc             C   s:  t jdddg}t|}d}|j}d|d | |d |   }t|| t jdddg}t|}d}|j}d|d | |d |   }t|| t jddddg}t|}d}|j}d|d | |d |   }t|| t jdddddg}t|}d}d}|j}d|d | |d |  |d |   }t|| dS )	z8Check a few basic examples of the tie correction factor.g      ?g      @g       @   g      ?g      @g      @N)r   r	   r   sizer   )r   r   r   TNexpectedZT1ZT2r   r   r   
test_basic   s2    


(zTestTieCorrect.test_basicc             C   sZ   d\}}t jt j||}|j}tt|}t|d||d |  t|d |    d S )N     g      ?r   )r   r   )r   repeatr   r   r   r   r   float)r   Zntiekanoutr   r   r   test_overflowB   s
    zTestTieCorrect.test_overflowN)__name__
__module____qualname__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dddgZ
ejgejgd  Zejjdddgejjdee
edd ZdS )TestRankDatac             C   sN   t jg td}t|}t|t jg t jd tg }t|t jg t jd dS )z0stats.rankdata([]) should return an empty array.)r   N)r   r	   intr   r   r
   )r   r   rr   r   r   r   L   s
    zTestRankData.test_emptyc             C   sX   dg}t j|td}t|}t|t jdgt jd t|}t|t jdgt jd dS )z/Check stats.rankdata with an array of length 1.d   )r   g      ?N)r   r	   r'   r   r   r
   )r   datar   r(   r   r   r   r   T   s    zTestRankData.test_onec             C   s,  dddg}t jdddgt jd}t j|td}t|}t|| t|}t|| ddd	ddg}t jd
ddddgt jd}t j|td}t|}t|| t|}t|| ddddddg}t jddddddgt jd}t j|td}t|}t|| t|}t|| |jdd}t|}t|| dS )zBasic tests of stats.rankdata.r)   
   2   g      @g      ?g       @)r   (      g      @g      ?g      @      r   N)r   r	   r
   r'   r   r   Zreshape)r   r*   r   r   r(   Za2dr   r   r   r   ]   s0    






zTestRankData.test_basicc          	      s   dd dd  fdd} fdd}dd }t  |||d	fd
d}dddddddddg	}|tjj|d |tjj|djd tjddddddgdd}|tjj|djd d S )Nc                s    fdd D S )Nc                s&   g | ] d t  fddD  qS )   c             3   s   | ]}| k V  qd S )Nr   ).0i)jr   r   	<genexpr>|   s    zXTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>)sum)r2   )r   )r4   r   
<listcomp>|   s    zNTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>r   )r   r   )r   r   <lambda>|   s    z:TestRankData.test_rankdata_object_string.<locals>.<lambda>c                s    fdd D S )Nc                s"   g | ] t  fd dD qS )c             3   s   | ]}| kV  qd S )Nr   )r2   r3   )r4   r   r   r5   }   s    zXTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>)r6   )r2   )r   )r4   r   r7   }   s    zNTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>r   )r   r   )r   r   r8   }   s    c                s    dd t | D S )Nc             S   s   g | ]\}}||fqS r   r   )r2   r3   xr   r   r   r7   ~   s    zNTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>)	enumerate)r   )min_rankr   r   r8   ~   s    c                s   dd t |  | D S )Nc             S   s   g | ]\}}|| d  qS )g       @r   )r2   r3   r4   r   r   r   r7      s    zRTestRankData.test_rankdata_object_string.<locals>.average_rank.<locals>.<listcomp>)zip)r   )max_rankr;   r   r   average_rank   s    z>TestRankData.test_rankdata_object_string.<locals>.average_rankc                s   t j|   fdd| D S )Nc                s&   g | ] d t  fddD  qS )r1   c             3   s   | ]}| k V  qd S )Nr   )r2   r3   )r4   r   r   r5      s    zZTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>.<genexpr>)r6   )r2   )b)r4   r   r7      s    zPTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>)r   unique)r   r   )r?   r   
dense_rank   s    
z<TestRankData.test_rankdata_object_string.<locals>.dense_rank)minmaxordinalaveragedensec                s0   x*dD ]"}t | |d}t| | |  qW d S )NrB   rC   rF   rD   rE   )method)rB   rC   rF   rD   rE   )r   r   )r   rG   r!   )rankfr   r   check_ranks   s    
z=TestRankData.test_rankdata_object_string.<locals>.check_ranksZfoobarZquxZxyzabcZefgZaceZqweZqaz   objectr   r1   r0   gX9v@r   gT㥛 	@)r   )dictr   randomchoiceZastyper	   )r   Zordinal_rankr>   rA   rI   valr   )r=   r;   rH   r   test_rankdata_object_string{   s    
z(TestRankData.test_rankdata_object_stringc             C   s   t jdd	gt jd}t|}t|ddg t jd
dgt jd}t|}t|ddg t jddgt jd}t|}t|ddg d S )Nr0   <   r1   )r   g      ?g       @l            l            l           l            l            l           l            l            l         l)r   r	   Zuint64r   r   Zint64)r   r*   r(   r   r   r   test_large_int   s    zTestRankData.test_large_intc             C   sH   xBdD ]:}t j|td}t|}d|d  }t||| d|  qW d S )	N'  順 @B )r   g      ?r1   ztest failed with n=%d)rU   rV   rW   )r   Zonesr'   r   r   )r   r    r*   r(   Zexpected_rankr   r   r   test_big_tie   s    

zTestRankData.test_big_tiec             C   sl   dddgdddgg}dddgdddgg}t |dd}t|| dd	dgd	ddgg}t |dd}t|| d S )
Nr   r0   r1      g      ?g      ?g       @)axisg      @)r   r   )r   r*   Z	expected0Zr0Z	expected1Zr1r   r   r   	test_axis   s    
zTestRankData.test_axisrE   rB   rC   rF   rD   rY   rZ   r   r1   zmethod, dtypec             C   s8   d}t j|}t|||d}t|j| t|j| d S )Nr   r   )rG   rZ   )r   r   )r   Zzerosr   r   shaper   )r   rZ   rG   r   r\   r*   r(   r   r   r   test_size_0_axis   s
    
zTestRankData.test_size_0_axisN)r#   r$   r%   r   r   r   rR   rT   rX   r[   methodsr   r
   int_ZdtypespytestmarkZparametrizer<   r]   r   r   r   r   r&   J   s   	r&   rE   rB   rC   rF   rD   r)   g      ?g       @g      @i,  rL   g      @g      @g      ?g      @g      @r+   r.   g      ?@c              C   s.   x(t D ] \} }}t| |d}t|| qW d S )N)rG   )_casesr   r   )valuesrG   r   r(   r   r   r   
test_cases   s    rd   )Znumpyr   Znumpy.testingr   r   Zscipy.statsr   r   r`   rM   r   r&   r   rb   rd   r   r   r   r   <module>   sJ   B{