U
    Ãmœd`  ã                   @   s.  d Z ddl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 ddlm  mZ ddlmZ ddlm  m  mZ ejejejejejejejejejejej ej!ej"ej#ej$ej%ej&ej'hZ(ejejejejhZ)ejejejejhZ*ejejejejhZ+ejejej ej!ejejej$ej%ej"ej#ejhZ,ejejejejejhZ-ejejej$ej%ejej&ej'ejhZ.ejejejhZ/ej0e)fej1e*fej2e+fej3e,fej4e-fej&e.feje/fgZ5ej6 7de5¡d	d
„ ƒZ8ej6 7de5¡dd„ ƒZ9ej6 7de5¡dd„ ƒZ:ej6j;e
dd�ej6 7dd¡dd„ ƒƒZ<dS )z+
Test functions for genmod.families.family
é    N)Úassert_allclose)Ú	integrate)ÚSP_LT_17)ÚValueWarning)ÚTweediezfamily, linksc              
   C   sl   t | }t t¡�P t ¡ �< d}tjd|td� tjdtd� |D ]}| |ƒ ƒ qDW 5 Q R X W 5 Q R X d S ©NúTNegative binomial dispersion parameter alpha not set. Using default value alpha=1.0.Úignore©ÚmessageÚcategory)r   )	Ú	all_linksÚpytestZraisesÚ
ValueErrorÚwarningsÚcatch_warningsÚfilterwarningsÚUserWarningÚFutureWarning)ÚfamilyÚlinksZinvalid_linksÚmsgÚlink© r   úf/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/genmod/families/tests/test_family.pyÚtest_invalid_family_link5   s    
ÿÿr   c              	   C   sR   t  ¡ �@ d}t jd|td� t jdtd� |D ]}| |ƒ ƒs0t‚q0W 5 Q R X d S r   )r   r   r   r   r   ÚAssertionError)r   r   r   r   r   r   r   Útest_family_linkD   s    
ÿÿr   c              	   C   sL   G dd„ dƒ}t  ¡ �, d}t jd|td� | |ƒ dd�s>t‚W 5 Q R X d S )Nc                   @   s   e Zd ZdS )z$test_family_link_check.<locals>.HugoN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   ÚHugoT   s   r!   r   r	   r
   F)Z
check_link)r   r   r   r   r   )r   r   r!   r   r   r   r   Útest_family_link_checkQ   s    
ÿr"   z%Scipy too old, function not available)ÚreasonÚpower)gš™™™™™ñ?g      ø?gffffffþ?c                    sL   t | dd�‰d‰ d‰‡ ‡‡fdd„}t|dƒt |dd¡d  d	d
d� dS )z-Test that Tweedie loglike is normalized to 1.F)Z	var_powerZeqlg       @g333333@c              	      s   t  t  ˆj| ˆ ˆd�¡¡S )N)ZendogÚmuÚscale)ÚnpZsqueezeÚexpZloglike_obs)Úy©r%   r&   Ztweedier   r   Úpdff   s
    ÿÿz%test_tweedie_loglike_obs.<locals>.pdfr   g      Y@é   g-Cëâ6?)ZatolN)r   r   r   Úquad)r$   r+   r   r*   r   Útest_tweedie_loglike_obs^   s
    r.   )=Ú__doc__r   r   Únumpyr'   Znumpy.testingr   Zscipyr   Zstatsmodels.compat.scipyr   Zstatsmodels.tools.sm_exceptionsr   Zstatsmodels.genmod.familiesZgenmodZfamiliesÚFZ"statsmodels.genmod.families.familyr   Z!statsmodels.genmod.families.linksr   ÚLZLogitZlogitZPowerZinverse_powerÚsqrtZinverse_squaredÚidentityÚLogÚlogZCDFLinkZprobitZcauchyZLogLogZloglogZCLogLogZcloglogZNegativeBinomialZnbinomr   Zpoisson_linksZgaussian_linksZgamma_linksZbinomial_linksZinverse_gaussian_linksZnegative_bionomial_linksZtweedie_linksZPoissonZGaussianÚGammaZBinomialZInverseGaussianZ
link_casesÚmarkZparametrizer   r   r"   Zskipifr.   r   r   r   r   Ú<module>   sš                  ý         þ    ÿ      þù


