
    M/Ph-                        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          ZdZej                            ed
e          Z ej        ed          Zd Z  G d d          Z!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e!          Z' G d de!          Z( G 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)	index_colzresults_influence_logit.csvc                     t           } t          j        t                    }t	          | d         | g d         t          j                                                  dd          }|                    d          }d	}t          |j
        |d d d
df         d           t          |j        |d d d
df         |j        j        z  d           t          |j        d         |z  |d d df         d           t          |j        |d d df         d           |j        d         d	z  d|j        z
  z  }t          ||d d df         d           d S )N	constrictconstlog_ratelog_volumnefamilyT绽|=
attach_wlsatolF)observed         g-C6?r   r   giUMu?      	   )data_binnpasarrayresults_sas_dfr   r   Binomialfitget_influencer   dfbetasd_paramsbsevaluescooks_distancehat_matrix_diag)dfresults_sasresinflk_varsc_bars         f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/tests/test_influence.pytest_influence_glm_bernoullir3       sq    
B*^,,K
bor"F"F"FG&((* * **-#E#*J*J  e,,DFDL+aaa1f"5DAAAADM;qqq!A#v#6#GdSSSSD'*V3[A5FTRRRRD(+aaad*;$GGGG"Q&!d.B*BCEE;qqq!t,4888888    c                   h    e Zd Zd Zej        j        ej        j        d                         Zd Z	dS )InfluenceCompareExactc                    | j         }| j        }t          |j        |j        d           t          |j        |j        dd           t          | dd          }t          |j        d         |j        d         |d           t          |j        |j        dd	           t          |j        |j        dd	           t          |j	        |j	        d	d           t          |j
        |j
        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)selfr@   rA   r=   s       r2   test_basicsz!InfluenceCompareExact.test_basics8   s0   

-u/D"	$ 	$ 	$ 	$ 	//e$	H 	H 	H 	H $	400,Q/1Ea1H$5	2 	2 	2 	2u}4dKKKKTMMMM,e.B!	/ 	/ 	/ 	/33!	/ 	/ 	/ 	/ 	/ 	/r4   c                    | j         }| 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	          }|                    dddd	          }|                    dddd	          }d S )NF)externalresidg? )	thresholdtitledfbetar   )idxrL   rM   cookhat)r@   rA   plot_influence
plot_index)rF   close_figuresr@   rA   figs        r2   
test_plotsz InfluenceCompareExact.test_plotsM   s    

""E"22""E"22w#R@@w#R@@xQ#RHHxQ#RHHv12FFv12FFu!s"EEu!s"EEr4   c                     | j         }| j        }|                                }|                                }t          |j        |j        dd           t          j        |j        |j                   d S )N-C6
?r>   r<   r@   rA   summary_framer   r)   pdtassert_index_equalindex)rF   r@   rA   df0df1s        r2   test_summaryz"InfluenceCompareExact.test_summaryc   sj    

