U
    Kvf%+                     @   s   d Z ddlZddlmZmZmZ ddlZddlm	Z	m
Z
mZ ddlm  mZ ddlmZ ddlmZ G dd dZG d	d
 d
ZG dd dZdS )z>

Created on Fri Aug 16 13:41:12 2013

Author: Josef Perktold
    N)assert_equalassert_allcloseassert_raises)TrimmedMean	trim_meantrimboth)Holder)trim1c                   @   s$   e Zd Zdd Zdd Zdd ZdS )	Test_Trimc                 C   sr   t d}tt|dt d tt|dt d tt|dddt dd tt|d	ddt d
d d S )N   g?
   皙?	   left)tail   tE]t?   )nparanger   r	   )selfa r   O/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/stats/tests/test_robust_compare.pyt_est_trim1   s
    
zTest_Trim.t_est_trim1c                 C   s   t d}t ddd}t djdddd}tt|dt dd	 tt|d
t ddddddd	g tt|d
t dddd tt|dt dd	ddgddddgg tttt dddjd d S )Nr            Forderr   r      r   r            UUUUUU?   r         gUUUUUU?)	r   r   reshaper   r   arrayr   
ValueErrorT)r   r   a2a3r   r   r   test_trimboth#   s    
$

 zTest_Trim.test_trimbothc           
      C   s  t ddddddg}t ddd|d d f }t djddd	d
|d d f }tt|dt ddddg tt|dt ddddg t ddddg}t ddd|d d f }tt|dt 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$dd%d&dg}tt|dd' ttddddddgdd t jd( t jjd#d)d*}d+D ]0}t|d|d,}tt 	||d}	t||	 qjt|dd d,}t|
 d}	t||	 d S )-Nr   r"   r      r   r   r   r   r   r   r%   g      @g      !@g      -@g     4@g      $@g      &@g      (@g      *@g      "@g      ,@r#   r      r(            r      r      r'      r$   r&      r!   g      '@i  )r"   r   r   r#   )size)r   r0   r   r   axis)r   r*   r   r)   r   r   randomseedrandintZrollaxisZravel)
r   idxr-   r.   Zidx4Za4r   r<   Zres1Zres2r   r   r   test_trim_mean1   sJ    "


          zTest_Trim.test_trim_meanN)__name__
__module____qualname__r   r/   rA   r   r   r   r   r
      s   r
   c                   @   sV   e Zd Zedd Zedd Zdd Zdd Zd	d
 Ze	j
dddgdd ZdS )TestTrimmedR1c                 C   sN   t ddddddddd	d
dddddddddg}|   t|| jd | _d S )NM   W   X   r                  i  i(  i+  i2  ix  i  i  i  i  i3
  r6   )r   r*   get_resultsr   ktmclsxr   r   r   setup_classS   s          zTestTrimmedR1.setup_classc                 C   sl   d| _ tdddddg| _t }d|_d|_d	|_td
dg|_d|_	d|_
d|_d|_d|_|| _d S )Nr0   gHKKKKku@gkdW@g'w@g9D<W@gw@gURP@r2   g&_?g^b@g#͑ӐӀ@r   z	two.sidedz-One sample Yuen test, trim=0.0526315789473684rT   )rP   r   r*   	res_basicr   	statistic	parameterp_valueconf_intestimateZ
null_valuealternativemethodZ	data_nameytt1)rS   r^   r   r   r   rO   [   s&       zTestTrimmedR1.get_resultsc                 C   sp   | j }t|jd t|jd t|j| jd  t|jjd |j |j|j	|j
|j|jg}t|| jdd d S )Nr6   r5   r   gV瞯<Zrtol)rQ   r   nobsnobs_reducedfractionrP   Zdata_trimmedshapemean_trimmedstd_mean_trimmedmean_winsorizedstd_mean_winsorizedvar_winsorizedr   rV   )r   rQ   resr   r   r   
test_basicp   s     zTestTrimmedR1.test_basicc                 C   s   | j }| j}| }t|d |jdd t|d |jdd t|d |j t|j|j	dd d\}}}|jdd}t|d |dd t|d |dd t|d | d S )	Nr   vIh%<=r_   r0   r   )g\Ks\@gBxRK?r2   
winsorizedZ	transform)
r^   rQ   
ttest_meanr   rW   rY   r   rX   rd   r[   )r   r^   rQ   ZtttZttw_statisticZ
ttw_pvalueZtt_w_dfZttwr   r   r   test_inference{   s    
zTestTrimmedR1.test_inferencec                 C   s"   | j }|d}t|j|j d S )Ng        )rQ   Zreset_fractionr   ra   r`   )r   rQ   Ztm2r   r   r   
test_other   s    
zTestTrimmedR1.test_otherr<   r   r0   c                 C   s  | j }|j}t|d| f}|dkr<t|| jd dd}nt|j| jd dd}|jd|j g}t|j|dd |j	d|j	 g}t|j	|dd |j
d|j
 g}t|j
