marginaleffects について
モデルの予測、比較、傾き、仮説を扱うR・Pythonユーザー向けの統計解釈スキルです。推定対象、評価グリッド、集約、不確実性、検定の5つの観点で分析を整理します。
主な機能
- 015つの問いによる分析枠組み
- 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
コアフレームワーク:あらゆる分析で考えるべき5つの問い
あらゆる解釈のタスクは、次の5つの体系的な問いに分解できます。
- 量:どの推定対象を扱いますか?(予測、比較、傾き、検定)
- 予測子(グリッド):どの値で評価しますか?(観測値、反実仮想シナリオ、均衡グリッド)
- 集計:誰を対象に集計しますか?(単位レベル、
by=によるグループ平均、加重平均) - 不確実性:どの推論方法を使いますか?(デルタ法、ロバスト標準誤差、ブートストラップ、ベイズ法)
- 検定:どの仮説を検証しますか?(帰無仮説の検定、同等性、ペアごとの対比)
クイックスタート
章の概要:chapters/<chapter>.qmdを読んでください
関数リファレンス:man/r/<function>.mdまたはman/python/<function>.mdを読んでください
このスキルを使う場面
- ユーザーが予測、比較、傾き、または限界効果について尋ねている
- ユーザーが推定対象(ATE、ATT、CATE、リスク差、オッズ比)の選択についてサポートを必要としている
- ユーザーがmarginaleffectsの関数の構文や引数について尋ねている
- ユーザーがモデル結果の解釈や仮説検定を希望している
- ユーザーが反実仮想分析、G計算、または因果推論に言及している
- ユーザーが『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
- 書籍の章:
-
5つの問いのフレームワークを適用して回答を構成します:
- ユーザーが推定対象(量)を定義できるよう支援します
- どこで評価するか(グリッド)を明確にします
- 集計レベルを決定します
- 不確実性の定量化方法を推奨します
- 検定を行う場合は、仮説を明示します
-
ユーザーの言語(R または Python)に合った関数を使って、具体的なコード例を提示します
利用可能なリソース
書籍の章(chapters/)
| ファイル | トピック | 章の焦点 |
|---|---|---|
framework.qmd | 5つの質問フレームワーク(ここから開始) | モデルを直感的な推定対象に変えるための5つの質問と中核となる量(予測、比較、傾き)を定義します。 |
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-computation と因果推論 | 反事実的な予測グリッドを用いた ATE/ATT/ATU/CATE のための G-computation の手順。 |
uncertainty.qmd | 推論手法(デルタ、ブートストラップ、ベイズ) | inferences()/vcov を用いた、デルタ法、ブートストラップ、シミュレーション、共形予測、ロバスト/クラスタ標準誤差。 |
mrp.qmd | マルチレベル回帰と事後層別化 | 混合効果における予測と比較を用いた、マルチレベルモデルと事後層別化。 |
ml.qmd | 機械学習モデル | ML フレームワークに対する予測、比較、傾きを用いたモデル監査。 |
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
例
ロジットモデルの例
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 を読み、5つの質問フレームワークを説明し、適切な量(例: ATE には avg_comparisons())を推奨します。
ユーザーが限界効果の計算方法を質問した場合:
→ man/r/slopes.md または man/python/slopes.md を読み、関連する引数を伴う構文を提供します。
ユーザーが処置効果の異質性を検定したい場合:
→ CATE の概念については chapters/comparisons.qmd を、by= グループを用いた検定の構文については man/r/hypotheses.md を読みます。
ユーザーが反事実的なグリッドについて質問した場合:
→ chapters/framework.qmd(Predictors セクション)と、datagrid() の使用法については man/r/datagrid.md を読みます。
ベストプラクティス
- 言語の好みを尋ねる: ユーザーが R または Python を指定していない場合は、コード例を提供する前にどちらを好むかを尋ねてください
- 適切な場合は常に、5つの質問フレームワークを用いて回答を組み立ててください
- 要約やマニュアルから特定のセクションを引用してください
- ユーザーがサンプルデータを必要とする場合は
get_dataset()に言及してください - 複合的なリクエストの場合は、まず概念的な枠組みから始めて、その後実装を示してください