
    !gz                        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c mc mZ d Z e       \  ZZZ ej4                  ee      Z eej4                  eeg      \  ZZej>                  ej@                  k(  sJ ej>                  ej@                  k(  sJ  ejB                  g d	      Z" ejB                  g d
      Z# ejB                  g d      Z$ ejB                  g d      Z% ejB                  g d      Z&d Z'd Z(d Z) e e*e#            Z+e+dd e+dd z   Z+edde+f   Z, G d d      Z- G d d      Z. G d de.      Z/ G d de.      Z0 G d de.      Z1 G d de.      Z2 G d de.      Z3 G d  d!e.      Z4 G d" d#e.      Z5 G d$ d%e.      Z6 G d& d'e.      Z7 G d( d)e.      Z8 G d* d+      Z9 G d, d-      Z: G d. d/e:      Z;d0 Z<d1 Z=y)2z>

Created on Fri Oct 04 13:19:01 2013

Author: Josef Perktold
    )lrangelmapN)assert_allcloseassert_equal)add_constant)OLSc                  H   t         j                  j                  t              d   } t         j                  j	                  | d      }t        j                  |      }|d   j                         }|j                  d   }|D ]p  }t        j                  |      |d|z  <   t        |      D ]E  }|j                  |j                  |   df   |k(  r"d|j                  |j                  |   d|z  f<   FG r d|d<   t        |g d   d	      }t        |g d
         }|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)prepend)r   r   r   r   r   r   r   r   r   r   medkwwagemrtlw)ospathsplit__file__joinpd
read_statauniqueshapenpzerosrangelocindexr   )
curdirr    griliches76_datayearsNyriXZYs
             j/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/sandbox/regression/tests/test_gmm.pyget_griliches76_datar7      sD   WW]]8$Q'F77<< 12D}}T* V$++-Eq!A (*"%q 	A##$4$:$:1$=v$EF"LOP $$%5%;%;A%>%KL		 !"W% '7 8 04		5A 	% 'K L 	MA 	Aa7N    )dtype)z(Intercept)r   r   r   r   r   r   r   r   r   r   r   r   )gjP"@U?AAJh9L,x<?Vyz?So"ZpRg$?<vC"	^?1?j(S?]Nkw?g(޷?)g%/\?gk?ge^os?gÆ~؀?g+B|D?g?wY~?g`0?g{{?gC_ݪ?g,?g)RĖܮ?g/i?g(V?)gZ)@gZtS| @g2AMgK|%@g0@gMC']gZ)r+@ggĜ?g`3eLf@g͛y(&@g%?g-cyW?)g_`!9g SF<g r?gEȨ+>g :5>gmj?gĊÛ?g j6E?gW?g ]k?gg	p?g
