U
    ÃmœdÐÎ  ã                   @   sF  d Z ddlm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ZddlZddlmZ ddlmZ ddlmZ ddlmZmZmZmZmZ dd	lmZ d
ZdZdZ dZ!dZ"dZ#zddl$Z$dZ%W n e&k
rØ   dZ%Y nX G dd„ dƒ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ƒZ,G dd„ dƒZ-G dd „ d ƒZ.G d!d"„ d"ƒZ/G d#d$„ d$e'ƒZ0G d%d&„ d&ƒZ1G d'd(„ d(ƒZ2G d)d*„ d*e2ƒZ3G d+d,„ d,ƒZ4G d-d.„ d.ƒZ5G d/d0„ d0e'ƒZ6d1d2„ Z7d3d4„ Z8G d5d6„ d6e'ƒZ9G d7d8„ d8e'ƒZ:d9d:„ Z;G d;d<„ d<e'ƒZ<G d=d>„ d>e'ƒZ=G d?d@„ d@ƒZ>G dAdB„ dBe'ƒZ?G dCdD„ dDe?ƒZ@G dEdF„ dFe?ƒZAG dGdH„ dHe?ƒZBG dIdJ„ dJe?ƒZCdKdL„ ZDdMdN„ ZEdOdP„ ZFdQdR„ ZGdSdT„ ZHG dUdV„ dVƒZIdWdX„ ZJdYdZ„ ZKd[d\„ ZLd]d^„ ZMd_d`„ ZNdadb„ ZOdcdd„ ZPdedf„ ZQdgdh„ ZRdidj„ ZSejTjUe% dkdl�dmdn„ ƒZVdodp„ ZWdqdr„ ZXdsdt„ ZYdudv„ ZZdwdx„ Z[dS )yz&
Test functions for models.regression
é    )ÚlrangeN)Úassert_Úassert_allcloseÚassert_almost_equalÚassert_equalÚassert_raises)Útoeplitz)Út)Úlongley)ÚGLSÚOLSÚWLSÚburgÚyule_walker)Úadd_constanté   é   é   é   é   TFc                   @   s  e Zd ZdZeZdd„ ZeZdd„ ZeZ	dd„ Z
eZdd	„ ZeZd
d„ ZeZdd„ ZeZdd„ Zdd„ ZeZdd„ ZeZdd„ ZeZdd„ ZeZdd„ ZeZdd„ ZeZdd„ ZeZ dd„ Z!eZ"d d!„ Z#eZ$d"d#„ Z%eZ&d$d%„ Z'eZ(d&d'„ Z)eZ*d(d)„ Z+eZ,d*d+„ Z-d,S )-ÚCheckRegressionResultsz›
    res2 contains results from Rmodelwrap or were obtained from a statistical
    packages such as R, Stata, or SAS and were written to model_results
    c                 C   s   t | jj| jj| jƒ d S ©N)r   Úres1ÚparamsÚres2Údecimal_params©Úself© r   úe/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/regression/tests/test_regression.pyÚtest_params7   s
      ÿz"CheckRegressionResults.test_paramsc                 C   s   t | jj| jj| jƒ d S r   )r   r   Úbser   Údecimal_standarderrorsr   r   r   r   Útest_standarderrors>   s
      ÿz*CheckRegressionResults.test_standarderrorsc                 C   sv   | j  ¡ }| j ¡ }tt|ƒƒD ]P}t|| d || d d| j  d� t|| d || d d| j  d� q d S )Nr   é
   ©Úrtolr   )r   Úconf_intr   ÚrangeÚlenr   Údecimal_confidenceintervals)r   Úconf1Úconf2Úir   r   r   Útest_confidenceintervalsE   s    




ý


ýz/CheckRegressionResults.test_confidenceintervalsc              	   C   s^   t | jjƒdkrZtjtdd�� | jjdd�}W 5 Q R X | j ¡ dd… }t||| jƒ n d S )Nr   zcols is)Úmatch©r   r   )Úcolsr   )	r)   r   r   ÚpytestÚwarnsÚFutureWarningr'   r   Údecimal_conf_int_subset)r   Zci1Zci2r   r   r   Útest_conf_int_subsetW   s    z+CheckRegressionResults.test_conf_int_subsetc                 C   s   t | jj| jj| jƒ d S r   )r   r   Úscaler   Údecimal_scaler   r   r   r   Ú
test_scaleb   s
      ÿz!CheckRegressionResults.test_scalec                 C   s   t | jj| jj| jƒ d S r   )r   r   Úrsquaredr   Údecimal_rsquaredr   r   r   r   Útest_rsquaredi   s
      ÿz$CheckRegressionResults.test_rsquaredc                 C   s   t | jj| jj| jƒ d S r   )r   r   Úrsquared_adjr   Údecimal_rsquared_adjr   r   r   r   Útest_rsquared_adjp   s
    ýz(CheckRegressionResults.test_rsquared_adjc                 C   s,   t | jjj| jjƒ t | jjj| jjƒ d S r   )r   r   ÚmodelÚdf_modelr   Údf_residr   r   r   r   Útest_degreesw   s    z#CheckRegressionResults.test_degreesc                 C   s   t | jj| jj| jƒ d S r   )r   r   Zessr   Údecimal_essr   r   r   r   Útest_ess}   s    zCheckRegressionResults.test_essc                 C   s   t | jj| jj| jƒ d S r   )r   r   Zssrr   Údecimal_ssrr   r   r   r   Útest_sumof_squaredresidsƒ   s    z/CheckRegressionResults.test_sumof_squaredresidsc                 C   s   t | jj| jj| jƒ d S r   )r   r   Z	mse_modelr   Údecimal_mse_residr   r   r   r   Útest_mse_residˆ   s
      ÿz%CheckRegressionResults.test_mse_residc                 C   s   t | jj| jj| jƒ d S r   )r   r   Z	mse_residr   Údecimal_mse_modelr   r   r   r   Útest_mse_model�   s
      ÿz%CheckRegressionResults.test_mse_modelc                 C   s"   t | jj| jj| jd|  d� d S )NzTest class %s)Úerr_msg)r   r   Z	mse_totalr   Údecimal_mse_totalr   r   r   r   Útest_mse_total—   s    üz%CheckRegressionResults.test_mse_totalc                 C   s   t | jj| jj| jƒ d S r   )r   r   Úfvaluer   Údecimal_fvaluer   r   r   r   Útest_fvalue¡   s
      ÿz"CheckRegressionResults.test_fvaluec                 C   s   t | jj| jj| jƒ d S r   )r   r   Úllfr   Údecimal_logliker   r   r   r   Útest_loglikeª   s    z#CheckRegressionResults.test_loglikec                 C   s¶   t | jj| jj| jƒ | j d¡}| jj| jjj }| jjj	}| jjd|d |  || d   }t
||dd� | j d¡}| jjd|  dt t |¡¡ |  }t
||dd� d S )NZaiccr   r   ç»½×Ùß|Û=r%   Zhqic)r   r   Úaicr   Údecimal_aicZinfo_criteriarA   r@   Ú
k_constantÚnobsr   ÚnpÚlog)r   Zaicc1ÚkrY   Zaicc2Zhqic1Zhqic2r   r   r   Útest_aic¯   s    
$(zCheckRegressionResults.test_aicc                 C   s   t | jj| jj| jƒ d S r   )r   r   Úbicr   Údecimal_bicr   r   r   r   Útest_bic½   s    zCheckRegressionResults.test_bicc                 C   s   t | jj| jj| jƒ d S r   )r   r   Úpvaluesr   Údecimal_pvaluesr   r   r   r   Útest_pvaluesÂ   s
      ÿz#CheckRegressionResults.test_pvaluesc                 C   s   t | jj| jj| jƒ d S r   )r   r   Úwresidr   Údecimal_wresidr   r   r   r   Útest_wresidÉ   s
      ÿz"CheckRegressionResults.test_wresidc                 C   s   t | jj| jj| jƒ d S r   )r   r   Úresidr   Údecimal_residsr   r   r   r   Útest_residsÐ   s
      ÿz"CheckRegressionResults.test_residsc                 C   s   t | jj| jj| jƒ d S r   )r   r   Úresid_pearsonr   Údecimal_norm_residsr   r   r   r   Útest_norm_resids×   s
    ýz'CheckRegressionResults.test_norm_residsN).Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	DECIMAL_4r   r    r"   r#   r*   r.   r5   r6   r8   r9   r;   r<   r>   r?   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rM   rN   rP   rQ   rS   rT   rW   r]   r_   r`   rb   rc   re   rf   rh   ri   rk   rl   r   r   r   r   r   /   sT   	r   c                   @   s€   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d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestOLSc                 C   sÜ   ddl m} t ¡ }t |j¡}t |j¡}t|dd�}t	||ƒ 
