
    "g=f                        d 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jN                  d       Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d-dZ4d Z5d Z6d Z7d Z8d Z9d  Z:d! Z;d" Z<d# Z=d$ Z>d% Z?d& Z@d' ZAd( ZBd) ZCd* ZDe
j                  j                  d+        ZGd, ZHy).z@
unit test for GAM

Author: Luca Puggini

Created on 08/07/2015
    N)assert_allclose)
block_diag)matrix_sqrt)UnivariatePolynomialSmootherPolynomialSmootherBSplinesGenericSmoothersUnivariateCubicSplinesCyclicCubicSplines)GLMGamLogitGammake_augmented_matrixpenalized_wls)MultivariateGAMCVMultivariateGAMCVPath_split_train_test_smoothers)UnivariateGamPenaltyMultivariateGamPenalty)KFold)GLM)Gaussian)lmc                 :    ddt        j                  |        z   z  S )N      ?)npexp)xs    [/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/gam/tests/test_gam.py<lambda>r       s    bffaRj(8!9     c                      d} t        j                  dd|       }d|dz  z  |z
  }||j                         z  }dg}t        ||      }||fS )a  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
    '              )r   linspacemeanr   )nr   ydegreepols        r   polynomial_sample_datar.   #   sW      	A
B1A	AF
QAMASF
Q
'C6Mr    c                 j    | \  }}}}d|dz  z  dz  d|z  |z  z   dd|dz  z  |dz  z   z  z   }|dz  }|S )Ni   r%             r&    )paramsdcbaitgs         r   integralr:   >   sW    JAq!Qa<1
Q

+a1qAv:Q3F.G
GC1HCJr    c                     | \  }}}}t        j                  d|z  dz  d|z  z   d|z  d|z  d|z  z   dg      }|d d d   }|dz  S )	Ni@  r0   r1   0      r   r#   r%   r   array)r4   r5   r6   r7   r8   grds         r   gradrA   E   s]    JAq!Q
((C!GaK"q&("q&"q&26/1E
FC
dd)C7Nr    c                 N    t        j                  g dg dg dg dg      }|dz  S )N)g\@r   r1   r   )r   r<   r   r   )r1   r   r=   r   )r   r   r   r   r%   r>   )r4   hesss     r   hessianrD   L   s,    88("#! D
 !8Or    c                     t        j                  |j                  |       }t               }|j                  j                  |      }|j                  ||      }t        |       }|||z  z
  ||fS N)r   dotbasisr   linkinverselogliker:   )	r4   r-   r+   alphalin_predgaussianexpvalrK   r9   s	            r   cost_functionrP   U   sg    vvcii(HzH]]""8,Fq&)G 6
C US[ '3..r    c                     t               \  } }| j                  d   }d}t        ||      }t        d      D ]M  }t        j
                  j                  ddd      }|j                  |      }t        |      }t        ||d	       O y
)z>
    test the func method of the gam penalty
    :return:
    r   r$   rL   univariate_smoother
   r%   r'   皙?atolN)
r.   	smoothersr   ranger   randomrandintfuncr:   r   )	r-   r+   univ_polrL   gp_r4   gp_scorer9   s	            r   test_gam_penaltyrb   c   s}    
 $%FC}}QHE	Ex	HB2Y 3""2q!,776?v#E2	3r    c                  ~   t         j                  j                  d       t               \  } }d}| j                  d   }t        ||      }t        d      D ]e  }t         j                  j                  ddd      }t        j                  g d      }|j                  |      }t        |      }t        ||d	d	
       g y )Nr$   r   rR   rT   rU   r%   r'   )r$   r$   r$   r$   {Gz?rtolrX   )r   r[   seedr.   rY   r   rZ   uniformr?   derivrA   r   )	r-   r+   rL   smootherr_   r`   r4   gam_gradr@   s	            r   test_gam_gradientrl   t   s    IINN1#%FCE}}QH	Ex	HB2Y ?""2q!,,'88F#6l#E>?r    c                     t         j                  j                  d       t               \  } }| j                  d   }d}t        ||      }t        d      D ]x  }t         j                  j                  ddd      }|j                  |      }t        |      }t        j                  |      }t        j                  |      }t        ||dd	
       z y )Nr$   r   rR   rT   rU   r%   r0   vIh%<=MbP?rX   rf   )r   r[   rg   r.   rY   r   rZ   r\   deriv2rD   flipudfliplrr   )	r-   r+   r^   rL   r_   r`   r4   gam_der2rC   s	            r   test_gam_hessianru      s    IINN1#%FC}}QHE	Ex	HB2Y A""2q!,99V$vyyyy$V%@Ar    c                  h   t         j                  j                  d       t               \  } }d}t	        d      D ]v  }t         j                  j                  ddd      }t        || ||      \  }}}t        || |      }|j                  |dd      }	t        ||z
  |d       t        |	|d	       x y )
Nr$   rT   r#   r'   rj   rL   )scale
pen_weight绽|=rf   rV   )
r   r[   rg   r.   rZ   rh   rP   r   rK   r   )
polyr+   rL   r`   r4   costerrr9   glm_gamgam_loglikes
             r   test_approximationr      s    IINN1$&GD!E2Y 5""2q!,&vtQ>c3T7oofA!oDc	4e4T45r    c                     t         j                  j                  t         j                  j                  t                    } t         j                  j                  | dd      }t        j                  |      }|j                  j                  }|j                  j                  }dg}dg}t        |||d      }t        j                  |j                        }d}	t        |||	      }
