
    i}                        d Z ddlZddlmZmZmZ ddlZddlm	Z	 ddl
mZ ddlmZmZ ddlm	c mZ ddlmZ ddlmZ d	d
lmZmZ  G d d      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d d      Z! G d dee!      Z" G d dee!      Z# G d dee!      Z$ G d d e      Z% G d! d"e%e!      Z& G d# d$e%e!      Z' G d% d&e%e!      Z( G d' d(e%e!      Z) G d) d*e%e!      Z* G d+ d,e%e!      Z+ G d- d.e%e!      Z, G d/ d0e%e!      Z- G d1 d2e%e!      Z. G d3 d4e%e!      Z/ G d5 d6e%e!      Z0 G d7 d8e      Z1 G d9 d:e1e!      Z2 G d; d<e1e!      Z3 G d= d>e1e!      Z4 G d? d@      Z5dA Z6ejn                  jq                  dBdCi fdDi fdEi fdFi fdGi fdHdIdJifdKdL ejr                  dM      dNz  ifg      dO        Z:y)PzrTesting OLS robust covariance matrices against STATA

Created on Mon Oct 28 15:25:14 2013

Author: Josef Perktold
    N)assert_allcloseassert_equalassert_raises)stats)	macrodata)OLSWLS)InvalidTestWarning)add_constant   )#results_grunfeld_ols_robust_clusterresults_macro_ols_robustc                       e Zd Zd Zej
                  j                  d        Zej
                  j                  d        Zej
                  j                  d        Z	d Z
y)CheckOLSRobustc                    | j                   }| j                  }t        | dd      }t        |j                  |j                  |       t        | j
                  |j                  |       t        | j                  |j                  |       y Nrtol绽|=r   )	res1res2getattrr   params
bse_robustbse
cov_robustcov)selfr   r   r   s       q/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/statsmodels/regression/tests/test_robustcov.py
test_basiczCheckOLSRobust.test_basic   s^    yyyytVU+T[[t<==    c                     | j                   }t        j                  t        |j                              }|j                  || j                        }|j                          y Ncov_p)r   npeyelenr   t_testr   summaryr   r   mattts       r   test_t_test_summaryz"CheckOLSRobust.test_t_test_summary$   sA    yyffS%&[[DOO[4


r!   c                     | j                   }t        j                  t        |j                              }|j                  || j                        }|j                          y r#   )r   r&   r'   r(   r   r)   r   summary_framer+   s       r   test_t_test_summary_framez(CheckOLSRobust.test_t_test_summary_frame-   sD    yyffS%&[[DOO[4
r!   c                     | j                   }t        j                  t        |j                              }|j                  |d d | j                        }|j                          y )Nr$   )r   r&   r'   r(   r   f_testr   r*   )r   r   r,   fts       r   test_f_test_summaryz"CheckOLSRobust.test_f_test_summary5   sG    yyffS%&[[Sb[9


r!   c                    | j                   }| j                  }t        | dd      }t        | dd      }t        j                  t        |j                              }|j                  || j                        }t        |j                  |j                  |       t        |j                  |j                  |       t        |j                  |j                  |       | j                  r&t        |j                   |j"                  d|z         n[t$        j&                  j)                  t        j*                  |j                              dz  }t        ||j"                  d|z  d	
       |j-                  |d d | j                        }| j                  rQt        |j.                  |j0                  |       t3        |d      rqt        |j                   |j4                  |       nNt        | dd      sA|j6                  dz  |j8                  z  }	t        |j.                  |	z  |j0                  |       t3        |d      rAt;        |j<                  |j>                         t;        |j@                  |jB                         y t;        |j<                  |jD                         t;        |j@                  |jF                         y )Nr   r   rtolh-q=r$   r         g}:r   atolr3   Fpskip_fF      ?df_r)$r   r   r   r&   r'   r(   r   r)   r   r   effectsdr   tvaluetvaluessmallpvaluepvaluesr   normsfabsr4   fvalueFhasattrr>   df_residnobsr   df_numdf_mdf_denomrA   Fdf1Fdf2)
r   r   r   r   r8   r,   r-   pvalr5   dof_corrs
             r   
