U
    ÃmœdŠ{  ã                   @   sÎ  d Z ddlmZmZ ddlZddlZddlZddlZddl	m
Z
mZ ddlZddlmZ ddlmZ ddlm  m  mZ dd„ Zeƒ \ZZZejeed	�Zeejeegƒ\ZZejej ksÂt!‚ejej ksÒt!‚e "d
ddddddddddddg¡Z#e "dddddddddd d!d"d#g¡Z$e "d$d%d&d'd(d)d*d+d,d-d.d/d0g¡Z%e "d1d2d3d4d5d6d7d8d9d:d;d<d=g¡Z&e "d>d?d@dAdBdCdDdEdFdGdHdIdJg¡Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*ee+e$ƒƒZ,e,dQd… e,ddQ…  Z,edd…e,f Z-G dRdS„ dSƒZ.G dTdU„ dUƒZ/G dVdW„ dWe/ƒZ0G dXdY„ dYe/ƒZ1G dZd[„ d[e/ƒZ2G d\d]„ d]e/ƒZ3G d^d_„ d_e/ƒZ4G d`da„ dae/ƒZ5G dbdc„ dce/ƒZ6G ddde„ dee/ƒZ7G dfdg„ dge/ƒZ8G dhdi„ die/ƒZ9G djdk„ dkƒZ:G dldm„ dmƒZ;G dndo„ doe;ƒZ<dpdq„ Z=drds„ Z>dS )tz>

Created on Fri Oct 04 13:19:01 2013

Author: Josef Perktold
é    )ÚlrangeÚlmapN)Úassert_allcloseÚassert_equal)Úadd_constant)ÚOLSc            
      C   s  t j t¡d } t j | d¡}t |¡}|d  ¡ }|jd }|D ]V}t	 
|¡|d| < t|ƒD ]6}|j|j| df |kr`d|j|j| d| f< q`q`qBd|d< t|ddd	d
ddddddddg dd�}t|d	d
ddddddddddddg ƒ}|d }	|	||fS )Nr   zgriliches76.dtaÚyearzD_%ié   ÚconstÚsÚiqÚexprÚtenureÚrnsÚsmsaÚD_67ÚD_68ÚD_69ÚD_70ÚD_71ÚD_73T)ÚprependZmedZkwwZageZmrtZlw)ÚosÚpathÚsplitÚ__file__ÚjoinÚpdZ
read_stataÚuniqueÚshapeÚnpÚzerosÚrangeÚlocÚindexr   )
Úcurdirr   Zgriliches76_dataZyearsÚNÚyrÚiÚXÚZÚY© r,   úf/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/sandbox/regression/tests/test_gmm.pyÚget_griliches76_data   sJ    

     þü        þr.   )Údtypez(Intercept)r   r   r   r   r   r   r   r   r   r   r   r   gû‘¦jP"@çÒð¹UÆ?ç¿AAJh¢‚¿ç9L,×x<©?çV»Ãyz�¥?çSo²²"º¿çZpõRg$À?ç<ÍvC"†®¿çö	^ü†ì¨?çÓ�1‡�Ã?çj(ÿ¤ëSÆ?ç±]NÇkw·?gì(ÖÂ�Þ·?g%ƒ/ŽÂ\Ô?g•øõ¦–k•?geü^·Æos?g©Ã†~Ø€?g+B¹†|D‚?g¨?wY~¦¡?g†`0âñŸ?g{{�õ¥Ž¬?gC_“˜Ýª?g–§Þà,¡ª?gî)RÄ–Ü®?gÄ/Ôiö«?g(ØÚVˆ­?g•ÍÁØçZ)@gÏZtS| @g2ÒAMã­þ¿gK‘|%ø@g¶0íœî@gMCù']ŸÀgZ)r‰+@g‰Á²ˆñ¿gÄœû�°í?g`3eLf�@gÍ›y(À&@gÐí%�ÑÚú?g-™cyWÝù?gñ_`æ!9gü °SFË<g¦›Ä °r¬?g¥”ÍEÈ¨+>g Õ˜:5Æ>g¶’úm›j?g¥ÂÄŠÃ›?g öj6EÒ?g˜±Wã¤Ö?g�ž †]ák?g¦›¿gö	p?g¢Ì
­û·?g†{À—=»?c                  C   sV   t  ttt¡} |  ¡ }tj\}}t|jtddd� t|j	t	ddd� t
| dƒrRt‚d S )NçH¯¼šò×z>ç•Ö&è.>©ÚrtolÚatolr   gvƒôõ!”>Z_results)ÚgmmÚIV2SLSÚendogÚexogÚ
instrumentÚfitr   r   ÚparamsÚbseÚhasattrÚAssertionError)ÚmodÚresÚnÚkr,   r,   r-   Útest_iv2sls_rU   s    
rN   c            	      C   s¸   t j\} }tj\}}t tjt¡| }tj |¡}t 	t
t t¡}|jt t jd t¡d|ddddœd�}t|jtddd� t|jtd	dd� |j |j|¡}t|t |j¡dd
d� d S )Nr	   r   Úbfgsç:Œ0âŽyE>©ZgtolÚdisp©ÚmaxiterÚinv_weightsÚoptim_methodÚ
optim_argsg-Cëâ6?r=   g
×£p=
·?çñhãˆµøÔ>)rC   r   rD   r    ÚdotÚTÚlinalgÚinvr@   ÚIVGMMrB   rE   ÚonesÚfloatr   rF   rG   ÚmodelÚscorer!   )	rL   rM   ÚnobsÚk_instrÚw0invÚw0rJ   rK   ra   r,   r,   r-   Útest_ivgmm0_ri   s    

