U
    KvfÆ  ã                   @   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   úM/tmp/pip-unpacked-wheel-2v6byqio/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ÚnpZ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smoker/   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   rO   r3   ZraisesÚ
ValueErrorZpredict_distributionr)   Ú__delattr__rW   Ú
isinstancer   Z_distn_infrastructureZ	rv_frozenr+   r   Zmeanr   rK   Údotr   )r   r   r(   Údistr   r   r   Útest_predict_distributionV   s    þz(TestPoissonMLE.test_predict_distributionN)r0   r1   r2   ÚclassmethodrV   r^   r   r   r   r   r5   =   s   
r5   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 )Nr6   r7   r8   Fr9   r&   r;   r>   r   r<   ©Úoffsetr@   rA   rB   )r   rD   rE   rF   rG   rH   rI   rJ   rK   rM   rN   r   rL   r   r   r   r   r   )	rP   r,   rQ   rR   rS   rT   rU   rb   Zmodor   r   r   rV   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 rc   )r   r   r   r   r   r   r   r   r   r   r   r   ”   s     z!TestPoissonOffset.test_cov_paramsN)r0   r1   r2   r_   rV   r   r   r   r   r   r   r`   j   s   
#r`   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 )Nr6   r7   r8   Fr9   r&   r;   r>   r   r<   ra   r@   é
   rA   rB   r
   )r   rD   rE   rF   rG   rH   rI   rJ   rK   r%   rM   rN   r   rL   r   r   r   r   Zr_r   Údecimal)rP   r,   rQ   rR   rS   rT   rU   rb   r   r   r   rV   Ÿ   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   rf   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 )Nrg   r&   r   )r   r   Zbsejacr   r   rf   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 )Nra   r   )Úassert_warnsr   r<   )r   r(   r   Zendogr)   rb   Únumpy.testingrh   ÚdataZxnamesr	   rL   )r   rO   Zmod1rh   r   r   r   Útest_exog_names_warningÍ   s
    z%TestPoissonZi.test_exog_names_warningN)r0   r1   r2   r_   rV   r   r   rk   r   r   r   r   rd      s
   
!rd   )Ú__doc__r3   Znumpyr   ri   r   r!   r   Zstatsmodels.apiÚapirG   Zstatsmodels.miscmodels.countr   r   r   Z#statsmodels.discrete.discrete_modelr   Zstatsmodels.tools.sm_exceptionsr	   r   r   r   r   r5   r`   rd   r   r   r   r   Ú<module>   s   (-3