
    i                        d Z ddlm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!      Z0 G d" d#      Z1 G d$ d%e)      Z2 G d& d'      Z3 G d( d)      Z4 G d* d+e4      Z5 G d, d-      Z6 G d. d/      Z7 G d0 d1e)      Z8d2 Z9d3 Z: G d4 d5e)      Z; G d6 d7e)      Z<d8 Z= G d9 d:e)      Z> G d; d<e)      Z? G d= d>      Z@ G d? d@e)      ZA G dA dBeA      ZB G dC dDeA      ZC G dE dFeA      ZD G dG dHeA      ZEdI ZFdJ ZGdK ZHdL ZIdM ZJ G dN dO      ZKdP ZLdQ ZMdR ZNdS ZOdT ZPdU ZQdV ZRdW ZSdX ZTdY ZUej                  j                  e' dZ[      d\        ZXd] ZYd^ ZZd_ Z[d` Z\da Z]y# e($ r dZ'Y w xY w)bz&
Test functions for models.regression
    )	SP_LT_116)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    r/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/statsmodels/regression/tests/test_regression.pytest_paramsz"CheckRegressionResults.test_params8   +    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_confidenceintervalsF   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   )	r0   r   r   pytestwarnsFutureWarningr.   r   decimal_conf_int_subset)r!   ci1ci2s      r"   test_conf_int_subsetz+CheckRegressionResults.test_conf_int_subsetX   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_scalec   s'    IIOOTYY__d.@.@	
r%   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   rsquaredr   decimal_rsquaredr    s    r"   test_rsquaredz$CheckRegressionResults.test_rsquaredj   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_adjq   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_degreesx   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_criteriarO   rN   
k_constantnobsr   nplog)r!   aicc1krx   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   rZ   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)   r1   r5   r=   r@   rC   rD   rG   rH   rK   rL   rQ   rT   rU   rX   rY   r]   r^   ra   rb   rf   rg   rj   rk   rn   ro   ru   r   r   r   r   r   r   r   r   r   r   r    r%   r"   r   r   0   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   loadry   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   ry   
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   ry   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   ry   	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   ry   nanr   r   r   shape)r!   r   mods      r"   test_missingzTestOLS.test_missing2  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_warningsry   randomrandnr   r   rJ   r   r   )r!   xyresultsrJ   s        r"   test_rsquared_adj_overfitz!TestOLS.test_rsquared_adj_overfit:  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_alternativesE  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   ry   sqrtsumrP   r   r   r   )r!   r   
norm_residmodel_norm_resids       r"   test_norm_residzTestOLS.test_norm_residJ  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   summaryr0   tablesstr)r!   msgsumms      r"   test_summary_slimzTestOLS.test_summary_slimP  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   rN   r   r   r   r   rB   r   r   )r!   r   ress      r"   test_norm_resid_zero_variancez%TestOLS.test_norm_resid_zero_variance[  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   ry   r   r   r   r   r   r   r   r   r   )r   r  r   r   r   r   r   r   s           r"   r   zTestRTO.setup_classd  s    :||~

