U
    mdGm                     @   s  d Z ddlZddlmZ ddlZddlmZm	Z	m
Z
 ddlmZmZmZmZmZ ddlmZ G dd dZG d	d
 d
eZG dd deZG dd deZG dd deZG dd dZG dd dZG dd deZG dd deZG dd deZG dd deZG dd deZdd  Zd!d" Z e Z!d#e!_"d$e!_#e$d%d&ge!_%e$d'd(ge!_&de!_'d)e!_(d*e!_)d+e!_*e Z+d#e+_"d,e+_#e$ej,d-ge+_%e$d'd(ge+_&de+_'d.e+_(d*e+_)d+e+_*e Z-d#e-_"d/e-_#e$d0ej,ge-_%e$d'd(ge-_&de-_'d1e-_(d*e-_)d+e-_*e Z.d2e._"d3e._#e$d%d&ge._%e$d'd(ge._&d4e._'d)e._(d*e._)d+e._*e Z/d2e/_"d5e/_#e$d0ej,ge/_%e$d'd(ge/_&d4e/_'d1e/_(d*e/_)d+e/_*e Z0d6e0_"d7e0_#e$ej,d-ge0_%e$d'd(ge0_&d8e0_'d.e0_(d*e0_)d+e0_*e Z1d9e1_"d:e1_#e$d;d<ge1_%d'e1_&d=e1_'d)e1_(d>e1_)d?e1_*e Z2d@e2_"dAe2_#e$ej,dBge2_%d'e2_&dCe2_'d.e2_(d>e2_)d?e2_*e Z3d9e3_"dDe3_#e$dEej,ge3_%d'e3_&d=e3_'d1e3_(d>e3_)d?e3_*dFdGdHdIZ4G dJdK dKZ5dLdM Z6dNdO Z7dPdQ Z8dS )Ra  tests for weightstats, compares with replication

no failures but needs cleanup
update 2012-09-09:
   added test after fixing bug in covariance
   TODOs:
     - I do not remember what all the commented out code is doing
     - should be refactored to use generator or inherited tests
     - still gaps in test coverage
       - value/diff in ttest_ind is tested in test_tost.py
     - what about pandas data structures?

Author: Josef Perktold
License: BSD (3-clause)

    N)stats)assert_assert_almost_equalassert_allclose)DescrStatsWCompareMeans	ttest_indztestzconfint)Holderc                   @   sX   e Zd ZedddZedddZdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )CheckExternalMixinr   c                 C   s   t | j| j|| _d S )N)r   dataweightsdescriptive)clsddof r   a/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/stats/tests/test_weightstats.pyget_descriptives   s    z#CheckExternalMixin.get_descriptivesdata.csvc                 C   s|   t jtt| jd}| j|d< | jjdkr:| j|d< n4t| jj	d D ]"}| jd d |f |d|d  < qJ|
| d S )N)indexr      Zdata1zdata%d)pdZ	DataFramenpZarangelenr   r   ndimrangeshapeZto_csv)r   fnamedfkr   r   r   	save_data$   s    
 zCheckExternalMixin.save_datac                 C   s   | j j}t|| jdd d S N-C6?rtol)r   meanr   )selfZmnr   r   r   	test_mean0   s    zCheckExternalMixin.test_meanc                 C   s   | j j}t|| jdd d S r"   )r   sumr   )r'   smr   r   r   test_sum4   s    zCheckExternalMixin.test_sumc                 C   s   | j j}t|| jdd d S r"   )r   varr   )r'   r,   r   r   r   test_var8   s    zCheckExternalMixin.test_varc                 C   s   | j j}t|| jdd d S r"   )r   stdr   )r'   r.   r   r   r   test_std=   s    zCheckExternalMixin.test_stdc                 C   s*   t | dsd S | jj}t|| jdd d S )Nsemr#   r$   )hasattrr   Zstd_meanr   r0   )r'   r0   r   r   r   test_semB   s    