|
j!                  d	d
dd      }t        j"                  |j$                  |j&                        }t        j                  |j(                        }t+        ||d       t+        ||d       y )Nresultsprediction_from_mgcv.csvrT   r&   Tr,   dfinclude_interceptrV   rw   bfgsr   r$   r"   methodmax_start_irlsdispmaxiterrz   r{   rd   rW   )ospathdirnameabspath__file__joinpdread_csvr   valuesr+   r   r   asarrayy_estr   fitrG   rH   r4   fittedvaluesr   )cur_dir	file_pathdata_from_rr   r+   r   r,   bsplinesy_mgcvrL   r   res_glm_gamy_gam0y_gams                 r   test_gam_glmr      s   ggoobggooh78GWi1KLI++i(KAA
BSF&R4HH ZZ))*FEQ7G++VA#$e  5KVVHNNK$6$67FJJ{//0EE6. E6.r    c                  l   t         j                  j                  t         j                  j                  t                    } t         j                  j                  | dd      }t        j                  |      }|j                  j                  }|j                  j                  }dg}dg}t        |||d      }|j                  }d}	t        |||	      }
|
j                  d	
      }t        j                   |j"                  |j$                        }t'        |      }t'        |      }t)        ||dd       y )Nr   r   rT   r0   Tr   gh㈵>rL   r"   )r   rz   rV   re   )r   r   r   r   r   r   r   r   r   r   ybinr   ybin_estr   r   r   rG   rH   r4   sigmoidr   )r   r   r   r   r+   r   r,   r   r   rL   lg_gam
res_lg_gamr   s                r   test_gam_discreter      s    ggoobggooh78GWi1KLI++i(KAA
BSF&R4HH !!FE a/FE*JFF8>>:#4#45EENEV_F E6U;r    c                 n   d}t        j                  dd|      }t        j                  dd|      }t        j                  ||g      j                  }t         j                  j                  |        ||z  |z  |z   t         j                  j                  dd|      z   }d}d	}||g}t        ||      }	|||	fS )
N  r#   r$   irT   r   rd   r'   r&   )r   r(   vstackTr[   rg   normalr   )
rg   r*   x1x2r   r+   degree1degree2degreesr-   s
             r   multivariate_sample_datar      s    A	RA	B	S"a	 B
		2r(AIINN4
R"rBII,,Qa88AGG G
Q
(Ca9r    c                     ddg} ddg}t         j                  j                  d       t               \  }}}t	        |d d df   |j
                  d         }t	        |d d df   |j
                  d         }t        | d   |      }t        | d   |      }t        j                  t        d      5  t        || |      }	d d d        t        d	      D ]p  }
