
    M/Ph_`                        d Z ddlZddlZddlmZmZmZ ddlZ	ddl
Z
ddlZddlmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmc mZ dd	l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'm(Z(m)Z)  G d dee          Z* G d dee          Z+ G d dee          Z, G d dee          Z-ej.        /                    ej.        0                    e1                    Z2ej.        3                    e2dd          Z4 e	j5        e4          Z6ej.        3                    e2dd          Z4 e	j5        e4          Z7e7g d         8                                Z9 G d d          Z: G d de:          Z; G d de:          Z< G d  d!e:          Z= G d" d#e:          Z> G d$ d%          Z? G d& d'          Z@ G d( d)          ZA ejB        g d*          ZC ejB        g d+          D                    d,d-d./          ZE G d0 d1          ZF G d2 d3          ZG G d4 d5          ZH G d6 d7e:          ZI G d8 d9e:          ZJ G d: d;eJ          ZKdS )<z,
unit test for GAM

Author: Josef Perktold

    N)assert_allcloseassert_equalassert_)PoissonLogitProbit)GLM)family)TheilGLS)PenalizedMixin)BSplinesCyclicCubicSplines)GLMGamGLMGamResultsGLMGamResultsWrapper)matrix_sqrttransf_constraints   )results_plsresults_mpg_bsresults_mpg_bs_poissonc                       e Zd ZdS )PoissonPenalizedN__name__
__module____qualname__     d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/gam/tests/test_penalized.pyr   r   "           Dr   r   c                       e Zd ZdS )LogitPenalizedNr   r   r   r    r#   r#   &   r!   r   r#   c                       e Zd ZdS )ProbitPenalizedNr   r   r   r    r%   r%   *   r!   r   r%   c                       e Zd ZdS )GLMPenalizedNr   r   r   r    r'   r'   .   r!   r   r'   resultszmotorcycle.csvz	autos.csv)city_mpgfueldriveweighthpc                   Z    e Zd Zed             Zd Zd Zej        j	        d             Z
dS )CheckGAMMixinc                    t          t          j        t          d                   dg          }t          j        |j                            d                    }t          |          }|j                            |          }|j	                            |j
        d                                       |          }t          |          }|||fS )Ntimes   dfr   )r   npasarraydata_mcycle
atleast_2dbasismeanr   dotTpenalty_matricesr   )clscc_hconstraintstransfexogpenalty_matrixrestrictions          r    _initzCheckGAMMixin._init>   s     ""*[-A"B"BsKKKmDJOOA$6$677#K00z~~f%%d&;A&>??CCFKK!.11^[00r   c                    | j         }| j        }t          |j        |j        d           t          t	          j        |                                          |j        | j        z  dd           t          |j	        |j	        | j        z  d           t          t	          j        |j
                  |j        t	          j        | j                  z  dd           d S )Nh㈵>rtolư>g&.>)rI   atol:0yE>)res1res2r   paramsr5   r6   
cov_paramsVpcovp_corrfactscalebsesesqrtselfrM   rN   s      r    test_paramszCheckGAMMixin.test_paramsK   s    yyT[t<<<<
4??#4#455$"444d	L 	L 	L 	L 	
DJ1C$C!	# 	# 	# 	# 	
48,,"'$*<"="==!	. 	. 	. 	. 	. 	.r   c                 d    | j         }| j        }t          |j        |j        | j                   d S )NrH   )rM   rN   r   fittedvaluesfitted_valuesrtol_fittedrW   s      r    test_fittedzCheckGAMMixin.test_fittedY   sA    yy)4+=!-	/ 	/ 	/ 	/ 	/ 	/r   c                     | j         j         d S N)rM   llnullrX   s    r    test_null_smokezCheckGAMMixin.test_null_smoke_   s    	r   N)r   r   r   classmethodrE   rY   r^   pytestmarksmokerc   r   r   r    r/   r/   <   sl        
1 
1 [
1. . ./ / / [    r   r/   c                   4    e Zd ZdZed             Zd Zd ZdS )TestTheilPLS5z
data-priorc                    |                                  \  }}}t          d         }t          |||          }d}d}d|z  |z  x| _        }|                    || j                  | _        t          j        | _	        d| _
        d| _        d S )	Naccel)r_matrix<mǳO?g<-.@r   
pen_weightcov_typeHz>g]j?)rE   r7   r   pwfitrp   rM   r   pls5rN   r]   rR   )	r>   rB   rC   rD   endogmodp	s_scale_rsigma_err   s	            r    setup_classzTestTheilPLS5.setup_classh   s    ,/IIKK)nkG$tk:::	$'kI--88rCL8AA#/r   c                     | j         }| j        }|j        }|j                            |d          }t          t          j        |                                          |j	        | j
        z  d           d S )Nsandwichrn   -C6?rH   )rM   rN   penalization_factormodelrs   r   r5   r6   rP   VerR   rX   rM   rN   rr   s       r    test_cov_robustzTestTheilPLS5.test_cov_robustx   s{    yy%z~~j~AA
4??#4#455$"444	A 	A 	A 	A 	A 	Ar   c                 .    t          j        d           d S )Nzllnull not available)re   skiprb   s    r    rc   zTestTheilPLS5.test_null_smoke   s    *+++++r   N)r   r   r   rp   rd   ry   r   rc   r   r   r    ri   ri   d   sS        H0 0 [0A A A, , , , ,r   ri   c                   .    e Zd ZdZed             Zd ZdS )TestGLMPenalizedPLS5	nonrobustc                 v   |                                  \  }}}t          d         }t          j        |          }t	          ||t          j                    |          }d}d|z  dz  x| _        |_        |	                    | j
        ddd	d
d          | _        t          j        | _        d| _        d| _        d S )Nrk   )rD   )r
   penalrm   r      bfgsd   r   Fx2)rp   methodmaxiterdisptrimrS   rG   g#n
?)rE   r7   smpenL2ConstraintsPenaltyr'   r
   Gaussianrr   ro   rs   rp   rM   r   rt   rN   r]   rR   )r>   rB   rC   rD   ru   penmodrw   s           r    ry   z TestGLMPenalizedPLS5.setup_class   s    ,/IIKK)nkG$([AAA5$v/@/@!$& & & 	"#i-!"3377CL !T  ; ;# /r   c                     | j         }| j        }|j        j        }|j                            |d          }t          t          j        |                                          |j	        | j
        z  d           d S )NHC0rn   r|   rH   )rM   rN   r~   ro   rs   r   r5   r6   rP   r   rR   r   s       r    _test_cov_robustz%TestGLMPenalizedPLS5._test_cov_robust   s}    yyZ"z~~e~<<
4??#4#455$"444	A 	A 	A 	A 	A 	Ar   N)r   r   r   rp   rd   ry   r   r   r   r    r   r      sF        H/ / [/&A A A A Ar   r   c                   (    e Zd ZdZed             ZdS )TestGAM5Pirlsr   c                    d}t           d         j        }t           d         }t          |dgd          }t          ||d|z  dz  	          }|                                | _        t          j        | _        d
| _	        d| _
        d S )NO?r1   rk   r2   centerr4   r@   r   r   smootheralphag-q=r7   valuesr   r   rs   rM   r   rt   rN   r]   rR   r>   s_scalexru   ccgam_ccs         r    ry   zTestGAM5Pirls.setup_class   s    $ 'G$qcx@@@!g+/BBB::<<# r   N)r   r   r   rp   rd   ry   r   r   r    r   r      s2        H  [  r   r   c                   .    e Zd ZdZed             Zd ZdS )TestGAM5Bfgsr   c                    d}t           d         j        }t           d         }t          |dgd          }t          ||d|z  dz  	          }|                    d
          | _        t          j        | _        d| _	        d| _
        d S )Nr   r1   rk   r2   r   r   r   r   r   r   r   rG   r   r   s         r    ry   zTestGAM5Bfgs.setup_class   s    $ 'G$qcx@@@!g+/BBB::V:,,# r   c                    | j         }| j        }|                    d |j        j        j        dd                   }t          ||j        dd         d           t          ||j        dd         | j	                   d S Nr      vIh%<=rH   )
rM   rN   predictr~   r   r   r   r[   r\   r]   rX   rM   rN   	predicteds       r    test_predictzTestGAM5Bfgs.test_predict   s    yyLLtz':'<QqS'ABB		4#4QqS#9"	$ 	$ 	$ 	$	4#5ac#:!-	/ 	/ 	/ 	/ 	/ 	/r   N)r   r   r   rp   rd   ry   r   r   r   r    r   r      sA        H  [/ / / / /r   r   c                   *    e Zd Zed             Zd ZdS )TestGAM6Pirlsc                     d}t          t          d         j        dg          }t          t          d         |d|z  dz            }|                                | _        d S )	Nr   r1   r2   r3   rk   r   r   r   r   r7   r   r   rs   rM   r>   r   r   r   s       r    ry   zTestGAM6Pirls.setup_class   s^    $G 4 ;DDDG,r'kAo/ / /::<<r   c                    | j         }|                                }d| _        t          j        g d          }t          |j        d d         || j                   t          |j        d d         || j                   |                    d |j	        j
        j        dd                   }t          ||dd         | j                   d S )Nrq   gOę@g z߰!	@g@gld@gDi/@gt;+@g(T-@g	g@-@g6<.@geBW-@c)+@r   gx7\\}&@g|x#@g Z @   rH   r   r   )rM   get_predictionr]   r5   arrayr   r[   predicted_meanr   r~   r   r   )rX   rM   predpls6_fittedvaluesr   s        r    r^   zTestGAM6Pirls.test_fitted   s   y""$$H &A &A &A B B 	)#2#.0A!-	/ 	/ 	/ 	/+CRC02C!-	/ 	/ 	/ 	/ LLtz':'<QqS'ABB		#4QqS#9!-	/ 	/ 	/ 	/ 	/ 	/r   Nr   r   r   rd   ry   r^   r   r   r    r   r      s<            [ / / / / /r   r   c                   *    e Zd Zed             Zd ZdS )TestGAM6Bfgsc                     d}t          t          d         j        dg          }t          t          d         |d|z  dz            }|                    d	
          | _        d S )Nr   r1   r2   r3   rk   r   r   r   r   r   r   r   s       r    ry   zTestGAM6Bfgs.setup_class   sd    $G 4 ;DDDG,r'kAo/ / /::V:,,r   c                    | j         }|                                }d| _        t          j        g d          }t          |j        d d         || j                   t          |j        d d         || j                   d S )NrG   r   r   rH   rM   r   r]   r5   r   r   r[   r   rX   rM   r   r   s       r    r^   zTestGAM6Bfgs.test_fitted  s    y""$$H &A &A &A B B 	)#2#.0A!-	/ 	/ 	/ 	/+CRC02C!-	/ 	/ 	/ 	/ 	/ 	/r   Nr   r   r   r    r   r      <        - - [-/ / / / /r   r   c                   *    e Zd Zed             Zd ZdS )TestGAM6Bfgs0c                     d}t          t          d         j        dg          }t          t          d         |d          }|                    d	          | _        d S )
Nr   r1   r2   r3   rk   r   r   r   r   r   r   s       r    ry   zTestGAM6Bfgs0.setup_class  s\    $G 4 ;DDDG,r! ! !::V:,,r   c                    | j         }|                                }d| _        t          j        g d          }t          |j        d d         || j                   t          |j        d d         || j                   d S )NrG   )gGmg@g+8M@g4vqr @gd8i@gϲO!@g5I9h/@g%,vs0@g׎\0@gH4V1@gdX31@)-0@r   g:{+@gO'@gM_,C%@r   rH   r   r   s       r    r^   zTestGAM6Bfgs0.test_fitted  s    y""$$H &B &B &B C C 	)#2#.0A!-	/ 	/ 	/ 	/+CRC02C!-	/ 	/ 	/ 	/ 	/ 	/r   Nr   r   r   r    r   r     r   r   r   r   )<r   r   r   r   r   r   r   r   r   r   gΜ`eտgV_ӿg3}]8ɿg)H#gI7g_1Gr?g Gl?gĩpk?g%ٿ?g*di?gk5Eg0LgfIUg;\<MPgIv?g"KXgSeg\ȲBg|dig<g߿g܋ֿg	bGֿgjh9JտgA6>MԿgp\i ӿg"Αȿg3$ƿgx!ĿghiNgqHĻg[	>տg:eԿg{nӿgxRkҿgEmѿg'Iȿg5'Cǿg<|ƿg>W¿g͸?Ϝg1%ڿglQ6ڿgdڿg}4ڿg1D+ٿgh#ԿgWPh\ӿg%Cҿg2XοgA˿
   r2   F)orderc                   0    e Zd Zed             Zd Zd ZdS )TestGAM6ExogBfgsc                 "   d}t           d         j        d         }t          t           d         j        dgd          }t	          t           d         t          j        |          |d|z  d	z  
          }|                    d          | _        d S )Nr   r1   r   r2   r   r   rk   r   r   r   r   r   	r7   shaper   r   r   r5   onesrs   rM   r>   r   nobsr   r   s        r    ry   zTestGAM6ExogBfgs.setup_classL  s    $7#)!,G 4 ;,46 6 6G,bgdmm!#1w;?< < <::V:,,r   c                     | j         }|                                }d| _        t          |j        d d         t
          | j                   t          |j        d d         t
          | j                   d S NrG   r   rH   rM   r   r]   r   r[   r   r   rX   rM   r   s      r    r^   zTestGAM6ExogBfgs.test_fittedV      y""$$)#2#.0A!-	/ 	/ 	/ 	/+CRC02C!-	/ 	/ 	/ 	/ 	/ 	/r   c                 f    | j         j        j        }t          |d d         t          d           d S Nr   r   rH   rM   r~   rB   r   	pls6_exogrX   rB   s     r    	test_exogzTestGAM6ExogBfgs.test_exog`  >    y#SbS	9"	$ 	$ 	$ 	$ 	$ 	$r   Nr   r   r   rd   ry   r^   r   r   r   r    r   r   J  sK        - - [-/ / /$ $ $ $ $r   r   c                   0    e Zd Zed             Zd Zd ZdS )TestGAM6ExogPirlsc                 &   d}t           d         j        d         }t          t           d         j        dgd          }t	          t           d         t          j        |df          |d|z  d	z  
          }|                    d          | _        d S )Nr   r1   r   r2   r   r   rk   r   r   r   pirlsr   r   r   s        r    ry   zTestGAM6ExogPirls.setup_classh  s    $7#)!,G 4 ;,46 6 6G,bgtQi.@.@!#1w;?< < <::W:--r   c                     | j         }|                                }d| _        t          |j        d d         t
          | j                   t          |j        d d         t
          | j                   d S r   r   r   s      r    r^   zTestGAM6ExogPirls.test_fittedr  r   r   c                 f    | j         j        j        }t          |d d         t          d           d S r   r   r   s     r    r   zTestGAM6ExogPirls.test_exog|  r   r   Nr   r   r   r    r   r   f  sK        . . [./ / /$ $ $ $ $r   r   c                   0    e Zd Zed             Zd Zd ZdS )
