2011-02-25 41 views
4

我處理有缺失數據的數據集和填充算法需要能夠填補前進,後退,和差距。因此,例如,如果我有從2000年1月1日到2010年12月31日的數據,並且缺少某些日期,那麼當用戶請求開始之前,結束之後或包含缺失數據點的時間段時,我需要「填寫「這些缺失的值。方法或在丟失數據

是否有一個適當的詞來指在數據填充這個概念?歸責是一個術語,不知道它是否是它的「術語」。

我假定有多個算法2個已知數之間&方法用於填補缺失數據(使用最後測定,使用中值/平均/移動平均,等,等

任何人都知道這個問題的適當的術語,關於這個主題的在線資源,或理想的鏈接打開的一些算法代碼實現(C#最好的,但任何語言將是有益的)

+1

您是否正在尋找術語「插值」? – 2011-02-25 15:26:45

+1

和「外推」? – Howard 2011-02-25 15:27:21

回答

2

你要找的期限爲interpolation。(強制性維基鏈接)

您正在尋求C#解決方案與數據集,但你也應該考慮在the database level like this這樣做。

C#中的一個簡單的蠻力方法可能是將您的開始和結束值作爲最小/最大值構建連續日期數組。然後使用該數組通過在數據集中沒有日期數組的匹配日期插入行來將「插入的」日期值合併到數據集中。

這是一個接近您所需的SO post:使用C#插入缺失的日期。沒有可接受的解決方案,但是閱讀這個問題並嘗試解答可能會讓你瞭解下一步需要做什麼。例如。根據Ticks(長值類型)使用DateTime數據,然後對該數據使用插值方案。將插值的long值轉換爲DateTime值。

2

您使用的算法將取決於數據本身,與可用數據相比差距的大小以及基於現有數據的可預測性。它還可以包含您可能知道的有關丟失的其他信息,這在統計數據中很常見,當您的實際數據可能不會反映與某些類別的Universe相同的分佈時。

線性和三次插值是典型的algortihms,不難實現,嘗試使用google搜索。

這裏有一個很好的入門的一些代碼:

http://paulbourke.net/miscellaneous/interpolation/

在該鏈接的討論的背景是圖形,但其概念是普遍適用的。