¡ }|ƒ }|j|_|| _|| _t	||ƒj
dd�}t	||ƒ}tj |¡\}	}
|	|
 |_|_tj t |
j|
¡¡|_tj |
¡|_|j
dd�}|| _|| _d S )Nr   )ÚLongleyF©ÚprependÚqr©Úmethod)Úresults.results_regressionrs   r
   ÚloadrZ   ÚasarrayÚendogÚexogr   r   Úfitrd   r   r   Úlinalgrv   Zexog_QZexog_RÚinvÚdotÚTÚnormalized_cov_paramsÚmatrix_rankZrankÚres_qrÚres_qr_manual)Úclsrs   Údatar|   r}   r   r   r…   Zmodel_qrÚQÚRZres_qr2r   r   r   Úsetup_classã   s&    
zTestOLS.setup_classc                 C   s6   | j j| jj }|| j j }t |¡}t||tƒ d S r   )r…   Z	eigenvalsr†   rZ   Z
zeros_liker   Ú	DECIMAL_7)r   Zeigenval_perc_diffÚzerosr   r   r   Útest_eigenvaluesý   s
    ÿ
zTestOLS.test_eigenvaluesc                 C   sH   t | jjd d… | jjd d… tƒ tt | jjd ¡| jjd ƒ d S )Néÿÿÿÿ)r   r   ZHC0_ser   rq   r   rZ   Úroundr   r   r   r   Útest_HC0_errors  s      ÿzTestOLS.test_HC0_errorsc                 C   sF   t | jjd d… | jjd d… tƒ t| jjd | jjd dd� d S )Nr�   gH¯¼šò×š>r%   )r   r   ZHC1_ser   rq   r   r   r   r   r   Útest_HC1_errors  s      ÿzTestOLS.test_HC1_errorsc                 C   sF   t | jjd d… | jjd d… tƒ t| jjd | jjd dd� d S )Nr�   g�íµ ÷Æ >r%   )r   r   ZHC2_ser   rq   r   r   r   r   r   Útest_HC2_errors  s      ÿzTestOLS.test_HC2_errorsc                 C   sF   t | jjd d… | jjd d… tƒ t| jjd | jjd dd� d S )Nr�   gvƒôõ!„>r%   )r   r   ZHC3_ser   rq   r   r   r   r   r   Útest_HC3_errors  s      ÿ
 
 ÿzTestOLS.test_HC3_errorsc                 C   s   t | jj| jjdƒ d S ©Né   )r   r   r   r…   r   r   r   r   Útest_qr_params%  s    zTestOLS.test_qr_paramsc                 C   s&   t t | jj¡| jj| jj dƒ d S ©Né   )r   rZ   Ú	ones_liker   rƒ   r…   r   r   r   r   Útest_qr_normalized_cov_params(  s    ÿüz%TestOLS.test_qr_normalized_cov_paramsc                 C   sd   t  ¡ }t|jdd�|_tj|jdddg< t|j|jdd�}t|jj	d d	ƒ t|jj	d d	ƒ d S )
NFrt   r   r   é   Údrop)Úmissingr   é   )
r
   rz   r   r}   rZ   Únanr|   r   r   Úshape)r   rˆ   Úmodr   r   r   Útest_missing1  s    zTestOLS.test_missingc              	   C   sV   t jdd��@ tj d¡}tj dd¡}t||ƒ ¡ }|j}t|tj	ƒ W 5 Q R X d S )NT©Úrecordr™   r–   )
ÚwarningsÚcatch_warningsrZ   ÚrandomÚrandnr   r~   r=   r   r    )r   ÚxÚyÚresultsr=   r   r   r   Útest_rsquared_adj_overfit9  s    z!TestOLS.test_rsquared_adj_overfitc                 C   s   t | jj| jjdd� d S )Ng•dyáý•=r%   )r   r…   r   r†   r   r   r   r   Útest_qr_alternativesD  s
      ÿzTestOLS.test_qr_alternativesc                 C   s@   | j j}|t t |d ¡| j j ¡ }| j j}t||tƒ d S )Nç       @)	r   rd   rZ   ÚsqrtÚsumrB   rj   r   rŒ   )r   rg   Z
