我有两个固定的效果变量,我对估计一个固定效果的系数很感兴趣,但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我正在尝试估计时隙固定效应的系数(去除截距),但我对公司的系数不感兴趣。
所以我的第一个方法是运行
feols(y ~ 0 + i(TIMESLOT) + i(TIMESLOT, x) + FIRM, test_dt) # WORKS, and drops one of firm这就产生了我需要的所有时隙系数。
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)我的真实数据有很多唯一的固定值,所以我想把它作为固定效应变量。不幸的是,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在这里手动删除一个伪变量的方法是什么?我很感谢你的回答。
(fixest包未标记为当前版本)
发布于 2021-11-17 12:25:20
开发人员的回应:没有办法手动删除一个。
https://stackoverflow.com/questions/69745380
复制相似问题