U
    Kvf                     @   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 )Nr   )r   
ValueErrorr   self r   R/tmp/pip-unpacked-wheel-2v6byqio/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|?gHI?)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"   )locZ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:   rO   r;   r   r   r4   l   s     c                    s   g | ]}  |qS r   )ZmomentrO   )ner   r   r4   m   s     r    )argmsgi i  )sizeg{Gz?)argsalpharvs)r   rA   rB   rC   rD   r
   r   	check_pdfcheck_cdf_ppfcheck_cdf_sfrH   randomseedrX   check_distribution_rvs)r   r6   ZcumrX   r   )r)   rQ   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   rQ   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 )Nr`   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   rL   r_   rb   rd   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     @ra   r'   z - cdf-pdf relationshipdecimalerr_msg)re   )ppfrI   cdfnptassert_almost_equalDECIMAL)distfnrS   rT   ZmedianZepsZpdfvZcdfdiffr   r   r   rY      s"     rY   c                 C   s<   dddg}t j| j| j|f| f| |t|d d d S )NMbP?re   +?z - cdf-ppf roundtriprf   )rk   rl   rj   ri   rm   rn   rS   rT   valuesr   r   r   rZ      s    
  rZ   c                 C   s@   dddg}t j| j|f| d| j|f|  t|d d d S )Nro   re   rp   r@   z - sf+cdf == 1rf   )rk   rl   rj   Zsfrm   rq   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  )rV   r6   zD = z	; pval = z
; alpha = z
args = )rJ   Zkstestrj   rX   rk   Zassert_str)rn   rV   rW   rX   DZpvalr   r   r   r^      s     r^   )rA   ZnumpyrH   Znumpy.testingr   r   r   Ztestingrk   Zscipy.specialr   r   r   Zscipy.statsrJ   Z#statsmodels.distributions.edgeworthr   r	   r
   r   r$   r&   r*   r,   r-   r=   rm   rY   rZ   r[   r^   r   r   r   r   <module>   s$   M