test_testszCheckOLSRobust.test_tests=   s    yyyytVU+gu-ffS%&[[DOO[4 			4;;T:txxd3		4<<d;::BIIt||!d(C::==		!23a7DD$,,QXEJ[[Sb[9::BIItvvD9tT"		477>451==3.:		H 4dff4H4 DII.dii0 DII.dii0r!   N)__name__
__module____qualname__r    pytestmarksmoker.   r1   r6   rX    r!   r   r   r      sf    > [[  [[  [[ &1r!   r   c                   (    e Zd Zd Zed        Zd Zy)TestOLSRobust1c                     | j                   }|j                  | _        |j                  | _        d| _        t        j                  | _        y NT)	r   HC1_ser   cov_HC1r   rF   resresults_hc0r   r   res_olss     r   setup_methodzTestOLSRobust1.setup_methodi   s3    ))!..!//
OO	r!   c                    t        j                         j                  }dt        j                  t        j
                  |d   j                              z  }dt        j                  t        j
                  |d   j                              z  }t        t        j                  ||d   d d j                  f   d      }t        ||      j                         | _        y )Ni  realgdprealinvrealintr3   Fprepend)r   load_pandasdatar&   difflogvaluesr   c_r   fitr   )clsd2g_gdpg_invexoggs        r   setup_classzTestOLSRobust1.setup_classp   s    ""$))bggbffR	]%9%9:;;bggbffR	]%9%9:;;RUU5"Y-*<*C*C#CDeTue$((*r!   c                     | j                   j                  j                  d      }t        | j                   j                  |j                         y )Nqr)method)r   modelrw   r   HC0_se)r   r   s     r   test_qr_equivzTestOLSRobust1.test_qr_equivy   s5    yy""$"/		(($++6r!   N)rY   rZ   r[   rj   classmethodr}   r   r_   r!   r   ra   ra   f   s     $ + +7r!   ra   c                       e Zd Zd Zy)TestOLSRobust2c                     | j                   }|j                  | _        |j                  | _        d| _        t        j                  | _        y rc   )	r   rd   r   re   r   rF   rf   results_ivhc0_smallr   rh   s     r   rj   zTestOLSRobust2.setup_method   s5    ))!..!//
++	r!   NrY   rZ   r[   rj   r_   r!   r   r   r          ,r!   r   c                       e Zd Zd Zy)TestOLSRobust3c                     | j                   }|j                  | _        |j                  | _        d| _        t        j                  | _        y )NF)	r   r   r   cov_HC0r   rF   rf   results_ivhc0_larger   rh   s     r   rj   zTestOLSRobust3.setup_method   s5    ))!..!//
++	r!   Nr   r_   r!   r   r   r      r   r!   r   c                       e Zd Zd Zy)TestOLSRobustHacSmallc                     | j                   }t        j                  |dd      }t        j                  |      }|| _        || _        d| _        t        j                  | _	        y )N   Tnlagsuse_correction)
r   swcov_hac_simplese_covr   r   rF   rf   results_ivhac4_smallr   r   ri   cov1se1s       r   rj   z"TestOLSRobustHacSmall.setup_method   sN    ))  $Giio
,,	r!   Nr   r_   r!   r   r   r          -r!   r   c                       e Zd Zd Zy)TestOLSRobustHacLargec                     | j                   }t        j                  |dd      }t        j                  |      }|| _        || _        d| _        t        j                  | _	        y )Nr   Fr   )
r   r   r   r   r   r   rF   rf   results_ivhac4_larger   r   s       r   rj   z"TestOLSRobustHacLarge.setup_method   sN    ))  %Hiio
,,	r!   Nr   r_   r!   r   r   r      r   r!   r   c                   b    e Zd Zd Zd Zd Zd Zd Zej                  j                  d        Zy)CheckOLSRobustNewMixinc                     t        | dd      }t        | j                  | j                  |       t        | j                  | j
                  |       y r   )r   r   r   cov_robust2r   bse_robust2r   r   s     r   test_comparez#CheckOLSRobustNewMixin.test_compare   s<    tVU+)9)9E)9)9Er!   c                 h   t        | dd      st        | dd      }t        | j                  j                  | j                  j
                  |       t        | j                  d      r7t        | j                  j                  | j                  j                  |       y y t        j                  d      )Nr?   Fr   r   r   r>   z'TODO: document why this test is skipped)r   r   r   rL   r   rM   rN   f_pvaluer>   r\   skipr   s     r   test_fvaluez"CheckOLSRobustNewMixin.test_fvalue   s}    tXu-4/DDII,,diikkEtyy$'		 2 2DIILLtL ( ++GHHr!   c                    t        | dd      }| j                  j                         }| j                  j                  d d ddf   }t        |||       t        j                  |d      j                         dz  | j                  j                  z  }t        j                  |d      j                         dz  | j                  j                  z  }t        ||d       y )	Nr   r   r      r   r   r;      )
