R: Скользящие прогнозы с опережением по уравнению, рассчитанному на фиксированный период - PullRequest
0 голосов
/ 06 февраля 2020

Модель игрушек, представленная ниже, заменяет одну с большим количеством переменных, преобразований, лагов и т. Д. c. Предположим, я все понял правильно.

Мои данные упорядочены по времени, но теперь они отформатированы как временной ряд R, потому что мне нужно исключить определенные периоды и т. Д. c. Я бы предпочел не делать это временным рядом по этой причине, потому что я думаю, что было бы легко испортить, но если мне нужно, или это сильно упрощает процесс оценки, я хотел бы просто использовать целочисленную последовательность, такой как индекс. ниже, чтобы представить время, если это разрешено.

Моя проблема проста (я надеюсь). Я хотел бы использовать первую часть моих данных для оценки коэффициентов модели. Затем я хочу использовать эти оценки, а не оценки из скользящего окна, чтобы делать прогнозы на один шаг вперед для каждого из оставшихся значений этих данных. Идея состоит в том, что формула применяется со скользящим окном, даже если оно не оценивается с одним. Очевидно, что я мог бы перепечатать модель с включенными коэффициентами, а затем получить то, что я хочу, несколькими способами, с базой R sapply, с tidyverse dplyr::mutate или purrr::map_dbl, et c. Но я морально уверен, что есть какой-то стандартный способ вытащить формулу из объекта lm, а затем использовать ее по своему желанию, которую я просто не смог найти. Пример:

set.seed(1)

x1 <- 1:20
y1 <- 2 + x1 + lag(x1) + rnorm(20)
index. <- x1
data. <- tibble(index., x1, y1)
mod_eq <- y1 ~ x1 + lag(x1)

lm_obj <- lm(mod_eq, data.[1:15,])

и я хочу что-то вроде:

my_forecast_values <- apply_eq_to_data(eq = get_estimated_equation(lm_obj), my_data = data.[16:20])

, и лаг не должен давать мне ошибку.

Кроме того, это не часть моего вопроса per se , но я мог бы использовать указатель на хороший учебник по использованию формул R и стандартных выходных объектов оценки, созданных с помощью lm, glm, nls и тому подобного. Не статистика, только программирование.

1 Ответ

0 голосов
/ 06 февраля 2020

Обычный способ использования коэффициентов - это вызов функции предсказания (), коэффициентов () или резюме () объекта модели для определения его стоимости. Вы можете попробовать документацию в

Простой пример:

data.$lagx <- dplyr::lag(data.$x1, 1) #create lag variable
lm_obj1 <- lm(data=data.[2:15,], y1 ~ x1 + lagx) #create model object
data.$pred1 <- predict(lm_obj1, newdata=data.[16,20]) #predict new data; needs to have same column headings
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...