þrf   c                  C   s¶   t  ddddddddd	d
dddg¡} t  dddddddddddddg¡}tj\}}tj\}}t  tjt¡| }t j |¡}t	t
tƒ ¡ j}t t
tt¡}	|	j|d|ddddœd �}
d S )!Ngr^RkP"@r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   g(ã—�Þ·?gr™hÊ-qÕ?ge¥‹Eº<•?gÐª˜t?g‚+êÝi|€?g ÂÏêªaƒ?g¾ûÂ¯�B¡?g°LÇµ�Ÿ?gÅO€8zª?g‘í�M�©?gZ¹˜Š¨?g¶m°ËK¯?gÆZ2}e¬?góPã÷™'¯?r	   rO   ç�íµ ÷Æ°>r   rQ   rS   )r    ÚarrayrC   r   rD   rY   rZ   r[   r\   r   rB   rE   rF   r@   r]   )Zparams_stataZ	bse_statarL   rM   rb   rc   rd   re   ÚstartrJ   rK   r,   r,   r-   Útest_ivgmm1_stata   s>    
      þÿ
      þÿ

rj   r	   c                   @   s:   e Zd Zedd„ ƒZdd„ Zejjde	dd�dd	„ ƒZ
d
S )Ú
TestGMMOLSc                 C   st   t }tt|ƒ ¡ }|j\}}t |j|¡| }t 	t||¡}|jt 
|jd t¡d|ddddœd�}|| _|| _d S )Nr	   r   rO   rg   rQ   rS   )Úexog_str   rB   rE   r   r    rY   rZ   r@   r]   r^   r_   Úres1Úres2)ÚclsrC   Úres_olsrb   rc   rd   rJ   rK   r,   r,   r-   Úsetup_class    s    
 ÿzTestGMMOLS.setup_classc                 C   s|   | j | j }}t|j|jddd� t|j|jddd� |jjjd }d}t|j| |jddd� t|j| |jddd� d S )Nçü©ñÒMb@?r   r=   çñhãˆµøä>r	   rX   r;   )	rm   rn   r   rF   r`   rC   r   rG   ZHC0_se)Úselfrm   rn   rL   Údffacr,   r,   r-   Ú
test_basic²   s    zTestGMMOLS.test_basicz!Not asserting anything meaningfulT©ÚreasonZraisesÚstrictc                 C   s   | j | j }}t‚d S ©N)rm   rn   ÚNotImplementedError©rt   rm   rn   r,   r,   r-   Ú
test_other½   s    zTestGMMOLS.test_otherN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodrq   rv   ÚpytestÚmarkÚxfailr{   r}   r,   r,   r,   r-   rk   ž   s   
 ÿrk   c                   @   sL   e Zd ZddgZddgZdd„ Zdd„ Zdd„ Zej	j
d	d
„ ƒZdd„ ZdS )ÚCheckGMMrX   ç�íµ ÷Æ >c                 C   s�   | j | j }}| j\}}t|j|j|dd� t|j|jd|d� |jjjd }d}| j\}}t|j	| |j	|dd� t|j	| |j	d|d� d S )Nr   r=   r	   )
rm   rn   Ú
params_tolr   rF   r`   rC   r   Úbse_tolrG   )rt   rm   rn   r>   r?   rL   ru   r,   r,   r-   rv   Ê   s    