4::&zz$))$5$##%|kkUD!%%T%2
r%   Nr   r   r   r  r   r   r%   r"   r  r  c  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   ry   identityf_testFtest)r   r   r   s      r"   r   zTestFtest.setup_classz  sl    ||~ E:	tzz499-113KKN3B36"HHOOA&	r%   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r  ri   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   rN   rP   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  u  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   r4   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)  ri   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(  ri   r   r    s    r"   rk   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-  rk   r0  r5  r:  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   ry   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(  ri   r    s    r"   rk   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"   r0  zTestFtestQ.test_pvalue  s    DKK..	2>r%   c                 D    t        | j                  j                  d       y r2  r4  r    s    r"   r5  zTestFtestQ.test_df_denom  r6  r%   c                 D    t        | j                  j                  d       y r   r9  r    s    r"   r:  zTestFtestQ.test_df_num  r;  r%   N)
r   r   r   r   r  r   rk   r0  r5  r:  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   ry   r  t_testTtestNewTTest)r   r   r4   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   rJ  tvaluerI  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   rI  rL  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   rI  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 r8  )r   rI  r  	student_tsfry   absr   rO  rN   rP   r   r    s    r"   r0  zTestTtest.test_pvalue  sQ    JJLL		 1 12DIIOO4L4LM		
r%   c                     t        | j                  j                  | j                  j                  j
                         y r   )r   rI  r  r   rN   rP   r    s    r"   r5  zTestTtest.test_df_denom  r   r%   c                 l    t        | j                  j                  | j                  j                         y r   )r   rI  effectr   r   r    s    r"   test_effectzTestTtest.test_effect   s     DJJ--tyy/?/?@r%   N)r   r   r   r   r  r   rM  rP  rS  r0  r5  r[  r   r%   r"   rF  rF    s=    
 	, 	,>ME
DAr%   rF  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   )ry   r   r   r   r   r   r   r   r   rH  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_  rL  r   r    s    r"   rP  zTestTtest2.test_tvalue      DKK..0CYOr%   c                 N    t        | j                  j                  dt               y )Ng9y@v|@)r   r_  rR  r   r    s    r"   rS  zTestTtest2.test_sd  s    DKKNN,>	Jr%   c                 N    t        | j                  j                  dt               y )Ng6X%h?)r   r_  r  r   r    s    r"   r0  zTestTtest2.test_pvalue  s    KK 99	
r%   c                 D    t        | j                  j                  d       y r2  )r   r_  r  r    s    r"   r5  zTestTtest2.test_df_denom   r6  r%   c                 N    t        | j                  j                  dt               y )Ng<,nϔ)r   r_  rZ  r   r    s    r"   r[  zTestTtest2.test_effect#  ra  r%   N)r   r   r   r   r  r   rP  rS  r0  r5  r[  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   ri  r   r   r   ry   column_stackr   ilocr   r   r   corrcoefr   r
   aranger   r   r   rl  )	r   ri  r   r   tmp_resultsrhoorderrl  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   rt   r   r    s    r"   r   zTestGLS.test_aicC  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_bicG  s    		tyy}}6Br%   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   rm   r   	DECIMAL_0r    s    r"   ro   zTestGLS.test_loglikeK      DIIMM499==)Dr%   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   r   r   	DECIMAL_1r    s    r"   r#   zTestGLS.test_paramsN  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_residQ      DIIOOTYY__iHr%   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   rB   r   r   r    s    r"   rD   zTestGLS.test_scaleT  r~  r%   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   rO  r   r   r    s    r"   test_tvalueszTestGLS.test_tvaluesW  "    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_standarderrorsZ  ry  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_pvaluesb  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   )rl  r   r   r   )r   r   )	r   copyry   r   r   r   rl  r   r   )r!   r   r   s      r"   r   zTestGLS.test_missinge  sx    

!FFj%$**fESYY__Q',SXX^^A&+SYY__h/r%   N)r   r   r   r   r  r   r   r   ro   r#   r}  rD   r  r)   r  r   r   r   r%   r"   rg  rg  '  s[      ,ECEKIIME

M0r%   rg  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   rk  )r   r   ry   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_classs  s    ||~

4::&zz$))$D%0eT"&&(eT"&&(UD2	!r%   c           
          t        | j                        }t        t        t        | j                  | j
                  t        j                  |dz
               y Nr   rk  r0   r   r	   
