【发布时间】:2019-06-22 13:42:52
【问题描述】:
我处理一个包含大约 20% 缺失数据(长度不一)的分钟时间序列。
AFAIK 贝叶斯方法可以优雅地处理缺失数据,我想尝试拟合贝叶斯时间序列模型,然后使用贝叶斯模型估算或提取缺失值(理想情况下返回一个可信区间为好)。
我希望将模型拟合到整个数据集,包括缺失的数据点,然后以某种方式同时估算值 - 避免滚动多水平预测的复杂性(和计算成本)。我目前正计划使用“bsts”包进行插补,但我也愿意接受其他选择。
(我尝试过 forecast::na.imp 和 imputeTS::na.seadec 进行插补,但我希望通过包含外部回归器来进一步提高插补的准确性)
正如您在下面看到的,我还无法提取没有缺失值的时间序列。
library(magrittr)
library(bsts)
# Load data
data(iclaims)
claims_nsa <- initial.claims$iclaimsNSA
# Create missing values
n <- length(claims_nsa)
na_pos <- 1:n %>%
sample(size = 1/ 5 * n)
claims_nsa[na_pos] <- NA
# Fit Model
ss <- AddLocalLinearTrend(list(), claims_nsa)
ss <- AddSeasonal(ss, claims_nsa, nseasons = 52)
model1 <- bsts(claims_nsa,
state.specification = ss,
niter = 100,
model.options = BstsOptions(save.full.state = TRUE))
# Fiddle around with model object
predict.bsts(model1, h=10)
str(model1)
model1$full.state %>% str()
【问题讨论】:
标签: r time-series missing-data imputation