U
    Kvf`  ã                   @   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   úN/tmp/pip-unpacked-wheel-2v6byqio/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   gñhãˆµøä>©Zrtol)glÿ	
mŽé?gkW
wå?gü©ñÒMb@?)Ú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   )g™gÎ<ÑØ?gø$hö6á?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 )	Ni‹WÖ: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 )NgØúSˆºÞÁ?gmüØèmrì?g1+ÅäÓ?gj£¾›ýè?gH¿o	º½À?g#-â^«ì?gÖs&ó^Á?g\¨kY­‹ì?g@ƒá5)ÅÑ?g¹½Ú3 é?gm`ÐbÉÁ?gµad½²æ?gˆÌþA{Û×¿g¿d¡HõÏ¿gšÝaÞ°é?g'}†÷Í®?gŠ>7‹­Ìé?r   )r   g:Œ0âŽyE>r   Zbroek)r   Z	exog_infl)r   Zprobé   )Z	bin_edgesr   g›IÛ¦%@@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__Z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   ;