U
    KvfS*                     @   s   d Z ddlmZmZ ddlmZ ddlZddlZddl	m
Z
 ddlmZmZmZmZ ddlZddlZddlmZ ddlmZ dd	lmZ ejd
ddd ZG dd dZdd Zdd Zdd Zdd Zdd Z G dd dZ!G dd dZ"dS )z!
Test functions for models.tools
    )assert_frame_equalassert_series_equal)lrangeN)standard_normal)assert_almost_equalassert_array_equalassert_equalassert_string_equal)longley)tools)pinv_extendedmodule)Zscopec                  C   sh   t jdd t jdd t jdd t jdd t jdd g} | d9 } tt| } tj| dd}|S )	Nr      
            
string_varname)stringascii_lowercasenpasarraysortedpdSeries)r   series r   F/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tools/tests/test_tools.pyr      s    r   c                   @   sl   e Z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d Zdd ZdS )	TestToolsc                 C   sB   t dd}t|}tddddgddddggj}t|| d S N   r               @)r   r   add_constantr   r   Tr   selfxyr   r   r   test_add_constant_list)   s    

 z TestTools.test_add_constant_listc                 C   sD   t dd}t|}t ddddgddddggj}t|| d S r!   )r   aranger   r&   r   r'   r   r(   r   r   r   test_add_constant_1d/   s    
 zTestTools.test_add_constant_1dc              	   C   sj   t d}tj|dd}t|t d tt tj|dd W 5 Q R X ttj|ddt d d S )Nr   skipZhas_constant)r   r"   raiseadd)r   r#   )r   onesr   r&   r   pytestraises
ValueError)r)   r*   r   r   r    test_add_constant_has_constant1d5   s    
 z*TestTools.test_add_constant_has_constant1dc              	   C   s   t ddddgddddggj}tj|dd}t|| tt tj|dd W 5 Q R X ttj|ddt 	t 
d	|f d S )
Nr"   r#   r$   r%   r/   r0   r1   r2      )r   r   r'   r   r&   r   r4   r5   r6   Zcolumn_stackr3   r(   r   r   r    test_add_constant_has_constant2dA   s     
z*TestTools.test_add_constant_has_constant2dc                 C   s@   t dddg}t|}t jdddgdd}t||d  d S )N      ?       @      @constr   )r   r   r   r&   r   )r)   soutputexpectedr   r   r   test_add_constant_seriesN   s    
z"TestTools.test_add_constant_seriesc                 C   sx   t dddgdddgddd	gg}t|}t jdddgd
d}t||d
  | }|dd
t	d t
|| d S )Nr:   ar8   r;   bc	   r<   def   r=   r   r   r$   )r   	DataFramer   r&   r   r   copyinsertr   r3   r   )r)   dfr?   r@   dfcr   r   r   test_add_constant_dataframeT   s    "
z%TestTools.test_add_constant_dataframec                 C   s  t d}t|}t|d d df t d tdddg}t|}tjdddgdd}t||d  t	dddgdd	d
gdddgg}t|}|
 }|ddt d t|| t	dddgdd	dgdddgg}t|}|
 }|ddt d t|| d S )Nd   r           r:   r=   r   rB   r8   rC   rD   rE   rF   r$   )r   zerosr   r&   r   r3   r   r   r   rG   rH   rI   r   )r)   rB   r?   r>   r@   rJ   rK   r   r   r   test_add_constant_zeros]   s"    


"

"
z!TestTools.test_add_constant_zerosc                 C   s@   t ddgddgg}t|}t|t ddgddgg d S )Nr#   r"   r         ?)r   arrayr   Zreciprr   r)   XYr   r   r   test_reciprs   s    
zTestTools.test_reciprc                 C   s@   t ddgddgg}t|}t|t ddgddgg d S )Nr#   r"   r   rR   g      п)r   rS   r   Zrecipr0r   rT   r   r   r   test_recipr0x   s    
zTestTools.test_recipr0c                 C   sH   t d}tj|}tj|dd}t|\}}t|| t|| d S )N(   r   r   r   r   ZlinalgZpinvZsvdr   r   r)   rU   Znp_invZnp_sing_valsZsm_invZ	sing_valsr   r   r   test_extendedpinv}   s    
zTestTools.test_extendedpinvc                 C   st   t d}|d d df |d d df  |d d df< tj|}tj|dd}t|\}}t|| t|| d S )NrZ   r"   r$   r   r   r\   r]   r   r   r   test_extendedpinv_singular   s    ,
z$TestTools.test_extendedpinv_singularc              	   C   s   dd l }|  |d td}|d d df |d d df  |d d df< t|}t|jd |d d df |d d df  |d d d	f< t|}t|jd
 |d W 5 Q R X d S )Nr   ignorerZ   r"   r#   )r[   rD   r$   r8   r   )r[      )warningscatch_warningssimplefilterr   r   Zfullrankr   shape)r)   rb   rU   rV   r   r   r   test_fullrank   s    

,
,
zTestTools.test_fullrankN)__name__
__module____qualname__r,   r.   r7   r9   rA   rL   rP   rW   rY   r^   r_   rf   r   r   r   r   r    (   s   		r    c            
   
   C   s   t jd} d\}}| j||fd}| jd|fd}tj}|||sHt|t ||s\tt |D ]}|||sftqft d}|ddg|st|ddg|rt|ddg|rt|t d|rt| j|dfd}t 	||g}|t 	t dt 
