首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择要放入feols - fixest包中的虚拟对象

选择要放入feols - fixest包中的虚拟对象
EN

Stack Overflow用户
提问于 2021-10-27 20:55:10
回答 1查看 95关注 0票数 0

我有两个固定的效果变量,我对估计一个固定效果的系数很感兴趣,但feols总是自动删除第一个。

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

代码语言:javascript
复制
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

我正在尝试估计时隙固定效应的系数(去除截距),但我对公司的系数不感兴趣。

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

代码语言:javascript
复制
feols(y ~ 0 + i(TIMESLOT) +  i(TIMESLOT, x) + FIRM, test_dt) # WORKS, and drops one of firm

这就产生了我需要的所有时隙系数。

代码语言:javascript
复制
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删除了我感兴趣的一个虚拟变量。

例如,

代码语言:javascript
复制
feols(y ~ 0 + i(TIMESLOT) +  i(TIMESLOT, x)| FIRM, test_dt)

收益率

代码语言:javascript
复制
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函数中看到了yX,以及fixef_df参数,并尝试使用此路径作为最后的手段。

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

代码语言:javascript
复制
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包未标记为当前版本)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-17 12:25:20

开发人员的回应:没有办法手动删除一个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69745380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档