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

書記が数学やるだけ#225 回帰分析の検定と自由度

    回帰分析について,今回は分散分析との関係から見ていく。


    問題

    スクリーンショット 2022-01-24 18.49.37


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



    説明

    基本事項の復習から。

    参考:



    スクリーンショット 2022-01-24 18.50.54


    平方和分解も以前触れたが,これは分散分析でやったことと同じことである。

    スクリーンショット 2022-01-24 18.52.33


    自由度は以下の通り。

    スクリーンショット 2022-01-24 18.53.18


    分散分析と同様に,分散分析表からF検定を行うことで,係数に意味があるか判断できる。

    スクリーンショット 2022-01-24 18.53.47


    回帰分析の場合はt検定がよく用いられるが,t値はF値の2乗によっても求められる。

    スクリーンショット 2022-01-24 18.55.05


    解答

    大まかな手順は前回同様である。

    # ライブラリの読み込み
    import numpy as np
    import pandas as pd
    import scipy as sp
    import statsmodels
    import statsmodels.api as sm
    import statsmodels.formula.api as smf


    # データの読み込み
    data = pd.read_csv('回帰分析-1.csv')
    print(data)

    スクリーンショット 2022-01-25 16.00.11


    今回,散布図の作図にはseabornを用いる。

    import matplotlib.pyplot as plt
    import seaborn as sns
    sns.jointplot(x="HEIGHT", y="VOLUME",data=data)

    画像8


    回帰直線とその信頼区間の作図もできる。

    sns.regplot(x="HEIGHT", y="VOLUME",data=data)

    画像9


    回帰分析は,statsmodelsのolsにより実行される。

    # モデル化
    model = smf.ols('VOLUME ~ HEIGHT', data=data).fit()
    model.summary()

    スクリーンショット 2022-01-25 16.03.26


    これより,回帰直線は"VOLUME = -87.1 + 1.54 × HEIGHT"と予測される。また,有意水準5%で帰無仮説「HEIGHTの係数は0」が棄却できることから,HEIGHTはVOLUMEの予測に意味のある要因であると言える。なお,R^2は0.358であり,HEIGHTとVOLUMEはそれほど強い関係にはないことが予想できる(注意:係数が有意なことと変数間の相関関係は別である)。


    分散分析と同じように,分散分析表を作成することもできる。

    # 分散分析表
    anova_table = sm.stats.anova_lm(model, type=2)
    anova_table

    スクリーンショット 2022-01-25 16.10.51

    ここでF検定を行うことにより,その変数に効果があるかの判定ができる(上で示した係数のt検定と同等)。


    前回と今回の内容より,分散分析と回帰分析は同じ枠組みにあることがわかる。この枠組みのことを一般線形モデルという。


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


    あなたへのおすすめ