
    'YHh~                        d Z ddlZddlmZ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"      Z0 G d5 d6e&e"      Z1 G d7 d8e      Z2 G d9 d:e2e"      Z3 G d; d<e2e"      Z4 G d= d>e2e"      Z5 G d? d@      Z6dA Z7ejp                  js                  dBdCi fdDi fdEi fdFi fdGi fdHdIdJifdKdL ejt                  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assert_warns)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       d/var/www/html/planif/env/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_frame2   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_summary:   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   atolr4   Fpskip_fF      ?df_r)$r   r   r   r'   r(   r)   r   r*   r   r   effectsdr   tvaluetvaluessmallpvaluepvaluesr   normsfabsr5   fvalueFhasattrr?   df_residnobsr   df_numdf_mdf_denomrB   Fdf1Fdf2)
r   r   r   r   r9   r-   r.   pvalr6   dof_corrs
             r    
test_testszCheckOLSRobust.test_testsB   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/   r2   r7   rY    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   rG   resresults_hc0r   r   res_olss     r    setup_methodzTestOLSRobust1.setup_methodn   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realintr4   Fprepend)r   load_pandasdatar'   difflogvaluesr   c_r	   fitr   )clsd2g_gdpg_invexoggs        r    setup_classzTestOLSRobust1.setup_classu   s    ""$))bggbffR	]%9%9:;;bggbffR	]%9%9:;;EE%Is+2223U
 ue$((*r"   c                     | j                   j                  j                  d      }t        | j                   j                  |j                         y )Nqr)method)r   modelrx   r   HC0_se)r   r   s     r    test_qr_equivzTestOLSRobust1.test_qr_equiv   s5    yy""$"/		(($++6r"   N)rZ   r[   r\   rk   classmethodr~   r   r`   r"   r    rb   rb   k   s     $ + +7r"   rb   c                       e Zd Zd Zy)TestOLSRobust2c                     | j                   }|j                  | _        |j                  | _        d| _        t        j                  | _        y rd   )	r   re   r   rf   r   rG   rg   results_ivhc0_smallr   ri   s     r    rk   zTestOLSRobust2.setup_method   s5    ))!..!//
++	r"   NrZ   r[   r\   rk   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   rG   rg   results_ivhc0_larger   ri   s     r    rk   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   rG   rg   results_ivhac4_smallr   r   rj   cov1se1s       r    rk   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   rG   rg   results_ivhac4_larger   r   s       r    rk   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   rM   r   rN   rO   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'   rt   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   r:   r%   r   r;   r   r   )r   r   r   r'   r(   r)   r   r*   r   r   rC   rD   r   rE   rF   rH   rI   r   r   )	r   r   r   r   r9   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   rO   r   NrS   r   
isinstancer   r
   r   scalevcetyper   r2crsquaredstrrQ   df_modelr   rP   resid_pearsonsum)	r   r   r   r   r   r   r   rP   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)rZ   r[   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   re   r   rf   r   rG   rg   r   r   ri   s     r    rk   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        t        |j                  |       dd l	}|j                         5  |j                  d       |j                  |      \  }	}
}d d d        t        	|d       t        
|d       t        |       t        t        |j                  |       y # 1 sw Y   MxY w)	Nr   r<   g!w?g H@r   ignoregdy=r   )r   r   endogexogr	   rx   r   r   compare_lr_testwarningscatch_warningssimplefilterr   r   compare_f_test)r   r   r   r   res_ols2r_pvalr_chi2r_dfr   chi2rW   dfs               r    r   z#TestOLSRobust2SmallNew.test_compare  s    yy

  zzq1a&y)ud#'')#"')=)=xH$$& 	<!!(+!11(;ND$	< 	f51f51R')<)<hG	< 	<s   'DDN)rZ   r[   r\   rk   r   r`   r"   r    r   r     s    	,H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   rG   rg   r   r   r   s       r    rk   z%TestOLSRobustHACSmallNew.setup_method9  s    ))111T 2 
 II		!++!,,.  $Giio
