U
    Kvf2                  e   @   sz  d Z ddlmZ ddlmZ ddlZddlZddlZ	ddl
Z
ddlmZmZmZmZmZ ddlmZ ddlmZmZmZ dZd	Zd
ZdZedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgcZedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgcZeeZeeZeeZeeZe	jeeddddZde_ e	jeeddddZ!de!_ e!d "dd e!d< e	jeeddddZ#ddge#_ e	jeeddddZ$dd d!d"d#ge$_ d$D ]Z%e$e% "d%d e$e%< qe$j&d&d'd(g Z'd8d*d+Z(G d,d- d-Z)G d.d/ d/e)Z*G d0d1 d1e*Z+G d2d3 d3e)Z,G d4d5 d5e)Z-G d6d7 d7e)Z.dS )9z>

Created on Wed Mar 28 15:34:18 2012

Author: Josef Perktold
    )asbytes)BytesION)assert_assert_allcloseassert_almost_equalassert_equalassert_raises)qsturng)tukeyhsdpairwise_tukeyhsdMultiComparisona/    43.9  1   1
  39.0  1   2
  46.7  1   3
  43.8  1   4
  44.2  1   5
  47.7  1   6
  43.6  1   7
  38.9  1   8
  43.6  1   9
  40.0  1  10
  89.8  2   1
  87.1  2   2
  92.7  2   3
  90.6  2   4
  87.7  2   5
  92.4  2   6
  86.1  2   7
  88.1  2   8
  90.8  2   9
  89.1  2  10
  68.4  3   1
  69.3  3   2
  68.5  3   3
  66.4  3   4
  70.0  3   5
  68.1  3   6
  70.6  3   7
  65.2  3   8
  63.8  3   9
  69.2  3  10
  36.2  4   1
  45.2  4   2
  40.7  4   3
  40.5  4   4
  39.3  4   5
  40.3  4   6
  43.2  4   7
  38.7  4   8
  40.9  4   9
  39.7  4  10ae  1     mental               2
2     mental               2
3     mental               3
4     mental               4
5     mental               4
6     mental               5
7     mental               3
8     mental               4
9     mental               4
10    mental               4
11  physical               4
12  physical               4
13  physical               3
14  physical               5
15  physical               4
16  physical               1
17  physical               1
18  physical               2
19  physical               3
20  physical               3
21   medical               1
22   medical               2
23   medical               2
24   medical               2
25   medical               3
26   medical               2
27   medical               3
28   medical               1
29   medical               3
30   medical               1zh1 24.5
1 23.5
1 26.4
1 27.1
1 29.9
2 28.4
2 34.2
2 29.5
2 32.2
2 30.1
3 26.1
3 28.3
3 24.3
3 26.2
3 27.8z2 - 3	4.340	0.691	7.989	***
2 - 1	4.600	0.951	8.249	***
3 - 2	-4.340	-7.989	-0.691	***
3 - 1	0.260	-3.389	3.909	-
1 - 2	-4.600	-8.249	-0.951	***
1 - 3	-0.260	-3.909	3.389	-
         ZUSAZFranceZJapanZGermanyZSwedenz\s+python)sepheaderZengine)ZRustBrandZReplication)idx	TreatmentStressReductionr   c                 C   s
   |  dS Nzutf-8encodev r   I/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/stats/tests/test_pairwise.py<lambda>       r   r   Reliefz\tpairmeanloweruppersig)r!   r%   c                 C   s
   |  dS r   r   r   r   r   r   r      r            皙?c                 C   s   t j| j t| jd}| jj}| jj}t|||d |t	d| t||d 
 d}| j |d  
 |d 
  }t||dd |S )N)Zddofr&   )Zdfalphaq_critg      ?   decimal)npvarZ
groupstatsZgroupdemeanlengroupsuniqueZ	groupmeanZ	groupnobsr
   r	   sumZgroupvarwithinr   )Zmcir*   Zvar_ZmeansnobsZresiZvar2r   r   r   get_thsd   s    