?g{=?c                      t        j                  t        t        t              } | j                         }t        j                  \  }}t        |j                  t        dd       t        |j                  t        dd       t        | d      rJ y )NHz>&.>rtolatolr   gv!>_results)gmmIV2SLSendogexog
instrumentfitr'   r   paramsbsehasattr)modresnks       r6   test_iv2sls_rrY   T   si    
**UD*
-C
'')C
 ::DAqCJJT= CGGSqt4 sJ''''r8   c            	         t         j                  \  } }t        j                  \  }}t        j                  t        j
                  t              |z  }t        j                  j                  |      }t        j                  t        t         t              }|j                  t        j                  t         j                  d   t              d|dddd      }t        |j                  t        dd       t        |j                   t         d	d       |j"                  j%                  |j                  |      }t        |t        j&                  |j                        dd
       y )Nr   r   bfgs:0yE>gtoldispmaxiterinv_weightsoptim_method
optim_argsg-C6?rH   g
ףp=
?h㈵>)rO   r'   rP   r(   dotTlinalginvrL   IVGMMrN   rQ   onesfloatr   rR   rS   modelscorer)   )	rW   rX   nobsk_instrw0invw0rU   rV   rn   s	            r6   test_ivgmm0_rrs   h   s    ::DAq$$MD'FF:<<,t3E	u	B
))E4
,C
''"''$**Q-/%%)15  7C
 CJJT= CGGSt!4IIOOCJJ+EE288EKK0qtDr8   c            	         t        j                  g d      } t        j                  g d      }t        j                  \  }}t        j                  \  }}t        j
                  t        j                  t              |z  }t         j                  j                  |      }t        t        t              j                         j                  }t        j                  t        t        t              }	|	j                  |d|dddd      }
y )	N)gr^RkP"@r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   g(㗏޷?)grh-q?geE<?gЪt?g+i|?g a?g¯B?gLǵ?gO8z?gM?gZ?gmK?gZ2}e?gP'?r   r[   ư>r   r]   r`   )r(   arrayrO   r'   rP   rf   rg   rh   ri   r   rN   rQ   rR   rL   rj   )params_stata	bse_statarW   rX   ro   rp   rq   rr   startrU   rV   s              r6   test_ivgmm1_statarz   ~   s     8823L 23I
 ::DAq$$MD'FF:<<,t3E	u	Bt  "))E
))E4
,C
''%F_cmnWo'
pCr8   r   c                   j    e Zd Zed        Zd Zej                  j                  de	d      d        Z
y)
TestGMMOLSc           	      ~   t         }t        t        |      j                         }|j                  \  }}t        j                  |j                  |      |z  }t        j                  t        ||      }|j                  t        j                  |j                  d   t              d|dddd      }|| _        || _        y )Nr   r   r[   ru   r]   r`   )exog_str   rN   rQ   r'   r(   rf   rg   rL   rj   rk   rl   res1res2)clsrO   res_olsro   rp   rq   rU   rV   s           r6   setup_classzTestGMMOLS.setup_class   s    eT"&&( 

gtvvt$t+ iitT*ggbggdjjmU3QE%+a8P  R r8   c                    | j                   | j                  }}t        |j                  |j                  dd       t        |j                  |j                  dd       |j                  j
                  j                  d   }d}t        |j                  |z  |j                  dd       t        |j                  |z  |j                  dd       y )NMb@?r   rH   h㈵>r   re   rF   )	r   r   r   rR   rm   rO   r'   rS   HC0_se)selfr   r   rW   dffacs        r6   
test_basiczTestGMMOLS.test_basic   s    YY		dT[[t!DT[[qtDJJOO!!!$5($++DqI5($++ADIr8   z!Not asserting anything meaningfulTreasonraisesstrictc                 >    | j                   | j                  }}t        N)r   r   NotImplementedErrorr   r   r   s      r6   
test_otherzTestGMMOLS.test_other   s     YY		d!!r8   N)__name__
__module____qualname__classmethodr   r   pytestmarkxfailr   r    r8   r6   r|   r|      sL     "	J [[A1$  @"@"r8   r|   c                   l    e Zd ZddgZddgZd Zd Zd Zej                  j                  d        Zd Zy)	CheckGMMre   Ơ>c                    | j                   | j                  }}| j                  \  }}t        |j                  |j                  |d       t        |j                  |j                  d|       |j
                  j                  j                  d   }d}| j                  \  }}t        |j                  |z  |j                  |d       t        |j                  |z  |j                  d|       y )Nr   rH   r   )
r   r   
params_tolr   rR   rm   rO   r'   bse_tolrS   )r   r   r   rI   rJ   rW   r   s          r6   r   zCheckGMM.test_basic   s    YY		dootT[[t!DT[[qtDJJOO!!!$llt5($((AF5($((Fr8   c                     | j                   | j                  }}t        |j                  |j                  dd       t        |j
                  |j                  dd       y )Nre   r   rH   -C6
?)r   r   r   qQjvalJr   s      r6   r   zCheckGMM.test_other   s?    YY		dT:		4661=r8   c                 <   | j                   | j                  }}t        j                  t	        |j
                              }|j                  |      }t        |j                  |j                  dd       t        |j                  |j                  dd       | j                  \  }}t        |j                  |j                  |dz  |       t        |j                  |j                  |dz  |       |j                  |d d       }|j                  |d d d      }y )N-q=r   rH   
   T)scalar)r   r   r(   eyelenrR   t_testr   tvaluetvaluespvaluepvaluesr   f_test	wald_test)	r   r   r   restrictionres_trI   rJ   res_fres_walds	            r6   test_hypothesiszCheckGMM.test_hypothesis   s    YY		dffS-.K(dllQGdllQGlltdllbtLdllbtLK,- >>+cr"24>@r8   c                     | j                   }|j                         }t        t        |j                  d         t        |j
                        dz          y Nr   r   summaryr   r   tablesrR   r   r   summs      r6   test_summaryzCheckGMM.test_summary   s;    yy||~SQ(#dkk*:Q*>?r8   c                     t        j                  | j                        }d|_        |j	                         }dt        |      v sJ dt        |      vsJ y )NTzP>|t|zP>|z|)copydeepcopyr   use_tr   strr   s      r6   
test_use_tzCheckGMM.test_use_t   sJ    }}TYY'
||~#d)###c$i'''r8   N)r   r   r   r   r   r   r   r   r   r   smoker   r   r   r8   r6   r   r      sJ    JTlGG>A( [[@ @(r8   r   c                       e Zd Zed        Zy)
TestGMMSt1c           	      z   t         }t        t        |      j                         j                  }t
        j                  \  }}t        j                  t
        j                  t
              |z  }t        j                  t        |t
              }|j                  |d|ddddddi      }|| _        d	d