TestGAMMPGc                 0   t          j        ddg          }t          j        ddg          }t          ddg         j        }t	          j        dt                    }t          |d	d
gd          }t          t          d         ||d|z  |z  dz                                            }|	                                | _
        t          t          d         ||d|z  |z  dz                                            }|	                    d          | _        d S )Ngj=^Y@gv3#?gܓ>gɱ ?r,   r-   fuel + drivedatar2      r   r   r)   r   r   rB   r   r   newtonr   )r5   r   df_autosr   patsydmatrixr   r   tolistrs   res1ares1b)r>   spr   x_splinerB   r   r   s          r    ry   zTestGAMMPG.setup_class  s    X')9:;;(02FGHHXt,-4}^(;;;aVJJJ,4" 7{R/!3;;==? ? ?JJLL	,4" 7{R/!3;;==? ? ?JJhJ//			r   c                     t           j                            t          dd          }t	          j        |          }|j        }| j        | j        fD ] }|j	        j
        }t          ||d           !d S )Nr(   zautos_exog.csvg+=)rK   )ospathjoincur_dirpdread_csvr   r   r   r~   rB   r   )rX   	file_pathdf_exog	res2_exogrM   rB   s         r    r   zTestGAMMPG.test_exog  ss    GLL)5EFF	+i((N	Z, 	9 	9D:?DD)%88888	9 	9r   c                    t           j                            t          dd          }t	          j        |d          }|j        dz
  |_        |d         j        }|d         j        }| j        | j	        fD ]g}|
                                }d| _        t          |j        |d	
           t          |j        |d	
           d}t          |j        ||z  d	
           hd S )Nr(   zautos_predict.csvz	Row.names)	index_colr   rs   se_fitrG   g|=rH   )r   r  r  r  r  r  indexr   r   r   r   r]   r   r[   r   se_mean)rX   r  df_predres2_fittedvaluesres2_se_meanrM   r   	corr_facts           r    r^   zTestGAMMPG.test_fitted  s    GLL)5HII	+i;???)#EN1x(/Z, 	P 	PD&&((D#DD-/@!&( ( ( (D/1B!&( ( ( ( IDL,*BOOOOO	P 	Pr   N)r   r   r   rd   ry   r   r^   r   r   r    r   r     sP        0 0 [0 9 9 9P P P P Pr   r   c                   R    e Zd Zed             Zed             Zd Zd Zd Zd Z	dS )TestGAMMPGBSc                    t          j        ddg          }t          j        ddg          x| _        }t          ddg         j        }t          j        t          j        dt                              | _        t          |d	d
