
    M/PhY2                        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j        g d          Z ej        g d          Z ee          Z ee          Z ee          Z ee          Z e	j         ee          ddd          Zde_          e	j         ee          ddd          Z!de!_         e!d         "                    d           e!d<    e	j         ee          ddd          Z#ddge#_          e	j         ee          ddd          Z$g de$_         dD ]!Z%e$e%         "                    d           e$e%<   "e$j&        g d         Z'd*dZ( G d d          Z) G d  d!e)          Z* G d" d#e*          Z+ G d$ d%e)          Z, G d& d'e)          Z- G d( d)e)          Z.dS )+z>

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	-
)c   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   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   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   )cUSAr   r   r   r   r   r   r   r   r   Francer   r   r   r   r   r   r   r   r   Japanr   r   r   r   Germanyr   r   Swedenr   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   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   r   r   r   z\s+python)sepheaderengine)RustBrandReplication)idx	TreatmentStressReductionr   c                 ,    |                      d          S Nzutf-8encodevs    e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/tests/test_pairwise.py<lambda>r'      s    AHHW4E4E     r   Reliefz\t)pairmeanloweruppersig)r*   r.   c                 ,    |                      d          S r!   r"   r$   s    r&   r'   r'      s    (9(9 r(   )         皙?c                    t          j        | j                                        t	          | j                            }| j        j        }| j        j        }t          |||d |t          d|z
  t	          |          |dz
  
                                                    }| j                                        |dz
  z  
                                |dz
  
                                z  }t          ||d           |S )N)ddofr0   )dfalphaq_critg      ?   decimal)npvar
groupstatsgroupdemeanlengroupsunique	groupmean	groupnobsr   r
   sumgroupvarwithinr   )mcir7   var_meansnobsresivar2s          r&   get_thsdrL      s    6#.,,..S9I5J5JKKKDN$E>#DE4$e"1U7CJJaGGI I ID N))++tby9>>@@;?"9//:K:KLD dB////Kr(   c                       e Zd Zed             Zd Zd Zd Zej	        j
        ej	        j        d                         ZdS )CheckTuckeyHSDMixinc                     t          | j        | j                  | _        | j                            | j                  | _        d S )Nr7   )r   endoggroupsmcr   r7   resclss    r&   setup_class_z CheckTuckeyHSDMixin.setup_class_   s4     CJ77&//	/22r(   c                     t          | j        j        | j        d           t          | j        j        | j        d           t          | j        j        | j                   d S )Nr9   r:   r2   )	r   rT   	meandiffs	meandiff2confintconfint2r   rejectreject2selfs    r&   test_multicomptukeyz'CheckTuckeyHSDMixin.test_multicomptukey   sV    DH.KKKKDH,dmQGGGGTX_dl33333r(   c                 v    t          | j        | j                  }t          |d         | j        d           d S )NrP   r   r2   r:   )rL   rS   r7   r   r\   )r`   res_ts     r&   test_group_tukeyz$CheckTuckeyHSDMixin.test_group_tukey   s9    
333E!HdmQ??????r(   c                     t          | j        | j        | j                  }t	          |j        | j        j        d           d S )NrP   r9   r:   )r   rQ   rR   r7   r   r[   rT   )r`   rT   s     r&   test_shortcut_functionz*CheckTuckeyHSDMixin.test_shortcut_function   s>    
DKtzJJJCK)92FFFFFFr(   c                     | j                                          | j         j        d         }| j                             |           d S )Nr0   )comparison_name)rT   _simultaneous_cirA   plot_simultaneous)r`   close_figures	references      r&   test_plot_simultaneous_ciz-CheckTuckeyHSDMixin.test_plot_simultaneous_ci   sF     	!!###H)!,	""9"=====r(   N)__name__
__module____qualname__classmethodrW   ra   rd   rf   pytestmarksmoke
matplotlibrm    r(   r&   rN   rN      s        3 3 [34 4 4
@ @ @G G G
 [[> >  > > >r(   rN   c                   0    e Zd Zed             Zd Zd ZdS )TestTuckeyHSD2c                 R   t           d         | _        t           d         | _        d| _        |                                  t          j        g d                              ddd          }|d d d	f         | _        |d d d
df         | _	        |d d df         }|dk     | _
        d S )Nr   r   r3   )g      ?r0   g      gwIQ?gm]ƿg@,gTUh m@gTUh m@gD1uW?gg֬?gES?gz?r1   r   Forderr   r0   dta2rQ   rR   r7   rW   r<   arrayreshaperZ   r\   r^   rV   
