U
    ÃmœdŠ2  ã                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%< �qàe$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.8z­2 - 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@gDÛ1uW¶å?ggÖ¬ñ¡…?gEºŸS�Ÿ»?gé�êzý¤á?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� �q´dddddd d!d"g}|D ]*}	|	d }
tt||	ƒt||	ƒd|
d� �qød S )#Nr'   é
   r)   r   r   T)ÚrecordÚalwaysé   rk   é   r(   r   ç{®Gáz„?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   gŽã8Žã8þ?gÇqÇqì?éÿÿÿÿgrÎ>EÄÑ?gë-zèâ¿g8KÉr²ÀgÉ�øk@gË»êó@ghÅÜZËÉâ?g¸hMõ>g?g;U¾g$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èŒ :õ,é?gðRÀ�0¨@gþ²aˆZâ?g ÇqÇqÌ?g Á?g        g&~F‰ŸQ@g lÁlÁ¶¿g ÇqÇqÌ¿g´aƒŠ @g Á¿gm5xŽ@@gÈ®›Ð�Àg“<	@g\¡êúÀg‹›Ã¡@g>�5 úOÀg>�5 úO@g§MzT~,½?gû€ô�íÜ@g+´Hîöý¿g{ÖÛÅÀû?g”Í¼<ÀgÈ»‚;ƒ®@gŸ}®å‰.â?g™“µc‰@gS¶¨Lº‹
Àgßv†*˜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