U
    Ãmœd½  ã                   @   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   úl/home/sam/Atlas/atlas_env/lib/python3.8/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   Ú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%   gñhãˆµøä>é
   )g        r   çš™™™™™¹?ç      à?çÍÌÌÌÌÌì?gffffffî?r   gš™™™™™ñ?gffffffî¿g      ð¿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   Ú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