r5   c                   @   sH   e Zd Zedd Zdd Zdd Zdd Zej	j
ej	jd	d
 ZdS )CheckTuckeyHSDMixinc                 C   s&   t | j| j| _| jj| jd| _d S )Nr*   )r   endoggroupsmcr
   r*   resclsr   r   r   setup_class_   s    z CheckTuckeyHSDMixin.setup_class_c                 C   s<   t | jj| jdd t | jj| jdd t| jj| j d S )Nr,   r-   r(   )	r   r;   	meandiffs	meandiff2confintconfint2r   rejectreject2selfr   r   r   test_multicomptukey   s    z'CheckTuckeyHSDMixin.test_multicomptukeyc                 C   s(   t | j| jd}t|d | jdd d S )Nr7   r   r(   r-   )r5   r:   r*   r   rB   )rF   Zres_tr   r   r   test_group_tukey   s    z$CheckTuckeyHSDMixin.test_group_tukeyc                 C   s,   t | j| j| jd}t|j| jjdd d S )Nr7   r,   r-   )r   r8   r9   r*   r   rA   r;   )rF   r;   r   r   r   test_shortcut_function   s    z*CheckTuckeyHSDMixin.test_shortcut_functionc                 C   s(   | j   | j jd }| j j|d d S )Nr&   )Zcomparison_name)r;   _simultaneous_cir2   Zplot_simultaneous)rF   Zclose_figures	referencer   r   r   test_plot_simultaneous_ci   s    
z-CheckTuckeyHSDMixin.test_plot_simultaneous_ciN)__name__
__module____qualname__classmethodr>   rG   rH   rI   pytestmarkZsmokeZ
matplotlibrL   r   r   r   r   r6      s   
r6   c                   @   s(   e Zd Zedd Zdd Zdd ZdS )TestTuckeyHSD2c                 C   s   t d | _t d | _d| _|   tdddddd	d
dddddgjdddd}|d d df | _|d d ddf | _	|d d df }|dk | _
d S )Nr   r   r)   g      ?r&   g      gwIQ?gm]ƿg@,gTUh m@gTUh m@gD1uW?gg֬?gES?gz?r'   r   Forderr   dta2r8   r9   r*   r>   r/   arrayreshaper@   rB   rD   r=   Z
tukeyhsd2sZpvalsr   r   r   setup_class   s,    

        zTestTuckeyHSD2.setup_classc                 C   sZ   | j j}dddg}tddD ]8}|| d j}|| d j}t||f||d  k qd S )N   medical   mental)r^      physical)r_   r`   r&   r   r   )r;   _results_tablerangedatar   )rF   texpected_orderifirst_groupsecond_groupr   r   r   $test_table_names_default_group_order   s    z3TestTuckeyHSD2.test_table_names_default_group_orderc                 C   s~   t | j| jdddgd}|j| jd}|j}dddg}td	d
D ]8}|| d j}|| d	 j}t||f||d	  k q@d S )Nr`   r^   r_   Zgroup_orderr7   )r`   r^   )r`   r_   r]   r&   r   r   )	r   r8   r9   r
   r*   ra   rb   rc   r   )rF   r:   r;   rd   re   rf   rg   rh   r   r   r   #test_table_names_custom_group_order   s    
z2TestTuckeyHSD2.test_table_names_custom_group_orderN)rM   rN   rO   rP   r\   ri   rk   r   r   r   r   rS      s   
rS   c                       s(   e Zd Ze fddZdd Z  ZS )TestTuckeyHSD2Pandasc                    s2   t t|   t| j| _tj| jtd| _d S )N)Zdtype)superrl   r\   pdZSeriesr8   r9   objectr<   	__class__r   r   r\      s    z TestTuckeyHSD2Pandas.setup_classc                 C   s(  t t$ ttdgd ddgd  W 5 Q R X t t$ ttdgd ddgd  W 5 Q R X t t" ttdgd dgd  W 5 Q R X tjdd8}td t	tttdgd ddgd	 dgd
 W 5 Q R X t
d}tdddgd	}tjddL}td tt||ddgd
}tt|d t|d jtsTtW 5 Q R X |jdd}tt|d d |d d }|jdd}dddddddddddg}|D ]*}	|	d }
tt||	t||	d|
d qdddddd d!d"g}|D ]*}	|	d }
tt||	t||	d|
d qd S )#Nr&   
   r(   r   r   T)recordalways   rj      r'   r   {Gz?r7   rA   rc   Zdf_totalr9   r2   r?   r+   rC   rD   Z	std_pairsZvariancefailedg+=)Zrtolerr_msgZdataliZgroupintlabZngroupsr4   Zpairindices)rQ   Zraises
