2016-11-30 35 views
2

我試圖計算logit函數的R中的符號導數,但我收到錯誤。當我運行:如何計算logit函數的符號導數?

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

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 
1

deriv(expr,var)expr需要是expressionvar需要是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))會相當於,會給你一個更簡單的答案。

+0

downvote的任何特定原因? –