使用 feols 在固定效应模型中包含交互项

Include interaction terms in a fixed effect model using feols

我对 fixst 包中 feols 的使用有疑问。我想要 运行 一个回归,其中解释变量 x1 是一个具有面板结构的变量,而 x2 是一个时间序列变量。因变量 y 也具有面板结构。

feols(y ~ x1 + x1*x2 | date, dat)

交互项的系数 x1*x2 很有趣。但是如果我 运行 上面的回归,会有一个警告说变量 x2 由于共线性而被删除。

我理解是因为在时间固定效应存在的情况下,任何时间序列变量都会与固定效应共线。但是我不知道为什么即使我没有在回归形式中单独包含 x2 仍然有这样的警告。

我不想使用 i() 语法,因为它会为我提供每个交互项的系数。相反,我只想为描述平均效果的相互作用项设置一个系数。有什么建议吗?

非常感谢您的帮助!提前致谢。

这不是 fixest 特定的,而是 R 解析公式的方式特有的。

看起来很奇怪,在公式中写 x1*x2 不仅会包含 x1*x2 项,还会包含 x1x2

您正在寻找的是:

  • x1:x2 仅包括交互(而不包括变量)
  • I(x1*x2) 其中 I() 告诉 R 不要触摸里面的东西,因此有效地只添加交互。

这里有一些例子:

base = iris
names(base) = c("y", "x1", "x2", "x3", "species")

# the multiplication adds x1 and x2
head(model.matrix(y ~ x1*x2, base))
#>   (Intercept)  x1  x2 x1:x2
#> 1           1 3.5 1.4  4.90
#> 2           1 3.0 1.4  4.20
#> 3           1 3.2 1.3  4.16
#> 4           1 3.1 1.5  4.65
#> 5           1 3.6 1.4  5.04
#> 6           1 3.9 1.7  6.63

# x1:x2 only includes the product
head(model.matrix(y ~ x1 + x1:x2, base))
#>   (Intercept)  x1 x1:x2
#> 1           1 3.5  4.90
#> 2           1 3.0  4.20
#> 3           1 3.2  4.16
#> 4           1 3.1  4.65
#> 5           1 3.6  5.04
#> 6           1 3.9  6.63

# I(x1*x2): idem
head(model.matrix(y ~ x1 + I(x1*x2), base))
#>   (Intercept)  x1 I(x1 * x2)
#> 1           1 3.5       4.90
#> 2           1 3.0       4.20
#> 3           1 3.2       4.16
#> 4           1 3.1       4.65
#> 5           1 3.6       5.04
#> 6           1 3.9       6.63