r - 计算曲线下面积

标签 r numerical-integration

我想计算曲线下的面积以进行积分,而无需定义诸如 integrate() 之类的函数。

我的数据如下所示:

Date          Strike     Volatility
2003-01-01    20         0.2
2003-01-01    30         0.3
2003-01-01    40         0.4
etc.

我绘制了plot(strike,波动率)来观察波动率微笑。有没有办法整合这条绘制的“曲线”?

最佳答案

通过查看大量梯形图,每次都限制在 x_ix_{i+1}y{ 之间,可以很容易地近似 AUC i+1}y_i。使用zoo包的rollmean,你可以这样做:

library(zoo)

x <- 1:10
y <- 3*x+25
id <- order(x)

AUC <- sum(diff(x[id])*rollmean(y[id],2))

请确保对 x 值进行排序,否则您的结果将没有意义。如果 y 轴上的某个位置有负值,则必须弄清楚要如何准确地定义曲线下的区域,并进行相应调整(例如使用 abs() )

关于你的后续:如果你没有正式的函数,你会如何绘制它?因此,如果只有值,则唯一可以近似的就是定积分。即使 R 中有该函数,也只能使用 integrate() 计算定积分。仅当您也可以定义形式函数时,才可以绘制形式函数。

关于r - 计算曲线下面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4954507/

相关文章:

r - 在 R 中评估非常大的阶乘

c++ - odeint的runge_kutta4与Matlab的ode45的比较

python - 识别和修复浮点除以零错误 (Python)

c++ - 轮廓积分算法 C++

r - R 中的数值积分 : bad integrand behaviour error

r - 添加带有小刻度的第二个轴(顶部和右侧)

r - 模拟混合线性模型并使用 R 中的 lmerTest 对其进行评估

r - ggplot2:x 轴刻度之间的条形图

r - 从ggplot2中提取颜色信息?

r - 使用数据表进行双周分箱