lm} || _        y )Nr   r[   ru   r   r]   centeredFra   rb   rc   rd   wargsr   )results)r~   r   rN   rQ   rR   rP   r'   r(   rf   rg   rL   rj   r   results_gmm_griliches_iterr   r   	r   rO   ry   ro   rp   rq   rU   res10r   s	            r6   r   zTestGMMSt1.setup_class  s     E4 $$&--"((gz||Z047 iitZ0ru%+a8P)%0  2 7r8   Nr   r   r   r   r   r   r8   r6   r   r      s     r8   r   c                       e Zd Zed        Zy)TestGMMStTwostepc           	         ddg| _         ddg| _        t        }t        t        |      j                         j                  }t        j                  \  }}t        j                  t        j                  t              |z  }t        j                  t        |t              }|j                  |d|ddddd	d
i      }|| _        ddlm} || _        y )Nr   re   r      r[   ru   r   r]   r   Fr   r   results_twostepr   r   r~   r   rN   rQ   rR   rP   r'   r(   rf   rg   rL   rj   r   results_gmm_grilichesr   r   r   s	            r6   r   zTestGMMStTwostep.setup_class  s     TlE4 $$&--"((gz||Z047 iitZ0qe%+a8P)%0  2 Er8   Nr   r   r8   r6   r   r           r8   r   c                       e Zd Zed        Zy)TestGMMStTwostepNOc           	         ddg| _         ddg| _        t        }t        t        |      j                         j                  }t        j                  \  }}t        j                  t        j                  t              |z  }t        j                  t        |t              }|j                  |d|dddddd	id	
      }|| _        ddlm} || _        y )Nr   re   ru   r   r[   r   r]   r   Fra   rb   rc   rd   r   has_optimal_weightsr   r   r   r   s	            r6   r   zTestGMMStTwostepNO.setup_class0  s     TlE4 $$&--"((gz||Z047 iitZ0qe%+a8P)%0e  M Er8   Nr   r   r8   r6   r   r   -  r   r8   r   c                   v     e Zd Zed        Zd Zej                  j                  de	d       fd       Z
 xZS )TestGMMStOnestepc           	         ddg| _         ddg| _        t        }t        t        |      j                         j                  }t        j                  \  }}t        j                  t        j                  t              |z  }t        j                  t        |t              }|j                  |d|dddd      }|| _        d	d
