
    'YHh                        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#	 ddl$Z$dZ% G d d      Z' G d de'      Z( G d de'      Z) G d d      Z* G d d      Z+ G d d      Z, G d d      Z- G d d       Z. G d! d"      Z/ G d# d$e'      Z0 G d% d&      Z1 G d' d(      Z2 G d) d*e2      Z3 G d+ d,      Z4 G d- d.      Z5 G d/ d0e'      Z6d1 Z7d2 Z8 G d3 d4e'      Z9 G d5 d6e'      Z:d7 Z; G d8 d9e'      Z< G d: d;e'      Z= G d< d=      Z> G d> d?e'      Z? G d@ dAe?      Z@ G dB dCe?      ZA G dD dEe?      ZB G dF dGe?      ZCdH ZDdI ZEdJ ZFdK ZGdL ZH G dM dN      ZIdO ZJdP ZKdQ ZLdR ZMdS ZNdT ZOdU ZPdV ZQdW ZRdX ZSej                  j                  e% dYZ      d[        ZVd\ ZWd] ZXd^ ZYd_ ZZd` Z[y# e&$ r dZ%Y w xY w)az&
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                       e Zd ZdZeZd ZeZd ZeZ	d Z
eZd ZeZd ZeZd ZeZd Zd	 ZeZd
 ZeZd ZeZd ZeZd ZeZd ZeZd ZeZ d Z!eZ"d Z#eZ$d Z%eZ&d Z'eZ(d Z)eZ*d Z+eZ,d Z-y)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                     t        | j                  j                  | j                  j                  | j                         y N)r   res1paramsres2decimal_paramsselfs    e/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/regression/tests/test_regression.pytest_paramsz"CheckRegressionResults.test_params7   +    IIdii..0C0C	
    c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   bser   decimal_standarderrorsr   s    r!   test_standarderrorsz*CheckRegressionResults.test_standarderrors>   s'    IIMM499==$*E*E	
r$   c                 >   | j                   j                         }| j                  j                         }t        t	        |            D ]R  }t        ||   d   ||   d   d| j                   z         t        ||   d   ||   d   d| j                   z         T y )Nr   
   rtolr   )r   conf_intr   rangelenr   decimal_confidenceintervals)r    conf1conf2is       r!   test_confidenceintervalsz/CheckRegressionResults.test_confidenceintervalsE   s    		""$		""$s5z" 
	AaaD<<<<
 aaD<<<<
	r$   c                 J   t        | j                  j                        dkD  rut        j                  t
        d      5  | j                  j                  d      }d d d        | j                  j                         dd }t        || j                         y y # 1 sw Y   ?xY w)Nr   zcols is)matchr   r   )colsr   )	r/   r   r   pytestwarnsFutureWarningr-   r   decimal_conf_int_subset)r    ci1ci2s      r!   test_conf_int_subsetz+CheckRegressionResults.test_conf_int_subsetW   s    tyy 1$m9= 6ii((f(56))$$&q+CS$*F*FG6 6s   BB"c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   scaler   decimal_scaler   s    r!   
test_scalez!CheckRegressionResults.test_scaleb   s'    IIOOTYY__d.@.@	
r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   rsquaredr   decimal_rsquaredr   s    r!   test_rsquaredz$CheckRegressionResults.test_rsquaredi   s+    II		 2 2D4I4I	
r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   rsquared_adjr   decimal_rsquared_adjr   s    r!   test_rsquared_adjz(CheckRegressionResults.test_rsquared_adjp   s-    II""II""%%	
r$   c                     t        | j                  j                  j                  | j                  j                         t        | j                  j                  j
                  | j                  j
                         y r   )r   r   modeldf_modelr   df_residr   s    r!   test_degreesz#CheckRegressionResults.test_degreesw   sF    TYY__--tyy/A/ABTYY__--tyy/A/ABr$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   essr   decimal_essr   s    r!   test_esszCheckRegressionResults.test_ess}   s$    DIIMM499==$:J:JKr$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   ssrr   decimal_ssrr   s    r!   test_sumof_squaredresidsz/CheckRegressionResults.test_sumof_squaredresids   $    DIIMM499==$:J:JKr$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   	mse_modelr   decimal_mse_residr   s    r!   test_mse_residz%CheckRegressionResults.test_mse_resid   s+    II!4!4d6L6L	
r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   	mse_residr   decimal_mse_modelr   s    r!   test_mse_modelz%CheckRegressionResults.test_mse_model   s+    II!4!4d6L6L	
r$   c                     t        | j                  j                  | j                  j                  | j                  d| z         y )NzTest class %s)err_msg)r   r   	mse_totalr   decimal_mse_totalr   s    r!   test_mse_totalz%CheckRegressionResults.test_mse_total   s5    IIII""#d*		
r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   fvaluer   decimal_fvaluer   s    r!   test_fvaluez"CheckRegressionResults.test_fvalue   s-     	IIdii..0C0C	
r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   llfr   decimal_logliker   s    r!   test_loglikez#CheckRegressionResults.test_loglike   s$    DIIMM499==$:N:NOr$   c                    t        | j                  j                  | j                  j                  | j                         | j                  j                  d      }| j                  j                  | j                  j                  j                  z   }| j                  j                  j                  }| j                  j                  d|dz  |z   z  ||z
  dz
  z  z   }t        ||d       | j                  j                  d      }| j                  j                  d|z  z
  dt        j                  t        j                  |            z  |z  z   }t        ||d       y )Naiccr   r   绽|=r+   hqic)r   r   aicr   decimal_aicinfo_criteriarN   rM   
k_constantnobsr   nplog)r    aicc1krw   aicc2hqic1hqic2s          r!   test_aiczCheckRegressionResults.test_aic   s    DIIMM499==$:J:JK		''/II!;!;;yy##		QTAX$(Q, ??u51		''/Q&!bffRVVD\.B*BQ*FFu51r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   bicr   decimal_bicr   s    r!   test_biczCheckRegressionResults.test_bic   rY   r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   pvaluesr   decimal_pvaluesr   s    r!   test_pvaluesz#CheckRegressionResults.test_pvalues   s+    IItyy00$2F2F	
r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   wresidr   decimal_wresidr   s    r!   test_wresidz"CheckRegressionResults.test_wresid   r#   r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   residr   decimal_residsr   s    r!   test_residsz"CheckRegressionResults.test_resids   s'    IIOOTYY__d.A.A	
r$   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   resid_pearsonr   decimal_norm_residsr   s    r!   test_norm_residsz'CheckRegressionResults.test_norm_resids   s-    II##II##$$	
r$   N).__name__
__module____qualname____doc__	DECIMAL_4r   r"   r'   r(   r0   r4   r<   r?   rB   rC   rF   rG   rJ   rK   rP   rS   rT   rW   rX   r\   r]   r`   ra   re   rf   ri   rj   rm   rn   rt   r   r   r   r   r   r   r   r   r   r   r    r$   r!   r   r   /   s
   
 N

 '

 #,  ( M

 !

 %
C KL KL "
 "

 "
 N
  OP K
2 KL  O

 N

 N

 $
r$   r   c                   j    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zy)TestOLSc                    ddl m} t        j                         }t	        j
                  |j                        }t	        j
                  |j                        }t        |d      }t        ||      j                         } |       }|j                  |_        || _        || _        t        ||      j                  d      }t        ||      }t        j                  j                  |      \  }	}
|	|
c|_        |_        t        j                  j%                  t	        j&                  |
j(                  |
            |_        t        j                  j-                  |
      |_        |j                  d      }|| _        || _        y )Nr   )LongleyFprependqrmethod)results.results_regressionr   r   loadrx   asarrayendogexogr   r   fitr   r   r   linalgr   exog_Qexog_RinvdotTnormalized_cov_paramsmatrix_rankrankres_qrres_qr_manual)clsr   datar   r   r   r   r   model_qrQRres_qr2s               r!   setup_classzTestOLS.setup_class   s   7||~

4::&zz$))$D%05$##%ykkUD!%%T%2ud#yy||D!1+,a()+rvvacc1~)F&		--a0,,d,+
#r$   c                     | j                   j                  | j                  j                  z
  }|| j                   j                  z  }t        j                  |      }t        ||t               y r   )r   	eigenvalsr   rx   
