
    M/Ph=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j'        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
jE        jF        d,             ZGd- ZHdS )/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                 8    ddt          j        |            z   z  S )N      ?)npexp)xs    ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/gam/tests/test_gam.py<lambda>r       s    bfaRjj(8!9     c                      d} t          j        dd|           }d|dz  z  |z
  }||                                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.   #   s]      	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
F
FC
ddd)C7Nr    c                 L    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   sA    8((("]]#^^!\\  D
 !8Or    c                     t          j        |j        |           }t                      }|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   so    vci((HzzH]""8,,Fq&))G 6

C US[ '3..r    c                  :   t                      \  } }| j        d         }d}t          ||          }t          d          D ]Y}t          j                            ddd          }|                    |          }t          |          }t          ||d	           Zd
S )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	H	H	HB2YY 3 3""2q!,,776??v#E22222	3 3r    c                     t           j                            d           t                      \  } }d}| j        d         }t          ||          }t          d          D ]p}t           j                            ddd          }t          j        g d          }|	                    |          }t          |          }t          ||d	d	
           qd S )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    INN1#%%FCE}QH	Ex	H	H	HB2YY ? ?""2q!,,,,,''88F##6ll#E>>>>>? ?r    c                     t           j                            d           t                      \  } }| j        d         }d}t          ||          }t          d          D ]}t           j                            ddd          }|                    |          }t          |          }t          j
        |          }t          j        |          }t          ||dd	
           d S )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    INN1#%%FC}QHE	Ex	H	H	HB2YY A A""2q!,,99V$$vyy$V%@@@@@A Ar    c                     t           j                            d           t                      \  } }d}t	          d          D ]}t           j                            ddd          }t          || ||          \  }}}t          || |          }|                    |dd          }	t          ||z
  |d           t          |	|d	           d S )
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    INN1$&&GD!E2YY 5 5""2q!,,&vtQ>>c3T777oofA!oDDc	4e4444T444445 5r    c                     t           j                            t           j                            t                              } t           j                            | dd          }t          j        |          }|j        j	        }|j
        j	        }dg}dg}t          |||d          }t          j        |j                  }d}	t          |||	          }
|
                    d	d
dd          }t          j        |j        |j                  }t          j        |j                  }t+          ||d           t+          ||d           d S )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*   goobgooh7788GWi1KLLI+i((KAA
BSF&R4HHHH Z)**FEQ777G++VA#$e  5 5KVHNK$677FJ{/00EE6.... E6......r    c                  V   t           j                            t           j                            t                              } t           j                            | dd          }t          j        |          }|j        j	        }|j
        j	        }dg}dg}t          |||d          }|j        }d}	t          |||	          }
|
                    d	
          }t          j        |j        |j                  }t'          |          }t'          |          }t)          ||dd           d S )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   goobgooh7788GWi1KLLI+i((KAA
BSF&R4HHHH !FE a///FE**JF8>:#455EENNEV__F E6U;;;;;;r    r$   c                 f   d}t          j        dd|          }t          j        dd|          }t          j        ||g          j        }t           j                            |            ||z  |z  |z   t           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INN4
R"rBI,,Qa888AGG G
Q
(
(Ca9r    c                  @   ddg} ddg}t           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            n# 1 swxY w Y   t          d	          D ]}
t           j                            d
d|j        d         j                  }t           j                            d
d|j        d         j                  }t          j        ||g          }|                    |          }|                    |          }|	                    |          }t#          |||z   dd           |                    |          }|                    |          }t          j        ||g          }|	                    |          }t#          ||           |                    |          }|                    |          }t)          ||          }|	                    |          }t#          ||           d S )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INN1(**IAq#,Qqqq!tWS[^LLLI,Qqqq!tWS[^LLLI
VAYI
N
N
NC
VAYI
N
N
NC	k)G	H	H	H 6 6$3f-46 6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2YY    )##B3=+;+EFF)##B3=+;+EFF' 233XXgXXgHHV27f====YYwYYwnb"X&&IIf3ZZ  ZZ  R  JJv3'   s   C..C25C2c                  :   t                      \  } }}ddg}ddg}t          |j        |j                  }t	          |||          }|                                }t	          |||          }|                                }	t          |j        |	j                   d S )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	$&$.	1	1BA&111FJa$f555H<<>>LJ%|':;;;;;r    c                  J   t           j                            t           j                            t                              } t           j                            | dd          }t          j        |          }|j        j	        }|j
        }dg}dg}t          |||          }|j        }dg}	t          ||	          }