zCheckGMM.test_basicc                 C   s:   | j | j }}t|j|jddd� t|j|jddd� d S )NrX   r   r=   ç-Cëâ6
?)rm   rn   r   ÚqÚQZjvalÚJr|   r,   r,   r-   r}   ×   s    zCheckGMM.test_otherc           	      C   s¶   | j | j }}t t|jƒ¡}| |¡}t|j|j	ddd� t|j
|jddd� | j\}}t|j|j	|d |d� t|j
|j|d |d� | |d d… ¡}|j|d d… dd�}d S )Nçê-�™—q=r   r=   é
   éÿÿÿÿT)Zscalar)rm   rn   r    ÚeyeÚlenrF   Út_testr   ÚtvalueÚtvaluesÚpvalueÚpvaluesrˆ   Úf_testZ	wald_test)	rt   rm   rn   ÚrestrictionÚres_tr>   r?   Úres_fZres_waldr,   r,   r-   Útest_hypothesisÝ   s    

zCheckGMM.test_hypothesisc                 C   s0   | j }| ¡ }tt|jd ƒt|jƒd ƒ d S ©Nr	   ©rm   Úsummaryr   r‘   ÚtablesrF   ©rt   rm   Úsummr,   r,   r-   Útest_summaryñ   s    zCheckGMM.test_summaryc                 C   s>   t  | j¡}d|_| ¡ }dt|ƒks*t‚dt|ƒks:t‚d S )NTzP>|t|zP>|z|)ÚcopyÚdeepcopyrm   Úuse_trž   ÚstrrI   r    r,   r,   r-   Ú
test_use_tø   s
    zCheckGMM.test_use_tN)r~   r   r€   r‡   rˆ   rv   r}   r›   r‚   rƒ   Úsmoker¢   r§   r,   r,   r,   r-   r…   Å   s   
r…   c                   @   s   e Zd Zedd„ ƒZdS )Ú
TestGMMSt1c           	      C   sz   t }tt|ƒ ¡ j}tj\}}t tj	t¡| }t
 t|t¡}|j|d|ddddœddid�}|| _d	d
lm} || _d S )NrŽ   rO   rg   r   rQ   ÚcenteredF©rT   rU   rV   rW   Úwargsr	   )Úresults)rl   r   rB   rE   rF   rD   r   r    rY   rZ   r@   r]   rm   Zresults_gmm_griliches_iterr­   rn   ©	ro   rC   ri   rb   rc   rd   rJ   Zres10r­   r,   r,   r-   rq     s    

 þzTestGMMSt1.setup_classN©r~   r   r€   r�   rq   r,   r,   r,   r-   r©     s   r©   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGMMStTwostepc           	      C   sŽ   ddg| _ ddg| _t}tt|ƒ ¡ j}tj\}}t	 
tjt¡| }t t|t¡}|j|d|ddddœd	d
id�}|| _ddlm} || _d S )Nr‰   rX   r†   é   rO   rg   r   rQ   rª   Fr«   r	   ©Úresults_twostep©r‡   rˆ   rl   r   rB   rE   rF   rD   r   r    rY   rZ   r@   r]   rm   Úresults_gmm_grilichesr³   rn   r®   r,   r,   r-   rq     s    



 þzTestGMMStTwostep.setup_classNr¯   r,   r,   r,   r-   r°     s   r°   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestGMMStTwostepNOc           	   	   C   s�   ddg| _ ddg| _t}tt|ƒ ¡ j}tj\}}t	 