t         j                  j                  d
d|j                  d   j                        }t         j                  j                  d
d|j                  d   j                        }t        j                  ||g      }|j!                  |      }|j!                  |      }	j!                  |      }t#        |||z   dd       |j%                  |      }|j%                  |      }t        j                  ||g      }|	j%                  |      }t#        ||       |j'                  |      }|j'                  |      }t)        ||      }|	j'                  |      }t#        ||       s y # 1 sw Y   xY w)Nr$   r%   r   )r,   rR   zweights is currently ignored)match)multivariate_smootherrL   weightsrT   r&   rz   rp   )r   r[   rg   r   r   r   r   pytestwarnsUserWarningr   rZ   r\   rY   	dim_basisconcatenater]   r   ri   rq   r   )alphasr   r   r+   r-   	univ_pol1	univ_pol2gp1gp2mgpiparams1params2r4   c1c2r6   d1d2d12r5   h1h2h12hs                            r   test_multivariate_penaltyr      s   VF!fGIINN1(*IAq#,Qq!tWS[[^LI,Qq!tWS[[^LI
VAYI
NC
VAYI
NC	k)G	H 6$3f-466 2Y  ))##B3==+;+E+EF))##B3==+;+E+EF' 23XXgXXgHHV27f=YYwYYwnnb"X&IIf3ZZ ZZ R JJv3' 	6 6s   3I

Ic                  (   t               \  } }}ddg}ddg}t        |j                  |j                        }t	        |||      }|j                         }t	        |||      }|j                         }	t        |j                  |	j                         y )N皙?gffffff?r$   rw   )r   r	   r   rY   r   r   r   r4   )
r   r+   r|   r   r   gsgam_gs
gam_gs_resgam_polygam_poly_ress
             r   test_generic_smootherr     s~    )+JAq$3ZF!fG	$&&$..	1BA&1FJa$f5H<<>LJ%%|':':;r    c                  L   t         j                  j                  t         j                  j                  t                    } t         j                  j                  | dd      }t        j                  |      }|j                  j                  }|j                  }dg}dg}t        |||      }|j                  }dg}	t        ||	      }
t        |t        j                   t#        |      df      ||		      }|j%                  d
ddd      }|j&                  }t)        ||d       y )Nr   r   rT   r&   r,   r   gZ%X?r   r$   exogrj   rL   pirlsr   r"   r   rd   rW   )r   r   r   r   r   r   r   r   r   r   r+   r   r   r   r   r   oneslenr   r   r   )r   r   r   r   r+   r   r,   r   r   rL   r_   r   r   r   s                 r   test_multivariate_gam_1d_datar   ,  s    ggoobggooh78GWi1KLI++i(KAA
BSF&R0H F ''E		6BQRWWc!fa[1H "G
 ++WQ#$e  5K$$E E6-r    c            	         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g}	dg}	t        d	      }
t        ||	
      }t        ||	t        | |d |
      }|j!                         }y )Nc                 ^    t         j                  j                  | |z
        t        |       z  S rF   r   linalgnormr   )r   r   s     r   r}   z&test_multivariate_gam_cv.<locals>.costU  "    yy~~b2g&R00r    r   r   rT   r0   r   gݵ|г?r%   r&   r   rj   r   gamr}   endogr   cv_iterator)r   r   r   r   r   r   r   r   r   r   r+   r   r   r   r   r   r   )r}   r   r   r   r   r+   r   r,   r   r   cvr_   gam_cv
gam_cv_ress                 r   test_multivariate_gam_cvr   Q  s    1 ggoobggooh78GWi1KLI++i(KAA
BSF&R0H XFSF	qB		7BV$("NFJr    c            	         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      }
t        }t        j                   dd	d      g}d
}t#        |d      }t        j$                  j'                  d       t)        |
||| |d |      }|j+                         }t        ||
|j,                        }|j+                  dddd      }|j/                  |
j0                        }t3        |j                  |dd       t        j$                  j'                  d       |j5                  |d
      \  }}t3        ||j,                  d       y )Nc                 ^    t         j                  j                  | |z
        t        |       z  S rF   r   )y1y2s     r   sample_metricz4test_multivariate_gam_cv_path.<locals>.sample_metricp  r   r    r   r   rT      Tr   r   r%   r&   )k_foldsshuffle{   r   rw   irlsr$   r"   r   rV   rp   )r   r   g-q=r{   )r   r   r   r   r   r   r   r   r   r   r+   y_est_se
y_mgcv_gcvr   r   r   r(   r   r[   rg   r   r   alpha_cvpredictrH   r   select_penweight_kfold)r   r   r   r   r   r+   se_from_mgcvr   r   r,   r   r   r   kr   r   r   r   r   r   r   res_cvs                         r   test_multivariate_gam_cv_pathr  o  s   1 ggoobggooh78GWi1KLI++i(K 	AA''L##F
BSF&R4HH
Ckk!Q#$F	A	q$	'B IINN3"HV(5QT/13F JQAG++VA#$e  5K/E K**EEJ IINN355VQ5OHfHfooE:r    c                     d} t        j                  | df      }t        d      |d d df<   t        dd      |d d df<   t        |ddg      }t	        t        d            }t	        t        dd            }t        |j                  |||      \  }}g d	g d
g dg}t        |j                  |       g dg dg dg}t        |j                  |       y )Nr   r%   shaper      r$   r&   )r   )        r	  r	  g      @g      B@g      k@)r   r   r   g      @g     H@g     pu@)g       @      @       @r        P@g      @)g      @      "@g      ;@r  g     @T@g     Ȇ@)r
  g      0@r  g      $@g      Y@g     @@)g      @g      9@g     @_@g      &@g     @^@g     ̔@)	r   zerosrZ   r   listr   r   r   rH   )	r*   r   r|   train_index
