我想计算曲线下的面积来进行积分,而不需要定义函数,比如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, volatility)张图来看看那笑容.有没有办法整合这条绘制的"曲线"?

推荐答案

通过查看大量梯形图,可以非常容易地近似计算AUC,每个时间范围在x_ix_{i+1}y{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相关问答推荐

使用 scale_x_discrete 或 scale_x_continuous 时未找到 R 对象

R:用 NA 随机替换值

在 R + 中zoom 和居中多个列,为新列添加新名称

Row_wise 和 column_wise 使用 fill 和 down/across 填充 NA

添加注释部分以使用 write_csv() 输出 CSV

用一个区分列连接两个数据帧的单行器?

在 R 中系统地重命名字符串

展平嵌套列表并保留每个底层元素的所有父键

反复计算

如何将数字序列添加到每组data.frame?

如何在两个不同的数据帧上运行 cor.test()

模型未能在 r (lme4) 中收敛或不收敛

列出到 knitr 环境(在 R 块中使用 list2env 时出现 R-markdown 错误)

使用 dplyr 进行动态编程 - 使用动态输入改变多个动态列

将随机观察值的总和计算为 R 中每周的总和

如何在 R 中创建带有拟合曲线的 3D 条形图

在 R 中推断顺序数据中的选择顺序

提取向量中某个符号最后一次出现后的字符

R pivot_longer 带有存根名称和最后一个下划线

使用箭头分配函数作为 R purrr map2