U
    Ãmœd  ã                   @   sÖ   d dl Z d dlZd dlmZmZ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mZmZ G dd„ dƒZdd„ Zd	d
„ Zdd„ Zdd„ ZG dd„ dƒZG dd„ dƒZdZdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)Úassert_equalÚassert_raisesÚassert_allclose)ÚgammaÚ	factorialÚ
factorial2)Ú_faa_di_bruno_partitionsÚcumulant_from_momentsÚExpandedNormalc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestFaaDiBrunoc                 C   s   t ttdƒ t ttdƒ d S )Néÿÿÿÿr   )r   Ú
ValueErrorr   ©Úself© r   úg/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/distributions/tests/test_edgeworth.pyÚtest_neg_arg   s    zTestFaaDiBruno.test_neg_argc                 C   s>   t ddƒD ].}t|ƒD ] }tdd„ |D ƒƒ}t||ƒ qq
d S )Né   é   c                 s   s   | ]\}}|| V  qd S )Nr   )Ú.0ÚmÚkr   r   r   Ú	<genexpr>   s     z1TestFaaDiBruno.test_small_vals.<locals>.<genexpr>)Úranger   Úsumr   )r   ÚnÚksÚlhsr   r   r   Útest_small_vals   s    zTestFaaDiBruno.test_small_valsN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s   r   c                 C   s   d| d  t | d ƒ S )Nr   é   )r   ©r   r   r   r   Ú_norm_moment   s    r$   c                 C   s,   zdddœ|  W S  t k
r&   Y dS X d S )Nr   r   )r   r"   )ÚKeyErrorr#   r   r   r   Ú_norm_cumulant   s    r&   c                 C   s$   d|  t | |d  ƒ t |d ƒ S )Nr"   ç       @)r   ©r   Údfr   r   r   Ú_chi2_moment&   s    r*   c                 C   s(   | dkst ‚d| d  t| d ƒ | S )Nr   r"   r   )ÚAssertionErrorr   r(   r   r   r   Ú_chi2_cumulant*   s    r,   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestCumulantsc                 C   s,   t ttdddgdƒ t ttdddgdƒ d S )Nr   r"   é   r   é   )r   r   r	   r   r   r   r   Útest_badvalues0   s    zTestCumulants.test_badvaluesc                 C   sJ   d}dd„ t |ƒD ƒ}t d|d ƒD ] }t||ƒ}t|t|ƒdd� q$d S )Nr/   c                 S   s   g | ]}t |d  ƒ‘qS ©r   )r$   ©r   Újr   r   r   Ú
<listcomp>6   s     z+TestCumulants.test_norm.<locals>.<listcomp>r   gê-�™—q=)Zatol)r   r	   r   r&   ©r   ÚNZmomtr   Úkappar   r   r   Ú	test_norm4   s    

ÿzTestCumulants.test_normc                    sP   d}d‰ ‡ fdd„t |ƒD ƒ}t d|d ƒD ]}t||ƒ}t|t|ˆ ƒƒ q,d S )Nr/   é   c                    s   g | ]}t |d  ˆ ƒ‘qS r1   ©r*   r2   ©r)   r   r   r4   ?   s     z+TestCumulants.test_chi2.<locals>.<listcomp>r   )r   r	   r   r,   r5   r   r;   r   Ú	test_chi2<   s    
zTestCumulants.test_chi2N)r   r    r!   r0   r8   r<   r   r   r   r   r-   /   s   r-   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestExpandedNormalc                 C   s   t ttdgƒ d S )Nr   )r   r   r
   r   r   r   r   Útest_too_few_cumulantsF   s    z)TestExpandedNormal.test_too_few_cumulantsc                 C   sÌ   t  ¡ �º t  dt¡ tdddgƒ}t|jddddgƒ tddddgƒ}t|jdddddddgƒ tdddddgƒ}t|jdddddddddd	g
ƒ tddddgƒ}t|jdddddddgƒ W 5 Q R X d S )
NÚignoreg        ç      ð?gUUUUUUÅ?gUUUUUU¥?gÇqÇqŒ?g�?gÇqÇq|?gàéÖü°HI?)ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr
   r   Z_coef)r   Zne3Zne4Zne5Zne33r   r   r   Útest_coefficientsI   s    
   ÿz$TestExpandedNormal.test_coefficientsc                 C   s<   t ddgƒ}t ddd¡}t| |¡tjj|ddd�ƒ d S )Nr.   r/   g       Àr'   éd   r"   )ÚlocÚscale)r
   ÚnpZlinspacer   ÚpdfÚstatsZnorm)r   Zne2Úxr   r   r   Útest_normal]   s    zTestExpandedNormal.test_normalc              	      sÎ   d\}‰ ‡ fdd„t |ƒD ƒ}t ¡ � t dt¡ t|dd�‰W 5 Q R X t‡ fdd„t |ƒD ƒ‡fdd„t |ƒD ƒƒ tˆd	d
