
    "g_`                     *   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\                  j_                  ej\                  ja                  e1            Z2ej\                  jg                  e2dd      Z4 e	jj                  e4      Z6ej\                  jg                  e2dd      Z4 e	jj                  e4      Z7e7g d   jq                         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j                  g d*      ZC ej                  g d+      j                  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      ZKy)<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y)PoissonPenalizedN__name__
__module____qualname__     a/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/gam/tests/test_penalized.pyr   r   "       r   r   c                       e Zd Zy)LogitPenalizedNr   r   r   r    r#   r#   &   r!   r   r#   c                       e Zd Zy)ProbitPenalizedNr   r   r   r    r%   r%   *   r!   r   r%   c                       e Zd Zy)GLMPenalizedNr   r   r   r    r'   r'   .   r!   r   r'   resultszmotorcycle.csvz	autos.csv)city_mpgfueldriveweighthpc                   `    e Zd Zed        Zd Zd Zej                  j                  d        Z
y)CheckGAMMixinc                    t        t        j                  t        d         dg      }t        j                  |j
                  j                  d            }t        |      }|j
                  j                  |      }|j                  j                  |j                  d         j                  |      }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sKmmDJJOOA$67#K0zz~~f%d&;&;A&>?CCFK!.1^[00r   c                    | j                   }| j                  }t        |j                  |j                  d       t        t	        j
                  |j                               |j                  | j                  z  dd       t        |j                  |j                  | j                  z  d       t        t	        j
                  |j                        |j                  t	        j                  | j                        z  dd       y )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    yyyyT[[t<

4??#45$"4"444d	L 	

DJJ1C1C$C!	# 	

488,"''$*<*<"==!	.r   c                     | j                   }| j                  }t        |j                  |j                  | j
                         y )NrH   )rM   rN   r   fittedvaluesfitted_valuesrtol_fittedrW   s      r    test_fittedzCheckGAMMixin.test_fittedY   s5    yyyy))4+=+=!--	/r   c                 0    | j                   j                   y 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/   <   s<    
1 
1./ [[ r   r/   c                   ,    e Zd ZdZed        Zd Zd Zy)TestTheilPLS5z
data-priorc                 
   | j                         \  }}}t        d   }t        |||      }d}d}d|z  |z  x| _        }|j	                  || j
                        | _        t        j                  | _	        d| _
        d| _        y )	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    ,/IIK)nkG$tk:	$'kI--88rCLL8A##/r   c                    | j                   }| j                  }|j                  }|j                  j	                  |d      }t        t        j                  |j                               |j                  | j                  z  d       y )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   sd    yyyy%%zz~~j~A

4??#45$"4"444	Ar   c                 .    t        j                  d       y )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   s$    H0 0A,r   ri   c                   &    e Zd ZdZed        Zd Zy)TestGLMPenalizedPLS5	nonrobustc                 j   | j                         \  }}}t        d   }t        j                  |      }t	        ||t        j                         |      }d}d|z  dz  x| _        |_        |j                  | j                  ddd	d
d      | _        t        j                  | _        d| _        d| _        y )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    ,/IIK)nkG$(([A5$v/@!$& 	"#i-!"3377CLL !T  ;## /r   c                 &   | j                   }| j                  }|j                  j                  }|j                  j	                  |d      }t        t        j                  |j                               |j                  | j                  z  d       y )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   sh    yyyyZZ""zz~~e~<

4??#45$"4"444	Ar   N)r   r   r   rp   rd   ry   r   r   r   r    r   r      s    H/ /&Ar   r   c                        e Zd ZdZed        Zy)TestGAM5Pirlsr   c                     d}t         d   j                  }t         d   }t        |dgd      }t        ||d|z  dz  	      }|j	                         | _        t        j                  | _        d
| _	        d| _
        y )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   sr    $ ''G$qcx@!g+/B::<## r   N)r   r   r   rp   rd   ry   r   r   r    r   r      s    H r   r   c                   &    e Zd ZdZed        Zd Zy)TestGAM5Bfgsr   c                     d}t         d   j                  }t         d   }t        |dgd      }t        ||d|z  dz  	      }|j	                  d
      | _        t        j                  | _        d| _	        d| _
        y )Nr   r1   rk   r2   r   r   r   r   r   r   r   rG   r   r   s         r    ry   zTestGAM5Bfgs.setup_class   sw    $ ''G$qcx@!g+/B::V:,## r   c                    | j                   }| j                  }|j                  d |j                  j                  j
                  dd       }t        ||j                  dd d       t        ||j                  dd | j                         y Nr      vIh%<=rH   )
