U
    md`                     @   sn   d Z ddlZddlmZmZ ddlZddlmZ ddl	m
  mZ ddlmZ G dd dZG dd	 d	ZdS )
z=
Created on Fri Sep 15 13:38:13 2017

Author: Josef Perktold
    N)assert_allcloseassert_equal)Poisson)PoissonDiagnosticc                   @   s0   e Zd Zedd Zdd Zejjdd Z	dS )TestCountDiagnosticc           	      C   s   dddg}t jd d}t |df}d|d |d df< d}t ||d d | }t j|d }t||}|jd	d
dd}|| _	|| _
|| _|| _d S )N   g      ?i i     r      Zbfgsi  F)methodmaxiterdisp)nprandomseedonesexpdotpoissonr   fitexogendogresnobs)	clsZexpected_paramsr   r   offsetZmu_trueZ	endog_poiZ	model_poiZres_poi r   c/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/discrete/tests/test_diagnostic.pysetup_class   s    

zTestCountDiagnostic.setup_classc                 C   sp   t | j}t | j}t|d d |d d |d fdd t | j| j}d}t||dd t|jd d S )Nr   r   r   gh㈵>Zrtol)gl	
m?gkW
w?gMb@?)diaZtest_poisson_zeroinflation_jhr   Z test_poisson_zeroinflation_broekr   r   r   Zdf)selftzi1Ztzi2Ztzi3Ztzi3_1r   r   r   
test_count.   s    &zTestCountDiagnostic.test_countc                 C   sn   | j }| j }t| j| }t| j|d d d df }d}t|d d |dd t	||
d d S )Nr   )gg<?g$h6?g-C6
?r   r   )r   r   Zpredict_probr   Zbincountr   r    test_chisquare_probr   Z
plot_probsmean)r!   Zclose_figuresr   ZprobsfreqZtzir"   r   r   r   
test_probs=   s    
zTestCountDiagnostic.test_probsN)
__name__
__module____qualname__classmethodr   r#   pytestmarkZ
matplotlibr'   r   r   r   r   r      s
   
r   c                   @   s    e Zd Zedd Zdd ZdS )TestPoissonDiagnosticClassc                 C   s   t jd d}d}t |}t |t ddg| }|jd }|d d d f |kt j}t ddgt j}|| }t 	|}	t j
|	}
|
| _|| _d S )	NiW:r   r   (   <   r   g?g333333?)r   r   r   arangerepeatarrayshapeZastypeZfloat64r   r   r   r   )r   nrZn_groupslabelsxr   r   betaZlinpredr%   yr   r   r   r   N   s    


z&TestPoissonDiagnosticClass.setup_classc              
   C   s^  t ddgddgddgddgddgddgd	d
gg}t ddgddgddgddgg}t| j| jjdd}t|}| }t |j	|j
f}t||dd | jjd }|jdt |d}|jdd}	|jdd}
|jt dd}t |d d |	d d |
d d |d d g}t||dd |jd| jd}t ddg}t|d d |dd d S )NgS?gmmr?g1+?gj?gHo	?g#-^?gs&^?g\kY?g@5)?g3 ?gm`Џb?gad?gA{׿gdHϿgaް?g'}ͮ?g>7?r   )r   g:0yE>r   Zbroek)r   Z	exog_infl)r   Zprob   )Z	bin_edgesr   gIۦ%@@gPS?)r   r3   r   r   r   r   r   Ztest_dispersionZcolumn_stackZ	statisticZpvaluer   r4   Ztest_poisson_zeroinflationr   r$   r1   Zvstack)r!   Zres_dispersionZres_ziZrespoir    Zt_dispZres_dispr   Zt_zi_jhZt_zibZt_zimZt_zichi2Zt_ziZt_zi_exZ	res_zi_exr   r   r   test_spec_testsb   sD    
2z*TestPoissonDiagnosticClass.test_spec_testsN)r(   r)   r*   r+   r   r;   r   r   r   r   r.   L   s   
r.   )__doc__numpyr   Znumpy.testingr   r   r,   Z#statsmodels.discrete.discrete_modelr   Z'statsmodels.discrete._diagnostics_countZdiscreteZ_diagnostics_countr    Zstatsmodels.discrete.diagnosticr   r   r.   r   r   r   r   <module>   s   ;