U
    Ãmœd„!  ã                   @   sô   d Z ddlZddlmZ ddlmZmZ ddlZddl	m
Z ddlmZ ddlm  mZ ddlmZ dZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZdd„ ZdS )z(
Test functions for models.robust.scale
é    N)Ústandard_normal)Úassert_almost_equalÚassert_equal©Únorm)Úmadé   c                   @   s`   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S )ÚTestChemc                 C   s@   t  dddddddddddd	d
d
d
dddddddddg¡| _d S )Ngš™™™™™@g333333@g      @gš™™™™™@gffffff@g333333@g=
×£p=@gÍÌÌÌÌÌ@gö(\�Âõ
@g333333@g      @gÍÌÌÌÌÌ@gš™™™™™@g)\�Âõ(@g…ëQ¸@g33333ó<@)ÚnpÚarrayÚchem©Úcls© r   ú\/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/robust/tests/test_scale.pyÚsetup_class   s6    èÿzTestChem.setup_classc                 C   s   t t | j¡dtƒ d S )Ng�1w-!@)r   r
   Zmeanr   ÚDECIMAL©Úselfr   r   r   Ú	test_mean7   s    zTestChem.test_meanc                 C   s   t t | j¡dtƒ d S )Ng®Gáz@)r   r
   Úmedianr   r   r   r   r   r   Útest_median:   s    zTestChem.test_medianc                 C   s   t t | j¡dtƒ d S )Ngbg
�×à?)r   Úscaler   r   r   r   r   r   r   Útest_mad=   s    zTestChem.test_madc                 C   s   t t | j¡dtƒ d S )NgÀ[ Añå?)r   r   Úiqrr   r   r   r   r   r   Útest_iqr@   s    zTestChem.test_iqrc                 C   s   t t | j¡dtƒ d S )Ng�‘aoç?)r   r   Úqn_scaler   r   r   r   r   r   Útest_qnC   s    zTestChem.test_qnc                 C   s   t t | j¡d dtƒ d S )Nr   g†=íð×¤	@©r   r   Úhuberr   r   r   r   r   r   Útest_huber_scaleF   s    zTestChem.test_huber_scalec                 C   s   t t | j¡d dtƒ d S )Né   g­iÞqŠŽå?r   r   r   r   r   Útest_huber_locationI   s    zTestChem.test_huber_locationc                 C   sd   t j ¡ }d|_t j|d�}tt  | j¡d || jƒd tƒ tt  | j¡d || jƒd tƒ d S )Ng      ø?r   r   r!   )	r   ÚnormsZHuberTÚtÚHuberr   r   r   r   )r   ÚnÚhr   r   r   Útest_huber_huberTL   s    
  ÿ  ÿzTestChem.test_huber_huberTc                 C   sB   t jt j ¡ d�}t|| jƒd dtƒ t|| jƒd dtƒ d S )Nr   r   g¾³^e	@r!   gÉ«sÈ^å?)r   r%   r#   ZHampelr   r   r   )r   Úhhr   r   r   Útest_huber_HampelW   s    zTestChem.test_huber_HampelN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r   r   r   r    r"   r(   r*   r   r   r   r   r	      s   
r	   c                   @   s0   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	S )
ÚTestMadc                 C   s   t j d¡ tdƒ| _d S ©Né1Ô  ©é(   é
   ©r
   ÚrandomÚseedr   ÚXr   r   r   r   r   ^   s    zTestMad.setup_classc                 C   s   t  | j¡}t|jdƒ d S ©N©r4   ©r   r   r8   r   Úshape©r   Úmr   r   r   r   c   s    zTestMad.test_madc                 C   sj   t  d¡}t  t |¡¡st‚t  d¡}ttj|dd�t  d¡ƒ t  d¡}ttj|dd�t  d¡ƒ d S )	Nr   ©r4   éd   r   r!   ©Úaxis©r4   r   ©r@   r@   r   r   éÿÿÿÿ©r@   r@   r   )r
   ÚemptyÚisnanr   r   ÚAssertionErrorr   ©r   rG   r   r   r   Útest_mad_emptyg   s    


zTestMad.test_mad_emptyc              	   C   s~   t j| jdd�}t|jdƒ t t¡� t j| jd d� W 5 Q R X tt j| jdd�t	j
t	 | jd ¡dd�t d¡ tƒ d S )Nr   )Úcenterr:   r!   rA   g      è?)r   r   r8   r   r<   ÚpytestÚraisesÚ	TypeErrorr   r
   r   ÚabsÚGaussianZppfr   )r   r&   r   r   r   Útest_mad_centero   s    "ýzTestMad.test_mad_centerN)r+   r,   r-   r.   r   r   rK   rR   r   r   r   r   r/   ]   s
   
r/   c                   @   s8   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestMadAxesc                 C   s   t j d¡ tdƒ| _d S ©Nr1   ©r3   r4   é   r5   r   r   r   r   r   |   s    zTestMadAxes.setup_classc                 C   s    t j| jdd�}t|jdƒ d S ©Nr   rA   )r4   rV   r;   r=   r   r   r   Ú
test_axis0�   s    zTestMadAxes.test_axis0c                 C   s    t j| jdd�}t|jdƒ d S ©Nr!   rA   )r3   rV   r;   r=   r   r   r   Ú
test_axis1…   s    zTestMadAxes.test_axis1c                 C   s    t j| jdd�}t|jdƒ d S ©Né   rA   r2   r;   r=   r   r   r   Ú
test_axis2‰   s    zTestMadAxes.test_axis2c                 C   s    t j| jdd�}t|jdƒ d S ©NrE   rA   r2   r;   r=   r   r   r   Útest_axisneg1�   s    zTestMadAxes.test_axisneg1N©	r+   r,   r-   r.   r   rX   rZ   r]   r_   r   r   r   r   rS   {   s   
rS   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestIqrc                 C   s   t j d¡ tdƒ| _d S r0   r5   r   r   r   r   r   “   s    zTestIqr.setup_classc                 C   s   t  | j¡}t|jdƒ d S r9   ©r   r   r8   r   r<   r=   r   r   r   r   ˜   s    zTestIqr.test_iqrc              	   C   s–   t  d¡}t  t |¡¡st‚t  d¡}ttj|dd�t  d¡ƒ t  d¡}ttj|dd�t  d¡ƒ t jd	d
�}t t	¡� t |¡ W 5 Q R X d S ©Nr   r?   r!   rA   rC   rD   rE   rF   r   )r<   )
r
   rG   rH   r   r   rI   r   rM   rN   Ú
ValueErrorrJ   r   r   r   Útest_iqr_emptyœ   s    


zTestIqr.test_iqr_emptyN)r+   r,   r-   r.   r   r   re   r   r   r   r   ra   ’   s   
ra   c                   @   s8   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestIqrAxesc                 C   s   t j d¡ tdƒ| _d S rT   r5   r   r   r   r   r   ©   s    zTestIqrAxes.setup_classc                 C   s    t j| jdd�}t|jdƒ d S rW   rb   r=   r   r   r   rX   ®   s    zTestIqrAxes.test_axis0c                 C   s    t j| jdd�}t|jdƒ d S rY   rb   r=   r   r   r   rZ   ²   s    zTestIqrAxes.test_axis1c                 C   s    t j| jdd�}t|jdƒ d S r[   rb   r=   r   r   r   r]   ¶   s    zTestIqrAxes.test_axis2c                 C   s    t j| jdd�}t|jdƒ d S r^   rb   r=   r   r   r   r_   º   s    zTestIqrAxes.test_axisneg1Nr`   r   r   r   r   rf   ¨   s   
rf   c                   @   s0   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	S )
ÚTestQnc                 C   s\   t j d¡ tdd�| _t  dd¡| _t jjdd�| _tj	j
 ¡ j| _