tjt¡| }t t|t¡}|j|d|ddddœdd	id	d
�}|| _ddlm} || _d S )Nr‰   rX   rg   r±   rO   r   rQ   rª   F©rT   rU   rV   rW   r¬   Úhas_optimal_weightsr	   r²   r´   r®   r,   r,   r-   rq   1  s     



  þzTestGMMStTwostepNO.setup_classNr¯   r,   r,   r,   r-   r¶   .  s   r¶   c                       sB   e Zd Zedd„ ƒZdd„ Zejjde	dd�‡ fdd	„ƒZ
‡  ZS )
ÚTestGMMStOnestepc           	      C   sˆ   ddg| _ ddg| _t}tt|ƒ ¡ j}tj\}}t	 
tjt¡| }t t|t¡}|j|d|ddddœd�}|| _d	d
lm} || _d S )Nrr   r‰   çyé&1¬|?r   rO   rg   rQ   rS   r	   ©Úresults_onestep©r‡   rˆ   rl   r   rB   rE   rF   rD   r   r    rY   rZ   r@   r]   rm   rµ   r¼   rn   ©	ro   rC   ri   rb   rc   rd   rJ   rK   r­   r,   r,   r-   rq   H  s    



þzTestGMMStOnestep.setup_classc                 C   sJ   | j | j }}t t |jdd�¡¡}| j j | j jtj	 
| j j¡¡}d S )NF©r¸   )rm   rn   r    ÚsqrtÚdiagÚ_cov_paramsr`   ÚgmmobjectiverF   r[   r\   Úweights)rt   rm   rn   rG   rŠ   r,   r,   r-   Útest_bse_other\  s    zTestGMMStOnestep.test_bse_otherúq vs Q comparison failsTrw   c                    s   t t| ƒ ¡  d S rz   )Úsuperr¹   r}   ©rt   ©Ú	__class__r,   r-   r}   i  s    zTestGMMStOnestep.test_other)r~   r   r€   r�   rq   rÅ   r‚   rƒ   r„   rI   r}   Ú__classcell__r,   r,   rÉ   r-   r¹   F  s   
 ÿr¹   c                       s:   e Zd Zedd„ ƒZejjdedd�‡ fdd„ƒZ	‡  Z
S )ÚTestGMMStOnestepNOc           	   	   C   s�   ddg| _ ddg| _t}tt|ƒ ¡ j}tj\}}t	 
tjt¡| }t t|t¡}|j|d|ddddœdd	id	d
�}|| _ddlm} || _d S )Nrs   rg   rX   r†   r   rO   rQ   rª   Fr·   r	   r»   r½   r¾   r,   r,   r-   rq   r  s     



  þzTestGMMStOnestepNO.setup_classrÆ   Trw   c                    s   t t| ƒ ¡  d S rz   )rÇ   rÌ   r}   rÈ   rÉ   r,   r-   r}   †  s    zTestGMMStOnestepNO.test_other©r~   r   r€   r�   rq   r‚   rƒ   r„   rI   r}   rË   r,   r,   rÉ   r-   rÌ   o  s   
 ÿrÌ   c                       sB   e Zd Zedd„ ƒZejjdedd�‡ fdd„ƒZ	dd	„ Z
‡  ZS )
ÚTestGMMStOneiterc           	      C   sˆ   ddg| _ ddg| _t}tt|ƒ ¡ j}tj\}}t	 
tjt¡| }t t|t¡}|j|d|ddddœd	�}|| _dd
lm} || _d S )Nrr   r‰   rº   r	   rO   rg   r   rQ   rS   r»   r½   r¾   r,   r,   r-   rq   Ž  s    



 ÿzTestGMMStOneiter.setup_classrÆ   Trw   c                    s   t t| ƒ ¡  d S rz   )rÇ   rÎ   r}   rÈ   rÉ   r,   r-   r}   ¢  s    zTestGMMStOneiter.test_otherc           	      C   s�   | j | j }}|j |j¡}|j |¡}t t |j	d|j
d�¡¡}t t |j	dd�¡¡}tjd }t tjt¡| }| j j | j j|¡}d S )NF©r¸   rÄ   r¿   r   )rm   rn   r`   ÚmomcondrF   Zcalc_weightmatrixr    rÀ   rÁ   rÂ   rÄ   rD   r   rY   rZ   rÃ   )	rt   rm   rn   ZmomsÚwrG   rb   rd   rŠ   r,   r,   r-   rÅ   §  s    ÿ

