ó
áp7]c           @   s“   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l j Z	 e
 Z y d  d l j Z Wn e k
 ro n Xd „  Z d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   predict_functionalNc            s   ‡  f d †  S(   Nc            s   t  j |  d ˆ  ƒ S(   Nid   (   t   npt
   percentile(   t   x(   t   q(    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   <lambda>   t    (    (   R   (    (   R   sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   pctl   s    t   TestPredFuncc           B   s­   e  Z e d  „  ƒ Z e d „  ƒ Z d „  Z e j j d „  ƒ Z	 e j j d „  ƒ Z
 e j j d „  ƒ Z e j j d „  ƒ Z e j j d „  ƒ Z e j j d „  ƒ Z RS(	   c         C   s,   t  r( d d l m } | d ƒ |  _ n  d  S(   Niÿÿÿÿ(   t   PdfPagess   predict_functional.pdf(   t
   pdf_outputt   matplotlib.backends.backend_pdfR	   t   pdf(   t   clsR	   (    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   setup_class   s    c         C   s   t  r |  j j ƒ  n  d  S(   N(   R
   R   t   close(   R   (    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   teardown_class   s    c         C   s   t  r |  j j | ƒ n  d  S(   N(   R
   R   t   savefig(   t   selft   fig(    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   close_or_save    s    c         C   sÖ  t  j j d ƒ d } t  j j d | ƒ } t  j j d | ƒ } t  j j d | ƒ } t  j j d d d | ƒ} t  j g  | D] } d | ^ q} ƒ } t  j j d | ƒ } d | d | d	 k d
 | d	 k | d | t  j j d | ƒ }	 t j i |	 d 6| d 6| d 6| d 6| d 6| d 6ƒ }
 d } t j	 j
 | d |
 ƒ} | j ƒ  } i t  j d 6t d ƒ d 6t  j d 6} i d	 d 6} t | d | | ƒ \ } } } i d d 6} t | d | | ƒ \ } } } t j ƒ  t j ƒ  } t j d
 d
 d d g ƒ } t j | | d d d ƒt j | | d d d ƒ| j ƒ  \ } } t j | | d ƒ t j d d d ƒt j d d d ƒt j d ƒ |  j | ƒ t j ƒ  t j ƒ  } t j d
 d
 d d g ƒ } t j | | d d d ƒt j | | d  d  … d f | d  d  … d  f d! d" ƒt j | | d d d ƒt j | | d  d  … d f | d  d  … d  f d! d" ƒ| j ƒ  \ } } t j | | d ƒ t j d d d ƒt j d d d ƒt j d ƒ |  j | ƒ d  S(#   Ni  iô  t   sizei    i   t   ABCDEg333333Ó?i   t   Bgš™™™™™¹?t   yt   x1t   x2t   x3t   x4t   x5sO   y ~ x1 + bs(x2, df=4) + x3 + x2*x3 + I(x1**2) + C(x4) + C(x4)*bs(x2, df=4) + x5t   datag      è?t   Cgffffffæ?gš™™™™™é?t   -t   labels   x4=Bs   x4=Cs   center rights   Focus variablei   s   Fitted means   Linear model predictioni   t   colort   grey(   R   t   randomt   seedt   normalt   randintt   asarrayt   pdt	   DataFramet   smt   OLSt   from_formulat   fitt   meanR   R    t   pltt   clft   figuret   axest   plott   get_legend_handles_labelst	   figlegendt   xlabelt   ylabelt   titleR   t   fill_between(   R   t   close_figurest   nR   R   R   R   t   iR   R   t   dft   fmlt   modelt   resultt	   summariest   valuest   pr1t   ci1t   fvals1t   pr2t   ci2t   fvals2R   t   axt   hat   lb(    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   test_formula$   sT    &E9'

99c      
   C   sa  t  j j d ƒ d } t  j j d | ƒ } t  j j d | ƒ } t  j j d | ƒ } | d | | | | | | t  j j d | ƒ } t j i | d 6| d 6| d 6| d 6ƒ } d	 } t j j | d
 | ƒ}	 |	 j	 ƒ  }
 i d d 6d d 6} i d d 6d d 6} t
 |
 d d | d | d d ƒ\ } } } t j ƒ  t j ƒ  } t j d d d d g ƒ } t j | | d d d d d d d ƒt j | d | d d d d d d d ƒt j | | d  d  … d f | d  d  … d f d d ƒ| j ƒ  \ } } t j | | d ƒ } | j t ƒ t j d d d  ƒt j d! d d  ƒt j d" ƒ |  j | ƒ d  S(#   Ni  iÈ   R   i   R   R   R   R   s    y ~ x1 + x2 + x3 + x1*x2 + x2*x3R   i   i    RC   t   values2t	   ci_methodt   scheffegš™™™™™¹?gq=
