メインコンテンツへスキップ
見出し画像

書記が数学やるだけ#337 交互作用を含めた二元配置分散分析

    前回に続き,今回は交互作用を含めたモデルを考える。


    問題

    スクリーンショット 2022-04-18 19.38.32


    本問は『一般線形モデルによる生物科学のための現代統計学』で公開されているデータセットに基づいている。



    説明

    交互作用は2つ以上の因子の組み合わせにより現れる相乗効果のことで,各要因のみでは説明できない効果を示す。

    交互作用図により可視化でき,グラフが平行でない場合に交互作用の存在を疑う。

    スクリーンショット 2022-04-18 15.07.44


    交互作用を含めることにより,平方和や自由度はさらに分割される。

    スクリーンショット 2022-04-18 14.55.51


    スクリーンショット 2022-04-18 14.56.19


    交互作用は要因間の積によりモデル化される。

    スクリーンショット 2022-04-18 14.57.29


    解答

    今回は,交互作用図を描くためにstatsmodels.graphics.factorplotsを使ってみる。

    #ライブラリの読み込み
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    import scipy as sp
    import statsmodels
    import statsmodels.api as sm
    import statsmodels.formula.api as smf
    from statsmodels.graphics.factorplots import interaction_plot


    #データの読み込み
    data = pd.read_csv('分散分析-3.csv')
    data

    スクリーンショット 2022-04-18 19.26.58


    #カテゴリカル変数への変換
    data['BED'] = data['BED'].astype(str)
    data['WATER'] = data['WATER'].astype(str)
    data['SHADE'] = data['SHADE'].astype(str)


    交互作用図をプロットしてみる。

    #WATERとSHADEの交互作用図
    fig_WS = interaction_plot(data.WATER, data.SHADE, data.BLOOMS)

    画像6


    #BEDとWATERの交互作用図
    fig_BW = interaction_plot(data.BED, data.WATER, data.BLOOMS)

    画像7


    #BEDとSHADEの交互作用図
    fig_BS = interaction_plot(data.BED, data.SHADE, data.BLOOMS)

    画像8


    図を見たところでは,「WATERとSHADE」「BEDとSHADE」では交互作用が強そうで,「BEDとWATER」は弱そうである。


    実際にモデル化して確かめてみる。

    # モデル化
    anova_mod = smf.ols('BLOOMS ~ BED+WATER+SHADE+WATER*SHADE+BED*WATER+BED*SHADE', data=data).fit()
    # 分散分析表
    anova_table = sm.stats.anova_lm(anova_mod)
    anova_table

    スクリーンショット 2022-04-18 19.36.42


    このことから,各説明変数はいずれも有意であり,さらに「WATERとSHADE」「BEDとSHADE」の交互作用が有意であることが言える。


    本記事のもくじはこちら:


    あなたへのおすすめ