a
    \:b                     @   s4  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eZedkr0e Ze  e  dZer0e e!g d e ej"!g d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   Rlib/python3.9/site-packages/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   Z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   Zerf)r   cr   r   r   r   r   r%   r&   Zfacr   r    Z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   sb   t tdfttjfttdftdtddfg| _d\}}g d| _	g d| _
g d| _d S )Nr$   gh㈵>
   )g        r   g?g      ?g?)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 }}| 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g|jR  }n
|d}t|d|td	|j |j d tjd d  }td
 z"|jdd}|jdd}W |t_n|t_0 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   zmoment ignoremvskZmomentsr   stats )Zdecimalr;   )r3   r2   r1   r   r9   r
   pdfsfppfisfd1d2hasattrr	   momentargsDECIMALwarningsfilterssimplefilterr   )	r   r3   r2   rD   rE   Zd2momZorig_filters1s2r   r   r   test_equivalentf   sJ     

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$   r9   r:   r   c                 S   s    g | ]\}}|d |d   qS )rP   r$   r   ).0ivr   r   r   
<listcomp>   r   z6Test_Transf2.test_equivalent_negsq.<locals>.<listcomp>r=   r>   r?   )r3   r4   r2   r   r   r-   r   r9   r
   r@   rA   rB   rC   rG   	enumerate)r   r3   r4   r2   rD   rE   Z	ch2oddnegr   r   r   test_equivalent_negsq   s    $""z"Test_Transf2.test_equivalent_negsqN)__name__
__module____qualname__classmethodr8   rO   rV   r   r   r   r   r*   Q   s   
,r*   __main__r,   r$   r=   r>   g|=)&__doc__rJ   Znumpyr   Znumpy.testingr   Zscipyr   r   Z(statsmodels.sandbox.distributions.extrasr   r   r   r   propertyZdistributionsZ	rv_frozenr
   r#   r0   	__class__Z_statsr(   r/   rI   objectr*   rW   ZttrO   rV   debugprintrB   r-   abr.   r   r   r   r   <module>   s2   

T


