
    !g-                     ^   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*                  j-                  ej*                  j/                  e            Zd	Zej*                  j7                  ed
e      Z ej:                  ed      ZdZej*                  j7                  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)y)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                               j                  dd      }|j                  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       y )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         c/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/stats/tests/test_influence.pytest_influence_glm_bernoullir3       s'    
B**^,K
bor"FG&&(**-#E#*J  e,DFDLL+a1f"5DADMM;q!A#v#6#GdSD''*V3[A5FTRD((+ad*;$G"Q&!d.B.B*BCEE;q!t,48    c                       e Zd Zd Zej
                  j                  ej
                  j                  d               Zd Z	y)InfluenceCompareExactc                 B   | 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       y )
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   s    



--u/D/D"	$ 	////e$	H $	40,,Q/1E1Ea1H$5	2u}}4dKTM,,e.B.B!	/3333!	/r4   c                    | j                   }| j                  }|j                  d      }|j                  d      }|j                  ddd      }|j                  ddd      }|j                  dddd	      }|j                  dddd	      }|j                  d
ddd	      }|j                  d
ddd	      }|j                  dddd	      }|j                  dddd	      }y )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""E"2w#R@w#R@xQ#RHxQ#RHv12Fv12Fu!s"Eu!s"Er4   c                    | j                   }| j                  }|j                         }|j                         }t        |j                  |j                  dd       t        j                  |j                  |j                         y )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   s^    



!!#!!#

CJJTFsyy#))4r4   N)
__name__
__module____qualname__rG   pytestmarksmoke
matplotlibrV   r`    r4   r2   r6   r6   5   s>    /* [[[[F  F(5r4   r6   c                 ~   | j                   }t        |j                  d|j                        }|j                  }|j                  d   d|j                  d   j                         z  kD  }| }|j                  |d   z
  }t        |j                  |   ||   d       t        |j                  |   |d   |   d       y )	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dllJ=G~~H##A&T-@-@-C-G-G-I)IIIzH..8H#55KDMM(+[-BNDOOH-x/A(/KRVWr4   c                   "    e Zd Zed        Zd Zy)TestInfluenceLogitGLMMLEc                     t         }t        |d   |g d   t        j                               j	                  dd      }|j                         | _        t        |      | _        y )Nr   r   r   Tr   r   )	r   r   r   r#   r$   r%   r@   r   rA   )clsr,   r.   s      r2   setup_classz$TestInfluenceLogitGLMMLE.setup_class|   sZ    "[/2&J#K&&(**-#E#*J 	 %%'	 %	r4   c                     t        |        y 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                   (    e Zd Zed        Zd Zd Zy)TestInfluenceBinomialGLMMLEc                    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                               j                         }|j                         | _        t        |      | _        d| _        y )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    XX()"''#b'""YYq#b'A+&B 0"56R"W.%h&7&7&9:>>@%%'	 %	r4   c                     t        |        y 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       y )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   sF     

=: 	--s>,,Q/tDr4   N)ra   rb   rc   r   ry   r~   r   rh   r4   r2   r   r      s!      Er4   r   c                   "    e Zd Zed        Zd Zy)TestInfluenceGaussianGLMMLEc                 .   ddl m}  |       \  }}}t        j                  t	        j
                  ||f      dj                         |      }t        j                  d|      j                         }|j                         | _        t        |      | _        y 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-/tV||BOOUDM: 3 9 9 ;$& <dCGGI %%'	 %	r4   c                     t        |        y r{   r|   r}   s    r2   r~   z%TestInfluenceGaussianGLMMLE.test_looo   r   r4   Nr   rh   r4   r2   r   r      s    & &r4   r   c                   (    e Zd Zed        Zd Zd Zy)TestInfluenceGaussianGLMOLSc                    ddl m}  |       \  }}}t        j                  t	        j
                  ||f      dj                         |      }t        j                  d|      j                         }t        j                  d|      j                         }|j                         | _        |j                         | _        y 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-/tV||BOOUDM: 3 9 9 ;$&  =tDHHJ =tDHH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       y )	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/D"	$////e$	H,,e.B.B!	/u}}3?4eL 	33--a0t	= 	,,5	:..33%	Ar4   c                     | j                   }| j                  }|j                         }|j                         }g d}t        ||   j                  ||   j                  d       t        j                  |j                  |j                         y )N)r   standard_residhat_diagr   r   r9   rY   )rF   r@   rA   r^   r_   colss         r2   r`   z(TestInfluenceGaussianGLMOLS.test_summary   sm    



!!#!!#KD	((#d)*:*:Fsyy#))4r4   N)ra   rb   rc   r   ry   rG   r`   rh   r4   r2   r   r      s    
) 
)A4	5r4   r   c                       e Zd Zed        Zy)TestInfluenceLogitComparec                 .   t         }t        |d   |g d   t        j                               }|j	                  dd      }ddlm}  ||d   |g d         }|j	                  dd      }|j                         | _        |j                         | _	        y )	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#K!**,.ggX5g1=R_b)M&NOxxxUx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y)TestInfluenceProbitComparec                 `   t         }t        |d   |g d   t        j                  t        j                  j                                     }|j                  dd      }dd	lm}  ||d   |g d         }|j                  dd      }t        |      | _	        |j                         | _        y )
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#K!**0E0E0GHJggX5g1>bor*N'OPxxxUx3 %	&&(	r4   c                 $   | j                   }| j                  }| j                   j                  }| j                  j                  }t        |j                  |j                  d       |j
                  j                  |j                        }|j
                  j                  |j                        }t        ||d       |j
                  j                  |j                        }|j
                  j                  |j                        }t        ||d       |j
                  j                  |j                        }|j
                  j                  |j                        }t        ||d       t        |j                  |j                  d       y )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   



zz!!zz!!T[[u=ZZ++DKK8ZZ++DKK8BU+ZZ//<ZZ//<BU+ZZ!!$++.ZZ!!$++.BU+u}}5Ar4   N)ra   rb   rc   r   ry   r   rh   r4   r2   r   r     s    
) 
)Br4   r   c                       e Zd Zed        Zy)TestInfluencePoissonComparec                 ,   t         }t        |d   |g d   t        j                               }|j	                  dd      }ddlm}  ||d   |g d         }|j	                  d	      }|j                         | _        |j                         | _        y )
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#K!))+-ggEg2?r+>?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   )   3 ; ' =
''//"''//(3
4"	GGLL)Y7	2;;yA.)	GGLL)Y7	Y!49*55 55p
X4 (E"7 (EV"7 (25"7 25j) 5 ) #B!6 #BL)"7 )r4   