关于 marginaleffects
面向 R 和 Python 用户的统计解释技能,涵盖模型预测、比较、斜率与假设检验,并以估计量、评估网格、聚合、不确定性和检验五个问题组织分析。
主要功能
- 01五问分析框架
- 02预测值与比较
- 03边际斜率与效应
- 04反事实与因果估计量
- 05不确定性与推断指导
- 06R 和 Python 函数参考
适用场景
- 01为研究选择估计量
- 02计算平均边际效应
- 03解释模型预测结果
- 04检验处理效应异质性
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ brycewang-stanford/ auto-empirical-research-skills --skill marginaleffects安装后在 Claude Code 中输入/marginaleffects确认已加载。
附带文件README-original.md
详细介绍
marginaleffects
主要信息来源:https://marginaleffects.com 该网站提供免费书籍、案例研究和示例。
R 和 Python 的软件包手册,以及配套书籍指南。
书籍:Model to Meaning: How to Interpret Statistical Models in R and Python
- 作者:Vincent Arel-Bundock(2026)
- 出版商:CRC Press
- 免费在线阅读:https://marginaleffects.com(主要信息来源,包含许多案例研究和示例)
- 纸质版:https://routledge.com/9781032908724
核心框架:每项分析都要回答的五个问题
每项解释任务都可以分解为五个严谨的问题:
- 数量:目标估计量是什么?(预测、比较、斜率或检验)
- 预测变量(网格):在哪里进行评估?(观测值、反事实情景、平衡网格)
- 聚合:针对哪些对象?(个体层面、使用
by=计算的组均值、加权平均值) - 不确定性:采用哪种推断方法?(Delta 方法、稳健标准误、Bootstrap、贝叶斯方法)
- 检验:要检验什么假设?(原假设检验、等效性检验、成对对比)
快速开始
章节摘要:阅读 chapters/<chapter>.qmd
函数参考:阅读 man/r/<function>.md 或 man/python/<function>.md
何时使用此技能
- 用户询问预测、比较、斜率或边际效应
- 用户需要帮助选择目标估计量(ATE、ATT、CATE、风险差、优势比)
- 用户询问 marginaleffects 函数的语法或参数
- 用户想要解释模型结果或检验假设
- 用户提及反事实分析、G-computation 或因果推断
- 用户参考《Model to Meaning》的章节
说明
-
对请求进行分类:
- 概念问题:目标估计量是什么?如何解释?→ 使用
chapters/ - 实现问题:函数语法、参数、代码 → 使用
man/r/或man/python/ - 混合问题:先进行概念说明,再提供代码
- 概念问题:目标估计量是什么?如何解释?→ 使用
-
阅读相关源文件:
- 书籍章节:
chapters/framework.qmd、chapters/predictions.qmd、chapters/comparisons.qmd、chapters/slopes.qmd、chapters/hypothesis.qmd等 - R 参考:
man/r/predictions.md、man/r/comparisons.md、man/r/slopes.md、man/r/hypotheses.md、man/r/datagrid.md - Python 参考:
man/python/predictions.md、man/python/comparisons.md、man/python/slopes.md、man/python/hypotheses.md
- 书籍章节:
-
运用五问框架来组织回答:
- 帮助用户定义目标估计量(数量)
- 明确在哪里进行评估(网格)
- 确定聚合层级(聚合)
- 建议如何量化不确定性(不确定性)
- 如需检验,明确指定假设(检验)
-
根据用户使用的语言(R 或 Python)提供具体代码示例
可用资源
书籍章节(chapters/)
| 文件 | 主题 | 章节重点 |
|---|---|---|
framework.qmd | 五问框架(从这里开始) | 定义五个问题和核心量(预测、比较、斜率),以便将模型转化为直观的估计目标。 |
predictions.qmd | 预测值与期望结果 | 定义预测、网格、聚合,以及使用 predictions()/avg_predictions() 进行检验。 |
comparisons.qmd | 反事实比较、ATE、ATT、风险比 | 定义反事实比较、效应函数、网格,以及使用 comparisons()/avg_comparisons() 进行聚合。 |
slopes.qmd | 边际效应、偏导数 | 将斜率定义为偏导数,并说明其以预测变量为条件;使用 slopes()/avg_slopes()。 |
hypothesis.qmd | 假设检验与等效性 | 使用 hypothesis 和 equivalence 参数,对任意量进行零假设检验与等效性检验。 |
interactions.qmd | 交互效应与效应修饰 | 使用预测、比较和斜率,解读交互项和多项式所体现的异质性与非线性。 |
categorical.qmd | 分类预测变量与对比 | 将该框架应用于分类/有序结果,按结果水平计算预测和比较。 |
experiments.qmd | 实验设计 | 通过 avg_comparisons() 和稳健标准误计算实验与析因设计中的 ATE。 |
gcomputation.qmd | G-计算与因果推断 | 使用反事实预测网格,介绍计算 ATE/ATT/ATU/CATE 的 G-计算步骤。 |
uncertainty.qmd | 推断方法(delta、bootstrap、贝叶斯) | 介绍 Delta 方法、bootstrap、模拟、保形预测,以及通过 inferences()/vcov 计算稳健/聚类标准误。 |
mrp.qmd | 多层回归与后分层 | 介绍混合效应模型中的多层模型与后分层预测和比较。 |
ml.qmd | 机器学习模型 | 介绍如何使用预测、比较和斜率审计机器学习框架中的模型。 |
challenge.qmd | 解读挑战 | 定义分析目标和估计目标,并说明为何需要转换系数。 |
R 函数参考(man/r/)
核心函数(包括 avg_* 变体):predictions.md、comparisons.md、slopes.md、hypotheses.md
网格:datagrid.md
绘图:plot_predictions.md、plot_comparisons.md、plot_slopes.md
实用工具:posterior_draws.md、inferences.md、get_dataset.md
Python 函数参考(man/python/)
核心函数:predictions.md、avg_predictions.md、comparisons.md、avg_comparisons.md、slopes.md、avg_slopes.md、hypotheses.md
网格:datagrid.md
绘图:plot_predictions.md、plot_comparisons.md、plot_slopes.md
模型拟合:fit_statsmodels.md、fit_sklearn.md、fit_linearmodels.md
示例
Logit 模型示例
R:
library(marginaleffects)
# Fit logistic regression
mod <- glm(am ~ hp + wt, data = mtcars, family = binomial)
# Average marginal effects (slopes on probability scale)
avg_slopes(mod)
# Predicted probabilities at specific values
predictions(mod, newdata = datagrid(hp = c(100, 150, 200), wt = 3))
# Average treatment effect: compare hp = 150 vs hp = 100
avg_comparisons(mod, variables = list(hp = c(100, 150)))
# Risk ratio for a 50-unit increase in hp
avg_comparisons(mod, variables = list(hp = 50), comparison = "ratio")
Python:
import marginaleffects as me
import statsmodels.formula.api as smf
# Fit logistic regression
mod = smf.logit("am ~ hp + wt", data=me.get_dataset("mtcars")).fit()
# Average marginal effects
me.avg_slopes(mod)
# Predicted probabilities at specific values
me.predictions(mod, newdata=me.datagrid(mod, hp=[100, 150, 200], wt=3))
# Average treatment effect: compare hp = 150 vs hp = 100
me.avg_comparisons(mod, variables={"hp": [100, 150]})
用户询问如何选择估计目标:
→ 阅读 chapters/framework.qmd 和 chapters/comparisons.qmd,说明五问框架,并推荐合适的量(例如,用于 ATE 的 avg_comparisons())。
用户询问如何计算边际效应:
→ 阅读 man/r/slopes.md 或 man/python/slopes.md,提供包含相关参数的语法。
用户希望检验处理效应异质性:
→ 阅读 chapters/comparisons.qmd 了解 CATE 概念,然后阅读 man/r/hypotheses.md 了解使用 by= 分组的检验语法。
用户询问反事实网格:
→ 阅读 chapters/framework.qmd(预测变量部分)和 man/r/datagrid.md,了解 datagrid() 的用法。
最佳实践
- 询问语言偏好:如果用户未指定 R 或 Python,在提供代码示例前询问他们偏好哪一种
- 适用时,始终使用五问框架组织回答
- 引用摘要或手册中的具体章节
- 用户需要示例数据时,提及
get_dataset() - 对于混合请求,先进行概念说明,再展示实现方式