norm_residZmodel_norm_residr   r   r   Útest_norm_residI  s     zTestOLS.test_norm_residc              	   C   s`   t  ¡ �( d}t jd|td� | jjdd�}W 5 Q R X t|jƒdksHt‚tt	|ƒƒdk s\t‚d S )Nz!kurtosistest only valid for n>=20Úignore)ÚmessageÚcategoryT©Úslimr   i,  )
r¦   r§   ÚfilterwarningsÚUserWarningr   Úsummaryr)   ÚtablesÚAssertionErrorÚstr)r   ÚmsgÚsummr   r   r   Útest_summary_slimO  s    
ÿzTestOLS.test_summary_slimc              	   C   sV   t jdd��@ | jjj}t||ƒ ¡ }t|jddd� t|j	|j
dd� W 5 Q R X d S )NTr¤   r   g#B’¡œÇ;©Úatolg»½×Ùß|Ë=)r¦   r§   r   r@   r|   r   r~   r   r7   rd   rj   )r   r«   Úresr   r   r   Útest_norm_resid_zero_varianceZ  s
    
z%TestOLS.test_norm_resid_zero_varianceN)rm   rn   ro   Úclassmethodr‹   rŽ   r‘   r’   r“   r”   r—   r›   r£   r­   r®   r²   rÀ   rÄ   r   r   r   r   rr   â   s   
			rr   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestRTOc                 C   sp   ddl m} t ¡ }t |j¡}t |j¡}t||ƒ 	¡ }|ƒ }|j
|_
|| _|| _t||ƒj	dd�}|| _d S )Nr   )Ú
LongleyRTOrv   rw   )ry   rÇ   r
   rz   rZ   r{   r|   r}   r   r~   rd   r   r   r…   )r‡   rÇ   rˆ   r|   r}   r   r   r…   r   r   r   r‹   c  s    zTestRTO.setup_classN©rm   rn   ro   rÅ   r‹   r   r   r   r   rÆ   b  s   rÆ   c                   @   s<   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dS )Ú	TestFtestz,
    Tests f_test vs. RegressionResults
    c                 C   sX   t  ¡ }t|jdd�|_t|j|jƒ ¡ | _t 	d¡d d…d d …f }| j 
|¡| _d S )NFrt   r   r�   )r
   rz   r   r}   r   r|   r~   r   rZ   ÚidentityÚf_testÚFtest)r‡   rˆ   rŠ   r   r   r   r‹   y  s
    zTestFtest.setup_classc                 C   s   t | jj| jjtƒ d S r   )r   rÌ   rO   r   rq   r   r   r   r   Útest_F�  s    zTestFtest.test_Fc                 C   s   t | jj| jjtƒ d S r   )r   rÌ   Úpvaluer   Úf_pvaluerq   r   r   r   r   Útest_p„  s    zTestFtest.test_pc                 C   s   t | jj| jjjƒ d S r   )r   rÌ   Údf_denomr   r@   rB   r   r   r   r   Útest_Df_denom‡  s    zTestFtest.test_Df_denomc                 C   s   t | jjdƒ d S r•   )r   rÌ   Údf_numr   r   r   r   Útest_Df_numŠ  s    zTestFtest.test_Df_numN)
rm   rn   ro   rp   rÅ   r‹   rÍ   rÐ   rÒ   rÔ   r   r   r   r   rÉ   t  s   
rÉ   c                   @   sD   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dS )Ú
TestFTest2z÷
    A joint test that the coefficient on
    GNP = the coefficient on UNEMP  and that the coefficient on
    POP = the coefficient on YEAR for the Longley dataset.

    Ftest1 is from statsmodels.  Results are from Rpy using R's car library.
    c                 C   s–   t  ¡ }dd„ td|jjd d ƒD ƒ}||j_t|jdd�|_t|j|jƒ 	¡ }dddddddgdddddddgg}| 
|¡| _d}| 
|¡| _d S )	Nc                 S   s   g | ]}d |› �‘qS ©rª   r   ©Ú.0r-   r   r   r   Ú
<listcomp>š  s     z*TestFTest2.setup_class.<locals>.<listcomp>r   Frt   r   r�   zx2 = x3, x5 = x6)r
   rz   r(   r}   r¡   Úcolumnsr   r   r|   r~   rË   ÚFtest1Ú	NewFtest1)r‡   rˆ   rÚ   r   ZR2Úhypr   r   r   r‹   —  s     $zTestFTest2.setup_classc                 C   s   t | jj| jjƒ d S r   )r   rÜ   rO   rÛ   r   r   r   r   Útest_new_ftest£  s    zTestFTest2.test_new_ftestc                 C   s   t | jjdtƒ d S )NgN}“Ñ{#@)r   rÛ   rO   rq   r   r   r   r   rQ   ¦  s    zTestFTest2.test_fvaluec                 C   s   t | jjdtƒ d S )Ngx*Û.’õv?)r   rÛ   rÎ   rq   r   r   r   r   Útest_pvalue©  s
      ÿzTestFTest2.test_pvaluec                 C   s   t | jjdƒ d S ©Né	   ©r   rÛ   rÑ   r   r   r   r   Útest_df_denom®  s    zTestFTest2.test_df_denomc                 C   s   t | jjdƒ d S ©Nr   ©r   rÛ   rÓ   r   r   r   r   Útest_df_num±  s    zTestFTest2.test_df_numN)rm   rn   ro   rp   rÅ   r‹   rÞ   rQ   rß   rã   ræ   r   r   r   r   rÕ   Ž  s   
rÕ   c                   @   s<   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dS )Ú
TestFtestQz}
    A joint hypothesis test that Rb = q.  Coefficient tests are essentially
    made up.  Test values taken from Stata.
    c                 C   s¬   t  ¡ }t|jdd�|_t|j|jƒ ¡ }t dddddddgdddddddgdddddddgdddddddgdddddddgg¡}t dddddg¡}| 	||f¡| _
d S )NFrt   r   r   )r
   rz   r   r}   r   r|   r~   rZ   ÚarrayrË   rÛ   )r‡   rˆ   r   rŠ   Úqr   r   r   r‹   »  s    ûÿ	zTestFtestQ.setup_classc                 C   s   t | jjddƒ d S )Ngºô/Ie‡Q@r™   )r   rÛ   rO   r   r   r   r   rQ   Ì  s    zTestFtestQ.test_fvaluec                 C   s   t | jjddƒ d S )Ng\sü•«æ¤>r$   )r   rÛ   rÎ   r   r   r   r   rß   Ï  s    zTestFtestQ.test_pvaluec                 C   s   t | jjdƒ d S rà   râ   r   r   r   r   rã   Ò  s    zTestFtestQ.test_df_denomc                 C   s   t | jjdƒ d S r˜   rå   r   r   r   r   ræ   Õ  s    zTestFtestQ.test_df_numN)
rm   rn   ro   rp   rÅ   r‹   rQ   rß   rã   ræ   r   r   r   r   rç   µ  s   
rç   c                   @   sL   e Zd 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 )Ú	TestTtestzd
    Test individual t-tests.  Ie., are the coefficients significantly
    different than zero.
    c                 C   s‚   t  ¡ }dd„ td|jjd d ƒD ƒ}||j_t|jdd�|_t|j|jƒ 	¡ | _
t d¡}| j
 |¡| _d}| j
 |¡| _d S )Nc                 S   s   g | ]}d |› �‘qS rÖ   r   r×   r   r   r   rÙ   â  s     z)TestTtest.setup_class.<locals>.<listcomp>r   Frt   r   z9x1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0, x6 = 0, const = 0)r
   rz   r(   r}   r¡   rÚ   r   r   r|   r~   r   rZ   rÊ   Út_testÚTtestÚNewTTest)r‡   rˆ   rÚ   rŠ   rÝ   r   r   r   r‹   ß  s     
zTestTtest.setup_classc                 C   s   t | jj| jjƒ d S r   )r   rí   Útvaluerì   r   r   r   r   Útest_new_tvalueë  s    zTestTtest.test_new_tvaluec                 C   s   t | jj| jjtƒ d S r   )r   rì   rî   r   Útvaluesrq   r   r   r   r   Útest_tvalueî  s    zTestTtest.test_tvaluec                 C   s   t | jj| jjtƒ d S r   )r   rì   Úsdr   r!   rq   r   r   r   r   Útest_sdñ  s    zTestTtest.test_sdc                 C   s0   t | jjt t | jj¡| jj	j
¡d tƒ d S rä   )r   rì   rÎ   Ú	student_tZsfrZ   Úabsr   rð   r@   rB   rq   r   r   r   r   rß   ô  s    ÿüzTestTtest.test_pvaluec                 C   s   t | jj| jjjƒ d S r   )r   rì   rÑ   r   r@   rB   r   r   r   r   rã   ü  s    zTestTtest.test_df_denomc                 C   s   t | jj| jjƒ d S r   )r   rì   Úeffectr   r   r   r   r   r   Útest_effectÿ  s    zTestTtest.test_effectN)rm   rn   ro   rp   rÅ   r‹   rï   rñ   ró   rß   rã   r÷   r   r   r   r   rê   Ù  s   
rê   c                   @   sD   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dS )Ú
TestTtest2z~
    Tests the hypothesis that the coefficients on POP and YEAR
    are equal.

    Results from RPy using 'car' package.
    c                 C   sT   t  d¡}ddg|dd…< t ¡ }t|jdd�|_t|j|jƒ ¡ }| 	|¡| _
d S )Nr   r   r�   r   r–   Frt   )rZ   r�   r
   rz   r   r}   r   r|   r~   rë   ÚTtest1)r‡   rŠ   rˆ   r   r   r   r   r‹     s    
zTestTtest2.setup_classc                 C   s   t | jjdtƒ d S )NgÜÔN–-À)r   rù   rî   rq   r   r   r   r   rñ     s    zTestTtest2.test_tvaluec                 C   s   t | jjdtƒ d S )Ng¨9y±@v|@)r   rù   rò   rq   r   r   r   r   ró     s    zTestTtest2.test_sdc                 C   s   t | jjdtƒ d S )Ngþ6X©%Øh?)r   rù   rÎ   rq   r   r   r   r   rß     s
      ÿzTestTtest2.test_pvaluec                 C   s   t | jjdƒ d S rà   )r   rù   rÑ   r   r   r   r   rã     s    zTestTtest2.test_df_denomc                 C   s   t | jjdtƒ d S )Ng<—,nÏ”œÀ)r   rù   rö   rq   r   r   r   r   r÷   "  s    zTestTtest2.test_effectN)rm   rn   ro   rp   rÅ   r‹   rñ   ró   rß   rã   r÷   r   r   r   r   rø     s   
rø   c                   @   st   e Zd 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d„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestGLSzA
    These test results were obtained by replication with R.
    c           	      C   sÒ   ddl m} t ¡ }tt |jjd d …df |jjd d …df f¡dd�}t	|j
|ƒ ¡ }t |jdd … |jd d… ¡d d }tt d¡ƒ}|| }t|j
||d	� ¡ }|| _|ƒ | _|| _|| _|j
| _
d S )
Nr   )Ú
LongleyGlsr   Frt   r�   r   é   ©Úsigma)ry   rû   r
   rz   r   rZ   Zcolumn_stackr}   Úilocr   r|   r~   Zcorrcoefrg   r   Úaranger   r   r   rþ   )	r‡   rû   rˆ   r}   Ztmp_resultsÚrhoÚorderrþ   ZGLS_resultsr   r   r   r‹   +  s$    ,þ"ÿzTestGLS.setup_classc                 C   s   t | jjd | jjdd� d S )Nr   gü©ñÒMbp?r%   )r   r   rV   r   r   r   r   r   r]   B  s    zTestGLS.test_aicc                 C   s   t | jj| jjdd� d S )Ng¸…ëQ¸Ž?r%   )r   r   r^   r   r   r   r   r   r`   F  s    zTestGLS.test_bicc                 C   s   t | jj| jjtƒ d S r   )r   r   rR   r   Ú	DECIMAL_0r   r   r   r   rT   J  s    zTestGLS.test_loglikec                 C   s   t | jj| jjtƒ d S r   )r   r   r   r   Ú	DECIMAL_1r   r   r   r   r    M  s    zTestGLS.test_paramsc                 C   s   t | jj| jjtƒ d S r   )r   r   rg   r   rq   r   r   r   r   Ú
test_residP  s    zTestGLS.test_residc                 C   s   t | jj| jjtƒ d S r   )r   r   r7   r   rq   r   r   r   r   r9   S  s    zTestGLS.test_scalec                 C   s   t | jj| jjtƒ d S r   )r   r   rð   r   rq   r   r   r   r   Útest_tvaluesV  s    zTestGLS.test_tvaluesc                 C   s   t | jj| jjtƒ d S r   )r   r   r!   r   rq   r   r   r   r   r#   Y  s    zTestGLS.test_standarderrorsc                 C   s   t | jj| jjtƒ d S r   )r   r   Úfittedvaluesr   rq   r   r   r   r   Útest_fittedvalues\  s
      ÿzTestGLS.test_fittedvaluesc                 C   s   t | jj| jjtƒ d S r   )r   r   ra   r   rq   r   r   r   r   rc   a  s    zTestGLS.test_pvaluesc                 C   sd   | j  ¡ }tj|dddg< t|| j| jdd�}t|j jd dƒ t|jjd dƒ t|jjdƒ d S )	Nr   r   rœ   r�   )rþ   rž   r   rŸ   )rŸ   rŸ   )	r|   ÚcopyrZ   r    r   r}   rþ   r   r¡   )r   r|   r¢   r   r   r   r£   d  s    
