U
    Ãmœd?*  ã                   @   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 )Néd   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|ƒs–t‚|ddg|ƒr¨t‚|ddg|ƒrºt‚|t  d¡|ƒrÎt‚| 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¡|ƒ�sŒt‚| j|dfd�}tdd
ƒD ].}	t t¡� |t  |	f¡|ƒ W 5 Q R X �q¦t 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