U
    Ãmœdw`  ã                >   @   s  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  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„ deeƒZ*G dd„ deeƒZ+G dd„ deeƒZ,G dd„ deeƒZ-ej. /ej. 0e1¡¡Z2ej. 3e2dd¡Z4e	 5e4¡Z6ej. 3e2dd¡Z4e	 5e4¡Z7e7dddddg  8¡ Z9G dd„ dƒZ:G d d!„ d!e:ƒZ;G d"d#„ d#e:ƒZ<G d$d%„ d%e:ƒZ=G d&d'„ d'e:ƒZ>G d(d)„ d)ƒZ?G d*d+„ d+ƒZ@G d,d-„ d-ƒZAe Bd.d/d0d1d2d3d4d5d6d7d8d8d9d:d;g¡ZCe Bddddddddddd<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmg<¡jDdndodpdq�ZEG drds„ dsƒZFG dtdu„ duƒZGG dvdw„ dwƒZHG dxdy„ dye:ƒZIG dzd{„ d{e:ƒZJG d|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                   @   s   e Zd ZdS )ÚPoissonPenalizedN©Ú__name__Ú
__module__Ú__qualname__© r   r   ú]/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/gam/tests/test_penalized.pyr   #   s   r   c                   @   s   e Zd ZdS )ÚLogitPenalizedNr   r   r   r   r   r   '   s   r   c                   @   s   e Zd ZdS )ÚProbitPenalizedNr   r   r   r   r   r   +   s   r   c                   @   s   e Zd ZdS )ÚGLMPenalizedNr   r   r   r   r   r    /   s   r    Úresultszmotorcycle.csvz	autos.csvÚcity_mpgÚfuelÚdriveÚweightÚhpc                   @   s8   e Zd Zedd„ ƒZdd„ Zdd„ Zejj	dd„ ƒZ
d	S )
ÚCheckGAMMixinc                 C   sh   t t td ¡dgd�}t |j d¡¡}t|ƒ}|j |¡}|j	 |j
d ¡ |¡}t|ƒ}|||fS )NÚtimesé   ©Údfr   )r   ÚnpÚasarrayÚdata_mcycleZ
atleast_2dZbasisZmeanr   ÚdotÚTZpenalty_matricesr   )ÚclsZcc_hÚconstraintsZtransfÚexogÚpenalty_matrixÚrestrictionr   r   r   Ú_init?   s    zCheckGAMMixin._initc                 C   s‚   | j }| j}t|j|jdd� tt | ¡ ¡|j| j ddd� t|j	|j	| j dd� tt |j
¡|jt | j¡ ddd� d S )Nçñhãˆµøä>©Úrtolç�íµ ÷Æ°>g•Ö&è.>)r9   Úatolç:Œ0âŽyE>)Úres1Úres2r   Úparamsr,   r-   Ú
cov_paramsZVpÚcovp_corrfactÚscaleZbseÚseÚsqrt©Úselfr=   r>   r   r   r   Útest_paramsL   s     
  ÿÿ þzCheckGAMMixin.test_paramsc                 C   s$   | j }| j}t|j|j| jd� d S )Nr8   )r=   r>   r   ÚfittedvaluesÚfitted_valuesÚrtol_fittedrE   r   r   r   Útest_fittedZ   s
    
ÿzCheckGAMMixin.test_fittedc                 C   s   | j j d S ©N)r=   Zllnull©rF   r   r   r   Útest_null_smoke`   s    zCheckGAMMixin.test_null_smokeN)r   r   r   Úclassmethodr6   rG   rK   ÚpytestÚmarkZsmokerN   r   r   r   r   r'   =   s   
r'   c                   @   s,   e Zd ZdZedd„ ƒZdd„ Zdd„ ZdS )	ÚTestTheilPLS5z
data-priorc           	      C   sh   |   ¡ \}}}td }t|||d�}d}d}d| |  | _}|j|| jd�| _tj| _	d| _
d| _d S )	NÚaccel)Zr_matrixç<mÇ³Oðš?gö<-.÷•@r   ©Ú
pen_weightÚcov_typeçH¯¼šò×z>g]áj¨‹îï?)r6   r.   r
   ÚpwÚfitrW   r=   r   Úpls5r>   rJ   rA   )	r1   r3   r4   r5   ÚendogZmodpÚ	s_scale_rZsigma_erY   r   r   r   Úsetup_classi   s    zTestTheilPLS5.setup_classc                 C   sF   | j }| j}|j}|jj|dd�}tt | ¡ ¡|j	| j
 dd� d S )NÚsandwichrU   ç-Cëâ6?r8   )r=   r>   Zpenalization_factorÚmodelrZ   r   r,   r-   r@   ÚVerA   ©rF   r=   r>   rY   r   r   r   Útest_cov_robusty   s    
 ÿzTestTheilPLS5.test_cov_robustc                 C   s   t  d¡ d S )Nzllnull not available)rP   ÚskiprM   r   r   r   rN   �   s    zTestTheilPLS5.test_null_smokeN)r   r   r   rW   rO   r^   rd   rN   r   r   r   r   rR   e   s
   
