
    M/Phr*                        d Z ddlZddlZddlmZmZmZmZm	Z	 ddl
Z
ddlmZ ddlZej                            ej                            e                    Zej                            ed          Z G d d          Zd Zd	 ZdS )
a  
Lowess testing suite.

Expected outcomes are generated by R's lowess function given the same
arguments. The R script test_lowess_r_outputs.R can be used to
generate the expected outcomes.

The delta tests utilize Silverman's motorcycle collision data,
available in R's MASS package.
    N)assert_assert_allcloseassert_almost_equalassert_equalassert_raises)lowessresultsc                       e Zd Zd Zej                            dddg          d             Zd Ze	dd            Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd
S )
TestLowessc                 V    dd l m} |j        j        }t	          t          |u            d S )Nr   )statsmodels.apiapinonparametricr   r   )selfsmlowess1s      k/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/nonparametric/tests/test_lowess.pytest_importzTestLowess.test_import"   s:     	%$$$$$")'!"""""    
use_pandasFTc                 H   t          j        d          t          j        d          t          j        d          d|rfdD             t          j        d         d         g          j        }t          d         d                   }t          ||d           d S )N   xyoutc                 F    i | ]}|t          j        |                   S  )pdSeries).0k	test_datas     r   
<dictcomp>z(TestLowess.test_flat.<locals>.<dictcomp>2   s)    GGGBIil33GGGr   r   r   r      )nparangezerosarrayTr   r   )r   r   expected_lowessactual_lowessr#   s       @r   	test_flatzTestLowess.test_flat*   s     2"8B<<
 
	
  	HGGGGYGGGI(IcNIe4D#EFFHy~y~>>O]A>>>>>r   c                 &   t          j        d          t          j        d          t          j        d          d}t          j        |d         |d         g          j        }t	          |d         |d                   }t          ||d           d S )Nr   r   r   r   r   r%   )r&   r'   r)   r*   r   r   )r   r#   r+   r,   s       r   
test_rangezTestLowess.test_range7   s    229R==
 
	
 (IcNIe4D#EFFHy~y~>>O]A>>>>>r   r   r   r   Nr%   c                 v   |i n|}t          j        t          j                            t
          |          dd          }| t          _        t          |          r ||          }t          ||         ||         fi |}t          j
        ||         ||         g          j        }	t          ||	|           d S )N,T	delimiternames)r&   
genfromtxtospathjoinrpathr   descriptioncallabler   r)   r*   )
namefnamer   r   r   kwargsdecimaldataresultexpects
             r   generatezTestLowess.generateA   s    ~6}GLL&&#T
 
 
 +/'F 	"VD\\FQa33F3347DI.//1FFG44444r   c                 2    |                      dd           d S )Ntest_simpletest_lowess_simple.csvrC   r   s    r   rE   zTestLowess.test_simpleO   s    m%=>>>>>r   c                 <    |                      dddddi           d S )Ntest_iter_0test_lowess_iter.csvout_0itr   r   r>   rG   rH   s    r   rJ   zTestLowess.test_iter_0R   7    "!9	 	 	
 	
 	
 	
 	
r   c                 <    |                      dddddi           d S )NrJ   rK   out_3rM      rN   rG   rH   s    r   test_iter_0_3zTestLowess.test_iter_0_3Z   rO   r   c                 <    |                      dddddi           d S )Ntest_frac_2_3test_lowess_frac.csvout_2_3fracgUUUUUU?rN   rG   rH   s    r   rU   zTestLowess.test_frac_2_3b   8    "G$	 	 	
 	
 	
 	
 	
r   c                 <    |                      dddddi           d S )Ntest_frac_1_5rV   out_1_5rX   g?rN   rG   rH   s    r   r[   zTestLowess.test_frac_1_5j   rY   r   c                 <    |                      dddddi           d S )Ntest_delta_0test_lowess_delta.csvrL   rX   皙?rN   rG   rH   s    r   r^   zTestLowess.test_delta_0r   s7    #C=	 	 	
 	
 	
 	
 	
r   c                 :    |                      dddd            d S )Ntest_delta_Rdefr_   out_Rdefc                 B    ddt          j        | d                   z  dS )Nr`   g{Gz?r   rX   delta)r&   ptp)r@   s    r   <lambda>z,TestLowess.test_delta_rdef.<locals>.<lambda>   s'    tCy 1 11! ! r   rN   rG   rH   s    r   test_delta_rdefzTestLowess.test_delta_rdefz   s:    # 	 	 	
 	
 	
 	
 	
r   c                 @    |                      ddddddd           d S )	Ntest_delta_1r_   out_1r`   g8   ?re   
   )r   r>   r?   rG   rH   s    r   rk   zTestLowess.test_delta_1   s>    #)44 	 	
 	
 	
 	
 	