gddgddgdd          }d|z  |z  dz  }t          t          d         | j        ||                                          }|                    d          | _        |                    dd          | _        | j        j        | _        t"          j        | _        d| _        d| _        ddg| _        d S )Ng??g@{LǕz@j{ZxZ>E?r,   r-   r   r      r      r   Tr4   degreevariable_namesr@   include_interceptr   r   r)   r   use_tr   r   r  rL   g B޾AgO&#@)r5   r   r   r   r   r6   r   r   rB   r   r   r   rs   r   r   _resultsrM   r   mpg_bsrN   r]   rR   r   r>   r   r   r   bsalpha0gam_bss          r    ry   zTestGAMMPGBS.setup_class  s@    X(*:;<< ",)D E EEgXt,-4 :emNJJJKKhB8QF&.%5"*(,. . .
 Wr!A%,38b%oo//1 1 1JJTJ**	JJhdJ;;	9%!( ():;			r   c                     d S r`   r   r>   s    r    rE   zTestGAMMPGBS._init      r   c                     | j         }| j        }t          |j        |j        d           |                                }t          ||j        d           d S )NrJ   rH   )rM   rN   r   edfedf_allget_hat_matrix_diaghatrX   rM   rN   r-  s       r    test_edfzTestGAMMPGBS.test_edf  sW    yy$,T::::&&((TXD111111r   c                     | j         }| j        }|j        j        j        }|d         j        }t          ||j        j        |j        j	        z  d           d S Nr   rJ   rH   
