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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:46:04