zCheckExternalMixin.test_semc                 C   sP   t j| jt jd}dD ]4}| jj| j|d}t j|t jd}t||dd qd S )N)Zdtype)FT)return_pandasr#   r$   )r   asarray	quantilesZfloat64r   quantilequantile_probsr   )r'   Zquantr3   Zqtlr   r   r   test_quantilesJ   s    
z!CheckExternalMixin.test_quantilesN)r   )r   )__name__
__module____qualname__classmethodr   r!   r(   r+   r-   r/   r2   r8   r   r   r   r   r      s   r   c                   @   s2   e Zd ZdZdZdZdZejd Z	e
dd ZdS )	TestSim1g(?geڣ")@gGĔH?g|~?)g}\*gI2gY?gg~5?g(rwy@c                 C   sH   t jd t jjdd| _t jjdddd| _t jd | _| 	  d S )N5    sizer      r   g?      ?g      ?r   
r   randomseednormalr   uniformr   r_r7   r   r   r   r   r   setup_class]   s
    zTestSim1.setup_classNr9   r:   r;   r&   r)   r,   r.   r   rJ   r5   r<   rL   r   r   r   r   r=   S   s   
r=   c                   @   s2   e Zd ZdZdZdZdZejd Z	e
dd ZdS )		TestSim1tgOA4@gޭ,Yc@g.B@#@g~C	@)r   r         	   c                 C   s|   t jd t jjdddd| _| jdd | jdd< | jdd | jd	d< t jjdd
dd| _t jd | _| 	  d S )Nr>   r   
   r?   r@   rO            rB   rC   )
r   rF   rG   randintr   rI   r   rJ   r7   r   rK   r   r   r   rL   p   s    zTestSim1t.setup_classNrM   r   r   r   r   rN   f   s   
rN   c                   @   s6   e Zd ZdZdZdZdZdZej	d Z
edd Zd	S )
	TestSim1ng	ԿgXhg?g?gpA.?)g&jjg	3mJgN],Ͽgŏ1w?g6v?c                 C   sb   t jd t jjdd| _t jjdddd| _|  jd| j  9  _t jd | _	| 
d d S )Ni  r?   r@   r   rB   rC   r   )r   rF   rG   rH   r   rI   r   r)   rJ   r7   r   rK   r   r   r   rL      s    zTestSim1n.setup_classN)r9   r:   r;   r&   r)   r,   r.   r0   r   rJ   r5   r<   rL   r   r   r   r   rW   {   s   
rW   c                   @   sR   e Zd ZddgZddgZddgZddgZeej	d	 ej	d
 fZ
edd ZdS )TestSim2ggs˿g}#;οg݀Zggbc?gă?g<O?g!I.?)g뭁lg';zgOeg!u?gCԷL@)gtgeI)vgJ)Ŀg4k?gtv28J?c                 C   sH   t jd t jjdd| _t jjdddd| _t jd | _| 	  d S )Ni  )r?      r@   r   rB   r?   rC   rE   rK   r   r   r   rL      s
    zTestSim2.setup_classN)r9   r:   r;   r&   r)   r,   r.   r   Zcolumn_stackrJ   r5   r<   rL   r   r   r   r   rX      s   rX   c                   @   sH   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dS )TestWeightstatsc                 C   s   t jd d\}}d\}}|t j| }|t j| }|t j|d }|t j|d }t jdd|}	t jdd|}
|| | _| _|	|
 | _| _|| | _	| _
d S )Nr>   r?   r?   r   g333333?rB   r      )r   rF   rG   randnrV   x1x2w1w2x1_2dx2_2d)r   n1n2m1m2r_   r`   rc   rd   ra   rb   r   r   r   rL      s    zTestWeightstats.setup_classc                 C   s   | j | j }}| j| j }}dtt| }dtt| }t|}tt	||||fdd d t
	tj||f tj||f  d S )Ng       @r   rY   )r_   r`   ra   rb   r   onesr   r   r   r   r   rJ   )r'   r_   r`   ra   rb   Zw1_Zw2_d1r   r   r   test_weightstats_1   s    	z"TestWeightstats.test_weightstats_1c           
      C   s  | j | j }}| j| j }}t|}t||d}t||d}| }| }	tt||||fdd d t||	d t|		d|j	d t|	
 |j
