-1

谁能告诉我如何使用二次插值来估算缺失的数据。我知道该zoo软件包提供线性和三次插值。

  1. 二次插值怎么样?
  2. 如何检查推算的值是否正确?

谢谢。

4

2 回答 2

4

大量的赞成票鼓励我将我的评论变成答案。

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

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

可能的解决方案”:

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

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

于 2013-03-14T13:25:41.617 回答
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")

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

于 2013-03-14T12:45:59.880 回答