首页 > 解决方案 > 带有 lm 和因子的面板回归,跨面板或组的数据“泄漏”

问题描述

我正在尝试使用此示例数据运行面板回归,但是看起来某些数据在组之间“泄漏”:

data = data.frame(group = c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'), 
                  var1 = c(10, 8, 5, 7, 9, 0, 3, 2, 9))
ft = lm(var1 ~ I(dplyr::lag(var1, 1)) + factor(group), data = data)
ft$model
  var1 I(dplyr::lag(var1, 1)) factor(group)
2    8                     10             a
3    5                      8             a
4    7                      5             b
5    9                      7             b
6    0                      9             b
7    3                      0             c
8    2                      3             c
9    9                      2             c

在拟合数据中,它表明一些数据已经转移了组,即边缘情况。每组滞后 1 我希望每组有两个观察结果,丢弃第一个,但是组“b”和“c”有三个观察结果。

如何防止这种泄漏并使其按组滞后?预期ft$model会是这样的:

  group    var1          `lag(var1, 1)`
1 a        10             NA
2 a         8             10
3 a         5              8
4 b         7             NA
5 b         9              7
6 b         0              9
7 c         3             NA
8 c         2              3
9 c         9              2

标签: rlm

解决方案


为什么不首先创建我们想要的数据,然后将其应用到lm

data %>%
  group_by(group) %>%
  mutate(lag_var1 = lag(var1)) -> data1

#  group  var1 lag_var1
#  <chr> <dbl>    <dbl>
#1 a        10       NA
#2 a         8       10
#3 a         5        8
#4 b         7       NA
#5 b         9        7
#6 b         0        9
#7 c         3       NA
#8 c         2        3
#9 c         9        2

推荐阅读