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

feols使用自定义公式时sw()逐步固定效应失效问题及解决

fixest中as.formula与sw()组合失效的原因及解决办法

问题重现

在使用fixest包的feols()函数时,直接在公式中嵌入sw()可以正常估计多固定效应模型:

library(fixest)
# 可正常运行
feols(mpg ~ disp | sw(gear, gear + carb), data = mtcars)

但如果用as.formula()生成核心公式后再与sw()组合,代码会报错:

# 无法运行
feols(as.formula("mpg ~ disp") | sw(gear, gear + carb), data = mtcars) 

失效原因

fixest的sw()是包内专属的特殊语法,它需要在feols()的公式解析阶段被识别并展开为多个模型。而as.formula()返回的是标准R公式对象,当用|连接标准公式和sw()时,fixest无法将右侧的sw()识别为自身的特殊语法,而是将其当作普通函数处理,导致解析逻辑出错。

解决方法

方法1:将完整公式(含sw())转为公式对象

把包含sw()的整个表达式写成字符串,再用as.formula()转换,让fixest能识别完整的特殊语法:

feols(as.formula("mpg ~ disp | sw(gear, gear + carb)"), data = mtcars)

方法2:使用fixest的xpd()函数构建公式

xpd()是fixest提供的扩展公式构建函数,支持解析包内特殊语法,可以动态拼接公式:

base_form <- as.formula("mpg ~ disp")
feols(xpd(base_form | sw(gear, gear + carb)), data = mtcars)

方法3:直接拼接公式字符串

如果核心公式是动态生成的字符串,可以直接拼接固定效应部分的字符串,再转成公式:

base_form_str <- "mpg ~ disp"
fe_form_str <- "sw(gear, gear + carb)"
full_form <- as.formula(paste(base_form_str, "|", fe_form_str))
feols(full_form, data = mtcars)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:46:16