tukeyhsd2spvalss      r&   setup_classzTestTuckeyHSD2.setup_class   s     *+	+&
	 X J J J     !(!3 7 7 	 #111a4(!!!!QqS&)111a4 dlr(   c                     | j         j        }g d}t          dd          D ]F}||         d         j        }||         d         j        }t	          ||f||dz
           k               Gd S )N)   medical   mental)r      physical)r   r   r0   r   r   )rT   _results_tablerangedatar   )r`   texpected_orderifirst_groupsecond_groups         r&   $test_table_names_default_group_orderz3TestTuckeyHSD2.test_table_names_default_group_order   s    H#4 4 4 q! 	J 	JAA$q',KQ47<L[,/>!a%3HHIIII	J 	Jr(   c                 <   t          | j        | j        g d          }|                    | j                  }|j        }g d}t          dd          D ]F}||         d         j        }||         d         j        }t          ||f||dz
           k               Gd S )N)r   r   r   group_orderrP   ))r   r   )r   r   r   r0   r   r   )	r   rQ   rR   r   r7   r   r   r   r   )r`   rS   rT   r   r   r   r   r   s           r&   #test_table_names_custom_group_orderz2TestTuckeyHSD2.test_table_names_custom_group_order   s     TZ)M)M)MO O Okk
k++3 3 3 q! 	J 	JAA$q',KQ47<L[,/>!a%3HHIIII	J 	Jr(   N)rn   ro   rp   rq   r   r   r   rv   r(   r&   rx   rx      sS        # # [#"
J 
J 
JJ J J J Jr(   rx   c                   4     e Zd Ze fd            Zd Z xZS )TestTuckeyHSD2Pandasc                     t                                                       t          j        | j                  | _        t          j        | j        t                    | _        d S )N)dtype)superr   pdSeriesrQ   rR   object)rV   	__class__s    r&   r   z TestTuckeyHSD2Pandas.setup_class   sH    Ici((	Ysz888


r(   c           	      v   t          j        t                    5  t          t	          j        dgdz            ddgdz             d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        dgdz            ddgdz             d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        dgdz            dgdz             d d d            n# 1 swxY w Y   t          j        d          5 }t          j        d           t          t          t          t	          j        dgdz            ddgd	z  dg
           d d d            n# 1 swxY w Y   t	          j
        d          }t	          j        g dd	          }t          j        d          5 }t          j        d           t          t	          j        |          |ddg
          }t          t          |          d           t          |d         j        t                     sJ 	 d d d            n# 1 swxY w Y   |                    d          }t          t	          j        |d d                   |d d                   }|                    d          }g d}|D ]6}	|	dz   }
t%          t'          ||	          t'          ||	          d|
           7g d}|D ]6}	|	dz   }
t%          t'          ||	          t'          ||	          d|
           7d S )Nr0   
   r2   r   r   T)recordalways   r      )r0   r2   r1   r   {Gz?rP   )r[   r   df_totalrR   rA   rY   r8   r]   r^   	std_pairsvariancefailedg+=)rtolerr_msg)r   dataligroupintlabrR   rA   ngroupsrI   pairindices)rr   raises
