U
    KvfþJ  ã                   @   s*  d dl Zd dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZ G dd„ dƒZG d	d
„ d
ƒZG dd„ dƒZG dd„ dƒZG dd„ 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G dd„ deƒZG dd„ dƒZG dd„ dƒZ G dd „ d ƒZ!dS )!é    N)Úassert_allcloseÚassert_equal)Ústats)ÚpoissonÚnbinom)ÚBunch)Úgenpoisson_pÚtruncatedpoissonÚtruncatednegbinÚ	zipoissonÚzinegbinÚzigenpoissonÚDiscretizedCountÚDiscretizedModelc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestGenpoisson_pc                 C   s.   t  dd¡}t dddd¡}t||dd d S )Né   r   çVçž¯Ò<©Úrtol©r   Úpmfr   r   ©ÚselfÚpoisson_pmfZgenpoisson_pmf© r   úQ/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/distributions/tests/test_discrete.pyÚtest_pmf_p1   s    zTestGenpoisson_p.test_pmf_p1c                 C   s.   t  dd¡}t dddd¡}t||dd d S )Né   r   r   r   r   r   r   r   r   Útest_pmf_p2   s    zTestGenpoisson_p.test_pmf_p2c                 C   s.   t  dd¡}t dddd¡}t||dd d S )Né
   r   gÙ}ÚõÐò¾:é   çê-™—q=r   r   )r   r   Zgenpoisson_pmf_5r   r   r   Útest_pmf_p5$   s    zTestGenpoisson_p.test_pmf_p5c                 C   s.   t  dd¡}t dddd¡}t||dd d S )Nr    r   r   r   r   r   ©r   Úlogpmfr   r   r   r   r   r   Útest_logpmf_p1)   s    zTestGenpoisson_p.test_logpmf_p1c                 C   s.   t  dd¡}t dddd¡}t||dd d S )Né   r   r   r   r   r   r#   r   r   r   r   Útest_logpmf_p2.   s    zTestGenpoisson_p.test_logpmf_p2N)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r%   r'   r   r   r   r   r      s
   r   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestTruncatedPoissonú-
    Test Truncated Poisson distribution
    c                 C   s8   t  dd¡t  dd¡ }t ddd¡}t||dd d S ©Nr   r   çH¯¼šò×z>r   )r   r   Úsfr	   r   ©r   r   Ztpoisson_pmfr   r   r   Útest_pmf_zero8   s    z"TestTruncatedPoisson.test_pmf_zeroc                 C   s>   t  dd¡t t  dd¡¡ }t ddd¡}t||dd d S r-   ©r   r$   ÚnpÚlogr/   r	   r   ©r   Úpoisson_logpmfZtpoisson_logpmfr   r   r   Útest_logpmf_zero=   s    z%TestTruncatedPoisson.test_logpmf_zeroc                 C   s<   t  dd¡dt  dd¡  }t ddd¡}t||dd d S )Né   r&   r   r   r.   r   )r   r   Úcdfr	   r   r0   r   r   r   Útest_pmfB   s    zTestTruncatedPoisson.test_pmfc                 C   s>   t  dd¡t t  dd¡¡ }t ddd¡}t||dd d S )Nr8   r&   r   r.   r   r2   r5   r   r   r   Útest_logpmfG   s    z TestTruncatedPoisson.test_logpmfN©r(   r)   r*   Ú__doc__r1   r7   r:   r;   r   r   r   r   r+   4   s
   r+   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestZIPoissonc                 C   s,   t  dd¡}t ddd¡}t||dd d S ©Né   r   r   r!   r   ©r   r   r   r   ©r   r   Zzipoisson_pmfr   r   r   r1   O   s    zTestZIPoisson.test_pmf_zeroc                 C   s,   t  dd¡}t ddd¡}t||dd d S ©Nr    r   r   r!   r   ©r   r$   r   r   ©r   r6   Zzipoisson_logpmfr   r   r   r7   T   s    zTestZIPoisson.test_logpmf_zeroc                 C   s.   t  dd¡}t ddd¡}t||ddd d S )Nr   çš™™™™™¹?çš™™™™™©?©r   ÚatolrA   rB   r   r   r   r:   Y   s    zTestZIPoisson.test_pmfc                 C   s.   t  dd¡}t ddd¡}t||ddd d S )Né   r@   rF   rG   rH   rD   rE   r   r   r   r;   ^   s    zTestZIPoisson.test_logpmfc                 C   s,   t  dd¡}t ddd¡}t||dd d S r?   )r   r9   r   r   )r   Zpoisson_cdfZzipoisson_cdfr   r   r   Útest_cdf_zeroc   s    zTestZIPoisson.test_cdf_zeroc                 C   s,   t  dd¡}t ddd¡}t||dd d S rC   )r   Úppfr   r   )r   Zpoisson_ppfZzipoisson_ppfr   r   r   Útest_ppf_zeroh   s    zTestZIPoisson.test_ppf_zeroc                 C   s¨   t  d¡t  d¡ }}t dd¡}t dd¡}t||dd t||dd t dddg¡}t  |¡t  |¡ }}t |d¡}t |d¡}t||dd t||dd d S )	Né   r   ç»½×Ùß|Û=r   r   r    r   ç        )r   ÚmeanÚvarr   r   r3   Úarray)r   Úpoisson_meanÚpoisson_varZzipoisson_meanZzipoisson_varÚmr   r   r   Útest_mean_varm   s    zTestZIPoisson.test_mean_varc                 C   sr   t  dd¡t  dd¡ }}t ddd¡}t ddd¡}t ddd¡}td|dd t||dd t||dd d S )Nr   rN   r   r   rO   r   )r   Úmomentr   r   )r   Z
