计算r中数据函数的导数

时间:2012-06-18 10:33:56

标签: r function derivative

有没有一种简单的方法来计算数据给出的非线性函数的导数?

例如:

x = 1 / c(1000:1)

y = x^-1.5
ycs = cumsum(y)

plot (x, ycs, log="xy")

如何根据'x'和'cirs'给出的函数计算导数函数?

4 个答案:

答案 0 :(得分:10)

还将建议一个平滑样条拟合的例子,然后预测衍生物。在这种情况下,结果与@dbaupp:

描述的差异计算非常相似
spl <- smooth.spline(x, y=ycs)
pred <- predict(spl)

plot (x, ycs, log="xy")
lines(pred, col=2)

ycs.prime <- diff(ycs)/diff(x)
pred.prime <- predict(spl, deriv=1)

plot(ycs.prime)
lines(pred.prime$y, col=2)

答案 1 :(得分:7)

函数的导数是dy / dx,其可以近似为Δy/Δx,即“y随x的变化而变化”。这可以用R写成

ycs.prime <- diff(ycs)/diff(x)

现在ycs.prime包含每个x函数导数的近似值:但它是一个长度为999的向量,因此您需要缩短x(即使用在进行任何分析或绘图时,x[1:999]x[2:1000])。

答案 2 :(得分:6)

从原始数据生成衍生产品是有风险的,除非您非常小心。这个过程被称为“误差乘数”并非一无是处。除非您知道数据的噪声含量并采取一些措施(例如样条曲线)来消除差分之前的噪声,否则您最终可能会得到一条可怕的曲线。

答案 3 :(得分:0)

实用包中也有gradient

grad <- pracma::gradient(ycs, h1 = x)
plot(grad, col = 1)