d t|	 |jd ttj|	dd|jd t|dd d t|dd t|dd d t|dd d S )	Nri   rY      r   r   ZbiasrB      )r_   r`   ra   rb   r   	asrepeatsr   r   r   r&   r,   r.   r   cov
ttest_meanttest_1samp)
r'   r_   r`   ra   rb   rk   d1wd2wx1rx2rr   r   r   test_weightstats_2   s(    
 	"
 z"TestWeightstats.test_weightstats_2c                 C   s  | j | j }}| j| j }}t||d}t||d}| }| }t|d|jd t|d|jd t|	d|j	d tt
j|jdd|jd tt
|j|jd |d\}	}
}t|	|
gt|dd t||}| }t||}t|d d |d d S )	Nri   r   rm   r   rn   rB   ro   rY   )rc   rd   ra   rb   r   rp   r   r&   r,   r.   r   rq   Tcorrcoefrr   r   rs   r   r   )r'   rc   rd   ra   rb   Zd1w_2dZd2w_2dZx1r_2dZx2r_2dtpdcmZressmZresssr   r   r   test_weightstats_3   s"    
z"TestWeightstats.test_weightstats_3c           	      C   s   | j }| j}t||dd}t||dd}t||dd}| }| }| }ttj| tj| d ttj| tj| d |d}|d}|d}ttj| tj| d ttj| tj| d | }| }| }t||d t||d d S )Nr   r   r   r   rY   rm   rD   )rc   ra   r   rr   r   r   rJ   tconfint_mean)	r'   rc   ra   Zd1w_d0Zd1w_d1Zd1w_d2res0res1res2r   r   r   test_weightstats_ddof_tests  s(    


z+TestWeightstats.test_weightstats_ddof_testsc                 C   s   | j | j }}t|}t|}t||}ddlm} dD ]*}dD ] }|j||d}	tt|	| q@q8t	||}
tt
| t
|
 k d S Nr   )SimpleTable)TF)pooledunequal)use_tusevar)rc   rd   r   r   statsmodels.iolib.tabler   summaryr   