rM   rN   predictr~   r   r   r   r[   r\   r]   rX   rM   rN   	predicteds       r    test_predictzTestGAM5Bfgs.test_predict   sy    yyyyLLtzz':':'<'<Qq'AB		4#4#4Qq#9"	$	4#5#5a#:!--	/r   N)r   r   r   rp   rd   ry   r   r   r   r    r   r      s    H /r   r   c                   "    e Zd Zed        Zd Zy)TestGAM6Pirlsc                     d}t        t        d   j                  dg      }t        t        d   |d|z  dz        }|j	                         | _        y )	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   sK    $G 4 ; ;DG,r'kAo/::<r   c                    | j                   }|j                         }d| _        t        j                  g d      }t        |j                  d d || j                         t        |j                  d d || j                         |j                  d |j                  j                  j                  dd       }t        ||dd | j                         y )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    yy""$HH &A B 	))#2.0A!--	/++CR02C!--	/ LLtzz':':'<'<Qq'AB		#4Qq#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y)TestGAM6Bfgsc                     d}t        t        d   j                  dg      }t        t        d   |d|z  dz        }|j	                  d	
      | _        y )Nr   r1   r2   r3   rk   r   r   r   r   r   r   r   s       r    ry   zTestGAM6Bfgs.setup_class   sP    $G 4 ; ;DG,r'kAo/::V:,r   c                    | j                   }|j                         }d| _        t        j                  g d      }t        |j                  d d || j                         t        |j                  d d || j                         y )NrG   r   r   rH   rM   r   r]   r5   r   r   r[   r   rX   rM   r   r   s       r    r^   zTestGAM6Bfgs.test_fitted  s    yy""$HH &A B 	))#2.0A!--	/++CR02C!--	/r   Nr   r   r   r    r   r          - -/r   r   c                   "    e Zd Zed        Zd Zy)TestGAM6Bfgs0c                     d}t        t        d   j                  dg      }t        t        d   |d      }|j	                  d	      | _        y )
Nr   r1   r2   r3   rk   r   r   r   r   r   r   s       r    ry   zTestGAM6Bfgs0.setup_class  sH    $G 4 ; ;DG,r!::V:,r   c                    | j                   }|j                         }d| _        t        j                  g d      }t        |j                  d d || j                         t        |j                  d d || j                         y )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    yy""$HH &B C 	))#2.0A!--	/++CR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                   (    e Zd Zed        Zd Zd Zy)TestGAM6ExogBfgsc                     d}t         d   j                  d   }t        t         d   j                  dgd      }t	        t         d   t        j                  |      |d|z  d	z  
      }|j                  d      | _        y )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  st    $7#))!,G 4 ; ;,46G,bggdm!#1w;?<::V:,r   c                     | j                   }|j                         }d| _        t        |j                  d d t
        | j                         t        |j                  d d t
        | j                         y NrG   r   rH   rM   r   r]   r   r[   r   r   rX   rM   r   s      r    r^   zTestGAM6ExogBfgs.test_fittedV  g    yy""$))#2.0A!--	/++CR02C!--	/r   c                 n    | j                   j                  j                  }t        |d d t        d       y Nr   r   rH   rM   r~   rB   r   	pls6_exogrX   rB   s     r    	test_exogzTestGAM6ExogBfgs.test_exog`  *    yy##Sb	9"	$r   Nr   r   r   rd   ry   r^   r   r   r   r    r   r   J  s    - -/$r   r   c                   (    e Zd Zed        Zd Zd Zy)TestGAM6ExogPirlsc                    d}t         d   j                  d   }t        t         d   j                  dgd      }t	        t         d   t        j                  |df      |d|z  d	z  
      }|j                  d      | _        y )Nr   r1   r   r2   r   r   rk   r   r   r   pirlsr   r   r   s        r    ry   zTestGAM6ExogPirls.setup_classh  sy    $7#))!,G 4 ; ;,46G,bggtQi.@!#1w;?<::W:-r   c                     | j                   }|j                         }d| _        t        |j                  d d t
        | j                         t        |j                  d d t
        | j                         y r   r   r   s      r    r^   zTestGAM6ExogPirls.test_fittedr  r   r   c                 n    | j                   j                  j                  }t        |d d t        d       y r   r   r   s     r    r   zTestGAM6ExogPirls.test_exog|  r   r   Nr   r   r   r    r   r   f  s    . ./$r   r   c                   (    e Zd Zed        Zd Zd Zy)
