R语言 如何在我的LM回归公式中添加一个控制变量,用于控制(t-1)

lf5gs5x2  于 2023-02-10  发布在  其他
关注(0)|答案(2)|浏览(1009)

我正在使用lm构建一个简单的线性回归模型,由于我认为我的因变量是历史相关的,所以我想添加一个控制变量,即时间(t-1)的因变量。
在R中怎么做呢?这是我目前为止的模型:

lm(Y ~ Country + Year + GDP, data=df)

我想添加一个控制变量,如下所示:

lm(Y ~ Y(t-1) + Country + Year + GDP, data=df)

我希望它是清楚的!提前感谢!

ccrfmcuu

ccrfmcuu1#

可以使用dplyr库添加控制功能。

library(dplyr)

# create a new variable for the value of Y at time (t-1)
df$Y_lag <- lag(df$Y)

# run the regression with Y_lag as a control variable
fit <- lm(Y ~ Y_lag + Country + Year + GDP, data=df)
jtoj6r0c

jtoj6r0c2#

**1)**假设数据是按照时间递增的顺序排列的,以便适当地对齐变量,请删除每列的第一个或最后一个元素。由于问题中未提供输入,因此我们使用了内置BOD数据框-请参阅r标签页顶部的信息,以获得提问指导。

nr <- nrow(BOD)
lm(demand[-1] ~ Time[-1]  + demand[-nr], BOD)

**2)**使用折叠包中的标志。

library(collapse)
lm(demand ~ Time  + flag(demand), BOD)

**3)**另一个选择是dyn包。特别是当使用lag时,使用anova比较模型是很棘手的,但是dyn有一个anova.dyn可以自动解决这些问题。注意dplyr用它自己的lag来击败R的lag,这会导致几十个或几百个包失败,所以确保dplyr没有被加载,或者如果你需要dplyr,使用library(dplyr, exclkude = c("lag","filter"))。这适用于zoo和ts对象。

library(dyn)
z <- read.zoo(BOD, drop = FALSE)
dyn$lm(demand ~ time(z) + lag(demand, -1), z)

**4)**还有dynlm包,它使用的语法与dyn稍有不同,但原理相似。dynlm的一个重要优势是它支持通过两阶段最小二乘法进行工具变量回归。

相关问题