r   r   conf_intr   params_tabler   r&   rs   ravelr   )r   r   ci1ci2crit1crit2s         r   test_confintz#CheckOLSRobustNewMixin.test_confint   s    tVU+ii  "ii$$Q!V,St, Q%%'!+diimm;Q%%'!+diimm;u2.r!   c                    | j                   }| j                  }t        | dd      }t        | dd      }t        j                  t        |j                              }|j                  || j                        }t        |j                  |j                  |       t        |j                  |j                  |       t        |j                  |j                  |       t        |j                  |j                   d|z         |j#                         }| j                  j$                  d d ddf   }t        |||       y )	Nr   r   r9   r$   r   r:   r   r   )r   r   r   r&   r'   r(   r   r)   r   r   rB   rC   r   rD   rE   rG   rH   r   r   )	r   r   r   r   r8   r,   r-   r   r   s	            r   
test_ttestz!CheckOLSRobustNewMixin.test_ttest   s    yyyytVU+fe,ffS%&[[DOO[4 			4;;U;txxd3		4<<e<		4<<a$h?kkmii$$Q!V,St,r!   c                    | j                   }| j                  }d}d}t        |d      r*|j                  |j                  |j
                  z
  dz
  z  }nt        |d      r|j                  dz  }nd}t        |j                  t              rd}|st        |j                  |       |j                  d	k(  sFt        |d
      r|j                  n|j                  }t        |j                  ||t!        |             |j"                  |j$                  z
  dz
  }t'        |j(                  |       |j*                  dz  j-                         }t        ||d       y )Ngh㈵>Frssr   rmser;   Tr   z
Newey-Westr2)r   err_msgvIh%<=)r   r   rN   r   NrR   r   
isinstancer   r	   r   scalevcetyper   r2crsquaredstrrP   df_modelr   rO   resid_pearsonsum)	r   r   r   r   r   r   r   rO   psums	            r   
test_scalez!CheckOLSRobustNewMixin.test_scale   s   yyyy 4HH 2Q 67ET6"IIqLEDdjj#&D DJJD9|||+#D$/TXXBDMM2D#d)L 99t}},q0T]]H-""A%**,hU3r!   c                 8    | j                   j                          y N)r   r*   )r   s    r   test_summaryz#CheckOLSRobustNewMixin.test_summary  s    		r!   N)rY   rZ   r[   r   r   r   r   r   r\   r]   r^   r   r_   r!   r   r   r      s<    F
I	/-$ 4D [[ r!   r   c                       e Zd Zd Zd Zy)TestOLSRobust2SmallNewc                 6   | j                   j                  dd      }| j                   | _        || _         |j                  | _        |j                         | _        |j                  | _        |j                  | _
        d| _        t        j                  | _        y )NHC1Tuse_t)r   get_robustcov_resultsres3r   r   
cov_paramsr   rd   r   re   r   rF   rf   r   r   rh   s     r   rj   z#TestOLSRobust2SmallNew.setup_method  st    ))11%t1DII		!++!,,.">>"??
++	r!   c                    | j                   }|j                  j                  }|j                  j                  d d ddgf   }t	        ||      j                         }d}d}d}t        j                  t              5  |j                  |       d d d        dd l
}|j                         5  |j                  d       |j                  |      \  }	}
}d d d        t        	|d       t        
|d       t        |       t        j                  t              5  |j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)	Nr   r;   g!w?g H@r   ignoregdy=r   )r   r   endogexogr   rw   r\   warnsr
   compare_lr_testwarningscatch_warningssimplefilterr   r   compare_f_test)r   r   r   r   res_ols2r_pvalr_chi2r_dfr   chi2rV   dfs               r   r   z#TestOLSRobust2SmallNew.test_compare  s)   yy

  zzq1a&y)ud#'')#"\\,- 	+  *	+$$& 	<!!(+!11(;ND$	< 	f51f51R\\,- 	*)	* 	*	+ 	+	< 	<	* 	*s$   ;D4)'E E4D= E	EN)rY   rZ   r[   rj   r   r_   r!   r   r   r   	  s    	,*r!   r   c                       e Zd Zd Zy)TestOLSRobustHACSmallNewc                 l   | j                   j                  dddd      }| j                   | _        || _         |j                  | _        |j                         | _        t        j                  |dd      }t        j                  |      }|| _
        || _        d| _        t        j                  | _        y )NHACr   T)maxlagsr   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   rF   rf   r   r   r   s       r   rj   z%TestOLSRobustHACSmallNew.setup_method4  s    ))111T 2 
 II		!++!,,.  $Giio
