U
    Kvf`                     @   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j67de5d	d
 Z8ej67de5dd Z9ej67de5dd Z:ej6j;e
ddej67d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 NTNegative 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   Q/tmp/pip-unpacked-wheel-2v6byqio/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   Zquad)r$   r+   r   r*   r   test_tweedie_loglike_obs^   s
    r-   )=__doc__r   r   Z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                                     


