U
    Kvf4                     @   s  d Z ddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZ d\ZZddd	gZd
ddgZdddgZdd Z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eZd d! Zed"krd\ZZddd	gZd
ddgZdddgZe ed# ed$ee e
jeeed% ed&ee d'e
j eeed%  ed(ee ej!ed' ed)ee e
j"eeed% ed*ee ej!"ed' ed+ee e
j#eeed% ed,ee ej!#ed' ed-e
jed.d/d% ed0ej!jed'd.d/d% ed1 ed2 ed3ee ejeeed% ed4ee d'ej eeed%  ed5ee ej$ed6 ed7ee ej%e ed8ee ej"eeed% ed9ee ej$"ed6 ed:ee ej%"e ed;ee ej#eeed% ed<ee ej$#ed6 ed=ee ej%#e ed> ed? ed@ edA edBee ejeeed% edCee d'ej eeed%  edDee ej"eeed% edBee ejeeed% edCee d'ej eeed%  edEee ej! ed' edDee ej"eeed% edFee ej!"ed' edDee ej"eeed% edG edH edIee eedJ edKee d'e edJ  edLee ej&ed'dJ edMee e"edJ edNee ej&"ed'dJ edOee e#edJ edPee ej&#ed'dJ edQedRdJ edSej&dRd'dJ edTejdJdUdV edWej&jd'dJdUdV d'Z'dJZ(dXe(dXe'  dY  e(dZ  e)dXe(d[  e'e(e' dY    Z*d\dYe( d]  d^e*e* e(dZ    Z+ed_e*e+ ee
,  ee
j,d`da edb eej&j,d'dJdcda eej,dJdcda ej-.dd ej,dJdedaZ/e0dcdJ e/dc 1  e0d\dJ e/d\ 1  ejdJdUdV e2e/ e#e3dfd'dgdJZ4ej5e/e4dh\Z6Z7ee6e8e9e/  ddl:m;Z< e<j=e/didjdkdl\Z6Z7Z>e7e7d' e7d  dY 7 Z7e<?e7ddm e"e7ddm dJdn ddl@Z@e@AeBdodpdqg dS )rzD
Created on Sun May 09 22:23:22 2010
Author: josef-pktd
Licese: BSD
    N)assert_almost_equal)stats)ExpTransf_genLogTransf_gensquarenormalg
absnormalgnegsquarenormalgsquaretg)              ?g?g      ?g?gffffff?r   g?gffffffg      gc                  C   sZ   t tj} | dd}tjdd}t||d | dd}tjdd}t||d d S )N   
            )r   r   gamma_cdfloggammacdfr   )Zloggammaexpgcdftrcdfst r   Y/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/sandbox/distributions/examples/ex_transf2.pytest_loggamma   s    
r   c                  C   s6   t tj} tjdd}| ddd}t||d d S )N   r   gUUUUUU?r   )r   r   ZlaplaceZ
loglaplacer   r   r   )Zloglaplaceexpgr   r   r   r   r   test_loglaplace!   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 )CheckDistEquivalencec                 C   sh   | j jtf| j| j}d| j jtf| j| j }| jjtf| j| j}t	||d t	||d d S )Nr   r   )
distr   xxtrargstrkwdssf	statsdiststargsstkwdsr   )selfr   sfctrr   r   r   r   test_cdf1   s
    zCheckDistEquivalence.test_cdfc                 C   s@   | j jtf| j| j}| jjtf| j| j}t||d d S N   )	r   pdfr   r   r    r"   r#   r$   r   )r%   ZpdftrZpdfstr   r   r   test_pdf9   s    zCheckDistEquivalence.test_pdfc                 C   s@   | j jtf| j| j}| jjtf| j| j}t||d d S r(   )	r   ppfppfqr   r    r"   r#   r$   r   )r%   ZppftrZppfstr   r   r   test_ppf?   s    zCheckDistEquivalence.test_ppfc                 C   sl   | j j| jddi}|d}| j j| jddi\}}tt|dk rXt||d nt|| dd d S )Nsized   r   momentsmvr   r   )	r   rvsr   meanr   npanyabsr   )r%   r3   Zmean_sZmean_dZvar_dr   r   r   test_rvsE   s    
zCheckDistEquivalence.test_rvsc                 C   s   ddi}| | j ddi}| | j t| jj| j|}t| jj| j|}t	|d d |d d d t
t|dd  dk rt	|dd  |dd  d n&t	|dd  |dd   tdd d S )Nr1   mvskr      r   r   )updater$   r5   arrayr   r   r   r"   r#   r   r6   r7   Zones)r%   r    r$   ZmvsktrZmvskstr   r   r   
test_statsN   s    zCheckDistEquivalence.test_statsN)__name__
__module____qualname__r'   r+   r.   r8   r=   r   r   r   r   r   -   s
   	r   c                   @   s   e Zd Zdd ZdS )TestLoggamma_1c                 C   s0   t tj| _d| _i | _tj| _d| _i | _	d S )Nr   )
r   r   r   r   r   r    r   r"   r#   r$   r%   r   r   r   __init__`   s    zTestLoggamma_1.__init__Nr>   r?   r@   rD   r   r   r   r   rA   ^   s   rA   c                   @   s   e Zd Zdd ZdS )TestSquaredNormChi2_1c                 C   s*   t | _d| _i | _tj| _d| _i | _d S )Nr   r   )	r   r   r   r    r   chi2r"   r#   r$   rC   r   r   r   rD   k   s    zTestSquaredNormChi2_1.__init__NrE   r   r   r   r   rF   i   s   rF   c                   @   s   e Zd Zdd ZdS )TestSquaredNormChi2_2c                 C   s:   t | _d| _tddd| _tj| _d| _tddd| _	d S )Nr      locZscalerG   )
r   r   r   dictr    r   rH   r"   r#   r$   rC   r   r   r   rD   u   s    zTestSquaredNormChi2_2.__init__NrE   r   r   r   r   rI   s   s   rI   c                   @   s   e Zd Zdd ZdS )TestAbsNormHalfNormc                 C   s*   t | _d| _i | _tj| _d| _i | _d S )Nr   )	r   r   r   r    r   halfnormr"   r#   r$   rC   r   r   r   rD      s    zTestAbsNormHalfNorm.__init__NrE   r   r   r   r   rO   }   s   rO   c                   @   s   e Zd Zdd ZdS )TestSquaredTFc                 C   s*   t | _d| _i | _tj| _d| _i | _d S )NrB   )r   r   )	r	   r   r   r    r   fr"   r#   r$   rC   r   r   r   rD      s    zTestSquaredTF.__init__NrE   r   r   r   r   rQ      s   rQ   c                  C   sN   t jtttd} dt jtttd }tjtd}t|| d t||d d S )NrL   r   r   )	r   r   r   lsr!   r   rH   r   )r   r&   r   r   r   r   test_squared_normal_chi2   s
    rU   __main__zN
