2016-11-30 35 views
0

我能計算R中一個象徵性的衍生與此語句分對數函數:如何評估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

您可以使用eval評估表達

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

我想這是一些簡單的類似。謝謝! – devinbost