mcpField
M
marginaleffects

marginaleffects

github.com/brycewang-stanford数据与数据库4.8k56 次安装2 天前更新
代码仓库

关于 marginaleffects

面向 R 和 Python 用户的统计解释技能,涵盖模型预测、比较、斜率与假设检验,并以估计量、评估网格、聚合、不确定性和检验五个问题组织分析。

主要功能

  1. 01五问分析框架
  2. 02预测值与比较
  3. 03边际斜率与效应
  4. 04反事实与因果估计量
  5. 05不确定性与推断指导
  6. 06R 和 Python 函数参考

适用场景

  1. 01为研究选择估计量
  2. 02计算平均边际效应
  3. 03解释模型预测结果
  4. 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

核心框架:每项分析都要回答的五个问题

每项解释任务都可以分解为五个严谨的问题:

  1. 数量:目标估计量是什么?(预测、比较、斜率或检验)
  2. 预测变量(网格):在哪里进行评估?(观测值、反事实情景、平衡网格)
  3. 聚合:针对哪些对象?(个体层面、使用 by= 计算的组均值、加权平均值)
  4. 不确定性:采用哪种推断方法?(Delta 方法、稳健标准误、Bootstrap、贝叶斯方法)
  5. 检验:要检验什么假设?(原假设检验、等效性检验、成对对比)

快速开始

章节摘要:阅读 chapters/<chapter>.qmd 函数参考:阅读 man/r/<function>.md 或 man/python/<function>.md

何时使用此技能

  • 用户询问预测、比较、斜率或边际效应
  • 用户需要帮助选择目标估计量(ATE、ATT、CATE、风险差、优势比)
  • 用户询问 marginaleffects 函数的语法或参数
  • 用户想要解释模型结果或检验假设
  • 用户提及反事实分析、G-computation 或因果推断
  • 用户参考《Model to Meaning》的章节

说明

  1. 对请求进行分类:

    • 概念问题:目标估计量是什么?如何解释?→ 使用 chapters/
    • 实现问题:函数语法、参数、代码 → 使用 man/r/ 或 man/python/
    • 混合问题:先进行概念说明,再提供代码
  2. 阅读相关源文件:

    • 书籍章节: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
  3. 运用五问框架来组织回答:

    • 帮助用户定义目标估计量(数量)
    • 明确在哪里进行评估(网格)
    • 确定聚合层级(聚合)
    • 建议如何量化不确定性(不确定性)
    • 如需检验,明确指定假设(检验)
  4. 根据用户使用的语言(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.qmdG-计算与因果推断使用反事实预测网格,介绍计算 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()
  • 对于混合请求,先进行概念说明,再展示实现方式

评论

支持 Markdown