
    M/Ph!                     `   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dS )z(
Test functions for models.robust.scale
    N)standard_normal)assert_almost_equalassert_equalnorm)mad   c                   Z    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dS )TestChemc                 <    t          j        g d          | _        d S )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    c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/robust/tests/test_scale.pysetup_classzTestChem.setup_class   s(    8  
 
    c                 `    t          t          j        | j                  dt                     d S )Ng1w-!@)r   r   meanr   DECIMALselfs    r   	test_meanzTestChem.test_mean7   s&    BGDI..@@@@@r   c                 `    t          t          j        | j                  dt                     d S )NgGz@)r   r   medianr   r   r   s    r   test_medianzTestChem.test_median:   s&    BIdi00%AAAAAr   c                 `    t          t          j        | j                  dt                     d S )Ngbg
?)r   scaler   r   r   r   s    r   test_madzTestChem.test_mad=   &    EIdi00'7CCCCCr   c                 `    t          t          j        | j                  dt                     d S )Ng[ A?)r   r$   iqrr   r   r   s    r   test_iqrzTestChem.test_iqr@   r&   r   c                 `    t          t          j        | j                  dt                     d S )Ngao?)r   r$   qn_scaler   r   r   s    r   test_qnzTestChem.test_qnC   s&    EN4955wHHHHHr   c                 l    t          t          j        | j                  d         dt                     d S )Nr   g=פ	@r   r$   huberr   r   r   s    r   test_huber_scalezTestChem.test_huber_scaleF   +    EK	2215wHHHHHr   c                 l    t          t          j        | j                  d         dt                     d S )N   giq?r.   r   s    r   test_huber_locationzTestChem.test_huber_locationI   r1   r   c                    t           j                                        }d|_        t          j        |          }t          t          j        | j                  d          || j                  d         t                     t          t          j        | j                  d          || j                  d         t                     d S )Ng      ?r   r   r3   )	r$   normsHuberTtHuberr   r/   r   r   )r   nhs      r   test_huber_huberTzTestChem.test_huber_huberTL   s    K  KQK	""1%qq||A	
 	
 	
 	K	""1%qq||A	
 	
 	
 	
 	
r   c                    t          j        t           j                                                  }t	           || j                  d         dt                     t	           || j                  d         dt                     d S )Nr   r   g^e	@r3   gɫs^?)r$   r9   r6   Hampelr   r   r   )r   hhs     r   test_huber_HampelzTestChem.test_huber_HampelW   sj    [ek0022333BBtyMM!,gw???BBtyMM!,gw?????r   N)__name__
__module____qualname__classmethodr   r   r"   r%   r)   r,   r0   r4   r<   r@    r   r   r   r      s        
 
 [
<A A AB B BD D DD D DI I II I II I I	
 	
 	
@ @ @ @ @r   r   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestMadc                 l    t           j                            d           t          d          | _        d S N1  (   
   r   randomseedr   Xr   s    r   r   zTestMad.setup_class^   )    
	u))r   c                 b    t          j        | j                  }t          |j        d           d S NrM   r$   r   rQ   r   shaper   ms     r   r%   zTestMad.test_madc   +    IdfQWe$$$$$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                     d S )	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    x	%(()))))&&UYu1---rx/@/@AAA)**UYu2...0G0GHHHHHr   c           	         t          j        | j        d          }t          |j        d           t          j        t                    5  t          j        | j        d            d d d            n# 1 swxY w Y   t          t          j        | j        d          t          j
        t          j        | j        dz
            d          t          j        d          z  t                     d S )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
   IdfQ'''QWe$$$]9%% 	+ 	+IdfT****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+IdfQ'''IbfTVaZ((q111HL4I4II	
 	
 	
 	
 	
s   
A22A69A6N)rA   rB   rC   rD   r   r%   rg   rp   rE   r   r   rG   rG   ]   s]        * * [*% % %I I I	
 	
 	
 	
 	
r   rG   c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )TestMadAxesc                 l    t           j                            d           t          d          | _        d S NrJ   rL   rM      rN   r   s    r   r   zTestMadAxes.setup_class|   )    
	u--r   c                 f    t          j        | j        d          }t          |j        d           d S Nr   r^   )rM   rv   rV   rX   s     r   