t          |t          j        t#          |          df          ||		          }|                    d
ddd          }|j        }t)          ||d           d S )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   goobgooh7788GWi1KLLI+i((KAA
BSF&R000H F ''E		6	6	6BQRWc!ffa[11H " " "G
 ++WQ#$e  5 5K$E E6------r    c            	         d } t           j                            t           j                            t                              }t           j                            |dd          }t          j        |          }|j        j	        }|j
        j	        }dg}dg}t          |||          }dg}	dg}	t          d	          }
t          ||	
          }t          ||	t          | |d |
          }|                                }d S )Nc                 f    t           j                            | |z
            t          |           z  S rF   r   linalgnormr   )r   r   s     r   r}   z&test_multivariate_gam_cv.<locals>.costU  %    y~~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 1 1 goobgooh7788GWi1KLLI+i((KAA
BSF&R000H XFSF	qB		7	7	7BV$("N N NFJJJr    c            	         d } t           j                            t           j                            t                              }t           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                            d           t)          |
||| |d |          }|                                }t          ||
|j                  }|                    dddd          }|                    |
j                  }t3          |j        |dd           t          j                            d           |                    |d
          \  }}t3          ||j        d           d S )Nc                 f    t           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 1 1 goobgooh7788GWi1KLLI+i((K 	AA'L#F
BSF&R4HHHH
Ck!Q##$F	A	q$	'	'	'B INN3"HV(5QT/13 3 3F JQAAAG++VA#$e  5 5K//E K*EEJJJJ INN355VQ5OOHfHfoE::::::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        |           d S )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AhhAaaadGArllAaaadGa!Q000DuQxx..KeAqkk""J$?@K@J%L %L!NM 8777777779 N(*>???777;;;<<<> M')<=====r    c                  4   d} t           j                            d           t           j                            dd| df          }t          j        |j        |          }t          |          }t          j        |j        |          }t          ||           d S )Nr   r$   r   r&   )r   r[   rg   r   rG   r   r   r   )r*   r   r   sqrt_x2x2_reconstructions        r   test_get_sqrtr    s    AINN1
	A1v&&A	QB"ooGwy'22%r*****r    c                     t           j                            d           d} t           j                            dd| df          }t          j        |j        |          }t          j        t          t          |                               }t           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          |
|           d S )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   INN1A
	"a!Q((A
qsAA
eAhh  A
	!Q""AgOD) E/1eaiCCE5%NE>***NN5D5E>***NE>***E/1a;;E5%	UQY		B BF24$$eai000Y2w''NE>***XTI%5$7888NN5D5E>***^Qi$8qAAANE>*****r    c                  T   t           j                            d           d} d}t           j                            dd| df          }|d d df         |d d df         z
  t           j                            dd|           z   }||                                z  }t          j        | f          }t           j                            dd||f          }t          ||d|z  |          }t          j        ||          	                                }t          |j        |j                   d S )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   INN1
A	A
	A1v&&A	!!!Q$!AAAqD'BI,,QA666AMAgQD!!!G
	A1v&&A1a!eW55KVAq\\FFM;#566666r    c                     t           j                            t           j                            t                              } t           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          |||	          }
|
                    d          }t          j        |j        d d |j        d         f         |j        |j        d                            }||                                z  }t          j        |j        d d |j        d         f         |j        |j        d                            }||                                z  }t%          ||d d df         d           t%          ||d d df         d           d S )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   goobgooh7788GWiAC CI+i((KT4L!(ACAgY'.J'7+,3Fr(C
Q3
'
'
'Cz"E S
.
.
.CggWg%%G		!!!SXa[.)sx{+
- 
-B "''))OB		!!!SXa[.)sx{+
- 
-B"''))OB Bqqq!t40000Bqqq!t4000000r    c                  @   t           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        	                    dd|          z   }||
                                z  }||
                                z  }d	d	g}	 | |d
d
gd          }
t          |t          j        |df          |
|	          }|                    d          }|j        }||
                                z  }t          t!          d|dz
                      }||         }||         }||         }t#          ||d           d S )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   INN1999999A	RA		B	Q1		q	 B
	2r(A	bB	bB	bB
RYa+++AMA"''))OBD\F	aRH(	;	;	;B
!Q2V
D
D
DCggWg%%G E	UZZ\\E r1r6""##E%LE	EB	%A E2D))))))r    c                  *   t           j                            d           d} t          j        dd|           }t           j                            |           }t          j        ||g          j        }t          j        |          |z  }||z  }||z   }|t           j                            dd|           z   }||	                                z  }||	                                z  }dgdz  }dgdz  }	t          |d	d	gddgd
          }
