如何计算逻辑函数的符号导数?

How to compute symbolic derivative of logit function?

我试图在 R 中计算 logit 函数的符号导数,但出现错误。当我 运行:

deriv(exp(-9.3 + 0.0146*x)/(1 + exp(-9.3 + 0.0146*x)), x)

我得到:

Error in deriv.default(exp(-9.3 + 0.0146 * x)/(1 + exp(-9.3 + 0.0146 * : invalid variable names

当我尝试将函数设置为 logit1(x) 和 运行 时: deriv(logit1(x),x) 我同样得到:

Error in deriv.default(logit1(x), x) : invalid variable names

符合预期。

有什么建议吗?

deriv(expr,var) 中,expr 需要是 expression 并且 var 需要是 character:

  v <- expression(exp(-9.3 + 0.0146*x)/(1 + exp(-9.3 + 0.0146*x)))
  deriv(v,"x")

您不一定要进行任何预简化,但如果您这样做,请注意 1/(1+exp(9.3-0.0146*x)) 是等效的,并且会给您一个稍微简单的答案。

deriv 的第一个参数必须是带引号的表达式,第二个参数是给出变量名称的字符串。

deriv(quote(exp(-9.3 + 0.0146*x)/(1 + exp(-9.3 + 0.0146*x))), "x")
#expression({
#    .expr4 <- exp(-9.3 + 0.0146 * x)
#    .expr5 <- 1 + .expr4
#    .expr7 <- .expr4 * 0.0146
#    .value <- .expr4/.expr5
#    .grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
#    .grad[, "x"] <- .expr7/.expr5 - .expr4 * .expr7/.expr5^2
#    attr(.value, "gradient") <- .grad
#    .value