
    M/PhV#                         d Z ddlZddlmZ ddlmZ ddlmZm	Z	 ddlm
c mZ  G d d          Z G d d	e          ZdS )
zUnit tests for generic score/LM tests and conditional moment tests

Created on Mon Nov 17 08:44:06 2014

Author: Josef Perktold
License: BSD-3

    N)assert_allclose)OLS)CMTNewey
CMTTauchenc                        e Zd Zd Zd Zd ZdS )CheckCMTc           	          | j         }|                                 D ]2\  }}t          ||d t          j        |                   d|           3d S NgvIh%<=)rtolerr_msg)results_score	res_scorer   npsizeselfexpectedmsgactuals       m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/tests/test_diagnostic_other.py
test_scorezCheckCMT.test_score   sk    %>>++ 	) 	)KC FH-=bgfoo-=$>U$') ) ) ) )	) 	)    c           	          | j         }|                                 D ]2\  }}t          ||d t          j        |                   d|           3d S r
   )results_hc0res_hc0r   r   r   r   s       r   test_scorehc0zCheckCMT.test_scorehc0   g    #<<>> 	) 	)KCFH-=bgfoo-=$>U$') ) ) ) )	) 	)r   c           	          | j         }|                                 D ]2\  }}t          ||d t          j        |                   d|           3d S r
   )results_opgres_opgr   r   r   r   s       r   test_scoreopgzCheckCMT.test_scoreopg"   r   r   N)__name__
__module____qualname__r   r   r!    r   r   r   r      sA        ) ) )) ) )) ) ) ) )r   r   c                   L    e Zd Zed             Zed             Zd Zd Zd ZdS )
TestCMTOLSc                 @   t           j                            d           d\  }}d}t           j                            ||          }d|d d df<   |                    d          }||t           j                            |          z  z   }t           j                            |d          }t          j        ||f          }|| _        || _        t          ||          	                                | _
        |                                  d| _        d| _        d| _        d S )	Ni0 )d         r      )g?g,gȌ?r,   )g(D7?g4v5?r,   )gP`?gaUA?g       @)r   randomseedrandnsumcolumn_stack	exog_fullexog_addr   fitres_olsattach_moment_conditionsr   r   r   )	clsnobsk_varssig_ex0y_trueyx1xs	            r   setup_classzTestCMTOLS.setup_class+   s     		vfY__T6**111Q3URY__T2222Y__T1%%ORH%%!Rjjnn&&$$&&& C?Dr   c                 x   | j         }| j        }| j        }|j        \  }}|j        d d d f         |z  }|                    d          }|j        |j                            |          z  }||j	        |z  z  }t          j                            |          }	d|	d d | d f<   d|	| d d d f<   |j        d         }
t          j        |
          | d          }|d d d | f         }|j                            |          }|| _        || _        || _        || _        || _        || _        |	| _        || _        d S )Nr   )r5   r2   r3   shaperesidr0   	mse_residTdotdf_residr   linalginveyer8   momsmoms_obscov_momscovm
moms_derivweightsL)r7   r5   r?   r>   r8   k_constraintsrL   rK   rM   rP   k_momsrQ   rO   rN   s                 r   r6   z#TestCMTOLS.attach_moment_conditionsE   sP    +M\ hm =D)A-||A%

2W%,, )--))&'M>??"#&'"#A F6NNM>??+aaa=.01
z~~h'' #r   c           	         | j         }| j        }| j        }| j        }| j        }| j        }| j        }| j        }| j        }	| j	        }
g }|t          |j        |
                                          j        z  }|                    d|f           |                    t           j                            ||                    }|                    d|f           t'          j        |t!          j        |j        d                   dd          t           j                            |          |          }|                    d|f           t1          |||d d d df         ||	          j        }|                    d|f           t5          |d d         |d dd df         |dd          |dd d df         |          j        }|                    d|f           |S )Nols R2zscore simpler   z	score mleNeweyTauchen)r5   r8   rK   rL   rM   rN   rO   rP   rQ   r2   r   rC   r4   rsquaredappendrF   r   rH   solvediao	lm_robustrJ   rB   rI   r   	chisquarer   )r   r5   r8   rK   rL   rM   rN   rO   rP   rQ   r?   res_allstattress                 r   r   zTestCMTOLS.res_scoreo   s   ,yy==y_
,FN c'-++//11::$'(((xx	$7788-...~dBF4:a=$9$9"##$> immH55xA AT*+++h3B3!DDN'''$ss)Xcrc3B3h%7bcc"2338,h8 88A 		4()))r   c           	      |   | j         }| j        }| j        }| j        }| j        }| j        }| j        }| j        }| j        }	t          |j
        j        |	                              d          }
g }t          j        |          }|t          ||                                          j        z  }|                    d|f           |
                    |d          }|                    d|f           t%          |||d d d df         ||          j        }|                    d|f           t)          |d d         |d dd df         |dd          |dd d df         |          j        }|                    d	|f           t+          j        |dd          d
||          }|                    d|f           t+          j        |t          j        |j        d                   dd          t          j                            |          |d           }|                    d|f           t+          j        |t          j        |j        d                   dd          t          j                            |          d t          j                            |                    }|                    d|f           |S )NHC0)cov_typerU   F)demeanz
comp_lm ucrV   rW   rX   r,   score subset QMLEr   
cov_paramsscoreB QMLEscoreV QMLE)r5   r8   rK   rL   rN   rO   rP   rQ   r2   r   modelendogr4   r   onesrY   rZ   compare_lm_testr   r^   r   r\   lm_robust_subsetr]   rJ   rB   rH   rI   )r   r5   r8   rK   rL   rN   rO   rP   rQ   r?   res_ols2_hc0r_   rm   r`   ra   s                  r   r    zTestCMTOLS.res_opg   s   ,yy=y_
,FN7=.22666FF wt}}c$))--//88$'(((++GE+BBd+,,,dD3B3K!<<F'''$ss)T#2#ss(^T"##YRSS#2#X    ) 		4()))$T"##Y4>>+T2333~dBF4:a=$9$9"##$> immD114DJ J Jt,---~dBF4:a=$9$9"##$> immD114)+t)<)<> > > 	t,---r   c           	         | j         }| j        }| j        }| j        }| j        }| j        }| j        }| j        }| j        }	|j	        j
        }