TestGAMMPGc                    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  j                               }|j                         | _
        t        t        d   ||d|z  |z  dz  j                               }|j                  d      | _        y )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     XX')9:;((02FGHXt,-44}}^(;aVJ,4" 7{R/!3;;=?JJL	,4" 7{R/!3;;=?JJhJ/	r   c                    t         j                  j                  t        dd      }t	        j
                  |      }|j                  }| j                  | j                  fD ]&  }|j                  j                  }t        ||d       ( y )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  se    GGLL)5EF	++i(NN	ZZ, 	9D::??DD)%8	9r   c                    t         j                  j                  t        dd      }t	        j
                  |d      }|j                  dz
  |_        |d   j                  }|d   j                  }| j                  | j                  fD ]f  }|j                         }d| _        t        |j                  |d	
       t        |j                  |d	
       d}t        |j                  ||z  d	
       h y )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    GGLL)5HI	++i;?)#EN11x(//ZZ, 	PD&&(D#DD--/@!&(D//1B!&( IDLL,*BO	Pr   N)r   r   r   rd   ry   r   r^   r   r   r    r   r     s    0 0 9Pr   r   c                   D    e Zd Zed        Zed        Zd Zd Zd Zd Z	y)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                  ||j                               }|j                  d      | _        |j                  dd      | _        | j                  j                  | _        t"        j$                  | _        d| _        d| _        ddg| _        y )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%    XX(*:;< ",)D EEgXt,-44 ::emmNJKhB8QF&.%5"*(,.
 Wr!A%,388b%oo/1JJTJ*	JJhdJ;	99%%!(( ():;	r   c                      y r`   r   r>   s    r    rE   zTestGAMMPGBS._init      r   c                     | j                   }| j                  }t        |j                  |j                  d       |j                         }t        ||j                  d       y )NrJ   rH   )rM   rN   r   edfedf_allget_hat_matrix_diaghatrX   rM   rN   r-  s       r    test_edfzTestGAMMPGBS.test_edf  sF    yyyy$,,T:&&(TXXD1r   c                    | j                   }| j                  }|j                  j                  j                  }|d   j
                  }t        ||j                  j                  |j                  j                  z  d       y 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^    yyyyJJ''11	l++T\\^^dll6J6J%J!	#r   c                 4   | j                   }| j                  }|j                  | j                  dd |j                  j
                  j                  dd       }t        ||j                  dd d       t        ||j                  dd | j                         y r   )rM   rN   r   rB   r~   r   r   r   r[   r\   r]   r   s       r    r   zTestGAMMPGBS.test_predict  s    yyyyLL1Q1D1D1F1Fq1KL		4#4#4Qq#9"	$	4#5#5a#:!--	/r   c                    | j                   j                  }t        |j                  | j                         t	        | j                   j
                  dd       |j                         d   }t	        |ddgd       t        |j                  | j                         t        |j                  j                  d       |j                  j                         }t        |d d d df   d       t        |d dd d f   d       t	        | j                   j
                  dd       t        j                  j                  d	       |j                  d
d      \  }}t	        |ddgd       t        |j                  | j                         t        |j                  j                  d       |j                  j                         }t        |d d d df   d       t        |d dd d f   d       t	        | j                   j
                  dd       y )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   iiooSYY

+		);%H((*1-		O\#BNSYY

+SYY((!,YY%%'R2A2Y"RAY"		);%H
		v0010E!:/?"@tLSYY

+SYY((!,YY%%'R2A2Y"RAY"		);%Hr   N)
r   r   r   rd   ry   rE   r/  r:  r   rH  r   r   r    r  r    s?     < <<  2#/Ir   r  c                   J    e Zd Zed        Zed        Zd Zd Zd Zd Z	d Z
y)	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  |j#                  d      | _        |j#                  dd      | _        | j$                  j(                  | _        t,        j.                  | _        d| _        d| _        y )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  sC    XX')9:; ",)D EEgXt,-44==h?hB8QF&.%5"*(,.
 Wr!A%,388b%~~/v? %%22V__5N5NN%!JJUJ+	JJhdJ;	99%%)88r   c                      y r`   r   r'  s    r    rE   zTestGAMMPGBSPoisson._init/  r(  r   c                    | j                   }| j                  }t        |j                  |j                  d       |j                         }t        ||j                  d       t        |j                  |j                  d       t        |j                  |j                  d       t        |j                  |j                  d       y )NrJ   rH   rL   )rM   rN   r   r*  r+  r,  r-  aicdeviancedf_residresidual_dfr.  s       r    r/  zTestGAMMPGBSPoisson.test_edf3  s    yyyy$,,T:&&(TXXD1$((6t}}4@t'7'7dCr   c                    | j                   }| j                  }|j                  j                  j                  }|d   j
                  }t        ||j                  j                  |j                  j                  z  d       y r1  r2  r8  s        r    r:  zTestGAMMPGBSPoisson.test_smooth=  s^    yyyyJJ''11	l++T\\^^dll6J6J%J!	#r   c                    | j                   }| 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       }|j                  t        j                  dd |d      }t        ||j                  dd | j                         t        |j                   j"                  ddg       t        |j                   j"                  ddg       y )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  s)   yyyy LLq!3!%!4!4!6!6q!;=		4#4#4Qq#9"	$	4#5#5a#:!--	/
 \\$**--//!45,,x}}Qq12%-  /!7!7!!<!--	/ 	Y__++aV4W]]))Aq62r   c                 :   | j                   }| j                  }|j                  dg dd      }t        |j                  d d |j
                  d       t        |j                  d d |j                  d       t        |j                  d d |j                         y )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    yyyy""t2B*. # 0
 	bq)4+=+=DIBQdCS''+T^^<r   c                     | j                   }|j                  j                  }|j                  j                         }t	        |d   |d       y )Nr   g-C6
