有一些有趣的 R 包可以实现非参数导数估计。Newell 和 Einbeck 的简短评论可能会有所帮助: http: //maths.dur.ac.uk/~dma0je/Papers/newell_einbeck_iwsm07.pdf
这里我们考虑一个基于pspline
包的示例(平滑样条曲线,对 m 阶导数进行惩罚):
数据生成过程是带有加性噪声的负逻辑模型(因此 y 值都是负的,就像 @ForeverLearner 的 ROIC 变量一样):
set.seed(1234)
x <- sort(runif(200, min=-5, max=5))
y = -1/(1+exp(-x))-1+0.1*rnorm(200)
我们开始绘制曲线的非参数估计(黑线是真实曲线,红线是估计曲线):
library(pspline)
pspl <- smooth.Pspline(x, y, df=5, method=3)
f0 <- predict(pspl, x, nderiv=0)
![在此处输入图像描述](https://i.stack.imgur.com/XsRsv.png)
然后,我们估计曲线的一阶导数:
f1 <- predict(pspl, x, nderiv=1)
curve(-exp(-x)/(1+exp(-x))^2,-5,5, lwd=2, ylim=c(-.3,0))
lines(x, f1, lwd=3, lty=2, col="red")
![在此处输入图像描述](https://i.stack.imgur.com/dtN4r.png)
这里是二阶导数:
f2 <- predict(pspl, x, nderiv=2)
curve((exp(-x))/(1+exp(-x))^2-2*exp(-2*x)/(1+exp(-x))^3, -5, 5,
lwd=2, ylim=c(-.15,.15), ylab=)
lines(x, f2, lwd=3, lty=2, col="red")
![在此处输入图像描述](https://i.stack.imgur.com/SMuzA.png)