zTestGLS.test_missingN)rm   rn   ro   rp   rÅ   r‹   r]   r`   rT   r    r  r9   r  r#   r  rc   r£   r   r   r   r   rú   &  s   
rú   c                   @   s@   e Zd ZdZedd„ ƒZdd„ Zdd„ Zej	 
d¡d	d
„ ƒZdS )ÚTestGLS_alt_sigmaz>
    Test that GLS with no argument is equivalent to OLS.
    c                 C   sx   t  ¡ }t |j¡}t |j¡}t|dd�}t||ƒ ¡ }t	||ƒ ¡ }t	||dd�}|| _|| _|| _
|| _|| _d S )NFrt   r   rý   )r
   rz   rZ   r{   r|   r}   r   r   r~   r   r   r   Zres3)r‡   rˆ   r|   r}   Úols_resÚgls_resÚgls_res_scalarr   r   r   r‹   r  s    zTestGLS_alt_sigma.setup_classc              	   C   s.   t | jƒ}ttt| j| jt |d ¡d� d S ©Nr   rý   ©r)   r|   r   Ú
ValueErrorr   r}   rZ   Úones©r   Únr   r   r   Útest_wrong_size_sigma_1dƒ  s    
    ÿz*TestGLS_alt_sigma.test_wrong_size_sigma_1dc              
   C   s6   t | jƒ}ttt| j| jt |d |d f¡d� d S r  r  r  r   r   r   Útest_wrong_size_sigma_2d‰  s    
ûz*TestGLS_alt_sigma.test_wrong_size_sigma_2dzTest does not raise but shouldc              	   C   s€   t | jƒ}t ||f¡t t |¡¡ }d |d< |d< tj |¡|d ksPt‚t 	tjj
¡� t| j| j|d� W 5 Q R X d S )Nr   ©r   r   )r   r   r   rý   )r)   r|   rZ   r  Údiagr   r„   r¼   r2   ÚraisesZLinAlgErrorr   r}   )r   r  rþ   r   r   r   Útest_singular_sigma“  s    
z%TestGLS_alt_sigma.test_singular_sigmaN)rm   rn   ro   rp   rÅ   r‹   r  r  r2   ÚmarkÚskipr  r   r   r   r   r
  m  s   


r
  c                   @   s@   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚTestLMc                 C   s–   t j d¡}| dd¡}t  d¡}| dd¡}t  ||¡| }t||ƒ ¡ | _t||d d …df ƒ ¡ | _	| j 
d¡| _| j	 
d¡| _|| _|| _d S )NiÒ  éd   r   )r   r   r   r   ZHC0)rZ   r¨   ÚRandomStater©   r  r�   r   r~   Ú	res1_fullÚres1_restrictedZget_robustcov_resultsÚ	res2_fullÚres2_restrictedrª   ÚY)r‡   Úrsrª   ÚbÚer«   r   r   r   r‹   £  s    
zTestLM.setup_classc           
      C   s¢   | j j}|jd }| j}t ||¡| t |j|¡ | }tj |¡}t 	||d d …d f  d¡}|t t ||¡|j¡ }| j
 | j ¡}|d }	t||	tƒ d S ©Nr   )r   rd   r¡   rª   rZ   r�   r‚   r   r€   Úmeanr  Úcompare_lm_testr   rŒ   )
r   rg   r  rª   ÚSÚSinvÚsÚLMstatÚ
LMstat_OLSÚLMstat2r   r   r   Útest_LM_homoskedastic·  s    
"zTestLM.test_LM_homoskedasticc                 C   sš   | j j}|jd }| j}||d d …d f  }t |j|¡| }tj |¡}t 	|d¡}|t t ||¡|j¡ }| j
j| jdd�}	|	d }
t||
tƒ d S )Nr   F)Zdemean)r   rd   r¡   rª   rZ   r�   r‚   r   r€   r(  r!  r)  r"  r   rŒ   )r   rg   r  rª   Úscoresr*  r+  r,  r-  r.  r/  r   r   r   Ú test_LM_heteroskedastic_nodemeanÃ  s    
 ÿz'TestLM.test_LM_heteroskedastic_nodemeanc                 C   s¤   | j j}|jd }| j}||d d …d f  }|| d¡ }t |j|¡| }tj 	|¡}t |d¡}|t t ||¡|j¡ }	| j
 | j¡}
|
d }t|	|tƒ d S r'  )r   rd   r¡   rª   r(  rZ   r�   r‚   r   r€   r!  r)  r"  r   rŒ   )r   rg   r  rª   r1  Zscores_demeanr*  r+  r,  r-  r.  r/  r   r   r   Útest_LM_heteroskedastic_demeanÒ  s    
z%TestLM.test_LM_heteroskedastic_demeanc                 C   s¶   | j j}| jj}|jd }| j}||d d …d f  }t |d¡}||d d …d f  }t |j|¡| }tj	 
|¡}|t t ||¡|j¡ }	| jj| jdd�}
|
d }t|	|tƒ d S )Nr   T)Zuse_lr)r   rd   r  r¡   rª   rZ   r(  r�   r‚   r   r€   r!  r)  r"  r   rŒ   )r   rg   Z
resid_fullr  rª   r1  r,  r*  r+  r-  r.  r/  r   r   r   Ú!test_LM_heteroskedastic_LRversionà  s     
 ÿz(TestLM.test_LM_heteroskedastic_LRversionc                 C   s   t t| jj| jƒ d S r   )r   r  r"  r)  r!  r   r   r   r   Útest_LM_nonnestedñ  s
      ÿzTestLM.test_LM_nonnestedN)
rm   rn   ro   rÅ   r‹   r0  r2  r3  r4  r5  r   r   r   r   r  ¢  s   
r  c                   @   s8   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestOLS_GLS_WLS_equivalencec              	   C   s®   t  ¡ }t|jdd�|_|j}|j}|jd }t |¡}g | _| j 	t
||ƒ ¡ ¡ | j 	t|||ƒ ¡ ¡ | j 	t||d| ƒ ¡ ¡ | j 	t||t d| ¡ƒ ¡ ¡ d S )NFrt   r   r  çš™™™™™¹?)r
   rz   r   r}   r|   r¡   rZ   r  r¬   Úappendr   r~   r   r   r  )r‡   rˆ   r«   rª   r  Úwr   r   r   r‹   ø  s    

z'TestOLS_GLS_WLS_equivalence.setup_classc                 C   s¬   t  dd„ | jD ƒ¡}t  |¡| jd j }t||tƒ t  dd„ | jD ƒ¡}t  |¡| jd j }t||tƒ t  dd„ | jD ƒ¡}t  |¡| jd j }t||tƒ d S )Nc                 S   s   g | ]
}|j ‘qS r   )rR   ©rØ   Úrr   r   r   rÙ     s     z7TestOLS_GLS_WLS_equivalence.test_ll.<locals>.<listcomp>r   c                 S   s   g | ]
}|j ‘qS r   )rV   r:  r   r   r   rÙ     s     c                 S   s   g | ]
}|j ‘qS r   )r^   r:  r   r   r   rÙ     s     )	rZ   rè   r¬   rš   rR   r   rŒ   rV   r^   )r   rR   Zllf_1ZicZic_1r   r   r   Útest_ll  s    z#TestOLS_GLS_WLS_equivalence.test_llc                 C   sB   t  dd„ | jD ƒ¡}t  | jd jgt| jƒ ¡}t||ƒ d S )Nc                 S   s   g | ]
}|j ‘qS r   )r   r:  r   r   r   rÙ     s     z;TestOLS_GLS_WLS_equivalence.test_params.<locals>.<listcomp>r   )rZ   rè   r¬   r   r)   r   )r   r   Zparams_1r   r   r   r      s    z'TestOLS_GLS_WLS_equivalence.test_paramsc                 C   sB   t  dd„ | jD ƒ¡}t  | jd jgt| jƒ ¡}t||ƒ d S )Nc                 S   s   g | ]
}|j ‘qS r   )r!   r:  r   r   r   rÙ     s     z7TestOLS_GLS_WLS_equivalence.test_ss.<locals>.<listcomp>r   )rZ   rè   r¬   r!   r)   r   )r   r!   Zbse_1r   r   r   Útest_ss  s    z#TestOLS_GLS_WLS_equivalence.test_ssc                 C   sD   t  dd„ | jD ƒ¡}t  | jd jgt| jƒ ¡}t||tƒ d S )Nc                 S   s   g | ]
}|j ‘qS r   )r:   r:  r   r   r   rÙ     s     z=TestOLS_GLS_WLS_equivalence.test_rsquared.<locals>.<listcomp>r   )rZ   rè   r¬   r:   r)   r   rŒ   )r   r:   Z
rsquared_1r   r   r   r<     s    z)TestOLS_GLS_WLS_equivalence.test_rsquaredN)	rm   rn   ro   rÅ   r‹   r<  r    r=  r<   r   r   r   r   r6  ÷  s   
r6  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGLS_WLS_equivalencec              	   C   sÎ   t  ¡ }t|jdd�|_|j}|j}|jd }tj d¡ tj 	dd|¡}d| }g | _
| j
 t|||ƒ ¡ ¡ | j
 t||d| ƒ ¡ ¡ | j
 t||d	| ƒ ¡ ¡ | j
 t||t d
| ¡ƒ ¡ ¡ d S )NFrt   r   r™   ç      à?r   ç      ð?g{®Gáz„?r  r7  )r
   rz   r   r}   r|   r¡   rZ   r¨   ÚseedÚuniformr¬   r8  r   r~   r   r  )r‡   rˆ   r«   rª   r  r9  Zw_invr   r   r   r‹   '  s    
z#TestGLS_WLS_equivalence.setup_classNrÈ   r   r   r   r   r>  $  s   r>  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )Ú
TestNonFitc                 C   s<   t  ¡ }t|jdd�|_|j| _|j| _t|j|jƒ| _d S ©NFrt   )r
   rz   r   r}   r|   r   Ú	ols_model)r‡   rˆ   r   r   r   r‹   :  s
    zTestNonFit.setup_classc                 C   s*   | j jd | jjd  }t| jjdƒ d S )Nr   r   rá   )r|   r¡   r}   r   rE  rB   )r   rB   r   r   r   Útest_df_residB  s    zTestNonFit.test_df_residN)rm   rn   ro   rÅ   r‹   rF  r   r   r   r   rC  9  s   
rC  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestWLS_CornerCasesc                 C   s8   t  d¡| _t  d¡| _d}t| j| j|d� ¡ | _d S )N)r   r   ©Úweights)rZ   r  r}   r|   r   r~   Zwls_res)r‡   rI  r   r   r   r‹   H  s    zTestWLS_CornerCases.setup_classc                 C   s$   t  d¡}ttt| j| j|d� d S )N)r$   r$   rH  )rZ   r  r   r  r   r|   r}   )r   rI  r   r   r   Útest_wrong_size_weightsO  s    
z+TestWLS_CornerCases.test_wrong_size_weightsN)rm   rn   ro   rÅ   r‹   rJ  r   r   r   r   rG  G  s   
rG  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestWLSExogWeightsc           
      C   sø   ddl m} ddlm} |ƒ }t |j¡}t |j¡}t|dd�}d}d|d d …df  }|| | 	¡  }t
|||d	� ¡ | _|ƒ | _|d
 | jj | j_d| jj| jj  }	| j j|	8  _| j j|	8  _| j jd
t 	t | jjj¡¡ 7  _d S )Nr   ©rz   r   )ÚCCardWLSFrt   g      R@r   rH  r?  )Ústatsmodels.datasets.ccardrz   ry   rM  rZ   r{   r|   r}   r   r±   r   r~   r   r   rg   rd   rR   rV   r^   r[   r@   rI  )
r‡   rz   rM  Údtar|   r}   rY   rI  Zscaled_weightsZcorr_icr   r   r   r‹   W  s     zTestWLSExogWeights.setup_classNrÈ   r   r   r   r   rK  T  s   rK  c                  C   s`   dddddddg} t ddƒ}t|dd�}t| |t ddƒd	� ¡ }t|jd
dƒ t|jddƒ d S )Nr   r   r   r™   r   é   Frt   rH  g¥g@›LÀ?r–   gåÙîîîî@)r   r   r   r~   r   rO   r7   )r#  rª   Z	wls_modelr   r   r   Útest_wls_exampler  s    
rQ  c                  C   s¶   t  ddddddg¡} ddgddgddgddgddgddgg}t| t|dd�ƒ ¡ }t  dddg¡}ddgddgddgg}t  ddd	g¡}t|t|dd�|d
� ¡ }t|j|jƒ d S )Né   é   r   r   Frt   g      7@r   ç      @rH  )rZ   rè   r   r   r~   r   r   Zcentered_tss)r«   rª   Zols_modZywZXwr9  Zwls_modr   r   r   Útest_wls_tss~  s    (rU  c                   @   s   e Zd Zedd„ ƒZdS )ÚTestWLSScalarVsArrayc                 C   sx   ddl m} |ƒ }t |j¡}t |j¡}t|dd�}t||dd� ¡ }dgt	|ƒ }t|||d� ¡ }|| _
|| _d S )Nr   rL  Trt   gUUUUUUÕ?rH  )Zstatsmodels.datasets.longleyrz   rZ   r{   r|   r}   r   r   r~   r)   r   r   )r‡   rz   rO  r|   r}   Z
wls_scalarrI  Z	wls_arrayr   r   r   r‹   �  s    z TestWLSScalarVsArray.setup_classNrÈ   r   r   r   r   rV  Œ  s   rV  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestWLS_GLSc                 C   sj   ddl m} |ƒ }t |j¡}t |j¡}|d d …df }t||d| d� ¡ | _t	|||d� ¡ | _
d S )Nr   rL  r   r   rH  rý   )rN  rz   rZ   r{   r|   r}   r   r~   r   r   r   )r‡   rz   rˆ   r|   r}   rþ   r   r   r   r‹   �  s    zTestWLS_GLS.setup_classc                 C   s   t ||ƒ tƒ d S r   ©r   rq   ©r   r+   r,   r   r   r   Úcheck_confidenceintervals¨  s    z%TestWLS_GLS.check_confidenceintervalsN©rm   rn   ro   rÅ   r‹   rZ  r   r   r   r   rW  œ  s   

