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

From: <Bill.Venables_at_csiro.au>
Date: Thu 26 Jan 2006 - 16:03:44 EST


Hi Spencer,

I think if you have a problem that needs a lot of symbolic manipulation you are probably better off driving it directly from something like Maple or Mathematica (I prefer maple, actually) than trying to drive it from R. It just gets too clumsy. On the other hand it is very handy having a simple differentiator available in R, like D(...) for small jobs that are not worth taking to a big system like Maple. The point I was trying to make in the previous message was that with a little thought it could be made a lot more convenient.

This arose in connexion with a real problem. We needed to differentiate a pdf that had the normal density function in it, but was otherwise quite simple and we had to hack the code in another system (not unlike R, as it happens) to handle it. The hack was quite small and it became clear that with a slight change of design users would not need to do hacks like this for simple extensions such as the one we needed. As it was a hack, we only put it in for the standard density and I suspect that is the reason why even now the derivative tables in both R and the other system (not unlike R) only handle normal density and distribution funcitons in one variable.

I'm sort of avoiding your question, because I don't know how hard it would be to link R with Yacas, either, but if you really wanted to go that way I see that Yacas can be driven over the net via a Java applet. Something like this might provide the simplest link, if not the most efficient. But note that Yacas uses the eccentric Mathematica notation, where the functions are Capitalised, for example, as nouns are in German. That's a small bother you could do without, too.

Regards,
Bill Venables.

-----Original Message-----
From: Spencer Graves [mailto:spencer.graves@pdf.com] Sent: Thursday, 26 January 2006 2:14 PM
To: Venables, Bill (CMIS, Cleveland)
Cc: gunter.berton@gene.com; r-help@stat.math.ethz.ch; ripley@stats.ox.ac.uk
Subject: Re: [R] D(dnorm...)?

Hello, Bill:

          I'm not qualified to make this suggestion since I'm incapable of
turning it into reality, but what about creating a link between R and one of the Mathematica clones like Yacas? I can immagine that it could be substantially more difficult than linking R to other software like Excel, but ... .

          Spencer Graves

Bill.Venables@csiro.au wrote:
> Yes Bert, this time you are missing something (unusually) ...
>
> 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(...).
>>
>>	  Thanks for your help.
>>	  Spencer Graves
>>
>>______________________________________________
>>R-help@stat.math.ethz.ch mailing list
>>https://stat.ethz.ch/mailman/listinfo/r-help
>>PLEASE do read the posting guide! 
>>http://www.R-project.org/posting-guide.html
>>

>
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html


R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Jan 26 16:14:05 2006

This archive was generated by hypermail 2.1.8 : Thu 26 Jan 2006 - 20:58:33 EST