使用 'Deriv' 包部分微分 R 中的函数

Partially differentiate a function in R using the 'Deriv' package

我需要在 R 中编写一个函数,它依赖于向量 x(随每次模拟而变化)并具有参数 beta_0、beta_1、beta_2。我试图找到此函数关于 beta_0、beta_1 和 beta_2 的偏导数。 我写了一个相同的代码,但它反复返回错误。

我的R代码如下:

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') 

返回以下错误:

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 

如果您想要关于 beta_0 的偏导数,您仍然需要为所有参数指定值。您还需要传递 Deriv 一个 函数 (或一个表达式);在您的示例中,您正在尝试 评估 x=c(2,3) 处的函数(未指定其他 arguments/parameters 的值)。换句话说,如果你有一个函数foo,你需要传递foo,而不是foo([something])。例如:

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 

这里的dd是对beta_0的偏导数,是一个函数,可以用你喜欢的任何数值求值。 (如果您需要 符号 偏导数 - 即 beta_0beta_1beta_2 的任意值的值 - 我不确定Deriv 会那样做...)