ó
áp7]c           @   sŠ   d  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 j
 j Z d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d S(
   s   Unit tests for generic score/LM tests and conditional moment tests

Created on Mon Nov 17 08:44:06 2014

Author: Josef Perktold
License: BSD-3

iÿÿÿÿN(   t   assert_allclose(   t   OLS(   t   CMTNeweyt
   CMTTauchent   CheckCMTc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sP   |  j  } x@ |  j ƒ  D]2 \ } } t | | t j | ƒ  d d d | ƒq Wd  S(   Nt   rtolg‚vIhÂ%<=t   err_msg(   t   results_scoret	   res_scoreR    t   npt   size(   t   selft   expectedt   msgt   actual(    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyt
   test_score   s    	c         C   sP   |  j  } x@ |  j ƒ  D]2 \ } } t | | t j | ƒ  d d d | ƒq Wd  S(   NR   g‚vIhÂ%<=R   (   t   results_hc0t   res_hc0R    R	   R
   (   R   R   R   R   (    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyt   test_scorehc0   s    	c         C   sP   |  j  } x@ |  j ƒ  D]2 \ } } t | | t j | ƒ  d d d | ƒq Wd  S(   NR   g‚vIhÂ%<=R   (   t   results_opgt   res_opgR    R	   R
   (   R   R   R   R   (    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyt   test_scoreopg#   s    	(   t   __name__t
   __module__R   R   R   (    (    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyR      s   		t
   TestCMTOLSc           B   sA   e  Z e d  „  ƒ Z e d „  ƒ Z d „  Z d „  Z d „  Z RS(   c   	      C   só   t  j j d ƒ d \ } } d } t  j j | | ƒ } d | d  d  … d f <| j d ƒ } | | t  j j | ƒ } t  j j | d ƒ } t  j | | f ƒ } | |  _ | |  _ t | | ƒ j	 ƒ  |  _
 |  j ƒ  d |  _ d |  _ d |  _ d  S(   Ni0 id   i   i   i    i   gÞëºåøú?gß,ôgÈŒÛ?g(¡D‰­7ú?g–4v5Ü?gÏPñ†`Žû?gaUìAÛ?g       @(   id   i   (   gÞëºåøú?gß,ôgÈŒÛ?i   (   g(¡D‰­7ú?g–4v5Ü?i   (   gÏPñ†`Žû?gaUìAÛ?g       @(   R	   t   randomt   seedt   randnt   sumt   column_stackt	   exog_fullt   exog_addR   t   fitt   res_olst   attach_moment_conditionsR   R   R   (	   t   clst   nobst   k_varst   sig_et   x0t   y_truet   yt   x1t   x(    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyt   setup_class,   s     		
		c         C   sh  |  j  } |  j } |  j } | j \ } } | j d  d  … d  f | } | j d ƒ } | j | j j	 | ƒ } | | j
 | 9} t j j | ƒ }	 d |	 d  d  … | d  … f <d |	 | d  … d  d  … f <| j d }
 t j |
 ƒ | } | d  d  … d  | … f } | j j	 | ƒ } | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ |	 |  _ | |  _ d  S(   Ni    (   R!   R   R   t   shapet   residt   NoneR   t	   mse_residt   Tt   dott   df_residR	   t   linalgt   invt   eyeR$   t   momst   moms_obst   cov_momst   covmt
   moms_derivt   weightst   L(   R   R!   R+   R*   R$   t   k_constraintsR8   R7   R9   R<   t   k_momsR=   R;   R:   (    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyR"   F   s.    										c         C   s¸  |  j  } |  j } |  j } |  j } |  j } |  j } |  j } |  j } |  j }	 |  j	 }
 g  } | t
 | j |
 ƒ j ƒ  j } | j d | f ƒ | j t j j | | ƒ ƒ } | j d | f ƒ t j | t j | j d ƒ d t j j | ƒ | ƒ } | j d | f ƒ t | | | d  d  … d  d … f | |	 ƒ j } | j d | f ƒ t | d  | d  d … d  d … f | d | d d  … d  d … f | ƒ j } | j d | f ƒ | S(   Ns   ols R2s   score simplei    iþÿÿÿs	   score mlet   Neweyt   Tauchen(   R!   R$   R7   R8   R9   R:   R;   R<   R=   R   R   R.   R    t   rsquaredt   appendR2   R	   R4   t   solvet   diaot	   lm_robustR6   R-   R5   R   t	   chisquareR   (   R   R!   R$   R7   R8   R9   R:   R;   R<   R=   R+   t   res_allt   statt   tres(    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyR   o   s0    										 1*%c         C   se  |  j  } |  j } |  j } |  j } |  j } |  j } |  j } |  j } |  j }	 t	 | j
 j |	 ƒ j d d ƒ }
 g  } t j | ƒ } | t	 | | ƒ j ƒ  j } | j d | f ƒ |
 j | d t ƒ} | j d | f ƒ t | | | d  d  … d  d … f | | ƒ j } | j d | f ƒ t | d  | d  d … d  d … f | d | d d  … d  d … f | ƒ j } | j d | f ƒ t j | d d	 | | ƒ } | j d
 | f ƒ t j | t j | j d ƒ d t j j | ƒ | d d  ƒ} | j d | f ƒ t j | t j | j d ƒ d t j j | ƒ d  d t j j | ƒ ƒ} | j d | f ƒ | S(   Nt   cov_typet   HC0s   ols R2t   demeans
   comp_lm uciþÿÿÿR@   RA   i   s   score subset QMLEi    t
   cov_paramss   scoreB QMLEs   scoreV QMLE(   R!   R$   R7   R8   R:   R;   R<   R=   R   R   t   modelt   endogR    R	   t   onesRB   RC   t   compare_lm_testt   FalseR   RG   R   RE   t   lm_robust_subsetRF   R6   R-   R4   R5   R/   (   R   R!   R$   R7   R8   R:   R;   R<   R=   R+   t   res_ols2_hc0RH   RQ   RI   RJ   (    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyR   ‘   s>    									!1C  c      	   C   s±  |  j  } |  j } |  j } |  j } |  j } |  j } |  j } |  j } |  j }	 | j	 j
 }
 |  j } g  } t j d | j d |
 d | d d ƒ } | j d | d  f ƒ t | | | | |	 ƒ j } | j d | f ƒ t | d	  | d  d	 … d  d	 … f | d	 | d	 d  … d  d	 … f | ƒ j } | j d
 | f ƒ t j | d	 d | | ƒ } | j d | f ƒ t j | t j | j d ƒ d	 t j j | ƒ | ƒ } | j d | f ƒ t j j | ƒ } | j | ƒ j | ƒ } t j | t j | j d ƒ d	 t j j | ƒ d  d | ƒ} | j d | f ƒ t j | d  d  … d	 d  … f | d	 d  … d  d	 … f | d  d  … d  d	 … f | d  d	 … d  d	 … f ƒ } | j | j f } | j d | f ƒ |  j } | j  j | ƒ } t j | d  d  … d	 d  … f | d	 d  … d  d	 … f | d  d  … d  d	 … f | d  d	 … d  d	 … f ƒ } | j | j f } | j d | f ƒ | d  d	 … d  d	 … f } | d	 d  … d  d	 … f } | d	 d  … d	 d  … f } | d	 d  … d  d	 … f } | d  d	 … d  d	 … f } | d	 d | | f t j! | d	 d | | | | | ƒ } | j d | f ƒ t j | j d | j d d ƒ } | } | } | } t j" | | | | ƒ } | j d | f ƒ | S(   NR.   t   resid_derivt   instrumentsR<   i   t
   Wooldridgei   R@   iþÿÿÿRA   s   score subset QMLEi    s   scoreB QMLERN   s   scoreV QMLEt   cmts   score subset_parts QMLEs   score reparam QMLE(#   R!   R$   R7   R8   R9   R:   R;   R<   R=   RO   t   exogR   RE   t   cm_test_robustR.   RC   R   RG   R   RT   RF   R	   R6   R-   R4   R5   R2   R/   t   conditional_moment_test_generict   stat_cmtt   pval_cmtR   R1   t   lm_robust_subset_partst   lm_robust_reparameterized(   R   R!   R$   R7   R8   R9   R:   R;   R<   R=   R'   R*   RH   RJ   t   Ainvt   vvt   tres_R+   t   hess_unscaledt   score_deriv_uut   score_deriv_cut   cov_score_cct   cov_score_cut   cov_score_uut   params_derivt   scoret   score_derivt	   cov_score(    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyR   ½   s|    										*%  		2$(   R   R   t   classmethodR,   R"   R   R   R   (    (    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyR   *   s
   )	"	,(   t   __doc__t   numpyR	   t   numpy.testingR    t#   statsmodels.regression.linear_modelR   t#   statsmodels.stats._diagnostic_otherR   R   t   statst   _diagnostic_otherRE   t   objectR   R   (    (    (    sL   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic_other.pyt   <module>	   s   