isinstance	from_datastrr'   rc   rd   rk   d2cm1r   r   r   Zsmrycm2r   r   r   &test_comparemeans_convenient_interface+  s    
z6TestWeightstats.test_comparemeans_convenient_interfacec                 C   s   | j | j }}t|}t|}t||}ddlm} dD ]*}dD ] }|j||d}	tt|	| q@q8t	||}
tt
| t
|
 k d S r   )r_   r`   r   r   r   r   r   r   r   r   r   r   r   r   r   )test_comparemeans_convenient_interface_1d<  s    
z9TestWeightstats.test_comparemeans_convenient_interface_1dN)r9   r:   r;   r<   rL   rl   rx   r   r   r   r   r   r   r   r   rZ      s   
# rZ   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
CheckWeightstats1dMixinc                 C   s   | j }| j}t|d|jd t|jd|jd|jd t|jd|jd|jd |jdd}t|jddd|d |jdd}t|jddd|d tt	j
|jd|j d|j
d d S )Nr   rm   )r   r   rn   )rv   rt   r   r&   r,   r   r.   Zvar_ddofZstd_ddofr   rq   ry   )r'   rv   rt   Zvar1Zstd1r   r   r   
test_basicQ  s    z"CheckWeightstats1dMixin.test_basicc                 C   s2   | j }| j}t|dd d t|dd d S )NrB   rY   ro   )rv   rt   r   rr   r   rs   r'   rv   rt   r   r   r   
test_ttesta  s    
 z"CheckWeightstats1dMixin.test_ttestc                 C   s  | j | j }}| j| j }}| j| j }}t||}tt||||fdd d |d t	t
||ddt
||dd}t| d d |d t	t
||ddt
||dd}t| d d |d t	t
||ddt
||dd}	t	t
||ddt
||dd}
t	t
||ddt
||dd}|	jdd}|
jdd}|jdd}t||d t||d |	jd	d}|
jd	d}|jd	d}t||d t||d |	jdd}|
jdd}|jdd}t||d t||d d S )
Nri   rY   rm   r   r   r   r   r   r   )r_   r`   rv   rw   ra   rb   r   r   r   r   r   Ztconfint_diff)r'   r_   r`   rv   rw   ra   rb   Zres_spr~   Zcm0r   r   r   r   r   r   r   r   test_ttest_2samplek  sP     z*CheckWeightstats1dMixin.test_ttest_2samplec                 C   s   | j }d}| \}}||\}}}t||t|j d ||\}}}t||t|j d |t||f\}}}t||t|j d d S )Ng?rP   )rt   r   rr   r   r   rj   r   Zvstack)r'   rt   alphalowZuppr{   r|   r}   r   r   r   test_confint_mean  s    z)CheckWeightstats1dMixin.test_confint_meanN)r9   r:   r;   r   r   r   r   r   r   r   r   r   O  s   
-r   c                   @   s   e Zd Zdd ZdS )CheckWeightstats2dMixinc                 C   s&   | j }| j}tt|j|jd d S )Nrm   )rv   rt   r   r   rz   ry   r   r   r   r   	test_corr  s    z!CheckWeightstats2dMixin.test_corrN)r9   r:   r;   r   r   r   r   r   r     s   r   c                   @   s   e Zd Zedd ZdS )TestWeightstats1d_ddofc           	      C   s   t jd d\}}d\}}|t j|d }|t j|d }t jdd|}t jdd|}|| | _| _|| | _| _t	||dd| _
t	||dd| _| j
 | _| j | _d S )Nr>   r[   r\   r   r]   r   r   rF   rG   r^   rV   r_   r`   ra   rb   r   rt   ru   rp   rv   rw   	r   re   rf   rg   rh   r_   r`   ra   rb   r   r   r   rL     s    z"TestWeightstats1d_ddof.setup_classNr9   r:   r;   r<   rL   r   r   r   r   r     s   r   c                   @   s   e Zd Zedd ZdS )TestWeightstats2dc           	      C   s   t jd d\}}d\}}|t j|d }|t j|d }t jdd|}t jdd|}|| | _| _|| | _| _t	||d| _
t	||d| _| j
 | _| j | _d S )Nr>   r[   r\   rB   r   r]   ri   r   r   r   r   r   rL     s    zTestWeightstats2d.setup_classNr   r   r   r   r   r     s   r   c                   @   s   e Zd Zedd ZdS )TestWeightstats2d_ddofc           	      C   s   t jd d\}}d\}}|t j|d }|t j|d }t jdd|}t jdd|}|| | _| _|| | _| _t	||dd| _
t	||dd| _| j
 | _| j | _d S )Nr>   r[   r\   rB   r   r]   r   r   r   r   r   r   rL     s    z"TestWeightstats2d_ddof.setup_classNr   r   r   r   r   r     s   r   c                   @   s   e Zd Zedd ZdS )TestWeightstats2d_nobsc           	      C   s   t jd d\}}d\}}|t j|d }|t j|d }t jdd|}t jdd|}|| | _| _|| | _| _t	||dd| _
t	||dd| _| j
 | _| j | _d S )	Nr>   )r?      r\   rB   r   r]   r   r   r   r   r   r   r   rL     s    z"TestWeightstats2d_nobs.setup_classNr   r   r   r   r   r     s   r   c                  C   sp   d} d}d}d}t | |dd\}}}t||g||gd d} d	}d
}t | |dd\}}}t||g||gd d S )N)r   rY   rB   )g?g333333@g@g9(?ger   r      )r   rY   rB   r]   gJ?g*ʿ)r   r   )abprtrr{   r|   r   r   r   r   test_ttest_ind_with_uneq_var  s    r   c            
      C   sP  dd l m  m}  ddg}ddg}| jdddd}t||}|d}t||dd	d
 t|t|d d }|d}t	||dd |
