Hola,
Tengo un problema al calcular el error estándar de las estimaciones de los parámetros usando minimizar () con el parámetro opcional << showdetails, que devuelve algunos valores adicionales, incluida la Matriz de Hesse.
Mi comprensión (bastante básica) del hessiano es que los elementos diagonales deben ser una buena aproximación de la inversa de las varianzas. Sin embargo, no obtengo una buena concordancia entre los valores así extraídos y los que obtengo de la regresión lineal simple.
Para ilustrar aquí hay un ejemplo:
x = [1.309, 1.471, 1.49, 1.565, 1.611, 1.68];
y = [2.138, 3.421, 3.597, 4.34, 4.882, 5.66];
b1 = 1; /*starting value for b1 */
b2 = 5; /*starting value for b2 */
sseExpr = Expr(
Summation( i = 1, 6, (y[i] - (b1 +b2*x[i] )) ^ 2 )
);
//Use Minimize
{objVal, iters, gradient, hessian} = Minimize( sseExpr, {b1, b2} ,<<SHOWDETAILS></SHOWDETAILS><BR />El resultado de esto se muestra a continuación
nParm=2 Newton ******************************************************
Iter nFree Objective RelGrad NormGrad2 Ridge nObj nGrad nHess Parm0 Parm1
0 2 128.6484 20788.83 4982.355 0 1 1 1 1 5
1 2 0.074605 7.56e-25 1.88e-25 0 1 1 1 -10.427 9.489346
Convergence SUCCESS: Gradient
Time: 0.0166666667209938
********************************************************************
************ Parameter Estimates **************************
********************************************************************
Term Estimates Std Error t Ratio Prob>|t|
********************************************************************
Intercept -10.42696 0.72006 -14.48064 0.00013
b1 9.48935 0.47199 20.10486 0.00004
********************************************************************
RSquare:0.990201015051942
RSquare Adj:0.987751268814928
"Parameter b1=";
Estimates[1] = -10.4269614637334;
b1 = -10.4269614637335;
"Parameter b2";
Estimates[2] = 9.48934569169413;
b2 = 9.48934569169416;
"Std_error in b1";
std_error[1] = 0.720062429496937;
min_stderror[1,1] = 1.5220348519284;
"Std_error in b2";
std_error[2] = 0.471992539497802;
min_stderror[2,2] = 0.997676125760012;
Si bien las estimaciones de los parámetros concuerdan perfectamente, los errores no.
de ahí la pregunta: ¿Cómo calcular el error estándar del parámetro (o desviación estándar) del hessiano devuelto por la función Minimize ()?
Gracias por cualquier ayuda
Un colega me ayudó a descubrir qué estaba mal.
El cálculo del error estándar es incorrecto. Debería ser:
{objVal, iters, gradient, hessian} = Minimize( sseExpr, {b1, b2} ,<<SHOWDETAILS></SHOWDETAILS>if(!isempty(objVal),<BR />y_est=b1+b2*x;<BR />stderror=sqrt(sum((y-y_est)^2)*inverse(hessian/2)/(nrows(x)-nrows(Estimates)));<BR />);
lo que da el mismo error estándar que la regresión lineal.