d	g|rt|t 	t 
d	t dg|r8t|t 	t dt dg|s^t| }|t 	t dt dg|st| j|dfd}tdd
D ].}	tt |t |	f| W 5 Q R X qtt |t d
| W 5 Q R X d S )Ni3rZ   )sizer"   )r[   r#   r   r#   r   )r   r   r8   )r   randomZRandomStatenormalr   isestimableAssertionErrorZeyer3   ZhstackrO   tolistranger4   r5   r6   )
rngNPrU   Crm   rowZhalfXZXLnr   r   r   test_estimable   s6    
&&&& rw   c                  C   sJ   t  } | jd }tj|dd}td|jd  t|dj	d d d S )NGNPFprependr=   r"   r   
r
   load_pandasexogr   r&   r	   columnsr   varilocdtar   r   r   r   test_pandas_const_series   s
    
r   c                  C   sJ   t  } | jd }tj|dd}td|jd  t|dj	d d d S )Nrx   Try   r=   r   r{   r   r   r   r    test_pandas_const_series_prepend   s
    
r   c                  C   sB   t  j} tj| dd} td| jd  t| dj	d d d S )NFry   r=   rQ   r   r{   r   r   r   r   test_pandas_const_df   s    
r   c                  C   sZ   t  j} | d  | d    < tj| dd} td| jd  t| 	dj
d d d S )NZUNEMPTry   r=   r   )r
   r|   r}   Zstdr   r&   r	   r~   r   r   r   r   r   r   r   test_pandas_const_df_prepend   s
    
r   c                   @   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 )
TestNanDotc                 C   s   t j}t |dgddgg| _t ||gddgg| _t ddgddgg| _t ddgddgg| _t ddgddgg| _t ddgddgg| _d S )Nr:   r;   r<   rN   r%   )	r   nanrS   mx_1mx_2mx_3mx_4mx_5mx_6)clsr   r   r   r   setup_class   s    zTestNanDot.setup_classc                 C   s:   t | j| j}ttjtjgtjdgg}t|| d S )Ng      &@)r   nan_dotr   r   rS   r   r   )r)   test_resexpected_resr   r   r   test_11   s    zTestNanDot.test_11c                 C   s:   t j}t| j| j}t ||g||gg}t|| d S )N)r   r   r   r   r   r   rS   r   r)   r   r   r   r   r   r   test_12   s    zTestNanDot.test_12c                 C   s:   t j}t| j| j}t ddgddgg}t|| d S NrN   )r   r   r   r   r   r   rS   r   r   r   r   r   test_13   s    zTestNanDot.test_13c                 C   s:   t j}t| j| j}t |dgddgg}t|| d S NrN   g      @)r   r   r   r   r   r   rS   r   r   r   r   r   test_14   s    zTestNanDot.test_14c                 C   s:   t j}t| j| j}t |dg|dgg}t|| d S )Nr:   )r   r   r   r   r   r   rS   r   r   r   r   r   test_41  s    zTestNanDot.test_41c                 C   s:   t j}t| j| j}t ddgddgg}t|| d S r   )r   r   r   r   r   r   rS   r   r   r   r   r   test_23  s    zTestNanDot.test_23c                 C   s:   t j}t| j| j}t ddgddgg}t|| d S r   )r   r   r   r   r   r   rS   r   r   r   r   r   test_32  s    zTestNanDot.test_32c                 C   s:   t j}t| j| j}t |dgddgg}t|| d S r   )r   r   r   r   r   r   rS   r   r   r   r   r   test_24  s    zTestNanDot.test_24c                 C   s:   t j}t| j| j}t d|gddgg}t|| d S r   )r   r   r   r   r   r   rS   r   r   r   r   r   test_25  s    zTestNanDot.test_25c                 C   s:   t j}t| j| j}t ddgddgg}t|| d S )Ng      @g      $@g      .@g      6@)r   r   r   r   r   rS   r   r   r   r   r   test_66  s    zTestNanDot.test_66N)rg   rh   ri   classmethodr   r   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 )
TestEnsure2dc                 C   sH   t dd}tj|ddddgd| _| jjd d df | _|| _d S )	Ng      y@)rM   r8   rB   bcd)r~   r   )	r   r-   Zreshaper   rG   rJ   r   r   ndarray)r   r*   r   r   r   r   '  s    zTestEnsure2d.setup_classc                 C   sv   t | jd}t|d | j t|d | jj t | jd}t|d | jd d dgf  t|d | jjd  d S )NTr   r"   )r   
_ensure_2drJ   r   r   r~   r   r)   resultsr   r   r   test_enfore_numpy.  s    zTestEnsure2d.test_enfore_numpyc                 C   sx   t | jd}t|d | j t|d | jj t | jd}t|d | jjd d dgf  t|d | jjd  d S )NFr   r"   )	r   r   rJ   r   r   r~   r   r   r   r   r   r   r   test_pandas6  s     zTestEnsure2d.test_pandasc                 C   sr   t | j}t|d | j t|d d  t | jd d df }t|d | jd d dgf  t|d d  d S )Nr   r"   )r   r   r   r   r   r   r   r   r   
test_numpy?  s    zTestEnsure2d.test_numpyN)rg   rh   ri   r   r   r   r   r   r   r   r   r   r   &  s
   
	r   )#__doc__Zstatsmodels.compat.pandasr   r   Zstatsmodels.compat.pythonr   r   Znumpyr   Znumpy.randomr   Znumpy.testingr   r   r   r	   Zpandasr   r4   Zstatsmodels.datasetsr
   Zstatsmodels.toolsr   Zstatsmodels.tools.toolsr   Zfixturer   r    rw   r   r   r   r   r   r   r   r   r   r   <module>   s*   

w 	G