Hallo,
Ich habe ein Problem bei der Berechnung des Standardfehlers der Parameterschätzungen mit minimize() mit dem optionalen Parameter <
Mein (ziemlich grundlegendes) Verständnis der Hesse-Matrix ist, dass die Diagonalelemente eine gute Annäherung an die Inverse der Varianzen sein sollten. Allerdings erreiche ich keine gute Übereinstimmung zwischen den so extrahierten Werten und denen, die ich durch einfache lineare Regression erhalte.
Zur Veranschaulichung hier ein Beispiel:
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 />Das Ergebnis wird unten angezeigt
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;
Während die Parameterschätzungen vollkommen übereinstimmen, trifft dies bei den Fehlern nicht zu.
daher die Frage: Wie berechnet man den Parameter Standardfehler (oder Standardabweichung) aus der Hesse-Matrix, die von der Funktion Minimize() zurückgegeben wird?
Vielen Dank für jede Hilfe
Ein Kollege half mir herauszufinden, was falsch war.
Die Berechnung des Standardfehlers ist falsch. Es sollte sein:
{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 />);
was den gleichen Standardfehler wie die lineare Regression ergibt.