U
    Kvf                     @   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   P/tmp/pip-unpacked-wheel-2v6byqio/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 )Ngdy=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Z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/IeQ@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 )NgN-)r   r   r   rq   r   r   r   r   r     s    zTestTtest2.test_tvaluec                 C   s   t | jjdt d S )Ng9y@v|@)r   r   r   rq   r   r   r   r   r     s    zTestTtest2.test_sdc                 C   s   t | jjdt d S )Ng6X%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   gMbp?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   r0  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   r0  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   r/  r1  r2  r3  r4  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   r9  r   r   r   r     s     c                 S   s   g | ]
}|j qS r   )r^   r9  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   r9  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!   r9  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:   r9  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   r5    s   
r5  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{Gz?r  r6  )r
   rz   r   r}   r|   r   rZ   r   seeduniformr   r7  r   r~   r   r  )r   r   r   r   r  r8  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   rD  rB   )r   rB   r   r   r   test_df_residB  s    zTestNonFit.test_df_residN)rm   rn   ro   r   r   rE  r   r   r   r   rB  9  s   
rB  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   rH  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$   rG  )rZ   r  r   r  r   r|   r}   )r   rH  r   r   r   test_wrong_size_weightsO  s    
z+TestWLS_CornerCases.test_wrong_size_weightsN)rm   rn   ro   r   r   rI  r   r   r   r   rF  G  s   
rF  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   rG  r>  )statsmodels.datasets.ccardrz   ry   rL  rZ   r{   r|   r}   r   r   r   r~   r   r   rg   rd   rR   rV   r^   r[   r@   rH  )
r   rz   rL  dtar|   r}   rY   rH  Zscaled_weightsZcorr_icr   r   r   r   W  s     zTestWLSExogWeights.setup_classNr   r   r   r   r   rJ  T  s   rJ  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   rG  gg@L?r   g@)r   r   r   r~   r   rO   r7   )r"  r   Z	wls_modelr   r   r   test_wls_exampler  s    
rP  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         @rG  )rZ   r   r   r   r~   r   r   Zcentered_tss)r   r   Zols_modZywZXwr8  Zwls_modr   r   r   test_wls_tss~  s    (rT  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   rK  Trt   gUUUUUU?rG  )Zstatsmodels.datasets.longleyrz   rZ   r{   r|   r}   r   r   r~   r)   r   r   )r   rz   rN  r|   r}   Z
wls_scalarrH  Z	wls_arrayr   r   r   r     s    z TestWLSScalarVsArray.setup_classNr   r   r   r   r   rU    s   rU  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   rK  r   r   rG  r   )rM  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   rY  r   r   r   r   rV    s   

rV  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   rK  r$      r   r   r   )rH  r   F   )rM  rz   r|   rZ   r   r   r}   r   r   r   rH  )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 rC  )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   rW  rX  r   r   r   rY    s    z%TestWLS_OLS.check_confidenceintervalsNrZ  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 rC  )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   rW  rX  r   r   r   rY    s    z%TestGLS_OLS.check_confidenceintervalsNrZ  r   r   r   r   r`    s   
r`  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   rK  r   Zmle)r  rx   g."0?g3Eܿg@**ʿg0?)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   rb  rq   r   r   r   r   r      s    zTestYuleWalker.test_paramsN)rm   rn   ro   r   r   r    r   r   r   r   ra    s   
ra  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 )N1  r         sizer   r   )rZ   r   r@  rA  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   rW  rX  r   r   r   rY    s    z,TestDataDimensions.check_confidenceintervalsNrZ  r   r   r   r   rc    s   
rc  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   re  r   )superrp  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   rs  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   rv  rw  rx  __classcell__r   r   rt  r   rp    s
   rp  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   )
rr  rz  r   r   ri  rk  rn  rA   r~   r   ro  rt  r   r   r   ,  s    zTestNxNx.setup_classrm   rn   ro   r   r   ry  r   r   rt  r   rz  +  s   rz  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{  )
rr  r}  r   r   rj  rk  rn  rA   r~   r   ro  rt  r   r   r   5  s    zTestNxOneNx.setup_classr|  r   r   rt  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{  )
rr  r~  r   r   ri  rl  rn  rA   r~   r   ro  rt  r   r   r   >  s    zTestNxNxOne.setup_classr|  r   r   rt  r   r~  =  s   r~  c                  C   s6   t jd t jddd} ttt| | dd   d S )Nrd  r   re     r   )rZ   r   r@  rA  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st|jjjdkstd S )N90  r   r   rf  rg  r   dtypeFZ
drop_firstr  r?  r   rS  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rtt|jtstt|jtstd S )Nr  r   r   rf  rg  r   r  Fr  r   r?  r   rS  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'   Z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  rN  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  rg  r   rq  alphag        )
rZ   r   r@  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 qqd S )Ni  r  r   rg  r   r   r     r   r   r>  r   r  r  rG  r   r   r  rZ   r   r@  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  rm  rslt1rn  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 qqd S )N   r  rg  r   r   r  r  r   r  r  r   r  rG  r   r  r  )r   r  r  r  r  r  r  r  r  r  r   r  Zalpha_elementr  rm  r  rn  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  rN  r   r   rn  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 )Nrf  r   r$   r   r   r6  rg  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   r@  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 )Nre  r   r   r  ZhacZmaxlagsr   )r  Zcov_kwdsr  r  )rZ   r   r@  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   <  rg  r   r   )r   r   r$   r  r  r  rU   )rZ   r   r@  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  rg  r   r   r   r>  Tr  r  refit)
rZ   r   r@  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|| qt|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  rg  r   r   rG  r   g      4@r>  Tr  r   rU   r%   )rZ   r   r@  r  r   rA  r   r   r  r  r7  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  rg  r   r?  r>  r  )offset)r  r  Zstart_params)
rZ   r   r@  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̋]?gKt?gƿge6b?grB }˿g
Gf?g܈t?g@-̿gtS?Ѻ?gEਿghPL?g qͿg|\#?g
u0g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   Z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 qd S )Ni r  i  r>  rg  r   r   r   )normg?g?r   g      ?r   )FT)gtr}?gˑ?g9B?gR	?g-?)gg<5o?gY}|?gF?gT\Z:?gbj?Z
sqrt_lasso)rx   r  r  r6  )r&   r   gh㈵>)rZ   r   r@  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_errZ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  rg  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st
|j	d  |j	d  kst
|j	d	  |j	d	  kst
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   Z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  r5  r=  rB  rF  rJ  rP  rT  rU  rV  r]  r^  r`  ra  rc  rp  rz  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{$	
;
	