首页 > 解决方案 > R中三点之间的插值

问题描述

我有一个数据集,其中我有三年的观察结果(例如,2000、2005 和 2010 年),并且需要使用 R 插入中间年份的值。但是,我尝试使用某种类型的样条来执行此操作, 插值超出原始范围。在下面的情况下,它们甚至变为负数。

years <- c(2000, 2005, 2010)
outcome_values <- c(1, 10, 90)
plot(spline(years, outcome_values, xout = seq(min(years), max(years))))
points(years, outcome_values, pch = 16)

绘图输出

有人使用低阶样条描述了这种情况和 Python 中的解决方案(绘图中 3 个点之间的平滑曲线三个值之间的插值曲线),但我无法弄清楚如何在 R 中执行此操作。任何指针都会受到赞赏。

标签: rinterpolation

解决方案


这是对结果进行对数转换的方法。这将保证插值是正的,并以您可能喜欢的方式改变曲线的形状。

years = c(2000, 2005, 2010)
outcome_values= c(1, 10, 90)

sp = spline(years, log(outcome_values), xout = seq(min(years), max(years), length.out = 10))
plot(sp$x, exp(sp$y))
points(years, outcome_values, pch = 16)

在此处输入图像描述


推荐阅读