rR   c                   @   s$   e Zd ZdZedd„ ƒZdd„ ZdS )ÚTestGLMPenalizedPLS5Ú	nonrobustc                 C   s€   |   ¡ \}}}td }tj|d�}t||t ¡ |d�}d}d| d  | _|_|j	| j
ddd	d
dd�| _tj| _d| _d| _d S )NrS   )r5   )r	   ÚpenalrT   r   é   Úbfgséd   r   FZx2)rW   ÚmethodÚmaxiterZdispZtrimrB   r7   gôÖø#n
ð?)r6   r.   ÚsmpenZL2ConstraintsPenaltyr    r	   ZGaussianrY   rV   rZ   rW   r=   r   r[   r>   rJ   rA   )r1   r3   r4   r5   r\   ÚpenÚmodr]   r   r   r   r^   ‰   s     ÿ  ÿz TestGLMPenalizedPLS5.setup_classc                 C   sH   | j }| j}|jj}|jj|dd�}tt | ¡ ¡|j	| j
 dd� d S )NZHC0rU   r`   r8   )r=   r>   ra   rV   rZ   r   r,   r-   r@   rb   rA   rc   r   r   r   Ú_test_cov_robust�   s    
 ÿz%TestGLMPenalizedPLS5._test_cov_robustN)r   r   r   rW   rO   r^   rq   r   r   r   r   rf   …   s   
rf   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚTestGAM5Pirlsrg   c                 C   s^   d}t d j}t d }t|dgdd�}t||d| d d	�}| ¡ | _tj| _d
| _	d| _
d S )NçÞîºOðš?r(   rS   r)   Úcenter©r+   r2   r   ri   ©ÚsmootherÚalphagê-�™—q=©r.   Úvaluesr   r   rZ   r=   r   r[   r>   rJ   rA   ©r1   Ús_scaleÚxr\   ÚccÚgam_ccr   r   r   r^   «   s    

zTestGAM5Pirls.setup_classN)r   r   r   rW   rO   r^   r   r   r   r   rr   §   s   rr   c                   @   s$   e Zd ZdZedd„ ƒZdd„ ZdS )ÚTestGAM5Bfgsrg   c                 C   sb   d}t d j}t d }t|dgdd�}t||d| d d	�}|jd
d�| _tj| _d| _	d| _
d S )Nrs   r(   rS   r)   rt   ru   r   ri   rv   rj   ©rl   r7   ry   r{   r   r   r   r^   À   s    
zTestGAM5Bfgs.setup_classc                 C   s\   | j }| j}| d |jjjdd… ¡}t||jdd… dd� t||jdd… | j	d� d S ©Nri   é   ç‚vIhÂ%<=r8   )
r=   r>   Úpredictra   rw   r}   r   rH   rI   rJ   ©rF   r=   r>   Ú	predictedr   r   r   Útest_predictÐ   s    ÿÿzTestGAM5Bfgs.test_predictN)r   r   r   rW   rO   r^   rˆ   r   r   r   r   r€   ¼   s   
r€   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestGAM6Pirlsc                 C   s@   d}t td jdgd�}ttd |d| d d�}| ¡ | _d S )	Nrs   r(   r)   r*   rS   r   ri   rv   ©r   r.   rz   r   rZ   r=   ©r1   r|   r~   r   r   r   r   r^   Ü   s    

ÿzTestGAM6Pirls.setup_classc                 C   s¦   | j }| ¡ }d| _t dddddddd	d
ddddddg¡}t|jd d… || jd� t|jd d… || jd� | d |j	j
jdd… ¡}t||dd… | jd� d S )NrX   ç±²OÄ™@ç …zß°!	@ç¾Óú¨÷@ç�¢ldÿ‰@çDi/óøü@çt;ÇÆÞ+@ç¯™(T-@ç	¯g@’-@çº°�þ6<.@çeBøWœ-@ç›c)±”+@çx7\\}™&@ç…|x“œ#@ç§ ÂòZö @é   r8   ri   rƒ   )r=   Úget_predictionrJ   r,   Úarrayr   rH   Úpredicted_meanr…   ra   rw   r}   )rF   r=   ÚpredÚpls6_fittedvaluesr‡   r   r   r   rK   å   s<              ûÿÿÿzTestGAM6Pirls.test_fittedN©r   r   r   rO   r^   rK   r   r   r   r   r‰   Ú   s   
r‰   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestGAM6Bfgsc                 C   sD   d}t td jdgd�}ttd |d| d d�}|jd	d
�| _d S )Nrs   r(   r)   r*   rS   r   ri   rv   rj   r�   rŠ   r‹   r   r   r   r^   û   s    

ÿzTestGAM6Bfgs.setup_classc                 C   st   | j }| ¡ }d| _t dddddddd	d
ddddddg¡}t|jd d… || jd� t|jd d… || jd� d S )Nr7   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r8   ©r=   r›   rJ   r,   rœ   r   rH   r�   ©rF   r=   rž   rŸ   r   r   r   rK     s4              ûÿÿzTestGAM6Bfgs.test_fittedNr    r   r   r   r   r¡   ù   s   
r¡   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestGAM6Bfgs0c                 C   s<   d}t td jdgd�}ttd |dd�}|jdd	�| _d S )
Nrs   r(   r)   r*   rS   r   rv   rj   r�   rŠ   r‹   r   r   r   r^     s    
ÿzTestGAM6Bfgs0.setup_classc                 C   st   | j }| ¡ }d| _t dddddddd	d
ddddddg¡}t|jd d… || jd� t|jd d… || jd� d S )Nr7   gG£m¹g@g’+8ûˆM@g4vìqr @gd8îi@gŽÏ²O˜È!@g5I¢‘9h/@g%ä,vs0@g×Ž°\¿0@g¨H4¿öV1@gídœX31@gÉû )¹-0@gü:Ý{+@gÞýO¥è'@gM_,C–Ð%@rš   r8   r¢   r£   r   r   r   rK     s4              ûÿÿzTestGAM6Bfgs0.test_fittedNr    r   r   r   r   r¤     s   
r¤   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   gôÎœ½`eÕ¿g—V·—ü_Ó¿g3}]©8›É¿gœ›)ûH#À¿gœ»I£7ò¨¿gé_1G¾rÙ?gõÎ GälÞ?gòÄ©´pkà?g§%Ù¿ðå?gÝ*di¸×ç?gŠñk5ÈEä¿g…0ø�²Lä¿gfI”�ÉUä¿g;\<MPä¿gIvµÞ?ä¿g"°KæXàâ¿güÛSÂeâ¿gÖ\È²Bâ¿g|µd¼¨ià¿g<g·¢ß¿gíÜ‹‰éžÖ¿g	¿ÀöbGÖ¿gjh‘9JÕ¿gØA6>MÔ¿gp\i¦  Ó¿g¡"ï¼Î‘È¿g®3¡£æ$Æ¿gx’!×÷Ä¿gÅhiN¿¿gqé’HÄ»¿g[	’‹>ƒÕ¿g:—e€üÔ¿g{†nÓ¿gxâRkÒ¿g¢ÕøEmÑ¿gŠ'I¬ßÈ¿g5Ú'ÚCÇ¿gã<–‰ø|Æ¿g¬>±ƒWæÂ¿gÍ¸Ï?ÏœÁ¿gõ¢Ü1%Ú¿g‹lQŽË6Ú¿gµíŸdÚ¿gö½ó§}4Ú¿gÄ1D³+ÌÙ¿gÒËâh#¥Ô¿gWPhé\Ó¿g%“C®«³Ò¿gÊ“2XžÎ¿gA“×ÊíË¿é
   r)   ÚF)Úorderc                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestGAM6ExogBfgsc                 C   s\   d}t d jd }tt d jdgdd�}tt d t |¡|d| d	 d
