
    'YHh!                     (   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c mZ ddlmZ dZ G d d	      Z G d
 d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Zd Zy)z(
Test functions for models.robust.scale
    N)standard_normal)assert_almost_equalassert_equalnorm)mad   c                   R    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zy)TestChemc                 <    t        j                  g d      | _        y )N)皙@r   333333@r   g      @g@gffffff@g333333@=
ףp=@r   g@g(\
@333333@r   r   g      @g@皙@r   r   r   g)\(@gQ@g33333<@)nparraychemclss    \/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/robust/tests/test_scale.pysetup_classzTestChem.setup_class   s    88
    c                 `    t        t        j                  | j                        dt               y )Ng1w-!@)r   r   meanr   DECIMALselfs    r   	test_meanzTestChem.test_mean7   s    BGGDII.@r   c                 `    t        t        j                  | j                        dt               y )NgGz@)r   r   medianr   r   r   s    r   test_medianzTestChem.test_median:   s    BIIdii0%Ar   c                 `    t        t        j                  | j                        dt               y )Ngbg
?)r   scaler   r   r   r   s    r   test_madzTestChem.test_mad=       EIIdii0'7Cr   c                 `    t        t        j                  | j                        dt               y )Ng[ A?)r   r$   iqrr   r   r   s    r   test_iqrzTestChem.test_iqr@   r&   r   c                 `    t        t        j                  | j                        dt               y )Ngao?)r   r$   qn_scaler   r   r   s    r   test_qnzTestChem.test_qnC   s    ENN4995wHr   c                 f    t        t        j                  | j                        d   dt               y )Nr   g=פ	@r   r$   huberr   r   r   s    r   test_huber_scalezTestChem.test_huber_scaleF        EKK		215wHr   c                 f    t        t        j                  | j                        d   dt               y )N   giq?r.   r   s    r   test_huber_locationzTestChem.test_huber_locationI   r1   r   c                    t         j                  j                         }d|_        t        j                  |      }t        t        j                  | j                        d    || j                        d   t               t        t        j                  | j                        d    || j                        d   t               y )Ng      ?r   r   r3   )	r$   normsHuberTtHuberr   r/   r   r   )r   nhs      r   test_huber_huberTzTestChem.test_huber_huberTL   s    KK KKQKK		"1%q|A	
 	KK		"1%q|A	
r   c                     t        j                  t         j                  j                               }t	         || j
                        d   dt               t	         || j
                        d   dt               y )Nr   r   g^e	@r3   gɫs^?)r$   r9   r6   Hampelr   r   r   )r   hhs     r   test_huber_HampelzTestChem.test_huber_HampelW   sO    [[ekk0023BtyyM!,gw?BtyyM!,gw?r   N)__name__
__module____qualname__classmethodr   r   r"   r%   r)   r,   r0   r4   r<   r@    r   r   r   r      sI    
 
<ABDDIII	
@r   r   c                   .    e Zd Zed        Zd Zd Zd Zy)TestMadc                 b    t         j                  j                  d       t        d      | _        y N1  (   
   r   randomseedr   Xr   s    r   r   zTestMad.setup_class^       
		u)r   c                 n    t        j                  | j                        }t        |j                  d       y NrM   r$   r   rQ   r   shaper   ms     r   r%   zTestMad.test_madc   "    IIdffQWWe$r   c                    t        j                  d      }t        j                  t        j                  |            sJ t        j                  d      }t        t        j                  |d      t        j                  d             t        j                  d      }t        t        j                  |d      t        j                  d             y )	Nr   rM   d   r   r3   axisrM   r   r]   r]   r   r   r]   r]   r   )r   emptyisnanr$   r   r   r   rd   s     r   test_mad_emptyzTestMad.test_mad_emptyg   s    xx		%()))&UYYu1-rxx/@A)*UYYu2.0GHr   c           	         t        j                  | j                  d      }t        |j                  d       t        j                  t              5  t        j                  | j                  d        d d d        t        t        j                  | j                  d      t        j                  t        j                  | j                  dz
        d      t        j                  d      z  t               y # 1 sw Y   xY w)Nr   )centerrU   r3   r^   g      ?)r$   r   rQ   r   rW   pytestraises	TypeErrorr   r   r!   absGaussianppfr   )r   r:   s     r   test_mad_centerzTestMad.test_mad_centero   s    IIdffQ'QWWe$]]9% 	+IIdffT*	+IIdffQ'IIbffTVVaZ(q1HLL4II	
	+ 	+s   "C77D N)rA   rB   rC   rD   r   r%   rg   rp   rE   r   r   rG   rG   ]   s$    * *%I	
r   rG   c                   4    e Zd Zed        Zd Zd Zd Zd Zy)TestMadAxesc                 b    t         j                  j                  d       t        d      | _        y NrJ   rL   rM      rN   r   s    r   r   zTestMadAxes.setup_class|       
		u-r   c                 r    t        j                  | j                  d      }t        |j                  d       y Nr   r^   )rM   rv   rV   rX   s     r   
test_axis0zTestMadAxes.test_axis0   $    IIdff1%QWWh'r   c                 r    t        j                  | j                  d      }t        |j                  d       y Nr3   r^   )rL   rv   rV   rX   s     r   
test_axis1zTestMadAxes.test_axis1   r{   r   c                 r    t        j                  | j                  d      }t        |j                  d       y N   r^   rK   rV   rX   s     r   
test_axis2zTestMadAxes.test_axis2   r{   r   c                 r    t        j                  | j                  d      }t        |j                  d       y Nrb   r^   rK   rV   rX   s     r   test_axisneg1zTestMadAxes.test_axisneg1   $    IIdff2&QWWh'r   N	rA   rB   rC   rD   r   rz   r~   r   r   rE   r   r   rr   rr   {   (    . .((((r   rr   c                   (    e Zd Zed        Zd Zd Zy)TestIqrc                 b    t         j                  j                  d       t        d      | _        y rI   rN   r   s    r   r   zTestIqr.setup_class   rR   r   c                 n    t        j                  | j                        }t        |j                  d       y rT   r$   r(   rQ   r   rW   rX   s     r   r)   zTestIqr.test_iqr   rZ   r   c                 X   t        j                  d      }t        j                  t        j                  |            sJ t        j                  d      }t        t        j                  |d      t        j                  d             t        j                  d      }t        t        j                  |d      t        j                  d             t        j                  d	
      }t        j                  t              5  t        j                  |       d d d        y # 1 sw Y   y xY wNr   r\   r3   r^   r`   ra   rb   rc   rE   )rW   )	r   rd   re   r$   r(   r   rj   rk   
ValueErrorrf   s     r   test_iqr_emptyzTestIqr.test_iqr_empty   s    xx		%()))&UYYu1-rxx/@A)*UYYu2.0GHr"]]:& 	IIe	 	 	   D  D)N)rA   rB   rC   rD   r   r)   r   rE   r   r   r   r      s    * *%	r   r   c                   4    e Zd Zed        Zd Zd Zd Zd Zy)TestIqrAxesc                 b    t         j                  j                  d       t        d      | _        y rt   rN   r   s    r   r   zTestIqrAxes.setup_class   rw   r   c                 r    t        j                  | j                  d      }t        |j                  d       y ry   r   rX   s     r   rz   zTestIqrAxes.test_axis0   r{   r   c                 r    t        j                  | j                  d      }t        |j                  d       y r}   r   rX   s     r   r~   zTestIqrAxes.test_axis1   r{   r   c                 r    t        j                  | j                  d      }t        |j                  d       y r   r   rX   s     r   r   zTestIqrAxes.test_axis2   r{   r   c                 r    t        j                  | j                  d      }t        |j                  d       y r   r   rX   s     r   r   zTestIqrAxes.test_axisneg1   r   r   Nr   rE   r   r   r   r      r   r   r   c                   .    e Zd Zed        Zd Zd Zd Zy)TestQnc                    t         j                  j                  d       t        d      | _        t        j
                  dd      | _        t         j                  j                  d      | _        t        j                  j                  j                         j                  | _
        t        j                  j                  j                         j                  j                  | _        y )NrJ   rL   )sizer   )r   rO   rP   r   normalarangerangeexponentialsmdatasets	stacklossload_pandasdatasunspotsSUNACTIVITYsunspotr   s    r   r   zTestQn.setup_class   s    
		u$"-