zeros_liker   	DECIMAL_7)r    eigenval_perc_diffzeross      r!   test_eigenvalueszTestOLS.test_eigenvalues   sX    KK!!D$6$6$@$@@ 	 	dkk33301.yAr$   c                    t        | j                  j                  d d | j                  j                  d d t               t        t        j                  | j                  j                  d         | j                  j                  d          y )N)r   r   HC0_ser   r   r   rx   roundr   s    r!   test_HC0_errorszTestOLS.test_HC0_errors  sh     	IISb!499#3#3CR#8)	
 	!1!1"!56		8H8H8LMr$   c                     t        | j                  j                  d d | j                  j                  d d t               t        | j                  j                  d   | j                  j                  d   d       y )Nr   gHך>r+   )r   r   HC1_ser   r   r   r   s    r!   test_HC1_errorszTestOLS.test_HC1_errors  _    IISb!499#3#3CR#8)	
 			((,dii.>.>r.BNr$   c                     t        | j                  j                  d d | j                  j                  d d t               t        | j                  j                  d   | j                  j                  d   d       y )Nr   gƠ>r+   )r   r   HC2_ser   r   r   r   s    r!   test_HC2_errorszTestOLS.test_HC2_errors  r   r$   c                     t        | j                  j                  d d | j                  j                  d d t               t        | j                  j                  d   | j                  j                  d   d       y )Nr   gv!>r+   )r   r   HC3_ser   r   r   r   s    r!   test_HC3_errorszTestOLS.test_HC3_errors  sb    IISb!499#3#3CR#8)	
 	IIR $))"2"22"6V	
r$   c                 n    t        | j                  j                  | j                  j                  d       y N   )r   r   r   r   r   s    r!   test_qr_paramszTestOLS.test_qr_params%  s"    DII,,dkk.@.@!Dr$   c                     t        t        j                  | j                  j                        | j                  j                  | j
                  j                  z  d       y N   )r   rx   	ones_liker   r   r   r   s    r!   test_qr_normalized_cov_paramsz%TestOLS.test_qr_normalized_cov_params(  sB    LL889II++kk//0		
r$   c                 r   t        j                         }t        |j                  d      |_        t        j
                  |j                  g d<   t        |j                  |j                  d      }t        |j                  j                  d   d       t        |j                  j                  d   d       y )NFr   )r   r      drop)missingr      )
r   r   r   r   rx   nanr   r   r   shape)r    r   mods      r!   test_missingzTestOLS.test_missing1  su    ||~ E:	!#

:$**dii8SYY__Q',SXX^^A&+r$   c                 X   t        j                  d      5  t        j                  j	                  d      }t        j                  j	                  dd      }t        ||      j                         }|j                  }t        |t        j                         d d d        y # 1 sw Y   y xY w)NTrecordr   r   )
warningscatch_warningsrx   randomrandnr   r   rI   r   r   )r    xyresultsrI   s        r!   test_rsquared_adj_overfitz!TestOLS.test_rsquared_adj_overfit9  sw     $$D1 	/		"A		1%A!QimmoG"//Lrvv.	/ 	/ 	/s   B B  B)c                 p    t        | j                  j                  | j                  j                  d       y )Ngdy=r+   )r   r   r   r   r   s    r!   test_qr_alternativeszTestOLS.test_qr_alternativesD  s'    KK 2 2 9 9	
r$   c                    | j                   j                  }|t        j                  t        j                  |dz        | j                   j
                  z        z  }| j                   j                  }t        ||t               y )N       @)	r   r   rx   sqrtsumrO   r   r   r   )r    r   
norm_residmodel_norm_resids       r!   test_norm_residzTestOLS.test_norm_residI  s]    		  RWWRVVESL%9DII<N<N%NOO
9922,j)Dr$   c                 0   t        j                         5  d}t        j                  d|t               | j                  j                  d      }d d d        t        j                        dk(  sJ t        t        |            dk  sJ y # 1 sw Y   =xY w)Nz!kurtosistest only valid for n>=20ignore)messagecategoryTslimr   i,  )	r   r   filterwarningsUserWarningr   summaryr/   tablesstr)r    msgsumms      r!   test_summary_slimzTestOLS.test_summary_slimO  s    $$& 	05C##Hc-8: 99$$$$/D	0 4;;1$$$3t9~$$$	0 	0s   ;BBc                 B   t        j                  d      5  | j                  j                  j                  }t        ||      j                         }t        |j                  dd       t        |j                  |j                  d       d d d        y # 1 sw Y   y xY w)NTr   r   g#B;atolg|=)r   r   r   rM   r   r   r   r   rA   r   r   )r    r   ress      r!   test_norm_resid_zero_variancez%TestOLS.test_norm_resid_zero_varianceZ  ss    $$D1 	G		%%Aa)--/CCIIqu5CJJ(9(9F		G 	G 	Gs   A5BBN)r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r  r	  r   r$   r!   r   r      s\    $ $2BNOO
E
,	/

E	%Gr$   r   c                       e Zd Zed        Zy)TestRTOc                 z   ddl m} t        j                         }t	        j
                  |j                        }t	        j
                  |j                        }t        ||      j                         } |       }|j                  |_
        || _        || _        t        ||      j                  d      }|| _        y )Nr   )
LongleyRTOr   r   )r   r  r   r   rx   r   r   r   r   r   r   r   r   r   )r   r  r   r   r   r   r   r   s           r!   r   zTestRTO.setup_classc  s    :||~

4::&zz$))$5$##%|kkUD!%%T%2
r$   Nr   r   r   r
  r   r   r$   r!   r  r  b  s     r$   r  c                   8    e Zd ZdZed        Zd Zd Zd Zd Z	y)	TestFtestz,
    Tests f_test vs. RegressionResults
    c                 F   t        j                         }t        |j                  d      |_        t	        |j
                  |j                        j                         | _        t        j                  d      d dd d f   }| j                  j                  |      | _        y )NFr   r   r   )r   r   r   r   r   r   r   r   rx   identityf_testFtest)r   r   r   s      r!   r   zTestFtest.setup_classy  sl    ||~ E:	tzz499-113KKN3B36"HHOOA&	r$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r  rh   r   r   r   s    r!   test_FzTestFtest.test_F  s"    DJJ--tyy/?/?Kr$   c                 v    t        | j                  j                  | j                  j                  t
               y r   )r   r  pvaluer   f_pvaluer   r   s    r!   test_pzTestFtest.test_p  s"    DJJ--tyy/A/A9Mr$   c                     t        | j                  j                  | j                  j                  j
                         y r   )r   r  df_denomr   rM   rO   r   s    r!   test_Df_denomzTestFtest.test_Df_denom  $    TZZ(($))//*B*BCr$   c                 D    t        | j                  j                  d       y r   )r   r  df_numr   s    r!   test_Df_numzTestFtest.test_Df_num  s    TZZ&&*r$   N)
r   r   r   r   r
  r   r  r  r  r"  r   r$   r!   r  r  t  s2     ' 'LND+r$   r  c                   >    e Zd ZdZed        Zd Zd Zd Zd Z	d Z
y)	
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                    t        j                         }t        d|j                  j                  d   dz         D cg c]  }d| 	 }}||j                  _        t        |j                  d      |_        t        |j                  |j                        j                         }g dg dg}|j                  |      | _        d}|j                  |      | _        y c c}w )Nr   r   Fr   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   zx2 = x3, x5 = x6)r   r   r.   r   r   columnsr   r   r   r   r  Ftest1	NewFtest1)r   r   r3   r&  r   R2hyps          r!   r   zTestFTest2.setup_class  s    ||~$)!TYY__Q-?!-C$DEqQqc7EE#		 E:	4::tyy)--/$&<=[[_
 C( Fs   Cc                 l    t        | j                  j                  | j                  j                         y r   )r   r(  rh   r'  r   s    r!   test_new_ftestzTestFTest2.test_new_ftest  s     T^^**DKK,>,>?r$   c                 N    t        | j                  j                  dt               y )NgN}{#@)r   r'  rh   r   r   s    r!   rj   zTestFTest2.test_fvalue  s    DKK..0BINr$   c                 N    t        | j                  j                  dt               y )Ngx*.v?)r   r'  r  r   r   s    r!   test_pvaluezTestFTest2.test_pvalue  s    KK 5y	
r$   c                 D    t        | j                  j                  d       y N	   r   r'  r  r   s    r!   test_df_denomzTestFTest2.test_df_denom      T[[))1-r$   c                 D    t        | j                  j                  d       y Nr   r   r'  r!  r   s    r!   test_df_numzTestFTest2.test_df_num      T[[''+r$   N)r   r   r   r   r
  r   r,  rj   r/  r4  r9  r   r$   r!   r$  r$    s6     	) 	)@O