lm} || _        y )Nr   r   y&1|?r   r[   ru   r]   r`   r   results_onestepr   r   r~   r   rN   rQ   rR   rP   r'   r(   rf   rg   rL   rj   r   r   r   r   	r   rO   ry   ro   rp   rq   rU   rV   r   s	            r6   r   zTestGMMStOnestep.setup_classG  s     TlE4 $$&--"((gz||Z047 iitZ0ggeQE%++/#;  = Er8   c                 z   | j                   | j                  }}t        j                  t        j                  |j                  d                  }| j                   j                  j                  | j                   j                  t        j                  j                  | j                   j                              }y )NFr   )r   r   r(   sqrtdiag_cov_paramsrm   gmmobjectiverR   rh   ri   weights)r   r   r   rS   r   s        r6   test_bse_otherzTestGMMStOnestep.test_bse_other[  sw    YY		d ggbggd..5.IJK IIOO(()9)9299==IZIZ;[\r8   q vs Q comparison failsTr   c                 "    t         |           y r   superr   r   	__class__s    r6   r   zTestGMMStOnestep.test_otherh       	r8   )r   r   r   r   r   r   r   r   r   AssertionErrorr   __classcell__r   s   @r6   r   r   E  sK     &
] [[7,T  ;;r8   r   c                   p     e Zd Zed        Zej                  j                  ded       fd       Z	 xZ
S )TestGMMStOnestepNOc           	         ddg| _         ddg| _        t        }t        t        |      j                         j                  }t        j                  \  }}t        j                  t        j                  t              |z  }t        j                  t        |t              }|j                  |d|dddddd	id	
      }|| _        ddlm} || _        y )Nr   ru   re   r   r   r[   r]   r   Fr   r   r   r   r   s	            r6   r   zTestGMMStOnestepNO.setup_classq  s     TlE4 $$&--"((gz||Z047 iitZ0ggeQE%+a8P)%0e  M Er8   r   Tr   c                 "    t         |           y r   r   r   s    r6   r   zTestGMMStOnestepNO.test_other  r   r8   r   r   r   r   r   r   r   r   r   r   r   r   s   @r6   r   r   n  sG      & [[7,T  ;;r8   r   c                   v     e Zd Zed        Zej                  j                  ded       fd       Z	d Z
 xZS )TestGMMStOneiterc           	         ddg| _         ddg| _        t        }t        t        |      j                         j                  }t        j                  \  }}t        j                  t        j                  t              |z  }t        j                  t        |t              }|j                  |d|dddd	      }|| _        dd
lm} || _        y )Nr   r   r   r   r[   ru   r   r]   r`   r   r   r   s	            r6   r   zTestGMMStOneiter.setup_class  s     TlE4 $$&--"((gz||Z047 iitZ0ggeQE%+a8P  REr8   r   Tr   c                 "    t         |           y r   r   r   s    r6   r   zTestGMMStOneiter.test_other  r   r8   c                    | j                   | j                  }}|j                  j                  |j                        }|j                  j                  |      }t        j                  t        j                  |j                  d|j                                    }t        j                  t        j                  |j                  d                  }t        j                  d   }t        j                  t        j                  t              |z  }| j                   j                  j                  | j                   j                  |      }y )NFr   r   r   r   )r   r   rm   momcondrR   calc_weightmatrixr(   r   r   r   r   rP   r'   rf   rg   r   )	r   r   r   momswrS   ro   rq   r   s	            r6   r   zTestGMMStOneiter.test_bse_other  s    YY		dzz!!$++.JJ((. ggbggd..548LL / B C D ggbggd..5.IJK
 "z||Z047IIOO(()9)91=r8   )r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r6   r  r    sJ     & [[7,T  ;;>r8   r  c                   p     e Zd Zed        Zej                  j                  ded       fd       Z	 xZ
S )TestGMMStOneiterNOc           	         ddg| _         ddg| _        t        }t        t        |      j                         j                  }t        j                  \  }}t        j                  t        j                  t              |z  }t        j                  t        |t              }|j                  |d|ddddd	d
id
      }|| _        ddlm} || _        y )Nr   ru   re   r   r   r[   r   r]   r   Fr   r   r   r   s	            r6   r   zTestGMMStOneiterNO.setup_class  s     TlE4 $$&--"((gz||Z047 iitZ0ggeQE%+a8P)%0e  M Er8   r   Tr   c                 "    t         |           y r   r   r   s    r6   r   zTestGMMStOneiterNO.test_other  r   r8   r  r   s   @r6   r  r    sE     ( [[7,T  ;;r8   r  c                   p     e Zd Zed        Zej                  j                  ded       fd       Z	 xZ
S )TestGMMStOneiterNO_Linearc           	      &   ddg| _         ddg| _        t        }t        t        |      j                         j                  }t        j                  \  }}t        j                  t        j                  t              |z  }t        j                  t        |t              }|j                  |d|dddd	d
did      }|| _        t        j                  t        |t              }|j                  |d|dddd	d
did      }|| _        ddlm} || _        y )Ng:0y5>rG   &.>绽|=r   r[   r\   r   r]   r   Fr   ru   r   )r   r   r~   r   rN   rQ   rR   rP   r'   r(   rf   rg   rL   LinearIVGMMr   rj   res3r   r   r   r   s	            r6   r   z%TestGMMStOneiterNO_Linear.setup_class  s     enE4 $$&--"((gz||Z047 ooeT:6ggeQE%+a8P)%0e  M iitZ0ggeQE%+a8P)%0e  M Er8   r   Tr   c                 "    t         |           y r   r   r   s    r6   r   z$TestGMMStOneiterNO_Linear.test_other  r   r8   r  r   s   @r6   r  r    sE     4 [[7,T  ;;r8   r  c                   z     e Zd Zed        Zej                  j                  ded       fd       Z	 fdZ
 xZS )TestGMMStOneiterNO_Nonlinearc           	      .   ddg| _         ddg| _        t        }t        t        |      j                         j                  }t        j                  \  }}t        j                  t        j                  t              |z  }d }t        j                  t        |t        |      }|j                  |d|dddd	d
