U
    Ãmœdƒ  ã                   @   s¸  d Z ddlZddlmZmZmZmZ ddlZddl	m
Z
 ddlmZ ddlmZmZ ddlm
  mZ ddlmZ ddlmZ d	d
lmZ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eƒZ!G dd„ dƒZ"G dd„ dee"ƒZ#G dd„ dee"ƒZ$G dd„ dee"ƒZ%G dd „ d eƒZ&G d!d"„ d"e&e"ƒZ'G d#d$„ d$e&e"ƒZ(G d%d&„ d&e&e"ƒZ)G d'd(„ d(e&e"ƒZ*G d)d*„ d*e&e"ƒZ+G d+d,„ d,e&e"ƒZ,G d-d.„ d.e&e"ƒZ-G d/d0„ d0e&e"ƒZ.G d1d2„ d2e&e"ƒZ/G d3d4„ d4e&e"ƒZ0G d5d6„ d6e&e"ƒZ1G d7d8„ d8eƒZ2G d9d:„ d:e2e"ƒZ3G d;d<„ d<e2e"ƒZ4G d=d>„ d>e2e"ƒZ5G d?d@„ d@ƒZ6dAdB„ Z7ej8 9dCdDi fdEi fdFi fdGi fdHi fdIdJdKifdLdMe :dN¡dO ifg¡dPdQ„ ƒZ;dS )RzrTesting OLS robust covariance matrices against STATA

Created on Mon Oct 28 15:25:14 2013

Author: Josef Perktold
é    N)Úassert_allcloseÚassert_equalÚassert_raisesÚassert_warns)Ústats)Ú	macrodata)ÚOLSÚWLS)ÚInvalidTestWarning)Úadd_constanté   )Ú#results_grunfeld_ols_robust_clusterÚresults_macro_ols_robustc                   @   sL   e Zd Zdd„ Zejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZ	d	d
„ Z
dS )ÚCheckOLSRobustc                 C   sR   | j }| j}t| ddƒ}t|j|j|d� t| j|j|d� t| j|j|d� d S ©NÚrtolç»½×Ùß|Û=©r   )	Úres1Úres2Úgetattrr   ÚparamsÚ
bse_robustÚbseÚ
cov_robustZcov)Úselfr   r   r   © r   úd/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/regression/tests/test_robustcov.pyÚ
test_basic"   s    zCheckOLSRobust.test_basicc                 C   s2   | j }t t|jƒ¡}|j|| jd�}| ¡  d S ©N©Zcov_p)r   ÚnpÚeyeÚlenr   Út_testr   Úsummary©r   r   ÚmatÚttr   r   r   Útest_t_test_summary*   s    z"CheckOLSRobust.test_t_test_summaryc                 C   s2   | j }t t|jƒ¡}|j|| jd�}| ¡  d S r   )r   r!   r"   r#   r   r$   r   Zsummary_framer&   r   r   r   Útest_t_test_summary_frame3   s    z(CheckOLSRobust.test_t_test_summary_framec                 C   s:   | j }t t|jƒ¡}|j|d d… | jd�}| ¡  d S )Néÿÿÿÿr    )r   r!   r"   r#   r   Úf_testr   r%   )r   r   r'   Úftr   r   r   Útest_f_test_summary;   s    z"CheckOLSRobust.test_f_test_summaryc           
      C   s–  | j }| j}t| ddƒ}t| ddƒ}t t|jƒ¡}|j|| jd�}t	|j
|j|d� t	|j|j|d� t	|j|j|d� | jr˜t	|j|jd| d� n.tj t |j¡¡d }t	||jd| d	d
� |j|d d… | jd�}| j�rt	|j|j|d� t|dƒ�rLt	|j|j|d� n4t| ddƒ�sL|jd |j }	t	|j|	 |j|d� t|dƒ�rvt|j|jƒ t|j |j!ƒ nt|j|j"ƒ t|j |j#ƒ d S )Nr   r   Úrtolhçê-�™—q=r    r   é   é   gÙ}ÚõÐò¾:©r   Zatolr+   ÚFpÚskip_fFç      ð?Údf_r)$r   r   r   r!   r"   r#   r   r$   r   r   ÚeffectÚsdr   ÚtvalueÚtvaluesÚsmallÚpvalueÚpvaluesr   ZnormZsfÚabsr,   ÚfvalueÚFÚhasattrr4   Údf_residÚnobsr   Zdf_numÚdf_mZdf_denomr7   ZFdf1ZFdf2)
r   r   r   r   r/   r'   r(   Úpvalr-   Zdof_corrr   r   r   Ú
test_testsC   s4    zCheckOLSRobust.test_testsN)Ú__name__Ú
__module__Ú__qualname__r   ÚpytestÚmarkÚsmoker)   r*   r.   rG   r   r   r   r   r   !   s   