square of standard normal random variable is chisquare with dof=1 distributedz&sqnorm  cdf for (%3.2f, %3.2f, %3.2f):rL   z&sqnorm 1-sf for (%3.2f, %3.2f, %3.2f):r   z&chi2    cdf for (%3.2f, %3.2f, %3.2f):z&sqnorm  pdf for (%3.2f, %3.2f, %3.2f):z&chi2    pdf for (%3.2f, %3.2f, %3.2f):z&sqnorm  ppf for (%3.2f, %3.2f, %3.2f):z&chi2    ppf for (%3.2f, %3.2f, %3.2f):zsqnorm  cdf with loc scalerJ   rK   zchi2    cdf with loc scalezF
absolute value of standard normal random variable is foldnorm(0) and zhalfnorm distributed:z'absnorm  cdf for (%3.2f, %3.2f, %3.2f):z'absnorm 1-sf for (%3.2f, %3.2f, %3.2f):z'foldn    cdf for (%3.2f, %3.2f, %3.2f):gh㈵>z'halfn    cdf for (%3.2f, %3.2f, %3.2f):z'absnorm  pdf for (%3.2f, %3.2f, %3.2f):z'foldn    pdf for (%3.2f, %3.2f, %3.2f):z'halfn    pdf for (%3.2f, %3.2f, %3.2f):z'absnorm  ppf for (%3.2f, %3.2f, %3.2f):z'foldn    ppf for (%3.2f, %3.2f, %3.2f):z'halfn    ppf for (%3.2f, %3.2f, %3.2f):z6
negative square of standard normal random variable isz"1-chisquare with dof=1 distributedzthis is mainly for testingz<the following should be outside of the support - returns nanz'nsqnorm  cdf for (%3.2f, %3.2f, %3.2f):z'nsqnorm 1-sf for (%3.2f, %3.2f, %3.2f):z'nsqnorm  pdf for (%3.2f, %3.2f, %3.2f):z'chi2      sf for (%3.2f, %3.2f, %3.2f):z'chi2     pdf for (%3.2f, %3.2f, %3.2f):z9
square of a t distributed random variable with dof=10 isz#        F with dof=1,10 distributedz#sqt  cdf for (%3.2f, %3.2f, %3.2f):r   z#sqt 1-sf for (%3.2f, %3.2f, %3.2f):z#f    cdf for (%3.2f, %3.2f, %3.2f):z#sqt  pdf for (%3.2f, %3.2f, %3.2f):z#f    pdf for (%3.2f, %3.2f, %3.2f):z#sqt  ppf for (%3.2f, %3.2f, %3.2f):z#f    ppf for (%3.2f, %3.2f, %3.2f):zsqt  cdf for 100:r0   zf    cdf for 100:zsqt  stats:r9   )r1   zf    stats:r   g       @g      @g      @r      r:   z&corrected skew, kurtosis of f(1,10) is)r      )r/   zsqt random variablesrX   ii r
      )bins2   )r   rX   T)rZ   rangenormedrz-vvsz-xz--pdb)C__doc__Znumpyr5   Znumpy.testingr   Zscipyr   Z(statsmodels.sandbox.distributions.extrasr   r   r   r   r   r	   rS   rT   r-   r   Znxxr   r   r   rA   rF   rI   rO   rQ   rU   r>   printtupler   r!   rH   r*   r,   ZfoldnormrP   rR   Zv1Zv2sqrtZg1Zg2r3   randomseedZrvstsqZmomentr4   ZdescribeZlinspacedecZ	histogramfreqedgesfloatlenZmatplotlib.pyplotZpyplotZplthist_ZplotZpytestmain__file__r   r   r   r   <module>   s    


1






"""">$
&