You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

fixest包feols双固定效应估计时如何指定被丢弃的虚拟变量

解决方法

你可以通过feols的collin.drop参数指定共线性发生时优先丢弃固定效应的水平,即可保留所有TIMESLOT的系数,代码如下:

# 优先丢弃固定效应水平,保留所有TIMESLOT系数
feols(y ~ 0 + i(TIMESLOT) +  i(TIMESLOT, x)| FIRM, test_dt, collin.drop = "fixef")

如果需要明确指定要丢弃的FIRM基准组,可以额外搭配ref参数:

# 指定FIRM的A组为基准组
feols(y ~ 0 + i(TIMESLOT) +  i(TIMESLOT, x)| FIRM, test_dt, collin.drop = "fixef", ref = list(FIRM = "A"))

上述两种写法的输出结果都和你直接把FIRM放到回归右侧的结果完全一致,同时可以享受高维固定效应的快速估计性能。

原问题原因

当你将FIRM放在|右侧作为高维固定效应时,feols默认的共线性处理规则是优先丢弃协变量的共线性列,所以会自动删掉一个TIMESLOT的虚拟变量;而把FIRM直接放到右侧时,FIRM属于普通协变量,优先级低于你手动设置的TIMESLOT变量,所以会优先删掉FIRM的基准组,符合你的预期。

手动构造X报错的原因

i()是fixest包中仅在公式语法内生效的特殊函数,依赖回归的环境上下文解析变量。你在外部data.table的j位置调用i()时,没有对应的回归环境,所以会抛出env缺失的报错。如果要手动构造X矩阵,需要自己生成TIMESLOT的虚拟变量和交乘项,不能直接调用i()函数。

内容的提问来源于stack exchange,提问作者Matthew Son

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:48:02