U
    Kvf                     @   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 )
zUnit 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   Zfitres)clsZnobsZk_varsxy r   I/tmp/pip-unpacked-wheel-2v6byqio/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   r/   r4   r5   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
   gvIh%<=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    
rC   )__doc__Znumpyr   Znumpy.testingr   r   Z#statsmodels.regression.linear_modelr   Zstatsmodels.stats._delta_methodr   r   rC   r   r   r   r   <module>   s   M