我正在尝试在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)出错:无效的变量名称
正如所料。
有什么建议吗?
答案 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))
是等效的,会给您一个稍微简单的回答。