rM   rN   r~   r   	smootherscov_der2r   smooth0SS_scalerX   rM   rN   r3  pen_matrix0s        r    test_smoothzTestGAMMPGBS.test_smooth  s_    yyJ'1	l+T\^dl6J%J!	# 	# 	# 	# 	# 	#r   c                    | j         }| j        }|                    | j        dd         |j        j        j        dd                   }t          ||j        dd         d           t          ||j	        dd         | j
                   d S r   )rM   rN   r   rB   r~   r   r   r   r[   r\   r]   r   s       r    r   zTestGAMMPGBS.test_predict  s    yyLL1Q31D1Fqs1KLL		4#4QqS#9"	$ 	$ 	$ 	$	4#5ac#:!-	/ 	/ 	/ 	/ 	/ 	/r   c                    | j         j        }t          |j        | j                   t	          | j         j        dd           |                                d         }t	          |ddgd           t          |j        | j                   t          |j        j        d           |j        	                                }t          |d d d df         d           t          |d dd d f         d           t	          | j         j        dd           t          j                            d	           |                    d
d          \  }}t	          |ddgd           t          |j        | j                   t          |j        j        d           |j        	                                }t          |d d d df         d           t          |d dd d f         d           t	          | j         j        dd           d S )NgJp@r   rH   r   gK}v@g5<`@gMbP?r   i r  r2   )k_foldsk_gridg    cAg{9@rG   )rM   r~   r   r   r   rS   select_penweightr   	start_idxrC   r5   randomseedselect_penweight_kfold)rX   r   	alpha_aicpmalpha_cv_s         r    test_crossvalzTestGAMMPGBS.test_crossval  s   ioSY
+++	);%HHHH((**1-		O\#BNNNNSY
+++SY(!,,,Y%%''R2A2Y"""RAAAY"""	);%HHHH
	v0010EE!:/?"@tLLLLSY
+++SY(!,,,Y%%''R2A2Y"""RAAAY"""	);%HHHHHHr   N)
r   r   r   rd   ry   rE   r/  r:  r   rH  r   r   r    r  r    s         < < [<<   [2 2 2# # #/ / /I I I I Ir   r  c                   X    e Zd Zed             Zed             Zd Zd Zd Zd Z	d Z
dS )	TestGAMMPGBSPoissonc                    t          j        ddg          }t          j        ddg          x| _        }t          ddg         j        }t          j        dt                    | _        t          |d	d
gddgddgdd          }d|z  |z  dz  }t          t          d         | j        |t          j                    |          }| j        j        j        |j        j        z   }||j        d d <   |                    d          | _        |                    dd          | _        | j        j        | _        t,          j        | _        d| _        d| _        d S )N<,l@H=<`Ar  r  r,   r-   r   r   r  r   r  r   Tr  r   r   r)   )rB   r   r
   r   Fr  r   r  rL   )r5   r   r   r   r   r   r   rB   r   r   r
   r   design_infocolumn_namesr   	col_names
