如何计算logit函数的符号导数?

时间:2016-11-30 00:20:33

标签: r logistic-regression derivative

我正在尝试在logit函数的R中计算符号导数,但是我遇到了错误。我跑的时候:

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

我明白了:

  

deriv.default中的错误(exp(-9.3 + 0.0146 * x)/(1 + exp(-9.3 + 0.0146 *:     无效的变量名称

当我尝试将我的功能设置为logit1(x)并运行时: deriv(logit1(x),x) 我同样得到了:

  

deriv.default(logit1(x),x)出错:无效的变量名称

正如所料。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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))是等效的,会给您一个稍微简单的回答。