ó
áp7]c           @   s–  d  Z  d d l Z d d l Z d d l m Z m Z d d l m Z d d l	 m
 Z
 m Z d d l m Z d d l m Z d d l m Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d  „  ƒ  YZ d S(!   s   
Unit tests for fit_constrained
Tests for Poisson and Binomial are in discrete


Created on Sun Jan  7 09:21:39 2018

Author: Josef Perktold
iÿÿÿÿN(   t   assert_allcloset   assert_equal(   t   add_constant(   t   OLSt   WLS(   t   GLM(   t   family(   t   ValueWarningt   ConstrainedCompareMixinc           B   s2   e  Z e d  „  ƒ Z d „  Z d „  Z d „  Z RS(   c         C   s*  d \ } } t  j j d ƒ t  j j | | d ƒ } t | ƒ } | j d ƒ d } | d t  j j | ƒ } | |  _ | |  _ d d d d g |  _ t  j	 |  j ƒ |  _
 d g |  _ | d  d  … |  j f |  _ } t | d	 | d  d  … d f | ƒ } d
 d d d g | j (| |  _ |  j ƒ  d  S(   Nid   i   iõ i   i   i    i   i   g      à?t   constt   x2t   x3t   x4(   id   i   (   t   npt   randomt   seedt   randnR   t   sumt   endogt   exogt   idx_uct   arrayt   idx_p_uct   idx_ct   exogcR   t
   exog_namest   mod2t   init(   t   clst   nobst   k_exogt   xt   y_truet   yt   xct	   mod_ols_c(    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyt   setup_class   s     		 '	c         C   s6   |  j  } |  j } t | j |  j | j d d ƒd  S(   Nt   rtolg»½×Ùß|Û=(   t   res1t   res2R    t   paramsR   (   t   selfR&   R'   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyt   test_params-   s    		c         C   s§   |  j  } |  j } t | j | j ƒ t | j | j d d ƒt | j |  j | j d d ƒt | j ƒ  |  j d  d  … d  f |  j f | j ƒ  d d d d ƒd  S(   NR%   g»½×Ùß|Û=g:Œ0âŽy5>t   atolgVçž¯Ò<(
   R&   R'   R   t   df_residR    t   scalet   bseR   t
   cov_paramst   None(   R)   R&   R'   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyt   test_se2   s    		 "c         C   s/   |  j  } |  j } t | j | j d d ƒd  S(   NR%   g»½×Ùß|Û=(   R&   R'   R    t   resid_responset   resid(   R)   R&   R'   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyt
   test_resid<   s    		(   t   __name__t
   __module__t   classmethodR$   R*   R1   R4   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR      s   		
t   TestGLMGaussianOffsetc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s’   |  j  j ƒ  |  _ t |  j |  j d d |  j d  d  … |  j f j ƒ  ƒ} d d d d g | j	 (| j ƒ  |  _
 t j |  j j d ƒ |  _ d  S(   Nt   offsetg      à?R	   R
   R   R   i   (   R   t   fitR'   R   R   R   R   R   t   squeezeR   R&   R   t   aranget   shapeR   (   R   t   mod(    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR   D   s    )(   R5   R6   R7   R   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR8   B   s   t   TestGLMGaussianConstrainedc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sV   |  j  j ƒ  |  _ t |  j |  j ƒ } d d d d d g | j (| j d ƒ |  _ d  S(   NR	   t   x1R
   R   R   s   x1=0.5(	   R   R:   R'   R   R   R   R   t   fit_constrainedR&   (   R   R>   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR   P   s    (   R5   R6   R7   R   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR?   N   s   t   TestGLMGaussianOffsetHCc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s¤   d } |  j  j d | ƒ |  _ t |  j |  j d d |  j d  d  … |  j f j ƒ  ƒ} d d d d g | j	 (| j d | ƒ |  _
 t j |  j j d	 ƒ |  _ d  S(
   Nt   HC0t   cov_typeR9   g      à?R	   R
   R   R   i   (   R   R:   R'   R   R   R   R   R   R;   R   R&   R   R<   R=   R   (   R   RD   R>   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR   Z   s    )(   R5   R6   R7   R   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyRB   X   s   t   TestGLMGaussianConstrainedHCc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sh   d } |  j  j d | ƒ |  _ t |  j |  j ƒ } d d d d d g | j (| j d d | ƒ|  _ d  S(	   NRC   RD   R	   R@   R
   R   R   s   x1=0.5(	   R   R:   R'   R   R   R   R   RA   R&   (   R   RD   R>   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR   g   s
    (   R5   R6   R7   R   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyRE   e   s   t   ConstrainedCompareWtdMixinc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sN  d \ } } t  j j d ƒ t  j j | | d ƒ } t | ƒ } t  j j d d | ƒ |  _ | j d ƒ d } | d t  j j | ƒ } | |  _ | |  _	 d d d d	 g |  _
 t  j |  j
 ƒ |  _ d g |  _ | d  d  … |  j
 f |  _ } t | d
 | d  d  … d f | d |  j ƒ} d d d d g | j (| |  _ |  j ƒ  d  S(   Nid   i   iõ i   i
   i   i    i   i   g      à?t   weightsR	   R
   R   R   (   id   i   (   R   R   R   R   R   t   randintt   aweightsR   R   R   R   R   R   R   R   R   R   R   R   (   R   R   R   R   R    R!   R"   R#   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR$   r   s"    		 0	(   R5   R6   R7   R$   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyRF   p   s   t   TestGLMWtdGaussianOffsetc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s›   |  j  j ƒ  |  _ t |  j |  j d d |  j d  d  … |  j f j ƒ  d |  j	 ƒ} d d d d g | j
 (| j ƒ  |  _ t j |  j j d ƒ |  _ d  S(	   NR9   g      à?t   var_weightsR	   R
   R   R   i   (   R   R:   R'   R   R   R   R   R   R;   RI   R   R&   R   R<   R=   R   (   R   R>   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR   Š   s    &(   R5   R6   R7   R   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyRJ   ˆ   s   t   TestGLMWtdGaussianConstrainedc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s_   |  j  j ƒ  |  _ t |  j |  j d |  j ƒ} d d d d d g | j (| j d ƒ |  _	 d  S(   NRK   R	   R@   R
   R   R   s   x1=0.5(
   R   R:   R'   R   R   R   RI   R   RA   R&   (   R   R>   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR   —   s    (   R5   R6   R7   R   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyRL   •   s   t   TestGLMWtdGaussianOffsetHCc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s­   d } |  j  j d | ƒ |  _ t |  j |  j d d |  j d  d  … |  j f j ƒ  d |  j	 ƒ} d d d d	 g | j
 (| j d | ƒ |  _ t j |  j j d
 ƒ |  _ d  S(   NRC   RD   R9   g      à?RK   R	   R
   R   R   i   (   R   R:   R'   R   R   R   R   R   R;   RI   R   R&   R   R<   R=   R   (   R   RD   R>   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR   ¡   s    &(   R5   R6   R7   R   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyRM   Ÿ   s   t   TestGLMWtdGaussianConstrainedHCc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sq   d } |  j  j d | ƒ |  _ t |  j |  j d |  j ƒ} d d d d d g | j (| j d	 d | ƒ|  _	 d  S(
   NRC   RD   RK   R	   R@   R
   R   R   s   x1=0.5(
   R   R:   R'   R   R   R   RI   R   RA   R&   (   R   RD   R>   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR   ¯   s
    (   R5   R6   R7   R   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyRN   ­   s   t   TestGLMBinomialCountConstrainedc           B   sA   e  Z e d  „  ƒ Z e d „  ƒ Z d „  Z d „  Z d „  Z RS(   c         C   sÄ   d d l  m } | d t ƒ } t | j d t ƒ} t j t | j	 ƒ ƒ } | d  d  … d  d … f } t
 | j	 | d t j ƒ  d | ƒ|  _ t
 | j	 | d t j ƒ  d | ƒ|  _ |  j ƒ  d  S(   Niÿÿÿÿ(   t   loadt	   as_pandast   prependiûÿÿÿR   R9   (   t   statsmodels.datasets.star98RP   t   FalseR   R   t   TrueR   t   onest   lenR   R   R   t   BinomialR   t   mod1R   (   R   RP   t   dataR   R9   t	   exog_keep(    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR$   º   s    c         C   sg   |  j  j ƒ  |  _ |  j j j d } t j | d ƒ |  _ t j	 | ƒ d } |  j j
 | ƒ |  _ d  S(   Ni   i   iûÿÿÿ(   R   R:   R'   RY   R   R=   R   R<   R   t   eyeRA   R&   (   R   t   kt   constraints(    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR   É   s
    c         C   s/   |  j  } |  j } t | j | j d d ƒd  S(   NR%   g:Œ0âŽyE>(   R&   R'   R    R2   (   R)   R&   R'   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR4   Ñ   s    		c         C   sX   xQ d d d d d d d d g D]1 } t  t |  j | ƒ t |  j | ƒ d	 d
 ƒq Wd  S(   Nt   llft   null_deviancet   aict   bicR,   t   df_modelt   pearson_chi2R-   R%   g»½×Ùß|Û=(   R    t   getattrR&   R'   (   R)   t   attr(    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyt   test_glm_attr×   s    c      	   C   s  |  j  } |  j } t | j ƒ } t | j ƒ } t } t j ƒ  Y t j d t ƒ | j	 t
 j | ƒ d d | ƒ} | j	 t
 j | ƒ d d | ƒ} Wd  QXt | j | j d d ƒt | j | j d d ƒt | j | j ƒ t } t j ƒ  Y t j d t ƒ | j	 t
 j | ƒ d d | ƒ} | j	 t
 j | ƒ d d | ƒ} Wd  QXt | j | j d d ƒt | j | j d d ƒt | j | j ƒ t | j | j ƒ t | j ƒ  d | j ƒ  d ƒ t j ƒ  ? t j d t ƒ t j d t ƒ |  j  j ƒ  |  j  j ƒ  Wd  QXd  S(	   Nt   ignorei   t   use_fR+   g#B’¡œÇ;R%   g:Œ0âŽyE>iâÿÿÿ(   R&   R'   RW   R(   RT   t   warningst   catch_warningst   simplefilterR   t	   wald_testR   R\   R    t   pvaluet	   statisticR   t   df_denomRU   t   df_numt   summaryt   RuntimeWarningt   summary2(   R)   R&   R'   t   k1t   k2Ri   t   wt2t   wt1(    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyt	   test_waldÝ   s6    		"("(!(   R5   R6   R7   R$   R   R4   Rg   Ry   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyRO   ¸   s
   		t!   TestGLMBinomialCountConstrainedHCc           B   s   e  Z e d  „  ƒ Z RS(   c         C   ss   |  j  j d d ƒ |  _ |  j j j d } t j | d ƒ |  _ t j	 | ƒ d } |  j j
 | d d ƒ|  _ d  S(   NRD   RC   i   i   iûÿÿÿ(   R   R:   R'   RY   R   R=   R   R<   R   R\   RA   R&   (   R   R]   R^   (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyR     s
    (   R5   R6   R7   R   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyRz      s   (   t   __doc__Rj   t   numpyR   t   numpy.testingR    R   t   statsmodels.tools.toolsR   t#   statsmodels.regression.linear_modelR   R   t+   statsmodels.genmod.generalized_linear_modelR   t   statsmodels.genmod.familiesR   t   statsmodels.tools.sm_exceptionsR   t   objectR   R8   R?   RB   RE   RF   RJ   RL   RM   RN   RO   Rz   (    (    (    sH   lib/python2.7/site-packages/statsmodels/genmod/tests/test_constrained.pyt   <module>
   s(   +

H