Hallo,
Ich habe ein Problem mit der Berechnung des Standardfehlers der Parameterschätzungen mithilfe von minim () mit dem optionalen Parameter << showdetails, der einige zusätzliche Werte einschließlich der Hessischen Matrix zurückgibt.
Mein (ziemlich grundlegendes) Verständnis des Hessischen ist, dass die diagonalen Elemente eine gute Annäherung an die Umkehrung der Varianzen sein sollten. Ich erhalte jedoch keine gute Übereinstimmung zwischen den so extrahierten Werten und denen, die ich aus der einfachen linearen 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 davon ist unten gezeigt
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;
Die Parameterschätzungen stimmen zwar perfekt überein, die Fehler jedoch nicht.
also die frage: Wie berechnet man den Parameter std error (oder die Standardabweichung) aus dem Hessischen, der von der Minimize () - Funktion zurückgegeben wird?
Vielen Dank für jede Hilfe
Ein Kollege half mir herauszufinden, was los 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 />);
Dies ergibt den gleichen Standardfehler wie die lineare Regression.