×£på?gš™™™™™é?R    R!   t   EstimateR"   t   oranget   lwi   t   Trutht   limeR#   s   center rights   Focus variablei   s   Mean contrasts   Linear model contrast(   R   R$   R%   R&   R)   R*   R+   R,   R-   R.   R    R0   R1   R2   R3   R4   R:   R5   R6   t
   draw_framet   FalseR7   R8   R9   R   (   R   R;   R<   R   R   R   R   R>   R?   R@   RA   RC   RN   t   prt   cbt   fvalsR   RJ   RK   RL   t   leg(    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   test_lm_contrastY   s6    5+
%)9c      
   C   s  t  j j d ƒ d } t  j j d | ƒ } t  j j d | ƒ } t  j j d | ƒ } d d | d | d | d | | } t  j j t  j | ƒ d t | ƒ ƒ} t j i | d 6| d 6| d 6| d	 6ƒ } d
 }	 t	 j
 j |	 d | d t	 j j ƒ  ƒ}
 |
 j ƒ  } i d d 6d d	 6} i d d 6d d	 6} t | d d | d | d d ƒ\ } } } t j ƒ  t j ƒ  } t j d d d d g ƒ } t j | | d d d d d d d ƒt j | d d | d d d d d d d ƒt j | | d  d  … d f | d  d  … d f d d ƒ| j ƒ  \ } } t j | | d  ƒ } | j t ƒ t j d! d d" ƒt j d# d d" ƒt j d$ ƒ |  j | ƒ d  S(%   Ni  i2   R   i   gš™™™™™¹?R   R   R   R   s   y ~ x1 + x2 + x3 + x1*x2R   t   familyi   i    RC   RN   RO   t   simultaneousgq=
×£på?gš™™™™™é?R    R!   RQ   R"   RR   RS   i   gš™™™™™É?RT   RU   R#   s   center rights   Focus variablei   s   Linear predictor contrasts   Poisson regression contrast(   R   R$   R%   R&   t   poissont   expt   lenR)   R*   R+   t   GLMR-   t   familiest   PoissonR.   R    R0   R1   R2   R3   R4   R:   R5   R6   RV   RW   R7   R8   R9   R   (   R   R;   R<   R   R   R   t   mnR   R>   R?   R@   RA   RC   RN   RX   RY   RZ   R   RJ   RK   RL   R[   (    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   test_glm_formula_contrast|   s8    *'+'
%-9c         C   sº  t  j j d ƒ d } t  j j d | d f ƒ } d | d  d  … d f <xld* D]d} | d k rŸ t  j j d
 d | ƒ} t j j ƒ  } d
 } t  j d
 ƒ } nˆ | d k rè d t  j j	 d | ƒ d k  } t j j
 ƒ  } d } d } n? | d	 k r't  j j d | ƒ } t j j ƒ  } d } d } n  t j | | d | ƒ}	 |	 j ƒ  }
 xdt t f D]V} | rj| n | } i d d 6d d 6} i t  j d 6} t |
 d d | d | d | ƒ\ } } } t |
 d d | d | d d d | ƒ\ } } } t j ƒ  t j ƒ  } t j d d d d g ƒ } t j | | d d d d d ƒt j | | t  j t | ƒ ƒ d d d d d ƒt j | | d  d  … d f d d  d d! ƒt j | | d  d  … d f d d  ƒt j | | d  d  … d f d d" d d# ƒt j | | d  d  … d f d d" ƒ| j ƒ  \ } } t j | | d$ ƒ } | j t ƒ t j d% d d& ƒ| rwt j d' d d& ƒn t j d( d d& ƒt j d) | j ƒ  ƒ |  j  | ƒ qXWqN Wd  S(+   NiÙ  id   R   i   i   i    R_   t   binomialt   gaussiani   g      à?R]   t   constR   R   R   RC   RB   t   linearRO   R^   gš™™™™™¹?gÂõ(\â?gš™™™™™é?R    R"   t   blackR!   RQ   t   purpleRT   t   blues   Pointwise CBt   greens   Simultaneous CBs   center rights   Focus variablei   s   Linear predictors   Fitted means   %s family prediction(   R_   Rg   Rh   (!   R   R$   R%   R&   R_   R+   Rc   Rd   t   logt   uniformt   Binomialt   GaussianRb   R.   RW   t   TrueR/   R    R0   R1   R2   R3   R4   t   onesRa   R5   R6   RV   R7   R8   R9   t
   capitalizeR   (   R   R;   R<   R   t   fam_nameR   t   famt	   true_meant   true_lpR@   RA   Rj   t   trueRC   RB   t   pred1t   cb1RF   t   pred2t   cb2RI   R   RJ   RK   RL   R[   (    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   test_scb    sd    		
+,&,&c      	   C   sž  t  j j d ƒ d } t  j j d | ƒ } t  j j d | ƒ } t  j j d d d | ƒ} t  j g  | D] } d | ^ qh ƒ } d d | d	 | d
 k } d d t  j | ƒ } d t  j j d | ƒ | k  }	 t j	 i |	 d 6| d 6| d 6| d 6ƒ }
 d } t
 j j | d t
 j j ƒ  d |
 ƒ} | j ƒ  } i t  j d 6} xOt t f D]A} i d
 d 6} t | d | | d | ƒ\ } } } i d d 6} t | d | | d | ƒ\ } } } d d | d	 d } d d | d	 } | sd d t  j | ƒ } d d t  j | ƒ } n  t j ƒ  t j ƒ  } t j d d d d g ƒ } t j | | d d d ƒt j | | d d d ƒt j | | d d d ƒt j | | d d d ƒ| j ƒ  \ } } t j | | d ƒ t j d d d  ƒ| rt j d! d d  ƒn t j d" d d  ƒt j d# ƒ |  j | ƒ t j ƒ  t j ƒ  } t j d d d d g ƒ } t j | | d d d d$ d% ƒt j | | d  d  … d f | d  d  … d f d$ d& ƒt j | | d d d d$ d' ƒt j | | d  d  … d f | d  d  … d f d$ d& ƒ| j ƒ  \ } } t j | | d ƒ t j d d d  ƒ| rit j d! d d  ƒn t j d" d d  ƒt j d# ƒ |  j | ƒ qUWd  S((   Ni  iô  R   i    i   t   ABCiÿÿÿÿg      à?i   R   i   R   R   R   R   s   y ~ x1 + I(x1**2) + x2 + C(x3)R]   R   Rj   R   gš™™™™™¹?gffffffæ?gš™™™™™é?R    R!   s   x3=Bs   x3=Cs   x3=B (exact)s   x3=C (exact)s   center rights   Focus variablei   s   Fitted linear predictors   Fitted probabilitys   Binomial GLM predictionR"   RR   R#   RU   (    R   R$   R%   R&   R'   R(   R`   Rp   R)   R*   R+   Rb   R-   Rc   Rq   R.   R/   RW   Rs   R    R0   R1   R2   R3   R4   R5   R6   R7   R8   R9   R   R:   (   R   R;   R<   R   R   R   R=   t   lin_predt   probR   R>   R?   R@   RA   RB   Rj   RC   RD   RE   RF   RG   RH   RI   t   exact1t   exact2R   RJ   RK   RL   (    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   test_glm_formulaà   sl    &+'$$

