U
    Ãmœd¹-  ã                   @   sV  d Z ddlmZ ddlZddlZddlm	Z	 ddl
ZddlZddlmZ ddlmZ ddlmZ ddlmZ ej ej e¡¡Zd	Zej ed
e¡Zejedd�ZdZej ed
e¡Zejedd�Zdd„ Z G dd„ dƒZ!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e!ƒZ'G dd„ de!ƒZ(G dd „ d e!ƒZ)dS )!z=
Created on Tue Jun 12 13:18:12 2018

Author: Josef Perktold
é    )ÚtestingN)Úassert_allclose)ÚOLS)ÚGLM)Úfamilies)ÚMLEInfluencezbinary_constrict.csvÚresults)Z	index_colzresults_influence_logit.csvc                  C   s  t } t t¡}t| d | dddg t ¡ d�jddd�}|jd	d
�}d}t	|j
|d d …dd…f dd� t	|j|d d …dd…f |jj dd� t	|jd | |d d …df dd� t	|j|d d …df dd� |jd d d|j  }t	||d d …df dd� d S )NÚ	constrictÚconstÚlog_rateÚlog_volumne©ÚfamilyTç»½×Ùß|Û=©Z
attach_wlsÚatolF)Zobservedé   é   é   g-Cëâ6?©r   r   giUMu?é   é   é	   )Údata_binÚnpZasarrayÚresults_sas_dfr   r   ÚBinomialÚfitÚget_influencer   ÚdfbetasÚd_paramsZbseÚvaluesÚcooks_distanceÚhat_matrix_diag)ÚdfZresults_sasÚresÚinflZk_varsZc_bar© r'   ú_/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/stats/tests/test_influence.pyÚtest_influence_glm_bernoulli!   s     
ÿ ÿ ($r)   c                   @   s4   e Zd Zdd„ Zejjejjdd„ ƒƒZdd„ Z	dS )ÚInfluenceCompareExactc                 C   s®   | j }| j}t|j|jdd� t|j|jddd� t| ddƒ}t|jd |jd |dd� t|j|jdd	d� t|j|jdd	d� t|j	|j	d	dd� t|j
|j
d	dd� d S )
Nçê-�™—q=©ÚrtolçH¯¼šò×z>©r-   r   Úcd_rtolr   ç›+¡†›„=ç•Ö&è.>g:Œ0âŽy5>)Úinfl1Úinfl0r   r#   Úresid_studentizedÚgetattrr"   r   r    Úd_fittedvaluesÚd_fittedvalues_scaled)Úselfr3   r4   r0   r'   r'   r(   Útest_basics9   s4    
ÿ  ÿ ÿ
 ÿ þz!InfluenceCompareExact.test_basicsc                 C   s´   | j }| j}|jdd�}|jdd�}|jdddd�}|jdddd�}|jddddd	�}|jddddd	�}|jd
dddd	�}|jd
dddd	�}|jddddd	�}|jddddd	�}d S )NF)ZexternalZresidgš™™™™™É?Ú )Ú	thresholdÚtitleÚdfbetar   )Úidxr<   r=   ZcookÚhat)r3   r4   Zplot_influenceZ
plot_index)r9   Zclose_figuresr3   r4   Zfigr'   r'   r(   Ú
test_plotsN   s    z InfluenceCompareExact.test_plotsc                 C   sD   | j }| j}| ¡ }| ¡ }t|j|jddd� t |j|j¡ d S )Nç-Cëâ6
?r1   r/   ©r3   r4   Zsummary_framer   r!   ÚpdtZassert_index_equalÚindex)r9   r3   r4   Údf0Údf1r'   r'   r(   Útest_summaryd   s    z"InfluenceCompareExact.test_summaryN)
Ú__name__Ú
__module__Ú__qualname__r:   ÚpytestÚmarkZsmokeZ
matplotlibrA   rH   r'   r'   r'   r(   r*   6   s
   r*   c                 C   s„   | j }t|jd|jƒ}|j}|jd d|jd  ¡  k}| }|j|d  }t|j| || dd� t|j	| |d | dd� d S )	NZ_resultsr   é   Úparamsgš™™™™™©?r   g{®Gáz„?r,   )