test_indextrain_smoothertest_smootherexpected_train_basisexpected_test_basiss	            r   test_train_test_smoothersr    s    	A
1vAAhAadGArlAadGa!Q0DuQx.KeAqk"J$?@K@J%L!NM 8779 N((*>?7;<> M'')<=r    c                  :   d} t         j                  j                  d       t         j                  j                  dd| df      }t        j                  |j
                  |      }t        |      }t        j                  |j
                  |      }t        ||       y )Nr   r$   r   r&   )r   r[   rg   r   rG   r   r   r   )r*   r   r   sqrt_x2x2_reconstructions        r   test_get_sqrtr    so    AIINN1
		A1v&A	QB"oGwyy'2%r*r    c                     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        ||||z  |      \  }}	}
|}t        |	|       |}||d | t        ||       |}t        |
|       d}t        ||||      \  }}	}
t        ||z        }t        t        j                  |j
                  |      ||z         t        j                  ||g      }t        |	|       t        j                  ||z   f      }||d | t        ||       t        j                  |dg|z  fd      }t        |
|       y )Nr$     r#   r&   r   r  )axis)r   r[   rg   rh   rG   r   r?   r  rZ   r  r   r   r   r   r  r   )r*   r   sr+   wnobs	n_columnsrL   aug_yaug_xaug_wexpected_aug_xexpected_aug_yexpected_aug_wrss                  r   test_make_augmented_matrixr)    s   IINN1A
		"a!Q(A
qssAA
eAh A
		!Q"AggOD) E/1eaiCE5%NE>*NN5DE>*NE>*E/1a;E5%	UQY	B BFF244$eai0YY2w'NE>*XXTI%5$78NN5DE>*^^Qi$8qANE>*r    c                  >   t         j                  j                  d       d} d}t         j                  j                  dd| df      }|d d df   |d d df   z
  t         j                  j                  dd|       z   }||j	                         z  }t        j
                  | f      }t         j                  j                  dd||f      }t        ||d|z  |      }t        j                  ||      j                         }t        |j                  |j                         y )Nr$      r&   r   r%   rV   r  )r   r[   rg   r   r)   r   r   r   OLSr   r   r4   )r*   pr   r+   r   r  pen_wls_resls_ress           r   test_penalized_wlsr0    s    IINN1
A	A
		A1v&A	!Q$!AqD'BII,,QA66AMAggQD!G
		A1v&A1a!eW5KVVAq\FFMM;#5#56r    c                     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g}	t        |||	      }
|
j                  d      }t        j                  |j                  d d |j                  d   f   |j                   |j                  d            }||j#                         z  }t        j                  |j                  d d |j                  d   f   |j                   |j                  d            }||j#                         z  }t%        ||d d df   d       t%        ||d d df   d       y )Nr   z"cubic_cyclic_splines_from_mgcv.csvx0r   r+   r   zs(x0)zs(x2)rT   r   g?gMb0?rw   r   r   r   r$   g{Gz?rW   gQ?)r   r   r   r   r   r   r   r   r   r   r   r   r   rG   rH   maskr4   r)   r   )r   r   r   r   r+   
y_est_mgcvs_mgcvdfsccsrL   r   gam_ress0s1s                 r   test_cyclic_cubic_splinesr=    s   ggoobggooh78GWiACI++i(KT4L!((ACAgY'..J'7+,33Fr(C
Q3
'Cz"E S
.CggWg%G			!SXXa[.)sxx{+
-B "'')OB			!SXXa[.)sxx{+
-B"'')OB Bq!t40Bq!t40r    c                     t         j                  j                  d       ddlm}  d}t        j
                  dd|      }t        j
                  dd|      dz  }t        j                  ||g      j                  }t        j                  |      |z  }||z  }||z   }|t         j                  j                  dd|      z   }||j                         z  }||j                         z  }d	d	g}	 | |d