.,r$   r$  c                   8    e Zd ZdZed        Zd Zd Zd Zd Z	y)
TestFtestQz}
    A joint hypothesis test that Rb = q.  Coefficient tests are essentially
    made up.  Test values taken from Stata.
    c                 f   t        j                         }t        |j                  d      |_        t	        |j
                  |j                        j                         }t        j                  g dg dg dg dg dg      }t        j                  g d      }|j                  ||f      | _
        y )	NFr   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   rx   arrayr  r'  )r   r   r   r   qs        r!   r   zTestFtestQ.setup_class  s    ||~ E:	4::tyy)--/HH%%%%%
 HH_%[[!Q(
r$   c                 F    t        | j                  j                  dd       y )Ng/IeQ@r   )r   r'  rh   r   s    r!   rj   zTestFtestQ.test_fvalue  s    DKK..	1=r$   c                 F    t        | j                  j                  dd       y )Ng\s>r*   )r   r'  r  r   s    r!   r/  zTestFtestQ.test_pvalue  s    DKK..	2>r$   c                 D    t        | j                  j                  d       y r1  r3  r   s    r!   r4  zTestFtestQ.test_df_denom  r5  r$   c                 D    t        | j                  j                  d       y r   r8  r   s    r!   r9  zTestFtestQ.test_df_num  r:  r$   N)
r   r   r   r   r
  r   rj   r/  r4  r9  r   r$   r!   r<  r<    s/    
 ) ) >?.,r$   r<  c                   D    e Zd ZdZed        Zd Zd Zd Zd Z	d Z
d Zy	)
	TestTtestzd
    Test individual t-tests.  Ie., are the coefficients significantly
    different than zero.
    c                    t        j                         }t        d|j                  j                  d   dz         D cg c]  }d| 	 }}||j                  _        t        |j                  d      |_        t        |j                  |j                        j                         | _
        t        j                  d      }| j                  j                  |      | _        d}| j                  j                  |      | _        y c c}w )Nr   r   Fr   r   z9x1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0, x6 = 0, const = 0)r   r   r.   r   r   r&  r   r   r   r   r   rx   r  t_testTtestNewTTest)r   r   r3   r&  r   r*  s         r!   r   zTestTtest.setup_class  s    ||~$)!TYY__Q-?!-C$DEqQqc7EE#		 E:	tzz499-113KKNHHOOA&	Ixxs+ Fs   Dc                 l    t        | j                  j                  | j                  j                         y r   )r   rI  tvaluerH  r   s    r!   test_new_tvaluezTestTtest.test_new_tvalue  s     T]]))4::+<+<=r$   c                 v    t        | j                  j                  | j                  j                  t
               y r   )r   rH  rK  r   tvaluesr   r   s    r!   test_tvaluezTestTtest.test_tvalue  s"    DJJ--tyy/@/@)Lr$   c                 v    t        | j                  j                  | j                  j                  t
               y r   )r   rH  sdr   r&   r   r   s    r!   test_sdzTestTtest.test_sd  s    DJJMM499==)Dr$   c                    t        | j                  j                  t        j                  t        j                  | j                  j                        | j                  j                  j                        dz  t               y r7  )r   rH  r  	student_tsfrx   absr   rN  rM   rO   r   r   s    r!   r/  zTestTtest.test_pvalue  sQ    JJLL		 1 12DIIOO4L4LM		
r$   c                     t        | j                  j                  | j                  j                  j
                         y r   )r   rH  r  r   rM   rO   r   s    r!   r4  zTestTtest.test_df_denom  r  r$   c                 l    t        | j                  j                  | j                  j                         y r   )r   rH  effectr   r   r   s    r!   test_effectzTestTtest.test_effect  s     DJJ--tyy/?/?@r$   N)r   r   r   r   r
  r   rL  rO  rR  r/  r4  rZ  r   r$   r!   rE  rE    s=    
 	, 	,>ME
DAr$   rE  c                   >    e Zd ZdZed        Zd Zd Zd Zd Z	d Z
y)	
TestTtest2z~
    Tests the hypothesis that the coefficients on POP and YEAR
    are equal.

    Results from RPy using 'car' package.
    c                 $   t        j                  d      }ddg|dd t        j                         }t	        |j
                  d      |_        t        |j                  |j
                        j                         }|j                  |      | _
        y )Nr   r   r   r   r   Fr   )rx   r   r   r   r   r   r   r   r   rG  Ttest1)r   r   r   r   s       r!   r   zTestTtest2.setup_class  sg    HHQKR!A||~ E:	4::tyy)--/[[^
r$   c                 N    t        | j                  j                  dt               y )NgN-)r   r^  rK  r   r   s    r!   rO  zTestTtest2.test_tvalue      DKK..0CYOr$   c                 N    t        | j                  j                  dt               y )Ng9y@v|@)r   r^  rQ  r   r   s    r!   rR  zTestTtest2.test_sd  s    DKKNN,>	Jr$   c                 N    t        | j                  j                  dt               y )Ng6X%h?)r   r^  r  r   r   s    r!   r/  zTestTtest2.test_pvalue  s    KK 99	
r$   c                 D    t        | j                  j                  d       y r1  )r   r^  r  r   s    r!   r4  zTestTtest2.test_df_denom  r5  r$   c                 N    t        | j                  j                  dt               y )Ng<,nϔ)r   r^  rY  r   r   s    r!   rZ  zTestTtest2.test_effect"  r`  r$   N)r   r   r   r   r
  r   rO  rR  r/  r4  rZ  r   r$   r!   r\  r\    s7     $ $PK

.Pr$   r\  c                   b    e Zd ZdZed        Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zy)TestGLSzA
    These test results were obtained by replication with R.
    c                    ddl m} t        j                         }t	        t        j                  |j                  j                  d d df   |j                  j                  d d df   f      d      }t        |j                  |      j                         }t        j                  |j                  dd  |j                  d d       d   d   }t        t        j                  d            }||z  }t!        |j                  ||	      j                         }|| _         |       | _        || _        || _        |j                  | _
        y )
Nr   )
LongleyGlsr   Fr   r   r      sigma)r   rh  r   r   r   rx   column_stackr   ilocr   r   r   corrcoefr   r	   aranger   r   r   rk  )	r   rh  r   r   tmp_resultsrhoorderrk  GLS_resultss	            r!   r   zTestGLS.setup_class+  s   :||~OOTYY^^AqD1499>>!Q$3GHI
 $**d+//1kk+++AB/1B1B3B1GHK
 2'u$**d%8<<><	JJ	r$   c                 v    t        | j                  j                  dz   | j                  j                  d       y )Nr   gMbp?r+   )r   r   rs   r   r   s    r!   r   zTestGLS.test_aicB  s#    		)499==tDr$   c                 p    t        | j                  j                  | j                  j                  d       y )NgQ?r+   )r   r   r   r   r   s    r!   r   zTestGLS.test_bicF  s    		tyy}}6Br$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   rl   r   	DECIMAL_0r   s    r!   rn   zTestGLS.test_loglikeJ      DIIMM499==)Dr$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   r   r   	DECIMAL_1r   s    r!   r"   zTestGLS.test_paramsM  s"    DII,,dii.>.>	Jr$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   r   r   r   r   s    r!   
test_residzTestGLS.test_residP      DIIOOTYY__iHr$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   rA   r   r   r   s    r!   rC   zTestGLS.test_scaleS  r}  r$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   rN  r   r   r   s    r!   test_tvalueszTestGLS.test_tvaluesV  "    DII--tyy/@/@)Lr$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   r&   r   r   r   s    r!   r(   zTestGLS.test_standarderrorsY  rx  r$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   fittedvaluesr   r   r   s    r!   test_fittedvalueszTestGLS.test_fittedvalues\  s%    II""DII$:$:I	
r$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   r   r   r   r   s    r!   r   zTestGLS.test_pvaluesa  r  r$   c                 t   | j                   j                         }t        j                  |g d<   t	        || j
                  | j                  d      }t        |j                   j                  d   d       t        |j
                  j                  d   d       t        |j                  j                  d       y )N)r   r   r   r   )rk  r   r   r   )r   r   )	r   copyrx   r   r   r   rk  r   r   )r    r   r   s      r!   r   zTestGLS.test_missingd  sx    

!FFj%$**fESYY__Q',SXX^^A&+SYY__h/r$   N)r   r   r   r   r
  r   r   r   rn   r"   r|  rC   r  r(   r  r   r   r   r$   r!   rf  rf  &  s[      ,ECEKIIME