dd}| dddd}t	|d |d dd ddg}ddg}t||}t| | }| tddgtddg}t|d |d dd t|| }	t|	d |d dd t	|	|dd d S )Nr   r   rO   rS   g      4@rD   )valuegQ?g~jth?r%   Zatolg      5@r?      )decimalg?g333333?rR   r$   )Zstatsmodels.stats.proportionr   Z
proportionZproportions_ztestr   
ztest_meanr   r   arrayr   Z
ztost_meanZproportions_ztostr	   rp   Zproportions_chisquarer4   r   	ztest_ind)
Zsmpropr_   ra   r   rk   r   r   r`   rb   Zres1ar   r   r   test_ztest_ztost  s0    



r   g}y4S4@gWCf=gOǯ?gfa?@g)A@g@	two.sidedzTwo-sample z-Testzx and yg4?g/In@lessg   @f=g/3	?greatergK͎@gNs?r   gc?g*,g9O*?rY   g[-@g띏F)>gj2@gO+@皙@zOne-sample z-Testxgcg@,j?g q@皙@gF)>g&@ZsmallerZlargerz	two-sided)r   r   r   c                   @   s    e Zd Zedd Zdd ZdS )	TestZTestc                 C   sj   t ddddddddd	d
dg| _t ddddddddg| _t| j| _t| j| _t| j| j| _d S )Ng333333@gffffff@g      @r   g333333@g      @r   gffffff@g@gffffff@g333333@g      @g@gffffff@g      @gffffff@g      @)	r   r   r_   r`   r   rk   r   r   r~   rK   r   r   r   rL     s       zTestZTest.setup_classc           
      C   sj  | j | j }}| j}ttttttfD ]*}t	|||j
t|j d\}}t||jdd t||jddd |j|j
t|j d\}}t||jdd t||jddd |j }t|d rtj |d< t|d rtj|d< t||dt|j d}t||dd |jt|j d}t||dd t|||j
t|j d}t|||j
 dd q$| j}	tttfD ] }t	||j
t|j d\}}t||jdd t||jddd |	j|j
t|j d\}}t||jdd t||jddd |j }t|d rtj |d< t|d r tj|d< t|dt|j d}t||dd |	jt|j d}t||dd qbd S )	N)r   alternativeg|=r$   gؗҜ<r   r   r   )r   )r_   r`   r~   ztest_ztest_smallerztest_largerztest_muztest_smaller_muztest_larger_mur	   
null_valuealternativesr   r   	statisticp_valuer   conf_intcopyr   isnaninfr
   Zzconfint_diffrk   ztest_mu_1sztest_smaller_mu_1sztest_larger_mu_1sr   Zzconfint_mean)
r'   r_   r`   r~   ZtcZzstatZpvalZtc_conf_intcirk   r   r   r   test  sn      










zTestZTest.testN)r9   r:   r;   r<   rL   r   r   r   r   r   r     s   
r   c                  C   s6   dg} dg}t | |}|dddgdk s2td S )Nr   g        rD         ?r   r6   allAssertionErrorr_   ra   rk   r   r   r   test_weightstats_len_1  s    
r   c                  C   sX   dgdgg} dgdgg}t | |}ttt|j |ddgdk  sTtd S )Nr   rY   rD   r   )	r   printr   r   r   r   r6   r   r   r   r   r   r   test_weightstats_2d_w1  s
    
r   c                  C   s>   dgg} dgg}t | |}|dddgdk  s:td S )Nr   r   rD   r   r   r   r   r   r   test_weightstats_2d_w2  s    
r   )9__doc__numpyr   Zscipyr   Zpandasr   Znumpy.testingr   r   r   Zstatsmodels.stats.weightstatsr   r   r   r	   r
   Zstatsmodels.tools.testingr   r   r=   rN   rW   rX   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   estimater   r   methodZ	data_namer   nanr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   6 *V	)O