ValueErrorr   r/   rY   warningscatch_warningssimplefilterr   Zarangerepeatr   r1   
issubclasscategoryUserWarningAssertionErrorr
   r   getattr)rF   wrc   r9   Zmod1Zres1Zmod2Zres2
attributesZattry   r   r   r   test_incorrect_output  sZ    ((&

 

  
    

  z*TestTuckeyHSD2Pandas.test_incorrect_output)rM   rN   rO   rP   r\   r   __classcell__r   r   rp   r   rl      s   rl   c                   @   s   e Zd Zedd ZdS )TestTuckeyHSD2sc                 C   s   t d dd | _t d dd | _d| _|   tdddd	d
dddddddgjdddd}|d d df | _|d d ddf | _	|d d df }|dk | _
d S )Nr   r'      r   rw   g88?gqq?gr>E?g-zg8Krgɏk@g˻@ghZ?ghM>g?g;Ug$B?g+4?r   rT   rU   r   r&   rW   r[   r   r   r   r\   3  s0            zTestTuckeyHSD2s.setup_classNrM   rN   rO   rP   r\   r   r   r   r   r   2  s   r   c                   @   s   e Zd Zedd ZdS )TestTuckeyHSD3c                 C   s^   t d | _t d | _d| _|   td | _tddg tj	
d| _td td	k| _d S )
Nr    r   r)   r"   r#   r$   )r'   r(   r%   z***)dta3r8   r9   r*   r>   sas_r@   ZastypefloatvaluesrZ   rB   r   rD   r<   r   r   r   r\   I  s    


zTestTuckeyHSD3.setup_classNr   r   r   r   r   r   G  s   r   c                   @   s    e Zd Zedd Zdd ZdS )TestTuckeyHSD4c                 C   s   t | _t| _d| _|   | j  t	dddddg| _
t	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#gd$d%| _t	d&d&d&d'd&d&d'd&d'd&g
| _d S )(Nr)   gf]?gX?g茠:,?gR0@gaZ?g qq?g ?g        g&~FQ@g llg qq̿ga @g gm5x@@gЏg<	@g\gá@g>5Og>5O@gMzT~,?g@g+Hg{?g<gȻ;@g}.?gc@gSL
gv*i@gf|Ip?g4|&

@g0)gī aL@rr   r(   FT)	cylindersr8   
cyl_labelsr9   r*   r>   r;   rJ   r/   rY   
halfwidth2r@   rZ   rB   rD   r<   r   r   r   r\   Y  sN    

                  zTestTuckeyHSD4.setup_classc                 C   s   t | jj| jd d S )Nr   )r   r;   Z
halfwidthsr   rE   r   r   r   test_hochberg_intervalso  s    z&TestTuckeyHSD4.test_hochberg_intervalsN)rM   rN   rO   rP   r\   r   r   r   r   r   r   W  s   
r   )r)   )/__doc__Zstatsmodels.compat.pythonr   ior   r{   Znumpyr/   Zpandasrn   rQ   Znumpy.testingr   r   r   r   r   Zstatsmodels.stats.libqsturngr	   Zstatsmodels.stats.multicompr
   r   r   ssZss2Zss3Zss5rY   r   r   Zread_csvZdtacolumnsrX   mapr   Zdta5colZilocr   r5   r6   rS   rl   r   r   r   r   r   r   r   <module>   s  + 	8                                                                                                                                                       


19