poisson_m1Z
poisson_m2Zzip_m0Zzip_m1Zzip_m2r   r   r   Útest_moments{   s    zTestZIPoisson.test_momentsN)r(   r)   r*   r1   r7   r:   r;   rK   rM   rW   rY   r   r   r   r   r>   M   s   r>   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestZIGeneralizedPoissonc                 C   s4   t  dddd¡}t ddddd¡}t||dd d S )Nr@   r   r   r   r!   r   ©r   r   r   r   ©r   Zgp_pmfZzigp_pmfr   r   r   r1   †   s    z&TestZIGeneralizedPoisson.test_pmf_zeroc                 C   s4   t  dddd¡}t ddddd¡}t||dd d S )NrJ   r@   r   r   r!   r   ©r   r$   r   r   ©r   Z	gp_logpmfZzigp_logpmfr   r   r   r7   ‹   s    z)TestZIGeneralizedPoisson.test_logpmf_zeroc                 C   s6   t  dddd¡}t ddddd¡}t||ddd d S )Nr@   r   rF   rG   rH   r[   r\   r   r   r   r:      s    z!TestZIGeneralizedPoisson.test_pmfc                 C   s6   t  dddd¡}t ddddd¡}t||ddd d S )Nr   r@   r   rF   rG   rH   r]   r^   r   r   r   r;   •   s    z$TestZIGeneralizedPoisson.test_logpmfc                 C   sf   t  dddg¡}t |¡t |¡ }}t |ddd¡}t |ddd¡}t||dd t||dd d S )Nr   r    r   r   rP   rO   r   )r3   rS   r   rQ   rR   r   r   )r   rV   rT   rU   Zzigenpoisson_meanZzigenpoisson_varr   r   r   rW   š   s    z&TestZIGeneralizedPoisson.test_mean_varN)r(   r)   r*   r1   r7   r:   r;   rW   r   r   r   r   rZ   …   s
   rZ   c                   @   st   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú	TestZiNBPc                 C   sF   t  ddd¡\}}t d||¡}t  ddddd¡}t||ddd d S )Né   rF   r   éd   ç{®Gáz„?çñhãˆµøä>rH   ©r   Úconvert_paramsr   r   r   ©r   ÚnÚpZnb_pmfÚtnb_pmfr   r   r   r   §   s    zTestZiNBP.test_pmf_p2c                 C   sF   t  ddd¡\}}t d||¡}t  ddddd¡}t||ddd d S )Nr   r   r   éÈ   rb   rH   ©r   re   r   r$   r   ©r   rg   rh   Ú	nb_logpmfZ
