我想计算曲线下的面积以进行积分,而无需定义诸如 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_i
、x_{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/