tj	j ¡ jj| _d S )Nr1   r3   )Úsizer   )r
   r6   r7   r   ÚnormalZarangeÚrangeÚexponentialÚsmZdatasetsÚ	stacklossZload_pandasÚdataZsunspotsZSUNACTIVITYÚsunspotr   r   r   r   r   À   s    zTestQn.setup_classc                 C   sX   t t | j¡t | j¡tƒ t t | j¡t | j¡tƒ t t | j¡t | j¡tƒ d S ©N)r   r   r   ri   Z	_qn_naiver   rj   rk   r   r   r   r   Útest_qn_naiveÉ   s    
 
 ÿ
 
 ÿ

ýzTestQn.test_qn_naivec                 C   sV   t t | j¡dtƒ t t | j¡t ddddg¡tƒ t t | jdd… ¡dtƒ d S )NgÅ�1w-¡*@g©öéxÌÀ!@g©öéxÌÀ@g©öéxÌÀ@r   i!  g"«[='Á@@)	r   r   r   rj   r   rm   r
   r   ro   r   r   r   r   Útest_qn_robustbaseÖ   s    
ý  ÿzTestQn.test_qn_robustbasec              	   C   s–   t  d¡}t  t |¡¡st‚t  d¡}ttj|dd�t  d¡ƒ t  d¡}ttj|dd�t  d¡ƒ t jd	d
�}t t	¡� t 
|¡ W 5 Q R X d S rc   )r
   rG   rH   r   r   rI   r   rM   rN   rd   r   rJ   r   r   r   Útest_qn_emptyã   s    


