
    !gV#                     t    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y)
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y)CheckCMTc           	          | j                   }| j                         D ]*  \  }}t        ||d t        j                  |       d|       , y NgvIh%<=)rtolerr_msg)results_score	res_scorer   npsizeselfexpectedmsgactuals       j/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/stats/tests/test_diagnostic_other.py
test_scorezCheckCMT.test_score   sJ    %%>>+ 	)KC FH-=bggfo$>U$')	)    c           	          | j                   }| j                         D ]*  \  }}t        ||d t        j                  |       d|       , y r
   )results_hc0res_hc0r   r   r   r   s       r   test_scorehc0zCheckCMT.test_scorehc0   G    ##<<> 	)KCFH-=bggfo$>U$')	)r   c           	          | j                   }| j                         D ]*  \  }}t        ||d t        j                  |       d|       , y 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      s    )))r   r   c                   >    e Zd Zed        Zed        Zd Zd Zd Zy)
TestCMTOLSc                     t         j                  j                  d       d\  }}d}t         j                  j                  ||      }d|d d df<   |j	                  d      }||t         j                  j                  |      z  z   }t         j                  j                  |d      }t        j
                  ||f      }|| _        || _        t        ||      j                         | _
        | j                          d| _        d| _        d| _        y )	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YY__T6*1Q3URYY__T222YY__T1%OORH%!Rjnn&$$& C?Dr   c                    | j                   }| j                  }| j                  }|j                  \  }}|j                  d d d f   |z  }|j                  d      }|j                  |j                  j                  |      z  }||j                  |z  z  }t        j                  j                  |      }	d|	d d | d f<   d|	| d d d f<   |j                  d   }
t        j                  |
      | d  }|d d d | f   }|j                  j                  |      }|| _        || _        || _        || _        || _        || _        |	| _        || _        y )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   sD    ++MM\\ hhm ==D)A-||A%%
2W%%,, ))--)&'M>?"#&'"#A FF6NM>?+a=.01
zz~~h' #r   c           	         | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	| j                  }
g }|t        |j                  |
      j                         j                  z  }|j                  d|f       |j                  t         j"                  j%                  ||            }|j                  d|f       t'        j(                  |t!        j*                  |j,                  d         dd  t         j"                  j/                  |      |      }|j                  d|f       t1        |||d d d df   ||	      j2                  }|j                  d|f       t5        |d d |d dd df   |dd  |dd d df   |      j2                  }|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   ,,yyyy====yy__
,,FFNN c'--+//1:::$'(xx		$78-.~~dBFF4::a=$9"#$> iimmH5xAT*+h3B3!DNN'$s)Xcrc3B3h%7bc"238,h88A	 		4()r   c           	      h   | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	t        |j                  j                  |	      j                  d      }
g }t        j                  |      }|t        ||      j                         j                  z  }|j!                  d|f       |
j#                  |d      }|j!                  d|f       t%        |||d d d df   ||      j&                  }|j!                  d|f       t)        |d d |d dd df   |dd  |dd d df   |      j&                  }|j!                  d	|f       t+        j,                  |dd  d
||      }|j!                  d|f       t+        j.                  |t        j0                  |j2                  d         dd  t        j4                  j7                  |      |d       }|j!                  d|f       t+        j.                  |t        j0                  |j2                  d         dd  t        j4                  j7                  |      d t        j4                  j7                  |            }|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   sP   ,,yyyy==yy__
,,FFNN7==..2666F wwt}c$)--/888$'(++GE+Bd+,dD3B3K!<FF'$s)T#2#ss(^T"#YRS#2#X  )	 		4()$$T"#Y4>+T23~~dBFF4::a=$9"#$> iimmD14DJt,-~~dBFF4::a=$9"#$> iimmD14)+t)<> 	t,-r   c           	         | j                   }| j                  }| j                  }| j                  }| j                  }| j
                  }| j                  }| j                  }| j                  }	|j                  j                  }
| j                  }g }t        j                  |j                  |
|d      }|j                  d|d d f       t!        |||||	      j"                  }|j                  d|f       t%        |d d |d dd df   |dd  |dd d df   |      j"                  }|j                  d|f       t        j&                  |dd  d||      }|j                  d|f       t        j(                  |t+        j,                  |j.                  d	         dd  t*        j0                  j3                  |      |      }|j                  d
|f       t*        j0                  j3                  |      }|j5                  |      j5                  |      }t        j(                  |t+        j,                  |j.                  d	         dd  t*        j0                  j3                  |      d |      }|j                  d|f       t        j6                  |d d dd f   |dd d df   |d d d df   |d dd df         }|j8                  |j:                  f}|j                  d|f       | j<                  }|j>                  j5                  |      }t        j6                  |d d dd f   |dd d df   |d d d df   |d dd df         }|j8                  |j:                  f}|j                  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|||||      }|j                  d|f       t+        j,                  |j.                  d   |j.                  d   dz
        }|}|}|}t        jB                  ||||      }|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>   ,,yyyy====yy__
,,FF]]]]""B/11> 	d2Ah/0dJ;EE'$s)Xcrc3B3h%7bc"238,d44=I 		4()$$T"#Y8TB+T23~~dBFF4::a=$9"#$> iimmH5t=t,- yy}}X&XXd^%~~dBFF4::a=$9"#$> iimmH5t)+- 	t,-33HQV4D4<RS#2#X4F4<QssUO4<SbS#2#X4FH .u~& NN
33HQV4D!"#ss(+Xae_!#2#ss(+- .u~&!#2#ss(+!"#ss(+BCH~BC"H~CRC"H~RS	1h$**49a%3\%1<A 	1489vvaggaj!''!*q.9	--e\&	3 	,d34r   N)	r"   r#   r$   classmethodr@   r6   r   r    r   r%   r   r   r'   r'   )   s=    E E2 ' 'R D*X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      s6     ) 3 D 2 2) ).f fr   