I have never found the R symbolic differentiation helpful because my functions are typically quite complicated, but was prompted by Steve Ellison's suggestion to try it out in this case:

################# reprex (see reprex package)
graphdta <- read.csv( text =
"t,c
0,100
40,78
80,59
120,38
160,25
200,21
240,16
280,12
320,10
360,9
400,7
", header = TRUE )

nd <- c( 100, 250, 300 )
graphmodeld <- lm( log(c) ~ t, data = graphdta )
graphmodelplin <- predict( graphmodeld
                         , newdata = data.frame( t = nd )
                         )
graphmodelp <- exp(graphmodelplin)
graphmodelp
#>        1        2        3
#> 46.13085 16.58317 11.79125
# derivative of exp( a + b*t ) is b * exp( a + b*t )
graphmodeldpdt <- coef( graphmodeld )[ 2 ] * graphmodelp
graphmodeldpdt
#>           1           2           3
#> -0.31464113 -0.11310757 -0.08042364

# Ellison suggestion - fancy, only works for simple functions
dc <- deriv( expression( exp( a + b * t ) )
           , namevec = "t"
           )
dcf <- function( t ) {
  cgm <- coef( graphmodeld )
  a <- cgm[ 1 ]
  b <- cgm[ 2 ]
  eval(dc)
}
result <- dcf( nd )
result
#> [1] 46.13085 16.58317 11.79125
#> attr(,"gradient")
#>                t
#> [1,] -0.31464113
#> [2,] -0.11310757
#> [3,] -0.08042364
attr( result, "gradient" )[ , 1 ]
#> [1] -0.31464113 -0.11310757 -0.08042364
#################

On Fri, 6 Apr 2018, David Winsemius wrote:


On Apr 6, 2018, at 8:03 AM, David Winsemius <dwinsem...@comcast.net> wrote:


On Apr 6, 2018, at 3:43 AM, g l <gnuli...@gmx.com> wrote:

Sent: Friday, April 06, 2018 at 5:55 AM
From: "David Winsemius" <dwinsem...@comcast.net>


Not correct. You already have `predict`. It is capale of using the `newdata` 
values to do interpolation with the values of the coefficients in the model. 
See:

?predict


The ? details did not mention interpolation explicity; thanks.

The original question asked for a derivative (i.e. a "gradient"), but so far 
it's not clear that you understand the mathematical definiton of that term. We also 
remain unclear whether this is homework.


The motivation of this post was simple differentiation of a tangent point (dy/dx) manually, then 
wondering how to re-think in modern-day computing terms. Hence the original question about asking 
the appropriate functions/syntax to read further ("curiosity"), not the answer (indeed, 
"homework"). :)

Personal curiosity should be considered "homework".

Besides symbolic differentiation, there is also the option of numeric 
differentiation. Here's an amateurish attempt:

myNumDeriv <- function(x){ (exp( predict (graphmodeld, 
newdata=data.frame(t=x+.0001))) -
                                           exp( predict (graphmodeld, 
newdata=data.frame(t=x) )))/
                                         .0001 }
myNumDeriv(c(100, 250, 350))

I realized that this would not work in the context of your construction. I had 
earlier made a more symbolic version using R formulae:

graphdata<-read.csv(text='t,c
0,100
40,78
80,59
120,38
160,25
200,21
240,16
280,12
320,10
360,9
400,7')
graphmodeld<-lm(log(c)~t, graphdata)
graphmodelp<-exp(predict(graphmodeld))
plot(c~t, graphdata)
lines(graphdata[,1],graphmodelp)
myNumDeriv(c(100, 250, 350), graphmodeld )
#----------------------------------------------
         1           2           3
-0.31464102 -0.11310753 -0.05718414





David Winsemius
Alameda, CA, USA

'Any technology distinguishable from magic is insufficiently advanced.'   
-Gehm's Corollary to Clarke's Third Law

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

David Winsemius
Alameda, CA, USA

'Any technology distinguishable from magic is insufficiently advanced.'   
-Gehm's Corollary to Clarke's Third Law

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to