exog_namesrs   r   r   r   rM   r   mpg_bs_poissonrN   r]   rR   )r>   r   r   r   r#  r$  r%  xnamess           r    ry   zTestGAMMPGBSPoisson.setup_class  sQ    X')9:;; ",)D E EEgXt,-4=h???hB8QF&.%5"*(,. . .
 Wr!A%,38b%~//v? ? ? %2V_5NN%!!!JJUJ++	JJhdJ;;	9%)8r   c                     d S r`   r   r'  s    r    rE   zTestGAMMPGBSPoisson._init/  r(  r   c                 X   | j         }| j        }t          |j        |j        d           |                                }t          ||j        d           t          |j        |j        d           t          |j        |j        d           t          |j	        |j
        d           d S )NrJ   rH   rL   )rM   rN   r   r*  r+  r,  r-  aicdeviancedf_residresidual_dfr.  s       r    r/  zTestGAMMPGBSPoisson.test_edf3  s    yy$,T::::&&((TXD1111$(6666t}4@@@@t'7dCCCCCCr   c                     | j         }| j        }|j        j        j        }|d         j        }t          ||j        j        |j        j	        z  d           d S r1  r2  r8  s        r    r:  zTestGAMMPGBSPoisson.test_smooth=  s_    yyJ'1	l+T\^dl6J%J!	# 	# 	# 	# 	# 	#r   c                    | j         }| j        }|                    t          j        dd         |j        j        j        dd                   }t          ||j	        dd         d           t          ||j
        dd         | j                   t          j        |j        j        j        dd                   }|                    t          j        dd         |d          }t          ||j        dd         | j                   t          |j        j        ddg           t          |j        j        ddg           d S )Nr   r   r   rH   linear)whichr  )rM   rN   r   r   ilocr~   r   r   r   r[   r\   r]   r  	DataFramelinear_predictorsr   r  r   )rX   rM   rN   r   xplinpreds         r    r   z TestGAMMPGBSPoisson.test_predictF  sP   yy LLqs!3!%!4!6qs!;= =		4#4QqS#9"	$ 	$ 	$ 	$	4#5ac#:!-	/ 	/ 	/ 	/
 \$*-/!455,,x}QqS12%-  / /!7!!<!-	/ 	/ 	/ 	/ 	Y_+aV444W])Aq622222r   c                 *   | j         }| j        }|                    dg dd          }t          |j        d d         |j        d           t          |j        d d         |j        d           t          |j	        d d         |j
                   d S )NT)r*   r+   r,   r-   )skip_singlecombine_termsscalarr   rq   rH   rJ   )rM   rN   wald_test_termsr   	statisticpTerms_chi_sqpvalues	pTerms_pvr   df_constraints	pTerms_df)rX   rM   rN   wtts       r    	test_waldzTestGAMMPGBSPoisson.test_wald]  s    yy""t2B 2B 2B*. # 0 0
 	bqb)4+=DIIIIBQBdCCCCS'+T^<<<<<r   c                     | j         }|j        j        }|j                                        }t	          |d         |d           d S )Nr   g-C6