!!##!!##
CJTFFFFsy#)44444r4   N)
__name__
__module____qualname__rG   pytestmarksmoke
matplotlibrV   r`    r4   r2   r6   r6   5   sf        / / /* [[F F  F(5 5 5 5 5r4   r6   c                 x   | j         }t          |j        d|j                  }|j        }|j        d         d|j        d                                         z  k    }| }|j        |d         z
  }t          |j        |         ||         d           t          |j	        |         |d         |         d           d S )	N_resultsr      paramsg?r   g{Gz?r9   )
r@   rC   r	   	_res_looor*   stdrl   r   r'   
params_one)rF   r/   r	   res_looo	mask_inflmask_lowdiff_paramss          r2   _check_looort   m   s    :DdlJ==G~H#A&T-@-C-G-G-I-I)IIIzH.8H#55KDM(+[-BNNNNDOH-x/A(/KRVWWWWWWr4   c                   *    e Zd Zed             Zd ZdS )TestInfluenceLogitGLMMLEc                     t           }t          |d         |g d         t          j                                                  dd          }|                                | _        t          |          | _        d S )Nr   r   r   Tr   r   )	r   r   r   r#   r$   r%   r@   r   rA   )clsr,   r.   s      r2   setup_classz$TestInfluenceLogitGLMMLE.setup_class|   sw    "[/2&J&J&J#K&((* * **-#E#*J*J 	 %%''	 %%			r4   c                 $    t          |            d S Nrt   rF   s    r2   	test_loooz"TestInfluenceLogitGLMMLE.test_looo       Dr4   Nra   rb   rc   classmethodry   r~   rh   r4   r2   rv   rv   z   s<        & & [&    r4   rv   c                   0    e Zd Zed             Zd Zd ZdS )TestInfluenceBinomialGLMMLEc                 2   t          j        g d          }dt          j        t          |                    z  }t          j        dt          |          dz             }t          j        t          j        t          |                    |f          }t          j        |||z
  f          }t          ||t          j                              	                                }|
                                | _        t          |          | _        d| _        d S )N)r   rk            (   r   r   rX   )r    arrayoneslenarangecolumn_stackr   r   r#   r$   r%   r@   r   rA   r=   )rx   yinixiexogendogr.   s          r2   ry   z'TestInfluenceBinomialGLMMLE.setup_class   s    X((())"'#b''"""Yq#b''A+&&B 0 0"566R"W..%h&7&9&9:::>>@@%%''	 %%	r4   c                 $    t          |            d S r{   r|   r}   s    r2   r~   z%TestInfluenceBinomialGLMMLE.test_looo   r   r4   c                     | j         }g d}g d}t          |j        |d           t          |j        d         |d           d S )N)g_$?gT?gs@2@?g	(?g=xE?)gVv?gl@?gxX ?g?g~]+Ԥ?gh㈵>r9   r   h㈵>)r@   r   r+   r*   )rF   r@   cooks_drQ   s       r2   test_rz"TestInfluenceBinomialGLMMLE.test_r   sj     
= = =: : : 	-s>>>>,Q/tDDDDDDr4   N)ra   rb   rc   r   ry   r~   r   rh   r4   r2   r   r      sR           [  E E E E Er4   r   c                   *    e Zd Zed             Zd ZdS )TestInfluenceGaussianGLMMLEc                 P   ddl m}  |            \  }}}t          j        t	          j        ||f          d                                |          }t          j        d|          	                                }|
                                | _        t          |          | _        d S Nr   )get_duncan_datazy const var1 var2)columnsr]   zy ~ const + var1 + var2 - 1)test_diagnosticr   pd	DataFramer    r   splitr   from_formular$   r%   r@   r   rA   )rx   r   r   r   labelsdatar.   s          r2   ry   z'TestInfluenceGaussianGLMMLE.setup_class   s    444444-o//tV|BOUDM:: 3 9 9 ; ;$& & & <dCCGGII %%''	 %%			r4   c                 $    t          |            d S r{   r|   r}   s    r2   r~   z%TestInfluenceGaussianGLMMLE.test_looo   r   r4   Nr   rh   r4   r2   r   r      s<        & & [&    r4   r   c                   0    e Zd Zed             Zd Zd ZdS )TestInfluenceGaussianGLMOLSc                    ddl m}  |            \  }}}t          j        t	          j        ||f          d                                |          }t          j        d|          	                                }t          j        d|          	                                }|                                | _        |                                | _        d S r   )r   r   r   r   r    r   r   r   r   r$   r   r%   r@   rA   )rx   r   r   r   r   r   res0res1s           r2   ry   z'TestInfluenceGaussianGLMOLS.setup_class   s    444444-o//tV|BOUDM:: 3 9 9 ; ;$& & &  =tDDHHJJ =tDDHHJJ&&((	&&((			r4   c                    | j         }| j        }t          |j        |j        d           t          |j        |j        dd           t          |j        |j        dd           t          |j        |j        d           t          |j        |j        dd           t          |j	        |j
        d         d           t          |j        |j        d           t          |j        |j	        d           d S )	Nr8   r9   r;   r<   r>   g?r?   r   )r@   rA   r   r+   rB   r*   r&   r'   rN   rE   dffits_internal	d_linpredrD   d_linpred_scaled)rF   r@   rA   s      r2   rG   z'TestInfluenceGaussianGLMOLS.test_basics   s>    

-u/D"	$ 	$ 	$ 	$//e$	H 	H 	H 	H,e.B!	/ 	/ 	/ 	/u}3????4eLLLL 	3-a0t	= 	= 	= 	= 	,5	: 	: 	: 	:.3%	A 	A 	A 	A 	A 	Ar4   c                    | j         }| j        }|                                }|                                }g d}t          ||         j        ||         j        d           t          j        |j        |j                   d S )N)r   standard_residhat_diagr   r   r9   rY   )rF   r@   rA   r^   r_   colss         r2   r`   z(TestInfluenceGaussianGLMOLS.test_summary   s}    