,,	r!   Nr   r_   r!   r   r   r   1  s    -r!   r   c                        e Zd Zd Zej
                  j                  d       fd       Zej
                  j                  d       fd       Z xZ	S )TestOLSRobust2LargeNewc                 @   | j                   j                  d      }d|_        | j                   | _        || _         |j                  | _        |j                         | _        |j                  | _	        |j                  | _        d| _        t        j                  | _        y )NHC0F)r   r   r   r   r   r   r   r   r   r   r   r   rF   rf   r   r   rh   s     r   rj   z#TestOLSRobust2LargeNew.setup_methodG  sv    ))11%8II		!++!,,.">>"??
++	r!   znot refactored yet for `large`reasonc                 "    t         |           y r   superr   r   	__class__s    r   r   z"TestOLSRobust2LargeNew.test_fvalueS      r!   c                 "    t         |           y r   )r   r   r   s    r   r   z#TestOLSRobust2LargeNew.test_confintW  s    r!   )
rY   rZ   r[   rj   r\   r]   r   r   r   __classcell__r   s   @r   r   r   D  sV    
, [[=> ? [[=> ?r!   r   c                       e Zd Zed        Zy)CheckOLSRobustClusterc                 f   ddl m} |j                  j                         }|j                  d d }|j
                  d d }t        |ddg   d      }t        ||      j                         | _	        t        j                  t        j                  |dg   d	      d
      \  }}|| _        t        j                  |dg   d      }||j                         z  }t        j                   |      j#                  t$              | _        t)        d      D 	cg c]  }	|	dz  d|	dz   z  f c}	| _        y c c}	w )Nr   grunfeld   valuecapitalFro   firmS20Treturn_inverseyearWrequirements
      r   )statsmodels.datasetsr  rr   rq   r   r   r   r   rw   r   r&   uniqueasarraygroupsrequireminsqueezeastypeinttimerangetidx
rx   r  dtapadtapa_endog
dtapa_exogr   
firm_namesfirm_idr  is
             r   r}   z!CheckOLSRobustCluster.setup_classd  s    	2))+kk$3'ZZ%
J';<eL{D)--/ iiJJz6(+U3D

G 
zz*fX.SA
::d#**3/49"I>qQVR1q5\*>>s   D.NrY   rZ   r[   r   r}   r_   r!   r   r   r   a       ? ?r!   r   c                       e Zd Zd Zy)TestOLSRobustCluster2c                    | j                   j                  d| j                  dd      }| j                   | _        || _         |j                  | _        |j                         | _        t        j                  | j                   | j                  d      }t        j                  |      }|| _        || _        d| _        t        j                  | _        d| _        d| _        y NclusterTr  r   r   r   ư>r   )r   r   r  r   r   r   r   r   r   cov_clusterr   r   r   rF   r   results_clusterr   r8   r   s       r   rj   z"TestOLSRobustCluster2.setup_method  s    ))11dkk$d 2 
 II		!++!,,.~~diiTJiio
((		
r!   Nr   r_   r!   r   r%  r%  }      r!   r%  c                       e Zd Zd Zd Zd Zy)TestOLSRobustCluster2Inputc                    dd l }| j                  j                  dd      }|j                  |      }| j                  j                  d|dd      }| j                  | _        || _        |j                  | _        |j                         | _
        t        j                  | j                  | j                  d      }t        j                  |      }|| _        || _        d| _        t"        j$                  | _        d| _        d	| _        y )
Nr   r3   r   r(  Tr)  r*  r+  r   )pandasr  reshape	DataFramer   r   r   r   r   r   r   r   r,  r   r   r   rF   r   r-  r   r8   )r   pd	fat_array
fat_groupsri   r   r   s          r   rj   z'TestOLSRobustCluster2Input.setup_method  s    KK''A.	\\),
))11jT 2 
 II		!++!,,.~~diiTJiio
((		
r!   c                     | j                   j                  dd      }t        j                  |||f      }t	        t
        | j                  j                  d|dd       y )Nr3   r   r(  Tr)  )r  r3  r&   hstackr   
ValueErrorr   r   )r   long_groupsgroups3s      r   test_too_many_groupsz/TestOLSRobustCluster2Input.test_too_many_groups  sQ    kk))"a0))[+{CDII++	
r!   c                     dd l }| j                  j                  dd      }|j                  t	        j
                  ||f            }| j                  j                  d|dd      }y )Nr   r3   r   r(  Tr)  )r2  r  r3  r4  r&   r9  r   r   )r   r5  r;  groups2rf   s        r   test_2way_dataframez.TestOLSRobustCluster2Input.test_2way_dataframe  sY    kk))"a0,,ryy+{)CDEii--gd$ . 