ValueErrorr   r   ry   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   rk  )r0   r   ry   r  diagr   r   r:   raisesLinAlgErrorr   r   )r!   r  rl  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  r:   markskipr  r   r%   r"   r  r  n  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)ry   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   ry   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   ry   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  ry   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   ry   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   ry   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  )	ry   r?  r   rm   r   r   r   rt   r   )r!   rrm   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  )ry   r?  r   r   r0   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  )ry   r?  r   r'   r0   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  )ry   r?  r   rF   r0   r   r   )r!   r  rF   
rsquared_1s       r"   rH   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  rH   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   ry   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   r3  )r   r   r   r   r  rP   )r!   rP   s     r"   test_df_residzTestNonFit.test_df_residC  s<    ::##A&);;T^^,,a0r%   N)r   r   r   r  r   r  r   r%   r"   r  r  :  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)ry   r  r   r   r   r   wls_res)r   r  s     r"   r   zTestWLS_CornerCases.setup_classI  sF    774=GGDM	#))SXXw?CCEr%   c                     t        j                  d      }t        t        t        | j
                  | j                  |       y )N)r+   r+   r  )ry   r  r	   r  r   r   r   )r!   r  s     r"   test_wrong_size_weightsz+TestWLS_CornerCases.test_wrong_size_weightsP  s(    ''(#j#tzz499gNr%   N)r   r   r   r  r   r  r   r%   r"   r  r  H  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  ry   r   r   r   r   r   r   r   r   r   r   r   rm   rt   r   rz   rN   r  )
r   r   r  dtar   r   rx   r  scaled_weightscorr_ics
             r"   r   zTestWLSExogWeights.setup_classX  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  U  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   ri   rB   )r  r   	wls_models      r"   test_wls_exampler  s  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  )ry   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   ry   r   r   r   r   r   r   r0   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  rk  )r  r   ry   r   r   r   r   r   r   r   r   )r   r   r   r   r   rl  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!   r2   r3   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   ry   r   r   r   rn  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   ry   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   ry   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)rs  r   )g."0?g3Eܿg@**ʿg0?)statsmodels.datasets.sunspotsr   r   r   rr  rl  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   rr  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   )ry   r   r  r  endog_n_endog_n_oneexog_n_
exog_n_one
degen_exogr   mod1rO   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"   r2  r2    s    " " 7r%   r2  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   r5  rk  )superr   ry   r   r   r   r   r   r  r  gls_res_noner   r  )r   rx   r   r   rl  	__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  rm   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   rF  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   rI  rK  rM  __classcell__rG  s   @r"   rB  rB    s%    	& 	&

K
r%   rB  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   )	rE  r   r   r9  r;  r?  rO   r   r   r   rG  s    r"   r   zTestNxNx.setup_class-  sJ    s||S[[1Q88<<>r%   r   r   r   r  r   rN  rO  s   @r"   rQ  rQ  ,      " "r%   rQ  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 rS  )	rE  r   r   r:  r;  r?  rO   r   r   rT  s    r"   r   zTestNxOneNx.setup_class6  sJ    s4Q88<<>r%   rU  rO  s   @r"   rX  rX  5  rV  r%   rX  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 rS  )	rE  r   r   r9  r<  r?  rO   r   r   rT  s    r"   r   zTestNxNxOne.setup_class?  sJ    s||S^^4Q88<<>r%   rU  rO  s   @r"   r[  r[  >  rV  r%   r[  c                      t         j                  j                  d       t         j                  j                  ddd      } t	        t
        t        | | dd         y )Nr4  r   r5     r   )ry   r   r  r  r	   r  r   r   s    r"   test_bad_sizer`  G  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   r6  r7  r   dtypeF
drop_firstrd  r  r   r  r   Tr   hasconst   )ry   r   r  randintpdget_dummiesSeriesfloatr   normalr   r   rn  r   r   rF   rN   r   rw   )r  r   r   rescr	  s        r"   test_const_indicatorrr  M  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 )Nrb  r   r   r6  r7  r   rc  Fre  r   rg  Trh  HC1cov_type)ry   r   r  rk  rl  rm  rn  ro  r'  r   rp  r   r   isnanri   
isinstancer  )r  r   r   r	  s       r"   test_fvalue_const_onlyry  Z  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+   r8   )rl  rn  ry   r   r   r  r   r   r.   testingr   r   r   rx  	DataFrame)r   r   r	  r.   s       r"   test_conf_int_single_regressorr}  g  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        rAt        j                  t              5  |j                         j                         }d d d        n|j                         j                         }| 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   r   r:   r;   r   r   as_latexsubr   )r  r  r   r   r	  tableexpecteds          r"   test_summary_as_latexr  r  s    



