Partially differentiate a function in R using the 'Deriv' package
I need to write a function in R which depends on a vector x (which changes with every simulation) and has parameters beta_0, beta_1, beta_2. I'm trying to find the partial derivative of this function with respect to beta_0, beta_1 and beta_2. I have written a code for the same but its repeatedly returning errors.
My R code is as follows:
func_1 <- function(x,beta_0,beta_1,beta_2){
k <- beta_0+(x[1]*beta_1)+(x[2]*beta_2)
k <- exp(k)/(1+exp(k))
}
Deriv(func_1(x=c(2,3)), 'beta_0')
The following error is being returned:
Error in func_1(x = c(2, 3)) :
argument "beta_0" is missing, with no default
In addition: Warning message:
In Deriv(func_1(x = c(2, 3)), "beta_0") :
restarting interrupted promise evaluation
Solution 1:
If you want the partial derivative with respect to beta_0
you still need to specify values for all of the parameters. You also need to pass Deriv
a function (or an expression); in your example you're trying to evaluate the function at x=c(2,3)
(without specifying values of the other arguments/parameters). In other words, if you have a function foo
you need to pass foo
, not foo([something])
. So for example:
library(Deriv)
dd <- Deriv(func_1, "beta_0")
dd(x=c(2,3), beta_0 = 1, beta_1 = 1, beta_2 =1)
## beta_0
## 0.002466509
Here dd
is the partial derivative with respect to beta_0
, which is a function that can be evaluated at any numerical values you like. (if you need a symbolic partial derivative - i.e.. the value for arbitrary values of beta_0
, beta_1
, beta_2
- I'm not sure that Deriv
will do that ...)