r   c                   @   s(   e Zd Zdd„ Zedd„ ƒZdd„ ZdS )ÚTestOLSRobust1c                 C   s(   | j }|j| _|j| _d| _tj| _d S ©NT)	r   ÚHC1_ser   Úcov_HC1r   r<   ÚresZresults_hc0r   ©r   Úres_olsr   r   r   Úsetup_methodo   s
    zTestOLSRobust1.setup_methodc                 C   sv   t  ¡ j}dt t |d j¡¡ }dt t |d j¡¡ }ttj||d d d… jf dd�}t	||ƒ 
¡ | _d S )Ni�  ZrealgdpZrealinvZrealintr+   F©Úprepend)r   Úload_pandasÚdatar!   ÚdiffÚlogÚvaluesr   Zc_r   Úfitr   )ÚclsZd2Zg_gdpZg_invZexoggr   r   r   Úsetup_classv   s    
 ÿzTestOLSRobust1.setup_classc                 C   s$   | j jjdd�}t| j j|jƒ d S )NÚqr)Úmethod)r   Úmodelr]   r   ÚHC0_se)r   r   r   r   r   Útest_qr_equiv�   s    zTestOLSRobust1.test_qr_equivN)rH   rI   rJ   rU   Úclassmethodr_   rd   r   r   r   r   rN   l   s   

rN   c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobust2c                 C   s(   | j }|j| _|j| _d| _tj| _d S rO   )	r   rP   r   rQ   r   r<   rR   Úresults_ivhc0_smallr   rS   r   r   r   rU   Š   s
    zTestOLSRobust2.setup_methodN©rH   rI   rJ   rU   r   r   r   r   rf   ‡   s   rf   c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobust3c                 C   s(   | j }|j| _|j| _d| _tj| _d S )NF)	r   rc   r   Úcov_HC0r   r<   rR   Úresults_ivhc0_larger   rS   r   r   r   rU   –   s
    zTestOLSRobust3.setup_methodNrh   r   r   r   r   ri   “   s   ri   c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobustHacSmallc                 C   s>   | j }tj|ddd�}t |¡}|| _|| _d| _tj| _	d S )Né   T©ZnlagsÚuse_correction)
