我试图在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):无效变量名
如预期的那样。
有什么建议吗?
发布于 2016-11-30 00:28:45
第一个参数必须是带引号的表达式,第二个参数是一个字符串,给出变量的名称。
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发布于 2016-11-30 00:28:33
在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))将是等价的,并会给您一个稍微简单的答案。
https://stackoverflow.com/questions/40878186
复制相似问题