�}|jdd�| _d S )Nrs   r(   r   r)   rt   ru   rS   r   ri   rv   rj   r�   ©	r.   Úshaper   rz   r   r,   ZonesrZ   r=   ©r1   r|   Znobsr~   r   r   r   r   r^   M  s    ÿ 
ÿzTestGAM6ExogBfgs.setup_classc                 C   sL   | j }| ¡ }d| _t|jd d… t| jd� t|jd d… t| jd� d S ©Nr7   rš   r8   ©r=   r›   rJ   r   rH   rŸ   r�   ©rF   r=   rž   r   r   r   rK   W  s    ÿÿzTestGAM6ExogBfgs.test_fittedc                 C   s$   | j jj}t|d d… tdd� d S ©Nr¥   r„   r8   ©r=   ra   r3   r   Ú	pls6_exog©rF   r3   r   r   r   Ú	test_exoga  s    
ÿzTestGAM6ExogBfgs.test_exogN©r   r   r   rO   r^   rK   r³   r   r   r   r   r¨   K  s   
	
r¨   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestGAM6ExogPirlsc                 C   s`   d}t d jd }tt d jdgdd�}tt d t |df¡|d| d	 d
�}|jdd�| _d S )Nrs   r(   r   r)   rt   ru   rS   r   ri   rv   Zpirlsr�   r©   r«   r   r   r   r^   i  s    ÿ 
ÿzTestGAM6ExogPirls.setup_classc                 C   sL   | j }| ¡ }d| _t|jd d… t| jd� t|jd d… t| jd� d S r¬   r­   r®   r   r   r   rK   s  s    ÿÿzTestGAM6ExogPirls.test_fittedc                 C   s$   | j jj}t|d d… tdd� d S r¯   r°   r²   r   r   r   r³   }  s    
ÿzTestGAM6ExogPirls.test_exogNr´   r   r   r   r   rµ   g  s   
	
rµ   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )Ú
TestGAMMPGc                 C   s®   t  ddg¡}t  ddg¡}tddg j}tjdtd�}t|d	d
gdd�}ttd ||d| | d  ¡ d�}| 	¡ | _
ttd ||d| | d  ¡ d�}|j	dd�| _d S )Ng½j=^YÙ@gvï3½#ê?g¢¤¸ÉÜ“>gƒ¬„É±Š ?r%   r&   úfuel + drive©Údatar)   é   rt   ru   r"   r   ri   ©r3   rw   rx   Únewtonr�   )r,   rœ   Údf_autosrz   ÚpatsyÚdmatrixr   r   ÚtolistrZ   Úres1aÚres1b)r1   Úspr|   Úx_spliner3   r~   r   r   r   r   r^   …  s    ÿ
ÿzTestGAMMPG.setup_classc                 C   sL   t j tdd¡}t |¡}|j}| j| jfD ]}|j	j
}t||dd� q,d S )Nr!   zautos_exog.csvg›+¡†›„=)r;   )ÚosÚpathÚjoinÚcur_dirÚpdÚread_csvrz   rÁ   rÂ   ra   r3   r   )rF   Ú	file_pathZdf_exogZ	res2_exogr=   r3   r   r   r   r³   –  s    
zTestGAMMPG.test_exogc                 C   sš   t j tdd¡}tj|dd�}|jd |_|d j}|d j}| j| j	fD ]J}| 
¡ }d| _t|j|d	d
� t|j|d	d
� d}t|j|| d	d
� qJd S )Nr!   zautos_predict.csvz	Row.names)Z	index_colr   rZ   Zse_fitr7   g»½×Ùß|Û=r8   )rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   Úindexrz   rÁ   rÂ   r›   rJ   r   rH   r�   Zse_mean)rF   rË   Zdf_predZres2_fittedvaluesZres2_se_meanr=   rž   Z	corr_factr   r   r   rK   Ÿ  s     

ÿÿzTestGAMMPG.test_fittedN)r   r   r   rO   r^   r³   rK   r   r   r   r   r¶   ƒ  s   
	r¶   c                   @   sD   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚTestGAMMPGBSc                 C   sÚ   t  ddg¡}t  ddg¡ | _}tddg j}t  tjdtd�¡| _t	|d	d
gddgddgddd�}d| | d }t
td | j|| ¡ d�}|jd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¥   é   rt   T©r+   ZdegreeZvariable_namesr2   Zinclude_interceptr   ri   r"   r»   ©Úuse_tr¼   ©rl   rÔ   r<   gÊ BÞ¾AgøõO&å#Ú@)r,   rœ   r|   r½   rz   r-   r¾   r¿   r3   r   r   rÀ   rZ   rÁ   rÂ   Ú_resultsr=   r   Zmpg_bsr>   rJ   rA   rx   ©r1   rÃ   r|   rÄ   ÚbsÚalpha0Úgam_bsr   r   r   r^   ¹  s(    ýÿ
zTestGAMMPGBS.setup_classc                 C   s   d S rL   r   ©r1   r   r   r   r6   Ø  s    zTestGAMMPGBS._initc                 C   s:   | j }| j}t|j|jdd� | ¡ }t||jdd� d S )Nr:   r8   )r=   r>   r   ÚedfÚedf_allÚget_hat_matrix_diagÚhat©rF   r=   r>   rß   r   r   r   Útest_edfÜ  s
    zTestGAMMPGBS.test_edfc                 C   s>   | j }| j}|jjj}|d j}t||jj|jj	 dd� d S ©Nr   r:   r8   ©
r=   r>   ra   rw   Ú	smoothersZcov_der2r   Zsmooth0ÚSZS_scale©rF   r=   r>   rä   Zpen_matrix0r   r   r   Útest_smoothã  s    

ÿzTestGAMMPGBS.test_smoothc                 C   sf   | j }| j}| | jdd… |jjjdd… ¡}t||jdd… dd� t||j	dd… | j
d� d S r‚   )r=   r>   r…   r3   ra   rw   r}   r   rH   rI   rJ   r†   r   r   r   rˆ   ë  s    $ÿÿzTestGAMMPGBS.test_predictc                 C   sR  | j j}t|j| jƒ t| j jddd� | ¡ d }t|ddgd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� t
j d	¡ |jd
dd�\}}t|ddgd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� d S )NgJ­‹pÓ@r„   r8   r   gK�–}vû@g­5¢‡<`@gü©ñÒMbP?rƒ   iõ rÑ   r)   )Zk_foldsZk_gridg    ÐcAg{9¤¨·ƒ@r7   )r=   ra   r   rx   r   rB   Úselect_penweightrh   Z	start_idxr4   r,   ÚrandomÚseedZselect_penweight_kfold)rF   rp   Z	alpha_aicÚpmZalpha_cvÚ_r   r   r   Útest_crossvalô  s(    

zTestGAMMPGBS.test_crossvalN)
r   r   r   rO   r^   r6   rá   rç   rˆ   rí   r   r   r   r   rÍ   ¶  s   

	rÍ   c                   @   sL   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚTestGAMMPGBSPoissonc                 C   sì   t  ddg¡}t  ddg¡ | _}tddg j}tjdtd�| _t|d	d