?rH   )rM   r~   r   r?  r   )rX   rM   
alpha_mgcvres_ss       r    test_select_alphaz%TestGAMMPGBSPoisson.test_select_alphai  sE    yZ%

++--a*4888888r   N)r   r   r   rd   ry   rE   r/  r:  r   ro  rs  r   r   r    rJ  rJ    s           [8   [D D D# # #3 3 3.
= 
= 
=9 9 9 9 9r   rJ  c                   *    e Zd Zed             Zd ZdS )TestGAMMPGBSPoissonFormulac                 L   t          j        ddg          }t          j        ddg          x| _        }t          j        dt
                    | _        t
          ddg         j        }t          |d	d
gddgddgdd          }d|z  |z  dz  }t          j
        dt
          |t          j                    |          }|                    d          | _        |                    dd          | _        | j        j        | _        t$          j        | _        d| _        d| _        d S )NrL  rM  r  r  r   r   r,   r-   r  r   r  r   Tr  r   r   zcity_mpg ~ fuel + drive)r   r
   r   Fr  r   r  rL   )r5   r   r   r   r   r   rB   r   r   r   from_formular
   r   rs   r   r   r   rM   r   rR  rN   r]   rR   r"  s          r    ry   z&TestGAMMPGBSPoissonFormula.setup_classs  s'    X')9:;; ",)D E EEg=h???Xt,-4hB8QF&.%5"*(,. . .
 Wr!A%$%>.09I9I+13 3 3 JJUJ++	JJhdJ;;	9%)8r   c                 "   | j         }g d}t          |j        j        |           t          |j        j        j        |d d                    t          |j        j        dd         j        j	        ddg           t          |j
        j        j	        |           t          t          |j
        t          j                             t          t          |t                               t          t          |j        t"                               d S )N)	Interceptzfuel[T.gas]zdrive[T.fwd]zdrive[T.rwd]	weight_s0	weight_s1	weight_s2	weight_s3	weight_s4	weight_s5	weight_s6	weight_s7	weight_s8	weight_s9
