Ввести пропущенные значения в временных рядах через bsts - PullRequest
0 голосов
/ 29 января 2019

Я работаю с мелкими временными сериями с примерно 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()

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Я действительно не знаю, что я делаю, но это, кажется, работает нормально:

Я думаю, мне, возможно, придется объединить вклады состояния и т. Д. Из объекта модели по образцам mcmc.Точная процедура может зависеть от порядка модели или около того.

model1$state.contributions %>% 
  apply(c(2, 3), median) %>% 
  colSums()

Кажется, что это агрегирует по реализациям из mcmc-итераций.

0 голосов
/ 29 января 2019

Вы пробовали пакет с мышами?

library(mice)

mice_mod <- mice(YourDataFrame[,VariablesYouWantToUseForImputationAndTheVariablesYouWantToImpute]
                   , method='norm') 

норма байесовской линейной регрессии

...