如何计算逻辑函数的符号导数?
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
我试图在 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