did      }|| _        t        j                  t        |t              }|j                  |d|dddd	d
did      }|| _        ddlm}	 |	| _        y )Nr   re   皙?c                 .    t        j                  ||       S r   )r(   rf   )rR   rO   s     r6   funcz6TestGMMStOneiterNO_Nonlinear.setup_class.<locals>.func  s    66$''r8   r   r[   r\   r   r]   r   Fr   ru   r   )r   r   r~   r   rN   rQ   rR   rP   r'   r(   rf   rg   rL   NonlinearIVGMMr   rj   r  r   r   r   )
r   rO   ry   ro   rp   rq   r  rU   rV   r   s
             r6   r   z(TestGMMStOneiterNO_Nonlinear.setup_class   s	    TlE4 $$&--"((gz||Z047	(   j$?ggeQE%+a8P)%0e  M iitZ0ggeQE%+a8P)%0e  M Er8   r   Tr   c                 "    t         |           y r   r   r   s    r6   r   z'TestGMMStOneiterNO_Nonlinear.test_other  r   r8   c                 :   | j                   j                  dz  }| j                   j                  }| j                   j                  j	                  ||      }t
        | j                   j                  j                  | j                   j                    ||      }t        ||dd       t        ||dd       | j                   j                  j	                  | j                   j                  |      }t        |t        j                  t        |            dd       y )N皙?ru   r   rH   rF   r\   )r   rR   r   rm   rn   r   r   r   r(   r)   r   )r   rR   r   sc1sc2r   s        r6   
