【发布时间】: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 函数中看到y 和X 和fixef_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