U
    Kvf                     @   s6  d Z ddlZddlZddlmZ ddlmZmZ ddl	m
Z
mZmZmZ edd ejj_dd	 Zeejj_d
d Zeejj_dZG dd dZedkr2e Ze  e  dZer2ee dddg eej! dddgd eej" eej# eejdd eedjdd eej$jdd dS )a  


Created on Sun May 09 22:35:21 2010
Author: josef-pktd
License: BSD

todo:
change moment calculation, (currently uses default _ppf method - I think)
# >>> lognormalg.moment(4)
Warning: The algorithm does not converge.  Roundoff error is detected
  in the extrapolation table.  It is assumed that the requested tolerance
  cannot be achieved, and that the returned result (if full_output = 1) is
  the best which can be obtained.
array(2981.0032380193438)
    N)assert_almost_equal)statsspecial)squarenormalg
absnormalgnegsquarenormalgsquaretgc                 C   s   | j jS )N)distname)self r   W/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/sandbox/distributions/tests/test_transf.py<lambda>       r   c                 C   s$  t jt jt jt jt jf\}}}}}||d }||d }	||dk|||d  |}
d| | ||	 d  |	|d d  |d   }||dk||}d|d|	  d  |d  t d|d  |	||	 d    }||dk||}dd| d	  d
|| |d    }||d
k||}|
|||fS )N      ?             @g      @g      @            )nparraywhereinfsqrtnan)r   dfnZdfdarrr   r   r   r   Zv2Zv1mumu2g1g2r   r   r   f_stats!   s    "0>$r$   c                 C   s  t jt jt jt jt jf\}}}}}t j}t j}t	||d }	|d| |d| |  ||	  }
|| d |
|
  }|| }|d| |d|  d||| d| d    }|d| |	 d||  d	|d|  | || d  |	  || |	|	 d    7 }|||d
   }|| d|  d	 d|d  |
 |
  d	|
d   }|d|| d  |
 |d| |d  ||d	  ||d  |	   8 }||d  }|d8 }|
|||fS )Nr   r   g         g      r   r   r   r   g      ?g      @)
r   r   r   r   r   r   exppir   erf)r   cr   r   r   r   r   r&   r'   Zfacr    r!   c2r"   r#   r   r   r   foldnorm_stats5   s"    "$4>4Jr+      c                   @   s(   e Zd Zedd Zdd Zdd ZdS )Test_Transf2c                 C   sh   t tdfttjfttdftdtddfg| _d\}}dddg| _	dd	d
g| _
dddg| _d S )Nr%   gh㈵>
   )g        r   皙?      ??gffffff?r   g?gffffffg      g)r   r   chi2r   halfnormfoldnormr   fdist_equivalentsppfqxxnxx)clslsr   r   r   setup_classS   s    zTest_Transf2.setup_classc           
   	   C   s  | j | j }}t| jD ]\}\}}t||||d|j d t||||d|j |j d t||||d|j |j d t|	||	|d|j |j d t|
||
|d|j |j d || _|| _t|dr
|jjd|j }n
|d}|dkr&td	 t|d|td
|j |j d tjd d  }td z|jdd}|jdd}	W 5 |t_X t|d d |	d d d|j |j d t|dd  |	dd  dd|j |j d qd S )Ncdferr_msgzpdf zsf zppq zisf r	   r   nowzmoment ignoremvskZmomentsr   stats )decimalr@   )r   )r8   r7   	enumerater6   r   r>   r
   pdfsfppfisfd1d2hasattrr	   momentargsprintDECIMALwarningsfilterssimplefilterr   )
r   r8   r7   jrL   rM   Zd2momZorig_filters1s2r   r   r   test_equivalentf   sN     


zTest_Transf2.test_equivalentc                 C   s  | j | j| j  }}}ttd }}t||d|| d|j d t|	||	| t|
|d|
|  t||||d d d   t||||d d d   t|d|d  dd t|jdd	D }t|jdd	|d
|j |j d d S )Nr%   r>   r?   r   c                 S   s    g | ]\}}|d |d   qS )rZ   r%   r   ).0ivr   r   r   
<listcomp>   s     z6Test_Transf2.test_equivalent_negsq.<locals>.<listcomp>rC   rD   rE   )r8   r9   r7   r   r   r2   r   r>   r
   rH   rI   rJ   rK   rO   rG   )r   r8   r9   r7   rL   rM   Z	ch2oddnegr   r   r   test_equivalent_negsq   s    $""z"Test_Transf2.test_equivalent_negsqN)__name__
__module____qualname__classmethodr=   rY   r_   r   r   r   r   r-   Q   s   
.r-   __main__r/   r0   r1   r%   rC   rD   g|=)%__doc__rS   Znumpyr   Znumpy.testingr   Zscipyr   r   Z(statsmodels.sandbox.distributions.extrasr   r   r   r   propertydistributionsZ	rv_frozenr
   r$   r5   	__class__Z_statsr+   r4   rR   r-   r`   ttrY   r_   debugrQ   rJ   r2   abr3   r   r   r   r   <module>   s2   

V


