U
    ÃmœdÆ  ã                   @   s²   d 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mZmZ ddlmZ ddlmZ dZdZd	ZG d
d„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )z7Testing GenericLikelihoodModel variations on Poisson


é    N)Úassert_almost_equal©Ústats)ÚPoissonGMLEÚPoissonOffsetGMLEÚPoissonZiGMLE)ÚPoisson)ÚValueWarningé   é   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zejj	d	d
„ ƒZ
dS )ÚCompareMixinc                 C   s,   t | jj| jjtƒ t | jj| jjtƒ d S ©N)r   ÚresÚparamsÚres_glmÚDEC5Úres_discrete©Úself© r   úb/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/miscmodels/tests/test_poisson.pyÚtest_params   s    zCompareMixin.test_paramsc                 C   sT   t | jj| jjtƒ t | jj| jjtƒ t | jj| jjtƒ t | jj| jjt	ƒ d S r   )
r   r   Úbser   r   r   ÚtvaluesÚDEC4ÚpvaluesÚDECr   r   r   r   Útest_cov_params   s    zCompareMixin.test_cov_paramsc                 C   sd   | j  t t| j jƒ¡¡}ddlm} |j 	t 
|j¡¡d }t|j| j jtƒ t|| j jtƒ d S )Nr   r   é   )r   Zt_testÚnpÚeyeÚlenr   Úscipyr   ZnormZsfÚabsZtvaluer   r   r   r   )r   Úttr   Zpvaluer   r   r   Ú
test_ttest)   s
    zCompareMixin.test_ttestc                 C   sb   | j }t| ddƒ}|jjj\}}|j|| | ks6t‚|j|d ksHt‚t|j	ƒ|| ks^t‚d S )NÚk_extrar   é   )
r   ÚgetattrÚmodelÚexogÚshapeZdf_residÚAssertionErrorZdf_modelr!   r   )r   r   r&   ÚnobsZk_varsr   r   r   Útest_df0   s    zCompareMixin.test_dfc                 C   s   | j  ¡  d S r   )r   Úsummaryr   r   r   r   Útest_summary8   s    zCompareMixin.test_summaryN)Ú__name__Ú
__module__Ú__qualname__r   r   r%   r.   ÚpytestÚmarkZsmoker0   r   r   r   r   r      s   r   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestPoissonMLEc                 C   s´   t j d¡ d}t j |d¡}|}tj|dd�}dd| d¡  }t j t  |¡¡}t	||ƒj
dd	�| _tj||tj 	¡ d
�}| 
¡ | _t||ƒ| _| jj
d| jj ddd�| _d S )NénãéÈ   é   F©Úprependçš™™™™™¹?r'   r   ©Údisp©ÚfamilyçÍÌÌÌÌÌì?Úbfgs©Zstart_paramsÚmethodr>   )r   ÚrandomÚseedÚrandnÚsmÚadd_constantÚsumÚpoissonÚexpr   Úfitr   ÚGLMÚfamiliesr   r   Úmodr   r   )Úclsr-   ÚrvsÚ	data_exogÚxbetaÚ
data_endogÚmod_glmr   r   r   Úsetup_class?   s    
 ÿzTestPoissonMLE.setup_classc              	   C   sˆ   | j }| j}t t¡� | |j¡ W 5 Q R X zH||_| |j¡}t	|t
jjƒsTt‚t| ¡ t |j |j¡¡dƒ W 5 | d¡ X d S )NÚresulté   )r   rP   r4   ZraisesÚ
ValueErrorZpredict_distributionr*   Ú__delattr__rX   Ú
isinstancer   Z_distn_infrastructureZ	rv_frozenr,   r   Zmeanr   rL   Údotr   )r   r   r)   Údistr   r   r   Útest_predict_distributionV   s    þz(TestPoissonMLE.test_predict_distributionN)r1   r2   r3   ÚclassmethodrW   r_   r   r   r   r   r6   =   s   
r6   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestPoissonOffsetc           	      C   s(  t j d¡ d}t j |d¡}|}tj|dd�}dd| d¡  }t j t  |¡¡}tj	||tj
 ¡ d�}| ¡ | _t||ƒjd	d
�| _| jjd	 |d d …d	f  }t||d d …dd …f |d�jd	d
�| _tj	||tj
 ¡ d�}| ¡ | _t||d d …dd …f |d�}|jd| jj dd	d�| _d S )Nr7   r8   r9   Fr:   r'   r<   r?   r   r=   ©ÚoffsetrA   rB   rC   )r   rE   rF   rG   rH   rI   rJ   rK   rL   rN   rO   r   rM   r   r   r   r   r   )	rQ   r-   rR   rS   rT   rU   rV   rc   Zmodor   r   r   rW   l   s.    
ÿÿ
 ÿzTestPoissonOffset.setup_classc                 C   s4   t | jj| jjdd … tƒ t | jj| jjtƒ d S ©Nr'   )r   r   r   r   r   r   r   r   r   r   r   �   s    zTestPoissonOffset.test_paramsc                 C   s8   t | jj| jjdd … td ƒ t | jj| jjtƒ d S rd   )r   r   r   r   r   r   r   r   r   r   r   r   ”   s     z!TestPoissonOffset.test_cov_paramsN)r1   r2   r3   r`   rW   r   r   r   r   r   r   ra   j   s   
#ra   c                   @   s0   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	S )
ÚTestPoissonZic                 C   s  t j d¡ d}t j |d¡}|}tj|dd�}dd| d¡  }t j t  |¡¡}d| _	tj
||tj ¡ d�}| ¡ | _t||ƒjd	d
�| _| jjd	 |d d …d	f  }t||d d …dd …f |d�jd	d
�| _t||d d …dd …f |d�jt jd| jj df dd	d�| _d| _d S )Nr7   r8   r9   Fr:   r'   r<   r?   r   r=   rb   rA   é
   rB   rC   r
   )r   rE   rF   rG   rH   rI   rJ   rK   rL   r&   rN   rO   r   rM   r   r   r   r   Zr_r   Údecimal)rQ   r-   rR   rS   rT   rU   rV   rc   r   r   r   rW   Ÿ   s&    
( þzTestPoissonZi.setup_classc                 C   sH   t | jjd d… | jjdd … | jƒ t | jjd d… | jj| jƒ d S )Néÿÿÿÿr'   )r   r   r   r   rg   r   r   r   r   r   r   Á   s    &zTestPoissonZi.test_paramsc                 C   sP   t | jjd d… | jjdd … | jd ƒ t | jjd d… | jj| jd ƒ d S )Nrh   r'   r   )r   r   Zbsejacr   r   rg   r   r   r   r   r   r   Å   s    *zTestPoissonZi.test_cov_paramsc                 C   sL   | j j}t|j|j|jd�}ddlm} |jj	d |j_	|t
|jdd� d S )Nrb   r   )Úassert_warnsr   r=   )r   r)   r   Zendogr*   rc   Únumpy.testingri   ÚdataZxnamesr	   rM   )r   rP   Zmod1ri   r   r   r   Útest_exog_names_warningÍ   s
    z%TestPoissonZi.test_exog_names_warningN)r1   r2   r3   r`   rW   r   r   rl   r   r   r   r   re   �   s
   
!re   )Ú__doc__r4   Únumpyr   rj   r   r"   r   Zstatsmodels.apiÚapirH   Zstatsmodels.miscmodels.countr   r   r   Z#statsmodels.discrete.discrete_modelr   Zstatsmodels.tools.sm_exceptionsr	   r   r   r   r   r6   ra   re   r   r   r   r   Ú<module>   s   (-3