a
    \:b                     @   s~  d Z ddlZddlmZ ddlmZ ddlmZ ddd	iiZ	d
d Z
dd Zdd Zdd Zdd Zdd Zdd Zi Zg Zg Zg Zg Zdd Zdd Zedkrze  dd e D Zdd e D Zd d e D Zd!d e D Zdd"lmZ e edkr&e!d# e!eeg d$d% e!d& e!eeg d$d% e!d' e!eeg d$d% e!d( e!eeg d$d% dS ))zscript to test expect and moments in distributions.stats method

not written as a test, prints results, renamed to prevent test runner from running it


    N)stats	expect_v2   )distcontZncfZubi  c                 C   s<   | \}}}}t ||d }t ||d d }||||fS )>convert central moments to mean, variance, skew, kurtosis
    g      ?g       @g      @)npZdivide)argsmcmc2mc3mc4skewkurt r   Tlib/python3.9/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pymc2mvsk   s    r   c           	      C   sl   | \}}}}|}|||  }|d| | |d   }|d| | d| | |  |d   }t ||||fS )r            )r   )	r	   Zmncmnc2mnc3mnc4r
   r   r   r   r   r   r   mnc2mvsk   s    (r   c                 C   s   dS )Ng      ?r   xr   r   r   mom_nc0&   s    r   c                 C   s   | S Nr   r   r   r   r   mom_nc1)   s    r   c                 C   s   | |  S r   r   r   r   r   r   mom_nc2,   s    r   c                 C   s   | |  |  S r   r   r   r   r   r   mom_nc3/   s    r    c                 C   s   t | dS )Nr   )r   Zpowerr   r   r   r   mom_nc42   s    r!   c                     s   t d d  D ]\} }tt|   j|i tdd\}}}}t||||g}t|}| dk rpt	|  t
|   j} fdd}t| i }	|tfd|i|	}
|f d|i|	}|tfd|i|	}|tfd|i|	}|tfd|i|	}|f |ddd	|	}zt||||f\}}}}W nH   t
d
||||| tjgd \}}}}|jdkrnt	|  Y n0 t||||g}|| ||  }t
||dd|    t|dkrtt|dkrt	|  n
t	|  |
||||gt| < qd S )NmvskZmomentsr   c                     s   t  g| R i |S r   r   )r	   kwdsZdistfnr   r   <lambda>P       z"check_cont_basic.<locals>.<lambda>r	   r      )r	   ZlocZscaleZ	exceptionr   gMbP?)r   getattrr   dictr   arrayisfinitesumdistnonfiniteappendprintexpectspecialcasesgetr   r   r    r!   r   nansizedistexmaxabsdistlowdistokres)distnameZdistargsmvskstmaskr1   Zspecial_kwdsZmnc0Zmnc1r   r   r   Zmnc1_lcmeZveZseZkeZemZdiffr   r%   r   check_cont_basic;   s>    


&
rD   c                  C   s   ddl m}  d}| tjjdddd|dd	 td
g}tddg}tddg}tg d}d}| }||tddg   }||tddg   }	tg d }
}t|||	|
f}dS )ztest for incorrect kurtosis of nct

    D. Hogben, R. S. Pinkham, M. B. Wilk: The Moments of the Non-Central
    t-DistributionAuthor(s): Biometrika, Vol. 48, No. 3/4 (Dec., 1961),
    pp. 465-468
    r   )assert_almost_equal)V`V?gso5?g*s?ga?
   r   r"   r#   r   )ZdecimalrF   g8WV?g      ?gEd~?gl%?)gu*'ȥ?gmn?g      @r(   r   N)	Znumpy.testingrE   r   Znctr   r+   itemr-   r   )rE   Z	mvsk_10_1Zc1Zc2Zc3Zc4ZncZmc1r   r   r   Zmvsk_ncr   r   r   nct_kurt_bugp   s    rI   __main__c                 C   s^   g | ]V\}}t |d  d |d d  dkrt |d  d r||d  d |d d fqS )r   r   r(   gư>r   r8   r,   .0r@   r>   r   r   r   
<listcomp>   s   4rN   c                 C   s^   g | ]V\}}t |d  d  |d d   dkrt |d  d  r||d  d  |d d  fqS r   r(   {Gz?rK   rL   r   r   r   rN      s   4c                 C   s^   g | ]V\}}t |d  d |d d  dkrt |d  d  r||d  d |d d fqS rO   rK   rL   r   r   r   rN      s   4c                 C   s^   g | ]V\}}t |d  d |d d  dkrt |d  d  r||d  d |d d fqS )r   r   r(   rP   rK   rL   r   r   r   rN      s   4)SimpleTablez
Mean difference at least 1e-6)r<   Z	diststatsr1   )Zheadersz"
Variance difference at least 1e-2z
Skew difference at least 1e-2z"
Kurtosis difference at least 1e-2)"__doc__Znumpyr   Zscipyr   Z)statsmodels.sandbox.distributions.sppatchr   Z
distparamsr   r2   r   r   r   r   r   r    r!   r;   r6   r9   r:   r.   rD   rI   __name__itemsZmean_Zvar_r   r   Zstatsmodels.iolibrQ   lenr0   r   r   r   r   <module>   sF   5