r   c                 
   t           j                            t          d          }t	          j        t          |d          dd          }|d         |d         }}|d         }t	          j        |d         |d         g          j        }t          ||d	          }t          ||d
           t          j        ||d          }t          |d         |d         d	          }t          ||d
           t          ||dd          }	t          |	|d
           t          |d d d         |d d d         d          }	t          |	|d d ddf         d
           t          ||ddd          }	t          |	|d d df         d
           t          t	          j        |                              t                    |d	          }	t          t	          j        |          |d	          }t          |	|d
           t!          |	j        t	          j        t$                    u            t          |t	          j        |                              t                    d	          }	t          |t	          j        |          d	          }t          |	|d
           t!          |	j        t	          j        t$                    u            t	          j        t)          |          dz            }
t          j                            |
           t          ||||
         d          }t          |	|
df         |d
           t          j        |ddg<   t          j        |d<   t	          j        |          t	          j        |          z  }t          ||d	          }	t          ||         ||         d	          }t          |	|d
           t3          t4          t          ||d           t	          j        t)          |                    }
t          j                            |
           ||
         }||
         }t          ||d	          }t          |	|d
           t          ||dd          }t	          j        |          t	          j        |          z  }t7          t	          j        |          |            t	          j        |          }||         }|t	          j        |                   }t          ||d d df         d
           t	          j        |	j        d                   }
t          |||	|
df         d          }t          |	|
df         |d
           d S )NrF   rbr1   Tr2   r   r   r   	is_sorted   r?   )r   r   none)rq   missingF)return_sorted   )rw   ru   rq      )xvalsrw         rR   raise)ru   )rq   rw   r   )r6   r7   r8   r9   r&   r5   openr)   r*   r   r   r   	DataFrameroundastypeintr   dtypefloatr'   lenrandomshufflenanisfiniter   
ValueErrorr   isnanargsortshape)r   rfiler#   r   r   res1_fittedr+   actual_lowess1dfr,   perm_idxactual_lowess2
mask_validypermxpermactual_lowess3sort_idxyhatactual_lowess4s                      r   test_optionszTestLowess.test_options   s"   U$<==M$ud"3"3s$OOO	~y~1&(IcNIe4D#EFFH  1555NORHHHH \**++3CDAAANORHHHH q!tVDDDM>2FFFF q2w$$B$uEEEM>$$B$'+BBOOOO qv
 
 
 	M>!!!Q$+?LLLL rx{{11#66TJJJQ$???M>2FFFF#rx6777q"(1++"4"4S"9"9TJJJ28A;;$???M>2FFFF#rx6777 9SVVq[))
	(###1AhKuMMM(A+&	
 	
 	
 	

 F1a&	v![^^bk!nn4
q!t444*q}MMMM>2FFFFj&!Q@@@@9SVV$$
	(###((u>>>M>2FFFF5E
 
 
 [''"+e*<*<<
RXn--
{;;;:e$$h'BK%%&D.A"6CCCC 9]0344qhk2%
 
 
 	(A+&	
 	
 	
 	
 	
 	
r   c                 $   dgdgdz  z   dgdz  z   dgz   }|t           j                            t          |                    dz  z   }t	          ||dt          |          z  d	          }t          |dd
df         |dd
         d           d S )Nr   rx   d   ry   rR   )sizeg:0yE>2   rX   rM   rv   r%   rs   )r&   r   normalr   r   r   r   r   r   rA   s       r   test_duplicate_xszTestLowess.test_duplicate_xs   s     C1#)OqcCi'1#-	  c!ff --4412A;1555 	F1R47OQqtWa@@@@@@r   c                    t          j        ddd          }t          j        |dz  dz            }t          ||dt	          |          z  d          }t          t          j        |d d df         t          j        |          d	z
  k                         t          t          j        |d d df         t          j        |          d	z   k                          d S )