CAAjM		A
a)--/C\\+& 	-KKM**,E	- 	- &&(FF8E
 FF8E':HP !q	- 	-s   /C**C3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  r7  r   rD  alphag        )
ry   r   r  rp  r   r   r   fit_regularizedr   r   )r!   r  r   r   r   rN   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__ry   loadtxtjoindir
startswithgetattrro  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   r7  r   r   r     r   r   r  r   r  r  r  rk  r   r  ry   r   r  rp  vstackconcatenater  r  r   r  r   r   r   r   )r!   exog1endog1exog2endog2exog_aendog_aexog_bendog_bwgtsrl  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  r7  r   r   r  r  r   r  r  r   r  r  rk  r  r  )r!   r  r  r  r  r  r  r  r  r  rl  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   ry   r   locindexdropnar   r   r   valuesr	   )r  smr  r  r   r	  r?  r   s           r"   test_formula_missing_catr  2  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 )Nr6  r   r+   r   r   r  r7  r   zy ~ xr_  r   )r   )ry   linspacer?  r   rl  r|  r  r   rp  r   from_formular   predict)nsampler   nullbetar  rN   r   s          r"   test_missing_formula_predictr  P  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   rt  ru  )ry   r   r  r   r  r  r   #statsmodels.regression.linear_modelr   r   r   r   rw  ri   r  r   rx   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 )Nr5  r   r   r  hacmaxlagsr   )rv  cov_kwdsrt  ru  )ry   r   r  r  r   r  r   r   r   r   rw  ri   r  r   r  s         r"   test_fvalue_only_constantr  t  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   <  r7  r   r   )r   r   r+   r  r  r  rr   )ry   r   r  rp  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  r7  r   r   r   r  Tr  r  refit)
ry   r   r  rp  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  r7  r   r   r  rk  g      4@r  Tr  r   rr   r,   )ry   r   r  rp  r   r  r   r   r  r  r  r   r   r  r   r  rN   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  r7  r   r  r  r  )offset)r  r  start_params)
ry   r   r  rp  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 )Nrb  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)ry   r   r  r   r/   r   r   all)rndr  r   r  r4   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)r:   r  r  r   ry   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  r7  )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㈵>)ry   r   r  rp  rW  subtractouterr   choleskyr   rp  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  r7  r  )ry   r   rk  r  boolstandard_normalr   r   doubler   r   )reset_randomstater   r   bool_resr	  s        r"   test_bool_regressorr5  >  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   )ry   r   r1  r  r   r   r   r   rw  ri   r  r0   )r3  r   r   r	  	recordings        r"   test_ols_constantr8  F  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 )ry   r   r  r1  r   r   r   as_text)r  r   r   r   s       r"   test_summary_no_constantr;  P  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   )ry   r   r1  r   r   r   condition_numberr   r   condr   )r3  r   r   r	  s       r"   test_condition_numberrA  X  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   )ry   r   r1  r   r   r  deepcopyr   r0   r  r:  )r3  r   r   r	  r  r  	slim_summs          r"   test_slim_summaryrE  a  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.scipyr   statsmodels.compat.pythonr   r   numpyry   numpy.testingr   r   r   r   r	   pandasrl  r:   scipy.linalgr
   scipy.statsr   rU  statsmodels.datasetsr   r  r   r   r   r   r   statsmodels.tools.toolsr   r   	DECIMAL_3	DECIMAL_2r{  r   rx  cvxopt
has_cvxoptImportErrorr   r   r  r  r%  r=  rF  r]  rg  r  r  r  r  r  r  r  r  r  r  r  r  r   r'  r+  r2  rB  rQ  rX  r[  r`  rr  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  skipifr.  r5  r8  r;  rA  rE  r   r%   r"   <module>rU     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
+
+;B"JxK xKv< *(42 !>H4)(, 
N+GH8
 I8
v13=Ek1  Js    G, ,G76G7