ó
áp7]c           @   sÊ  d  d l  Z d  d l Z d  d l j Z d  d l m Z m Z d  d l	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z m Z d  d l m Z y d  d l j Z Wn e k
 rÛ n Xe Z  e  rd  d l! m" Z" e" d ƒ Z# n d Z# d „  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 S(   iÿÿÿÿN(   t   assert_equalt   assert_raises(   t   plot_fitt	   plot_ccprt   plot_regress_exogt   abline_plott   plot_partregress_gridt   plot_ccpr_gridt
   add_lowesst   plot_added_variablet   plot_partial_residualst   plot_ceres_residualst   influence_plott   plot_leverage_resid2(   t   Seriest	   DataFrame(   t   assert_array_less(   t   PdfPagess   test_regressionplots.pdfc         C   s   t  r |  j | ƒ n  d  S(   N(   t
   pdf_outputt   savefig(   t   pdft   fig(    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   close_or_save   s    t   TestPlotc           B   sk   e  Z e 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  d } d } t  j d d | ƒ } d d t  j j | ƒ } t  j | | t  j d | ƒ | d d t  j | ƒ f } d d d d	 d
 g } t  j | | ƒ } | | t  j j d | ƒ } t	 j
 t  j | | f d t ƒ}	 t	 j | |	 ƒ j ƒ  |  _ t	 j | | ƒ j ƒ  |  _ d  S(   Nid   g      à?i    i   i   i   i   i   g{®Gáz¤¿g      @t   sizet   prepend(   t   npt   linspacet   randomt   randnt   c_t   sint   onest   dott   normalt   smt   add_constantt   Falset   OLSt   fitt   rest   res_true(
   t   clst   nsamplet   sigt   x1t   x2t   xt   betat   y_truet   yt   exog0(    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   setup_class"   s    :"c   	      C   sò   |  j  } t | d d d  ƒ} | j j d  d  … d f } | j } | j j } | j d j ƒ  d j	 ƒ  \ } } t
 j j | | ƒ t
 j j | | ƒ | j d j ƒ  d j	 ƒ  \ } } t
 j j | | ƒ t
 j j | | ƒ t t | ƒ d  S(   Ni    R1   i   (   R(   R   t   Nonet   modelt   exogt   fittedvaluest   endogt   axest	   get_linest   get_dataR   t   testingR    R   R   (	   t   selft   close_figuresR(   R   t   x0t   yfR2   t   px1t   px2(    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_plot_fit1   s    		##c         C   s¿   |  j  } t | d d d  ƒt | d d d g ƒt |  j d d ƒt | d d ƒt | d d ƒt | d d g ƒt | d d d g ƒ} x | j D] } t	 | ƒ qš Wt
 t | ƒ d  S(	   Ni    R1   t   exog_idxi   t   gridi   i   (   i   i   (   R(   R   R5   R   R)   R   R   R   R:   R   R   R   (   R>   R?   R(   R   t   ax(    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_plot_othE   s    	c         C   s„  |  j  j ƒ  } t |  j  ƒ } t t | t j ƒ t ƒ y\ | j d j	 ƒ  d j
 } t j | j d ƒ } t j | | ƒ j ƒ  j } t | d ƒ Wn* t k
 r¿ d d  l } | j d ƒ n Xt |  j  d d ƒ} t t | t j ƒ t ƒ ye | j d j	 ƒ  d j
 } t j t j | j d ƒ ƒ } t j | | ƒ j ƒ  j } t | d ƒ Wn t k
 rfn Xt t t |  j  d d ƒd  S(   Ni    gê-™—q=iÿÿÿÿs+   test not compatible with matplotlib versiont	   criteriont   DFFITSt   unknown(   R(   t   get_influenceR   R    t
   isinstancet   pltt   Figuret   TrueR:   t   get_childrent   _sizesR#   R$   t   cooks_distanceR&   R'   t   ssrR   t   AttributeErrort   warningst   warnR   t   abst   dffitsR   t
   ValueError(   R>   R?   t   inflR   t   sizest   exRT   RV   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_plot_influenceV   s*    c         C   s,   t  |  j ƒ } t t | t j ƒ t ƒ d  S(   N(   R   R(   R    RM   RN   RO   RP   (   R>   R?   R   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_plot_leverage_resid2q   s    (   t   __name__t
   __module__t   classmethodR4   t   pytestt   markt
   matplotlibRD   RH   R^   R_   (    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyR       s
   t   TestPlotPandasc           B   s   e  Z d  „  Z RS(   c         C   s[  d } d } t  j d d | ƒ } d d t  j j | ƒ } t  j | | t  j d | ƒ | d d t  j | ƒ f } d d d d	 d
 g } t  j | | ƒ } | | t  j j d | ƒ } t	 j
 t  j | | f d t ƒ}	 t |	 d d d d g ƒ}	 t | d d ƒ} t	 j | |	 ƒ j ƒ  }
 |
 |  _ t |	 d d d d g ƒ} | | d <| |  _ d  S(   Nid   g      à?i    i   i   i   i   i   g{®Gáz¤¿g      @R   R   t   columnst   constt   var1t   var2t   namet   outcomeR2   (   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R   R   R&   R'   R(   t   data(   R>   R+   R,   R-   R.   t   XR0   R1   R2   R3   R(   Rm   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   setupx   s     :"	
(   R`   Ra   Ro   (    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyRf   w   s   t   TestPlotFormulac           B   s   e  Z e j j d  „  ƒ Z RS(   c         C   sh   d d l  m } | d d |  j ƒj ƒ  } t | d ƒ } | d d |  j ƒj ƒ  } t | d ƒ } d  S(   Niÿÿÿÿ(   t   olss   y~var1-1Rm   Ri   s   y~var1(   t   statsmodels.formula.apiRq   Rm   R'   R   (   R>   R?   Rq   R(   R   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_one_column_exogŒ   s
    (   R`   Ra   Rc   Rd   Re   Rs   (    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyRp   Š   s   t
   TestABLinec           B   s€   e  Z e 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  j j d ƒ t j t  j j d d d d ƒƒ } t  j | d d g ƒ t  j j d d d d ƒ} t j | | ƒ j ƒ  } | |  _	 | |  _
 | |  _ d  S(   Ni90  i    i   R   i   i   g      @(   R   R   t   seedR#   R$   R"   R!   R&   R'   Rn   R2   t   mod(   R*   Rn   R2   Rv   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyR4   —   s    $1		c         C   sV   t  d |  j ƒ } | j d } | j |  j d  d  … d f |  j ƒ t t | ƒ d  S(   Nt   model_resultsi    i   (   R   Rv   R:   t   scatterRn   R2   R   R   (   R>   R?   R   RG   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_abline_model¡   s    &c         C   sj   t  j ƒ  } | j d ƒ } | j |  j d  d  … d f |  j ƒ t d |  j d | ƒ } t t	 | ƒ d  S(   Nio   i   Rw   RG   (
   RN   t   figuret   add_subplotRx   Rn   R2   R   Rv   R   R   (   R>   R?   R   RG   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_abline_model_ax¨   s
    &c         C   s>   |  j  } | j \ } } t d | d | ƒ } t t | ƒ d  S(   Nt	   interceptt   slope(   Rv   t   paramsR   R   R   (   R>   R?   Rv   R}   R~   R   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_abline_ab°   s    	c         C   s…   |  j  } | j \ } } t j ƒ  } | j d ƒ } | j |  j d  d  … d f |  j ƒ t d | d | d | ƒ } t	 t
 | ƒ d  S(   Nio   i   R}   R~   RG   (   Rv   R   RN   Rz   R{   Rx   Rn   R2   R   R   R   (   R>   R?   Rv   R}   R~   R   RG   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_abline_ab_ax·   s    	&c         C   s¿   |  j  } | j \ } } t j ƒ  } | j d ƒ } | j |  j d  d  … d f |  j ƒ t d | d | d | ƒ t d | d d | d | ƒ | j	 ƒ  } | j
 d ƒ j ƒ  t t | ƒ d  S(   Nio   i   R}   R~   RG   i   i    (   Rv   R   RN   Rz   R{   Rx   Rn   R2   R   R;   t   popt   removeR   R   (   R>   R?   Rv   R}   R~   R   RG   t   lines(    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_abline_removeÁ   s    	&(   R`   Ra   Rb   R4   Rc   Rd   Re   Ry   R|   R€   R   R…   (    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyRt   •   s   

t   TestABLinePandasc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sÆ   t  j j d ƒ t j t  j j d d d d ƒƒ } t  j | d d g ƒ t  j j d d d d ƒ} | |  _ | |  _ t	 | d d	 d
 g ƒ} t
 | d d ƒ} t j | | ƒ j ƒ  } | |  _ d  S(   Ni90  i    i   R   i   i   g      @Rg   Rh   t   someXRk   Rl   (   R   R   Ru   R#   R$   R"   R!   Rn   R2   R   R   R&   R'   Rv   (   R*   Rn   R2   Rv   (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyR4   Ð   s    $1		(   R`   Ra   Rb   R4   (    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyR†   Ï   s   t   TestAddedVariablePlotc           B   s   e  Z e j j d  „  ƒ Z RS(   c         C   s  t  j j d ƒ d } d } t  j j d | | f ƒ } d | d  d  … d f d | d  d  … d f d	 } t  j | ƒ } t  j j | ƒ } t j | | d
 t j j	 ƒ  ƒ} | j
 ƒ  }	 xCd D];}
 x2t t f D]$} xd D]} d d g | } xú d D]ò } | d k r5t |	 |
 d | d | ƒ} d } n! |	 j |
 d | d | ƒ} d } | j ƒ  d } t | ƒ | j d d d d g ƒ d d d g |
 } | d 7} | | d 7} | | d 7} | d | 7} | j | ƒ t t | ƒ | ƒ  qÿ Wqâ WqÕ WqÂ Wd  S(   Niv  id   i   R   i   i    gš™™™™™É?i   i   t   familyt   resid_deviancet   resid_responset
   Unweightedt   Weightedt   use_glm_weightst
   resid_types   Added variable plots&   Added variable plot (called as method)gš™™™™™¹?gš™™™™™é?gffffffæ?s   Linear effect, slope=1s   Quadratic effects	   No effects   
Poisson regression
s   
s   Using '%s' residuals(   i    i   i   (   RŠ   R‹   (   i    i   (   R   R   Ru   R"   t   expt   poissonR#   t   GLMt   familiest   PoissonR'   R%   RP   R	   t   get_axesR   t   set_positiont	   set_titleR   R   (   R>   R?   t   nt   pR7   t   lin_predt   expvalR9   R6   t   resultst	   focus_colRŽ   R   t
   weight_strt   jR   t   tiRG   t
   effect_str(    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_added_variable_poissonß   sF    6!			

(   R`   Ra   Rc   Rd   Re   R¢   (    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyRˆ   Ý   s   t   TestPartialResidualPlotc           B   s   e  Z e j j d  „  ƒ Z RS(   c         C   s«  t  j j d ƒ d } d } t  j j d | | f ƒ } d | d  d  … d f <d | d  d  … d f d | d  d  … d	 f d	 } t  j | ƒ } t  j j | ƒ } t j | | d
 t j j	 ƒ  ƒ} | j
 ƒ  }	 xÓ d D]Ë }
 xÂ d D]º } | d k r	t |	 |
 ƒ } n |	 j |
 ƒ } | j ƒ  d } t | ƒ | j d d d d g ƒ d d d g |
 } d } | d k r}| d 7} n  | j | d | ƒ t t | ƒ qå WqØ Wd  S(   Niv  id   i   R   i   i    i   gš™™™™™É?i   R‰   gš™™™™™¹?gš™™™™™é?g¤p=
×£è?t	   Intercepts   Linear effect, slope=1s   Quadratic effects   Partial residual plots    (called as method)s   
Poisson regression
(   i   i   (   i    i   (   R   R   Ru   R"   R   R‘   R#   R’   R“   R”   R'   R
   R•   R   R–   R—   R   R   (   R>   R?   R˜   R™   R7   Rš   R›   R9   R6   Rœ   R   RŸ   R   RG   R¡   R    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_partial_residual_poisson  s4    6!
(   R`   Ra   Rc   Rd   Re   R¥   (    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyR£     s   t   TestCERESPlotc           B   s   e  Z e j j d  „  ƒ Z RS(   c         C   s«  t  j j d ƒ d } d } t  j j d | | f ƒ } d | d  d  … d f <d | d  d  … d f d | d  d  … d	 f d	 } t  j | ƒ } t  j j | ƒ } t j | | d
 t j j	 ƒ  ƒ} | j
 ƒ  }	 xÓ d D]Ë }
 xÂ d D]º } | d k r	t |	 |
 ƒ } n |	 j |
 ƒ } | j ƒ  d } t | ƒ | j d d d d g ƒ d d d g |
 } d } | d k r}| d 7} n  | j | d | ƒ t t | ƒ qå WqØ Wd  S(   Niv  id   i   R   i   i    i   gš™™™™™É?i   R‰   gš™™™™™¹?gš™™™™™é?g¤p=
×£è?R¤   s   Linear effect, slope=1s   Quadratic effects
   CERES plots    (called as method)s   
Poisson regression
(   i   i   (   i    i   (   R   R   Ru   R"   R   R‘   R#   R’   R“   R”   R'   R   R•   R   R–   R—   R   R   (   R>   R?   R˜   R™   R7   Rš   R›   R9   R6   Rœ   R   RŸ   R   RG   R¡   R    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   test_ceres_poisson5  s4    6!
(   R`   Ra   Rc   Rd   Re   R§   (    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyR¦   3  s   (/   t   numpyR   Rc   t   statsmodels.apit   apiR#   t   numpy.testingR    R   t$   statsmodels.graphics.regressionplotsR   R   R   R   R   R   R   R	   R
   R   R   R   t   pandasR   R   t   numpy.testing.utilsR   t   matplotlib.pyplott   pyplotRN   t   ImportErrorR%   R   t   matplotlib.backends.backend_pdfR   R   R5   R   t   objectR   Rf   Rp   Rt   R†   Rˆ   R£   R¦   (    (    (    sN   lib/python2.7/site-packages/statsmodels/graphics/tests/test_regressionplots.pyt   <module>   s0   R	W:2$