r!   N)rY   rZ   r[   rj   r=  r@  r_   r!   r   r0  r0    s    .


r!   r0  c                       e Zd Zd Zd Zy)TestOLSRobustCluster2Fitc                    | j                   j                  j                  dt        | j                  dd            }| j                   | _        || _         |j                  | _        |j                         | _	        t        j                  | j                   | j                  d      }t        j                  |      }|| _        || _        d| _        t         j"                  | _        d| _        d| _        y )Nr(  Tr)  cov_typecov_kwdsr*  r+  r   )r   r   rw   dictr  r   r   r   r   r   r   r,  r   r   r   rF   r   r-  r   r8   r   s       r   rj   z%TestOLSRobustCluster2Fit.setup_method  s    ))//%%TN & 
 II		!++!,,.~~diiTJiio
((		
r!   c                 j   | j                   }| j                  }d}t        |j                  |j                  d       t        |j                  |j                  |       t        |j
                  |j
                  |d       |j                  d d ddf   }t        |j                         |dd       y )	NHz>g:0yE>r   g#B;r<   r   r   gƠ>)r   r   r   r   r   rH   r   r   )r   r   r   r   cis        r   test_basic_inferencez-TestOLSRobustCluster2Fit.test_basic_inference  s    yyyyT[[t<$((6dllEJq!A#v&$UCr!   N)rY   rZ   r[   rj   rK  r_   r!   r   rB  rB    s    &Dr!   rB  c                   b     e Zd Zd Zej
                  j                  d       fd       Z xZS )TestOLSRobustCluster2Largec                    | j                   j                  d| j                  ddd      }| j                   | _        || _         |j                  | _        |j                         | _        t        j                  | j                   | j                  d      }t        j                  |      }|| _        || _        d| _        t        j                  | _        d| _        d| _        d| _        y Nr(  FTr  r   r   df_correctionr*  r+  r   )r   r   r  r   r   r   r   r   r   r,  r   r   r   rF   r   results_cluster_larger?   r   r8   r   s       r   rj   z'TestOLSRobustCluster2Large.setup_method  s    ))11;;  2 
 II		!++!,,.~~diiUKiio
..		
r!   GH#1189 issuecomment-29141741r   c                 "    t         |           y r   r   r   s    r   test_f_valuez'TestOLSRobustCluster2Large.test_f_value  r   r!   )	rY   rZ   r[   rj   r\   r]   r   rU  r   r   s   @r   rM  rM    s/    . [[<= >r!   rM  c                   b     e Zd Zd Zej
                  j                  d       fd       Z xZS )TestOLSRobustCluster2LargeFitc           	      d   t        | j                  j                  j                  | j                  j                  j                        }|j                  dt        | j                  ddd            }| j                  | _        || _        |j                  | _
        |j                         | _        t        j                  | j                  | j                  d      }t        j                  |      }|| _        || _        d| _        t&        j(                  | _        d| _        d| _        d| _        y )	Nr(  FTrP  rD  r*  r+  r   )r   r   r   r   r   rw   rG  r  r   r   r   r   r   r   r,  r   r   r   rF   r   rR  r?   r   r8   )r   r   ri   r   r   s        r   rj   z*TestOLSRobustCluster2LargeFit.setup_method  s    DIIOO))499??+?+?@)){{$"	  
 II		!++!,,.~~diiUKiio
..		
r!   rS  r   c                 "    t         |           y r   r   r   s    r   r   z)TestOLSRobustCluster2LargeFit.test_fvalue"  r   r!   )	rY   rZ   r[   rj   r\   r]   r   r   r   r   s   @r   rW  rW    s/    6 [[<= >r!   rW  c                       e Zd Zd Zy)TestOLSRobustClusterGSc                    | j                   j                  d| j                  ddd      }| j                   | _        || _         |j                  | _        |j                         | _        t        j                  | j                   d| j                  d      }t        j                  |      }|| _        || _        d| _        t        j                  | _        d| _        d| _        d| _        y )	Nnw-groupsumr   FTr  r   r   r   r*  r+  r   )r   r   r  r   r   r   r   r   r   cov_nw_groupsumr   r   r   rF   r   results_nw_groupsum4r?   r   r8   r   s       r   rj   z#TestOLSRobustClusterGS.setup_method*  s    ))11  2 
 II		!++!,,.!!$))Q		%Piio
