R:根据固定时期估计的方程滑动超前预测

R: Sliding one-ahead forecasts from equation estimated on a fixed period

下面的玩具模型代表一个具有更多变量、转换、滞后等的模型。假设我做对了这些东西。

我的数据是按时间排序的,但现在格式为 R 时间序列,因为我需要排除某些时期等。出于这个原因,我宁愿不将其设为时间序列,因为我认为它很容易搞砸,但如果我需要,或者它大大简化了估计过程,我想只使用一个整数序列,比如索引。下面,如果允许的话,代表时间。

我的问题很简单(我希望如此)。我想使用我的数据的第一部分来估计模型的系数。然后我想使用这些估计值,而不是来自滑动 window 的估计值,对该数据的每个剩余值进行预先预测。这个想法是,即使没有用滑动 window 来估计公式,也会应用该公式。显然,我可以重新输入包含系数的模型,然后以多种方式获得我想要的东西,使用 base R sapply,使用 tidyverse dplyr::mutatepurrr::map_dbl,等等。但我在道德上确信那里是将公式从 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])

延迟不应该给我一个错误。

另外,这不是我的问题的一部分本身,但我可以使用一个指针指向一个关于使用 R 公式和 lm 生成的标准估计输出对象的很好的教程,glm,nls 等。不是统计数据,只是编程。

使用系数的常用方法是调用模型对象的 predict()、coefficients() 或 summary() 函数来确定其值。您可以尝试使用 ?predict.lm() 文档来了解有关公式的详细信息。

一个简单的例子:

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