r3   r6   r   Z	_res_looor"   ZstdrO   r   r    Z
params_one)r9   r&   r   Zres_loooZ	mask_inflZmask_lowZdiff_paramsr'   r'   r(   Ú_check_looon   s    rP   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestInfluenceLogitGLMMLEc                 C   sF   t }t|d |dddg t ¡ d�jddd�}| ¡ | _t|ƒ| _d S )	Nr	   r
   r   r   r   Tr   r   )	r   r   r   r   r   r   r3   r   r4   )Úclsr$   r%   r'   r'   r(   Úsetup_class}   s    ÿ ÿ
z$TestInfluenceLogitGLMMLE.setup_classc                 C   s   t | ƒ d S ©N©rP   ©r9   r'   r'   r(   Ú	test_looo†   s    z"TestInfluenceLogitGLMMLE.test_loooN©rI   rJ   rK   ÚclassmethodrS   rW   r'   r'   r'   r(   rQ   {   s   
rQ   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestInfluenceBinomialGLMMLEc                 C   s˜   t  dddddg¡}dt  t|ƒ¡ }t  dt|ƒd ¡}t  t  t|ƒ¡|f¡}t  ||| f¡}t||t ¡ d� 	¡ }| 
¡ | _t|ƒ| _d	| _d S )
Nr   rN   é   é   é   é(   r   r   rB   )r   ÚarrayZonesÚlenZarangeÚcolumn_stackr   r   r   r   r   r3   r   r4   r0   )rR   ÚyiÚniÚxiÚexogÚendogr%   r'   r'   r(   rS   �   s    

z'TestInfluenceBinomialGLMMLE.setup_classc                 C   s   t | ƒ d S rT   rU   rV   r'   r'   r(   rW   ›   s    z%TestInfluenceBinomialGLMMLE.test_loooc                 C   sJ   | j }dddddg}dddd	d
g}t|j|dd� t|jd |dd� d S )Ng_„ù$Ð?gïT¾ˆµÐ?gsú@2@£ô?gì	Ä(œ¡µ?g¨ê=x‘E×?gøVÎv§šÐ?gåÁl@¨×?gxïXÁ ¡Ö?g¸ÞÀ²ÍèØ?g~]+Ô¤ä?gñhãˆµøÔ>r,   r   çñhãˆµøä>)r3   r   r#   r"   )r9   r3   Úcooks_dr@   r'   r'   r(   Útest_rž   s     ÿ ÿz"TestInfluenceBinomialGLMMLE.test_rN)rI   rJ   rK   rY   rS   rW   ri   r'   r'   r'   r(   rZ   Š   s   
rZ   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestInfluenceGaussianGLMMLEc                 C   s^   ddl m} |ƒ \}}}tjt ||f¡d ¡ |d�}t d|¡ 	¡ }| 
¡ | _t|ƒ| _d S ©Nr   )Úget_duncan_datazy const var1 var2)ÚcolumnsrE   zy ~ const + var1 + var2 - 1)Útest_diagnosticrl   ÚpdÚ	DataFramer   ra   Úsplitr   Úfrom_formular   r   r3   r   r4   )rR   rl   rf   re   ÚlabelsÚdatar%   r'   r'   r(   rS   ·   s    þ
z'TestInfluenceGaussianGLMMLE.setup_classc                 C   s   t | ƒ d S rT   rU   rV   r'   r'   r(   rW   Å   s    z%TestInfluenceGaussianGLMMLE.test_loooNrX   r'   r'   r'   r(   rj   µ   s   
rj   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestInfluenceGaussianGLMOLSc                 C   sn   ddl m} |ƒ \}}}tjt ||f¡d ¡ |d�}t d|¡ 	¡ }t
 d|¡ 	¡ }| ¡ | _| ¡ | _d S rk   )rn   rl   ro   rp   r   ra   rq   r   rr   r   r   r   r3   r4   )rR   rl   rf   re   rs   rt   Úres0Úres1r'   r'   r(   rS   Ë   s    þ
z'TestInfluenceGaussianGLMOLS.setup_classc                 C   sª   | j }| j}t|j|jdd� t|j|jddd� t|j|jddd� t|j|jdd� t|j|jddd� t|j	|j
d dd� t|j|jdd� t|j|j	dd� d S )	Nr+   r,   r.   r/   r1   gš™™™™™¹?r2   r   )r3   r4   r   r#   r5   r"   r   r    r>   r8   Údffits_internalZ	d_linpredr7   Zd_linpred_scaled)r9   r3   r4   r'   r'   r(   r:   Ø   s8    
ÿ  ÿ
 ÿ ÿ ÿ ÿz'TestInfluenceGaussianGLMOLS.test_basicsc                 C   sV   | j }| j}| ¡ }| ¡ }ddddg}t|| j|| jdd� t |j|j¡ d S )Nrh   Zstandard_residZhat_diagrx   rg   r,   rC   )r9   r3   r4   rF   rG   Úcolsr'   r'   r(   rH   ò   s    z(TestInfluenceGaussianGLMOLS.test_summaryN)rI   rJ   rK   rY   rS   r:   rH   r'   r'   r'   r(   ru   É   s   
ru   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestInfluenceLogitComparec                 C   s|   t }t|d |dddg t ¡ d�}|jddd�}d	d
lm} ||d |dddg ƒ}|jddd�}| ¡ | _| ¡ | _	d S )Nr	   r
   r   r   r   Únewtonr   ©ÚmethodÚtolr   )ÚLogit)