Nr   rm   i  ry   r{      rx   r   r`   )	r&   linspacecosr   r   r   allminmaxr   s       r   
test_spikezTestLowess.test_spike   s    
 K2t$$F16A:12A;1555vaaad|bfQii#o566777vaaad|bfQii#o56677777r   c           
         t           j                            t          d          }t	          j        t          |d          dd          }|d         |d         }}t          ||d          }t	          j        t          |          d	z            }t          j
                            |           t          ||||         d
          }t          ||df         |d           t          ||dd          }t          ||||         d          }	t          ||         |	d           t          j        t                    5  t          ||t	          j        t          j        ddg          d           d d d            n# 1 swxY w Y   t          |||d          }
t%          |
|d d df                    t          j        |ddg<   t          j        |d<   t          ||d          }t	          j        |j        d                   }t          ||||df                   }t          ||df         |d           t          |||d          }	t	          j        |          t	          j        |          z  }t%          |	|         |d d df                    t          j        t                    5  t          ||t	          j        dgdgg                     d d d            d S # 1 swxY w Y   d S )NrF   ro   r1   Tr2   r   r   rp   ry   rt   )rz   ru   rx   rr   rs   Fr   )rw   rM   )rz   rM   r{   rR   r}   )rz   rq   r|   )rz   droprm   )r6   r7   r8   r9   r&   r5   r~   r   r'   r   r   r   r   pytestraisesr   r)   r   r   r   r   )r   r   r#   r   r   targetr   r,   
target_it0r   r   r   
all_finites                r   test_exog_predictzTestLowess.test_exog_predict   sW   U$<==M$ud"3"3s$OOO	~y~11--- 9SVVq[))
	(###q!1X;GGGF8Q;/KKKKAq!<<<
1AhKA>>>Jx0."MMMM ]:&& 	J 	J1arxA77IIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J  1A>>>^VAAAqD\222 F1a&	v!1--- 9V\!_--1F8Q;,?@@@F8Q;/LLLL  1Av>>>[^^bk!nn4
^J/1>>> ]:&& 	6 	61arx!rd445555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s$    3E??FF1)K''K+.K+)r   r   r   Nr%   )__name__
__module____qualname__r   r   markparametrizer-   r/   staticmethodrC   rE   rJ   rS   rU   r[   r^   ri   rk   r   r   r   r   r   r   r   r   r   !   s?       # # # [\5$-88
? 
? 98
?? ? ? 
5 
5 
5 \
5? ? ?
 
 

 
 

 
 

 
 

 
 
	
 	
 	

 
 
T
 T
 T
lA A A	8 	8 	8)6 )6 )6 )6 )6r   r   c                      dgdz  dgdz  z   } t          j        d          }t          | |d          }t          |t          j        || f                     d S )Nr   rm   rx   r   皙?)rX   )r&   r'   r   r   column_stack)r   r   rA   s      r   test_returns_inputsr   %  s]    	
bA38A
	"AAqs###FA 7 788888r   c                     dgdz  dgdz  z   }t          j        d          }t          ||d|d d                   }t          |t          j        d          d	           d S )
Nr   rm   rx   r   r   r{   )rX   rz   g-q=)atol)r&   r'   r   r   r(   )reset_randomstater   r   results_xvalss       r   test_xvals_dtyper   -  sf    	
bA38A
	"A1ac2A2777MM28A;;U;;;;;;r   )__doc__r6   numpyr&   numpy.testingr   r   r   r   r   r   *statsmodels.nonparametric.smoothers_lowessr   pandasr   r7   dirnameabspath__file__curdirr8   r9   r   r   r   r   r   r   <module>r      s&  	 	 
			                   = = = = = =     
22	3	3
VY''A6 A6 A6 A6 A6 A6 A6 A6H9 9 9< < < < <r   