d
gd      }
t        |t        j                  |df      |
|	      }|j                  d      }|j                  }||j                         z  }t        t!        d|dz
              }||   }||   }||   }t#        ||d       y )Nr   )CubicSplinesr  r   r&   r$   r%   g333333?ro   rT   center)r   constraintsr   r   r4  2   g{Gz?rW   )r   r[   rg   statsmodels.gam.smooth_basisr?  r(   r   r   sinr   r)   r   r   r   r   r  rZ   r   )r?  r*   r   r   r   r   r   y0r+   r   csr   r:  r   indexs                  r   test_multivariate_cubic_splinesrH  (  s[   IINN19A	RA	B	Q1	q	 B
		2r(A	bB	bB	bB
RYYa++AMA"'')OBD\F	aRH(	;B
!Q2V
DCggWg%G  E	UZZ\E r1r6"#E%LE	EB	%A E2D)r    c                  "   t         j                  j                  d       d} t        j                  dd|       }t         j                  j	                  |       }t        j
                  ||g      j                  }t        j                  |      |z  }||z  }||z   }|t         j                  j                  dd|       z   }||j                         z  }||j                         z  }dgdz  }dgdz  }	t        |d	d	gddgd
      }
t        ||
|      }t        ||
|      }|j                  dddd      }|j                  |j                  dddd      }|j                         }t        j                  |
j                  |j                        }||j                         z  }t        j                  |
j                  |j                        }||j                         z  }t!        |j                  |j                  dd       t!        ||d       y )Nr   r  r   r&   g333333?g      @r%   g333333?rT   r@  )r   r,   rA  rw   nmr$   i N  r   r   )start_paramsr   r   r   r   g-C6
?rp   rW   )r   r[   rg   r(   randr   r   rD  r   r)   r   r   r   r4   rG   rH   r   )r*   r   r   r   r   r   rE  r+   r   
alphas_glmrF  	gam_pirlsgam_glmgam_res_glmgam_res_pirls	y_est_glmy_est_pirlss                    r   test_glm_pirls_compatibilityrT  Q  s   IINN1A	RA	B		B
		2r(A	bB	bB	bB
RYYaQ''AMA"'')OB VaZFJ	!R!QX	FBq2V4IQ62G++T!#$e  5K++;+=+=%+A#$e  5K MMOMrxx!3!34I!!I&&=#7#78K;##%%K K&&(<(<4I{6r    c                     t               \  } }}ddg}t        |||      }|j                         }|j                         }t	        ||j
                        j                         }|j                         }t        ||       y )Nr   rw   )r   r   r   r   r   rH   r   )	r   r+   r|   r   r   r   	y_est_gamglmr   s	            r   test_zero_penaltyrX  ~  sn    )+JAq$VFAF3FJ""$I
a

 
 
"CKKMEE9%r    c                  >   g dg dg dg dg dg dg} t         j                  j                  d       t         j                  j                  ddd      }t        j                  g d	      }t        |d
      }||_        |j                         }t        | |d       y )N)r   r   r	  r	  r	  r	  )r   r   ǺV?-C6*?
RMbP)r   r   r[  6df?ZN[?r\  )r   r   r\  r_  r^  r[  )r   r   r]  r\  r[  rZ  r$   r   rT   )g?r   g333333?g?r'   r3  g|=rW   )	r   r[   rg   r   r?   r
   knots
_splines_sr   )spl_s_Rr   xkrF  spl_ss        r   
test_spl_sre    s    IIKJJKMG IINN1
		Ar"A	#	$B	a	(BBHMMOEGU0r    c                  .   t         j                  j                  d       d} t         j                  j                  dd| df      }||j	                         z
  }|d d df   |d d df   z  t         j                  j                  dd|       z   }||j	                         z  }d}t        |dgdz  dgdz  d	d