M0r$   rf  c                   n    e Zd ZdZed        Zd Zd Zej                  j                  d      d        Zy)TestGLS_alt_sigmaz>
    Test that GLS with no argument is equivalent to OLS.
    c                    t        j                         }t        j                  |j                        }t        j                  |j
                        }t        |d      }t        ||      j                         }t        ||      j                         }t        ||d      }|| _        || _        || _
        || _        || _        y )NFr   r   rj  )r   r   rx   r   r   r   r   r   r   r   r   r   res3)r   r   r   r   ols_resgls_resgls_res_scalars          r!   r   zTestGLS_alt_sigma.setup_classr  s    ||~

4::&zz$))$D%0eT"&&(eT"&&(UD2	!r$   c           
          t        | j                        }t        t        t        | j                  | j
                  t        j                  |dz
               y Nr   rj  r/   r   r   
ValueErrorr   r   rx   onesr    ns     r!   test_wrong_size_sigma_1dz*TestGLS_alt_sigma.test_wrong_size_sigma_1d  s6    

OTZZ"''!a%.	
r$   c                     t        | j                        }t        t        t        | j                  | j
                  t        j                  |dz
  |dz
  f             y r  r  r  s     r!   test_wrong_size_sigma_2dz*TestGLS_alt_sigma.test_wrong_size_sigma_2d  sC    

OJJII''1q5!a%.)	
r$   zTest does not raise but shouldc                    t        | j                        }t        j                  ||f      t        j                  t        j                  |            z   }dx|d<   |d<   t        j
                  j                  |      |dz
  k(  sJ t        j                  t        j
                  j                        5  t        | j                  | j                  |       d d d        y # 1 sw Y   y xY w)Nr   r   r   )r   r   r   rj  )r/   r   rx   r  diagr   r   r9   raisesLinAlgErrorr   r   )r    r  rk  s      r!   test_singular_sigmaz%TestGLS_alt_sigma.test_singular_sigma  s    

OA"''"''!*"55$%%deDkyy$$U+q1u444]]299001 	4

DIIU3	4 	4 	4s   4#C  C)N)r   r   r   r   r
  r   r  r  r9   markskipr  r   r$   r!   r  r  m  sI     " " 

 [[674 84r$   r  c                   :    e Zd Zed        Zd Zd Zd Zd Zd Z	y)TestLMc                    t         j                  j                  d      }|j                  dd      }t        j                  d      }|j                  dd      }t        j
                  ||      |z   }t        ||      j                         | _        t        ||d d df         j                         | _	        | j                  j                  d      | _        | j                  j                  d      | _        || _        || _        y )Ni  d   r   )r   r   r   r   HC0)rx   r   RandomStater   r  r   r   r   	res1_fullres1_restrictedget_robustcov_results	res2_fullres2_restrictedr   Y)r   rsr   ber   s         r!   r   zTestLM.setup_class  s     YY""4(HHS!GGFOHHS!FF1aL1 Aq	!!Qq!tWo113;;EB!11GGNr$   c                 B   | j                   j                  }|j                  d   }| j                  }t	        j
                  ||      |z  t	        j
                  |j                  |      z  |z  }t        j                  j                  |      }t	        j                  ||d d d f   z  d      }|t	        j
                  t	        j
                  ||      |j                        z  }| j                  j                  | j                         }|d   }	t        ||	t               y Nr   )r  r   r   r   rx   r   r   r   r   meanr  compare_lm_testr   r   )
r    r   r  r   SSinvsLMstat
LMstat_OLSLMstat2s
             r!   test_LM_homoskedasticzTestLM.test_LM_homoskedastic  s    $$++KKNFFFF5% 1$rvvacc1~59yy}}QGGAag&*RVVBFF1dOQSS11^^33D4H4HI
Q-FGY7r$   c                    | j                   j                  }|j                  d   }| j                  }||d d d f   z  }t	        j
                  |j                  |      |z  }t        j                  j                  |      }t	        j                  |d      }|t	        j
                  t	        j
                  ||      |j                        z  }| j                  j                  | j                  d      }	|	d   }
t        ||
t               y )Nr   F)demean)r  r   r   r   rx   r   r   r   r   r  r  r  r  r   r   )r    r   r  r   scoresr  r  r  r  r  r  s              r!    test_LM_heteroskedastic_nodemeanz'TestLM.test_LM_heteroskedastic_nodemean  s    $$++KKNFFU1d7^#FF688V$q(yy}}QGGFARVVBFF1dOQSS11^^33   4 

 Q-FGY7r$   c                 :   | j                   j                  }|j                  d   }| j                  }||d d d f   z  }||j	                  d      z
  }t        j                  |j                  |      |z  }t
        j                  j                  |      }t        j                  |d      }|t        j                  t        j                  ||      |j                        z  }	| j                  j                  | j                        }
|
d   }t        |	|t               y r  )r  r   r   r   r  rx   r   r   r   r   r  r  r  r   r   )r    r   r  r   r  scores_demeanr  r  r  r  r  r  s               r!   test_LM_heteroskedastic_demeanz%TestLM.test_LM_heteroskedastic_demean  s    $$++KKNFFU1d7^#Q/FF=??M2Q6yy}}QGGFARVVBFF1dOQSS11^^33D4H4HI
Q-FGY7r$   c                 Z   | j                   j                  }| j                  j                  }|j                  d   }| j                  }||d d d f   z  }t        j                  |d      }||d d d f   z  }t        j                  |j                  |      |z  }t
        j                  j                  |      }|t        j                  t        j                  ||      |j                        z  }	| j                  j                  | j                  d      }
|
d   }t        |	|t               y )Nr   T)use_lr)r  r   r  r   r   rx   r  r   r   r   r   r  r  r  r   r   )r    r   
resid_fullr  r   r  r  r  r  r  r  r  s               r!   !test_LM_heteroskedastic_LRversionz(TestLM.test_LM_heteroskedastic_LRversion  s    $$++^^**
KKNFFU1d7^#GGFAZ4((FF688V$q(yy}}QRVVBFF1dOQSS11^^33   4 

 Q-FGY7r$   c                 b    t        t        | j                  j                  | j                         y r   )r   r  r  r  r  r   s    r!   test_LM_nonnestedzTestLM.test_LM_nonnested  s!    ,,<<dnn	
r$   N)
r   r   r   r
  r   r  r  r  r  r  r   r$   r!   r  r    s-     &
8888"
r$   r  c                   4    e Zd Zed        Zd Zd Zd Zd Zy)TestOLS_GLS_WLS_equivalencec           
         t        j                         }t        |j                  d      |_        |j                  }|j                  }|j
                  d   }t        j                  |      }g | _        | j                  j                  t        ||      j                                | j                  j                  t        |||      j                                | j                  j                  t        ||d|z        j                                | j                  j                  t        ||t        j                  d|z              j                                y )NFr   r   r  皙?)r   r   r   r   r   r   rx   r  r   appendr   r   r   r   r  )r   r   r   r   r  ws         r!   r   z'TestOLS_GLS_WLS_equivalence.setup_class  s    ||~ E:	JJIIGGAJGGAJ3q!9==?+3q!Q<++-.3q!S1W-11343q!RWWS1W%56::<=r$   c                    t        j                  | j                  D cg c]  }|j                   c}      }t        j                  |      | j                  d   j                  z  }t        ||t               t        j                  | j                  D cg c]  }|j                   c}      }t        j                  |      | j                  d   j                  z  }t        ||t               t        j                  | j                  D cg c]  }|j                   c}      }t        j                  |      | j                  d   j                  z  }t        ||t               y c c}w c c}w c c}w r  )	rx   r>  r   rl   r   r   r   rs   r   )r    rrl   llf_1icic_1s         r!   test_llz#TestOLS_GLS_WLS_equivalence.test_ll  s    hht||4!45S!DLLO$7$77C	2XXdll3quu34||B$,,q/"5"55Bi0XXdll3quu34||B$,,q/"5"55Bi0 5 4 4s   E'E,E1c                    t        j                  | j                  D cg c]  }|j                   c}      }t        j                  | j                  d   j                  gt	        | j                        z        }t        ||       y c c}w r  )rx   r>  r   r   r/   r   )r    r  r   params_1s       r!   r"   z'TestOLS_GLS_WLS_equivalence.test_params  s_    T\\:188:;88T\\!_334s4<<7HHI) ;   Bc                    t        j                  | j                  D cg c]  }|j                   c}      }t        j                  | j                  d   j                  gt	        | j                        z        }t        ||       y c c}w r  )rx   r>  r   r&   r/   r   )r    r  r&   bse_1s       r!   test_ssz#TestOLS_GLS_WLS_equivalence.test_ss  s_    hht||4!45$,,q/--.T\\1BBCU# 5r  c                 $   t        j                  | j                  D cg c]  }|j                   c}      }t        j                  | j                  d   j                  gt	        | j                        z        }t        ||t               y c c}w r  )rx   r>  r   rE   r/   r   r   )r    r  rE   
