基于不规则日期间隔的加权移动平均线

Weighted Moving Average based on Irregular Date Intervals

我是时间序列的新手,希望有人能在这里提供一些 input/ideas。

我正在寻找方法来估算缺失值。
我希望找到移动平均线,但大多数软件包(smooth、mgcv、)似乎没有考虑时间间隔。
例如,数据集可能如下所示,我希望 2016-01-10 的值对计算缺失值的影响最大:

Date          Value    Diff_Days
2016-01-01    10       13           
2016-01-10    14       4
2016-01-14    NA       0
2016-01-28    30       14
2016-01-30    50       16

我遇到过 NA 可能是第一次观察或最后一次观察的情况。有时 NA 值也会出现多次,此时滚动 window 需要扩大,这就是为什么我想使用移动平均线。
是否有考虑日期间隔/单独权重的软件包?
或者请建议在这种情况下是否有更好的方法来估算 NA 值。

您可以使用 glm 或任何不同的模型。

输入

con <- textConnection("Date          Value    Diff_Days
2015-12-14    NA       0
                      2016-01-01    10       13           
                      2016-01-10    14       4
                      2016-01-14    NA       0
                      2016-01-28    30       14
                      2016-02-14    NA       0
                      2016-02-18    NA       0
                      2016-02-29    50       16")

df <- read.table(con, header = T)
df$Date <- as.Date(df$Date)

df$Date.numeric <- as.numeric(df$Date)
fit <- glm(Value ~ Date.numeric, data = df)

df.na <- df[is.na(df$Value),]

predicted <- predict(fit, df.na)
df$Value[is.na(df$Value)] <- predicted

plot(df$Date, df$Value)
points(df.na$Date, predicted, type = "p", col="red")

df$Date.numeric <- NULL
rm(df.na)
print(df)

输出

        Date     Value Diff_Days
1 2015-12-14 -3.054184         0
2 2016-01-01 10.000000        13
3 2016-01-10 14.000000         4
4 2016-01-14 18.518983         0
5 2016-01-28 30.000000        14
6 2016-02-14 40.092149         0
7 2016-02-18 42.875783         0
8 2016-02-29 50.000000        16