gpt4 book ai didi

r - 向 lm 模型添加滞后变量?

转载 作者:行者123 更新时间:2023-12-02 16:20:27 25 4
gpt4 key购买 nike

我在时间序列上使用 lm,实际上效果很好,而且速度 super 快。

假设我的模型是:

> formula <- y ~ x

我在训练集上训练它:

> train <- data.frame( x = seq(1,3), y = c(2,1,4) )
> model <- lm( formula, train )

...我可以对新数据进行预测:

> test <- data.frame( x = seq(4,6) )
> test$y <- predict( model, newdata = test )
> test
x y
1 4 4.333333
2 5 5.333333
3 6 6.333333

这工作得非常好,而且速度非常快。

我想向模型添加滞后变量。现在,我可以通过增强原始训练集来做到这一点:

> train$y_1 <- c(0,train$y[1:nrow(train)-1])
> train
x y y_1
1 1 2 0
2 2 1 2
3 3 4 1

更新公式:

formula <- y ~ x * y_1

...并且训练效果会很好:

> model <- lm( formula, train )
> # no errors here

但是,问题是无法使用“预测”,因为无法以批量方式将 y_1 填充到测试集中。

现在,对于许多其他回归事物,有非常方便的方法在公式中表达它们,例如poly(x,2)等等,并且这些可以直接使用未修改的训练和测试数据。

所以,我想知道是否有某种方法可以在公式中表达滞后变量,以便可以使用预测?理想情况下:

formula <- y ~ x * lag(y,-1)
model <- lm( formula, train )
test$y <- predict( model, newdata = test )

...无需增加(不确定这个词是否正确)训练和测试数据集,并且能够直接使用预测

最佳答案

看看例如dynlm为您提供滞后运算符的包。更一般地说,计量经济学和时间序列的任务 View 将有更多内容供您查看。

以下是示例的开始——一到十二个月的滞后:

R>      data("UKDriverDeaths", package = "datasets")
R> uk <- log10(UKDriverDeaths)
R> dfm <- dynlm(uk ~ L(uk, 1) + L(uk, 12))
R> dfm

Time series regression with "ts" data:
Start = 1970(1), End = 1984(12)

Call:
dynlm(formula = uk ~ L(uk, 1) + L(uk, 12))

Coefficients:
(Intercept) L(uk, 1) L(uk, 12)
0.183 0.431 0.511

R>

关于r - 向 lm 模型添加滞后变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13096787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com