R语言:fixest模型标准化系数计算与呈现方法求助
使用fixest计算并呈现标准化系数的最佳方法
问题背景与尝试过程
我需要找到用fixest计算并展示标准化系数的最优方式,以下是我的两次尝试:
尝试1:easystats包(parameters + effectsize)
lm模型可正常输出标准化系数,但换成feols模型直接报错:
library(parameters) library(effectsize) library(fixest) # lm模型运行正常 m <- lm(rating ~ complaints, data = attitude) standardize_parameters(m, method="basic") # feols模型报错 m <- feols(rating ~ complaints, data = attitude) standardize_parameters(m, method="basic") # 报错信息:Error in stats::model.frame(model)[[1]] : subscript out of bounds
尝试2:modelsummary包
lm模型使用standardize="refit"参数能正常输出标准化系数,但feols模型该参数无效,仍显示未标准化系数:
library(parameters) library(effectsize) library(modelsummary) # lm模型参数生效 m <- lm(rating ~ complaints, data = attitude) modelsummary(m, standardize="refit") # feols模型参数无效 m <- feols(rating ~ complaints, data = attitude) modelsummary(m, standardize="refit")
补充:当前使用的modelsummary版本为1.1.0.9000
需求
希望得到优雅便捷的方法,从fixest的估计结果中提取标准化系数,目标是复刻Stata中listcoef包的功能。感谢文中提及的各包作者!
解决方案
方法1:手动标准化变量后拟合模型
这是最直接可靠的方式,先对自变量和因变量做标准化处理,再用feols拟合,输出系数即为标准化系数:
library(fixest) library(dplyr) # 标准化目标变量 attitude_std <- attitude %>% mutate(across(c(rating, complaints), ~scale(.)[,1])) # 拟合标准化后的模型 m_std <- feols(rating ~ complaints, data = attitude_std) summary(m_std)
方法2:结合effectsize处理模型数据
通过effectsize::standardize处理模型对应的数据集,再重新拟合模型:
library(fixest) library(effectsize) # 拟合原始模型 m <- feols(rating ~ complaints, data = attitude) # 标准化模型使用的数据集 data_std <- standardize(model.frame(m)) # 更新模型到标准化数据 m_std <- update(m, data = data_std) summary(m_std)
方法3:升级modelsummary到稳定版
你当前使用的是开发预览版,部分fixest适配功能可能未完善。升级到最新稳定版后,standardize="refit"参数应该能正常生效:
install.packages("modelsummary") # 重启R后加载包 library(modelsummary) m <- feols(rating ~ complaints, data = attitude) modelsummary(m, standardize="refit")
内容的提问来源于stack exchange,提问作者astrae_research
相关产品推荐
相关产品推荐