r   ÚswÚcov_hac_simpleÚse_covr   r   r<   rR   Úresults_ivhac4_smallr   ©r   rT   Úcov1Úse1r   r   r   rU   ¢   s    
z"TestOLSRobustHacSmall.setup_methodNrh   r   r   r   r   rl   Ÿ   s   rl   c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobustHacLargec                 C   s>   | j }tj|ddd�}t |¡}|| _|| _d| _tj| _	d S )Nrm   Frn   )
r   rp   rq   rr   r   r   r<   rR   Zresults_ivhac4_larger   rt   r   r   r   rU   °   s    
z"TestOLSRobustHacLarge.setup_methodNrh   r   r   r   r   rw   ­   s   rw   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	j
dd„ ƒZdS )ÚCheckOLSRobustNewMixinc                 C   s4   t | ddƒ}t| j| j|d� t| j| j|d� d S r   )r   r   r   Úcov_robust2r   Úbse_robust2©r   r   r   r   r   Útest_compare¾   s    z#CheckOLSRobustNewMixin.test_comparec                 C   s`   t | ddƒsRt | ddƒ}t| jj| jj|d� t| jdƒr\t| jj| jj|d� n
t	 
d¡‚d S )Nr5   Fr   r   r   r4   z'TODO: document why this test is skipped)r   r   r   r@   r   rA   rB   Zf_pvaluer4   rK   Úskipr{   r   r   r   Útest_fvalueÃ   s    z"CheckOLSRobustNewMixin.test_fvaluec                 C   s†   t | ddƒ}| j ¡ }| jjd d …dd…f }t|||d� t |d¡ ¡ d | jj	 }t |d¡ ¡ d | jj	 }t||dd� d S )	Nr   r   rm   é   r   r   r2   é   )
r   r   Úconf_intr   Úparams_tabler   r!   rZ   Zravelr   )r   r   Úci1Úci2Zcrit1Zcrit2r   r   r   Útest_confintÍ   s    
z#CheckOLSRobustNewMixin.test_confintc           	      C   sÂ   | j }| j}t| ddƒ}t| ddƒ}t t|jƒ¡}|j|| jd�}t	|j
|j|d� t	|j|j|d� t	|j|j|d� t	|j|jd| d� | ¡ }| jjd d …dd…f }t	|||d� d S )	Nr   r   r0   r    r   r1   rm   r   )r   r   r   r!   r"   r#   r   r$   r   r   r8   r9   r   r:   r;   r=   r>   r�   r‚   )	r   r   r   r   r/   r'   r(   rƒ   r„   r   r   r   Ú
test_ttestØ   s    z!CheckOLSRobustNewMixin.test_ttestc           	      C   sæ   | j }| j}d}d}t|dƒr6|j|j|j d  }nt|dƒrL|jd }nd}t|jt	ƒr`d}|stt
|j||d� |jd	ksªt|d
ƒrŽ|jn|j}t
|j||t|ƒd� |j|j d }t|j|ƒ |jd  ¡ }t
||dd� d S )Ngñhãˆµøä>FÚrssr   Úrmser2   Tr   z
Newey-WestÚr2)r   Úerr_msgç‚vIhÂ%<=)r   r   rB   r‡   ÚNrE   rˆ   Ú
isinstancerb   r	   r   ÚscaleZvcetyper‰   Zr2cZrsquaredÚstrrD   Zdf_modelr   rC   Zresid_pearsonÚsum)	r   r   r   r   r}   rŽ   r‰   rC   Zpsumr   r   r   Ú
test_scaleê   s(    


z!CheckOLSRobustNewMixin.test_scalec                 C   s   | j  ¡  d S ©N)r   r%   ©r   r   r   r   Útest_summary  s    z#CheckOLSRobustNewMixin.test_summaryN)rH   rI   rJ   r|   r~   r…   r†   r‘   rK   rL   rM   r”   r   r   r   r   rx   »   s   
"rx   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestOLSRobust2SmallNewc                 C   sR   | j jddd�}| j | _|| _ |j| _| ¡ | _|j| _|j	| _
d| _tj| _d S )NÚHC1T©Úuse_t)r   Úget_robustcov_resultsÚres3r   r   Ú
cov_paramsr   rP   rz   rQ   ry   r<   rR   rg   r   rS   r   r   r   rU     s    
z#TestOLSRobust2SmallNew.setup_methodc              	   C   s¼   | j }|jj}|jjd d …ddgf }t||ƒ ¡ }d}d}d}tt|j|ƒ dd l	}| 
¡ �  | d¡ | |¡\}	}
}W 5 Q R X t|	|dd� t|
|dd� t||ƒ tt|j|ƒ d S )	Nr   r2   gõ!ôÝwŸ?g Hªˆù«@r   Úignoreg•dyáý¥=r   )r   rb   ÚendogÚexogr   r]   r   r
   Zcompare_lr_testÚwarningsÚcatch_warningsÚsimplefilterr   r   Zcompare_f_test)r   r   r�   rž   Zres_ols2Zr_pvalZr_chi2Zr_dfrŸ   Zchi2rF   Zdfr   r   r   r|     s     


z#TestOLSRobust2SmallNew.test_compareN)rH   rI   rJ   rU   r|   r   r   r   r   r•     s   r•   c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobustHACSmallNewc                 C   sl   | j jddddd�}| j | _|| _ |j| _| ¡ | _tj|ddd�}t 	|¡}|| _
|| _d| _tj| _d S )NÚHACrm   T)Úmaxlagsro   r˜   rn   )r   r™   rš   r   r   r›   r   rp   rq   rr   rz   ry   r<   rR   rs   r   rt   r   r   r   rU   :  s        ÿ

z%TestOLSRobustHACSmallNew.setup_methodNrh   r   r   r   r   r¢   7  s   r¢   c                       sL   e Zd Zdd„ Zejjdd�‡ fdd„ƒZejjdd�‡ fdd„ƒZ‡  Z	S )	ÚTestOLSRobust2LargeNewc                 C   sT   | j  d¡}d|_| j | _|| _ |j| _| ¡ | _|j| _	|j
| _d| _tj| _d S )NÚHC0F)r   r™   r˜   rš   r   r   r›   r   rc   rz   rj   ry   r<   rR   rk   r   rS   r   r   r   rU   M  s    
z#TestOLSRobust2LargeNew.setup_methodznot refactored yet for `large`©Úreasonc                    s   t t| ƒ ¡  d S r’   )Úsuperr¥   r~   r“   ©Ú	__class__r   r   r~   Y  s    z"TestOLSRobust2LargeNew.test_fvaluec                    s   t t| ƒ ¡  d S r’   )r©   r¥   r…   r“   rª   r   r   r…   ]  s    z#TestOLSRobust2LargeNew.test_confint)
rH   rI   rJ   rU   rK   rL   r}   r~   r…   Ú__classcell__r   r   rª   r   r¥   J  s
   r¥   c                   @   s   e Zd Zedd„ ƒZdS )ÚCheckOLSRobustClusterc           	      C   sÆ   ddl m} |j ¡ }|jd d… }|jd d… }t|ddg dd�}t||ƒ ¡ | _	t
jt
 |dg d	¡d
d�\}}|| _t
j|dg dd�}|| ¡ 8 }t
 |¡ t¡| _dd„ tdƒD ƒ| _d S )Nr   ©ÚgrunfeldéÈ   ÚvalueÚcapitalFrV   ÚfirmÚS20T©Zreturn_inverseÚyearÚW©Úrequirementsc                 S   s    g | ]}|d  d |d  f‘qS ©é   r   r   ©Ú.0Úir   r   r   Ú
<listcomp>€  s     z5CheckOLSRobustCluster.setup_class.<locals>.<listcomp>é
   )Ústatsmodels.datasetsr¯   rY   rX   r�   rž   r   r   r]   r   r!   ÚuniqueÚasarrayÚgroupsÚrequireÚminÚsqueezeÚastypeÚintÚtimeÚrangeÚtidx©	r^   r¯   ÚdtapaÚdtapa_endogÚ
dtapa_exogrž   Ú
firm_namesÚfirm_idrÊ   r   r   r   r_   j  s    
 ÿ
z!CheckOLSRobustCluster.setup_classN©rH   rI   rJ   re   r_   r   r   r   r   r­   g  s   r­   c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobustCluster2c                 C   s~   | j jd| jddd�}| j | _|| _ |j| _| ¡ | _tj	| j | jdd�}t 
|¡}|| _|| _d| _tj| _d| _d| _d S ©NÚclusterT©rÄ   ro   r˜   ©ro   ç�íµ ÷Æ°>r   )r   r™   rÄ   rš   r   r   r›   r   rp   Úcov_clusterrr   rz   ry   r<   r   Úresults_clusterr   r/   rt   r   r   r   rU   †  s$       ÿ

z"TestOLSRobustCluster2.setup_methodNrh   r   r   r   r   rÔ   ƒ  s   rÔ   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestOLSRobustCluster2Inputc                 C   sœ   dd l }| j dd¡}| |¡}| jjd|ddd�}| j| _|| _|j| _| 	¡ | _
tj| j| jdd�}t |¡}|| _|| _d| _tj| _d| _d	| _d S )
Nr   r+   r   rÖ   Tr×   rØ   rÙ   r   )ÚpandasrÄ   ÚreshapeÚ	DataFramer   r™   rš   r   r   r›   r   rp   rÚ   rr   rz   ry   r<   r   rÛ   r   r/   )r   ÚpdZ	fat_arrayZ
fat_groupsrT   ru   rv   r   r   r   rU   ž  s*    
   ÿ

z'TestOLSRobustCluster2Input.setup_methodc                 C   s:   | j  dd¡}t |||f¡}tt| jjd|ddd� d S )Nr+   r   rÖ   Tr×   )rÄ   rÞ   r!   Úhstackr   Ú
ValueErrorr   r™   )r   Úlong_groupsZgroups3r   r   r   Útest_too_many_groupsµ  s    úz/TestOLSRobustCluster2Input.test_too_many_groupsc                 C   sB   dd l }| j dd¡}| t ||f¡¡}| jjd|ddd�}d S )Nr   r+   r   rÖ   Tr×   )rÝ   rÄ   rÞ   rß   r!   rá   r   r™   )r   rà   rã   Zgroups2rR   r   r   r   Útest_2way_dataframeÁ  s       ÿz.TestOLSRobustCluster2Input.test_2way_dataframeN)rH   rI   rJ   rU   rä   rå   r   r   r   r   rÜ   ™  s   rÜ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestOLSRobustCluster2Fitc                 C   s†   | j jjdt| jddd�d�}| j | _|| _ |j| _| ¡ | _	t
j| j | jdd�}t
 |¡}|| _|| _d| _tj| _d| _d| _d S )NrÖ   Tr×   ©Úcov_typeÚcov_kwdsrØ   rÙ   r   )r   rb   r]   ÚdictrÄ   rš   r   r   r›   r   rp   rÚ   rr   rz   ry   r<   r   rÛ   r   r/   rt   r   r   r   rU   Ï  s     þ

z%TestOLSRobustCluster2Fit.setup_methodc                 C   sv   | j }| j}d}t|j|jdd� t|j|j|d� t|j|j|dd� |jd d …dd…f }t| ¡ |ddd� d S )	NçH¯¼šò×z>g:Œ0âŽyE>r   g#B’¡œÇ;r3   rm   r   g�íµ ÷Æ >)r   r   r   r   r   r>   r‚   r�   )r   r   r   r   Úcir   r   r   Útest_basic_inferenceâ  s    z-TestOLSRobustCluster2Fit.test_basic_inferenceN)rH   rI   rJ   rU   rí   r   r   r   r   ræ   Ë  s   ræ   c                       s2   e Zd Zdd„ Zejjdd�‡ fdd„ƒZ‡  ZS )ÚTestOLSRobustCluster2Largec                 C   s†   | j jd| jdddd�}| j | _|| _ |j| _| ¡ | _tj	| j | jdd�}t 
|¡}|| _|| _d| _tj| _d| _d| _d| _d S ©NrÖ   FT©rÄ   ro   r˜   Údf_correctionrØ   rÙ   r   )r   r™   rÄ   rš   r   r   r›   r   rp   rÚ   rr   rz   ry   r<   r   Úresults_cluster_larger5   r   r/   rt   r   r   r   rU   ò  s(    û

z'TestOLSRobustCluster2Large.setup_methodúGH#1189 issuecomment-29141741r§   c                    s   t t| ƒ ¡  d S r’   )r©   rî   r~   r“   rª   r   r   Útest_f_value	  s    z'TestOLSRobustCluster2Large.test_f_value)	rH   rI   rJ   rU   rK   rL   r}   rô   r¬   r   r   rª   r   rî   í  s   rî   c                       s2   e Zd Zdd„ Zejjdd�‡ fdd„ƒZ‡  ZS )ÚTestOLSRobustCluster2LargeFitc                 C   s    t | jjj| jjjƒ}|jdt| jdddd�d�}| j| _|| _|j	| _
| ¡ | _tj| j| jdd�}t |¡}|| _|| _d| _tj| _d| _d| _d| _d S )	NrÖ   FTrð   rç   rØ   rÙ   r   )r   r   rb   r�   rž   r]   rê   rÄ   rš   r   r   r›   r   rp   rÚ   rr   rz   ry   r<   r   rò   r5   r   r/   )r   rb   rT   ru   rv   r   r   r   rU     s.    üþ	

z*TestOLSRobustCluster2LargeFit.setup_methodró   r§   c                    s   t t| ƒ ¡  d S r’   )r©   rõ   r~   r“   rª   r   r   r~   .  s    z)TestOLSRobustCluster2LargeFit.test_fvalue)	rH   rI   rJ   rU   rK   rL   r}   r~   r¬   r   r   rª   r   rõ     s   rõ   c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobustClusterGSc                 C   sˆ   | j jd| jdddd�}| j | _|| _ |j| _| ¡ | _tj	| j d| jdd�}t 
|¡}|| _|| _d| _tj| _d| _d| _d| _d S )	Núnw-groupsumrm   FT©rÊ   r¤   ro   r˜   rØ   rÙ   r   )r   r™   rÊ   rš   r   r   r›   r   rp   Úcov_nw_groupsumrr   rz   ry   r<   r   Úresults_nw_groupsum4r5   r   r/   rt   r   r   r   rU   6  s2    û
   ÿ
z#TestOLSRobustClusterGS.setup_methodNrh   r   r   r   r   rö   3  s   rö   c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobustClusterGSFitc                 C   s�   | j jjdt| jdddd�d�}| j | _|| _ |j| _| ¡ | _	t
j| j d| jdd�}t
 |¡}|| _|| _d| _tj| _d| _d| _d	| _d S )
Nr÷   rm   FTrø   rç   rØ   rÙ   r   )r   rb   r]   rê   rÊ   rš   r   r   r›   r   rp   rù   rr   rz   ry   r<   r   rú   r5   r   r/   rt   r   r   r   rU   S  s6       ÿþ
   ÿ
z&TestOLSRobustClusterGSFit.setup_methodNrh   r   r   r   r   rû   P  s   rû   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestOLSRobustClusterNWPc                 C   s†   | j jd| jddddd�}| j | _|| _ |j| _| ¡ | _t 	| j d| j
¡}t |¡}|| _|| _d| _tj| _d| _d| _d| _d S )	Núnw-panelrm   ÚhacTF©rÊ   r¤   ro   r˜   rñ   rÙ   r   )r   r™   rÊ   rš   r   r   r›   r   rp   Úcov_nw_panelrÌ   rr   rz   ry   r<   r   Úresults_nw_panel4r5   r   r/   rt   r   r   r   rU   o  s*    ú

z$TestOLSRobustClusterNWP.setup_methodc                 C   s2   | j jd| jddddd�}t|j| j jdd� d S )	Nz	hac-panelrm   rþ   TFrÿ   r0   r   )r   r™   rÊ   r   r   rS   r   r   r   Útest_keyword‡  s    úz$TestOLSRobustClusterNWP.test_keywordN)rH   rI   rJ   rU   r  r   r   r   r   rü   l  s   rü   c                   @   s   e Zd Zdd„ ZdS )Ú TestOLSRobustClusterNWPGroupsFitc              	   C   sŽ   | j jjdt| jddddd�d�}| j | _|| _ |j| _| ¡ | _	t
 | j d| j¡}t
 |¡}|| _|| _d| _tj| _d| _d| _d	| _d S )
Nrý   rm   rþ   TF)rÄ   r¤   ro   r˜   rñ   rç   rÙ   r   )r   rb   r]   rê   rÄ   rš   r   r   r›   r   rp   r   rÌ   rr   rz   ry   r<   r   r  r5   r   r/   rt   r   r   r   rU   ™  s.    ûþ


z-TestOLSRobustClusterNWPGroupsFit.setup_methodNrh   r   r   r   r   r  ”  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobustCluster2Gc                 C   sŒ   | j jd| j| jfddd�}| j | _|| _ |j| _| ¡ | _t	j
| j | j| jdd�d }t	 |¡}|| _|| _d| _tj| _d| _d| _d S )NrÖ   Tr×   ©Zgroup2ro   r   gffffffÖ?r   )r   r™   rÄ   rÊ   rš   r   r   r›   r   rp   Úcov_cluster_2groupsrr   rz   ry   r<   r   Zresults_cluster_2groups_smallr   r/   rt   r   r   r   rU   ¸  s4    
ü
   ÿþ
ÿz#TestOLSRobustCluster2G.setup_methodNrh   r   r   r   r   r  µ  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestOLSRobustCluster2GLargec                 C   s’   | j jd| j| jfddd�}| j | _|| _ |j| _| ¡ | _t	j
| j | j| jdd�d }t	 |¡}|| _|| _d| _tj| _d| _d| _d| _d S )	NrÖ   Fr×   r  r   Trë   r   )r   r™   rÄ   rÊ   rš   r   r   r›   r   rp   r  rr   rz   ry   r<   r   Zresults_cluster_2groups_larger5   r   r/   rt   r   r   r   rU   ×  s4    
ü
   ÿþ
z(TestOLSRobustCluster2GLarge.setup_methodNrh   r   r   r   r   r  Ò  s   r  c                   @   s   e Zd Zedd„ ƒZdS )ÚCheckWLSRobustClusterc           	      C   sÒ   ddl m} |j ¡ }|jd d… }|jd d… }t|ddg dd�}t||d|d  d	� ¡ | _	t
jt
 |d
g d¡dd�\}}|| _t
j|dg dd�}|| ¡ 8 }t
 |¡ t¡| _dd„ tdƒD ƒ| _d S )Nr   r®   r°   r±   r²   FrV   r   ©Úweightsr³   r´   Trµ   r¶   r·   r¸   c                 S   s    g | ]}|d  d |d  f‘qS rº   r   r¼   r   r   r   r¿     s     z5CheckWLSRobustCluster.setup_class.<locals>.<listcomp>rÀ   )rÁ   r¯   rY   rX   r�   rž   r   r	   r]   r   r!   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rÍ   r   r   r   r_   ø  s&    
  
ÿ ÿ
z!CheckWLSRobustCluster.setup_classNrÓ   r   r   r   r   r  õ  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestWLSRobustCluster2c                 C   s~   | j jd| jddd�}| j | _|| _ |j| _| ¡ | _tj	| j | jdd�}t 
|¡}|| _|| _d| _tj| _d| _d| _d S rÕ   )r   r™   rÄ   rš   r   r   r›   r   rp   rÚ   rr   rz   ry   r<   r   Zresults_cluster_wls_smallr   r/   rt   r   r   r   rU     s$       ÿ

z"TestWLSRobustCluster2.setup_methodNrh   r   r   r   r   r    s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestWLSRobustCluster2Largec                 C   s†   | j jd| jdddd�}| j | _|| _ |j| _| ¡ | _tj	| j | jdd�}t 
|¡}|| _|| _d| _tj| _d| _d| _d| _d S rï   )r   r™   rÄ   rš   r   r   r›   r   rp   rÚ   rr   rz   ry   r<   r   Zresults_cluster_wls_larger5   r   r/   rt   r   r   r   rU   0  s(    û

z'TestWLSRobustCluster2Large.setup_methodNrh   r   r   r   r   r  +  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestWLSRobustSmallc                 C   sp   | j jddd�}| j | _|| _ |j| _| ¡ | _|j}t 	|¡}|| _
|| _d| _tj| _d| _d| _d| _d S )Nr–   Tr—   rÙ   r   )r   r™   rš   r   r   r›   r   rQ   rp   rr   rz   ry   r<   r   Zresults_hc1_wls_smallr5   r   r/   rt   r   r   r   rU   K  s    

zTestWLSRobustSmall.setup_methodNrh   r   r   r   r   r  H  s   r  c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestWLSOLSRobustSmallc                 C   s  ddl m} |j ¡ }|jd d… }|jd d… }t|ddg dd�}t||d|d  d	� ¡ | _	dt
 t
 |d ¡¡ }t|| t
 |¡|d d …d f  ƒ ¡ | _t
 |d
g d¡}t
j|dd�\}}	|	| _t
j|dg dd�}
|
|
 ¡ 8 }
t
 |
¡ t¡| _dd„ tdƒD ƒ| _d S )Nr   r®   r°   r±   r²   FrV   r   r	  r³   r´   Trµ   r¶   r·   r¸   c                 S   s    g | ]}|d  d |d  f‘qS rº   r   r¼   r   r   r   r¿   z  s     z5TestWLSOLSRobustSmall.setup_class.<locals>.<listcomp>rÀ   )rÁ   r¯   rY   rX   r�   rž   r   r	   r]   Úres_wlsr!   ÚsqrtrÃ   r   rT   rÂ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   )r^   r¯   rÎ   rÏ   rÐ   rž   Zw_sqrtZidsrÑ   rÒ   rÊ   r   r   r   r_   `  s,    
  