rW  c                  C   sˆ   ddl m}  | ƒ }|j}tj|ddg< t|j|jd|jjd d …df  dd�}t|jj	d d	ƒ t|jj	d d	ƒ t|j
j	d d	ƒ d S )
Nr   rL  r$   é   r   r   r�   )rI  rž   éF   )rN  rz   r|   rZ   r    r   r}   rÿ   r   r¡   rI  )rz   rˆ   r|   r¢   r   r   r   Útest_wls_missing¬  s       ÿr^  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestWLS_OLSc                 C   sP   t  ¡ }t |j¡}t |j¡}t|dd�}t||ƒ ¡ | _	t
||ƒ ¡ | _d S rD  )r
   rz   rZ   r{   r|   r}   r   r   r~   r   r   r   ©r‡   rˆ   r|   r}   r   r   r   r‹   »  s    zTestWLS_OLS.setup_classc                 C   s   t ||ƒ tƒ d S r   rX  rY  r   r   r   rZ  Ä  s    z%TestWLS_OLS.check_confidenceintervalsNr[  r   r   r   r   r_  º  s   
r_  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestGLS_OLSc                 C   sP   t  ¡ }t |j¡}t |j¡}t|dd�}t||ƒ ¡ | _	t
||ƒ ¡ | _d S rD  )r
   rz   rZ   r{   r|   r}   r   r   r~   r   r   r   r`  r   r   r   r‹   É  s    zTestGLS_OLS.setup_classc                 C   s   t ||ƒ tƒ d S r   rX  rY  r   r   r   rZ  Ò  s    z%TestGLS_OLS.check_confidenceintervalsNr[  r   r   r   r   ra  È  s   
ra  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestYuleWalkerc                 C   s<   ddl m} |ƒ }t|jddd�\| _| _dddd	g| _d S )
Nr   rL  r   Zmle)r  rx   g."ö0”‡ô?g3Ÿ‘æEôÜ¿g@**í–Ê¿g¢ç0áŒ¨?)Zstatsmodels.datasets.sunspotsrz   r   r|   r  rþ   ÚR_params)r‡   rz   rˆ   r   r   r   r‹   é  s    üzTestYuleWalker.setup_classc                 C   s   t | j| jtƒ d S r   )r   r  rc  rq   r   r   r   r   r    ö  s    zTestYuleWalker.test_paramsN)rm   rn   ro   rÅ   r‹   r    r   r   r   r   rb  è  s   
rb  c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestDataDimensionsc                 C   sÈ   t j d¡ t jjdddd�| _| jd d …d f | _t jjdddd�| _| jd d …d f | _| jd d… | _t	| j| jƒ| _
| j
 jd7  _| j
 ¡ | _t	| j| jƒ| _| j jd7  _| j ¡ | _d S )Né1Ô  r   é   é   ©Úsizer�   r   )rZ   r¨   rA  rB  Úendog_n_Úendog_n_oneÚexog_n_Ú
exog_n_oneZ
degen_exogr   Úmod1rA   r~   r   Úmod2r   ©r‡   r   r   r   r‹   û  s    zTestDataDimensions.setup_classc                 C   s   t ||ƒ tƒ d S r   rX  rY  r   r   r   rZ    s    z,TestDataDimensions.check_confidenceintervalsNr[  r   r   r   r   rd  ú  s   
rd  c                       s8   e Zd Ze‡ fdd„ƒZdd„ Zdd„ Zdd„ Z‡  ZS )	ÚTestGLS_large_datac                    s„   t t| ƒ ¡  d}tj |d¡}tj |d¡}t |¡}t|||d� ¡ | _	t||dd� ¡ | _
t||ƒ ¡ | _t||ƒ ¡ | _d S )Néè  r   rf  rý   )Úsuperrq  r‹   rZ   r¨   r©   rš   r   r~   r  r  Úgls_res_noner   r  )r‡   rY   r«   rª   rþ   ©Ú	__class__r   r   r‹     s    
zTestGLS_large_data.setup_classc                 C   s   t | jj| jjtƒ d S r   )r   r  r   r  rŒ   r   r   r   r   Útest_large_equal_params  s
      ÿz*TestGLS_large_data.test_large_equal_paramsc                 C   s   t | jj| jjtƒ d S r   )r   r  rR   r  rŒ   r   r   r   r   Útest_large_equal_loglike"  s    z+TestGLS_large_data.test_large_equal_loglikec                 C   s   t | jj| jjtƒ d S r   )r   r  r   rt  rŒ   r   r   r   r   Útest_large_equal_params_none%  s
      ÿz/TestGLS_large_data.test_large_equal_params_none)	rm   rn   ro   rÅ   r‹   rw  rx  ry  Ú__classcell__r   r   ru  r   rq    s
   rq  c                       s    e Zd Ze‡ fdd„ƒZ‡  ZS )ÚTestNxNxc                    s>   t t| ƒ ¡  t| j| jƒ| _| j jd7  _| j ¡ | _	d S ©Nr   )
rs  r{  r‹   r   rj  rl  ro  rA   r~   r   rp  ru  r   r   r‹   ,  s    zTestNxNx.setup_class©rm   rn   ro   rÅ   r‹   rz  r   r   ru  r   r{  +  s   r{  c                       s    e Zd Ze‡ fdd„ƒZ‡  ZS )ÚTestNxOneNxc                    s>   t t| ƒ ¡  t| j| jƒ| _| j jd7  _| j ¡ | _	d S r|  )
rs  r~  r‹   r   rk  rl  ro  rA   r~   r   rp  ru  r   r   r‹   5  s    zTestNxOneNx.setup_classr}  r   r   ru  r   r~  4  s   r~  c                       s    e Zd Ze‡ fdd„ƒZ‡  ZS )ÚTestNxNxOnec                    s>   t t| ƒ ¡  t| j| jƒ| _| j jd7  _| j ¡ | _	d S r|  )
rs  r  r‹   r   rj  rm  ro  rA   r~   r   rp  ru  r   r   r‹   >  s    zTestNxNxOne.setup_classr}  r   r   ru  r   r  =  s   r  c                  C   s6   t j d¡ t j ddd¡} ttt| | dd … ƒ d S )Nre  r   rf  é   r   )rZ   r¨   rA  rB  r   r  r   ©rˆ   r   r   r   Útest_bad_sizeF  s    r‚  c                  C   sÆ   t j d¡} | jdddd�}tjtj|dd�dtd	�}t  |d
ddg¡| j	dd� }t
|t|jd d …dd …f dd�ƒ ¡ }t
||dd� ¡ }t|j|jdƒ |jjjdks°t‚|jjjdksÂt‚d S )Né90  r   r   rg  rh  rµ   ©ÚdtypeF©Z
drop_firstr…  r@  r¯   rT  r   Trt   ©Úhasconsté   )rZ   r¨   r  ÚrandintÚpdÚget_dummiesÚSeriesÚfloatr�   Únormalr   r   rÿ   r~   r   r:   r@   rˆ   rX   r¼   )r$  rª   r«   ZrescrÃ   r   r   r   Útest_const_indicatorL  s    ÿ(r�  c                  C   s¬   t j d¡} | jdddd�}tjtj|dd�dtd	�}d
||jd < t  	|dddg¡| j
dd� }t||dd�jdd�}t  |j¡rˆt‚t|jtƒs˜t‚t|jtƒs¨t‚d S )Nrƒ  r   r   rg  rh  rµ   r„  Fr†  r   r@  r¯   rT  Tr‡  ÚHC1©Úcov_type)rZ   r¨   r  rŠ  r‹  rŒ  r�  rŽ  rÚ   r�   r�  r   r~   ÚisnanrO   r¼   Ú
isinstancerÏ   )r$  rª   r«   rÃ   r   r   r   Útest_fvalue_const_onlyY  s    ÿr–  c                  C   s`   t  tj d¡¡} t  t d¡¡}t| |ƒ ¡ }| ¡ }tj	 
|jd¡ tj	 t|t jƒ¡ d S )Nr$   r0   )r‹  r�  rZ   r¨   r©   r  r   r~   r'   Útestingr   r¡   r   r•  Ú	DataFrame)r«   rª   rÃ   r'   r   r   r   Útest_conf_int_single_regressorf  s    r™  c               	   C   s‚   dd l } t ¡ }|j}d|d< |j}t||ƒ ¡ }t t	¡� | 
¡  ¡ }W 5 Q R X |  dd|¡}|  dd|¡}d}t||ƒ d S )	Nr   r   Zconstantz)(?<=
\\textbf\{Date:\}             &).+?&z Sun, 07 Apr 2013 &z)(?<=
\\textbf\{Time:\}             &).+?&z     13:46:07     &a•
  \begin{center}