test_scorez'TestGMMStOneiterNO_Nonlinear.test_score#  s    !!C'))##iioo##FG4DIIOO--tyyEfFMOSt!4Sqt4 iioo##DII$4$4g>RXXc&k2Fr8   )r   r   r   r   r   r   r   r   r   r   r$  r   r   s   @r6   r  r    sQ     : [[7,T  ;;G Gr8   r  c                   p     e Zd Zed        Zej                  j                  ded       fd       Z	 xZ
S )TestGMMStOneiterOLS_Linearc           
         ddg| _         ddg| _        t        }t        t        |      j                         }t        j                  t        |j                              }t        j                  \  }}t        j                  |j                  |      |z  }t        j                  t        ||      }|j                  |d|ddiddddd	
      }d	|_        |j"                  t        |j                        z
  |_        || _        || _        y )Ndy=r   r   r_   iidFk_params)r   ddofT)ra   rb   rd   weights_methodr   r   )r   r   r~   r   rN   rQ   r(   rk   r   rR   rP   r'   rf   rg   rL   r  r   ro   df_residr   r   )	r   rO   r   ry   ro   rp   rq   rU   rV   s	            r6   r   z&TestGMMStOneiterOLS_Linear.setup_class3  s      eneT"&&(GNN+,"((gtvvt$t+ ooeT40ggeQE$*A;',*/
C,0  2 	xx#cjj/1 r8   z&RegressionResults has no `Q` attributeTr   c                 "    t         |           y r   r   r   s    r6   r   z%TestGMMStOneiterOLS_Linear.test_otherQ  r   r8   )r   r   r   r   r   r   r   r   AttributeErrorr   r   r   s   @r6   r&  r&  1  sE     : [[F,T  ;;r8   r&  c                   "    e Zd Zed        Zd Zy)
TestGMMSt2c           
         t         }t        t        |      j                         j                  }t
        j                  \  }}t        j                  t
        j                  t
              |z  }t        j                  t        |t
              }|j                  |d|ddddddd      }|| _        d	d
