U
    Kvfu                     @   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   I/tmp/pip-unpacked-wheel-2v6byqio/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   Z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_lengthAEկ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        r/   )r   r   r
   r   r   r0   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 )Nr2   g      ?r&   Znaiver/   )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-   r1   r4   r5   r   r   r   r   r      s   
	r   )Znumpyr0   Znumpy.testingr   r   r   Zstatsmodels.base.transformr   Zstatsmodels.datasetsr   r   r   r   r   r   <module>   s   