rsquared_1s       r!   rG   z)TestOLS_GLS_WLS_equivalence.test_rsquared  sa    88>AQZZ>?XXt||A7783t||;LLM
Hj)< ?s   BN)	r   r   r   r
  r   r  r"   r  rG   r   r$   r!   r  r    s(    > >1*
$
=r$   r  c                       e Zd Zed        Zy)TestGLS_WLS_equivalencec           
      "   t        j                         }t        |j                  d      |_        |j                  }|j                  }|j
                  d   }t        j                  j                  d       t        j                  j                  dd|      }d|z  }g | _
        | j                  j                  t        |||      j                                | j                  j                  t        ||d|z        j                                | j                  j                  t        ||d	|z        j                                | j                  j                  t        ||t        j                  d
|z              j                                y )NFr   r   r         ?r         ?g{Gz?r  r  )r   r   r   r   r   r   rx   r   seeduniformr   r  r   r   r   r  )r   r   r   r   r  r  w_invs          r!   r   z#TestGLS_WLS_equivalence.setup_class'  s   ||~ E:	JJIIGGAJ
		qIIc1a(a3q!Q<++-.3q!TAX.22453q!S5[155783q!RWWS5[%9:>>@Ar$   Nr  r   r$   r!   r  r  $  s     B Br$   r  c                   "    e Zd Zed        Zd Zy)
TestNonFitc                     t        j                         }t        |j                  d      |_        |j                  | _        |j                  | _        t        |j                  |j                        | _        y NFr   )r   r   r   r   r   r   	ols_model)r   r   s     r!   r   zTestNonFit.setup_class:  sK    ||~ E:	JJ	99DJJ		2r$   c                     | j                   j                  d   | j                  j                  d   z
  }t        | j                  j
                  d       y )Nr   r   r2  )r   r   r   r   r  rO   )r    rO   s     r!   test_df_residzTestNonFit.test_df_residB  s<    ::##A&);;T^^,,a0r$   N)r   r   r   r
  r   r  r   r$   r!   r  r  9  s    3 31r$   r  c                   "    e Zd Zed        Zd Zy)TestWLS_CornerCasesc                     t        j                  d      | _        t        j                  d      | _        d}t	        | j                  | j                  |      j                         | _        y )N)r   r   weights)rx   r  r   r   r   r   wls_res)r   r  s     r!   r   zTestWLS_CornerCases.setup_classH  sF    774=GGDM	#))SXXw?CCEr$   c                     t        j                  d      }t        t        t        | j
                  | j                  |       y )N)r*   r*   r  )rx   r  r   r  r   r   r   )r    r  s     r!   test_wrong_size_weightsz+TestWLS_CornerCases.test_wrong_size_weightsO  s(    ''(#j#tzz499gNr$   N)r   r   r   r
  r   r  r   r$   r!   r  r  G  s    F FOr$   r  c                       e Zd Zed        Zy)TestWLSExogWeightsc                 `   ddl m} ddlm}  |       }t	        j
                  |j                        }t	        j
                  |j                        }t        |d      }d}d|d d df   z  }||z  |j                         z  }t        |||	      j                         | _         |       | _        |d
z  | j                  j                  z  | j                  _        d| j                  j                   | j                  j                   z
  z  }	| j                  xj"                  |	z  c_        | j                  xj$                  |	z  c_        | j                  xj                   d
t	        j                  t	        j&                  | j                  j(                  j*                              z  z  c_        y )Nr   r   r   )CCardWLSFr   g      R@r   r  r  )statsmodels.datasets.ccardr   r   r  rx   r   r   r   r   r   r   r   r   r   r   r   rl   rs   r   ry   rM   r  )
r   r   r  dtar   r   rw   r  scaled_weightscorr_ics
             r!   r   zTestWLSExogWeights.setup_classW  s$   38f

399%zz#((#D%0d1a4j.!D.GKKM9udN;??A:(C/#((..@ sxx||chhll23bffRVVCHHNN,B,B%CDDDr$   Nr  r   r$   r!   r  r  T  s     E Er$   r  c                      g d} t        dd      }t        |d      }t        | |t        dd            j                         }t	        |j
                  dd       t	        |j                  d	d       y )
N)r   r   r   r   r   r   r   r      Fr   r  gg@L?r   g@)r   r   r   r   r   rh   rA   )r  r   	wls_models      r!   test_wls_exampler   r  s`     	Aq!AQ&AAq&A,/335I	((.!<	);Q?r$   c                     t        j                  g d      } ddgddgddgddgddgddgg}t        | t        |d            j	                         }t        j                  g d      }ddgddgddgg}t        j                  g d      }t        |t        |d      |      j	                         }t        |j                  |j                         y )	N)   r  r     r  r  r   r   Fr   )r  r  g      7@)r   r         @r  )rx   r>  r   r   r   r   r   centered_tss)r   r   ols_modywXwr  wls_mods          r!   test_wls_tssr
  ~  s    
)*A
Q!Q!Q!Q!Q!Q8A!\!U3488:G	.	!Ba&1a&1a&	!B
A"l2u5qAEEGG%%w';';<r$   c                       e Zd Zed        Zy)TestWLSScalarVsArrayc                 ^   ddl m}  |       }t        j                  |j                        }t        j                  |j
                        }t        |d      }t        ||d      j                         }dgt        |      z  }t        |||      j                         }|| _
        || _        y )Nr   r  Tr   gUUUUUU?r  )statsmodels.datasets.longleyr   rx   r   r   r   r   r   r   r/   r   r   )r   r   r  r   r   
wls_scalarr  	wls_arrays           r!   r   z TestWLSScalarVsArray.setup_class  s    5f

399%zz#((#D$/g6::<
)c%j(tW599;	r$   Nr  r   r$   r!   r  r    s     r$   r  c                   "    e Zd Zed        Zd Zy)TestWLS_GLSc                 6   ddl m}  |       }t        j                  |j                        }t        j                  |j
                        }|d d df   }t        ||d|z        j                         | _        t        |||      j                         | _
        y )Nr   r  r   r   r  rj  )r  r   rx   r   r   r   r   r   r   r   r   )r   r   r   r   r   rk  s         r!   r   zTestWLS_GLS.setup_class  ss    3v

4::&zz$))$QT
udAI6::<ud%0446r$   c                 0    t        | |       t               y r   r   r   r    r1   r2   s      r!   check_confidenceintervalsz%TestWLS_GLS.check_confidenceintervals      E57I6r$   Nr   r   r   r
  r   r  r   r$   r!   r  r    s    7 77r$   r  c                     ddl m}   |        }|j                  }t        j                  |ddg<   t        |j                  |j                  d|j                  j                  d d df   z  d      }t        |j                  j                  d   d	       t        |j                  j                  d   d	       t        |j                  j                  d   d	       y )
Nr   r  r*      r   r   r   )r  r   F   )r  r   r   rx   r   r   r   rm  r   r   r  )r   r   r   r   s       r!   test_wls_missingr    s    /6DJJEffE2r(O


DIIq499>>!Q$+?'?C #R("B'""1%r*r$   c                   "    e Zd Zed        Zd Zy)TestWLS_OLSc                 >   t        j                         }t        j                  |j                        }t        j                  |j
                        }t        |d      }t        ||      j                         | _	        t        ||      j                         | _        y r  )r   r   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   s       r!   r   zTestWLS_OLS.setup_class  k    ||~

4::&zz$))$D%0ud#'')ud#'')r$   c                 0    t        | |       t               y r   r  r  s      r!   r  z%TestWLS_OLS.check_confidenceintervals  r  r$   Nr  r   r$   r!   r  r        * *7r$   r  c                   "    e Zd Zed        Zd Zy)TestGLS_OLSc                 >   t        j                         }t        j                  |j                        }t        j                  |j
                        }t        |d      }t        ||      j                         | _	        t        ||      j                         | _        y r  )r   r   rx   r   r   r   r   r   r   r   r   r   r!  s       r!   r   zTestGLS_OLS.setup_class  r"  r$   c                 0    t        | |       t               y r   r  r  s      r!   r  z%TestGLS_OLS.check_confidenceintervals  r  r$   Nr  r   r$   r!   r&  r&    r$  r$   r&  c                   "    e Zd Zed        Zd Zy)TestYuleWalkerc                 z    ddl m}  |       }t        |j                  dd      \  | _        | _        g d| _        y )Nr   r  r   mle)rr  r   )g."0?g3Eܿg@**ʿg0?)statsmodels.datasets.sunspotsr   r   r   rq  rk  R_params)r   r   r   s      r!   r   zTestYuleWalker.setup_class  s0    6v(1UK