,,	r"   Nr   r`   r"   r    r   r   6  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   rG   rg   r   r   ri   s     r    rk   z#TestOLSRobust2LargeNew.setup_methodL  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_fvalueX      r"   c                 "    t         |           y r   )r   r   r   s    r    r   z#TestOLSRobust2LargeNew.test_confint\  s    r"   )
rZ   r[   r\   rk   r]   r^   r   r   r   __classcell__r   s   @r    r   r   I  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capitalFrp   firmS20Treturn_inverseyearWrequirements
      r   )statsmodels.datasetsr  rs   rr   r   r   r   r	   rx   r   r'   uniqueasarraygroupsrequireminsqueezeastypeinttimerangetidx
ry   r  dtapadtapa_endog
dtapa_exogr   
firm_namesfirm_idr  is
             r    r~   z!CheckOLSRobustCluster.setup_classi  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rZ   r[   r\   r   r~   r`   r"   r    r   r   f  s     ? ?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   rG   r   results_clusterr   r9   r   s       r    rk   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   r4   r   r'  Tr(  r)  r*  r   )pandasr  reshape	DataFramer   r   r   r   r   r   r   r   r+  r   r   r   rG   r   r,  r   r9   )r   pd	fat_array
fat_groupsrj   r   r   s          r    rk   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 )Nr4   r   r'  Tr(  )r  r2  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   r4   r   r'  Tr(  )r1  r  r2  r3  r'   r8  r   r   )r   r4  r:  groups2rg   s        r    test_2way_dataframez.TestOLSRobustCluster2Input.test_2way_dataframe  sY    kk))"a0,,ryy+{)CDEii--gd$ . 
r"   N)rZ   r[   r\   rk   r<  r?  r`   r"   r    r/  r/    s    
.


r"   r/  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   rx   dictr  r   r   r   r   r   r   r+  r   r   r   rG   r   r,  r   r9   r   s       r    rk   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   rI   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)rZ   r[   r\   rk   rJ  r`   r"   r    rA  rA    s    &Dr"   rA  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   rG   r   results_cluster_larger@   r   r9   r   s       r    rk   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"   )	rZ   r[   r\   rk   r]   r^   r   rT  r   r   s   @r    rL  rL    s/    
. [[<= >r"   rL  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'  FTrO  rC  r)  r*  r   )r	   r   r   r   r   rx   rF  r  r   r   r   r   r   r   r+  r   r   r   rG   r   rQ  r@   r   r9   )r   r   rj   r   r   s        r    rk   z*TestOLSRobustCluster2LargeFit.setup_method  s    DIIOO))499??+?+?@)){{$"	  
 II		!++!,,.~~diiUKiio
..		
r"   rR  r   c                 "    t         |           y r   r   r   s    r    r   z)TestOLSRobustCluster2LargeFit.test_fvalue-  r   r"   )	rZ   r[   r\   rk   r]   r^   r   r   r   r   s   @r    rV  rV    s/    
6 [[<= >r"   rV  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   rG   r   results_nw_groupsum4r@   r   r9   r   s       r    rk   z#TestOLSRobustClusterGS.setup_method5  s    ))11  2 
 II		!++!,,.!!IIq$))E
 iio
--		
r"   Nr   r`   r"   r    rZ  rZ  2      r"   rZ  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]  rC  r)  r*  r   )r   r   rx   rF  r  r   r   r   r   r   r   r^  r   r   r   rG   r   r_  r@   r   r9   r   s       r    rk   z&TestOLSRobustClusterGSFit.setup_methodR  s    ))//%%"YY%t & 
 II		!++!,,.!!IIq$))E
 iio
--		
r"   Nr   r`   r"   r    rb  rb  O  s    r"   rb  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   rP  r*  r   )r   r   r  r   r   r   r   r   r   cov_nw_panelr  r   r   r   rG   r   results_nw_panel4r@   r   r9   r   s       r    rk   z$TestOLSRobustClusterNWP.setup_methodn  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   rh  TFri  r:   r   )r   r   r  r   r   ri   s     r    test_keywordz$TestOLSRobustClusterNWP.test_keyword  sK    ))11  2 
 	TYY]]?r"   N)rZ   r[   r\   rk   rm  r`   r"   r    re  re  k  s    0
@r"   re  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 )
Nrg  r   rh  TF)r  r   r   r   rP  rC  r*  r   )r   r   rx   rF  r  r   r   r   r   r   r   rj  r  r   r   r   rG   r   rk  r@   r   r9   r   s       r    rk   z-TestOLSRobustClusterNWPGroupsFit.setup_method  s    ))//%%{{$# & 	
 II		!++!,,.tyy!TYY7iio