gddgddgddd�}d| | d }t	td | j|t
 ¡ |d�}| jjj|jj }||jd d …< |jdd�| _|jddd�| _| jj| _tj| _d| _d| _d S )Nç<,œlÅã@çöHú=<`ArÎ   rÏ   r%   r&   r·   r¸   rÐ   r¥   rÑ   rt   TrÒ   r   ri   r"   )r3   rw   r	   rx   FrÓ   r¼   rÕ   r<   )r,   rœ   r|   r½   rz   r¾   r¿   r3   r   r   r	   r   Zdesign_infoÚcolumn_namesrw   Z	col_namesÚ
exog_namesrZ   rÁ   rÂ   rÖ   r=   r   Úmpg_bs_poissonr>   rJ   rA   )r1   rÃ   r|   rÄ   rØ   rÙ   rÚ   Úxnamesr   r   r   r^     s,    ý ÿ
zTestGAMMPGBSPoisson.setup_classc                 C   s   d S rL   r   rÛ   r   r   r   r6   0  s    zTestGAMMPGBSPoisson._initc                 C   sp   | j }| j}t|j|jdd� | ¡ }t||jdd� t|j|jdd� t|j|jdd� t|j	|j
dd� d S )Nr:   r8   r<   )r=   r>   r   rÜ   rÝ   rÞ   rß   ZaicZdevianceZdf_residZresidual_dfrà   r   r   r   rá   4  s    zTestGAMMPGBSPoisson.test_edfc                 C   s>   | j }| j}|jjj}|d j}t||jj|jj	 dd� d S râ   rã   ræ   r   r   r   rç   >  s    

ÿzTestGAMMPGBSPoisson.test_smoothc                 C   sÖ   | j }| j}| tjdd… |jjjdd… ¡}t||j	dd… dd� t||j
dd… | jd� t |jjjdd… ¡}|jtjdd… |dd�}t||jdd… | jd� t|jjddgƒ t|jjddgƒ d S )Nri   rƒ   r„   r8   Zlinear)ÚwhichrÑ   )r=   r>   r…   r½   Úilocra   rw   r}   r   rH   rI   rJ   rÉ   Z	DataFrameZlinear_predictorsr   rÌ   rz   )rF   r=   r>   r‡   ZxpZlinpredr   r   r   rˆ   G  s(    ÿÿÿÿÿz TestGAMMPGBSPoisson.test_predictc                 C   sr   | j }| j}|jdddddgdd�}t|jd d… |jdd	� t|jd d… |jd
d	� t|j	d d… |j
ƒ d S )NTr#   r$   r%   r&   )Zskip_singleZcombine_termsZscalarri   rX   r8   r:   )r=   r>   Zwald_test_termsr   Z	statisticZpTerms_chi_sqZpvaluesZ	pTerms_pvr   Zdf_constraintsZ	pTerms_df)rF   r=   r>   Zwttr   r   r   Ú	test_wald^  s     ÿýzTestGAMMPGBSPoisson.test_waldc                 C   s.   | j }|jj}|j ¡ }t|d |dd� d S )Nr   g-Cëâ6
?r8   )r=   ra   rx   rè   r   )rF   r=   Z
alpha_mgcvZres_sr   r   r   Útest_select_alphaj  s    
z%TestGAMMPGBSPoisson.test_select_alphaN)r   r   r   rO   r^   r6   rá   rç   rˆ   r÷   rø   r   r   r   r   rî     s   


	rî   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestGAMMPGBSPoissonFormulac                 C   sÈ   t  ddg¡}t  ddg¡ | _}tjdtd�| _tddg j}t|d	d
gddgddgddd�}d| | d }t	j
dt|t ¡ |d�}|jdd�| _|jddd�| _| jj| _tj| _d| _d| _d S )Nrï   rð   rÎ   rÏ   r·   r¸   r%   r&   rÐ   r¥   rÑ   rt   TrÒ   r   ri   zcity_mpg ~ fuel + drive)rw   r	   rx   FrÓ   r¼   rÕ   r<   )r,   rœ   r|   r¾   r¿   r½   r3   rz   r   r   Zfrom_formular	   r   rZ   rÁ   rÂ   rÖ   r=   r   ró   r>   rJ   rA   r×   r   r   r   r^   t  s*    ý þ
z&TestGAMMPGBSPoissonFormula.setup_classc                 C   sÂ   | j }ddddddddd	d
ddddddddddddddg}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 )NZ	Interceptzfuel[T.gas]zdrive[T.fwd]zdrive[T.rwd]Z	weight_s0Z	weight_s1Z	weight_s2Z	weight_s3Z	weight_s4Z	weight_s5Z	weight_s6Z	weight_s7Z	weight_s8Z	weight_s9Z
weight_s10Zhp_s0Zhp_s1Zhp_s2Zhp_s3Zhp_s4Zhp_s5Zhp_s6Zhp_s7Zhp_s8rƒ   ri   rÑ   )rÁ   r   ra   rò   Zdesign_info_linearrñ   rH   rö   rÌ   rz   r?   r   Ú
isinstancerÉ   ZSeriesr   rÖ   r   )rF   rÁ   rô   r   r   r   Útest_names_wrapper‘  s@                   û

ÿz-TestGAMMPGBSPoissonFormula.test_names_wrapperN)r   r   r   rO   r^   rû   r   r   r   r   rù   q  s   
rù   )LÚ__doc__rÅ   Únumpyr,   Znumpy.testingr   r   r   ZpandasrÉ   rP   r¾   Z#statsmodels.discrete.discrete_modelr   r   r   Z+statsmodels.genmod.generalized_linear_modelr   Zstatsmodels.genmod.familiesr	   Z(statsmodels.sandbox.regression.penalizedr
   Zstatsmodels.base._penalizedr   Zstatsmodels.base._penaltiesÚbaseZ
_penaltiesrn   Zstatsmodels.gam.smooth_basisr   r   Z*statsmodels.gam.generalized_additive_modelr   r   r   Zstatsmodels.tools.linalgr   r   r!   r   r   r   r   r   r   r    rÆ   ÚdirnameÚabspathÚ__file__rÈ   rÇ   rË   rÊ   r.   Z	df_autos_Zdropnar½   r'   rR   rf   rr   r€   r‰   r¡   r¤   rœ   rŸ   Zreshaper±   r¨   rµ   r¶   rÍ   rî   rù   r   r   r   r   Ú<module>   sö   

( "          û                                           ï  î3Za