\begin{tabular}{lclc}
\toprule
\textbf{Dep. Variable:}    &      TOTEMP      & \textbf{  R-squared:         } &     0.995   \\
\textbf{Model:}            &       OLS        & \textbf{  Adj. R-squared:    } &     0.992   \\
\textbf{Method:}           &  Least Squares   & \textbf{  F-statistic:       } &     330.3   \\
\textbf{Date:}             & Sun, 07 Apr 2013 & \textbf{  Prob (F-statistic):} &  4.98e-10   \\
\textbf{Time:}             &     13:46:07     & \textbf{  Log-Likelihood:    } &   -109.62   \\
\textbf{No. Observations:} &          16      & \textbf{  AIC:               } &     233.2   \\
\textbf{Df Residuals:}     &           9      & \textbf{  BIC:               } &     238.6   \\
\textbf{Df Model:}         &           6      & \textbf{                     } &             \\
\textbf{Covariance Type:}  &    nonrobust     & \textbf{                     } &             \\
\bottomrule
\end{tabular}
\begin{tabular}{lcccccc}
                  & \textbf{coef} & \textbf{std err} & \textbf{t} & \textbf{P$> |$t$|$} & \textbf{[0.025} & \textbf{0.975]}  \\
\midrule
\textbf{GNPDEFL}  &      15.0619  &       84.915     &     0.177  &         0.863        &     -177.029    &      207.153     \\
\textbf{GNP}      &      -0.0358  &        0.033     &    -1.070  &         0.313        &       -0.112    &        0.040     \\
\textbf{UNEMP}    &      -2.0202  &        0.488     &    -4.136  &         0.003        &       -3.125    &       -0.915     \\
\textbf{ARMED}    &      -1.0332  &        0.214     &    -4.822  &         0.001        &       -1.518    &       -0.549     \\
\textbf{POP}      &      -0.0511  &        0.226     &    -0.226  &         0.826        &       -0.563    &        0.460     \\
\textbf{YEAR}     &    1829.1515  &      455.478     &     4.016  &         0.003        &      798.788    &     2859.515     \\
\textbf{constant} &   -3.482e+06  &      8.9e+05     &    -3.911  &         0.004        &     -5.5e+06    &    -1.47e+06     \\
\bottomrule
\end{tabular}
\begin{tabular}{lclc}
\textbf{Omnibus:}       &  0.749 & \textbf{  Durbin-Watson:     } &    2.559  \\
\textbf{Prob(Omnibus):} &  0.688 & \textbf{  Jarque-Bera (JB):  } &    0.684  \\
\textbf{Skew:}          &  0.420 & \textbf{  Prob(JB):          } &    0.710  \\
\textbf{Kurtosis:}      &  2.434 & \textbf{  Cond. No.          } & 4.86e+09  \\
\bottomrule
\end{tabular}
%\caption{OLS Regression Results}
\end{center}

