Я пытаюсь вычислить производные гауссиана в R, и когда я пытаюсь указать среднее и стандартное отклонение, R, кажется, игнорирует это. Например, следующий код работает для построения плотности N (0,1) и ее первой и второй производных.
st_norm <- function(x) dnorm(x,0,1)
first_deriv <- function(x) {}
second_deriv <- function(x) {}
body(first_deriv) <- D(body(st_norm), 'x')
body(second_deriv) <- D(body(first_deriv), 'x')
curve(st_norm, -4, 4, ylim = c(-0.4, 0.4), col = 'blue')
curve(first_deriv, -4, 4, add = T, col = 'red')
curve(second_deriv, -4, 4, add = T, col = 'green')
abline(v=0, h=0)
и получается следующий сюжет:
Но, предположим, я хотел сделать то же самое, но с N (2,2), тогда я изменил код соответствующим образом:
different_norm <- function(x) dnorm(x,2,2)
different_first_deriv <- function(x) {}
different_second_deriv <- function(x) {}
body(different_first_deriv) <- D(body(different_norm), 'x')
body(different_second_deriv) <- D(body(different_first_deriv), 'x')
curve(different_norm, -4, 8, ylim = c(-0.4, 0.4), col = 'blue')
curve(different_first_deriv, -4, 8, add = T, col = 'red')
curve(different_second_deriv, -4, 8, add = T, col = 'green')
abline(v=0, h=0)
который производит этот участок:
так что вы можете видеть, что он принимает производные от стандартного нормаля, а не N (2,2). Если вы распечатываете функции first_deriv и different_first_deriv, они равны, даже если они предназначены для дифференциации различных функций.
Кто-нибудь знает, как решить эту проблему, поэтому я беру производные от указанного гауссова распределения, который я хочу?