zTestGMMStOneiter.test_bse_other)r~   r   r€   r�   rq   r‚   rƒ   r„   rI   r}   rÅ   rË   r,   r,   rÉ   r-   rÎ   Œ  s   
 ÿrÎ   c                       s:   e Zd Zedd„ ƒZejjdedd�‡ fdd„ƒZ	‡  Z
S )ÚTestGMMStOneiterNOc           	   	   C   s�   ddg| _ ddg| _t}tt|ƒ ¡ j}tj\}}t	 
tjt¡| }t t|t¡}|j|d|ddddœd	d
id
d�}|| _ddlm} || _d S )Nrs   rg   rX   r†   r	   rO   r   rQ   rª   Fr·   r»   r½   r¾   r,   r,   r-   rq   ¿  s     



  þzTestGMMStOneiterNO.setup_classrÆ   Trw   c                    s   t t| ƒ ¡  d S rz   )rÇ   rÒ   r}   rÈ   rÉ   r,   r-   r}   Ô  s    zTestGMMStOneiterNO.test_otherrÍ   r,   r,   rÉ   r-   rÒ   ½  s   
 ÿrÒ   c                       s:   e Zd Zedd„ ƒZejjdedd�‡ fdd„ƒZ	‡  Z
S )ÚTestGMMStOneiterNO_Linearc           	   	   C   sÆ   ddg| _ ddg| _t}tt|ƒ ¡ j}tj\}}t	 
tjt¡| }t t|t¡}|j|d|dddd	œd
didd�}|| _t t|t¡}|j|d|dddd	œd
didd�}|| _ddlm} || _d S )Ng:Œ0âŽy5>r<   ç•Ö&è.>ç»½×Ùß|Û=r	   rO   rP   r   rQ   rª   Fr·   rg   r»   )r‡   rˆ   rl   r   rB   rE   rF   rD   r   r    rY   rZ   r@   ÚLinearIVGMMrm   r]   Úres3rµ   r¼   rn   r¾   r,   r,   r-   rq   Þ  s0    



  þ
  þz%TestGMMStOneiterNO_Linear.setup_classrÆ   Trw   c                    s   t t| ƒ ¡  d S rz   )rÇ   rÓ   r}   rÈ   rÉ   r,   r-   r}   ù  s    z$TestGMMStOneiterNO_Linear.test_otherrÍ   r,   r,   rÉ   r-   rÓ   Ü  s   
 ÿrÓ   c                       sF   e Zd Zedd„ ƒZejjdedd�‡ fdd„ƒZ	‡ fdd	„Z
‡  ZS )
ÚTestGMMStOneiterNO_Nonlinearc           
   	   C   sÐ   ddg| _ ddg| _t}tt|ƒ ¡ j}tj\}}t	 
tjt¡| }dd„ }t t|t|¡}|j|d|ddd	d
œddidd�}|| _t t|t¡}|j|d|ddd	d
œddidd�}|| _ddlm}	 |	| _d S )Nr‰   rX   çš™™™™™¹?c                 S   s   t  || ¡S rz   )r    rY   )rF   rC   r,   r,   r-   Úfunc  s    z6TestGMMStOneiterNO_Nonlinear.setup_class.<locals>.funcr	   rO   rP   r   rQ   rª   Fr·   rg   r»   )r‡   rˆ   rl   r   rB   rE   rF   rD   r   r    rY   rZ   r@   ZNonlinearIVGMMrm   r]   r×   rµ   r¼   rn   )
ro   rC   ri   rb   rc   rd   rÚ   rJ   rK   r­   r,   r,   r-   rq     s2    



  þ
  þz(TestGMMStOneiterNO_Nonlinear.setup_classrÆ   Trw   c                    s   t t| ƒ ¡  d S rz   )rÇ   rØ   r}   rÈ   rÉ   r,   r-   r}     s    z'TestGMMStOneiterNO_Nonlinear.test_otherc                    s’   | j jd }| j j}| j j ||¡}t| j jj| j jƒ ||¡}t||ddd� t||ddd� | j j | j j|¡}t|t 	t
