U
    md?*                     @   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)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   [/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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&   r0   r1   r2   r3      )r   r   r(   r   r'   r   r5   r6   r7   Zcolumn_stackr4   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;   ar9   r<   bc	   r=   def   r>   r   r   r%   )r   	DataFramer   r'   r   r   copyinsertr   r4   r   )r*   dfr@   rA   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   rC   r9   rD   rE   rF   rG   r%   )r   zerosr   r'   r   r4   r   r   r   rH   rI   rJ   r   )r*   rC   r@   r?   rA   rK   rL   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   rS   g      п)r   rT   r   Zrecipr0r   rU   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*   rV   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 )Nr[   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   ignorer[   r#   r$   )r\   rE   r%   r9   r   )r\      )warningscatch_warningssimplefilterr   r   Zfullrankr   shape)r*   rc   rV   rW   r   r   r    test_fullrank   s    

,
,
zTestTools.test_fullrankN)__name__
__module____qualname__r-   r/   r8   r:   rB   rM   rQ   rX   rZ   r_   r`   rg   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r[   )sizer#   )r\   r$   r   r$   r   )r   r   r9   )r   randomZRandomStatenormalr   isestimableAssertionErroreyer4   ZhstackrP   tolistranger5   r6   r7   )
rngNPrV   Crn   rowZhalfXZXLnr   r   r    test_estimable   s6    
&&&& ry   c                  C   sH   t  } | jd }tj|dd}td|jd  t|dd d d S )NGNPFprependr>   r#   r   	r
   load_pandasexogr   r'   r	   columnsr   vardtar   r   r   r    test_pandas_const_series   s
    
r   c                  C   sH   t  } | jd }tj|dd}td|jd  t|dd d d S )Nrz   Tr{   r>   r   r}   r   r   r   r     test_pandas_const_series_prepend   s
    
r   c                  C   s@   t  j} tj| dd} td| jd  t| dd d d S )NFr{   r>   rR   r   r}   r   r   r   r    test_pandas_const_df   s    
r   c                  C   sX   t  j} | d  | d    < tj| dd} td| jd  t| 	dd d d S )NZUNEMPTr{   r>   r   )
r
   r~   r   Zstdr   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=   rO   r&   )	r   nanrT   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   rT   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   rT   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 NrO   )r   r   r   r   r   r   rT   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 NrO   g      @)r   r   r   r   r   r   rT   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   rT   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   rT   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   rT   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   rT   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   rT   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   rT   r   r   r   r   r    test_66  s    zTestNanDot.test_66N)rh   ri   rj   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@)rN   r9   rC   bcd)r   r   )	r   r.   Zreshaper   rH   rK   ilocr   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_2drK   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   rK   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)rh   ri   rj   r   r   r   r   r   r   r   r   r    r   &  s
   
	r   )#__doc__Zstatsmodels.compat.pandasr   r   Zstatsmodels.compat.pythonr   r   numpyr   Znumpy.randomr   Znumpy.testingr   r   r   r	   Zpandasr   r5   Zstatsmodels.datasetsr
   Zstatsmodels.toolsr   Zstatsmodels.tools.toolsr   Zfixturer   r!   ry   r   r   r   r   r   r   r   r   r   r    <module>   s*   

w 	G