zTestQn.test_qn_emptyN)r+   r,   r-   r.   r   rq   rr   rs   r   r   r   r   rg   ¿   s
   
rg   c                   @   s8   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
TestQnAxesc                 C   s   t j d¡ tdƒ| _d S rT   r5   r   r   r   r   r   ð   s    zTestQnAxes.setup_classc                 C   s    t j| jdd�}t|jdƒ d S rW   ©r   r   r8   r   r<   r=   r   r   r   rX   õ   s    zTestQnAxes.test_axis0c                 C   s    t j| jdd�}t|jdƒ d S rY   ru   r=   r   r   r   rZ   ù   s    zTestQnAxes.test_axis1c                 C   s    t j| jdd�}t|jdƒ d S r[   ru   r=   r   r   r   r]   ý   s    zTestQnAxes.test_axis2c                 C   s    t j| jdd�}t|jdƒ d S r^   ru   r=   r   r   r   r_     s    zTestQnAxes.test_axisneg1Nr`   r   r   r   r   rt   ï   s   
rt   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )Ú	TestHuberc                 C   s   t j d¡ tdƒ| _d S r0   r5   r   r   r   r   r     s    zTestHuber.setup_classc                 C   s*   t jdd�}|| jƒ\}}t|jdƒ d S )Nr@   )Úmaxiterr:   )r   r%   r8   r   r<   )r   r'   r>   Úsr   r   r   Útest_huber_result_shape  s    z!TestHuber.test_huber_result_shapeN)r+   r,   r-   r.   r   ry   r   r   r   r   rv     s   
rv   c                   @   s8   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestHuberAxesc                 C   s*   t j d¡ tdƒ| _tjddd�| _d S )Nr1   rU   iè  gñhãˆµøä>)rw   Ztol)r
   r6   r7   r   r8   r   r%   r'   r   r   r   r   r     s    
zTestHuberAxes.setup_classc                 C   s$   | j | jdd�\}}t|jdƒ d S rW   ©r'   r8   r   r<   ©r   r>   rx   r   r   r   Útest_default  s    zTestHuberAxes.test_defaultc                 C   s$   | j | jdd�\}}t|jdƒ d S rY   r{   r|   r   r   r   rZ     s    zTestHuberAxes.test_axis1c                 C   s$   | j | jdd�\}}t|jdƒ d S r[   r{   r|   r   r   r   r]   !  s    zTestHuberAxes.test_axis2c                 C   s$   | j | jdd�\}}t|jdƒ d S r^   r{   r|   r   r   r   r_   %  s    zTestHuberAxes.test_axisneg1N)	r+   r,   r-   r.   r   r}   rZ   r]   r_   r   r   r   r   rz     s   
rz   c                  C   sl   t  dddgdddgg¡} dd„ }t| d d�}t| d |d�}t|  ¡ dd�}t j ||¡ t j ||¡ d S )	Nr   r!   r\   é   c                 S   s
   t  | ¡S rp   )r
   r   )Úxr   r   r   r>   .  s    ztest_mad_axis_none.<locals>.m)ÚarB   )r€   rB   rL   )r
   r   r   ZravelÚtestingZassert_allclose)r€   r>   ÚdirectZcustomZaxis0r   r   r   Útest_mad_axis_none*  s    rƒ   )Ú__doc__Únumpyr
   Znumpy.randomr   Znumpy.testingr   r   rM   Zscipy.statsr   rQ   Zstatsmodels.apiÚapirl   Zstatsmodels.robust.scaleZrobustr   r   r   r	   r/   rS   ra   rf   rg   rt   rv   rz   rƒ   r   r   r   r   Ú<module>   s&   F0