
書記が数学やるだけ#225 回帰分析の検定と自由度
回帰分析について,今回は分散分析との関係から見ていく。
問題
本問は『一般線形モデルによる生物科学のための現代統計学』で公開されているデータセットに基づいている。
説明
基本事項の復習から。
参考:
平方和分解も以前触れたが,これは分散分析でやったことと同じことである。
自由度は以下の通り。
分散分析と同様に,分散分析表からF検定を行うことで,係数に意味があるか判断できる。
回帰分析の場合はt検定がよく用いられるが,t値はF値の2乗によっても求められる。
解答
大まかな手順は前回同様である。
# ライブラリの読み込み
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)今回,散布図の作図にはseabornを用いる。
import matplotlib.pyplot as plt
import seaborn as sns
sns.jointplot(x="HEIGHT", y="VOLUME",data=data)回帰直線とその信頼区間の作図もできる。
sns.regplot(x="HEIGHT", y="VOLUME",data=data)回帰分析は,statsmodelsのolsにより実行される。
# モデル化
model = smf.ols('VOLUME ~ HEIGHT', data=data).fit()
model.summary()これより,回帰直線は"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ここでF検定を行うことにより,その変数に効果があるかの判定ができる(上で示した係数のt検定と同等)。
前回と今回の内容より,分散分析と回帰分析は同じ枠組みにあることがわかる。この枠組みのことを一般線形モデルという。
本記事のもくじはこちら:










