【发布时间】:2019-01-16 19:24:57
【问题描述】:
我正在尝试计算 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 的函数,它们是相等的,即使它们是为了区分不同的函数。
有谁知道如何解决这个问题,所以我正在对我想要的指定高斯分布进行导数?
【问题讨论】:
标签: r gaussian differentiation