r   r   r   r   r   Ú#statsmodels.discrete.discrete_modelr   r   r3   r4   )rR   r$   Úmodr%   r   Úmod2Úres2r'   r'   r(   rS      s    ÿ
z%TestInfluenceLogitCompare.setup_classN©rI   rJ   rK   rY   rS   r'   r'   r'   r(   rz   þ   s   rz   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestInfluenceProbitComparec                 C   s†   t }t|d |dddg tjtj ¡ d�d�}|jddd	�}d
dlm} ||d |dddg ƒ}|jddd	�}t|ƒ| _	| 
¡ | _d S )Nr	   r
   r   r   )Úlinkr   r{   r   r|   r   )ÚProbit)r   r   r   r   Úlinksr‡   r   r€   r   r3   r   r4   )rR   r$   r�   r%   r‡   r‚   rƒ   r'   r'   r(   rS     s    ÿ
z&TestInfluenceProbitCompare.setup_classc           	      C   sÂ   | j }| j}| j j}| jj}t|j|jdd� |j |j¡}|j |j¡}t||dd� |j |j¡}|j |j¡}t||dd� |j |j¡}|j |j¡}t||dd� t|j	|j	dd� d S )Nr   r,   )
r3   r4   r   r   rO   ÚmodelZ_deriv_mean_dparamsZ_deriv_score_obs_dendogZ	score_obsZhessian)	r9   r3   r4   rw   rv   Zd1Zd0Ús1Ús0r'   r'   r(   Útest_basics_specific  s    z/TestInfluenceProbitCompare.test_basics_specificN)rI   rJ   rK   rY   rS   rŒ   r'   r'   r'   r(   r…     s   
r…   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestInfluencePoissonComparec                 C   sz   t }t|d |dddg t ¡ d�}|jddd�}d	d
lm} ||d |dddg ƒ}|jdd�}| ¡ | _| ¡ | _d S )Nr	   r
   r   r   r   Tr   r   r   )ÚPoisson)r~   )	r   r   r   rŽ   r   r€   r   r4   r3   )rR   r$   r�   r%   rŽ   r‚   rƒ   r'   r'   r(   rS   6  s    ÿÿ
z'TestInfluencePoissonCompare.setup_classNr„   r'   r'   r'   r(   r�   4  s   r�   )*Ú__doc__Zstatsmodels.compat.pandasr   rD   Úos.pathÚosÚnumpyr   Znumpy.testingr   Zpandasro   rL   Z#statsmodels.regression.linear_modelr   Z+statsmodels.genmod.generalized_linear_modelr   Zstatsmodels.genmodr   Z$statsmodels.stats.outliers_influencer   ÚpathÚabspathÚdirnameÚ__file__Zcur_dirÚ	file_nameÚjoinÚ	file_pathZread_csvr   r   r)   r*   rP   rQ   rZ   rj   ru   rz   r…   r�   r'   r'   r'   r(   Ú<module>   s6   8+5&