U
    md2                  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)RustBrandZReplication)idx	TreatmentStressReductionr   c                 C   s
   |  dS Nzutf-8encodev r   ^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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    
r6   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 )Nr8   r   r)   r.   )r6   r;   r+   r   rC   )rG   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 )Nr8   r-   r.   )r   r9   r:   r+   r   rB   r<   )rG   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_cir3   Zplot_simultaneous)rG   Zclose_figures	referencer   r   r   test_plot_simultaneous_ci   s    
z-CheckTuckeyHSDMixin.test_plot_simultaneous_ciN)__name__
__module____qualname__classmethodr?   rH   rI   rJ   pytestmarkZsmokeZ
matplotlibrM   r   r   r   r   r7      s   
r7   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   dta2r9   r:   r+   r?   r0   arrayreshaperA   rC   rE   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`   ra   r'   r   r   )r<   _results_tablerangedatar   )rG   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 )Nra   r_   r`   Zgroup_orderr8   )ra   r_   )ra   r`   r^   r'   r   r   )	r   r9   r:   r
   r+   rb   rc   rd   r   )rG   r;   r<   re   rf   rg   rh   ri   r   r   r   #test_table_names_custom_group_order   s    
z2TestTuckeyHSD2.test_table_names_custom_group_orderN)rN   rO   rP   rQ   r]   rj   rl   r   r   r   r   rT      s   
rT   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)superrm   r]   pdZSeriesr9   r:   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   rk      r(   r   {Gz?r8   rB   rd   Zdf_totalr:   r3   r@   r,   rD   rE   Z	std_pairsZvariancefailedg+=)Zrtolerr_msgZdataliZgroupintlabZngroupsr5   Zpairindices)rR   Zraises
ValueErrorr   r0   rZ   warningscatch_warningssimplefilterr   Zarangerepeatr   r2   
issubclasscategoryUserWarningAssertionErrorr
   r   getattr)rG   wrd   r:   Zmod1Zres1Zmod2Zres2
attributesZattrz   r   r   r   test_incorrect_output  sZ    ((&

 

  
    

  z*TestTuckeyHSD2Pandas.test_incorrect_output)rN   rO   rP   rQ   r]   r   __classcell__r   r   rq   r   rm      s   rm   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   rx   g88?gqq?gr>E?g-zg8Krgɏk@g˻@ghZ?ghM>g?g;Ug$B?g+4?r   rU   rV   r   r'   rX   r\   r   r   r   r]   3  s0            zTestTuckeyHSD2s.setup_classNrN   rO   rP   rQ   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***)dta3r9   r:   r+   r?   sas_rA   Zastypefloatvaluesr[   rC   r   rE   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@rs   r)   FT)	cylindersr9   
cyl_labelsr:   r+   r?   r<   rK   r0   rZ   
halfwidth2rA   r[   rC   rE   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   rF   r   r   r   test_hochberg_intervalso  s    z&TestTuckeyHSD4.test_hochberg_intervalsN)rN   rO   rP   rQ   r]   r   r   r   r   r   r   W  s   
r   )r*   )/__doc__Zstatsmodels.compat.pythonr   ior   r|   numpyr0   Zpandasro   rR   Znumpy.testingr   r   r   r   r   Zstatsmodels.stats.libqsturngr	   Zstatsmodels.stats.multicompr
   r   r   ssZss2Zss3Zss5rZ   r   r   Zread_csvZdtacolumnsrY   mapr   Zdta5colZilocr   r6   r7   rT   rm   r   r   r   r   r   r   r   <module>   s  + 	8                                                                                                                                                       


19