test_axis0zTestMadAxes.test_axis0   0    Idf1%%%QWh'''''r   c                 f    t          j        | j        d          }t          |j        d           d S Nr3   r^   )rL   rv   rV   rX   s     r   
test_axis1zTestMadAxes.test_axis1   r{   r   c                 f    t          j        | j        d          }t          |j        d           d S N   r^   rK   rV   rX   s     r   
test_axis2zTestMadAxes.test_axis2   r{   r   c                 f    t          j        | j        d          }t          |j        d           d S Nrb   r^   rK   rV   rX   s     r   test_axisneg1zTestMadAxes.test_axisneg1   0    Idf2&&&QWh'''''r   N	rA   rB   rC   rD   r   rz   r~   r   r   rE   r   r   rr   rr   {   i        . . [.( ( (( ( (( ( (( ( ( ( (r   rr   c                   0    e Zd Zed             Zd Zd ZdS )TestIqrc                 l    t           j                            d           t          d          | _        d S rI   rN   r   s    r   r   zTestIqr.setup_class   rR   r   c                 b    t          j        | j                  }t          |j        d           d S rT   r$   r(   rQ   r   rW   rX   s     r   r)   zTestIqr.test_iqr   rZ   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                     t          j        d	
          }t          j        t                    5  t          j        |           d d d            d S # 1 swxY w Y   d S 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   s6   x	%(()))))&&UYu1---rx/@/@AAA)**UYu2...0G0GHHHr"""]:&& 	 	Ie	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   ?D!!D%(D%N)rA   rB   rC   rD   r   r)   r   rE   r   r   r   r      sK        * * [*% % %	 	 	 	 	r   r   c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )TestIqrAxesc                 l    t           j                            d           t          d          | _        d S rt   rN   r   s    r   r   zTestIqrAxes.setup_class   rw   r   c                 f    t          j        | j        d          }t          |j        d           d S ry   r   rX   s     r   rz   zTestIqrAxes.test_axis0   r{   r   c                 f    t          j        | j        d          }t          |j        d           d S r}   r   rX   s     r   r~   zTestIqrAxes.test_axis1   r{   r   c                 f    t          j        | j        d          }t          |j        d           d S r   r   rX   s     r   r   zTestIqrAxes.test_axis2   r{   r   c                 f    t          j        | j        d          }t          |j        d           d S r   r   rX   s     r   r   zTestIqrAxes.test_axisneg1   r   r   Nr   rE   r   r   r   r      r   r   r   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestQnc                    t           j                            d           t          d          | _        t          j        dd          | _        t           j                            d          | _        t          j	        j
                                        j        | _
        t          j	        j                                        j        j        | _        d S )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$"---
Ia$$	)//R/88-99;;@k*6688=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
                     d S N)r   r$   r+   r   	_qn_naiver   r   r   r   s    r   test_qn_naivezTestQn.test_qn_naive   s    N4;'')E)Ew	
 	
 	
 	N4:&&
(C(CW	
 	
 	
 	N4+,,OD,--	
 	
 	
 	
 	
r   c                 L   t          t          j        | j                  dt                     t          t          j        | j                  t          j        g d          t                     t          t          j        | j        dd                   dt                     d S )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   s    EN4:66IIIN4>**H999::	
 	
 	
 	N4<#.//7	
 	
 	
 	
 	
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                     t          j        d	
          }t          j        t                    5  t          j	        |           d d d            d S # 1 swxY w Y   d S r   )
r   rd   re   r$   r+   r   rj   rk   r   r(   rf   s     r   test_qn_emptyzTestQn.test_qn_empty   s6   xu--.....&&U^E222BHW4E4EFFF)**U^E333RXm5L5LMMMr"""]:&& 	 	Ie	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   N)rA   rB   rC   rD   r   r   r   r   rE   r   r   r   r      s]        J J [J
 
 

 
 
	 	 	 	 	r   r   c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )
TestQnAxesc                 l    t           j                            d           t          d          | _        d S rt   rN   r   s    r   r   zTestQnAxes.setup_class   rw   r   c                 f    t          j        | j        d          }t          |j        d           d S ry   r$   r+   rQ   r   rW   rX   s     r   rz   zTestQnAxes.test_axis0   0    N46***QWh'''''r   c                 f    t          j        | j        d          }t          |j        d           d S r}   r   rX   s     r   r~   zTestQnAxes.test_axis1   r   r   c                 f    t          j        | j        d          }t          |j        d           d S r   r   rX   s     r   r   zTestQnAxes.test_axis2   r   r   c                 f    t          j        | j        d          }t          |j        d           d S r   r   rX   s     r   r   zTestQnAxes.test_axisneg1  s0    N46+++QWh'''''r   Nr   rE   r   r   r   r      r   r   r   c                   *    e Zd Zed             Zd ZdS )	TestHuberc                 l    t           j                            d           t          d          | _        d S rI   rN   r   s    r   r   zTestHuber.setup_class  rR   r   c                     t          j        d          } || j                  \  }}t          |j        d           d S )Nr]   )maxiterrU   )r$   r9   rQ   r   rW   )r   r;   rY   ss       r   test_huber_result_shapez!TestHuber.test_huber_result_shape  s?    K$$$qyy1QWe$$$$$r   N)rA   rB   rC   rD   r   r   rE   r   r   r   r     s<        * * [*% % % % %r   r   c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )TestHuberAxesc                     t           j                            d           t          d          | _        t          j        dd          | _        d S )NrJ   ru   i  gh㈵>)r   tol)r   rO   rP   r   rQ   r$   r9   r;   r   s    r   r   zTestHuberAxes.setup_class  s?    
	u--Dg666r   c                 n    |                      | j        d          \  }}t          |j        d           d S ry   r;   rQ   r   rW   r   rY   r   s      r   test_defaultzTestHuberAxes.test_default  5    vvdf1v%%1QWh'''''r   c                 n    |                      | j        d          \  }}t          |j        d           d S r}   r   r   s      r   r~   zTestHuberAxes.test_axis1  r   r   c                 n    |                      | j        d          \  }}t          |j        d           d S r   r   r   s      r   r   zTestHuberAxes.test_axis2!  r   r   c                 n    |                      | j        d          \  }}t          |j        d           d S r   r   r   s      r   r   zTestHuberAxes.test_axisneg1%  s5    vvdf2v&&1QWh'''''r   N)	rA   rB   rC   rD   r   r   r~   r   r   rE   r   r   r   r     si        7 7 [7
( ( (( ( (( ( (( ( ( ( (r   r   c                  L   t          j        g dg dg          } d }t          | d           }t          | d |          }t          |                                 d          }t           j                            ||           t           j                            ||           d S )N)r   r3   r   )r      r   c                 *    t          j        |           S r   )r   r!   )xs    r   rY   ztest_mad_axis_none.<locals>.m.  s    y||r   )ar_   )r   r_   ri   r   )r   r   r   raveltestingassert_allclose)r   rY   directcustomaxis0s        r   test_mad_axis_noner   *  s    
)))YYY'((A   14   F14***F!''))!$$$EJvv...J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@ C@ C@ C@ C@ C@ C@L
 
 
 
 
 
 
 
<( ( ( ( ( ( ( (.       ,( ( ( ( ( ( ( (.- - - - - - - -`( ( ( ( ( ( ( (.	% 	% 	% 	% 	% 	% 	% 	%( ( ( ( ( ( ( (0. . . . .r   