0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】Pythonを使った二元分散分析

0
Last updated at Posted at 2026-05-04

二元配置分散分析とは

二元配置分散分析は因子を2つ含むデータから、各因子における水準間の平均値の差を検定するための分析方法です。

参考(https://bellcurve.jp/statistics/course/10059.html?srsltid=AfmBOoomqQI0wLD6DWU3SuxdQ_6uhhU7gLgSYwKmWINS3lDIdyjVLfpl)

コード作成の参考にした記事

↑statsmodelsのドキュメント

↑他の方の作成した記事

実装

まずは必要ライブラリのインポート

anova.py
#必要なライブラリを準備
#数値計算に必要なライブラリ
import pandas as pd
import numpy as np
import scipy as sp
from scipy import stats as st

#統計計算に必要なライブラリ
import statsmodels.formula.api as smf
import statsmodels.api as sm
import statsmodels.stats.anova as anova
from statsmodels.stats.multicomp import pairwise_tukeyhsd

from statsmodels.graphics.factorplots import interaction_plot
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm

次にanovaを実施する関数を作成する

  • independent_val_1とindependent_val_2は独立変数
    (分析者や研究者が意図的に操作する、変化させる、あるいは観察する変数。要因にあたる)
  • dependent_valは従属変数
    (独立変数の変化によって影響を受けたり、結果として現れたりする変数。測定結果にあたる)
anova.py
# anova_data: データが格納されたデータフレーム
def two_way_anova(anova_data, independent_val_1, independent_val_2, dependent_val):
    formula = f"{dependent_val} ~ ({independent_val_1}) + ({independent_val_2}) + ({independent_val_1}):({independent_val_2})"
    model = ols(formula, dat).fit()
    anova_table = anova_lm(model, type=2)
    print(anova_table)
    print(formula)

この関数を実行すれば良い

run.py
data = pd.read_csv('path', header=0, index_col=0)
two_way_anova(data, 'sex', 'age', 'income') #性別、年齢という独立変数が、収入という従属変数に影響を与えるか
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?