g      }t        |||      }|j                  dddd      }t        ||j                        }t        j                  |j                  d   j                  t        j                  |j                  d   j                        f      }|j                  |d
      }	|j                  d      \  }
}t!        |	|
d       |j#                         dk  sJ y )Nr   r   r$   r%   rd   r	  r&   rT   TFr   rw   r     r   )	transformg?rW   d   )r   r[   rg   rh   r)   r   r   r   r   r   rH   column_stackrY   
zeros_liker   partial_valuesr   min)r*   r   r+   rL   r   r   r   rW  exr   y_partial_estses               r   test_partial_values2rq    sx   IINN1A
		!QA'A	AFFHA	!Q$!AqD'BII,,QQ77AMAE
 1#'rdQh+/-9HQ7G++WQ#$d  4K
a
 C
 
(,,Q/55--(:(:1(=(C(CDF 
GB e4E#2215M2E=t4668c>>r    c                     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}	t        |||	      }
|
j                  d	d
      }|j                  d   }|j!                  d      \  }}t#        ||d   dd       t%        j&                  |j(                        dz  }t#        |||z  dd       y )Nr   r   rT   r   Tr   gMozӻ?rw   r"   r   r   r   r   r   gMb?re   gZd;?)r   r   r   r   r   r   r   r   r   r   r+   r   r   r   r   rY   rl  r   r   sqrtrx   )r   r   r   r   r+   r  r   r,   r   rL   r   r   univ_bsplineshat_yrp  bug_facts                   r   test_partial_valuesrx    s    ggoobggooh78GWi1KLI++i(K 	AA''L
BSF&R4HH EQ7G++eF+;K &&q)M**1-IE2E;w/aeDww{(()E1HBx/aeDr    c                     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}	t        |||	      }
|
j                  dd	
      }|j                  d      }|j                   d   j#                         d   j%                         \  }}t'        j(                  |      }|j+                  d      \  }}t-        |||          t-        |||          y )Nr   r   rT   r   r   gQ?rw   r"   r   rs  r   )r   r   r   r   r   r   r   r   r   r   r+   r   r   r   r   plot_partialaxesget_childrenget_datar   argsortrl  r   )r   r   r   r   r+   r  r   r,   r   rL   r   r   figxpypsort_idxrv  rp  s                     r   test_partial_plotr    s)    ggoobggooh78GWi1KLI++i(K 	AA''L
BSF&R0HEQ7G++eF+;K

"
"1
%CXXa[%%'*335FBzz!}H**1-IE2B($Bh(r    c                  |   t         j                  j                  d       d} t         j                  j                  dd| df      }||j	                         z
  }|d d df   |d d df   z  t         j                  j                  dd|       z   }||j	                         z  }t        |dgdz  dgdz  d	      }ddg}t        |||
      }|j                  dddd      }t        ||j                        }|j                         }t        |j                         |j                         d       d}t        |||
      }|j                  dddd      }t        |j                         |j                         d       |j                  dddd      }t        |j                         |j                         dd       y )Nr   r   r$   r%   rd   r&   rT   r@  )r,   r   rA  rw   r   rg  r   g{Gzd?r{   rn   rz   rW   r   g-C6?g:0yE>re   )r   r[   rg   rh   r)   r   r   r   r   r   rH   r   
cov_params)	r*   r   r+   r   rL   r   r   rW  res_glms	            r   test_cov_paramsr    s   IINN1A
		!QA'A	AFFHA	!Q$!AqD'BII,,QQ77AMA1#'rdQhHMHFEQ7G++WQ#$d  4K
a
 CggiGG&&(+*@*@*B! EQ7G++WQ#$d  4K G&&(+*@*@*B  ++VA#$d  4K G&&(+*@*@*BD*r    )r$   )I__doc__r   numpyr   numpy.testingr   pandasr   scipy.linalgr   r   statsmodels.tools.linalgr   rC  r   r   r   r	   r
   r   *statsmodels.gam.generalized_additive_modelr   r   r   r   9statsmodels.gam.gam_cross_validation.gam_cross_validationr   r   r   statsmodels.gam.gam_penaltiesr   r   5statsmodels.gam.gam_cross_validation.cross_validatorsr   +statsmodels.genmod.generalized_linear_modelr   "statsmodels.genmod.families.familyr   r   	vectorizer   r.   r:   rA   rD   rP   rb   rl   ru   r   r   r   r   r   r   r   r   r  r  r  r)  r0  r=  rH  rT  rX  re  rq  rx  mark
matplotlibr  r  r3   r    r   <module>r     s"   
  )  #  0B B< <K KC G ; 7 :
",,9
:6/3"?$A"5/B!<H" J<".J<2;j>.	+!+H7")1X&*R*7Z
&1&DE> ) )L *r    