tnb_logpmfr   r   r   r'   ­   s    zTestZiNBP.test_logpmf_p2c                 C   sF   t  ddd¡\}}t d||¡}t  ddddd¡}t||ddd d S )Nr`   rF   r   r   r   r!   rH   ©r   re   r   r9   r   ©r   rg   rh   Z
nbinom_cdfZzinbinom_cdfr   r   r   Útest_cdf_p2³   s    zTestZiNBP.test_cdf_p2c                 C   sF   t  ddd¡\}}t d||¡}t  ddddd¡}t||ddd d S )Nra   r   r   gHáz®GÑ?r   r!   rH   ©r   re   r   rL   r   ©r   rg   rh   Z
nbinom_ppfZzinbinom_ppfr   r   r   Útest_ppf_p2¹   s    zTestZiNBP.test_ppf_p2c                 C   sl   t  ddd¡\}}t ||¡t ||¡ }}t  dddd¡}t  dddd¡}t||dd t||dd d S ©NrJ   r   r   r   rO   r   )r   re   r   rQ   rR   r   )r   rg   rh   Únbinom_meanÚ
nbinom_varÚ	zinb_meanÚzinb_varr   r   r   Útest_mran_var_p2¿   s    zTestZiNBP.test_mran_var_p2c                 C   s”   t  ddd¡\}}t d||¡t d||¡ }}t  ddddd¡}t  ddddd¡}t  ddddd¡}td|dd t||dd t||dd d S rt   ©r   re   r   rX   r   ©r   rg   rh   Znb_m1Znb_m2Zzinb_m0Zzinb_m1Zzinb_m2r   r   r   Útest_moments_p2Ç   s    zTestZiNBP.test_moments_p2c                 C   sH   t  ddd¡\}}t d||¡}t  ddddd¡}t||d dd d S )Nr   çÍÌÌÌÌÌì?r   ç      à?r.   r   rd   ©r   rg   rh   rm   ri   r   r   r   r:   Ñ   s    zTestZiNBP.test_pmfc                 C   sF   t  ddd¡\}}t d||¡}t  ddddd¡}t||ddd d S )Nr    r   r   g{®Gázt?rb   rH   rk   rl   r   r   r   r;   ×   s    zTestZiNBP.test_logpmfc                 C   sF   t  ddd¡\}}t d||¡}t  ddddd¡}t||ddd d S )Nr   r}   r   r   r!   rH   rn   ro   r   r   r   Útest_cdfÝ   s    zTestZiNBP.test_cdfc                 C   sF   t  ddd¡\}}t d||¡}t  ddddd¡}t||ddd d S )Nr    r   g¸…ëQ¸æ?r   r!   rH   rq   rr   r   r   r   Útest_ppfã   s    zTestZiNBP.test_ppfc                 C   sx   t  ddd¡\}}d\}}t||ddd t||ddd t  ddd	¡\}}d
\}}t||ddd t||ddd d S )Né   g333333ë?r   )gÓÒÒÒÒÒò?gq\à§?r!   rH   rJ   gÃõ(\ÂÅ?r   )g––––––D@g›µY›µYë?)r   re   r   )r   rg   rh   Zn_trueZp_truer   r   r   Útest_converté   s    zTestZiNBP.test_convertc                 C   s†   dt  dddg¡fD ]l}t |dd¡\}}t ||¡t ||¡ }}t |ddd¡}t |ddd¡}t||dd t||dd qd S )Né	   r   r    r   r   rO   r   )r3   rS   r   re   r   rQ   rR   r   )r   rV   rg   rh   ru   rv   rw   rx   r   r   r   rW   ô   s    zTestZiNBP.test_mean_varc                 C   s”   t  ddd¡\}}t d||¡t d||¡ }}t  ddddd¡}t  ddddd¡}t  ddddd¡}td|dd t||dd t||dd d S )Nr„   r   r   r   rO   r   rz   r{   r   r   r   rY   ý   s    zTestZiNBP.test_momentsN)r(   r)   r*   r   r'   rp   rs   ry   r|   r:   r;   r€   r   rƒ   rW   rY   r   r   r   r   r_   ¥   s   
	r_   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚCheckDiscretizedc                 C   s   |  ¡ }| dd¡ |S )Néÿÿÿÿr   )ÚtolistÚinsert)r   ÚparamsÚargsr   r   r   re   
  s    zCheckDiscretized.convert_paramsc              	   C   s  | j }| j}| j}| j}| j}| j}tj d¡ t	||ƒ}|j|ksHt
