
    Vfd                     |    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          Zd Zd Zd	 Zd
 ZdS )zTesting 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                       e Zd ZddZddZdS )PytestTesterNc                    t          j        d          }|,|j                            dd           }|t	          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   fs      :lib/python3.11/site-packages/statsmodels/tools/_testing.py__init__zPytestTester.__init__   su    M!:>>*d;;L# !;<<<GOOL99JNN:t<<    Fc                 h   	 dd l }t          |j                  t          d          k    st          |ddg}| j        g|z   }t          dd                    |          z              |                    |          }|rt          j
        |           d S d S # t          $ r t	          d          w xY w)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statuss         r   __call__zPytestTester.__call__    s    	DMMM+,,>>!!!*,GH
$%
2C#chhsmm3444[[%%F !     ! ! 	D 	D 	DBCCC	Ds   BB B1)N)NF)r   
__module____qualname__r   r(    r   r   r   r      sB        = = = =D D D D D Dr   r   c                    | }t          j        t          |j                            }|                    |          }t          |j        |j        d           t          t          j        |j                  |j	        d           t          t          j        |j
                  |j        d           t          |j        |j        d           t          |                                |                                d           t          j        |j        |j	        |j        |j        |                                f          }|                                j        }t          ||d           t%          t'          |d                     |                    |d                   }|                                 t          |j        |j        d         d           d S )N-q=rtolg|=&.>use_tr   )npeyelenparamst_testr   effectsqueezesdbsetvaluetvaluespvaluepvaluesconf_intcolumn_stacksummary_framevaluesr   hasattrsummary)resultsresmattt	table_restable2s         r   check_ttest_tvaluesrK   0   s   
C
&SZ
!
!C	CBBIsz6666BJru%%swU;;;;BJry))3;UCCCCBIs{7777BKKMM3<<>>>>>> SWck!$cllnn!> ? ?I&FFIE2222 GC!!"""	CF		BJJLLLBIs{1~E::::::r   c                    | j         t          j                  fdt                    D             }t	          |j        dd           fdt                    D             }t	          |j        dd           du rdnd}t                                                    }t          ||v            	 t          	                                          }t          ||v            d	S # t          $ r Y d	S w xY w)
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                 z    g | ]7}                     t          j                  |         d           j        8S )T)use_fscalar	wald_testr2   r3   r=   ).0kk_varsrF   r1   s     r   
<listcomp>z'check_ftest_pvalues.<locals>.<listcomp>`   sK     % % % ]]26&>>!,E$]GGN % % %r   r0   g}:)r/   atolc                 x    g | ]6}                     t          j                  |         d           j        7S )T)rO   rP   )rR   rS   rT   rF   s     r   rU   z'check_ftest_pvalues.<locals>.<listcomp>e   sI     % % % ]]26&>>!,T]::A % % %r   FzP>|z|zP>|t|N)r1   r4   r5   ranger   r>   strrD   r   summary2AttributeError)rE   pvalsstring_use_tsummsumm2rT   rF   r1   s        @@@r   check_ftest_pvaluesr`   L   sQ     CIE__F% % % % % %Fmm% % %EE3;U????% % % % %Fmm% % %EE3;U???? $unn77'Ls{{}}DLD !!!'CLLNN## 	%&&&&&    s   !C9 9
DDc                 x   dd l }ddlm} ddlm} t          | d|           } t          | ||f          r5|                    d                    t          |                                | }|j
        }t          |j        j        |z
  |j        d           t          ||                                d           d S )Nr   
GLMResultsDiscreteResults_resultszNot supported for {0}r-   r.   )r   +statsmodels.genmod.generalized_linear_modelrc   #statsmodels.discrete.discrete_modelre   getattr
isinstanceskipformattypefittedvaluesr   modelendogresidpredict)rE   r   rc   re   rF   fitteds         r   check_fittedrt   x   s    MMM GFFFFFCCCCCC gz733G'J899 C+224==AABBB
CFCIOf,cieDDDDFCKKMM666666r   c                 X   | }t          j        t          j        |j        j        dd                             }ddlm} ddlm} ddl	m
}m} t          | d|           } t          | ||f          rk|                    |           |                    |                                           |                    |d                                                    dS |j        dd         }t#          ||                    |          d	           t#          ||                    t          j        |                                                    d	           t#          |dd
         |                    |d                                                   d	           t#          |dd
         |                    |d                   d	           t%          t'          |                    }|                    |          }	|j        d
k    rt*          j        nt*          j        }
|                     |
||                    }|	j        d
k    rt*          j        nt*          j        }
 |
|	|          }t          |t*          j                  r |||           dS  |||           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   rb   rd   )assert_frame_equalassert_series_equalrf   r-   r.   r
   )index)r2   r8   asarrayro   exogrg   rc   rh   re   statsmodels.compat.pandasrw   rx   ri   rj   rr   tolistrn   r   rX   r4   ndimpdSeries	DataFrame)rE   rF   p_exogrc   re   rw   rx   rs   
exog_index	predictedclspredicted_pandaspredicted_expecteds                r   check_predict_typesr      s    CZ
39>"1"#56677F GFFFFFCCCCCCQQQQQQQQ gz733G'J899 EFFMMOO$$$F1I$$&&'''''!"1"%F 3 3%@@@@BJv,>,>,E,E,G,G H H"	$ 	$ 	$ 	$ 	rr
CKKq	0@0@0B0B$C$C"	$ 	$ 	$ 	$rr
CKKq	$:$:"	$ 	$ 	$ 	$ 3v;;''
KK''	!;!++bii;;ss6'D'D'DEE %>Q..biiBL S*===(")44 	E 24DEEEEE13CDDDDDr   )__doc__r   r   packaging.versionr   r   numpyr2   numpy.testingr   r   pandasr   r   rK   r`   rt   r   r+   r   r   <module>r      s   	 	 
			 



 , , , , , , , ,     2 2 2 2 2 2 2 2    D D D D D D D D4; ; ;8)' )' )'X7 7 7&8E 8E 8E 8E 8Er   