# Re: [R] D(dnorm...)?

From: <Bill.Venables_at_csiro.au>
Date: Thu 26 Jan 2006 - 14:39:12 EST

As Brian Ripley pointed out 'dnorm' is in the derivative table, *but* only as a function of one variable. So if you want to find the derivative of

dnorm(x, mean, sigma)

you have to write it as 1/sigma * dnorm((x - mu)/sigma). Here is a little example:

> D(Quote(pnorm((x-mu)/sigma)), "x")

dnorm((x - mu)/sigma) * (1/sigma)

> D(D(Quote(pnorm((x-mu)/sigma)), "x"), "mu")
(x - mu)/sigma * (dnorm((x - mu)/sigma) * (1/sigma)) * (1/sigma)

```---

Like Brian, I recall the suggestion that we make D(...) extensible.  I
still think it is a good idea and worth considering.  Under one scheme
you would specify an object such as

Fnorm <- structure(quote(pnorm(x, mu, sigma)),
deriv =
list(x = Quote(dnorm(x, mu, sigma)/sigms),
mu = Quote(-dnorm(x, mu, sigma)/sigma),
sigma = Quote(-(x - mu)*dnorm(x, mu, sigma)/sigma^2),
class = "dfunction")

ane write a generic "differentiate" function with a "dfunction" method
and "D" as the default.

I don't think it's quite that easy, but the plan is clear enough.

Bill.

-----Original Message-----
From: r-help-bounces@stat.math.ethz.ch
[mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Berton Gunter
Sent: Thursday, 26 January 2006 8:58 AM
To: 'Spencer Graves'; r-help@stat.math.ethz.ch
Subject: Re: [R] D(dnorm...)?

dnorm() is an internal function, so I don't see how D (or deriv) can do
anything with it symbolically. Am I missing something?

-- Bert

> -----Original Message-----

> From: r-help-bounces@stat.math.ethz.ch
> [mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Spencer Graves
> Sent: Wednesday, January 25, 2006 2:43 PM
> To: r-help@stat.math.ethz.ch
> Subject: [R] D(dnorm...)?
>
> 	  Can someone help me understand the following:
>
>  > D(expression(dnorm(x, mean)), "mean")
> [1] 0
>  > sessionInfo()
>
> R version 2.2.1, 2005-12-20, i386-pc-mingw32
>
> attached base packages:
> [1] "methods"   "stats"     "graphics"  "grDevices" "utils"
>   "datasets"
> [7] "base"
>
> 	  By my computations, this should be something like
> ((mean-x)/sd^2)*dnorm(...).
>
> 	  Spencer Graves
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> http://www.R-project.org/posting-guide.html
>

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help