SEfromHessian: Standard error of parameters based on Hessian matrix

View source: R/SEfromHessian.R

SEfromHessianR Documentation

Standard error of parameters based on Hessian matrix

Description

Standard error of parameters based on Hessian matrix.
The strategy is as follow:
First it tries to inverse the Hessian matrix. If it fails, it uses the near positive definite matrix of the Hessian.
So now the inverse of the Hessian matrix can be computed.
The diagonal of the inverse of the Hessian matrix is calculated. If all values are positive, the SEs are the square root of the inverse of the Hessian.
If not all values are positive, it will estimate the pseudo-variance matrix based on Gill & King (2004). It necessitates a Cholesky matrix.
If from some reason it fails (for example all SE are 0 in output), then the strategy of Rebonato and Jackel (2000) will be used to generate the Cholesky matrix.

Usage

SEfromHessian(a, hessian = FALSE, silent = FALSE)

Arguments

a

An Hessian matrix

hessian

If TRUE, return a list with the hessian and SE

silent

If TRUE, report some problems

Details

SEfromHessian returns standard error of parameters based on Hessian matrix

Value

SEfromHessian returns a vector with standard errors

Author(s)

Marc Girondot marc.girondot@gmail.com

References

Gill J. and G. King 2004. What to do when your Hessian is not invertible: Alternatives to model respecification in nonlinear estimation. Sociological Methods & Research 33: 54-87.

Rebonato and Jackel, “The most general methodology for creating a valid correlation matrix for risk management and option pricing purposes”, Journal of Risk, Vol 2, No 2, 2000.

Examples

## Not run: 
val=rnorm(100, mean=20, sd=5)
# Return -ln L of values in val in Gaussian distribution with mean and sd in par
fitnorm<-function(par, val) {
  -sum(dnorm(val, par["mean"], par["sd"], log = TRUE))
}
# Initial values for search
p<-c(mean=20, sd=5)
# fit the model
result <- optim(par=p, fn=fitnorm, val=val, method="BFGS", hessian=TRUE)
SE <- SEfromHessian(result$hessian)
library(MASS)
fitdistr(val, densfun = "normal")

## End(Not run)

HelpersMG documentation built on Oct. 5, 2023, 5:08 p.m.