| j        }g }t          j        |j        |
|d          }|                    d|d d         f           t!          |||||	          j        }|                    d|f           t%          |d d         |d dd df         |dd          |dd d df         |          j        }|                    d|f           t          j        |dd          d||          }|                    d|f           t          j        |t+          j        |j        d	                   dd          t*          j                            |          |          }|                    d
|f           t*          j                            |          }|                    |                              |          }t          j        |t+          j        |j        d	                   dd          t*          j                            |          d |          }|                    d|f           t          j        |d d dd f         |dd d df         |d d d df         |d dd df                   }|j        |j        f}|                    d|f           | j        }|j                            |          }t          j        |d d dd f         |dd d df         |d d d df         |d dd df                   }|j        |j        f}|                    d|f           |d dd df         }|dd d df         }|dd dd f         }|dd d df         }|d dd df         }|dd          d||f t          j         |dd          d|||||          }|                    d|f           t+          j        |j        d         |j        d         dz
            }|}|}|}t          j!        ||||          }|                    d|f           |S )Nr+   )rC   resid_derivinstrumentsrP   
Wooldridger,   rW   rV   rX   rf   r   ri   rg   rj   cmtzscore subset_parts QMLEzscore reparam QMLE)"r5   r8   rK   rL   rM   rN   rO   rP   rQ   rk   exogr3   r\   cm_test_robustrC   rZ   r   r^   r   ro   r]   r   rJ   rB   rH   rI   rF   conditional_moment_test_genericstat_cmtpval_cmtr2   rE   lm_robust_subset_partslm_robust_reparameterized)r   r5   r8   rK   rL   rM   rN   rO   rP   rQ   r;   r>   r_   ra   Ainvvvtres_r?   hess_unscaledscore_deriv_uuscore_deriv_cucov_score_cccov_score_cucov_score_uuparams_derivscorescore_deriv	cov_scores                               r   r   zTestCMTOLS.res_hc0   s   ,yy==y_
,F]]"B/11> > > 	d2A2h/000dJ;;E'''$ss)Xcrc3B3h%7bcc"2338,d4 44= 		4()))$T"##Y8TBB+T2333~dBF4:a=$9$9"##$> immH55t= =t,--- y}}X&&XXd^^%%~dBF4:a=$9$9"##$> immH55t)+- - - 	t,---3HQQQV4D4<RSS#2#X4F4<QQQssUO4<SbS#2#X4FH H .u~&&& N

3HQQQV4D!"##ss(+Xaaae_!#2#ss(+- - .u~&&&!#2#ss(+!"##ss(+BCCH~BCC"H~CRC"H~RSS	1h$$*49a%3\%1<A A 	148999vagaj!'!*q.99	-e\&	3 3 	,d3444r   N)	r"   r#   r$   classmethodr@   r6   r   r    r   r%   r   r   r'   r'   )   s        E E [E2 ' ' ['R     D* * *XR R R R Rr   r'   )__doc__numpyr   numpy.testingr   #statsmodels.regression.linear_modelr   #statsmodels.stats._diagnostic_otherr   r   stats_diagnostic_otherr\   r   r'   r%   r   r   <module>r      s         ) ) ) ) ) ) 3 3 3 3 3 3 D D D D D D D D 2 2 2 2 2 2 2 2 2) ) ) ) ) ) ) ).f f f f f f f f f fr   