ÿ ÿ
z!TestWLSOLSRobustSmall.setup_classc           	      C   sú   dt dd�fdt dd�fdt dd�fdt dd�fg}|D ]¼\}}| jj|f|Ž}| jj|f|Ž}t|j|jdd� t| ¡ | ¡ dd� t|j|jdd� t|j|jdd� t	 
t|jƒ¡}| |¡}| |¡}t|j|jd	d� t|j|jd
d� q8d S )Nr¦   Tr—   r–   ÚHC2ÚHC3r‹   r   r0   g»½×Ùß|Ë=)rê   rT   r™   r  r   r   r›   r   r>   r!   r"   r#   r,   r@   r=   )	r   Zall_covrè   Úkwdsr   r   r'   Zft1Zft2r   r   r   Útest_all|  s"    ü

zTestWLSOLSRobustSmall.test_allc           	      C   sn  d}i }| j j|f|Ž}| jj|f|Ž}t|j|jdd� t| ¡ | ¡ dd� t|j|jdd� t|j|jdd� |jt	 
t|jƒ¡|jd�}t| ¡ |jdd� t|j|jdd� t|j|jdd� t|j|jdd� | jj}t|j|j|jd�}|j||d�}|jt	 
t|jƒ¡|jd�}t| ¡ |jdd� t|j|jdd� t|j|jdd� t|j|jdd� d S )NZfixed_scaler‹   r   r0   r    r	  rç   )rT   r™   r  r   r   r›   r   r>   r$   r!   r"   r#   Znormalized_cov_paramsr9   r=   r;   r:   rb   r	   r�   rž   r
  r]   )	r   rè   r  r   r   r(   ÚmodZmod3rš   r   r   r   Útest_fixed_scale‘  sF     ÿ  ÿ ÿ  ÿz&TestWLSOLSRobustSmall.test_fixed_scaleN)rH   rI   rJ   re   r_   r  r  r   r   r   r   r  _  s   
