[R] The gradient of a multivariate normal density with respect toits parameters
Ravi Varadhan
RVaradhan at jhmi.edu
Mon Jun 22 18:50:46 CEST 2009
Karl,
You may want to look at the paper by Dwyer on "Some applications of matrix
derivatives in multivariate analysis" (JASA 1967), especially the Table 2 on
p. 617.
Ravi.
----------------------------------------------------------------------------
-------
Ravi Varadhan, Ph.D.
Assistant Professor, The Center on Aging and Health
Division of Geriatric Medicine and Gerontology
Johns Hopkins University
Ph: (410) 502-2619
Fax: (410) 614-9625
Email: rvaradhan at jhmi.edu
Webpage:
http://www.jhsph.edu/agingandhealth/People/Faculty_personal_pages/Varadhan.h
tml
----------------------------------------------------------------------------
--------
-----Original Message-----
From: Karl Ove Hufthammer [mailto:Karl.Hufthammer at math.uib.no]
Sent: Monday, June 22, 2009 12:12 PM
To: r-help at stat.math.ethz.ch
Cc: Ravi Varadhan
Subject: Re: [R] The gradient of a multivariate normal density with respect
toits parameters
Ravi Varadhan skreiv:
> I am not aware of any. May I ask what your purpose is? You don't
> really need this if you are going to use it in optimization, since
> most optimizers use a simple finite-difference approximation if you
> don't provide the gradient. Using the numerical approximation from
> "numDeriv" will be quite time-consuming in an optimization routine,
> since numDeriv uses a high-order Richardosn extrapolation to compute
> an accurate approximation of the gradient.
>
No, I don't use it in an optimisation. The expression is part of a more
complicated formula used for calculating some estimates in a special
nonparametric model.
I won't use the numerical approximation; the alternative would be to
calculate the analytical expressions myself. It's not too difficult, but
tedious, and the expressions I end up with may not be the fastest or most
numerically accurate, so if there was a package implementing them in a good
way, it would be nice. :)
> Regardless of your purpose, there is a small bug in your function. You
> should change `dmvnorm(cbind(x,y),mu,sig)' to
> `dmvnorm(cbind(xx,yy),mu,sig)'.
Yes, of course. I originally used x and y when creating the example, but
then discovered that the jacobian() function already used x as an argument
for something else, so I renamed them to xx and yy (though obviously not
everywhere!). I really should have tested it in a completely clean
environment before posting.
--
Karl Ove Hufthammer
More information about the R-help
mailing list