Многомерные сезонные временные ряды в dlm в R

#r #time-series

#r #временные ряды

Вопрос:

Я пытаюсь построить динамическую линейную модель (dlm) в R для моих двумерных сезонных (ежемесячных) временных рядов. Я нашел следующие ресурсы, которые помогли мне смоделировать двумерные случаи, но в них отсутствует компонент сезонности (насколько я понимаю):

Учебное пособие: Моделирование пространства состояний
https://kevinkotze.github.io/ts-4-tut / (см. Раздел 9, «Многомерные модели пространства состояний»)

Файл описания пакета ‘dlm’
https://cran.r-project.org/web/packages/dlm/dlm.pdf (см. Пример на стр. 17)

Я очень рад, если вы можете помочь мне написать функцию с сезонностью в моделировании dlm.

Вот код, который я использовал:

 library(dlm)
data(NelPlo)

# 1. Build the model 

buildSu <- function(x) {
    Vsd <- exp(x[1:2])
    Vcorr <- tanh(x[3])
    V <- Vsd %o% Vsd
    V[1,2] <- V[2,1] <- V[1,2] * Vcorr
    Wsd <- exp(x[4:5])
    Wcorr <- tanh(x[6])
    W <- Wsd %o% Wsd
    W[1,2] <- W[2,1] <- W[1,2] * Wcorr
    return(list(
        m0 = rep(0,2),
        C0 = 1e7 * diag(2),
        FF = diag(2),
        GG = diag(2),
        V = V,
        W = W))
}

# 2. MLE parameter estimation
suMLE <- dlmMLE(NelPlo[,1:2], rep(0,6), buildSu); suMLE

buildSu(suMLE$par)[c("V","W")]

StructTS(NelPlo[,1], type="level") ## compare with W[1,1] and V[1,1]

StructTS(NelPlo[,2], type="level") ## compare with W[2,2] and V[2,2]

model.fit <- buildSu(suMLE$par)
model.filtered <- dlmFilter(NelPlo[,1:2], model.fit)

# 3. forecasting 
y1 <- dlmForecast(model.filtered, nAhead=12,sampleNew=1)
  

Я очень рад, если вы можете помочь мне написать модель с сезонностью в dlm-моделировании, и любые ценные примеры R приветствуются.

Комментарии:

1. Пожалуйста, предоставьте воспроизводимые данные для работы и поясните, почему ваш код не работает для вас. Где вы столкнулись с проблемой?

2. Пакет dlm имеет функцию DLM для сезонных факторов dlmModSeas() (см. Стр. 21 в файле описания пакета). Если вы выполните поиск в пакете по ключевому слову «сезон», вы также обнаружите, что вы можете добавлять DLM вместе, например dlmModPoly() dlmModSeas(4) # linear trend plus quarterly seasonal component (стр. 8). Это вам как-нибудь помогает?

3. Уважаемый сэр / мадам #LC-datascientist Код является рабочим кодом и работает отлично, но я не уверен, что он обрабатывает сезонность (потому что мои временные ряды с сезонностью). Мне нужна помощь для включения компонента сезонности при построении модели (часть 1 кода). dlmModPoly() dlmModSeas (4) работает для одномерных (я пробовал), но я не знаю, как моделировать многомерные с использованием этих двух, пожалуйста, дайте мне знать, если вы знаете или какие-либо примерыдобро пожаловать

4. NelPlo Вы ожидаете, что мы сможем найти что-то в доступном пакете? Если нет, то этот вопрос следует закрыть как слишком расплывчатый. Если это так, то необходимо добавить лучшее описание того, как его загрузить.

5. Сэр IRTFM, я отредактировал код NelPlo — это набор данных в пакете (достаточно загрузить пакет ). Если вы используете данные Google NelPlo, они содержат несколько временных рядов, я использовал только два из них для двумерного