r  c                  C   s>  t  ddddddg¡} t  dddddd	g¡}t  ddddddg¡}t  | t  t| ƒ¡f¡} d
|d  }t|| |d� ¡ }t|jddgdd� t|| |d� ¡ }t|jddgdd� t|| |d�jdd�}t|jddgdd� t|| |d d�jdd�}t|jddgdd� t|| |d�jdddid�}t|jddgdd� d S )Nr   r   r2   é   rm   r1   é   é   r€   r6   r	  g´N"ãÍqÊ?g²~uM/Nâ?gü©ñÒMbP?r   zfixed scale)rè   g´ÁO=N¨Ó?g5=¬`é6ë?g      "@gŽ¢÷[u|í?gè-�/i@rŽ   é	   rç   )	r!   ÚarrayZcolumn_stackÚonesr#   r	   r]   r   r   )ZxdataZydataÚsigmar
  rR   r   r   r   Útest_cov_type_fixed_scale´  s$     ÿr  Úcov_infoZ	nonrobustr¦   r–   r  r  r£   r¤   r  rÖ   rÄ   éô  é   c           
      C   st   | \}}t j d¡}| d¡}t  d¡}|| | d¡ }t||ƒ}|j||d�}|j||dd�}	t|j|	jƒ d S )Nijâ )r   r  r  r   rç   r`   )rè   ré   ra   )	r!   ÚrandomZRandomStateZstandard_normalr  r   r]   r   r   )
r  rè   ré   ÚrsÚxÚbÚyr  Zpinv_fitZqr_fitr   r   r   rd   Ï  s    


rd   )<Ú__doc__Únumpyr!   Znumpy.testingr   r   r   r   rK   Zscipyr   rÁ   r   Z#statsmodels.regression.linear_modelr   r	   Z%statsmodels.stats.sandwich_covarianceZsandwich_covariancerp   Zstatsmodels.tools.sm_exceptionsr
   Zstatsmodels.tools.toolsr   Úresultsr   r   r   rR   r   rN   rf   ri   rl   rw   rx   r•   r¢   r¥   r­   rÔ   rÜ   ræ   rî   rõ   rö   rû   rü   r  r  r  r  r  r  r  r  r  rL   ZparametrizeZarangerd   r   r   r   r   Ú<module>   sˆ   KV&
 ÿ2"
 ÿ!
 ÿ%(
 ÿ!
 ÿ#
 ÿU
ùþ