--		
r!   Nr   r_   r!   r   r[  r[  '      r!   r[  c                       e Zd Zd Zy)TestOLSRobustClusterGSFitc           	         | j                   j                  j                  dt        | j                  ddd            }| j                   | _        || _         |j                  | _        |j                         | _	        t        j                  | j                   d| j                  d      }t        j                  |      }|| _        || _        d| _        t         j"                  | _        d| _        d| _        d	| _        y )
Nr]  r   FTr^  rD  r*  r+  r   )r   r   rw   rG  r  r   r   r   r   r   r   r_  r   r   r   rF   r   r`  r?   r   r8   r   s       r   rj   z&TestOLSRobustClusterGSFit.setup_methodE  s    ))//%%"tyy!EQUV & 
 II		!++!,,.!!$))Q		%Piio
--		
r!   Nr   r_   r!   r   rc  rc  B  s    r!   rc  c                       e Zd Zd Zd Zy)TestOLSRobustClusterNWPc                    | j                   j                  d| j                  dddd      }| j                   | _        || _         |j                  | _        |j                         | _        t        j                  | j                   d| j                        }t        j                  |      }|| _        || _        d| _        t        j                   | _        d| _        d| _        d| _        y )	Nnw-panelr   hacTFr  r   r   r   rQ  r+  r   )r   r   r  r   r   r   r   r   r   cov_nw_panelr  r   r   r   rF   r   results_nw_panel4r?   r   r8   r   s       r   rj   z$TestOLSRobustClusterNWP.setup_method]  s    ))11  2 
 II		!++!,,.tyy!TYY7iio
**		
r!   c                     | j                   j                  d| j                  dddd      }t        |j                  | j                   j                  d       y )	Nz	hac-panelr   ri  TFrj  r9   r   )r   r   r  r   r   rh   s     r   test_keywordz$TestOLSRobustClusterNWP.test_keywordu  sK    ))11  2 
 	TYY]]?r!   N)rY   rZ   r[   rj   rn  r_   r!   r   rf  rf  Z  s    0
@r!   rf  c                       e Zd Zd Zy) TestOLSRobustClusterNWPGroupsFitc           
         | j                   j                  j                  dt        | j                  dddd            }| j                   | _        || _         |j                  | _        |j                         | _	        t        j                  | j                   d| j                        }t        j                  |      }|| _        || _        d| _        t"        j$                  | _        d| _        d| _        d	| _        y )
Nrh  r   ri  TF)r  r   r   r   rQ  rD  r+  r   )r   r   rw   rG  r  r   r   r   r   r   r   rk  r  r   r   r   rF   r   rl  r?   r   r8   r   s       r   rj   z-TestOLSRobustClusterNWPGroupsFit.setup_method  s    ))//%%{{$# & 	
 II		!++!,,.tyy!TYY7iio
**		
r!   Nr   r_   r!   r   rp  rp    s    r!   rp  c                       e Zd Zd Zy)TestOLSRobustCluster2Gc                    | j                   j                  d| j                  | j                  fdd      }| j                   | _        || _         |j
                  | _        |j                         | _        t        j                  | j                   | j                  | j                  d      d   }t        j                  |      }|| _        || _        d| _        t        j                   | _        d| _        d| _        y )Nr(  Tr)  group2r   r   gffffff?r   )r   r   r  r  r   r   r   r   r   r   cov_cluster_2groupsr   r   r   rF   r   results_cluster_2groups_smallr   r8   r   s       r   rj   z#TestOLSRobustCluster2G.setup_method  s    ))11KK+	 2 
 II		!++!,,.%%IIt{{499T

 iio
66		
r!   Nr   r_   r!   r   rs  rs    ra  r!   rs  c                       e Zd Zd Zy)TestOLSRobustCluster2GLargec                    | j                   j                  d| j                  | j                  fdd      }| j                   | _        || _         |j
                  | _        |j                         | _        t        j                  | j                   | j                  | j                  d      d   }t        j                  |      }|| _        || _        d| _        t        j                   | _        d| _        d| _        d| _        y )	Nr(  Fr)  ru  r   TrI  r   )r   r   r  r  r   r   r   r   r   r   rw  r   r   r   rF   r   results_cluster_2groups_larger?   r   r8   r   s       r   rj   z(TestOLSRobustCluster2GLarge.setup_method  s    ))11KK+ 	 2 
 II		!++!,,.%%IIt{{499U

 iio
66		
r!   Nr   r_   r!   r   rz  rz    s    r!   rz  c                       e Zd Zed        Zy)CheckWLSRobustClusterc                 v   ddl m} |j                  j                         }|j                  d d }|j
                  d d }t        |ddg   d      }t        ||d|d   z  	      j                         | _	        t        j                  t        j                  |d
g   d      d      \  }}|| _        t        j                  |dg   d      }||j                         z  }t        j                   |      j#                  t$              | _        t)        d      D 	cg c]  }	|	dz  d|	dz   z  f c}	| _        y c c}	w Nr   r   r  r  r  Fro   r   weightsr  r  Tr  r	  r
  r  r  r  )r  r  rr   rq   r   r   r   r	   rw   r   r&   r  r  r  r  r  r  r  r  r  r  r  r  s
             r   r}   z!CheckWLSRobustCluster.setup_class  s    	2))+kk$3'ZZ%
J';<eL{D!j6I2IJNNP iiJJz6(+U3D

G 
zz*fX.SA
::d#**3/49"I>qQVR1q5\*>>s   D6Nr"  r_   r!   r   r~  r~    r#  r!   r~  c                       e Zd Zd Zy)TestWLSRobustCluster2c                    | j                   j                  d| j                  dd      }| j                   | _        || _         |j                  | _        |j                         | _        t        j                  | j                   | j                  d      }t        j                  |      }|| _        || _        d| _        t        j                  | _        d| _        d| _        y r'  )r   r   r  r   r   r   r   r   r   r,  r   r   r   rF   r   results_cluster_wls_smallr   r8   r   s       r   rj   z"TestWLSRobustCluster2.setup_method  s    ))11dkk$d 2 
 II		!++!,,.~~diiTJiio
22		
r!   Nr   r_   r!   r   r  r    r.  r!   r  c                       e Zd Zd Zy)TestWLSRobustCluster2Largec                    | j                   j                  d| j                  ddd      }| j                   | _        || _         |j                  | _        |j                         | _        t        j                  | j                   | j                  d      }t        j                  |      }|| _        || _        d| _        t        j                  | _        d| _        d| _        d| _        y rO  )r   r   r  r   r   r   r   r   r   r,  r   r   r   rF   r   results_cluster_wls_larger?   r   r8   r   s       r   rj   z'TestWLSRobustCluster2Large.setup_method  s    ))11;;  2 
 II		!++!,,.~~diiUKiio
22		
r!   Nr   r_   r!   r   r  r    ra  r!   r  c                       e Zd Zd Zy)TestWLSRobustSmallc                 z   | j                   j                  dd      }| j                   | _        || _         |j                  | _        |j                         | _        |j                  }t        j                  |      }|| _
        || _        d| _        t        j                  | _        d| _        d| _        d| _        y )Nr   Tr   r+  r   )r   r   r   r   r   r   r   re   r   r   r   r   rF   r   results_hc1_wls_smallr?   r   r8   r   s       r   rj   zTestWLSRobustSmall.setup_method/  s    ))11%t1DII		!++!,,. iio
..		
r!   Nr   r_   r!   r   r  r  ,  s    r!   r  c                   (    e Zd Zed        Zd Zd Zy)TestWLSOLSRobustSmallc                 T   ddl m} |j                  j                         }|j                  d d }|j
                  d d }t        |ddg   d      }t        ||d|d   z  	      j                         | _	        dt        j                  t        j                  |d               z  }t        ||z  t        j                  |      |d d d f   z        j                         | _        t        j                  |d
g   d      }t        j                  |d      \  }}	|	| _        t        j"                  |dg   d      }
|
|
j%                         z  }
t        j&                  |
      j)                  t*              | _        t/        d      D cg c]  }|dz  d|dz   z  f c}| _        y c c}w r  )r  r  rr   rq   r   r   r   r	   rw   res_wlsr&   sqrtr  r   ri   r  r  r  r  r  r  r  r  r  r  )rx   r  r  r  r  r   w_sqrtidsr  r   r  r!  s               r   r}   z!TestWLSOLSRobustSmall.setup_classD  sj    	2))+kk$3'ZZ%
J';<eL+tQG9L5LMQQSRWWRZZ
7(;<==& "**T"2VAtG_"D

#% 	 jjVH-u5 iiDA
G
zz*fX.SA
::d#**3/49"I>qQVR1q5\*>>s   F%c                 <   dt        d      fdt        d      fdt        d      fdt        d      fg}|D ]`  \  }} | j                  j                  |fi |} | j                  j                  |fi |}t	        |j
                  |j
                  d       t	        |j                          |j                         d       t	        |j                  |j                  d       t	        |j                  |j                  d       t        j                  t        |j
                              }|j                  |      } |j                  |      }t	        |j                  |j                  d	       t	        |j                  |j                  d
       c y )Nr   Tr   r   HC2HC3r   r   r9   g|=)rG  ri   r   r  r   r   r   r   rH   r&   r'   r(   r4   rL   rG   )	r   all_covrE  kwdsr   r   r,   ft1ft2s	            r   test_allzTestWLSOLSRobustSmall.test_all^  s?   Dt$%Dt$%Dt$%Dt$%	
 & 	@NHd54<<55hG$GD54<<55hG$GDDKK5ADOO-t/@uMDHHdhhU;DLL$,,UC&&T[[)*C++c"C$++c"CCJJ

?CJJ

?	@r!   c                    d}i } | j                   j                  |fi |} | j                  j                  |fi |}t        |j                  |j                  d       t        |j                          |j
                         d       t        |j                  |j                  d       t        |j                  |j                  d        |j                  t        j                  t        |j                              |j                        }t         |j
                         |j                  d       t        |j                  |j                  d       t        |j                  |j                  d       t        |j                  |j                   d       | j                  j"                  }t%        |j&                  |j(                  |j*                        }|j-                  ||      }|j                  t        j                  t        |j                              |j                        }t        |j                         |j                  d       t        |j                  |j                  d       t        |j                  |j                  d       t        |j                  |j                   d       y )Nfixed_scaler   r   r9   r$   r  rD  )ri   r   r  r   r   r   r   rH   r)   r&   r'   r(   normalized_cov_paramsrC   rG   rE   rD   r   r	   r   r   r  rw   )	r   rE  r  r   r   r-   modmod3r   s	            r   test_fixed_scalez&TestWLSOLSRobustSmall.test_fixed_scales  s    1t||11(CdC1t||11(CdCT[[u=)?4??+<5I$((7dll?T[[DKK 019S9ST)4+E+EER"%%e4biie<biie< ll  399chh<xxDx9[[DKK 019S9S[T)4+E+EER"%%e4biie<biie<r!   N)rY   rZ   r[   r   r}   r  r  r_   r!   r   r  r  C  s    ? ?2@*=r!   r  c                  8   t        j                  g d      } t        j                  g d      }t        j                  g d      }t        j                  | t        j                  t	        |             f      } d|dz  z  }t        || |      j                         }t        |j                  ddgd	
       t        || |      j                         }t        |j                  ddgd	
       t        || |      j                  d      }t        |j                  ddgd	
       t        || |dz        j                  d      }t        |j                  ddgd	
       t        || |      j                  dddi      }t        |j                  ddgd	
       y )N)r   r   r;      r   r:   )r   r   r:         r   )r   r;   r   r;   r   r;   r@   r;   r  gN"q?g~uM/N?gMbP?r   zfixed scale)rE  gO=N?g5=`6?g      "@g[u|?g-/i@r   	   rD  )	r&   arraycolumn_stackonesr(   r	   rw   r   r   )xdataydatasigmar  rf   s        r   test_cov_type_fixed_scaler    sX   HH'(EHH()EHH'(EOOUBGGCJ$789EE1HnG
eUG
,
0
0
2CCGGj*5DA
eUG
,
0
0
2CCGGj*5DA
eUG
,
0
0-
0
HCCGGj*5DA
eUGcM
2
6
6
6
NCCGGnn=DI
eUG
,
0
0'1 1 C CGGnn=DIr!   cov_info	nonrobustr   r   r  r  r   r   r  r(  r       c                 l   | \  }}t         j                  j                  d      }|j                  d      }t        j                  d      }||z  |j                  d      z   }t        ||      }|j                  ||      }|j                  ||d      }	t        |j                  |	j                         y )Nij )r  r  r  r  rD  r   )rE  rF  r   )	r&   randomRandomStatestandard_normalr  r   rw   r   r   )
r  rE  rF  rsxbyr  pinv_fitqr_fits
             r   r   r     s     "Hh			v	&B
8$A

A	A""3''A
a)Cww8w<HWWh$WGFHLL&**-r!   );__doc__numpyr&   numpy.testingr   r   r   r\   scipyr   r  r   #statsmodels.regression.linear_modelr   r	   %statsmodels.stats.sandwich_covariancesandwich_covariancer   statsmodels.tools.sm_exceptionsr
   statsmodels.tools.toolsr   resultsr   r   r   rf   r   ra   r   r   r   r   r   r   r   r   r   r%  r0  rB  rM  rW  r[  rc  rf  rp  rs  rz  r~  r  r  r  r  r  r]   parametrizearanger   r_   r!   r   <module>r     sA    F F   * 8 2 2 > 0H1 H1V7^ 72	,^ 	,	,^ 	,-N --N -S Sl$*^-C $*P-~/E -&^-C :?N ?813I ,-
!68N -
`D46L DD!68N > $9;Q  F24J 6 57M 0%@35K %@P'<>T >24J 6"79O B?N ?:13I .!68N 6.0F .H= H=VJ6 	b					A	X			# 356	.	.r!   