r$   c                 N    t        | j                  | j                  t               y r   )r   rq  r.  r   r   s    r!   r"   zTestYuleWalker.test_params  s    DHHdmmY?r$   N)r   r   r   r
  r   r"   r   r$   r!   r*  r*    s    

 

@r$   r*  c                   "    e Zd Zed        Zd Zy)TestDataDimensionsc                    t         j                  j                  d       t         j                  j                  ddd      | _        | j                  d d d f   | _        t         j                  j                  ddd      | _        | j                  d d d f   | _        | j                  d d | _        t        | j
                  | j                        | _
        | j                  xj                  dz  c_        | j                  j                         | _        t        | j
                  | j                        | _        | j                  xj                  dz  c_        | j                  j                         | _        y )N1  r         sizer   r   )rx   r   r  r  endog_n_endog_n_oneexog_n_
exog_n_one
degen_exogr   mod1rN   r   r   mod2r   )r   s    r!   r   zTestDataDimensions.setup_class  s    
		uyy((BR(8,,q$w/ii''2B'7QW-,s7Q88<<> s7Q88<<>r$   c                 0    t        | |       t               y r   r  r  s      r!   r  z,TestDataDimensions.check_confidenceintervals  r  r$   Nr  r   r$   r!   r1  r1    s    " " 7r$   r1  c                   :     e Zd Ze fd       Zd Zd Zd Z xZS )TestGLS_large_datac                    t         |           d}t        j                  j	                  |d      }t        j                  j	                  |d      }t        j
                  |      }t        |||      j                         | _        t        ||d      j                         | _	        t        ||      j                         | _
        t        ||      j                         | _        y )N  r   r4  rj  )superr   rx   r   r   r   r   r   r  r  gls_res_noner   r  )r   rw   r   r   rk  	__class__s        r!   r   zTestGLS_large_data.setup_class  s    IIOOD!$IIOOD"%Q!Qe,002 AQ/335q!9==?!Qimmor$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r  r   r  r   r   s    r!   test_large_equal_paramsz*TestGLS_large_data.test_large_equal_params  s%    LL!4!4i	
r$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r  rl   r  r   r   s    r!   test_large_equal_loglikez+TestGLS_large_data.test_large_equal_loglike"  s"    DLL,,dll.>.>	Jr$   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r  r   rE  r   r   s    r!   test_large_equal_params_nonez/TestGLS_large_data.test_large_equal_params_none%  s'    LL!2!2!9!99	
r$   )	r   r   r   r
  r   rH  rJ  rL  __classcell__rF  s   @r!   rA  rA    s%    	& 	&

K
r$   rA  c                   (     e Zd Ze fd       Z xZS )TestNxNxc                     t         |           t        | j                  | j                        | _        | j
                  xj                  dz  c_        | j
                  j                         | _        y Nr   )	rD  r   r   r8  r:  r>  rN   r   r   r   rF  s    r!   r   zTestNxNx.setup_class,  sJ    s||S[[1Q88<<>r$   r   r   r   r
  r   rM  rN  s   @r!   rP  rP  +      " "r$   rP  c                   (     e Zd Ze fd       Z xZS )TestNxOneNxc                     t         |           t        | j                  | j                        | _        | j
                  xj                  dz  c_        | j
                  j                         | _        y rR  )	rD  r   r   r9  r:  r>  rN   r   r   rS  s    r!   r   zTestNxOneNx.setup_class5  sJ    s4Q88<<>r$   rT  rN  s   @r!   rW  rW  4  rU  r$   rW  c                   (     e Zd Ze fd       Z xZS )TestNxNxOnec                     t         |           t        | j                  | j                        | _        | j
                  xj                  dz  c_        | j
                  j                         | _        y rR  )	rD  r   r   r8  r;  r>  rN   r   r   rS  s    r!   r   zTestNxNxOne.setup_class>  sJ    s||S^^4Q88<<>r$   rT  rN  s   @r!   rZ  rZ  =  rU  r$   rZ  c                      t         j                  j                  d       t         j                  j                  ddd      } t	        t
        t        | | dd         y )Nr3  r   r4     r   )rx   r   r  r  r   r  r   r   s    r!   test_bad_sizer_  F  s>    IINN599QB'D*c4ab2r$   c            	         t         j                  j                  d      } | j                  ddd      }t	        j
                  t	        j                  |d      dt        	      }t        j                  |g d
      | j                  d      z   }t        |t        |j                  d d dd f   d            j                         }t        ||d      j                         }t        |j                  |j                  d       |j                   j"                  j$                  dk(  sJ |j                   j"                  j$                  dk(  sJ y )N90  r   r   r5  r6  r   dtypeF
drop_firstrc  r  r   r  r   Tr   hasconst   )rx   r   r  randintpdget_dummiesSeriesfloatr   normalr   r   rm  r   r   rE   rM   r   rv   )r  r   r   rescr  s        r!   test_const_indicatorrq  L  s    			u	%B


1ab
!A
ryy*5%"	$A
q/"RYYBY%77Aq,qvvae}d;<@@BD
aT
"
&
&
(Cs||R899>>$$)))::??%%***r$   c                  4   t         j                  j                  d      } | j                  ddd      }t	        j
                  t	        j                  |d      dt        	      }d
||j                  d   <   t        j                  |g d      | j                  d      z   }t        ||d      j                  d      }t        j                  |j                        rJ t        |j                  t              sJ t        |j                   t              sJ y )Nra  r   r   r5  r6  r   rb  Frd  r   rf  Trg  HC1cov_type)rx   r   r  rj  rk  rl  rm  rn  r&  r   ro  r   r   isnanrh   
isinstancer  )r  r   r   r  s       r!   test_fvalue_const_onlyrx  Y  s    			u	%B


1ab
!A
ryy*5%"	$AAaiilO
q/"RYYBY%77A
aT
"
&
&
&
6Cxx

###cjj%(((cllE***r$   c                     t        j                  t        j                  j	                  d            } t        j                  t        j
                  d            }t        | |      j                         }|j                         }t        j                  j                  |j                  d       t        j                  j                  t        |t         j                               y )Nr*   r7   )rk  rm  rx   r   r   r  r   r   r-   testingr   r   r   rw  	DataFrame)r   r   r  r-   s       r!   test_conf_int_single_regressorr|  f  s     			"))//"%&A
		"''"+A
a)--/C||~HJJHNNF3JJz(BLL9:r$   c                     dd l } t        j                         }|j                  }d|d<   |j                  }t        ||      j                         }t        j                  t              5  |j                         j                         }d d d        | j                  dd      }| j                  dd|      }d}t        ||       y # 1 sw Y   >xY w)	Nr   r   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   r9   r:   r   r   as_latexsubr   )r  r  r   r   r  tableexpecteds          r!   test_summary_as_latexr  q  s    



CAAjM		A
a)--/C	k	" )&&() FF8E
 FF8E':HP !m) )s   )CCc                   $    e Zd Zd Zd Zd Zd Zy)TestRegularizedFitc                 X   t         j                  j                  d       d}t         j                  j                  |      }t         j                  j                  |df      }t        t
        t        fD ]3  } |||      }|j                  d      }t        |j                  d       5 y )Ni  r  r6  r   rC  alphag        )
rx   r   r  ro  r   r   r   fit_regularizedr   r   )r    r  r   r   r   rM   results          r!   test_empty_modelz#TestRegularizedFit.test_empty_model  s    
		s		  a (yyaV,S= 	-Ct$E***6F,	-r$   c                    dd l }ddlm} |j                  j	                  |j                  j                  t                    }t        j                  |j                  j                  |dd      d      }t        |      D cg c]  }|j                  d      s| }}|D ]9  }t        ||      }|d   }	|d   }
t        |d	         }t        |d
         }|dd  j                  t        j                        }|dt!        |	      df   }|dt!        |	      dt!        |
      dz   f   }||j#                         z
  }||j%                  d      z  }||j#                  d      z
  }||j%                  dd      z  }t&        t(        t*        fD ]J  } |||      }|j-                  ||      }t/        |j0                  |d
       |j-                  ||d       L < y c c}w )Nr   r   )glmnet_r_resultsr   zlasso_data.csv,)	delimiterrslt_r   r   r   )ddofL1_wtr  decimalT)r  r  profile_scale)osr   r  pathdirnameabspath__file__rx   loadtxtjoindir
