U
    md                     @   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 )Nn      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 )Nr'   )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