如何利用fixest多估计功能高效估计多个实验回归模型?
解决方案
完全可以利用fixest的多估计功能实现,这样cluster固定效应仅需计算一次,能显著提升效率。
方式一:用sw()切换处理变量
通过sw()(switch的缩写)指定需要轮换的处理变量,保留回归公式中的共同部分,仅替换treatment_i相关项:
# 一次性完成三个模型估计,固定效应只计算一次 models <- fixest::feols( y ~ covariate + sw(treatment_1, treatment_2, treatment_3) + i(sw(treatment_1, treatment_2, treatment_3), covariate, ref = 0) | cluster, data = df )
方式二:结合变量列表批量处理
如果处理变量命名有规律(比如均以treatment_开头),可以先提取变量名再批量估计:
# 获取所有treatment开头的变量名 treat_vars <- grep("^treatment_", colnames(df), value = TRUE) # 批量生成并估计模型 models <- fixest::feols( y ~ covariate + sw(!!treat_vars) + i(sw(!!treat_vars), covariate, ref = 0) | cluster, data = df )
结果查看
执行后,models对象会包含三个估计完成的模型,你可以通过models[[1]]/models[[2]]/models[[3]]单独查看每个模型,或使用etable(models)一次性输出所有结果进行对比。
fixest的多估计功能会先预处理所有模型的共同部分(包括cluster固定效应的去均值操作),再针对不同的处理变量完成剩余回归计算,从根源上避免了重复计算固定效应的冗余开销。
内容的提问来源于stack exchange,提问作者RoyalTS
相关产品推荐
相关产品推荐

