二次插值插补法

时间:2013-03-14 06:51:18

标签: r

任何人都可以告诉我如何使用二次插值来估算丢失的数据。我知道zoo包提供了线性和三次插值。

  1. 二次插值怎么样?
  2. 如何检查估算的值是否正确?
  3. 感谢。

2 个答案:

答案 0 :(得分:3)

大量的赞成票鼓励我将我的评论转化为答案。

由于以下原因,二次插值很少见:两个数据点定义一条线,四个定义一条三次曲线。因此,您可以使用插值间隙两侧的一个或两个数据点进行插值。对于立方体情况,您还可以使用四个自由度来匹配间隙两侧的函数值和斜率,从而导致三次样条插值。

但是,对于二次曲线,您需要有三个自由度。所以你需要三个点来定义插值形状,你不能在间隙的两边均匀分布。

可能的“解决方案”:

  • 您可以执行非对称插值,即在左侧使用两个数据点,但在位置右侧使用单个点。结果可能也是不对称的。
  • 您可以使用分段二次近似,使用三个以上的点来拟合二次曲线。但是近似曲线不会通过您的数据点,因此碎片不会正确排列。
  • 您可以对整个数据集执行全局二次近似,但这根本不是插值。
  • 您可以使用两个自由度来匹配线段每端的一个数据点,并使用第三个度数以某种对称方式对曲线进行整形,例如:通过要求中间的斜率为零。但结果可能比简单的线性插值“摆动”得多,所以我认为它较差。

我不建议这些,但我想不出更好的答案你的问题。对于每个计算,您可以验证给定的实现是否与设计理念相匹配,但由于我认为所有设计思想都存在缺陷,这种正确性仍然无法确保插值实际上有意义。

答案 1 :(得分:0)

对于多项式插值和可视化得到的拟合,我想你可能会尝试以下方面:

x <- runif(100,-2,2)
y <- x**2-rnorm(100) # an approximately quadratic relation between x and y. 
plot(x,y)
quadratic.model <- lm(y ~ x + I(x**2))
int <- function(x) predict(quadratic.model,list(x=x))
plot(int,xlim=c(-2,2),col="navy",add=T)
segments(x,y,x,int(x),col="red")

......“正确性”当然只能测量插补和观察之间的距离。