t          ||
|          }t          ||
|          }|                    dddd          }|                    |j        dddd          }|                                }t          j        |
j        |j                  }||	                                z  }t          j        |
j        |j                  }||	                                z  }t!          |j        |j        dd           t!          ||d           d S )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   INN1A	RA		B			B
	2r(A	bB	bB	bB
RYaQ'''AMA"''))OB VaZFJ	!R!QX	F	F	FBq2V444IQ6222G++T!#$e  5 5K++;+=%+A#$e  5 5K MMOOMrx!344I!!!I&=#788K;##%%%K K&(<4   I{666666r    c                  <   t                      \  } }}ddg}t          |||          }|                                }|                                }t	          ||j                                                  }|                                }t          ||           d S )Nr   rw   )r   r   r   r   r   rH   r   )	r   r+   r|   r   r   r   	y_est_gamglmr   s	            r   test_zero_penaltyrX  ~  s    )++JAq$VFAF333FJ""$$I
a


 
 
"
"CKKMMEE9%%%%%r    c                  V   g dg dg dg dg dg dg} t           j                            d           t           j                            ddd          }t          j        g d	          }t          |d
          }||_        |                                }t          | |d           d S )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IIIIKKKJJJJJJKKKMG INN1
	Ar""A	###	$	$B	a	(	(	(BBHMMOOEGU000000r    c                  d   t           j                            d           d} t           j                            dd| df          }||                                z
  }|d d df         |d d df         z  t           j                            dd|           z   }||                                z  }d}t          |dgdz  dgdz  d	d
g          }t          |||          }|                    dddd          }t          ||j
                  }t          j        |j        d         j
        t          j        |j        d         j
                  f          }|                    |d
          }	|                    d          \  }
}t!          |	|
d           |                                dk     sJ d S )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    s   INN1A
	!QA''A	AFFHHA	!!!Q$!AAAqD'BI,,QQ777AMAE
 1#'rdQh+/-9 9 9HQ777G++WQ#$d  4 4K
a
 
 C
 
(,Q/5-(:1(=(CDDF 
G 
GB e44E#22155M2E=t44446688c>>>>>>r    c                     t           j                            t           j                            t                              } t           j                            | dd          }t          j        |          }|j        j	        }|j
        j	        }|j        }dg}dg}t          |||d          }d}	t          |||	          }
|
                    d	d
          }|j        d         }|                    d          \  }}t#          ||d         dd           t%          j        |j                  dz  }t#          |||z  dd           d S )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    s9    goobgooh7788GWi1KLLI+i((K 	AA'L
BSF&R4HHHH EQ777G++eF+;;K &q)M**1--IE2E;w/aeDDDDw{())E1HBx/aeDDDDDDr    c                     t           j                            t           j                            t                              } t           j                            | dd          }t          j        |          }|j        j	        }|j
        j	        }|j        }dg}dg}t          |||          }d}	t          |||	          }
|
                    dd	
          }|                    d          }|j        d                                         d                                         \  }}t'          j        |          }|                    d          \  }}t-          |||                    t-          |||                    d S )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    sK    goobgooh7788GWi1KLLI+i((K 	AA'L
BSF&R000HEQ777G++eF+;;K

"
"1
%
%CXa[%%''*3355FBz!}}H**1--IE2B($$$Bh(((((r    c                     t           j                            d           d} t           j                            dd| df          }||                                z
  }|d d df         |d d df         z  t           j                            dd|           z   }||                                z  }t          |dgdz  dgdz  d	          }ddg}t          |||
          }|                    dddd          }t          ||j
                  }|                                }t          |                                |                                d           d}t          |||
          }|                    dddd          }t          |                                |                                d           |                    dddd          }t          |                                |                                dd           d S )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$   INN1A
	!QA''A	AFFHHA	!!!Q$!AAAqD'BI,,QQ777AMA1#'rdQhHMMMHFEQ777G++WQ#$d  4 4K
a
 
 CggiiGG&&((+*@*@*B*B! ! ! ! EQ777G++WQ#$d  4 4K G&&((+*@*@*B*B        ++VA#$d  4 4K G&&((+*@*@*B*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 0 0 0 0 0B B B B B B B B B B B B B B B B< < < < < < < < < < < <K K K K K K K K K KC C C C C C C C G G G G G G ; ; ; ; ; ; 7 7 7 7 7 7 : : : : : :
",99
:
:  6      / / /3 3 3"? ? ?$A A A"5 5 5/ / /B!< !< !<H   "  "  " J< < <". ". ".J  <2; 2; 2;j> > >.	+ 	+ 	+!+ !+ !+H7 7 7")1 )1 )1X&* &* &*R*7 *7 *7Z
& 
& 
&1 1 1&  DE E E> ) ) )L *  *  *  *  *r    