ValueErrorr   r<   r   warningscatch_warningssimplefilterr	   arangerepeatr   r@   
issubclasscategoryUserWarningr   r   getattr)r`   wr   rR   mod1res1mod2res2
attributesattr   s              r&   test_incorrect_outputz*TestTuckeyHSD2Pandas.test_incorrect_output  sq   ]:&& 	< 	<BHaS2X..A
;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]:&& 	< 	<BHaS2X..A
;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]:&& 	: 	:BHaS2X..b999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: $D111 	6Q!(+++*orxb7I7IQ!!6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 y}}999a(($D111 	:Q!(+++"28D>>61vNNNDQ###adm[999999		: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: }}4}((rxSbS	22F3B3K@@}}4}((! ! !
  	- 	-CHnGGD#..c0B0B$+- - - - -8 8 8
 	- 	-CHnGGD#..c0B0B$+- - - - -	- 	-s[   ,AAA6,B..B25B2+D		DD)AFFFA:III)rn   ro   rp   rq   r   r   __classcell__)r   s   @r&   r   r      sQ        9 9 9 9 [9,- ,- ,- ,- ,- ,- ,-r(   r   c                   $    e Zd Zed             ZdS )TestTuckeyHSD2sc                 r   t           d         dd         | _        t           d         dd         | _        d| _        |                                  t          j        g d                              ddd	          }|d d d
f         | _        |d d ddf         | _	        |d d df         }|dk     | _
        d S )Nr   r1      r   r   )g88?gqq?gr>E?g-zg8Krgɏk@g˻@ghZ?ghM>g?g;Ug$B?g+4?r   rz   r{   r   r0   r}   r   s      r&   r   zTestTuckeyHSD2s.setup_class2  s     *+AbD1	+&qt,
	 X> > >  '!AS'))	 	
 #111a4(!!!!QqS&)111a4 dlr(   Nrn   ro   rp   rq   r   rv   r(   r&   r   r   1  s-        # # [# # #r(   r   c                   $    e Zd Zed             ZdS )TestTuckeyHSD3c                 v   t           d         | _        t           d         | _        d| _        |                                  t
          d         | _        t
          ddg                             t                    j	        
                    d          | _        t
          d         t          d	          k    | _        d S )
Nr)   r   r3   r+   r,   r-   )r1   r2   r.   z***)dta3rQ   rR   r7   rW   sas_rZ   astypefloatvaluesr   r\   r   r^   rU   s    r&   r   zTestTuckeyHSD3.setup_classH  s     N	']
	 VWW-.55e<<CKKFSS5kWU^^3r(   Nr   rv   r(   r&   r   r   F  s-        
4 
4 [
4 
4 
4r(   r   c                   *    e Zd Zed             Zd ZdS )TestTuckeyHSD4c                    t           | _        t          | _        d| _        |                                  | j                                         t          j	        g d          | _
        t          j	        g d          | _        t          j	        g d                              dd          | _        t          j	        g d          | _        d S )Nr3   )gf]?gX?g茠:,?gR0@gaZ?)
g qq?g ?g        &~FQ@g llg qq̿ga @g gm5x@@r   )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@r   r2   )
FFFTFFTFTF)	cylindersrQ   
cyl_labelsrR   r7   rW   rT   ri   r<   r   
halfwidth2rZ   r   r\   r^   rU   s    r&   r   zTestTuckeyHSD4.setup_classX  s     	
	  """  #M #M #M N N "Z "Z "Z [ [ x !< !< !< = = >EWR]]	 	
 heeeffr(   c                 F    t          | j        j        | j        d           d S )Nr   )r   rT   
halfwidthsr   r_   s    r&   test_hochberg_intervalsz&TestTuckeyHSD4.test_hochberg_intervalsn  s!    DH/!DDDDDr(   N)rn   ro   rp   rq   r   r   rv   r(   r&   r   r   V  sD        g g [g*E E E E Er(   r   )r3   )/__doc__statsmodels.compat.pythonr   ior   r   numpyr<   pandasr   rr   numpy.testingr   r   r   r   r	   statsmodels.stats.libqsturngr
   statsmodels.stats.multicompr   r   r   ssss2ss3ss5r   r   r   read_csvdtacolumnsr~   mapr   dta5colilocr   rL   rN   rx   r   r   r   r   rv   r(   r&   <module>r      s    . - - - - -                              1 0 0 0 0 0: : : : : : : : : :(V @
" BH M M M N N	 RX W W W X X
 WR[[gcllgcllgcllbk''"++6$xHHH,r{773<<VDJJJ4%))*E*EFF[ r{773<<VDJJJ"r{773<<U4III888 ; ;CS	99::DIIy   > > > > > > > >:.J .J .J .J .J( .J .J .Jb6- 6- 6- 6- 6-> 6- 6- 6-r# # # # #) # # #*4 4 4 4 4( 4 4 4 E E E E E( E E E E Er(   