U
    ÃmœdÃ  ã                   @   sv   d Z ddlZddlZddlmZmZ ddlZddlm	Z	m
Z
 ddlZG dd„ dƒZdd„ Zd	d
„ Zdd„ Zdd„ ZdS )zíTesting helper functions

Warning: current status experimental, mostly copy paste

Warning: these functions will be changed without warning as the need
during refactoring arises.

The first group of functions provide consistency checks

é    N)ÚVersionÚparse)Úassert_allcloseÚassert_c                   @   s    e Zd Zddd„Zddd„ZdS )	ÚPytestTesterNc                 C   sR   t  d¡}|d kr0|j dd ¡}|d kr0tdƒ‚tj |¡| _|j dd ¡| _	d S )Né   Ú__file__zUnable to determine pathÚ__name__)
ÚsysÚ	_getframeÚf_localsÚgetÚ
ValueErrorÚosÚpathÚdirnameÚpackage_pathÚpackage_name)Úselfr   Úf© r   úS/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tools/_testing.pyÚ__init__   s    
zPytestTester.__init__Fc                 C   sŠ   zhdd l }t|jƒtdƒks t‚|d kr0ddg}| jg| }tdd |¡ ƒ | |¡}|rft	 
|¡ W n tk
r„   tdƒ‚Y nX d S )Nr   z3.0z
--tb=shortz--disable-pytest-warningszRunning pytest ú z"pytest>=3 required to run the test)Úpytestr   Ú__version__r   ÚImportErrorr   ÚprintÚjoinÚmainr
   Úexit)r   Ú
extra_argsr    r   ÚcmdÚstatusr   r   r   Ú__call__    s    
zPytestTester.__call__)N)NF)r	   Ú
__module__Ú__qualname__r   r$   r   r   r   r   r      s   
	r   c                 C   sþ   | }t  t|jƒ¡}| |¡}t|j|jdd� tt  |j¡|j	dd� tt  |j
¡|jdd� t|j|jdd� t| ¡ | ¡ dd� t  |j|j	|j|j| ¡ f¡}| ¡ j}t||dd� tt|dƒƒ | |d ¡}| ¡  t|j|jd dd� d S )Nçê-�™—q=©Úrtolg»½×Ùß|Û=ç•Ö&è.>Úuse_tr   )ÚnpÚeyeÚlenÚparamsZt_testr   ZeffectÚsqueezeÚsdZbseZtvalueZtvaluesÚpvalueÚpvaluesZconf_intZcolumn_stackZsummary_frameÚvaluesr   ÚhasattrÚsummary)ÚresultsÚresÚmatÚttZ	table_resZtable2r   r   r   Úcheck_ttest_tvalues0   s$    
 ÿ
r;   c                    sÈ   | ‰ˆj ‰tˆjƒ‰ ‡ ‡‡fdd„tˆ ƒD ƒ}t|ˆjddd� ‡ ‡fdd„tˆ ƒD ƒ}t|ˆjddd� ˆdkrvdnd	}tˆ ¡ ƒ}t||kƒ ztˆ 	¡ ƒ}W n t
k
r¶   Y nX t||kƒ d
S )aN  
    Check that the outputs of `res.wald_test` produces pvalues that
    match res.pvalues.

    Check that the string representations of `res.summary()` and (possibly)
    `res.summary2()` correctly label either the t or z-statistic.

    Parameters
    ----------
    results : Results

    Raises
    ------
    AssertionError
    c                    s(   g | ] }ˆj t ˆ ¡| ˆd d�j‘qS )T)Zuse_fÚscalar©Z	wald_testr,   r-   r2   ©Ú.0Úk©Úk_varsr8   r+   r   r   Ú
<listcomp>`   s   ÿz'check_ftest_pvalues.<locals>.<listcomp>r*   gÙ}ÚõÐò¾:)r)   Zatolc                    s&   g | ]}ˆj t ˆ ¡| d d�j‘qS )T)r<   r=   r>   )rB   r8   r   r   rC   e   s   ÿFzP>|z|zP>|t|N)r+   r.   r/   Úranger   r3   Ústrr6   r   Zsummary2ÚAttributeError)r7   ZpvalsZstring_use_tZsummZsumm2r   rA   r   Úcheck_ftest_pvaluesL   s&    
ÿÿrG   c                 C   s†   dd l }ddlm} ddlm} t| d| ƒ} t| ||fƒrN| d t	| ƒ¡¡ | }|j
}t|jj| |jdd� t|| ¡ dd� d S )Nr   ©Ú
GLMResults©ÚDiscreteResultsÚ_resultszNot supported for {0}r'   r(   )r   Ú+statsmodels.genmod.generalized_linear_modelrI   Ú#statsmodels.discrete.discrete_modelrK   ÚgetattrÚ
isinstanceÚskipÚformatÚtypeÚfittedvaluesr   ÚmodelZendogZresidÚpredict)r7   r   rI   rK   r8   Úfittedr   r   r   Úcheck_fittedx   s    rX   c                 C   s   | }t  t  |jjdd… ¡¡}ddlm} ddlm} ddl	m
}m} t| d| ƒ} t| ||fƒr�| |¡ | | ¡ ¡ | |d  ¡ ¡ �n|jdd… }t|| |¡dd	� t|| t  |¡ ¡ ¡dd	� t|dd
… | |d  ¡ ¡dd	� t|dd
… | |d ¡dd	� tt|ƒƒ}| |¡}	|jd
k�r<tjntj}
| |
||d�¡}|	jd
k�rftjntj}
|
|	|d�}t|tjƒ�r’|||ƒ n
|||ƒ dS )zÊ
    Check that the `predict` method of the given results object produces the
    correct output type.

    Parameters
    ----------
    results : Results

    Raises
    ------
    AssertionError
    Né   r   rH   rJ   )Úassert_frame_equalÚassert_series_equalrL   r'   r(   r   )Úindex)r,   r0   ZasarrayrU   ZexogrM   rI   rN   rK   Zstatsmodels.compat.pandasrZ   r[   rO   rP   rV   ÚtolistrT   r   rD   r.   ÚndimÚpdZSeriesZ	DataFrame)r7   r8   Zp_exogrI   rK   rZ   r[   rW   Z
exog_indexZ	predictedÚclsZpredicted_pandasZpredicted_expectedr   r   r   Úcheck_predict_types‹   s<    
ÿÿÿ
ra   )Ú__doc__r   r
   Zpackaging.versionr   r   Únumpyr,   Znumpy.testingr   r   Zpandasr_   r   r;   rG   rX   ra   r   r   r   r   Ú<module>   s   ,