2013-03-14 155 views
-1

任何人都可以告诉我如何使用二次插值计算缺失数据。我知道zoo包提供线性和三次插值。二次插值插补方法

  1. 二次插值如何?
  2. 如何检查估算值是否正确?

谢谢。

+7

我可能完全忽略了这一点,但我猜想二次插值很少出于以下原因:两个数据点定义一条线,四个定义三次曲线。因此,您可以在要插入的间隙两侧使用一个或两个数据点进行插值。然而,对于二次曲线,您需要三个点,它们不能均匀分布在间隙的两侧。 – MvG 2013-03-14 07:07:03

回答

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") 

...的“正确性”当然只能测量估算和观测值之间的距离。

+1

这是近似值,而不是插值。 – MvG 2013-03-14 13:26:39

+0

哎呀,没错。 – texb 2013-03-14 14:22:06

3

大量的upvotes鼓励我把我的意见变成一个答案。

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

但是,使用二次曲线时,需要三个自由度。因此,您需要三个点来定义插值形状,而不能在间隙的两侧均匀分布。

可能的“解决方案”:

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

我不会建议这些,但我想不出更好的答案你的问题。对于每次计算,您都可以验证给定的实现是否符合设计思路,但由于所有设计思路在我看来都存在缺陷,这种正确性仍然无法确保插值实际上有意义。