**		
r"   Nr   r`   r"   r    ro  ro    s    
r"   ro  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   rG   r   results_cluster_2groups_smallr   r9   r   s       r    rk   z#TestOLSRobustCluster2G.setup_method  s    ))11KK+	 2 
 II		!++!,,.%%IIt{{499T

 iio
66	  		 
r"   Nr   r`   r"   r    rr  rr    r`  r"   rr  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(  rt  r   TrH  r   )r   r   r  r  r   r   r   r   r   r   rv  r   r   r   rG   r   results_cluster_2groups_larger@   r   r9   r   s       r    rk   z(TestOLSRobustCluster2GLarge.setup_method  s    ))11KK+ 	 2 
 II		!++!,,.%%IIt{{499U

 iio
66		
r"   Nr   r`   r"   r    ry  ry    s    
r"   ry  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  Frp   r   weightsr  r  Tr  r	  r
  r  r  r  )r  r  rs   rr   r   r   r   r
   rx   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q:g+>'>

#% 	 !iiJJz6(+U3D

G 
zz*fX.SA
::d#**3/49"I>qQVR1q5\*>>s   D6Nr"  r`   r"   r    r}  r}    s     ? ?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   rG   r   results_cluster_wls_smallr   r9   r   s       r    rk   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 rN  )r   r   r  r   r   r   r   r   r   r+  r   r   r   rG   r   results_cluster_wls_larger@   r   r9   r   s       r    rk   z'TestWLSRobustCluster2Large.setup_method/  s    ))11;;  2 
 II		!++!,,.~~diiUKiio
22		
r"   Nr   r`   r"   r    r  r  *  s    
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   rf   r   r   r   r   rG   r   results_hc1_wls_smallr@   r   r9   r   s       r    rk   zTestWLSRobustSmall.setup_methodJ  s    ))11%t1DII		!++!,,. iio
..		
r"   Nr   r`   r"   r    r  r  G  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  rs   rr   r   r   r   r
   rx   res_wlsr'   sqrtr  r	   rj   r  r  r  r  r  r  r  r  r  r  )ry   r  r  r  r  r   w_sqrtidsr  r   r  r!  s               r    r~   z!TestWLSOLSRobustSmall.setup_class_  sp    	2))+kk$3'ZZ%
J';<eLq:g+>'>

#% 	 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   r:   g|=)rF  rj   r   r  r   r   r   r   rI   r'   r(   r)   r5   rM   rH   )	r   all_covrD  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   r:   r%   r  rC  )rj   r   r  r   r   r   r   rI   r*   r'   r(   r)   normalized_cov_paramsrD   rH   rF   rE   r   r
   r   r   r  rx   )	r   rD  r  r   r   r.   modmod3r   s	            r    test_fixed_scalez&TestWLSOLSRobustSmall.test_fixed_scale  s    1t||11(CdC1t||11(CdCT[[u=)?4??+<5I$((7dll?T[[FF3t{{#$D,F,F
 	DOOt99	
 	"%%e4biie<biie< ll  399chh<xxDx9[[FF3t{{#$D,F,F  
 	OOt99	
 	"%%e4biie<biie<r"   N)rZ   r[   r\   r   r~   r  r  r`   r"   r    r  r  ^  s    ? ?6@* =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<   rA   r<   r  gN"q?g~uM/N?gMbP?r   zfixed scale)rD  gO=N?g5=`6?g      "@g[u|?g-/i@r   	   rC  )	r'   arraycolumn_stackonesr)   r
   rx   r   r   )xdataydatasigmar  rg   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  rC  r   )rD  rE  r   )	r'   randomRandomStatestandard_normalr  r	   rx   r   r   )
r  rD  rE  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   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   rg   r   rb   r   r   r   r   r   r   r   r   r   r$  r/  rA  rL  rV  rZ  rb  re  ro  rr  ry  r}  r  r  r  r  r  r^   parametrizearanger   r`   r"   r    <module>r     sK       * 8 2 2 > 0H1 H1V7^ 76	,^ 	,	,^ 	,-N --N -S Sl"H^-C "HL-~/E -&^-C :?N ?813I ,/
1/
dD46L DD1B"1"J24J : 57M 8%@35K %@P1B24J :1F?N ?>13I .1:.0F .R= R=jJ6 	b					A	X			# 356	.	.r"   