2016-11-30 3 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

Смежные вопросы