IIa$	))//R/8--99;@@kk**668==IIr   c                    t        t        j                  | j                        t        j                  | j                        t
               t        t        j                  | j                        t        j                  | j                        t
               t        t        j                  | j                        t        j                  | j                        t
               y N)r   r$   r+   r   	_qn_naiver   r   r   r   s    r   test_qn_naivezTestQn.test_qn_naive   s    NN4;;')Ew	
 	NN4::&

(CW	
 	NN4++,OOD,,-	
r   c                 H   t        t        j                  | j                        dt               t        t        j                  | j
                        t        j                  g d      t               t        t        j                  | j                  dd       dt               y )Ngŏ1w-*@)x!@r   gx@gx@r   i!  g"[='@@)	r   r$   r+   r   r   r   r   r   r   r   s    r   test_qn_robustbasezTestQn.test_qn_robustbase   sh    ENN4::6INN4>>*HH9:	
 	NN4<<#./7	
r   c                 X   t        j                  d      }t        j                  t        j                  |            sJ t        j                  d      }t        t        j                  |d      t        j                  d             t        j                  d      }t        t        j                  |d      t        j                  d             t        j                  d	
      }t        j                  t              5  t        j                  |       d d d        y # 1 sw Y   y xY wr   )
r   rd   re   r$   r+   r   rj   rk   r   r(   rf   s     r   test_qn_emptyzTestQn.test_qn_empty   s    xxu-...&U^^E2BHHW4EF)*U^^E3RXXm5LMr"]]:& 	IIe	 	 	r   N)rA   rB   rC   rD   r   r   r   r   rE   r   r   r   r      s%    J J

	r   r   c                   4    e Zd Zed        Zd Zd Zd Zd Zy)