startswithgetattrrn  astypefloat64intr  stdr   r   r   r  r   r   )r    r  r  cur_dirr   r   teststestvecr  pr  lamr   r   r   r   r   rslts                      r!   test_regularizedz#TestRegularizedFit.test_regularized  s   -''//"''//(";<zzGGLL)-=>#
   01KqQ\\'5JKK 	PD*D1CAAAA#a&MEA-CW^^BJJ/FSVQ'ECF
AQ!$445DEJJL(EUYYAY&&E$))A,&DDHHQQH''DC} P%&**c*B#DKKC ##%s$#OP%	P Ls   GGc                    t         j                  j                  d       t         j                  j                  d      }|d d df   |d d df   z   t         j                  j                  d      z   }t         j                  j                  d      }|d d df   |d d df   z   t         j                  j                  d      z   }t        j                  |||f      }t        j
                  |||f      }t        j                  ||f      }t        j
                  ||f      }t        j                  d      }	d|	dd t        j                  d|	z        }
d	D ]  }d
D ]  }t        ||      }|j                  ||      }t        |||	      }|j                  ||      }t        |||
      }|j                  ||      }t        |j                  |j                  d       t        |j                  |j                  d         y )Ni  r  r   r6  r   r   r     r   r   r  r   r  r  r  rj  r   r  rx   r   r  ro  vstackconcatenater  r  r   r  r   r   r   r   )r    exog1endog1exog2endog2exog_aendog_aexog_bendog_bwgtsrk  r  r  r=  rslt1r>  rslt2mod3rslt3s                      r!   test_regularized_weightsz+TestRegularizedFit.test_regularized_weights  s   
		t		  h /q!tuQT{*RYY-=-=3-=-GG		  h /q!tuQT{*RYY-=-=3-=-GGE5%01..&&&!9: E5>*..&&!12wws|QsD! 	KE K7F+,,5,F7FD9,,5,F7F%8,,5,F#ELL%,,J#ELL%,,JK	Kr$   c                 $   t         j                  j                  d       t         j                  j                  d      }|d d df   |d d df   z   t         j                  j                  d      z   }t         j                  j                  d      }|d d df   |d d df   z   t         j                  j                  d      z   }t        j                  |||f      }t        j
                  |||f      }t        j                  ||f      }t        j
                  ||f      }t        j                  d      }	d|	dd t        j                  d|	z        }
d	D ]  }d
D ]  }|gdz  }t        ||      }|j                  ||      }t        |||	      }|j                  ||      }t        |||
      }|j                  ||      }t        |j                  |j                  d       t        |j                  |j                  d         y )N   r  r6  r   r   r  r  r   r  r  r   r  r  rj  r  r  )r    r  r  r  r  r  r  r  r  r  rk  r  alpha_elementr  r=  r  r>  r  r  r  s                       r!   test_regularized_weights_listz0TestRegularizedFit.test_regularized_weights_list	  s   
		s		  h /q!tuQT{*RYY-=-=3-=-GG		  h /q!tuQT{*RYY-=-=3-=-GGE5%01..&&&!9: E5>*..&&!12wws|QsD! 	KE!% K! 7F+,,5,F7FD9,,5,F7F%8,,5,F#ELL%,,J#ELL%,,JK	Kr$   N)r   r   r   r  r  r  r  r   r$   r!   r  r    s    
-%PNK@"Kr$   r  c                     ddl m}  dd lm} ddlm} |j                  j                  j                         j                  }t        j                  |j                  |j                  d   df<    |d|j                               }|j                         } |d|      }|j                         }t!        |j"                  j$                  |j"                  j$                         t'        | |d|d       y )	Nr   )
PatsyError)olsfirmz&value ~ invest + capital + firm + year)formular   raise)r   r   )patsyr  statsmodels.apiapistatsmodels.formula.apir  datasetsgrunfeldr  r   rx   r   locindexdropnar   r   r   valuesr   )r  smr  r  r   r  r>  r   s           r!   test_formula_missing_catr  .  s     ! +
++


*
*
,
1
1C$&FFCGGCIIaL& !
8szz|C '')C?cJD88:D

))4;;+=+=>0r$   c                     d} t        j                  dd|       }t        j                  t         j                  g      }t	        j
                  dt        j                  ||f      i      }t        j                  ddg      }t         j                  j                  | dz         }|d   |d   |d   z  z   |z   |d<   t        j                  d	|
      }|j                         }|j                  |d d        y )Nr5  r   r*   r   r   r  r6  r   zy ~ xr^  r   )r   )rx   linspacer>  r   rk  r{  r  r   ro  r   from_formular   predict)nsampler   nullbetar  rM   r   s          r!   test_missing_formula_predictr  L  s    G;;q"g&D88RVVHD<<bnndD\:;<D88QHD
		gk*AQ$q'DI--1DIW40E
))+CKKT#2YKr$   c                     d} t         j                  j                  d       t         j                  j                  | d      }|dkD  ddgk(  j	                  t
              }|j                  d      t         j                  j                  |       z   }ddlm}m	}  |||      j                  d	      }t        t        j                  |j                               t        t        j                  |j                               |j                           |||      j                  d	      }t        t        j                  |j                               t        t        j                  |j                               |j                          y )
Nr  r   r   r   TFr   r   rs  rt  )rx   r   r  r   r  r  r   #statsmodels.regression.linear_modelr   r   r   r   rv  rh   r  r   rw   r   r   r   r   r  s         r!   test_fvalue_implicit_constantr  [  s    DIINN1
		a A
a%T5M	!))#.A	a299??4((A<
a)---
'CBHHSZZ !BHHS\\"#KKM
a)---
'CBHHSZZ !BHHS\\"#KKMr$   c                     d} t         j                  j                  d       t        j                  |       }t         j                  j	                  |       }ddlm}m}  |||      j                  dddi      }t        t        j                  |j                               t        t        j                  |j                               |j                           |||      j                  d	
      }t        t        j                  |j                               t        t        j                  |j                               |j                          y )Nr4  r   r   r  hacmaxlagsr   )ru  cov_kwdsrs  rt  )rx   r   r  r  r   r  r   r   r   r   rv  rh   r  r   r  s         r!   test_fvalue_only_constantr  p  s    DIINN1
A
		A<
a)--)Q-
@CBHHSZZ !BHHS\\"#KKM
a)---
'CBHHSZZ !BHHS\\"#KKMr$   c                  "   d} d}t         j                  j                  d       t         j                  j                  | |f      }|j	                  d      t         j                  j                  |       z   }t        j
                  |      }d|d<   dD ]  }||t        j
                  |      z  ||z  fD ]  }t        ||      }|j                  |      }t        ||      }	|	j                  |d	      }
t        |j                  |
j                         t        ||      }|j                  |d
	      }t        |j                  |j                           j                  }t        j                  ||j                        }t        ||       y )Nr  r   <  r6  r   r   )r   r   r*   r  r  r  rq   )rx   r   r  ro  r   r  r   
_fit_ridger  r   r   r  r   )r  r  xmatyvecvar  model1result1model2result2model3result3fv1fv2s                  r!   
test_ridger    sS   A	AIINN499!Q(D88A;))q)11D

AAaD 	<RWWQZQ/ 	<Et_F''e'4Gt_F,,5,BGGNNGNN;t_F,,5,FGGNNGNN;	<	< 

C
&&w~~
&CCr$   c                     d} d}t         j                  j                  d       t         j                  j                  | |f      }|d d df   |d d df   z   t         j                  j                  |       z   }t	        ||      }|j                  ddd	
      }t	        ||d d ddgf         }|j                         }ddg}t        |j                  |   |j                         t        |j                  |   |j                         y )Nr  r   r  r6  r   r   r   r  Tr  r  refit)
rx   r   r  ro  r   r  r   r   r   r&   )	r  r  r  r  r  r  r  r  iis	            r!   test_regularized_refitr    s    A	AIINN499!Q(D1:QT
"RYY%5%51%5%==Dt_F$$3c$FGtA1vI'FjjlG
QBGNN2&7GKKOW[[1r$   c                  2   d} d}t         j                  j                  d       t         j                  j                  | |f      }|j	                  d      t         j                  j                  |       z   }t         j                  j                  dd|       }t        |||      }t        ||t        j                  d|z              }t        ||d|z        }g }|||fD ]  }	|	j                  d	d
d      }
|j                  |
       |