d� tˆd	d
d� t	ˆd	d
d� t
j d¡ ˆjdd�}tˆd	d|d� d S )N)é   é   c                    s   g | ]}t |d  ˆ ƒ‘qS r1   )r,   ©r   r   r;   r   r   r4   f   s     z8TestExpandedNormal.test_chi2_moments.<locals>.<listcomp>r?   Z	edgw_chi2)Únamec                    s   g | ]}t |ˆ ƒ‘qS r   r:   rP   r;   r   r   r4   l   s     c                    s   g | ]}ˆ   |¡‘qS r   )ZmomentrP   )Úner   r   r4   m   s     r   Ú )ÚargÚmsgi® iô  )Úsizeg{®Gáz„?)ÚargsÚalphaÚrvs)r   rA   rB   rC   rD   r
   r   Ú	check_pdfÚcheck_cdf_ppfÚcheck_cdf_sfrI   ÚrandomÚseedrY   Úcheck_distribution_rvs)r   r6   ZcumrY   r   )r)   rR   r   Útest_chi2_momentsc   s    
ÿz$TestExpandedNormal.test_chi2_momentsc              	   C   s@   t  ¡ �. t  dt¡ tddgƒ}tddddgƒ}W 5 Q R X d S )NÚerrorr   r   çš™™™™™¹?)rA   rB   rC   rD   r
   )r   rR   r   r   r   Útest_pdf_no_roots…   s    
z$TestExpandedNormal.test_pdf_no_rootsc              	   C   s6   t  ¡ �$ t  dt¡ tttdddgƒ W 5 Q R X d S )Nra   r   r   ée   )rA   rB   rC   rD   r   r
   r   r   r   r   Útest_pdf_has_roots‹   s    
z%TestExpandedNormal.test_pdf_has_rootsN)	r   r    r!   r>   rE   rM   r`   rc   re   r   r   r   r   r=   E   s   "r=   r9   c                 C   s”   | j d	|žŽ }d}| j|f|žŽ }|dk s2|dkrJ|d }| j|f|žŽ }| j|| f|žŽ | j|| f|žŽ  | d }tj||t|d d� d S )
Nç      à?g�íµ ÷Æ°>g-Cëâ6?g     ˆÃ@rb   r'   z - cdf-pdf relationship©ÚdecimalÚerr_msg)rf   )ÚppfrJ   ÚcdfÚnptÚassert_almost_equalÚDECIMAL)ÚdistfnrT   rU   ZmedianZepsZpdfvZcdfdiffr   r   r   rZ   ”   s"    ÿÿÿ ÿrZ   c                 C   s<   dddg}t j| j| j|f|žŽ f|žŽ |t|d d� d S )Nçü©ñÒMbP?rf   ç+‡ÙÎ÷ï?z - cdf-ppf roundtriprg   )rl   rm   rk   rj   rn   ©ro   rT   rU   Úvaluesr   r   r   r[   ¦   s    
  ÿr[   c                 C   s@   dddg}t j| j|f|žŽ d| j|f|žŽ  t|d d� d S )Nrp   rf   rq   r@   z - sf+cdf == 1rg   )rl   rm   rk   Zsfrn   rr   r   r   r   r\   ¬   s    
 þr\   c                 C   sz   t j|| j|dd�\}}||k rvt j| j| j|dd�\}}t ||kdt|ƒ d t|ƒ d t|ƒ d t|ƒ ¡ d S )Niè  )rW   r6   zD = z	; pval = z
; alpha = z
args = )rK   Zkstestrk   rY   rl   Zassert_Ústr)ro   rW   rX   rY   ÚDZpvalr   r   r   r_   ³   s     ÿÿÿÿr_   )rA   ÚnumpyrI   Znumpy.testingr   r   r   Útestingrl   Zscipy.specialr   r   r   Zscipy.statsrK   Z#statsmodels.distributions.edgeworthr   r	   r
   r   r$   r&   r*   r,   r-   r=   rn   rZ   r[   r\   r_   r   r   r   r   Ú<module>   s$   M