ó
áp7]c           @   sž  d  Z  d d l m Z d d l Z d d l Z d d l m	 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 e j j e j j e ƒ ƒ Z d	 Z e j j e d
 e ƒ Z e j e d d ƒZ d Z e j j e d
 e ƒ Z e j e d d ƒZ d „  Z  d e! f d „  ƒ  YZ" d „  Z# d e" f d „  ƒ  YZ$ d e" f d „  ƒ  YZ% d e" f d „  ƒ  YZ& d e" f d „  ƒ  YZ' d S(   s=   
Created on Tue Jun 12 13:18:12 2018

Author: Josef Perktold
iÿÿÿÿ(   t   testingN(   t   assert_allclose(   t   OLS(   t   GLM(   t   families(   t   MLEInfluences   binary_constrict.csvt   resultst	   index_coli    s   results_influence_logit.csvc          C   sd  t  }  t j t ƒ } t |  d |  d d d g d t j ƒ  ƒj d t d d ƒ } | j	 d	 t
 ƒ } d
 } t | j | d  d  … d d … f d d ƒt | j | d  d  … d d … f | j j d d ƒt | j d | | d  d  … d f d d ƒt | j | d  d  … d f d d ƒ| j d d
 d | j } t | | d  d  … d f d d ƒd  S(   Nt	   constrictt   constt   log_ratet   log_volumnet   familyt
   attach_wlst   atolg»½×Ùß|Û=t   observedi   i   i   g-Cëâ6?i    giUMu?i   i   i	   (   t   data_bint   npt   asarrayt   results_sas_dfR   R   t   Binomialt   fitt   Truet   get_influencet   FalseR   t   dfbetast   d_paramst   bset   valuest   cooks_distancet   hat_matrix_diag(   t   dft   results_sast   rest   inflt   k_varst   c_bar(    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyt   test_influence_glm_bernoulli!   s    !,6.&t   InfluenceCompareExactc           B   s;   e  Z d  „  Z e j j e j j d „  ƒ ƒ Z d „  Z RS(   c         C   sñ   |  j  } |  j } t | j | j d d ƒt | j | j d d d d ƒt |  d d ƒ } t | j d | j d d | ƒt | j | j d d d d ƒt | j | j d d d d ƒt | j	 | j	 d d ƒt | j
 | j
 d d ƒd  S(	   Nt   rtolgê-™—q=R   gH¯¼šò×z>t   cd_rtoli    g•Ö&è.>g:Œ0âŽy5>(   t   infl1t   infl0R   R   t   resid_studentizedt   getattrR   R   R   t   d_fittedvaluest   d_fittedvalues_scaled(   t   selfR)   R*   R(   (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyt   test_basics9   s    				c         C   s6  |  j  } |  j } | j d t ƒ } | j d t ƒ } | j d d d d d ƒ} | j d d d d d ƒ} | j d d d	 d d d d ƒ} | j d d d	 d d d d ƒ} | j d
 d d	 d d d d ƒ} | j d
 d d	 d d d d ƒ} | j d d d	 d d d d ƒ} | j d d d	 d d d d ƒ} d  S(   Nt   externalt   residt	   thresholdgš™™™™™É?t   titlet    t   dfbetat   idxi   t   cookt   hat(   R)   R*   t   plot_influenceR   t
   plot_index(   R/   t   close_figuresR)   R*   t   fig(    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyt
   test_plotsL   s    		!!!!!c         C   s]   |  j  } |  j } | j ƒ  } | j ƒ  } t | j | j d d ƒt j | j | j ƒ d  S(   NR'   g-Cëâ6
?(   R)   R*   t   summary_frameR   R   t   pdtt   assert_index_equalt   index(   R/   R)   R*   t   df0t   df1(    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyt   test_summaryb   s    		(	   t   __name__t
   __module__R0   t   pytestt   markt   smoket
   matplotlibR>   RE   (    (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyR&   6   s   		c         C   sª   |  j  } t | j d | j ƒ } | j } | j d d | j d j ƒ  k } | } | j | d } t | j | | | d d ƒt | j	 | | d | d d ƒd  S(	   Nt   _resultsi    i   t   paramsR   gš™™™™™©?R'   g{®Gáz„?(
   R)   R,   R   t	   _res_loooR   t   stdRM   R   R   t
   params_one(   R/   R"   R   t   res_looot	   mask_inflt   mask_lowt   diff_params(    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyt   _check_loool   s    		$t   TestInfluenceLogitGLMMLEc           B   s    e  Z e d  „  ƒ Z d „  Z RS(   c         C   sf   t  } t | d | d d d g d t j ƒ  ƒj d t d d ƒ } | j ƒ  |  _ t | ƒ |  _	 d  S(	   NR   R	   R
   R   R   R   R   g»½×Ùß|Û=(
   R   R   R   R   R   R   R   R)   R   R*   (   t   clsR   R!   (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyt   setup_class{   s
    !c         C   s   t  |  ƒ d  S(   N(   RU   (   R/   (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyt	   test_looo„   s    (   RF   RG   t   classmethodRX   RY   (    (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyRV   y   s   	t   TestInfluenceBinomialGLMMLEc           B   s)   e  Z e d  „  ƒ Z d „  Z d „  Z RS(   c         C   sÜ   t  j d d d d d g ƒ } d t  j t | ƒ ƒ } t  j d t | ƒ d ƒ } t  j t  j t | ƒ ƒ | f ƒ } t  j | | | f ƒ } t | | d t j ƒ  ƒj	 ƒ  } | j
 ƒ  |  _ t | ƒ |  _ d	 |  _ d  S(
   Ni    i   i   i   i   i(   i   R   g-Cëâ6
?(   R   t   arrayt   onest   lent   aranget   column_stackR   R   R   R   R   R)   R   R*   R(   (   RW   t   yit   nit   xit   exogt   endogR!   (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyRX   ‹   s    $!c         C   s   t  |  ƒ d  S(   N(   RU   (   R/   (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyRY   ™   s    c         C   sg   |  j  } d d d d d g } d d d d	 d
 g } t | j | d d ƒt | j d | d d ƒd  S(   Ng_„ù$Ð?gïT¾ˆµÐ?gsú@2@£ô?gì	Ä(œ¡µ?g¨ê=x‘E×?gøVÎv§šÐ?gåÁl@¨×?gxïXÁ ¡Ö?g¸ÞÀ²ÍèØ?g~]+Ô¤ä?R'   gñhãˆµøÔ>i    gñhãˆµøä>(   R)   R   R   R   (   R/   R)   t   cooks_dR9   (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyt   test_rœ   s    			(   RF   RG   RZ   RX   RY   Rg   (    (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyR[   ˆ   s   	t   TestInfluenceGaussianGLMMLEc           B   s    e  Z e d  „  ƒ Z d „  Z RS(   c         C   sŒ   d d l  m } | ƒ  \ } } } t j t j | | f ƒ d d j ƒ  d | ƒ} t j d | ƒ j	 ƒ  } | j
 ƒ  |  _ t | ƒ |  _ d  S(   Ni   (   t   get_duncan_datat   columnss   y const var1 var2RB   s   y ~ const + var1 + var2 - 1(   t   test_diagnosticRi   t   pdt	   DataFrameR   R`   t   splitR   t   from_formulaR   R   R)   R   R*   (   RW   Ri   Re   Rd   t   labelst   dataR!   (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyRX   µ   s    	c         C   s   t  |  ƒ d  S(   N(   RU   (   R/   (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyRY   Ã   s    (   RF   RG   RZ   RX   RY   (    (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyRh   ³   s   t   TestInfluenceGaussianGLMOLSc           B   s)   e  Z e d  „  ƒ Z d „  Z d „  Z RS(   c         C   s¤   d d l  m } | ƒ  \ } } } t j t j | | f ƒ d d j ƒ  d | ƒ} t j d | ƒ j	 ƒ  } t
 j d | ƒ j	 ƒ  } | j ƒ  |  _ | j ƒ  |  _ d  S(   Ni   (   Ri   Rj   s   y const var1 var2RB   s   y ~ const + var1 + var2 - 1(   Rk   Ri   Rl   Rm   R   R`   Rn   R   Ro   R   R   R   R)   R*   (   RW   Ri   Re   Rd   Rp   Rq   t   res0t   res1(    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyRX   É   s    	c         C   sî   |  j  } |  j } t | j | j d d ƒt | j | j d d d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d d d ƒt | j	 | j
 d d d ƒt | j | j d d ƒt | j | j	 d d ƒd  S(	   NR'   gê-™—q=R   gH¯¼šò×z>gš™™™™™¹?g•Ö&è.>g›+¡†›„=i    (   R)   R*   R   R   R+   R   R   R   R6   R.   t   dffits_internalt	   d_linpredR-   t   d_linpred_scaled(   R/   R)   R*   (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyR0   Ö   s    						c         C   sw   |  j  } |  j } | j ƒ  } | j ƒ  } d d d d g } t | | j | | j d d ƒt j | j | j ƒ d  S(   NRf   t   standard_residt   hat_diagRu   R'   gñhãˆµøä>(   R)   R*   R?   R   R   R@   RA   RB   (   R/   R)   R*   RC   RD   t   cols(    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyRE   ï   s    		!(   RF   RG   RZ   RX   R0   RE   (    (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyRr   Ç   s   	((   t   __doc__t   statsmodels.compat.pandasR    R@   t   os.patht   ost   numpyR   t   numpy.testingR   t   pandasRl   RH   t#   statsmodels.regression.linear_modelR   t+   statsmodels.genmod.generalized_linear_modelR   t   statsmodels.genmodR   t$   statsmodels.stats.outliers_influenceR   t   patht   abspatht   dirnamet   __file__t   cur_dirt	   file_namet   joint	   file_patht   read_csvR   R   R%   t   objectR&   RU   RV   R[   Rh   Rr   (    (    (    sE   lib/python2.7/site-packages/statsmodels/stats/tests/test_influence.pyt   <module>   s0   	6	+