TestQnAxesc                 b    t         j                  j                  d       t        d      | _        y rt   rN   r   s    r   r   zTestQnAxes.setup_class   rw   r   c                 r    t        j                  | j                  d      }t        |j                  d       y ry   r$   r+   rQ   r   rW   rX   s     r   rz   zTestQnAxes.test_axis0   $    NN466*QWWh'r   c                 r    t        j                  | j                  d      }t        |j                  d       y r}   r   rX   s     r   r~   zTestQnAxes.test_axis1   r   r   c                 r    t        j                  | j                  d      }t        |j                  d       y r   r   rX   s     r   r   zTestQnAxes.test_axis2   r   r   c                 r    t        j                  | j                  d      }t        |j                  d       y r   r   rX   s     r   r   zTestQnAxes.test_axisneg1  s$    NN466+QWWh'r   Nr   rE   r   r   r   r      r   r   r   c                   "    e Zd Zed        Zd Zy)	TestHuberc                 b    t         j                  j                  d       t        d      | _        y rI   rN   r   s    r   r   zTestHuber.setup_class  rR   r   c                     t        j                  d      } || j                        \  }}t        |j                  d       y )Nr]   )maxiterrU   )r$   r9   rQ   r   rW   )r   r;   rY   ss       r   test_huber_result_shapez!TestHuber.test_huber_result_shape  s/    KK$y1QWWe$r   N)rA   rB   rC   rD   r   r   rE   r   r   r   r     s    * *%r   r   c                   4    e Zd Zed        Zd Zd Zd Zd Zy)TestHuberAxesc                     t         j                  j                  d       t        d      | _        t        j                  dd      | _        y )NrJ   ru   i  gh㈵>)r   tol)r   rO   rP   r   rQ   r$   r9   r;   r   s    r   r   zTestHuberAxes.setup_class  s0    
		u-Dg6r   c                 p    | j                  | j                  d      \  }}t        |j                  d       y ry   r;   rQ   r   rW   r   rY   r   s      r   test_defaultzTestHuberAxes.test_default  *    vvdff1v%1QWWh'r   c                 p    | j                  | j                  d      \  }}t        |j                  d       y r}   r   r   s      r   r~   zTestHuberAxes.test_axis1  r   r   c                 p    | j                  | j                  d      \  }}t        |j                  d       y r   r   r   s      r   r   zTestHuberAxes.test_axis2!  r   r   c                 p    | j                  | j                  d      \  }}t        |j                  d       y r   r   r   s      r   r   zTestHuberAxes.test_axisneg1%  s*    vvdff2v&1QWWh'r   N)	rA   rB   rC   rD   r   r   r~   r   r   rE   r   r   r   r     s(    7 7
((((r   r   c                  ,   t        j                  g dg dg      } d }t        | d       }t        | d |      }t        | j                         d      }t         j                  j                  ||       t         j                  j                  ||       y )N)r   r3   r   )r      r   c                 ,    t        j                  |       S r   )r   r!   )xs    r   rY   ztest_mad_axis_none.<locals>.m.  s    yy|r   )ar_   )r   r_   ri   r   )r   r   r   raveltestingassert_allclose)r   rY   directcustomaxis0s        r   test_mad_axis_noner   *  sp    
)Y'(A 14 F14*F!'')!$EJJvv.JJvu-r   )__doc__numpyr   numpy.randomr   numpy.testingr   r   rj   scipy.statsr   rn   statsmodels.apiapir   statsmodels.robust.scalerobustr$   r   r   r   rG   rr   r   r   r   r   r   r   r   rE   r   r   <module>r      s     ( ;  (  ( ( (
 
C@ C@L
 
<( (. ,( (.- -`( (.	% 	%( (0.r   