|ƒ¡ddd� d S )Nçš™™™™™ñ?rg   r   r=   r;   rP   )rm   rF   rÄ   r`   ra   rÇ   rÊ   r   r    r!   r‘   )rt   rF   rÄ   Zsc1Zsc2rÉ   r,   r-   Ú
test_score$  s    ÿz'TestGMMStOneiterNO_Nonlinear.test_score)r~   r   r€   r�   rq   r‚   rƒ   r„   rI   r}   rÜ   rË   r,   r,   rÉ   r-   rØ   ÿ  s   
 ÿrØ   c                       s:   e Zd Zedd„ ƒZejjdedd�‡ fdd„ƒZ	‡  Z
S )ÚTestGMMStOneiterOLS_Linearc           	   	   C   sª   ddg| _ ddg| _t}tt|ƒ ¡ }t t|j	ƒ¡}t
j\}}t |j|¡| }t t||¡}|j|d|ddiddddœd	d
�}d	|_|jt|j	ƒ |_|| _|| _d S )Nç•dyáý¥=r�   r   rR   ZiidFÚk_params)rª   ÚddofT)rT   rU   rW   Zweights_methodr¬   r¸   )r‡   rˆ   rl   r   rB   rE   r    r^   r‘   rF   rD   r   rY   rZ   r@   rÖ   r¥   rb   Údf_residrm   rn   )	ro   rC   rp   ri   rb   rc   rd   rJ   rK   r,   r,   r-   rq   4  s$    



ûz&TestGMMStOneiterOLS_Linear.setup_classz&RegressionResults has no `Q` attributeTrw   c                    s   t t| ƒ ¡  d S rz   )rÇ   rÝ   r}   rÈ   rÉ   r,   r-   r}   R  s    z%TestGMMStOneiterOLS_Linear.test_other)r~   r   r€   r�   rq   r‚   rƒ   r„   ÚAttributeErrorr}   rË   r,   r,   rÉ   r-   rÝ   2  s   
 ÿrÝ   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )Ú
TestGMMSt2c           	   	   C   s²   t }tt|ƒ ¡ j}tj\}}t tj	t¡| }t
 t|t¡}|j|d|dddœddddœd�}|| _d	d
lm} || _t
 t|t¡}|j|d	|dddœddddœd�}|| _d S )Nr±   r   F)rà   rª   rO   rg   rQ   )rT   rU   r¬   rV   rW   r	   )Úresults_gmm2s_robust)rl   r   rB   rE   rF   rD   r   r    rY   rZ   r@   r]   rm   Úresults_ivreg2_grilichesrä   rn   r×   r¾   r,   r,   r-   rq   ^  s(    

 þ
 þzTestGMMSt2.setup_classc              	   C   s  | j | j }}t|j|jddd� t|j|jddd� |jjjd }t d¡}t|j	| |j	ddd� t|j	| |j	ddd� t t 
|jd|jd�¡¡}t|j	|j	d	dd� t t 
|jd|jdd
�¡¡}t|j	|j	ddd� t| jj	|j	ddd� t| jj	|j	ddd� d S )Nr‰   r   r=   rX   gN—`�sï?g{®Gázt?TrÏ   ç      à?)r¸   rÄ   Zuse_weightsgš™™™™™©?)rm   rn   r   rF   r`   rC   r   r    rÀ   rG   rÁ   rÂ   rÄ   r×   )rt   rm   rn   rL   ZdffactrG   r,   r,   r-   rv   y  s$    
ÿ
þ
zTestGMMSt2.test_basicN)r~   r   r€   r�   rq   rv   r,   r,   r,   r-   rã   Z  s   
rã   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zejj	d	d
„ ƒZ
dS )ÚCheckIV2SLSc                 C   s„   | j | j }}t|j|jddd� t|j|jddd� |jjjd }t|j|jddd� t|j|jddd� t|j|jddd� d S )Nr<   r   r=   rÕ   rÞ   rÔ   )	rm   rn   r   rF   r`   rC   r   rG   r”   )rt   rm   rn   rL   r,   r,   r-   rv   ¡  s    zCheckIV2SLS.test_basicc                 C   sè   | j | j }}t|j|jddd� t|j|jddd� t|j|jddd� t|j	|j
ddd� tt |j¡|jddd� t|j|jddd� t|j|jddd� t|j|jddd� t|j|jddd� t|j|jƒ t|j|jƒ d S )Nr;   r   r=   rÕ   rP   r<   )rm   rn   r   ZrsquaredÚr2Zrsquared_adjZr2_aÚfvalueÚFÚf_pvalueÚFpr    rÀ   Z	mse_residZrmseZssrZrssZuncentered_tssÚyyZcentered_tssZyycZessZmssr   Zdf_modelZdf_mrá   Zdf_rr|   r,   r,   r-   r}   ®  s    zCheckIV2SLS.test_otherc                 C   s¶   | j | j }}t t|jƒ¡}| |¡}t|j|j	ddd� t|j
|jddd� | |d d… ¡}t|j|jddd� t|j
|jddd� t|j|jddd� t|j
|jddd� d S )Nr�   r   r=   r�   rÕ   rP   )rm   rn   r    r�   r‘   rF   r’   r   r“   r”   r•   r–   r—   ré   rë   rê   rì   )rt   rm   rn   r˜   r™   rš   r,   r,   r-   r›   Ã  s    
zCheckIV2SLS.test_hypothesisc                 C   sN   | j | j }}| ¡ }t|d |jd ddd� t|d |jd ddd� d S )	Nr   ZDWHrÞ   r=   r	   ZDWHprÕ   gÙ}ÚõÐò¾:)rm   rn   Zspec_hausmanr   Zhausman)rt   rm   rn   Zhausmr,   r,   r-   Útest_hausmanÐ  s    zCheckIV2SLS.test_hausmanc                 C   s0   | j }| ¡ }tt|jd ƒt|jƒd ƒ d S rœ   r�   r    r,   r,   r-   r¢   ×  s    zCheckIV2SLS.test_summaryN)r~   r   r€   rv   r}   r›   rî   r‚   rƒ   r¨   r¢   r,   r,   r,   r-   rç   Ÿ  s   rç   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestIV2SLSSt1c                 C   sP   t }tt|ƒ ¡ j}tj\}}t t|t¡}| ¡ }|| _	ddl
m} || _d S )Nr	   )Úresults_small)rl   r   rB   rE   rF   rD   r   r@   rA   rm   rå   rð   rn   )ro   rC   ri   rb   rc   rJ   rK   r­   r,   r,   r-   rq   à  s    
zTestIV2SLSSt1.setup_classc                 C   st  t j d¡}| dd¡}| d¡}t  d¡|d d …df  t  d¡|  |d d …df< t  |d d …dgf |d d …d f f¡}t  d¡| d¡ t  d¡|d d …df   }|d d …df |d d …df  |  }}|d d …d f }t |¡}t |¡}	|d d …df }
|}t |¡}|j	d d …dgf }|j	d d …df }|}t |d d …df ¡}|j
}t |¡}|	|||f}||
|||f}||||f}t |||¡ ¡ }t ||
|¡ ¡ }t ||
|¡ ¡ }|D ]¨}|D ]œ}|D ]�}t  |¡|jd k}
t  |¡|jd k}|�r|
�s�qÖt |||¡ ¡ }|�r:t|j|jƒ n*|
�rV|�sVt|j|jƒ nt|j|jƒ �qÖ�qÎ�qÆd S )NiÒ  éÈ   r±   ræ   r   r	   )r    ÚrandomZRandomStateZrandnrÀ   Úcolumn_stackr   ZSeriesZ	DataFrameZilocÚvaluesr@   rA   rE   Úsizer   r   rF   )rt   ÚrsÚxÚzÚeZy_1dÚyZy_2dZy_seriesZy_dfZx_1dZx_2dZx_dfZx_df_singleZx_seriesZz_2dZz_seriesZz_1dZz_dfZysZxsZzsrn   rm   Zres1_2sintrZ_yZ_xZ_zrK   r,   r,   r-   Útest_input_dimensionsï  sL    
4(.(



z#TestIV2SLSSt1.test_input_dimensionsN)r~   r   r€   r�   rq   rû   r,   r,   r,   r-   rï   Þ  s   
rï   c                  C   sb   t d d …d d…f } t t| t¡}| ¡ }t|jtj	ƒ | 
¡ }tt|jd ƒt|jƒd ƒ d S )Nr�   r	   )rl   r@   rA   rB   rD   rE   r   ré   r    Únanrž   r‘   rŸ   rF   )rC   rJ   rK   r¡   r,   r,   r-   Útest_noconstant  s    rý   c            
      C   sX  t  ddddddddddddddddd	dd