|dd |jd|j g}t|j|dd |jd|j g}t|j|dd | \}}}	| \}
}}t||
|
gdd t|||gdd t|	|dd |jd	d
\}}}	|jd	d
\}
}}t||
|
gdd t|||gdd t|	|dd d S )Nr   r   r6   r;   r0   rk   r_   r   rl   rm   )rQ   datar   Zcolumn_stackr   rP   r,   rd   r   rh   re   rf   rg   rn   )r   r<   rQ   rT   Zx2Ztm2dt1s2Zpv2df2spvdfr   r   r   test_vectorized   s4    zTestTrimmedR1.test_vectorizedN)rB   rC   rD   classmethodrU   rO   rj   ro   rp   pytestmarkZparametrizerx   r   r   r   r   rE   Q   s   

rE   c                   @   s,   e Zd Zedd Zedd Zdd ZdS )TestTrimmedRAnovac                 C   s   t ddd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gt dddddd d!d"d#d$dd%d&d'gg}|| _|   d S )(Ng     @|@g     P@g     P@g     {@g     @v@g     @g     p@g     @g     @g     P@g     @g     0{@g     n@g     @g     0@g     }@g     |@g     Ȅ@g     0}@g     v@g     h@g     @g     |@g     X@g     p@g     Ȁ@g     @g     |@g     @g     @g     @g     Ȋ@g     @g      @g     @g     @g     @g     @g     ؉@)r   r*   rT   rO   rR   r   r   r   rU      s2                 zTestTrimmedRAnova.setup_classc                 C   s   dddg| _ tdddddd	| _td
tddgddddd| _tdtddgdddd| _tdtddgddd| _tdtddgdd d| _d S )!Ng;+@g     l@gn۶mے@g-S>q!@r   gj[3@g?1]?gX?)testdf1rt   rY   effsizegp?g%]gC=X@g`0?gMG.@g@S{ gxa?)r}   rZ   rY   rw   Zdiffr   gk#Io@gqk?@gO=L@g?g?zBrown-Forsythe Test)rW   rX   rY   alphar]   g: @gͶE8@gMQa?z8One-way analysis of means (not assuming equal variances))rW   rX   rY   r]   ghh@(   g!2\?zOne-way analysis of means)	res_mr   
res_onewayr   r*   res_2sres_bfmres_wares_fa)rS   r   r   r   rO      s@    zTestTrimmedRAnova.get_resultsc           	      C   s  | j }| j}| j}| j}| j}dd | jD }t|| jdd tj	| jddd}t|j
|jdd t|j|j|jgdd tj	| jd d ddd}t|j
|jdd t|jd	|jgdd tj	| jd
d}t|d |jdd t|j|jdd t|j|jdd tj	| jdd}t|j|jdd t|j
|jdd t|j|jdd tj	| jdd}t|j|jdd t|j
|jdd t|j|jdd d S )Nc                 S   s   g | ]}|  qS r   )Zmean).0Zx_ir   r   r   
<listcomp>   s     z1TestTrimmedRAnova.test_oneway.<locals>.<listcomp>rk   r_   Zunequalg;;?)use_varZ	trim_fracr   r0   Zbf)r   r   equal)r   r   r   r   r   rT   r   r   smoZanova_onewayZpvaluerY   rw   r~   rt   rW   Zpvalue2rX   )	r   Zr1Zr2sr   r   r   mZresgri   r   r   r   test_oneway   s6    zTestTrimmedRAnova.test_onewayN)rB   rC   rD   ry   rU   rO   r   r   r   r   r   r|      s
   

-r|   )__doc__Znumpyr   Znumpy.testingr   r   r   rz   Z statsmodels.stats.robust_comparer   r   r   Zstatsmodels.stats.onewaystatsZonewayr   Zstatsmodels.tools.testingr   Zscipy.statsr	   r
   rE   r|   r   r   r   r   <module>   s   8i