U
    Ãmœd¸  ã                   @   sN   d Z ddlZddlmZmZ ddlmZ ddlm	Z	 G dd„ dƒZ
dd	„ ZdS )
z—Unit tests for NonlinearDeltaCov and LikelihoodResults._get_wald_nonlinear
Created on Sun Mar 01 01:05:35 2015

Author: Josef Perktold
License: BSD-3

é    N)Úassert_allcloseÚassert_equal)ÚOLS)ÚNonlinearDeltaCovc                   @   s0   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	S )
ÚTestDeltacovOLSc                 C   s`   d\}}t j ||¡}d|d d …df< |d d …d d…f  d¡t j |¡ }t||ƒ ¡ | _d S )N)éd   é   é   r   éÿÿÿÿ)ÚnpÚrandomZrandnÚsumr   ÚfitÚres)ÚclsZnobsZk_varsÚxÚy© r   ú^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/stats/tests/test_deltacov.pyÚsetup_class   s
    &zTestDeltacovOLS.setup_classc                    sš   | j }|jj‰ ‡ fdd„}t||j| ¡ ƒ}| |¡}t| ¡ | ¡ dd� t| 	¡ | 	¡ dd� |j
}|jd|d�}|jd|d�}tt|ƒt|ƒƒ d S )Nc                    s   t  ˆ | ¡d S )Né   ©r   Údot©Úparams©r   r   r   Úfun   s    z(TestDeltacovOLS.test_method.<locals>.funçê-�™—q=©ÚrtolT©Úuse_tÚdf)r   ÚmodelÚexogr   r   Ú
cov_paramsÚ_get_wald_nonlinearr   Úse_vectorizedÚ	predictedÚdf_residÚsummaryr   Ústr)Úselfr   r   ÚnlZnlmr"   Út1Út2r   r   r   Útest_method   s    
zTestDeltacovOLS.test_methodc           
         sB  | j }|jj‰ ‡ fdd„}t||j| ¡ ƒ}| ¡ }| ¡ }t|||jƒdd� t|t	 
t	 | ¡ ¡¡dd� |jˆ dd�}t||jdd� t||jdd� t| ¡ | ¡ dd� | ¡ }| ¡ }tt|ƒt|ƒƒ | ¡ }| ¡ }|j}	|jˆ dd�}t|jd|	d�| ¡ dd	d
� |jd|	d�}| ¡ }tt|ƒt|ƒƒ d S )Nc                    s   t  ˆ | ¡S )Nr   r   r   r   r   r   1   s    z'TestDeltacovOLS.test_ttest.<locals>.funr   r   F)r!   Tr    g»½×Ùß|Û=)r   Zatol)r   r#   r$   r   r   r%   r(   r'   r   r   ÚsqrtZdiagZcovZt_testZeffectÚsdZconf_intr*   r   r+   r)   )
r,   r   r   r-   r(   ÚseÚttr.   r/   r"   r   r   r   Ú
test_ttest,   s4     ÿzTestDeltacovOLS.test_ttestc                    s`   | j }|jj‰ ‡ fdd„}t||j| ¡ ƒ}t| ¡ |jd dd� t| ¡ |j	d dd� d S )Nc                    s0   t  ˆ | ¡t  ˆ d d …dd …f | dd … ¡ S )Nr	   r   r   r   r   r   r   T   s    z&TestDeltacovOLS.test_diff.<locals>.funr   r   r   )
r   r#   r$   r   r   r%   r   r(   r'   Zbse)r,   r   r   r-   r   r   r   Ú	test_diffP   s    zTestDeltacovOLS.test_diffN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r0   r5   r6   r   r   r   r   r      s
   
$r   c                     sÞ   dd l m  m  m}  |  ¡ }| ¡  |j‰ ˆ jj ‡ fdd„}t	|ˆ j
ˆ  ¡ ƒ}ˆ jdd�}t| ¡ d d… |jdd� t| ¡ d d… |jdd� ˆ  |¡}t| ¡ d d… |jdd� t| ¡ d d… |jdd� d S )	Nr   c                    s2   ˆ j j d¡d d d …f }ˆ j  | |¡}t |¡S )Nr   )r#   r$   ÚmeanÚ_derivative_exogr   Zsqueeze)ÚpÚexZfv©Zres_poir   r   Úfh   s    z test_deltacov_margeff.<locals>.fr;   )Úatr
   g‚vIhÂ%<=r   )Z(statsmodels.discrete.tests.test_discreteZdiscreteÚtestsZtest_discreteZTestPoissonNewtonr   Zres1r#   r<   r   r   r%   Zget_margeffr   r'   Z
margeff_ser(   Zmargeffr&   )ÚdtZtcr@   ZnlpZmargZnlpmr   r?   r   Útest_deltacov_margeff]   s    
rD   )Ú__doc__Únumpyr   Znumpy.testingr   r   Z#statsmodels.regression.linear_modelr   Zstatsmodels.stats._delta_methodr   r   rD   r   r   r   r   Ú<module>   s   M