dg¡} t  ddddddddddddddddddddg¡}t  t  t| ƒ¡| f¡}G dd„ dtjƒ}t  ddddg¡}||| |ddd�j|ddid�}| ¡ }t	t|j
d ƒt|jƒd ƒ d d!„ tt|jƒƒD ƒ}t	|jj|ƒ ||| |ddd�}d"d#d$d%g}| |¡ |j|ddid�}	t	|	jj|ƒ d S )&Ng      ø?g333333û?gš™™™™™@g       @gÍÌÌÌÌÌü?gffffffþ?gš™™™™™ù?rÛ   gffffffö?g¸…ëQ¸ö?r   gš™™™™™É?ræ   gš™™™™™É¿gš™™™™™Ù?g333333Ó¿g      à¿gš™™™™™Ù¿gš™™™™™¹¿g333333Ó?gìQ¸…ëÑ¿g¸…ëQ¸Þ?c                   @   s   e Zd Zdd„ ZdS )ztest_gmm_basic.<locals>.GMMbasec                 S   s|   |\}}}}| j d d …d f }| j}| j}|| ||  | }	|| ||  d ||d|   d  | }
t |	|
f¡}|S )Nr±   é   )rB   rC   rD   r    ró   )rt   rF   Úp0Úp1Úp2Zp3rB   rC   ÚinstZmom0Zmom1Úgr,   r,   r-   rÐ   2  s    ÿÿz'test_gmm_basic.<locals>.GMMbase.momcondN)r~   r   r€   rÐ   r,   r,   r,   r-   ÚGMMbase1  s   r  rÙ   g{®Gáz„?r	   é   )rB   rC   rD   Zk_momsrß   rR   )rW   c                 S   s   g | ]}d | ‘qS )zp%2dr,   )Ú.0r(   r,   r,   r-   Ú
<listcomp>C  s     z"test_gmm_basic.<locals>.<listcomp>ÚbetaÚgammaÚpsiÚphi)r    rh   ró   r^   r‘   r@   ZGMMrE   rž   r   rŸ   rF   r"   r`   Z
exog_namesZset_param_names)
ÚcdZdcdr  r  Zbeta0rK   r¡   ZpnamesrJ   rm   r,   r,   r-   Útest_gmm_basic(  sR           ÿ        ÿ
ÿ ÿ
ÿ
r  )?Ú__doc__Zstatsmodels.compat.pythonr   r   r   r£   r‚   Únumpyr    Znumpy.testingr   r   Zpandasr   Zstatsmodels.tools.toolsr   Z#statsmodels.regression.linear_modelr   Z"statsmodels.sandbox.regression.gmmZsandboxZ
regressionr@   r.   Zyg_dfZxg_dfZzg_dfZasarrayr_   rB   rC   rD   r/   Zfloat64rI   rh   ÚvarnamesrF   rG   r”   r–   rN   rf   rj   r‘   Úidxrl   rk   r…   r©   r°   r¶   r¹   rÌ   rÎ   rÒ   rÓ   rØ   rÝ   rã   rç   rï   rý   r  r,   r,   r,   r-   Ú<module>   sª   ! ÿ      þ      þ      þ
      ü'<)1#3(E?>