R - 如何找到数值数组的二阶导数

时间:2014-03-24 03:28:09

标签: r calculus differentiation

我有一系列数字数据(由Strike组织的选项调用价格)。

我想计算R中的第二个派生词。

我能够拟合平滑的曲线,例如

call.lo <- loess(mid ~ strike, df.x, model=T)

但是我坚持从那个到分化。

任何帮助表示感谢,谢谢。

1 个答案:

答案 0 :(得分:2)

您想要discrete second derivative吗?

 mid <- 1:100; strike <- (1:100)^3 + 2*(1:100)^2 + 1:100 + 5

 deriv <- function(x, y) diff(y) / diff(x)
 middle_pts <- function(x) x[-1] - diff(x) / 2
 second_d <- deriv(middle_pts(mid), deriv(mid, strike))
 smooth_second_d <- loess(second_d ~ midpts,
   data.frame(second_d = second_d, midpts = middle_pts(middle_pts(mid))), model = T)

示例:

 plot(middle_pts(middle_pts(mid)), deriv(middle_pts(mid), deriv(mid, strike)))

我看到6x + 4就像预期的那样。