lm} || _        t        j                  t        |t
              }|j                  |d	|ddddddd      }|| _        y )Nr   r   F)r+  r   r[   ru   r]   )ra   rb   r   rc   rd   r   )results_gmm2s_robust)r~   r   rN   rQ   rR   rP   r'   r(   rf   rg   rL   rj   r   results_ivreg2_grilichesr3  r   r  r   s	            r6   r   zTestGMMSt2.setup_class]  s     E4 $$&--"((gz||Z047 iitZ0ggeQE$%%8#)dA6N  P M iitZ0ggeQE$%%8#)dA6N  P r8   c           	         | j                   | j                  }}t        |j                  |j                  dd       t        |j                  |j                  dd       |j                  j
                  j                  d   }t        j                  d      }t        |j                  |z  |j                  dd       t        |j                  |z  |j                  dd       t        j                  t        j                  |j                  d|j                                    }t        |j                  |j                  d	d       t        j                  t        j                  |j                  d|j                  d
                  }t        |j                  |j                  dd       t        | j                  j                  |j                  dd       t        | j                  j                  |j                  dd       y )Nr   r   rH   re   gN`s?g{Gzt?Tr        ?)r   r   use_weightsg?)r   r   r   rR   rm   rO   r'   r(   r   rS   r   r   r   r  )r   r   r   rW   dffactrS   s         r6   r   zTestGMMSt2.test_basicx  sr   YY		dT[[u1ET[[quEJJOO!!!$%6)488%aH6)488!%H ggbggd..448LL / B C D$((Q?ggbggd..47;||;? / A B C 	$((Q? 			txxe!D		txxaeDr8   N)r   r   r   r   r   r   r   r8   r6   r1  r1  Y  s      4Er8   r1  c                   \    e Zd Zd Zd Zd Zd Zej                  j                  d        Z
y)CheckIV2SLSc                    | j                   | j                  }}t        |j                  |j                  dd       t        |j                  |j                  dd       |j                  j
                  j                  d   }t        |j                  |j                  dd       t        |j                  |j                  dd       t        |j                  |j                  dd       y )NrG   r   rH   r  r(  r  )	r   r   r   rR   rm   rO   r'   rS   r   )r   r   r   rW   s       r6   r   zCheckIV2SLS.test_basic  s    YY		dT[[t!DT[[quEJJOO!!!$$((Q?$((?dllQGr8   c                 P   | j                   | j                  }}t        |j                  |j                  dd       t        |j
                  |j                  dd       t        |j                  |j                  dd       t        |j                  |j                  dd       t        t        j                  |j                        |j                  dd       t        |j                  |j                   dd       t        |j"                  |j$                  dd       t        |j&                  |j(                  dd       t        |j*                  |j,                  dd       t/        |j0                  |j2                         t/        |j4                  |j6                         y )NrF   r   rH   r  r\   rG   )r   r   r   rsquaredr2rsquared_adjr2_afvalueFf_pvalueFpr(   r   	mse_residrmsessrrssuncentered_tssyycentered_tssyycessmssr   df_modeldf_mr-  df_rr   s      r6   r   zCheckIV2SLS.test_other  s   YY		dtwwTB))4994aH 	TVV%a@twwTB/QO$((Q?++TWW5qI))488%aH$((A>T]]DII.T]]DII.r8   c                 r   | j                   | j                  }}t        j                  t	        |j
                              }|j                  |      }t        |j                  |j                  dd       t        |j                  |j                  dd       |j                  |d d       }t        |j                  |j                  dd       t        |j                  |j                  dd       t        |j                  |j                  dd       t        |j                  |j                   dd       y )Nr   r   rH   r   r  r\   )r   r   r(   r   r   rR   r   r   r   r   r   r   r   rA  rC  rB  rD  )r   r   r   r   r   r   s         r6   r   zCheckIV2SLS.test_hypothesis  s    YY		dffS-.K(dllQGdllQGK,-dkkAFdmm%aHdff5qAdggEBr8   c                     | j                   | j                  }}|j                         }t        |d   |j                  d   dd       t        |d   |j                  d   dd       y )	Nr   DWHr(  rH   r   DWHpr  g}:)r   r   spec_hausmanr   hausman)r   r   r   hausms       r6   test_hausmanzCheckIV2SLS.test_hausman  sW    YY		d!!#a$,,u"5EJa$,,v"6UOr8   c                     | j                   }|j                         }t        t        |j                  d         t        |j
                        dz          y r   r   r   s      r6   r   zCheckIV2SLS.test_summary  s;    yy||~SQ(#dkk*:Q*>?r8   N)r   r   r   r   r   r   rY  r   r   r   r   r   r8   r6   r:  r:    s9    
H/*CP [[@ @r8   r:  c                   "    e Zd Zed        Zd Zy)TestIV2SLSSt1c                    t         }t        t        |      j                         j                  }t
        j                  \  }}t        j                  t        |t
              }|j                         }|| _	        ddl
m} || _        y )Nr   )results_small)r~   r   rN   rQ   rR   rP   r'   rL   rM   r   r4  r^  r   )r   rO   ry   ro   rp   rU   rV   r   s           r6   r   zTestIV2SLSSt1.setup_class  s_    E4 $$&--"((gjjj1ggiFr8   c                 h   t         j                  j                  d      }|j                  dd      }|j                  d      }t        j                  d      |d d df   z  t        j                  d      |z  z   |d d df<   t        j
                  |d d dgf   |d d d f   f      }t        j                  d      |j                  d      z  t        j                  d      |d d df   z  z   }|d d df   |d d df   z   |z   x}}|d d d f   }t        j                  |      }t        j                  |      }	|d d df   }
|}t        j                  |      }|j                  d d dgf   }|j                  d d df   }|}t        j                  |d d df         }|j                  }t        j                  |      }|	|||f}||
|||f}||||f}t        j                  |||      j                         }t        j                  ||
|      j                         }t        j                  ||
|      j                         }|D ]  }|D ]  }|D ]  }t        j                  |      |j                  d   k(  }
t        j                  |      |j                  d   k(  }|r|
sRt        j                  |||      j                         }|r!t!        |j"                  |j"                         |
r#|s!t!        |j"                  |j"                         t!        |j"                  |j"                            y )Ni     r   r6  r   r   )r(   randomRandomStaterandnr   column_stackr$   Series	DataFrameilocvaluesrL   rM   rQ   sizer'   r   rR   )r   rsxzey_1dyy_2dy_seriesy_dfx_1dx_2dx_dfx_df_singlex_seriesz_2dz_seriesz_1dz_dfysxszsr   r   res1_2sintr_y_x_zrV   s                                r6   test_input_dimensionsz#TestIV2SLSSt1.test_input_dimensions  s   YY""4(HHS!HHSM''#,1a4(2773<!+;;!Q$OOQq1#vY!T'
34GGCL288C=(2773<!AqD'+AAQT7Qq!tW$q((qDz99Q<||H%Aw||AiiA3'99QT?99Qq!tW%||AHdD)D+tX6D(D)zz$d+//1zz$d+//1jjtT2668  	AB A AB772;"((1+5D772;"((1+5DD **RR0446C'

DKK@d'

K4F4FG'

DKK@AA	Ar8   N)r   r   r   r   r   r  r   r8   r6   r\  r\    s    
 
+Ar8   r\  c                  X   t         d d d df   } t        j                  t        | t              }|j                         }t        |j                  t        j                         |j                         }t        t        |j                  d         t        |j                        dz          y )Nr   r   )r~   rL   rM   rN   rP   rQ   r   rA  r(   nanr   r   r   rR   )rO   rU   rV   r   s       r6   test_noconstantr    sq    1crc6?D
**UD*
-C
'')CRVV$;;=DT[[^$c#**o&9:r8   c                  J   t        j                  g d      } t        j                  g d      }t        j                  t        j                  t	        |             | f      } G d dt
        j                        }t        j                  g d      } ||| |dd      j                  |dd	i
      }|j                         }t        t	        |j                  d         t	        |j                        dz          t        t	        |j                              D cg c]  }d|z  	 }}t        |j                  j                  |        ||| |dd      }	g d}|	j                  |       |	j                  |dd	i
      }
t        |
j                  j                  |       y c c}w )N)      ?r  333333?皙@       @?r  r  ffffff?g?r  r  r  r  r!  r  gffffff?r  gQ?r  )r   皙?r6  皙ɿr  r   皙?333333ӿr  r  r  r  g      gٿr  gg333333?gQѿgQ?r  c                       e Zd Zd Zy)test_gmm_basic.<locals>.GMMbasec                     |\  }}}}| j                   d d d f   }| j                  }| j                  }||z
  ||z  z
  |z  }	||z
  ||z  z
  dz  ||d|z  z  z  dz  z
  |z  }
t        j                  |	|
f      }|S )Nr      )rN   rO   rP   r(   rd  )r   rR   p0p1p2p3rN   rO   instmom0mom1gs               r6   r  z'test_gmm_basic.<locals>.GMMbase.momcond1  s    #NBBJJq$w'E99D??DBJd*d2DRZ"t)+a/$R.)B./267Dt-AHr8   N)r   r   r   r  r   r8   r6   GMMbaser  0  s    
	r8   r  )r  r  g{Gz?r      )rN   rO   rP   k_momsr*  r_   r   )rd   r   zp%2d)betagammapsiphi)r(   rv   rd  rk   r   rL   GMMrQ   r   r   r   rR   r*   rm   
exog_namesset_param_names)cddcdr  r  beta0rV   r   r2   pnamesrU   r   s              r6   test_gmm_basicr  '  sY    
 < 
=B
(( H IC??BGGCG,b12D#''  HH()E
"a!c%VQKc@ ;;=DT[[^$c#**o&9:"'CJJ"89Qfqj9F9%%v. "aC -F775fa[71D&&/ :s   F )>__doc__statsmodels.compat.pythonr   r   r   r   r   numpyr(   numpy.testingr   r   pandasr$   statsmodels.tools.toolsr   #statsmodels.regression.linear_modelr   "statsmodels.sandbox.regression.gmmsandbox
regressionrL   r7   yg_dfxg_dfzg_dfasarrayrl   rN   rO   rP   r9   float64rv   varnamesrR   rS   r   r   rY   rs   rz   r   idxr~   r|   r   r   r   r   r   r   r  r  r  r  r&  r1  r:  r\  r  r  r   r8   r6   <module>r     s   3 	    7  0 3 0 0B +, ue

5&

UEN3 jzzRZZ 2::% %%
 288  	 . 
/ bhh . / "(( . / "((  ((E,q4 S[	!"gBQ
q#v,#" #"N9( 9(x *x 0 0&x &R :->x ->b >   F0G8 0Gf# #P;E ;EJ<@ <@~<AK <A|	;%0r8   