U
    Kvf-                     @   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'   J/tmp/pip-unpacked-wheel-2v6byqio/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=rtolHz>r-   r   cd_rtolr   +=&.>g:0y5>)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{Gz?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_$?gT?gs@2@?g	(?g=xE?gVv?gl@?gxX ?g?g~]+Ԥ?gh㈵>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   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osZ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&