‚t d¡}|j|f|žŽ }	|j|f|žŽ }
t |
¡}t|	d t|ƒ… |dd |j|f|žŽ }t|d t|
ƒd … |
dd … dd |j|f|žŽ }t||	dd |j|f|žŽ }t||dd |j|f|žŽ }t|d| dd d}|j|d|iŽ}t|ƒ|ksPt
‚| ¡ dksbt
‚t||d	}|j|d
}|j|jdd}	|  |j¡}t |jt d¡f|žŽ ¡ }t|	|dd t |jt d¡f|žŽ ¡}t|	|ddd t | t¡¡}t|ƒ}|dkr@d}||d   ||d …  ¡ 7  < |d |… }|j|jd|d}	|	|d   d|	d |…  ¡  7  < t  ||	d |… | ¡}|j!dksžt
‚| "|j¡}d}|j|d}t |¡}|j|jd|d}	t|ƒ}|	|d   d|	d |…  ¡  7  < t  ||	d |… | ¡}|j!dks*t
‚| #| t dd¡d ¡¡}t $ddddddg¡}t%||ƒ t &| t dd¡¡d d¡}	| #|	¡}t dd¡}t%||ƒ | #| t d¡¡¡}t dd¡}t%||ƒ | 'd| t dd¡d ¡ ¡}t $ddddddg¡}t%||ƒ d S )Né
 r    g‚vIhÂ%<=r   r   iÐ  Úsizegü©ñÒMbP?©Zdistr©Ústart_paramsÚprobs©Úwhiché   r   rH   r   )r’   Zk_maxrb   iô  )rŒ   r†   gíµ ÷Æ°>g      ð¿g      ð?g       @g      @g      @g      @r   )(Úd_offsetÚddistrÚparamgÚparamdÚshapesr   r3   ÚrandomÚseedr   ÚAssertionErrorÚarangeZ_pmfr9   Zdiffr   ÚlenZ_cdfr   r/   ÚrvsrR   r   ÚfitÚpredictr‰   re   ZbincountZastypeÚintÚsumr   Ú	chisquareÚpvalueZ	get_distrrL   rS   r   ÚmaximumÚisf)r   r”   r•   r–   r—   r˜   r   ÚdpÚxirh   Úcdf1Úp1r9   Úp2Zcdf2r/   ÚnobsZxxÚmodÚresrŠ   ÚfreqÚkZtchi2ZdfrZnobs_rvsrž   ÚqZq1r   r   r   Ú
test_basic  s„    


&
 $
$



 zCheckDiscretized.test_basicN)r(   r)   r*   re   r²   r   r   r   r   r…     s   r…   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestDiscretizedGammac                 C   s*   d| _ tj| _d| _d| _d| _d| _d S )Nr   )r    r   r~   )r    r~   za, s)r   r~   )r”   r   Úgammar•   r–   r—   r˜   r   ©Úclsr   r   r   Úsetup_classh  s    z TestDiscretizedGamma.setup_classN©r(   r)   r*   Úclassmethodr·   r   r   r   r   r³   f  s   r³   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestDiscretizedExponentialc                 C   s*   d| _ tj| _d| _d| _d| _d| _d S )Nr   )r   r    )r    Úsr~   )r”   r   Úexponr•   r–   r—   r˜   r   rµ   r   r   r   r·   u  s    z&TestDiscretizedExponential.setup_classNr¸   r   r   r   r   rº   s  s   rº   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestDiscretizedLomaxc                 C   s*   d| _ tj| _d| _d| _d| _d| _d S )Nr   )r   r   ç      ø?)r   r¾   zc, s)r~   r~   )r”   r   Zlomaxr•   r–   r—   r˜   r   rµ   r   r   r   r·   ‚  s    z TestDiscretizedLomax.setup_classNr¸   r   r   r   r   r½   €  s   r½   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestDiscretizedBurr12c                 C   s*   d| _ tj| _d| _d| _d| _d| _d S )Nr   )r   r   r   r¾   )r   r   r¾   zc, d, s)r~   r   r~   )r”   r   Zburr12r•   r–   r—   r˜   r   rµ   r   r   r   r·     s    z!TestDiscretizedBurr12.setup_classNr¸   r   r   r   r   r¿     s   r¿   c                   @   s   e Zd Zdd„ ZdS )ÚTestDiscretizedGammaExc                 C   s¢  dddddg}t  t  d¡|¡}tddgd	d
