ó
áp7]c           @   s­  d  Z  d d l m Z d d l m Z d d l Z d d l m Z m	 Z	 m
 Z
 d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z d d l m Z d d l m Z d d l m Z e j j  d e! ƒ Z" e e" j# d e! ƒe" _# e! Z$ d Z% e j& e e% ƒ d d ƒZ' e' j( e) ƒ Z' e j* e' d ƒ e' d <d e+ f d „  ƒ  YZ, d e, f d „  ƒ  YZ- d e, f d „  ƒ  YZ. d e, f d „  ƒ  YZ/ d e, f d „  ƒ  YZ0 d  e, f d! „  ƒ  YZ1 d" e, f d# „  ƒ  YZ2 d$ e, f d% „  ƒ  YZ3 d& e, f d' „  ƒ  YZ4 d( e, f d) „  ƒ  YZ5 d* e, f d+ „  ƒ  YZ6 d, e6 f d- „  ƒ  YZ7 d. e6 f d/ „  ƒ  YZ8 d0 e6 f d1 „  ƒ  YZ9 d2 „  Z: d S(3   sM   
Created on Fri May 30 16:22:29 2014

Author: Josef Perktold
License: BSD-3

iÿÿÿÿ(   t   division(   t   StringION(   t   assert_allcloset   assert_equalt   assert_(   t   Poisson(   t   GLM(   t   families(   t   fit_constrained(   t   add_constant(   t   datasetsi   (   t   results_poisson_constrained(   t   results_glm_logit_constrainedt	   as_pandast   prependsœ   agecat	smokes	deaths	pyears
1	1	32	52407
2	1	104	43248
3	1	206	28612
4	1	186	12663
5	1	102	5317
1	0	2	18790
2	0	12	10673
3	0	28	5710
4	0	28	2585
5	0	31	1462t	   delimiters   	t   pyearst	   logpyearst   CheckPoissonConstrainedMixinc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   |  j  } |  j } t | d | j |  j d d ƒt j t j | d ƒ ƒ } | d k t j | j	 |  j ƒ @} t | | | j	 |  j | d d ƒd  S(   Ni    t   rtolgíµ ÷Æ°>i   (
   t   res1t   res2R   t   paramst   idxt   npt   sqrtt   diagt   isnant   bse(   t   selfR   R   t   bse1t   mask(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt
   test_basic:   s    		!#c   
      C   s0  t  |  d ƒ rt  |  j d ƒ s* |  j n	 |  j j } |  j } t | j | j |  j d d ƒ| j d k t j	 | j |  j ƒ @} t | j | | j |  j | d d ƒ| j
 |  j d f } t j | j ƒ t j	 | ƒ @} t | j | | | d d ƒ| j
 |  j d f } | j d k t j	 | ƒ @} t | j | | | d d ƒ| j
 |  j d	 f } | j
 |  j d
 f } t j | | f ƒ } t | j ƒ  t j	 | ƒ | t j	 | ƒ d d ƒt | j | j d d ƒt | j | j ƒ | j | j d }	 t | j |	 ƒ n t j d ƒ d  S(   Nt   res1mt   _resultsR   gíµ ÷Æ°>i    i   i   g-Cëâ6
?i   i   i   s   not available yet(   t   hasattrR!   R"   R   R   R   R   R   R   R   t   params_tablet   isinft   tvaluest   pvaluest   column_stackt   conf_intt   llft   llR   t   df_modelt   df_mt   Nt   df_residt   pytestt   skip(
   R   R   R   R   R&   R'   t   ci_lowt   ci_uppt   cit   df_r(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   test_basic_methodD   s,    	 &*  5c         C   s   t  |  d ƒ r~ |  j } |  j } t  | d ƒ rL t | j | j d d ƒq‹ t r‹ d d  l } d | j } | j | ƒ q‹ n t	 j
 d ƒ d  S(   NR!   t   ll_0R   gíµ ÷Æ°>iÿÿÿÿs&   test: ll_0 not available, llnull=%6.4Fs   not available yet(   R#   R!   R   R   t   llnullR7   t   DEBUGt   warningst   warnR0   R1   (   R   R   R   R:   t   message(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt
   test_otherk   s    		
(   t   __name__t
   __module__R    R6   R=   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR   8   s   	
	't   TestPoissonConstrained1ac           B   sA   e  Z e d  „  ƒ Z e j j d „  ƒ Z e j j d „  ƒ Z RS(   c      
   C   s!  t  j |  _ d d d d d d d g |  _ d } t j | d	 t ƒ} t | j ƒ } t	 j
 | ƒ } t	 j | j j ƒ  ƒ | d <t	 j d
 d d d d d d g ƒ } d } t j | j ƒ j | ƒ } t | | j | j d | d i d d 6d d 6ƒ|  _ | j | d | d d d d ƒ|  _ d  S(   Ni   i   i   i   i   i    i   s'   deaths ~ logpyears + smokes + C(agecat)t   datagºÁÌNqzÀg¥ÊoÕöõ?g‚×èj¥@g’;®>µ@gûYžŒâ?g|
Âï?s   C(agecat)[T.4] = C(agecat)[T.5]t   start_paramst   fit_kwdst   bfgst   methodt   disp(   t   resultst   results_noexposure_constraintR   R   R   t   from_formulaRA   t   lent
   exog_namesR   t   zerost   logt   endogt   meant   arrayt   patsyt
   DesignInfot   linear_constraintR   t   coefst	   constantsR   R!   (   t   clst   formulat   modt   k_varsRB   t   pt   constrt   lc(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   setup_class€   s"    
c         C   s&   |  j  j ƒ  } t d | j k ƒ d  S(   Ns   linear equality constraints(   R!   t   summaryR   t	   extra_txt(   R   t   summ(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   test_summaryž   s    c         C   s*   |  j  j ƒ  } t d | j d k ƒ d  S(   Ns   linear equality constraintsi    (   R!   t   summary2R   R_   (   R   R`   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   test_summary2¥   s    (	   R>   R?   t   classmethodR]   R0   t   markt   smokeRa   Rc   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR@   ~   s   t   TestPoissonConstrained1bc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sÊ   t  j |  _ d d d d d d g |  _ d } t j | d t d	 t d
 j ƒ} d } t j	 | j
 ƒ j | ƒ } t | | j | j d i d d 6d d 6ƒ|  _ | |  _ | j | d d d d ƒ|  _ d  S(   Ni   i   i   i   i   i    s   deaths ~ smokes + C(agecat)RA   t   exposureR   s   C(agecat)[T.4] = C(agecat)[T.5]RC   t   newtonRE   RF   (   RG   t   results_exposure_constraintR   R   R   RI   RA   t   valuesRQ   RR   RK   RS   R   RT   RU   R   t   constraintsR!   (   RV   RW   RX   R[   R\   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   ¯   s    
	(   R>   R?   Rd   R]   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRg   ­   s   t   TestPoissonConstrained1cc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sÓ   t  j |  _ d d d d d d g |  _ d } t j | d t d	 t j t d
 j	 ƒ ƒ} d } t
 j | j ƒ j | ƒ } t | | j | j d i d d 6d d 6ƒ|  _ | |  _ | j | d d d d ƒ|  _ d  S(   Ni   i   i   i   i   i    s   deaths ~ smokes + C(agecat)RA   t   offsetR   s   C(agecat)[T.4] = C(agecat)[T.5]RC   Ri   RE   RF   (   RG   Rj   R   R   R   RI   RA   R   RM   Rk   RQ   RR   RK   RS   R   RT   RU   R   Rl   R!   (   RV   RW   RX   R[   R\   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   Ê   s    
	(   R>   R?   Rd   R]   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRm   È   s   t   TestPoissonNoConstrainedc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s’   t  j |  _ d d d d d d g |  _ d } t j | d t d	 t j t d
 j	 ƒ ƒ} | j
 d d ƒ j } | j | j ƒ  f |  _ | |  _ d  S(   Ni   i   i   i   i   i    s   deaths ~ smokes + C(agecat)RA   Rn   R   RF   (   RG   t   results_exposure_noconstraintR   R   R   RI   RA   R   RM   Rk   t   fitR"   R   t
   cov_paramsR   R!   (   RV   RW   RX   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   ä   s    (   R>   R?   Rd   R]   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRo   â   s   t   TestPoissonConstrained2ac           B   s   e  Z e d  „  ƒ Z RS(   c      
   C   s!  t  j |  _ d d d d d d d g |  _ d } t j | d	 t ƒ} t | j ƒ } t	 j
 | ƒ } t	 j | j j ƒ  ƒ | d <t	 j d
 d d d d d d g ƒ } d } t j | j ƒ j | ƒ } t | | j | j d | d i d d 6d d 6ƒ|  _ | j | d | d d d d ƒ|  _ d  S(   Ni   i   i   i   i   i    i   s'   deaths ~ logpyears + smokes + C(agecat)RA   g(¤¿à"Àg‰ÇM&qø?g»‡|~µî@gEµaÊ²@g£Z†0eY@gƒ	õÜŽò?g k¿?s%   C(agecat)[T.5] - C(agecat)[T.4] = 0.5RB   RC   RD   RE   RF   (   RG   t   results_noexposure_constraint2R   R   R   RI   RA   RJ   RK   R   RL   RM   RN   RO   RP   RQ   RR   RS   R   RT   RU   R   R!   (   RV   RW   RX   RY   RB   RZ   R[   R\   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   ÷   s     (   R>   R?   Rd   R]   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRs   õ   s   t   TestPoissonConstrained2bc           B   s   e  Z e d  „  ƒ Z RS(   c      	   C   s×   t  j |  _ d d d d d d g |  _ d } t j | d t d	 t d
 j ƒ} d } t j	 | j
 ƒ j | ƒ } t | | j | j d i d d 6d d 6ƒ|  _ | |  _ | j | d d d d d |  j d ƒ|  _ d  S(   Ni   i   i   i   i   i    s   deaths ~ smokes + C(agecat)RA   Rh   R   s%   C(agecat)[T.5] - C(agecat)[T.4] = 0.5RC   Ri   RE   RF   RD   RB   (   RG   t   results_exposure_constraint2R   R   R   RI   RA   Rk   RQ   RR   RK   RS   R   RT   RU   R   Rl   R!   (   RV   RW   RX   R[   R\   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]     s    
	(   R>   R?   Rd   R]   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRu     s   t   TestPoissonConstrained2cc           B   s   e  Z e d  „  ƒ Z RS(   c      	   C   sà   t  j |  _ d d d d d d g |  _ d } t j | d t d	 t j t d
 j	 ƒ ƒ} d } t
 j | j ƒ j | ƒ } t | | j | j d i d d 6d d 6ƒ|  _ | |  _ | j | d d d d d |  j d ƒ|  _ d  S(   Ni   i   i   i   i   i    s   deaths ~ smokes + C(agecat)RA   Rn   R   s%   C(agecat)[T.5] - C(agecat)[T.4] = 0.5RC   Ri   RE   RF   RD   RB   (   RG   Rv   R   R   R   RI   RA   R   RM   Rk   RQ   RR   RK   RS   R   RT   RU   R   Rl   R!   (   RV   RW   RX   R[   R\   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   3  s    
	(   R>   R?   Rd   R]   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRw   1  s   t   TestGLMPoissonConstrained1ac           B   s   e  Z e d  „  ƒ Z RS(   c         C   sÏ   d d l  m } t j |  _ d d d d d d d	 g |  _ d
 } t j | d t d t	 j
 ƒ  ƒ} d } t j | j ƒ j | ƒ } | | | j | j d i d d 6ƒ|  _ | |  _ | j | d d ƒ|  _ d  S(   Niÿÿÿÿ(   R   i   i   i   i   i   i    i   s'   deaths ~ logpyears + smokes + C(agecat)RA   t   familys   C(agecat)[T.4] = C(agecat)[T.5]RC   g»½×Ùß|Û=t   atol(   t   statsmodels.base._constraintsR   RG   RH   R   R   R   RI   RA   R   R   RQ   RR   RK   RS   RT   RU   R   Rl   R!   (   RV   R   RW   RX   R[   R\   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   O  s    	(   R>   R?   Rd   R]   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRx   M  s   t   TestGLMPoissonConstrained1bc           B   s    e  Z e d  „  ƒ Z d „  Z RS(   c      
   C   s  d d l  m } d d l m } d d l m } t j |  _ d d d d d	 d
 g |  _	 d } | j
 | d t d | j ƒ  d t j t d j ƒ ƒ} d } t j | j ƒ j | ƒ } | | | j | j d i d d 6ƒ|  _ | |  _ | j | d d ƒj |  _ d  S(   Niÿÿÿÿ(   R   (   R   (   R   i   i   i   i   i   i    s   deaths ~ smokes + C(agecat)RA   Ry   Rn   R   s   C(agecat)[T.4] = C(agecat)[T.5]RC   g»½×Ùß|Û=Rz   (   t+   statsmodels.genmod.generalized_linear_modelR   t   statsmodels.genmodR   R{   R   RG   Rj   R   R   RI   RA   R   R   RM   Rk   RQ   RR   RK   RS   RT   RU   R   Rl   R"   R!   (   RV   R   R   R   RW   RX   R[   R\   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   e  s    	c      
   C   s  |  j  } |  j } d } t j | d t d t d j ƒ} d } | j | d |  j  j d d d	 t d
 d ƒ} t	 | j | j d d ƒt	 | j
 | j
 d d ƒ| j ƒ  } t	 | | j ƒ  d d ƒt	 | j | d d ƒt	 | j | d d ƒt	 | j d t ƒ | j d t ƒ d d ƒd  S(   Ns   deaths ~ smokes + C(agecat)RA   Rh   R   s   C(agecat)[T.4] = C(agecat)[T.5]RB   RE   Ri   t   warn_convergenceRF   i    R   gê-™—q=g•dyáý¥=g»½×Ùß|Û=t   linear(   R!   R   R   RI   RA   Rk   R   R   t   FalseR   R   t   predictt   mut   fittedvaluest   True(   R   R   R   RW   RX   R[   t	   predicted(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   test_compare_glm_poisson|  s"    			$(   R>   R?   Rd   R]   R‡   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR|   c  s   t   CheckGLMConstrainedMixinc           B   s   e  Z d  „  Z RS(   c         C   se   |  j  } |  j } t | j | j d d d ƒt | j | j d d ƒt | j | j d d ƒd  S(   Ni   R   g»½×Ùß|Û=(   R   R!   R   t   aict   infocritt   bict   deviance(   R   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   test_glm  s
    		(   R>   R?   R   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRˆ   š  s   t   TestGLMLogitConstrained1c           B   s   e  Z e d  „  ƒ Z RS(   c         C   sŒ   t  d  ƒ |  _ t j |  _ t t j t j	 d t
 j ƒ  ƒ} d } | j | ƒ |  _ |  j j j |  j j j } } t | | | ƒ |  _ d  S(   NRy   s   x1 = 2.8(   t   slicet   NoneR   t   reslogitt   results_constraint1R   R   t   spector_dataRN   t   exogR   t   BinomialR   R!   Rl   RT   RU   R   (   RV   t   mod1R[   t   Rt   q(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   ±  s    (   R>   R?   Rd   R]   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRŽ   ¯  s   t   TestGLMLogitConstrained2c           B   sS   e  Z e d  „  ƒ Z d „  Z e j j d „  ƒ Z e j j d „  ƒ Z	 d „  Z
 RS(   c         C   s®   t  d  ƒ |  _ t j |  _ t t j t j	 d t
 j ƒ  ƒ} d } | j | d d ƒ|  _ |  j j j |  j j j } } t | | | d i d d 6ƒ|  _ | | f |  _ d  S(   NRy   s   x1 - x3 = 0Rz   g»½×Ùß|Û=RC   (   R   R   R   R‘   t   results_constraint2R   R   R“   RN   R”   R   R•   R   R!   Rl   RT   RU   R   t   constraints_rq(   RV   R–   R[   R—   R˜   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   Æ  s    "c         C   sd   |  j  } |  j } | j ƒ  } t | | j d d ƒt | j | d d ƒt | j | d d ƒd  S(   NRz   gH¯¼šò×z>R   g»½×Ùß|Û=(   R   R!   R‚   R   t
   predict_muRƒ   R„   (   R   R   R   R†   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   test_predict×  s    		c         C   s&   |  j  j ƒ  } t d | j k ƒ d  S(   Ns   linear equality constraints(   R!   R^   R   R_   (   R   R`   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRa   á  s    c         C   s*   |  j  j ƒ  } t d | j d k ƒ d  S(   Ns   linear equality constraintsi    (   R!   Rb   R   R_   (   R   R`   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyRc   ç  s    c         C   sg   |  j  } d d l m } | |  j j |  j ƒ } t | j | j d d ƒt | j | j d d ƒd  S(   Niÿÿÿÿ(   t   fit_constrained_wrapR   gíµ ÷Æ°>(   R   R{   Rž   R!   t   modelR›   R   R   (   R   R   Rž   t   res_wrap(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   test_fit_constrained_wrapí  s
    	(   R>   R?   Rd   R]   R   R0   Re   Rf   Ra   Rc   R¡   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR™   Ä  s
   	
t   TestGLMLogitConstrained2HCc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sÛ   t  d  ƒ |  _ t j |  _ t t j t j	 d t
 j ƒ  ƒ} d } i d d 6} d } | j | d | d | d	 d
 ƒ|  _ |  j j j |  j j j } } t | | | d i d
 d	 6| d 6| d 6ƒ|  _ | | f |  _ d  S(   NRy   t   HC0i    i   t   scaling_factors   x1 - x3 = 0t   cov_typet   cov_kwdsRz   g»½×Ùß|Û=RC   g„B!„ð?(   R   R   R   R‘   t   results_constraint2_robustR   R   R“   RN   R”   R   R•   R   R!   Rl   RT   RU   R   R›   (   RV   R–   R¥   R¦   R[   R—   R˜   (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR]   ù  s    (   R>   R?   Rd   R]   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyR¢   ÷  s   c          C   s!  d }  d } t  j | d t d t d j ƒ} | j ƒ  } d } d d  l } | j | j ƒ j | ƒ } | j	 | j
 } } | j | | d i d	 d
 6ƒ}	 d }
 t  j |
 d t ƒ} | j j GH| j ƒ  } | j | j ƒ j d ƒ } | j | j	 | j
 d i d d
 6ƒ} | d GH| d GHd  S(   Ns   deaths ~ smokes + C(agecat)s*   deaths ~ C(agecat) + C(smokes) : C(agecat)RA   Rh   R   s9   C(smokes)[T.1]:C(agecat)[3] = C(smokes)[T.1]:C(agecat)[4]iÿÿÿÿRC   RD   RE   s'   deaths ~ logpyears + smokes + C(agecat)s   C(agecat)[T.4] = C(agecat)[T.5]Ri   i    i   (   R   RI   RA   Rk   Rq   RQ   RR   RK   RS   RT   RU   R   R”   t   shape(   t   formula1t   formula2RX   t   res0Rl   RQ   R\   R—   R˜   t   resct	   formula1at   mod1at   res1at   lc_1at   resc1a(    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   junk  s"    "%	(;   t   __doc__t
   __future__R    t   statsmodels.compat.pythonR   t   numpyR   t   numpy.testingR   R   R   t   pandast   pdRQ   R0   t#   statsmodels.discrete.discrete_modelR   R}   R   R~   R   R{   R   t   statsmodels.tools.toolsR	   t   statsmodelsR
   RG   R   R   R‘   t   spectort   loadR   R“   R”   R9   t   sst   read_csvRA   t   astypet   intRM   t   objectR   R@   Rg   Rm   Ro   Rs   Ru   Rw   Rx   R|   Rˆ   RŽ   R™   R¢   R²   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/discrete/tests/test_constrained.pyt   <module>   sJ   F/ 73