2013-03-14 88 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鼓勵我把我的意見變成一個答案。

二次插值很少出於以下原因:兩個數據點定義一條線,四個定義三次曲線。因此,您可以在要插入的間隙兩側使用一個或兩個數據點進行插值。對於立方體,您還可以使用四個自由度來匹配間隙兩側的函數值和斜率,從而導致三次樣條插值。

但是,使用二次曲線時,需要三個自由度。因此,您需要三個點來定義插值形狀,而不能在間隙的兩側均勻分佈。

可能的「解決方案」:

  • 你可以做一個不對稱插值,即對位置的正確使用左側,但單點兩個數據點。結果也可能是不對稱的。
  • 你可以做分段二次方近似,使用三個以上的點來擬合二次曲線。但近似曲線不會穿過您的數據點,因此曲目將無法正確排列。
  • 你可以做一個全球二次方近似值你的整個數據集,但根本不是插值。
  • 您可以使用兩個自由度來匹配段的每一端的一個數據點,並使用第三度以某種對稱方式對曲線進行整形,例如,通過要求中間中的斜率爲零。但結果可能會「擺動」遠遠超過簡單的線性插值,所以我認爲它較差。

我不會建議這些,但我想不出更好的答案你的問題。對於每次計算,您都可以驗證給定的實現是否符合設計思路,但由於所有設計思路在我看來都存在缺陷,這種正確性仍然無法確保插值實際上有意義。