U
    Ãmœdu  ã                   @   sF   d dl Zd dlmZmZmZ d dlmZ d dlm	Z	 G dd„ dƒZ
dS )é    N)Úassert_almost_equalÚassert_equalÚassert_raises)ÚBoxCox)Ú	macrodatac                   @   sh   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestTransformc                 C   s"   t  ¡ }|jd j| _tƒ | _d S )NZrealgdp)r   Zload_pandasÚdataÚvaluesÚxr   Úbc)Úclsr   © r   ú^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/base/tests/test_transform.pyÚsetup_class	   s    zTestTransform.setup_classc                 C   s8   dddg}t t| jj|ƒ dddg}t t| jj|ƒ d S )Né   éÿÿÿÿr   )r   Ú
ValueErrorr   Útransform_boxcox)ÚselfÚyr   r   r   Útest_nonpositive   s    

zTestTransform.test_nonpositivec                 C   s,   t t| jj| jdƒ t t| jj| jdƒ d S )N)éýÿÿÿé   é   )r   r   ©r   r   r   Ú_est_lambdar
   ©r   r   r   r   Útest_invalid_bounds   s    z!TestTransform.test_invalid_boundsc                 C   s0   t t| jj| jddƒ t t| jj| jddƒ d S )N)r   r   Útestr   )r   r   r   r   r
   Úuntransform_boxcoxr   r   r   r   Útest_unclear_methods   s    
  ÿ
  ÿz"TestTransform.test_unclear_methodsc                 C   sb   t t| jj| jdd� | jj| jdd� | jj| jdd� | jj| jdd� | jj| jdd� d S )Nr   ©ÚscaleÚmadZMADÚsdZSDr   r   r   r   r   Útest_unclear_scale_parameter'   s    
 ÿz*TestTransform.test_unclear_scale_parameterc                 C   sD   | j j| jddd�}t|ddƒ | j j| jddd�}t|ddƒ d S )NZguerreroé   )ÚmethodZwindow_lengthçAEÕ¯t>à?r   g%–”»Ïqà?©r   r   r
   r   ©r   Úlmbdar   r   r   Útest_valid_guerrero4   s    z!TestTransform.test_valid_guerreroc                 C   s"   | j j| jdd�}t|ddƒ d S )Nr#   r!   g]âÈ‘Eß?r&   r)   r*   r   r   r   Útest_guerrero_robust_scale@   s    z(TestTransform.test_guerrero_robust_scalec                 C   s"   | j j| jdd�}t|ddƒ d S )NZloglik)r'   gš™™™™™É?r   r)   r*   r   r   r   Útest_loglik_lambda_estimationG   s    z+TestTransform.test_loglik_lambda_estimationc                 C   sZ   | j  | j¡}| j  | jd¡}t|d |d dƒ | j  t dd¡¡\}}t|ddƒ d S )Nr(   r   r   r   éd   g      ð?é   )r   r   r
   r   ÚnpZarange)r   Zy_transformed_no_lambdaZy_transformed_lambdar   r+   r   r   r   Ú"test_boxcox_transformation_methodsL   s     ÿz0TestTransform.test_boxcox_transformation_methodsc                 C   s6   | j  | jd¡\}}t|dƒ t|t | j¡dƒ d S )Nç        r0   )r   r   r
   r   r   r1   Úlog)r   Zy_transform_zero_lambdar+   r   r   r   Útest_zero_lambdaZ   s    
zTestTransform.test_zero_lambdac                 C   sd   | j  | jd¡}| j  | jd¡}| j j|ddiŽ}| j j|ddiŽ}t| j|dƒ t| j|dƒ d S )Nr3   g      à?r'   Znaiver0   )r   r   r
   r   r   )r   Zy_zero_lambdaZy_half_lambdaZy_zero_lambda_unZy_half_lambda_unr   r   r   Útest_naive_back_transformationa   s    
ÿ
ÿz,TestTransform.test_naive_back_transformationN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r    r%   r,   r-   r.   r2   r5   r6   r   r   r   r   r      s   
	r   )Únumpyr1   Znumpy.testingr   r   r   Zstatsmodels.base.transformr   Zstatsmodels.datasetsr   r   r   r   r   r   Ú<module>   s   