ddddddddgd}ttjƒ}t||d}|jddgd}t	|ƒ}t
|j|jdd t
|j|jdd t
|j|jdd t|j|jƒ |j|jdd}|d t	|jƒ… }	|	d  d|	 ¡  7  < t
|	| |jdd t
t  |¡|	|  ¡ dd tj||	| t	|jƒd}
t
|
jd d!d t
|
jd"d!d | ¡  t j d#¡ | ¡ }t
|j|d d$d t
|j|d d$d d S )%Né.   éL   é   r„   r   r    ggaO;ü5@gÒÈçO=Û?g^ºIogÀgÛ;á%8û?r   gz6«>WÛ?g^ºI¯w@g=
×£p=G@g®GáznR@gáz®Gá;@g      @g¸…ëQ¸ö?)r‰   ÚllfZchi2Údf_modelrh   Úaicr   r   rŽ   rc   r   gú~j¼t“x?)rI   r   r‘   r†   g¸…ëQ¸®?rO   )Zddofg.cØ›÷Cû?r.   gûÌYŸrLÛ?r‹   rG   )r3   Úrepeatrœ   r   r   r   r´   r   rŸ   r   r   r‰   rÄ   rÆ   r   rÅ   r    r   r¢   r£   Z	statisticr¤   Úsummaryr™   rš   Z	bootstrapZbse)r   r¯   ÚyZres1r§   r­   r®   r¬   r   Zprobs_truncZres_chi2Z	res_bootsr   r   r   Útest_all  sD    ù	
ÿzTestDiscretizedGammaEx.test_allN©r(   r)   r*   rÊ   r   r   r   r   rÀ   š  s   rÀ   c                   @   s   e Zd Zdd„ ZdS )ÚTestGeometricc                 C   sÔ  d}dt  d| ¡ }tj|dd}ttjƒ|ƒ}t  d¡}| |¡}| |¡}t||dd | 	|¡}| 	|¡}	t|	|dd | 
|¡}
| 
|¡}t||
dd | |¡}| |¡}t||ƒ | |d ¡}| |d ¡}t||ƒ | |d ¡}| |d ¡}t||ƒ | d	¡}| d	¡}t|dƒ | |
¡}| |
¡}t||ƒ | |
d ¡}| |
d ¡}t||ƒ | |
d ¡}| |
d ¡}t||ƒ | d	¡}| d	¡}t||ƒ | d¡}| d¡}t|dƒ d S )
Ng333333ã?r†   r   )Úlocr&   rO   r   g:Œ0âŽyE>r   )r3   r4   r   Zgeomr   r¼   rœ   r   r   r9   r/   rL   r   r¦   )r   Zp_geomZscale_dexponZdgeoZdpgr¨   Zpmf1r   r©   r9   Zsf1r/   Zppf1rL   Zisf1r¦   r   r   r   rÊ   Î  sR    
























zTestGeometric.test_allNrË   r   r   r   r   rÌ   Ì  s   rÌ   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestTruncatedNBPr,   c                 C   sR   t  ddd¡\}}t d||¡t d||¡ }t  ddddd¡}t||dd d S )Nr    rF   r   r   r   rc   r   )r
   re   r   r   r/   r   rf   r   r   r   r1     s    zTestTruncatedNBP.test_pmf_zeroc                 C   sZ   t  ddd¡\}}t d||¡t t d||¡¡ }t  ddddd¡}t||ddd d S )Nr    r   r   r   rb   rH   )r
   re   r   r$   r3   r4   r/   r   rl   r   r   r   r7     s    "z!TestTruncatedNBP.test_logpmf_zeroc                 C   sn   t  ddd¡\}}t d||¡t d||¡ }t  ddddd¡}t||dd t  ddddd¡}t|dƒ d S )Nr   r~   r&   r    r.   r   r   )r
   re   r   r   r/   r   r   r   r   r   r   r:     s    zTestTruncatedNBP.test_pmfc                 C   sx   t  ddd¡\}}t d||¡t t d||¡¡ }t  ddddd¡}t||dd t  ddddd¡}t |¡stt	‚d S )Nr    rF   r   r&   r.   r   )
r
   re   r   r$   r3   r4   r/   r   Zisneginfr›   rl   r   r   r   r;     s    "zTestTruncatedNBP.test_logpmfNr<   r   r   r   r   rÎ   þ  s
   	rÎ   )"Znumpyr3   Znumpy.testingr   r   Zscipyr   Zscipy.statsr   r   Zstatsmodels.tools.toolsr   Z"statsmodels.distributions.discreter   r	   r
   r   r   r   r   r   r   r+   r>   rZ   r_   r…   r³   rº   r½   r¿   rÀ   rÌ   rÎ   r   r   r   r   Ú<module>   s$   (8 c^22