我是时间序列的新手,并希望有人可以在这里提供一些意见/想法。
我正试图找到方法来估算缺失的价值
我希望找到移动平均线,但大多数包(光滑,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值也会多次出现,此时滚动窗口需要扩展,这就是我想使用移动平均值的原因。
是否有考虑日期间隔/单独权重的包裹?
或者请建议在这种情况下是否有更好的方法来估算NA值。
答案 0 :(得分:1)
您可以使用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