I added "plogis" to the derivative table in the
development version of R; the patch against yesterday's
R-devel src/deriv/main.c is available at
http://www.zoology.ufl.edu/bolker/deriv_patch.txt .

  I pretty much followed the framework of the other symbols;
here was my incantation

-       } else if (CAR(expr) == PlogisSymbol) {
-           ans = simplify(TimesSymbol,
-                          PP_S(TimesSymbol,
-                               PP_S2(ExpSymbol,
-                                  PP_S2(MinusSymbol,CADR(expr))),
-                               PP_S(PowerSymbol,
-                                    PP_S(PlusSymbol,
-                                         Constant(1.),
-                                         PP_S2(ExpSymbol,
-                                            PP_S2(MinusSymbol,CADR(expr)))),
-                                    Constant(-2.))),
-                          PP(D(CADR(expr),var)));
-           UNPROTECT(8);

It seems to work:

> D(quote(plogis(a)),"a")
exp(-a) * (1 + exp(-a))^-2
> D(quote(plogis(a+b*x)),"x")
exp(-(a + b * x)) * (1 + exp(-(a + b * x)))^-2 * b

  Any thoughts?  I'm sure there's a cleverer way to do this ...

  Ben Bolker

  PS I get a minor build error at the end of the compilation
(on Ubuntu 8.10):

make[2]: *** No rule to make target `VR.ts', needed by
`stamp-recommended'.  Stop.
make[2]: Leaving directory
`/usr/local/src/R/R-devel/src/library/Recommended'
make[1]: *** [recommended-packages] Error 2
make[1]: Leaving directory
`/usr/local/src/R/R-devel/src/library/Recommended'
make: *** [stamp-recommended] Error 2

  ... don't know if that is important or not.


Attachment: signature.asc
Description: OpenPGP digital signature

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to