여보세요,
Hessian Matrix를 포함하여 몇 가지 추가 값을 반환하는 선택적 매개 변수 << showdetails와 함께 minimal ()을 사용하여 매개 변수 추정값의 표준 오류를 계산하는 데 문제가 있습니다.
Hessian에 대한 나의 (보다 기본적인) 이해는 대각선 요소가 분산의 역의 좋은 근사치 여야한다는 것입니다. 그러나 이렇게 추출 된 값과 단순한 선형 회귀에서 얻은 값 사이에 좋은 일치를 얻지 못합니다.
예를 들면 다음과 같습니다.
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 />그 결과는 아래와 같습니다.
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;
모수 추정치는 완벽하게 일치하지만 오류는 그렇지 않습니다.
따라서 질문 : Minimize () 함수에 의해 반환 된 Hessian에서 매개 변수 표준 오차 (또는 표준 편차)를 계산하는 방법은 무엇입니까?
도움을 주셔서 감사합니다
동료가 무엇이 잘못되었는지 알아내는 데 도움을주었습니다.
표준 오차 계산이 잘못되었습니다. 그것은해야한다:
{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 />);
선형 회귀와 동일한 표준 오류를 제공합니다.