j                  }t        j                  ||      }|	j                  |
j                        }t        ||       t        |
j                  |       |
j                         }t        ||        t        |d   j                   j"                  |d   j                   j"                  d       t        |d   j                   j$                  |d   j                   j$                  d       t        |d   j                  |d   j                  d       t        |d   j                  |d   j                  d       t        |d   j                   j"                  |d   j                   j"                  d       t        |d   j                   j$                  |d   j                   j$                  d       t        |d   j                  |d   j                  d       t        |d   j                  |d   j                  d       y )Nr  r   r  r6  r   r   r  rj  g      4@r  Tr  r   rq   r+   )rx   r   r  ro  r   r  r   r   r  r  r  r   r   r  r   r  rM   wendogwexog)r  r  r  r  wgt	model_wls
model_gls1
model_gls2r  r  r  r   r  prs                 r!   test_regularized_predictr
    sa   A	AIINN499!Q(D88A;))q)11D
))

Aq!
$CD$,IT4rwwq3w'78JT4q3w/J
Cj*5 
*((t3d(K

7vvdF+^^GNN+b),,b1__b)
* CFLL''Q)<)<5ICFLL&&A(:(:GCF''Q)<)<5ICFMM3q6==u=CFLL''Q)<)<5ICFLL&&A(:(:GCF''Q)<)<5ICFMM3q6==u=r$   c                     d} d}t         j                  j                  d       t         j                  j                  | |f      }|j	                  d      t         j                  j                  |       z   }t        |dz
  |      }|j                  dd      }t        ||d	      }|j                  ddt        j                  d      
      }t        |j                  |j                         y )Nr  r   r  r6  r   r  r  r  )offset)r  r  start_params)
rx   r   r  ro  r   r   r  r   r   r   )r  r  r  r  r  r  r  r  s           r!   test_regularized_optionsr    s    A	AIINN499!Q(D88A;))q)11D4 F$$3c$:GtA&F$$288A; % G GNNGNN3r$   c                  b   t         j                  j                  d      } | j                  d      }|dd  d|d d z  z   }dgddgg d	g d
g dg}t	        dd      D ]R  }t        ||      \  }}t        |||dz
     d       t        d|z   |d      \  }}t        j                  ||k7        rRJ  y )Nra  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)rx   r   r  r   r.   r   r   all)rndr  r   r  r3   ar_as_nodemeans           r!   	test_burgr    s    
))


&C		%A	!"afA 
	J-6FH 1a[ )Q
AHQUO$7a!eQ.QvvbK'(((	)r$   c                     t        j                  t              5  t        t	        j
                  d             d d d        t        j                  t              5  t        t        j                  j                  d      d       d d d        t        j                  t              5  t        t        j                  j                  d      d       d d d        y # 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   y xY w)Nr  r   r  r   apple)r9   r  r  r   rx   r  r   r   r   r$   r!   test_burg_errorsr    s    	z	"  RWWX 	z	" &RYY__S!1%&	z	" ,RYY__S!7+, ,	   & &, ,s#   C*C$%*C0C!$C-0C9zsqrt_lasso requires cvxopt)reasonc            
      v   t         j                  j                  d       d} d}t        j                  |      }dt        j                  t         j
                  j                  ||            z  }t         j                  j                  |      }t        j                  t         j                  j                  | |f      |j                        }t        j                  |      }g d|dd dd	lm} d
t        j                  |       z  |j!                  ddd|z  z  z
        z  }t        j                  ||      dt         j                  j                  |       z  z   }	ddd}
t         j"                  d   t         j"                  d   d}dD ]+  }t%        |	|      j'                  d||      }|j(                  |z
  }t        j                  t        j                  |t        j                  ||                  }t%        |	|d d ddf         j+                         }t        j                  |      }|j(                  |dd z
  |dd t        j                  t        j                  |t        j                  ||                  }t-        ||z  |
|   dd       t-        |j(                  dd ||   dd       . y )Ni r  i  r  r6  )r   r   r   r   r   r   r   )normg?r   g?r   g      ?r   )FT)gtr}?gˑ?g9B?gR	?g-?)gg<5o?gY}|?gF?gT\Z:?gbj?
sqrt_lasso)r   r  r  r  )r,   r  gh㈵>)rx   r   r  ro  rV  subtractouterr   choleskyr   ro  r   r   scipy.stats.distributionsr  r   ppfr_r   r  r   r   r   )r  r  r   cxcxrr   r  r  r  r   expected_oracleexpected_paramsr  r  errnumeroracle
oracle_errdenoms                      r!   test_sqrt_lassor-    sG    IINN6 	AA	1B	r{{((R01	1B
))

R
 C
ryyaV,cee4A
AAaF."''!*txxDAEN(:;;E 	q!tbii..A.666A
  q)O uuE
 eeMN	O  
1ay((uE ) 
 kkAosBFF2sO45Q!QqS&	"&&(XXa[
 --!Aa&0
1Qz266"j+ABC 	EM?51#	

 	KK!oe44d	
'
r$   c                    t         j                  j                  ddd      j                  t              }t         j                  j                  d      }t        ||      j                         }t        ||j                  t         j                              j                         }t        |j                  |j                         y )Nr   r   r  r6  r  )rx   r   rj  r  boolstandard_normalr   r   doubler   r   )reset_randomstater   r   bool_resr  s        r!   test_bool_regressorr4  :  s    99Q188>DII%%c*E5$##%H
eT[[+
,
0
0
2CHOOSZZ0r$   c                    t         j                  j                  d      }t        j                  d      }t	        ||      j                         }t        j                  d      5 }t        j                  |j                        sJ t        j                  |j                        sJ 	 d d d        t              dk(  sJ y # 1 sw Y   xY w)Nr  )r  r   Tr   r   )rx   r   r0  r  r   r   r   r   rv  rh   r  r/   )r2  r   r   r  	recordings        r!   test_ols_constantr7  B  s    
		!!#&A
A
a)--/C		 	 	- &xx

###xx%%%& y>Q& &s   %ACCc                      t         j                  j                  d      } | j                  d      }| j                  d      }t	        ||      j                         j                         }d|j                         v sJ y )Nr   r  r  u   R² is computed )rx   r   r  r0  r   r   r   as_text)r  r   r   r   s       r!   test_summary_no_constantr:  L  se    			q	!B
8$A
3A!Qimmo%%'G!2222r$   c           	         t         j                  j                  d      }t         j                  j                  d      }|t         j                  j                  d      z   }t        ||      j	                         }t        |j                  t        j                  t         j                  j                  |j                  |z                     t        |j                  t         j                  j                  |             y )Nr  r  r   r  r   )rx   r   r0  r   r   r   condition_numberr   r   condr   )r2  r   r   r  s       r!   test_condition_numberr@  T  s    
		!!#&A
		!!(+A	BII%%h//A
a)--/CC(("''"))..q2I*JKC(("))..*;<r$   c                    t         j                  j                  d      }t         j                  j                  d      }|t         j                  j                  d      z   }t        ||      j	                         }dd l}|j                  |j                               }|j                  |j                  d            }t        |j                        dk(  sJ t        |j                        dk(  sJ |j                  d   j                         |j                  d   j                         k7  sJ |j                  d	   j                         |j                  d	   j                         k(  sJ y )
Nr  r<  r=  r   Tr   r   r   r   )rx   r   r0  r   r   r  deepcopyr   r/   r   r9  )r2  r   r   r  r  r  	slim_summs          r!   test_slim_summaryrD  ]  s   
		!!#&A
		!!(+A	BII%%h//A
a)--/C=='Dckktk45It{{q   y A%%%;;q>!!#y'7'7':'B'B'DDDDA&&(DKKN,B,B,DDDDr$   )\r   statsmodels.compat.pythonr   r   numpyrx   numpy.testingr   r   r   r   r   pandasrk  r9   scipy.linalgr	   scipy.statsr
   rT  statsmodels.datasetsr   r  r   r   r   r   r   statsmodels.tools.toolsr   r   	DECIMAL_3	DECIMAL_2rz  r   rw  cvxopt
has_cvxoptImportErrorr   r   r  r  r$  r<  rE  r\  rf  r  r  r  r  r  r  r  r   r
  r  r  r  r  r&  r*  r1  rA  rP  rW  rZ  r_  rq  rx  r|  r  r  r  r  r  r  r  r  r
  r  r  r  r  skipifr-  r4  r7  r:  r@  rD  r   r$   r!   <module>rS     s   -      ! & (  1						J
m
 m
f}G$ }G@$ $+ +4$, $,N!, !,H'A 'AT P  PFD0 D0N-4. -4jR
 R
j*= *=ZB9 B*1 1
O 
OE/ E<	@=1  7( 7 +7( 77( 7@@ @$7/ 7,
+ 
6"! ""$ ""$ "3
+
+;?"DxK xKv< *(42 !>H4)(, 
N+GH8
 I8
v13=Ee1  Js   G& &G10G1