99c         C   sq  t  j j d ƒ d } t  j j d | ƒ } t  j j d | ƒ } t  j j d | ƒ } | | t  j j d | ƒ } t  j | | | f ƒ j } t j | | ƒ } | j ƒ  }	 i t	 d ƒ d 6}
 i d d 6} t
 |	 d |
 | ƒ \ } } } i d	 d 6} t
 |	 d |
 | ƒ \ } } } t j ƒ  t j ƒ  } t j d
 d
 d d g ƒ } t j | | d d d d d d d d d ƒt j | | d d d d d d d d d ƒ| j ƒ  \ } } t j | | d ƒ } | j t ƒ t j d d d ƒt j d d d ƒt j d ƒ |  j | ƒ t j ƒ  t j ƒ  } t j d
 d
 d d g ƒ } t j | | d d d d d d d d d ƒt j | | d  d  … d f | d  d  … d f d d ƒt j | | d d d d d d d d d ƒt j | | d  d  … d f | d  d  … d f d d ƒ| j ƒ  \ } } t j | | d ƒ t j d d d ƒt j d d d ƒt j d ƒ |  j | ƒ d  S(   Ni"  iÈ   R   g      è?R   i   R   R   iÿÿÿÿgš™™™™™¹?gffffffæ?gš™™™™™é?R    R!   s   x2=1RS   i   t   alphag333333ã?R"   RR   s   x2=-1RU   s   center rights   Focus variablei   s   Fitted means   Linear model predictioni    R#   (   R   R$   R%   R&   t   vstackt   TR+   R,   R.   R   R    R0   R1   R2   R3   R4   R5   R6   RV   RW   R7   R8   R9   R   R:   (   R   R;   R<   R   R   R   R   t   exogR@   RA   RB   RC   RD   RE   RF   RG   RH   RI   R   RJ   RK   RL   R[   (    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   test_noformula_prediction%  sN    
++
+9+9(   t   __name__t
   __module__t   classmethodR   R   R   t   pytestt   markt
   matplotlibRM   R\   Rf   R   R…   RŠ   (    (    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyR      s   	5#$@E(   t&   statsmodels.sandbox.predict_functionalR    t   numpyR   t   pandasR)   RŽ   t   statsmodels.apit   apiR+   RW   R
   t   matplotlib.pyplott   pyplotR0   t   ImportErrorR   t   objectR   (    (    (    sP   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_predict_functional.pyt   <module>   s   	