【问题标题】:Choose which dummy to drop in feols - fixest package选择要放入 feols - fixst 包中的虚拟对象
【发布时间】:2021-11-17 20:25:19
【问题描述】:

我有两个固定效应变量,我有兴趣估计一个固定效应的系数,但feols 总是自动放弃第一个。

例如,在我的玩具数据中,如下所示:

library(data.table)
library(fixest)
set.seed(1)

test_dt = data.table(
  y = rnorm(12, 15,20),
  x = rnorm(12, 25, 5),
  TIMESLOT = rep(c('BEG','MID','END'),4),
  FIRM = rep(c('A','B','C','D'), 3)
)
print(test_dt)

            y        x TIMESLOT FIRM
 1:  2.470924 21.89380      BEG    A
 2: 18.672866 13.92650      MID    B
 3: -1.712572 30.62465      END    C
 4: 46.905616 24.77533      BEG    D
 5: 21.590155 24.91905      MID    A
 6: -1.409368 29.71918      END    B

我正在尝试估计 TIMESLOT 固定效应的系数(去除截距),我对 FIRM 的系数不感兴趣。

所以我的第一个方法是运行

feols(y ~ 0 + i(TIMESLOT) +  i(TIMESLOT, x) + FIRM, test_dt) # WORKS, and drops one of firm

这会产生我需要的东西 - 所有 TIMESLOT 系数。

The variable 'FIRMD' has been removed because of collinearity (see $collin.var).
OLS estimation, Dep. Var.: y
Observations: 12 
Standard-errors: IID 
                  Estimate Std. Error   t value Pr(>|t|) 
TIMESLOT::BEG   -31.539770  107.34824 -0.293808  0.78806 
TIMESLOT::END    16.660959   45.20014  0.368604  0.73690 
TIMESLOT::MID    72.309104   64.56608  1.119924  0.34432 
TIMESLOT::BEG:x   2.672511    4.23945  0.630391  0.57319 
TIMESLOT::END:x   0.477604    1.97274  0.242102  0.82431 
TIMESLOT::MID:x  -1.121334    2.42085 -0.463199  0.67476 
FIRMA           -17.185688   19.01731 -0.903687  0.43277 
FIRMB           -35.705475   25.40943 -1.405206  0.25461 
FIRMC           -17.706701   21.30094 -0.831264  0.46680 
... 1 variable was removed because of collinearity (FIRMD)

我的真实数据有很多独特的 FIRM 值,所以我想把它作为固定效应变量。不幸的是,feols 删除了我感兴趣的虚拟变量之一。

例如,

feols(y ~ 0 + i(TIMESLOT) +  i(TIMESLOT, x)| FIRM, test_dt)

产量

OLS estimation, Dep. Var.: y
Observations: 12 
Fixed-effects: FIRM: 4
Standard-errors: Clustered (FIRM) 
                  Estimate Std. Error   t value Pr(>|t|) 
TIMESLOT::END    48.200729   63.44549  0.759719  0.50267 
TIMESLOT::MID   103.848874  123.20970  0.842863  0.46120 
TIMESLOT::BEG:x   2.672511    3.39202  0.787882  0.48828 
TIMESLOT::END:x   0.477604    1.75570  0.272030  0.80325 
TIMESLOT::MID:x  -1.121334    2.21219 -0.506888  0.64714 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 9.82348     Adj. R2: -0.468187
                Within R2:  0.403153

所以现在 TIMESLOT::BEG 被删除了。我宁愿放弃一个坚固的假人,但我没有成功。

最后,

我在feols 函数中看到yXfixef_df 参数,并试图将此路径用作我最后的手段。

但是,我收到了一些我无法解释的错误消息。 我的试用如下。

feols(y= test_dt$y, X = test_dt[,.(i(TIMESLOT), i(TIMESLOT,x))], fixef_df = test_dt[,.(i(FIRM, ref ='A'))])

#Error in get("isFixef", env) : argument "env" is missing, with no default

在这里手动删除一个虚拟变量的方法是什么? 非常感谢您的回答。

(固定包未在 SO currenlty 中标记)

【问题讨论】:

    标签: r


    【解决方案1】:

    来自开发者的回应:无法手动删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-27
      • 2021-03-24
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      相关资源
      最近更新 更多