!!##!!##KKKD	(#d)*:FFFFsy#)44444r4   N)ra   rb   rc   r   ry   rG   r`   rh   r4   r2   r   r      sN        
) 
) [
)A A A4	5 	5 	5 	5 	5r4   r   c                   $    e Zd Zed             ZdS )TestInfluenceLogitComparec                 v   t           }t          |d         |g d         t          j                              }|                    dd          }ddlm}  ||d         |g d                   }|                    dd          }|                                | _        |                                | _	        d S )	Nr   r   r   newtonr   methodtolr   )Logit)
r   r   r   r#   r$   #statsmodels.discrete.discrete_modelr   r%   r@   rA   )rx   r,   modr.   r   mod2res2s          r2   ry   z%TestInfluenceLogitCompare.setup_class   s    "[/2&J&J&J#K!*,,. . .ggX5g11======uR_b)M)M)M&NOOxxxUx33%%''	&&((			r4   Nra   rb   rc   r   ry   rh   r4   r2   r   r      s-        
) 
) [
) 
) 
)r4   r   c                   *    e Zd Zed             Zd ZdS )TestInfluenceProbitComparec                    t           }t          |d         |g d         t          j        t          j                                                            }|                    dd          }dd	lm}  ||d         |g d                   }|                    dd          }t          |          | _	        |
                                | _        d S )
Nr   r   )linkr   r   r   r   r   )Probit)r   r   r   r#   linksr   r$   r   r   r@   r%   rA   )rx   r,   r   r.   r   r   r   s          r2   ry   z&TestInfluenceProbitCompare.setup_class  s    "[/2&J&J&J#K!*0E0E0G0GHHHJ J JggX5g11>>>>>>vbor*N*N*N'OPPxxxUx33 %%	&&((			r4   c                    | j         }| j        }| j         j        }| j        j        }t          |j        |j        d           |j                            |j                  }|j                            |j                  }t          ||d           |j                            |j                  }|j                            |j                  }t          ||d           |j                            |j                  }|j                            |j                  }t          ||d           t          |j	        |j	        d           d S )Nr   r9   )
r@   rA   r	   r   rl   model_deriv_mean_dparams_deriv_score_obs_dendog	score_obshessian)	rF   r@   rA   r   r   d1d0s1s0s	            r2   test_basics_specificz/TestInfluenceProbitCompare.test_basics_specific  s%   

z!z!T[u====Z++DK88Z++DK88BU++++Z//<<Z//<<BU++++Z!!$+..Z!!$+..BU++++u}5AAAAAAr4   N)ra   rb   rc   r   ry   r   rh   r4   r2   r   r     sA        
) 
) [
)B B B B Br4   r   c                   $    e Zd Zed             ZdS )TestInfluencePoissonComparec                 t   t           }t          |d         |g d         t          j                              }|                    dd          }ddlm}  ||d         |g d                   }|                    d	          }|                                | _        |                                | _        d S )
Nr   r   r   Tr   r   r   )Poisson)r   )	r   r   r   r   r$   r   r%   rA   r@   )rx   r,   r   r.   r   r   r   s          r2   ry   z'TestInfluencePoissonCompare.setup_class5  s    "[/2&J&J&J#K!)++- - -ggEg22??????wr+>>>?A AxxEx""%%''	&&((			r4   Nr   rh   r4   r2   r   r   3  s-        ) ) [) ) )r4   r   )*__doc__statsmodels.compat.pandasr   r[   os.pathosnumpyr    numpy.testingr   pandasr   rd   #statsmodels.regression.linear_modelr   +statsmodels.genmod.generalized_linear_modelr   statsmodels.genmodr   $statsmodels.stats.outliers_influencer   pathabspathdirname__file__cur_dir	file_namejoin	file_pathread_csvr   r"   r3   r6   rt   rv   r   r   r   r   r   r   rh   r4   r2   <module>r      s   
 5 4 4 4 4 4      ) ) ) ) ) )      3 3 3 3 3 3 ; ; ; ; ; ; ' ' ' ' ' ' = = = = = =
'//"'//(33
4
4"	GLL)Y77	2;yA...)	GLL)Y77	Y!4449 9 9*55 55 55 55 55 55 55 55p
X 
X 
X    4   (E (E (E (E (E"7 (E (E (EV    "7   (25 25 25 25 25"7 25 25 25j) ) ) ) ) 5 ) ) ) #B #B #B #B #B!6 #B #B #BL) ) ) ) )"7 ) ) ) ) )r4   