weight_s10hp_s0hp_s1hp_s2hp_s3hp_s4hp_s5hp_s6hp_s7hp_s8r   r   r  )r   r   r~   rQ  design_info_linearrO  r[   r^  r  r   rO   r   
isinstancer  Seriesr   r   r   )rX   r   rS  s      r    test_names_wrapperz-TestGAMMPGBSPoissonFormula.test_names_wrapper  s    
- - - 	U[+V444U[3@BQBZ	! 	! 	! 	U',QqS17>AGGGU\'.777
5<33444
5"677888
5>=99:::::r   N)r   r   r   rd   ry   r  r   r   r    ru  ru  p  s>           [8; ; ; ; ;r   ru  )L__doc__r   numpyr5   numpy.testingr   r   r   pandasr  re   r   #statsmodels.discrete.discrete_modelr   r   r   +statsmodels.genmod.generalized_linear_modelr	   statsmodels.genmod.familiesr
   (statsmodels.sandbox.regression.penalizedr   statsmodels.base._penalizedr   statsmodels.base._penaltiesbase
_penaltiesr   statsmodels.gam.smooth_basisr   r   *statsmodels.gam.generalized_additive_modelr   r   r   statsmodels.tools.linalgr   r   r(   r   r   r   r   r#   r%   r'   r  dirnameabspath__file__r  r  r  r  r7   	df_autos_dropnar   r/   ri   r   r   r   r   r   r   r   r   reshaper   r   r   r   r  rJ  ru  r   r   r    <module>r     s    
			     @ @ @ @ @ @ @ @ @ @       F F F F F F F F F F ; ; ; ; ; ; . . . . . . = = = = = = 6 6 6 6 6 6 + + + + + + + + + G G G G G G G G1 1 1 1 1 1 1 1 1 1 E D D D D D D D H H H H H H H H H H	 	 	 	 	~w 	 	 		 	 	 	 	^U 	 	 		 	 	 	 	nf 	 	 		 	 	 	 	>3 	 	 	 '//"'//(33
4
4GLL)-=>>	bk)$$GLL)[99	BK	""	BBBCJJLL% % % % % % % %P, , , , ,M , , ,@A A A A A= A A AD    M   */ / / / /= / / /</ / / / / / / />/ / / / / / / /6/ / / / / / / /6 BH 9 9 9 : :  BH     $ wr1Cw  % 
*$ $ $ $ $ $ $ $8$ $ $ $ $ $ $ $80P 0P 0P 0P 0P 0P 0P 0PfWI WI WI WI WI= WI WI WIt^9 ^9 ^9 ^9 ^9- ^9 ^9 ^9B2; 2; 2; 2; 2;!4 2; 2; 2; 2; 2;r   