如何评价符号导数作为R中的函数?

时间:2016-11-30 17:26:44

标签: r logistic-regression

我可以使用以下语句计算log中函数的R中的符号导数:

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

但是,当我尝试在函数中返回表达式时,例如:

DerivLogit <- function(x){
    deriv(expression(exp(-9.3 + 0.0146*x)/(1 + exp(-9.3 + 0.0146*x))),"x")
}

评估DerivLogit(x)当然不会将参数x替换为表达式中的变量x。因此,例如,DerivLogit(1)等于DerivLogit(2),两者都只返回表达式而没有任何参数替换。

有没有办法将派生表达式转换为一个函数,我可以评估参数(例如x)将替换的位置,以便我可以看到给定x值的数值结果? 如果是这样,我怎么在R?

1 个答案:

答案 0 :(得分:1)

您可以使用eval来评估表达式

DerivLogit <- function(x){
  eval(deriv(expression(exp(-9.3 + 0.0146*x)/(1 + exp(-9.3 + 0.0146*x))),"x"))
}