?rH   )rM   r~   r   r?  r   )rX   rM   
alpha_mgcvres_ss       r    test_select_alphaz%TestGAMMPGBSPoisson.test_select_alphai  s<    yyZZ%%


++-a*48r   N)r   r   r   rd   ry   rE   r/  r:  r   ro  rs  r   r   r    rJ  rJ    sD      8  D#3.
=9r   rJ  c                   "    e Zd Zed        Zd Zy)TestGAMMPGBSPoissonFormulac                 V   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                         |      }|j                  d      | _        |j                  dd      | _        | j                  j                   | _        t$        j&                  | _        d| _        d| _        y )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    XX')9:; ",)D EEg==h?Xt,-44hB8QF&.%5"*(,.
 Wr!A%$$%>.09I+13 JJUJ+	JJhdJ;	99%%)88r   c                 V   | 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"                     y )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U[[33@@BQZ	! 	U'',,Qq177>>AGU\\''..7
5<<34
5"678
5>>=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 ; . = 6 + + G1 1 E H H	~w 		^U 		nf 		>3 	 ''//"''//(3
4GGLL)-=>	bkk)$GGLL)[9	BKK	"	BCJJL% %P,M ,@A= ADM */= /</ />/ /6/ /6 BHH 9 :  BHH  $ wr1Cw % 
*$ $8$ $80P 0PfWI= WIt^9- ^9B2;!4 2;r   