Notes: \newline
 [1] Standard Errors assume that the covariance matrix of the errors is correctly specified. \newline
 [2] The condition number is large, 4.86e+09. This might indicate that there are \newline
 strong multicollinearity or other numerical problems.)Úrer
   Úload_pandasr}   r|   r   r~   r2   r3   r¹   rº   Zas_latexÚsubr   )rš  rO  rª   r«   rÃ   ÚtableÚexpectedr   r   r   Útest_summary_as_latexq  s(    ýý(rŸ  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestRegularizedFitc                 C   sf   t j d¡ d}t jj|d�}t jj|dfd�}tttfD ]&}|||ƒ}|jdd�}t|j	dƒ q:d S )Niæ  r  rh  r   rr  ©Úalphag        )
rZ   r¨   rA  r�  r   r   r   Úfit_regularizedr   r   )r   r  r|   r}   r‡   r@   Úresultr   r   r   Útest_empty_model¶  s    
z#TestRegularizedFit.test_empty_modelc                 C   sd  dd l }ddlm} |j |j t¡¡}tj|j 	|dd¡dd�}dd	„ t
|ƒD ƒ}|D �]}t||ƒ}|d }|d }	t|d
 ƒ}
t|d ƒ}|dd …  tj¡}|dt|ƒ…df }|dt|ƒ…dt|	ƒd …f }|| ¡  }||jdd� }|| d¡ }||jddd� }tttfD ]>}|||ƒ}|j|
|d�}t|j|dd� |j|
|dd� �qqXd S )Nr   r   )Úglmnet_r_resultsr¬   zlasso_data.csvú,)Ú	delimiterc                 S   s   g | ]}|  d ¡r|‘qS )Zrslt_)Ú
startswith)rØ   rª   r   r   r   rÙ   Í  s     
 z7TestRegularizedFit.test_regularized.<locals>.<listcomp>r   r   r   )Zddof©ÚL1_wtr¢  ©ÚdecimalT)r«  r¢  Zprofile_scale)Úosr¬   r¦  ÚpathÚdirnameÚabspathÚ__file__rZ   ZloadtxtÚjoinÚdirÚgetattrrŽ  ÚastypeZfloat64Úintr(  Zstdr   r   r   r£  r   r   )r   r®  r¦  Zcur_dirrˆ   ÚtestsÚtestZvecr  Úpr«  Zlamr   r|   r}   r‡   r¢   Úrsltr   r   r   Útest_regularizedÂ  s4     ÿ

 
z#TestRegularizedFit.test_regularizedc                 C   sp  t j d¡ t jjdd�}|d d …df |d d …df  t jjdd� }t jjdd�}|d d …df |d d …df  t jjdd� }t  |||f¡}t  |||f¡}t  ||f¡}t  ||f¡}t  d¡}	d|	dd…< t  d|	 ¡}
d	D ]‚}d
D ]x}t||ƒ}|j	||d�}t
|||	d�}|j	||d�}t|||
d�}|j	||d�}t|j|jdd� t|j|jdd� qðqèd S )Ni˜  ©r  r   rh  r   r   r  éÈ   r   ©r   r?  r   r  rª  rH  rý   r   r¬  ©rZ   r¨   rA  r�  ZvstackÚconcatenater  r  r   r£  r   r   r   r   )r   Úexog1Úendog1Úexog2Úendog2Úexog_aÚendog_aÚexog_bÚendog_bÚwgtsrþ   r«  r¢  rn  Úrslt1ro  Úrslt2Úmod3Úrslt3r   r   r   Útest_regularized_weightsé  s,    ..

z+TestRegularizedFit.test_regularized_weightsc                 C   sz  t j d¡ t jjdd�}|d d …df |d d …df  t jjdd� }t jjdd�}|d d …df |d d …df  t jjdd� }t  |||f¡}t  |||f¡}t  ||f¡}t  ||f¡}t  d¡}	d|	dd…< t  d|	 ¡}
d	D ]Œ}d
D ]‚}|gd }t||ƒ}|j	||d�}t
|||	d�}|j	||d�}t|||
d�}|j	||d�}t|j|jdd� t|j|jdd� qðqèd S )Né„   r½  rh  r   r   r  r¾  r   r¿  r  r   rª  rH  rý   r¬  rÀ  )r   rÂ  rÃ  rÄ  rÅ  rÆ  rÇ  rÈ  rÉ  rÊ  rþ   r«  Zalpha_elementr¢  rn  rË  ro  rÌ  rÍ  rÎ  r   r   r   Útest_regularized_weights_list	  s4    ..
ÿþ
z0TestRegularizedFit.test_regularized_weights_listN)rm   rn   ro   r¥  r¼  rÏ  rÑ  r   r   r   r   r   ³  s   ' r   c                  C   sœ   ddl m}  dd lm} ddlm} |jj ¡ j	}t
j|j|jd df< |d| ¡ d�}| ¡ }|d|d�}| ¡ }t|jj|jjƒ t| |d|dd� d S )	Nr   )Ú
PatsyError)ÚolsZfirmz&value ~ invest + capital + firm + year)Zformularˆ   Úraise)rˆ   rž   )ZpatsyrÒ  Zstatsmodels.apiÚapiZstatsmodels.formula.apirÓ  ZdatasetsZgrunfeldr›  rˆ   rZ   r    ÚlocÚindexZdropnar~   r   r   Úvaluesr   )rÒ  ÚsmrÓ  rO  r¢   rÃ   ro  r   r   r   r   Útest_formula_missing_cat.  s(     ÿûrÚ  c                  C   s¦   d} t  dd| ¡}t  t jg¡}t dt  ||f¡i¡}t  ddg¡}t jj| d d�}|d |d |d   | |d< t	j
d	|d
�}| ¡ }|j|d d… d� d S )Nrg  r   r$   rª   r   r7  rh  r«   zy ~ xr�  r�   )r}   )rZ   Zlinspacerè   r    r‹  r˜  rÁ  r¨   r�  r   Zfrom_formular~   Úpredict)Znsamplerˆ   ÚnullÚbetar&  r@   r~   r   r   r   Útest_missing_formula_predictL  s     rÞ  c                  C   sÒ   d} t j d¡ t j | d¡}|dkddgk t¡}| d¡t j | ¡ }ddlm}m	} |||ƒj
dd	�}tt  |j¡ƒ tt  |j¡ƒ | ¡  |||ƒj
dd	�}tt  |j¡ƒ tt  |j¡ƒ | ¡  d S )
Nr  r   r   r   TF©r   r   r‘  r’  )rZ   r¨   rA  r©   r¶  r·  r±   Ú#statsmodels.regression.linear_modelr   r   r~   r   r”  rO   rÏ   rº   ©rY   rª   r«   r   r   rÃ   r   r   r   Útest_fvalue_implicit_constant[  s    râ  c                  C   s´   d} t j d¡ t  | ¡}t j | ¡}ddlm}m} |||ƒjdddid�}t	t  
|j¡ƒ t	t  
|j¡ƒ | ¡  |||ƒjd	d
�}t	t  
|j¡ƒ t	t  
|j¡ƒ | ¡  d S )Nrf  r   r   rß  ZhacZmaxlagsr   )r“  Zcov_kwdsr‘  r’  )rZ   r¨   rA  r  r©   rà  r   r   r~   r   r”  rO   rÏ   rº   rá  r   r   r   Útest_fvalue_only_constantp  s    
rã  c                  C   sü   d} d}t j d¡ t jj| |fd�}| d¡t jj| d� }t  |¡}d|d< dD ]„}||t  |¡ || fD ]f}t||ƒ}|j|d�}t||ƒ}	|	j|dd	�}
t	|j
|
j
ƒ t||ƒ}|j|d
d	�}t	|j
|j
ƒ qpqT|j}t  ||j
¡}t	||ƒ d S )Nr  r™   é<  rh  r   r   )r   r   r$   r¡  ©r¢  r«  rU   )rZ   r¨   rA  r�  r±   r  r   Z
_fit_ridger£  r   r   r  r�   )r  rº  ÚxmatÚyvecÚvÚar¢  Úmodel1Úresult1Úmodel2Úresult2Zmodel3Zresult3Zfv1Zfv2r   r   r   Ú
test_ridge„  s(    



rî  c            	      C   sÀ   d} d}t j d¡ t jj| |fd�}|d d …df |d d …df  t jj| d� }t||ƒ}|jddd	d
�}t||d d …ddgf ƒ}| ¡ }ddg}t|j| |jƒ t|j	| |j	ƒ d S )Nr  r™   rä  rh  r   r   r¯   r?  T©r¢  r«  Úrefit)
rZ   r¨   rA  r�  r   r£  r~   r   r   r!   )	r  rº  ræ  rç  rê  rë  rì  rí  Úiir   r   r   Útest_regularized_refitž  s    .
rò  c                  C   sÞ  d} d}t j d¡ t jj| |fd�}| d¡t jj| d� }t j dd| ¡}t|||d�}t||t  d| ¡d�}t||d| d�}g }|||fD ]d}	|	j	d	d
dd�}
| 
|
¡ |
j}t  ||¡}|	 |
j¡}t||ƒ t|
j|ƒ |
 ¡ }t||ƒ q”t|d jj|d jjdd� t|d jj|d jjdd� t|d j|d jdd� t|d j|d jdd� t|d jj|d jjdd� t|d jj|d jjdd� t|d j|d jdd� t|d j|d jdd� d S )Nr  r™   rä  rh  r   r   rH  rý   g      4@r?  Trï  r   rU   r%   )rZ   r¨   rA  r�  r±   rB  r   r   r  r£  r8  r   r�   rÛ  r   r  r@   ZwendogZwexog)r  rº  ræ  rç  ZwgtZ	model_wlsZ
