stargazer生成回归表时如何仅保留指定变量(对应omit的反向操作)
stargazer精准筛选输出变量的实现方案
核心问题原理
- stargazer没有原生的单向“指定保留变量”的反向参数,但其
omit参数基于正则规则匹配删除变量。此前使用omit = "Dummy1"误删三元交互项的原因是:该写法会匹配所有包含"Dummy1"字符串的变量,包括Dummy1主效应、所有带Dummy1的二元/三元交互项,无法做到精准拆分删除。 - 仅需调整正则的匹配规则,即可实现精准删除,最终效果与“直接指定要保留的变量”完全一致。
精准删除同前缀主效应、不影响交互项的写法
通过正则首尾锚定符,让匹配规则仅识别名字完全等于目标值的独立变量,不会匹配带冒号的交互项:
stargazer( model1, type = "text", omit = "^Dummy1$" )
其中^代表字符串开头,$代表字符串结尾,组合后仅会删除名为Dummy1的独立主效应行,所有带Dummy1的交互项(Dummy1:Dummy2、Dummy1:Dummy3、Dummy1:Dummy2:Dummy3)都会完整保留在输出中。
仅保留指定少数变量的实现路径
路径1:通过精准omit列表过滤(适配所有stargazer版本)
如果需要最终仅展示三元交互项Dummy1:Dummy2:Dummy3,只需要把所有非目标保留的变量通过带锚定的正则列在omit参数中即可,不会出现误删:
stargazer( model1, type = "text", omit = c( "^Dummy1$", "^Dummy2$", "^Dummy3$", # 删除所有单变量主效应 "^Dummy1:Dummy2$", "^Dummy1:Dummy3$", "^Dummy2:Dummy3$", # 删除所有二元交互项 "^Constant$" # 删除常数项 ) )
输出表格将仅保留三元交互项的系数与标准误,无其他冗余行。
路径2:使用keep参数正向指定保留项(适配stargazer 5.2.3及以上版本)
当前高版本stargazer已新增和omit逻辑对称的keep参数,直接传入想要保留的变量的正则匹配规则即可,无需列全所有要删除的变量:
stargazer( model1, type = "text", keep = "Dummy1:Dummy2:Dummy3" )
系统会自动过滤所有不匹配该规则的变量行,仅展示目标保留项。如果需要保留多个分散的变量,只要在keep参数中传入正则向量即可,比如同时保留常数项和三元交互项,写keep = c("^Constant$", "Dummy1:Dummy2:Dummy3")就能实现。
内容的提问来源于stack exchange,提问作者Guibor Camargo Salamanca
相关产品推荐
相关产品推荐

