You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的lm回归公式中加入t-1期因变量作为控制变量

在R中给线性回归模型加入滞后一期因变量的实现方法

要在你的线性回归模型中加入t-1期的因变量,核心是先生成每个国家分组下的滞后一期Y变量,再将其纳入模型。以下是具体步骤和代码:

步骤1:确保数据按分组和时间排序

因为滞后变量是针对每个国家的时间序列生成的,必须先按Country和Year排序,避免错位:

# base R 排序方式
df <- df[order(df$Country, df$Year), ]

# 或者用dplyr的排序方式(需先加载dplyr包)
library(dplyr)
df <- df %>% arrange(Country, Year)

步骤2:生成滞后一期的Y变量

方法一:用dplyr分组生成滞后变量(推荐,代码更清晰)

通过group_by(Country)确保每个国家内部单独计算滞后值:

df <- df %>%
  group_by(Country) %>%
  mutate(Y_lag = lag(Y)) %>%  # lag()默认取前1期,即t-1
  ungroup()

方法二:用base R的ave函数生成分组滞后变量

如果不想加载额外包,可以用base R实现:

df$Y_lag <- ave(df$Y, df$Country, FUN = function(x) c(NA, x[-length(x)]))

步骤3:构建包含滞后变量的回归模型

将生成的Y_lag代入原模型即可:

model <- lm(Y ~ Y_lag + Country + Year + GDP, data = df)

注意事项

  • 生成滞后变量后,每个国家的第一期观测会出现NA值,lm()函数运行时会自动忽略这些缺失值;你也可以提前用df <- na.omit(df)过滤掉含NA的行。
  • 这种加入滞后因变量的模型属于动态面板模型,普通最小二乘(lm)可能存在内生性问题(滞后因变量与误差项相关)。如果需要更严谨的估计,可以考虑使用plm包的固定效应模型或GMM估计方法。

内容的提问来源于stack exchange,提问作者maplesyrup123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:55:42