
p7]c           @   sk  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
 m Z d d l Z d d l m Z d d l m Z m Z m Z m Z m Z m Z d d l m Z m Z m Z m Z d d	 l m Z m Z 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 d l$ m( Z( e j) d    Z* d   Z+ d   Z, d   Z- d   Z. d   Z/ d   Z0 d   Z1 d   Z2 d   Z3 d   Z4 d   Z5 d d  Z6 d   Z7 d   Z8 d   Z9 d    Z: d!   Z; d"   Z< d#   Z= d$   Z> d%   Z? d&   Z@ d'   ZA d(   ZB d)   ZC d*   ZD d+   ZE d,   ZF e jG jH d-    ZI d.   ZJ d S(/   s@   
unit test for GAM

Author: Luca Puggini

Created on 08/07/2015
i(   t   divisionN(   t   assert_allclose(   t
   block_diag(   t   matrix_sqrt(   t   UnivariatePolynomialSmoothert   PolynomialSmoothert   BSplinest   GenericSmootherst   UnivariateCubicSplinest   CyclicCubicSplines(   t   GLMGamt   LogitGamt   make_augmented_matrixt   penalized_wls(   t   MultivariateGAMCVt   MultivariateGAMCVPatht   _split_train_test_smoothers(   t   UnivariateGamPenaltyt   MultivariateGamPenalty(   t   KFold(   t   GLM(   t   Gaussian(   t   lmc         C   s   d d t  j |   S(   Ng      ?(   t   npt   exp(   t   x(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   <lambda>!   t    c          C   s_   d }  t  j d d |   } d | d | } | | j   8} d g } t | |  } | | f S(   s  A polynomial of degree 4

    poly = ax^4 + bx^3 + cx^2 + dx + e
    second der = 12ax^2 + 6bx + 2c
    integral from -1 to 1 of second der^2 is
        (288 a^2)/5 + 32 a c + 8 (3 b^2 + c^2)
    the gradient of the integral is der
        [576*a/5 + 32 * c, 48*b, 32*a + 16*c, 0, 0]

    Returns
    -------
    poly : smoother instance
    y : ndarray
        generated function values, demeaned

    i'  ii   i   i   i   (   R   t   linspacet   meanR   (   t   nR   t   yt   degreet   pol(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   polynomial_sample_data$   s    	c         C   sV   |  \ } } } } d | d d d | | d d | d | d } | d } | S(   Ni   i   i   i    i   i   (    (   t   paramst   dt   ct   bt   at   itg(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   integral@   s    6
c         C   sh   |  \ } } } } t  j d | d d | d | d | d | d g  } | d  d  d  } | d S(	   Ni@  i   i    i0   i   i    ii   (   R   t   array(   R#   R$   R%   R&   R'   t   grd(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   gradG   s    ;c         C   sS   t  j d d d d g d d d d g d d d d g d d d d g g  } | d S(	   Ni@  i   i    i    i0   i   i   g\@(   R   R*   (   R#   t   hess(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   hessianN   s
    c   	      C   sc   t  j | j |   } t   } | j j |  } | j | |  } t |   } | | | | | f S(   N(   R   t   dott   basisR   t   linkt   inverset   loglikeR)   (	   R#   R!   R   t   alphat   lin_predt   gaussiant   expvalR3   R(   (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   cost_functionW   s    	c    	      C   s   t    \ }  } |  j d } d } t d | d |  } xZ t d  D]L } t j j d d d  } | j |  } t |  } t	 | | d	 d
 qD Wd S(   s>   
    test the func method of the gam penalty
    :return:
    i    i   R4   t   univariate_smootheri
   ii   i   t   atolg?N(
   R"   t	   smoothersR   t   rangeR   t   randomt   randintt   funcR)   R   (	   R!   R   t   univ_polR4   t   gpt   _R#   t   gp_scoreR(   (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_gam_penaltye   s    c    	      C   s   t  j j d  t   \ }  } d } |  j d } t d | d |  } x{ t d  D]m } t  j j d d d  } t  j d d d d g  } | j	 |  } t
 |  } t | | d	 d
 d d
 qT Wd  S(   Ni   i    R4   R9   i
   ii   i   t   rtolg{Gz?R:   (   R   R=   t   seedR"   R;   R   R<   t   uniformR*   t   derivR,   R   (	   R!   R   R4   t   smootherRA   RB   R#   t   gam_gradR+   (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_gam_gradientv   s    c    	      C   s   t  j j d  t   \ }  } |  j d } d } t d | d |  } x~ t d  D]p } t  j j d d d  } | j |  } t	 |  } t  j
 |  } t  j |  } t | | d	 d
 d d qT Wd  S(   Ni   i    R4   R9   i
   ii   i   R:   gvIh%<=RE   gMbP?(   R   R=   RF   R"   R;   R   R<   R>   t   deriv2R.   t   flipudt   fliplrR   (	   R!   R   R@   R4   RA   RB   R#   t   gam_der2R-   (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_gam_hessian   s    c    
      C   s   t  j j d  t   \ }  } d } x t d  D] } t  j j d d d  } t | |  | |  \ } } } t | d |  d | } | j | d d d d }	 t	 | | | d	 d
 t	 |	 | d	 d q2 Wd  S(   Ni   i
   ii   RI   R4   t   scalet
   pen_weightRE   g|=g?(
   R   R=   RF   R"   R<   RG   R8   R
   R3   R   (
   t   polyR   R4   RB   R#   t   costt   errR(   t   glm_gamt   gam_loglike(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_approximation   s    c          C   s;  t  j j t  j j t   }  t  j j |  d d  } t j |  } | j j	 } | j
 j	 } d g } d g } t | d | d | d t } t j | j  } d }	 t | d	 | d
 |	 }
 |
 j d d d d d d d d d d  } t j | j | j  } t j | j  } t | | d d t | | d d d  S(   Nt   resultss   prediction_from_mgcv.csvi
   i   R    t   dft   include_interceptg?RI   R4   t   methodt   bfgst   max_start_irlsi    t   dispi   t   maxiteri'  t   maxfuni  RE   g|=R:   g{Gz?(   t   ost   patht   dirnamet   abspatht   __file__t   joint   pdt   read_csvR   t   valuesR   R   t   TrueR   t   asarrayt   y_estR
   t   fitR/   R0   R#   t   fittedvaluesR   (   t   cur_dirt	   file_patht   data_from_rR   R   RZ   R    t   bsplinest   y_mgcvR4   RV   t   res_glm_gamt   y_gam0t   y_gam(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_gam_glm   s"    		c          C   s  t  j j t  j j t   }  t  j j |  d d  } t j |  } | j j	 } | j
 j	 } d g } d g } t | d | d | d t } | j } d }	 t | | d	 |	 }
 |
 j d
 d  } t j | j | j  } t |  } t |  } t | | d d d d d  S(   NRY   s   prediction_from_mgcv.csvi
   i   R    RZ   R[   gh㈵>R4   R`   i'  RE   g|=R:   g?(   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   R   Rj   t   ybinR   Rk   t   ybin_estR   Rn   R   R/   R0   R#   t   sigmoidR   (   Rp   Rq   Rr   R   R   RZ   R    Rs   Rt   R4   t   lg_gamt
   res_lg_gamRw   (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_gam_discrete   s     				i   c   
      C   s   d } t  j d d |  } t  j d d |  } t  j | | g  j } t  j j |   | | | | t  j j d d |  } d } d	 } | | g } t | |  }	 | | |	 f S(
   Ni  ii   ii
   i    g{Gz?i   i   (   R   R   t   vstackt   TR=   RF   t   normalR   (
   RF   R   t   x1t   x2R   R   t   degree1t   degree2t   degreesR!   (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   multivariate_sample_data   s    (c          C   sK  d d g }  d d g } t  j j d  t   \ } } } t | d  d   d f d | j d } t | d  d   d f d | j d } t d |  d d |  } t d |  d d |  } t j t	 d d   t
 d	 | d |  d
 |  }	 Wd  QXxOt d  D]A}
 t  j j d d | j d j  } t  j j d d | j d j  } t  j | | g  } | j |  } | j |  } |	 j |  } t | | | d d d d | j |  } | j |  } t  j | | g  } |	 j |  } t | |  | j |  } | j |  } t | |  } |	 j |  } t | |  qWd  S(   Ni   i   i    R    R4   R9   t   matchs   weights is currently ignoredt   multivariate_smoothert   weightsi
   ii   R:   g|=RE   (   R   R=   RF   R   R   R   R   t   pytestt   warnst   UserWarningR   R<   R>   R;   t	   dim_basist   concatenateR?   R   RH   RL   R   (   t   alphasR   R   R   R!   t	   univ_pol1t	   univ_pol2t   gp1t   gp2t   mgpt   it   params1t   params2R#   t   c1t   c2R%   t   d1t   d2t   d12R$   t   h1t   h2t   h12t   h(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_multivariate_penalty   s:    ))""c    
      C   s   t    \ }  } } d d g } d d g } t | j | j  } t | d | d | } | j   } t | d | d | } | j   }	 t | j |	 j  d  S(   Ng?gffffff?i   RI   R4   (   R   R   R   R;   R
   Rn   R   R#   (
   R   R   RS   R   R   t   gst   gam_gst
   gam_gs_rest   gam_polyt   gam_poly_res(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_generic_smoother  s    c       	   C   s  t  j j t  j j t   }  t  j j |  d d  } t j |  } | j j	 } | j
 } d g } d g } t | d | d | } | j } d g }	 t | d |	 }
 t | d t j t |  d f  d | d |	 } | j d d d d d d d d  } | j } t | | d d d  S(   NRY   s   prediction_from_mgcv.csvi
   i   R    RZ   gJ4?gݵ|г?i   i  R4   t   exogi   RI   R\   t   pirlsR^   i    R_   R`   i'  R:   g{Gz?gsY3ϝ;?gsY3ϝ+?gZ%X?(   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   R   Rj   R   R   Rm   R   R
   R   t   onest   lenRn   Ro   R   (   Rp   Rq   Rr   R   R   RZ   R    Rs   Rt   R4   RA   RV   Ru   Rw   (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_multivariate_gam_1d_data.  s"    					*		c          C   s  d   }  t  j j t  j j t   } t  j j | d d  } t j |  } | j j	 } | j
 j	 } d g } d g } t | d | d | } d g }	 d	 g }	 t d
  }
 t | d |	 } t d | d |	 d t d |  d | d d  d |
  } | j   } d  S(   Nc         S   s   t  j j |  |  t |   S(   N(   R   t   linalgt   normR   (   R   R   (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyRT   W  s    RY   s   prediction_from_mgcv.csvi
   i   R    RZ   gݵ|г?i   i   R4   RI   R   t   gamRT   t   endogR   t   cv_iterator(   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   R   Rj   R   R   R   R   R   R
   t   NoneRn   (   RT   Rp   Rq   Rr   R   R   RZ   R    Rs   R   t   cvRA   t   gam_cvt
   gam_cv_res(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_multivariate_gam_cvS  s     					c          C   s  d   }  t  j j t  j j t   } t  j j | d d  } t j |  } | j j	 } | j
 j	 } | j } | j } d g } d g }	 t | d |	 d | d t }
 t } t j d	 d
 d  g } d } t d | d t  } t j j d  t d |
 d | d | d |  d | d d  d |  } | j   } t | d |
 d | j } | j d d d d	 d d d d  } | j |
 j  } t | j | d d d  d t j j d  | j d | d d  \ } } t | | j d  d! d  S("   Nc         S   s   t  j j |  |  t |   S(   N(   R   R   R   R   (   t   y1t   y2(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   sample_metricr  s    RY   s   prediction_from_mgcv.csvi
   i   R    RZ   R[   i    i   i   t   k_foldst   shufflei{   RI   R   R   RT   R   R   R   R4   R\   t   irlsR^   R_   i   R`   i'  R:   g?RE   g-q=(   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   R   Rj   R   t   y_est_set
   y_mgcv_gcvR   Rk   R
   R   R   R   R=   RF   R   R   Rn   t   alpha_cvt   predictR0   R   t   select_penweight_kfold(   R   Rp   Rq   Rr   R   R   t   se_from_mgcvRt   RZ   R    Rs   R   R   t   kR   R   R   RV   Ru   Rm   R   t   res_cv(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_multivariate_gam_cv_pathq  s8    						
c    	      C   sd  d }  t  j d |  d f  } t d  | d  d   d f <t d d  | d  d   d f <t | d d d g } t t d   } t t d d   } t | j | | |  \ } } d	 d	 d	 d
 d d g d d d d d d g d d d d d d g g } t | j |  d d d d d d g d d d d d d g d d  d! d" d# d$ g g } t | j |  d  S(%   Ni   t   shapei   i    i   i   R   i   g        g      @g      B@g      k@g      ?g      @g     H@g     pu@g       @g      @g       @g      P@g      @g      @g      "@g      ;@g     @T@g     Ȇ@g      0@g      $@g      Y@g     @@g      @g      9@g     @_@g      &@g     @^@g     ̔@(	   R   t   zerosR<   R   t   listR   R   R   R0   (	   R   R   RS   t   train_indext
   test_indext   train_smoothert   test_smoothert   expected_train_basist   expected_test_basis(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_train_test_smoothers  s$    c          C   s{   d }  t  j j d  t  j j d d |  d f  } t  j | j |  } t |  } t  j | j |  } t | |  d  S(   Ni  i   i    i   (   R   R=   RF   R   R/   R   R   R   (   R   R   R   t   sqrt_x2t   x2_reconstruction(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_get_sqrt  s    c          C   s  t  j j d  d }  t  j j d d |  d f  } t  j | j |  } t  j t t |     } t  j j d d |   } | j	 \ } } d } t
 | | | | |  \ } }	 }
 | } t |	 |  | } | | | *t | |  | } t |
 |  d } t
 | | | |  \ } }	 }
 t | |  } t t  j | j |  | |  t  j | | g  } t |	 |  t  j d | | f  } | | | *t | |  t  j | d g | f d d } t |
 |  d  S(   Ni   i  ii   i    R   t   axis(   R   R=   RF   RG   R/   R   R*   R   R<   R   R   R   R   R   R   R   (   R   R   t   sR   t   wt   nobst	   n_columnsR4   t   aug_yt   aug_xt   aug_wt   expected_aug_xt   expected_aug_yt   expected_aug_wt   rs(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_make_augmented_matrix  s6    "
 
"c          C   s  t  j j d  d }  d } t  j j d d |  d f  } | d  d   d f | d  d   d f t  j j d d |   } | | j   8} t  j d |  f  } t  j j d d | | f  } t | | d | |  } t j | |  j	   } t
 | j | j  d  S(   Ni   i   i   i    i   g?R   (   R   R=   RF   R   R   R   R   R   t   OLSRn   R   R#   (   R   t   pR   R   R   R   t   pen_wls_rest   ls_res(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_penalized_wls  s    @c          C   s  t  j j t  j j t   }  t  j j |  d d  } t j |  } | d d g j } | d j } | d g j } | d d g j } d	 d	 g } t	 | d
 | } d d g }	 t
 | d | d |	 }
 |
 j d d  } t j | j d  d   | j d f | j | j d  } | | j   8} t j | j d  d   | j d f | j | j d  } | | j   8} t | | d  d   d f d d t | | d  d   d f d d d  S(   NRY   s"   cubic_cyclic_splines_from_mgcv.csvt   x0R   R   Rm   s   s(x0)s   s(x2)i
   RZ   g?i   gMb@?RI   R4   R\   R   i    i   R:   g{Gz?gQ?g?gMb0?(   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   Rj   R	   R
   Rn   R   R/   R0   t   maskR#   R   R   (   Rp   Rq   Rr   R   R   t
   y_est_mgcvt   s_mgcvt   dfst   ccsR4   R   t   gam_rest   s0t   s1(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_cyclic_cubic_splines  s*    	###c          C   s  t  j j d  d d l m }  d } t  j d d |  } t  j d d |  d } t  j | | g  j } t  j |  | } | | } | | } | t  j j	 d d |  } | | j
   8} | | j
   8} d
 d
 g }	 |  | d d d g d d }
 t | d t  j | d f  d |
 d |	 } | j d d  } | j } | | j
   8} t t d | d   } | | } | | } | | } t | | d d d  S(   Ni    i(   t   CubicSplinesi  ii   i   i   g333333?gMbP?RZ   i
   t   constraintst   centerR   RI   R4   R\   R   i2   R:   g{Gz?g333333?(   R   R=   RF   t   statsmodels.gam.smooth_basisR   R   R   R   t   sinR   R   R
   R   Rn   Ro   R   R<   R   (   R   R   R   R   R   R   R   t   y0R   R   t   csR   R   Rm   t   index(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_multivariate_cubic_splines*  s.    

-	


c          C   s  t  j j d  d }  t  j d d |   } t  j j |   } t  j | | g  j } t  j |  | } | | } | | } | t  j j d d |   } | | j	   8} | | j	   8} d g d } d g d }	 t
 | d	 d
 d
 g d d d g d d }
 t | d |
 d | } t | d |
 d | } | j d d d d d d d d d d  } | j d | j d d d d d d d d d d  } | j   } t  j |
 j | j  } | | j	   8} t  j |
 j | j  } | | j	   8} t | j | j d d d d t | | d d d  S(   Ni    i  ii   g333333?g      @i   g333333?RZ   i
   R    R   R   RI   R4   R\   t   nmR^   R_   i   R`   i N  Ra   i'  t   start_paramsR]   R:   g-C6
?RE   (   R   R=   RF   R   t   randR   R   R   R   R   R   R
   Rn   R#   R/   R0   R   (   R   R   R   R   R   R   R   R   R   t
   alphas_glmR   t	   gam_pirlst   gam_glmt   gam_res_glmt   gam_res_pirlst	   y_est_glmt   y_est_pirls(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_glm_pirls_compatibilityS  s:    

*c    	      C   s   t    \ }  } } d d g } t | d | d | } | j   } | j   } t | | j  j   } | j   } t | |  d  S(   Ni    RI   R4   (   R   R
   Rn   R   R   R0   R   (	   R   R   RS   R   R   R   t	   y_est_gamt   glmRm   (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_zero_penalty  s    c          C   s  d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g g }  t  j j d	  t  j j d d	 d
  } t  j d d d d g  } t | d d } | | _ | j   } t |  | d d d  S(   Ni    g        gǺV?g-C6*?g
RgMbPg6df?gZN[?i   i
   g?g?g333333?g?RZ   i   R:   g|=(	   R   R=   RF   R   R*   R   t   knotst
   _splines_sR   (   t   spl_s_RR   t   xkR   t   spl_s(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt
   test_spl_s  s    	c       	   C   s  t  j j d  d }  t  j j d d |  d f  } | | j   } | d  d   d f | d  d   d f t  j j d d |   } | | j   8} d } t | d d g d d	 d
 g d d t t g } t	 | d | d | } | j
 d d d d d d d d  } t | | j  } t  j | j d j t  j | j d j  f  } | j | d t }	 | j d  \ }
 } t |	 |
 d d | j   d k  st  d  S(   Ni    i  i   i   g{Gz?g        R    i   RZ   i
   R[   RI   R4   R\   R   R^   R_   R`   i  t	   transformR:   g?id   (   R   R=   RF   RG   R   R   R   Rk   t   FalseR
   Rn   R   R0   t   column_stackR;   t
   zeros_likeR   t   partial_valuesR   t   mint   AssertionError(   R   R   R   R4   Rs   RV   Ru   R  t   exRm   t   y_partial_estt   se(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_partial_values2  s&    @#c          C   sB  t  j j t  j j t   }  t  j j |  d d  } t j |  } | j j	 } | j
 j	 } | j } d g } d g } t | d | d | d t } d }	 t | d | d |	 }
 |
 j d d d d  } | j d } | j d  \ } } t | | d d d d d t j | j  d } t | | | d d d d d  S(   NRY   s   prediction_from_mgcv.csvi
   i   R    RZ   R[   g?is   i  RI   R4   R`   i'  R\   R]   i    Rm   RE   R:   gMb?gZd;?gq~,?gMozӻ?(   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   R   Rj   R   R   R   Rk   R
   Rn   R;   R  R   R   t   sqrtRQ   (   Rp   Rq   Rr   R   R   R   RZ   R    Rs   R4   RV   Ru   t   univ_bsplinest   hat_yR  t   bug_fact(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_partial_values  s"    			c          C   sB  t  j j t  j j t   }  t  j j |  d d  } t j |  } | j j	 } | j
 j	 } | j } d g } d g } t | d | d | } d }	 t | d | d	 |	 }
 |
 j d
 d d d  } | j d  } | j d j   d j   \ } } t j |  } | j d  \ } } t | | |  t | | |  d  S(   NRY   s   prediction_from_mgcv.csvi
   i   R    RZ   gQ?RI   R4   R`   i'  R\   R]   i    (   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   R   Rj   R   R   R   R
   Rn   t   plot_partialt   axest   get_childrent   get_dataR   t   argsortR  R   (   Rp   Rq   Rr   R   R   R   RZ   R    Rs   R4   RV   Ru   t   figt   xpt   ypt   sort_idxR  R  (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_partial_plot  s$    			#c    	      C   s  t  j j d  d }  t  j j d d |  d f  } | | j   } | d  d   d f | d  d   d f t  j j d d |   } | | j   8} t | d d g d d d	 g d d
 d } d d g } t | d | d | } | j d d d d d d d d  } t	 | | j
  } | j   } t | j   | j   d d d } t | d | d | } | j d d d d d d d d  } t | j   | j   d d | j d d d d d d d d d d  } t | j   | j   d d d d d  S(   Ni    i  i   i   g{Gz?R    i   RZ   i
   R   R   RI   R4   R\   R   R^   R_   R`   i  RE   g{Gzd?gvIh%<=R:   g|=R]   Ra   g-C6?g:0yE>(   R   R=   RF   RG   R   R   R   R
   Rn   R   R0   R   t
   cov_params(	   R   R   R   Rs   R4   RV   Ru   R  t   res_glm(    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   test_cov_params  s2    @,(K   t   __doc__t
   __future__R    Rb   t   numpyR   t   numpy.testingR   t   pandasRh   t   scipy.linalgR   R   t   statsmodels.tools.linalgR   R   R   R   R   R   R   R	   t*   statsmodels.gam.generalized_additive_modelR
   R   R   R   t9   statsmodels.gam.gam_cross_validation.gam_cross_validationR   R   R   t   statsmodels.gam.gam_penaltiesR   R   t5   statsmodels.gam.gam_cross_validation.cross_validatorsR   t+   statsmodels.genmod.generalized_linear_modelR   t"   statsmodels.genmod.families.familyR   R   t	   vectorizeR{   R"   R)   R,   R.   R8   RD   RK   RP   RX   Rx   R~   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R  R  t   markt
   matplotlibR&  R)  (    (    (    s=   lib/python2.7/site-packages/statsmodels/gam/tests/test_gam.pyt   <module>   s^   ."											!	$	%		%		5			$		,	)	-			"	'