model_gls1Z
model_gls2rÃ   rê  rë  r   r  Úprr   r   r   Útest_regularized_predict®  s8    

rô  c                  C   s�   d} d}t j d¡ t jj| |fd�}| d¡t jj| d� }t|d |ƒ}|jddd�}t||dd	�}|jddt  d¡d
�}t|j	|j	ƒ d S )Nr  r™   rä  rh  r   r@  r?  rå  )Úoffset)r¢  r«  Zstart_params)
rZ   r¨   rA  r�  r±   r   r£  r�   r   r   )r  rº  ræ  rç  rê  rë  rì  rí  r   r   r   Útest_regularized_optionsÒ  s      ÿrö  c               	   C   s¼   t j d¡} |  d¡}|dd … d|d d…   }dgddgd	d
dgddddgdddddgg}tddƒD ]N}t||ƒ\}}t|||d  dd� td| |dƒ\}}t  ||k¡sht‚qhd S )Nrƒ  i'  r   r?  r�   gÌ‹]ìÙ?g�”ˆKétÝ?gÞî›±­Æ¿gªeÆ6bÞ?g–rB }Ë¿g
GÒfƒé´?gÜˆ‚t£Þ?g«@-ÓÌ¿gtSù?Ñº?g�EÓÙÉà¨¿ghPÀ¸L´Þ?g� èªqÍ¿g|\#›¼?gí
ž¾u0®¿g»Á©0–?r–   g�íµ ÷Æ°>rÁ   F)	rZ   r¨   r  r©   r(   r   r   Úallr¼   )Zrndr&  r«   rž  r-   ÚarÚ_Zas_nodemeanr   r   r   Ú	test_burgá  s    

ûrú  c                	   C   sx   t  t¡� tt d¡ƒ W 5 Q R X t  t¡� ttj d¡dƒ W 5 Q R X t  t¡� ttj d¡dƒ W 5 Q R X d S )N©r  r   r  r   Úapple)r2   r  r  r   rZ   r  r¨   r©   r   r   r   r   Útest_burg_errorsõ  s    rý  zsqrt_lasso requires cvxopt)Úreasonc               
   C   sÆ  t j d¡ d} d}t  |¡}dt  t j ||¡¡ }t j |¡}t  	t jj
| |fd�|j¡}t  |¡}dddddg|dd…< dd	lm} d
t  | ¡ | ddd|   ¡ }t  	||¡dt jj
| d�  }	dddœ}
t jd t jd dœ}dD ]Ð}t|	|ƒjd||d�}|j| }t  t  	|t  	||¡¡¡}t|	|d d …dd…f ƒ ¡ }t  |¡}|j|dd…  |dd…< t  t  	|t  	||¡¡¡}t|| |
| ddd� t|jdd… || ddd� qðd S )Ni«• r  iô  r?  rh  r   r   r™   )Únormgš™™™™™ñ?gš™™™™™©?r   g      Ð?r   )FT)gtrñ}’÷ë?gØïË‘¼î?g9Bòì²ï?gÔR ¾	î?gñ-‹í?)gg<5Âoî?gòÇY}|ð?gö’Œ½“Fð?gÀT\êZ:ï?g·¢bÖjóï?Z
sqrt_lasso)rx   r¢  rð  r7  )r&   rÂ   gñhãˆµøä>)rZ   r¨   rA  r   rõ   ÚsubtractÚouterr   Zcholeskyr�   r�  r‚   r�   Zscipy.stats.distributionsrÿ  r°   ZppfZr_r   r£  r   r~   r   )r  rº  rñ  ZcxZcxrrª   r%  rÿ  r¢  r«   Zexpected_oracleZexpected_paramsrð  r»  ÚerrZnumerÚoracleZ
oracle_errÚdenomr   r   r   Útest_sqrt_lassoþ  sT    

$
ÿü
  ÿ

   ÿ   ÿr  c                 C   sZ   t jjdddd� t¡}t j d¡}t||ƒ ¡ }t|| t j¡ƒ ¡ }t	|j
|j
ƒ d S )Nr   r   rû  rh  r  )rZ   r¨   rŠ  r¶  ÚboolÚstandard_normalr   r~   Údoubler   r   )Úreset_randomstater}   r|   Zbool_resrÃ   r   r   r   Útest_bool_regressor:  s
    r
  c              	   C   sp   t j d¡}t  d¡}t||ƒ ¡ }tjdd��&}t  |j	¡sBt
‚t  |j¡sRt
‚W 5 Q R X t|ƒdkslt
‚d S )Nr¾  )r¾  r   Tr¤   r   )rZ   r¨   r  r  r   r~   r¦   r§   r”  rO   r¼   rÏ   r)   )r	  r«   rª   rÃ   Z	recordingr   r   r   Útest_ols_constantB  s    
r  c                  C   sF   t j d¡} |  d¡}|  d¡}t||ƒ ¡  ¡ }d| ¡ ksBt‚d S )Nr   rû  r  u   RÂ² is computed )	rZ   r¨   r  r  r   r~   rº   Úas_textr¼   )r$  rª   r«   rº   r   r   r   Útest_summary_no_constantL  s
    

r  c                 C   sn   t j d¡}t j d¡}|t j d¡ }t||ƒ ¡ }t|jt  t j 	|j
| ¡¡ƒ t|jt j 	|¡ƒ d S )Nr  ©r  r   ©r  r™   )rZ   r¨   r  r   r~   r   Zcondition_numberr°   r   Zcondr‚   )r	  r«   rª   rÃ   r   r   r   Útest_condition_numberT  s     r  c                 C   sÆ   t j d¡}t j d¡}|t j d¡ }t||ƒ ¡ }dd l}| | ¡ ¡}| |jdd�¡}t|j	ƒdkspt
‚t|j	ƒdks‚t
‚|j	d  ¡ |j	d  ¡ ks¢t
‚|j	d	  ¡ |j	d	  ¡ ksÂt
‚d S )
Nr  r  r  r   Tr¶   r   r   r   )rZ   r¨   r  r   r~   r	  Údeepcopyrº   r)   r»   r¼   r  )r	  r«   rª   rÃ   r	  r¿   Z	slim_summr   r   r   Útest_slim_summary]  s     r  )\rp   Zstatsmodels.compat.pythonr   r¦   ÚnumpyrZ   Znumpy.testingr   r   r   r   r   Zpandasr‹  r2   Zscipy.linalgr   Zscipy.statsr	   rô   Zstatsmodels.datasetsr
   rà  r   r   r   r   r   Zstatsmodels.tools.toolsr   rq   Z	DECIMAL_3Z	DECIMAL_2r  rŒ   r  ZcvxoptZ
has_cvxoptÚImportErrorr   rr   rÆ   rÉ   rÕ   rç   rê   rø   rú   r
  r  r6  r>  rC  rG  rK  rQ  rU  rV  rW  r^  r_  ra  rb  rd  rq  r{  r~  r  r‚  r�  r–  r™  rŸ  r   rÚ  rÞ  râ  rã  rî  rò  rô  rö  rú  rý  r  Zskipifr  r
  r  r  r  r  r   r   r   r   Ú<module>   s˜   
 4 '$*#G5U- 			B{$	
;
	