How to compute the hessian matrix, when I'm using a Nelder-Mead maximum optimization of a function

Hi,
I'm performing a nelder-mead optimization of a function (f), and I want to calculate the coefficient of variance matrix (COVmatrix). To do this I want to use the inverse Hessian matrix or inverse fisher information matrix. Is there an command in matlab that finds this??
Thanks!
My script:
clc;clear all; close all;
T = [1651 1640 1670 1670 1658 1668 1647 1661]; % Test data
f = @(x) -(sum(log10(wblpdf(T,x(1),x(2))))); % Function
[x,fval] = fminsearch(f,[1600, 100]) % Finds maximum values of x(1) and x(2)

Answers (1)

I am not aware of anything in base MATLAB, but there is at least one Hessian calculator on the File Exchange.
Alan Weiss
MATLAB mathematical toolbox documentation

4 Comments

Ok. Is it possible to use the fisher information matrix instead?
For anyone else still curious about this, the paper by Nelder and Mead provides a method to estimate the information matrix in the appendix. Basically, you produce intermidiate points between all the points in your simplex so you get (N+1)(N+2)/2 total points. Then transform those points into a new coordinate system where the minimum of the simplex is the origin and each point in the original simplex represents the new axes. Fitting a quadratic to that surface provides you with your information matrix in that coordinate system. You then need to transform it back into your original coordinate system.
I've created an appended version of fminsearch that contains the code to do this if it's of any interest.
Hi Dean, I'm interested in this code. I would be very grateful!
Same here! Could you perhaps share it or post it somewhere? Thank you...

Sign in to comment.

Asked:

on 15 Apr 2015

Commented:

on 7 Feb 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!