一元配置分散分析(ANOVA)を自力でやってみる

 

複数の群の平均値が等しいかどうかを調べる一元配置分散分析(ANOVA)。

エクセルでも行うことが出来る。

f:id:Chemstat:20210314093428j:plain

共分散分析に比べれば別に難しいことはないのだけれど、備忘録がてらまとめておく。

 

データの準備

A,B,Cの群からなる下記のデータを用意した。

データ

群A 3 4 5 4  
群B 5 5 4 6 7
群C 3 2 6    

分布はこんな感じ。

f:id:Chemstat:20210314094012j:plain

このそれぞれの群の平均値が等しいか(統計的有意差があるか)を調べていく。

 

各群の統計量

まずは表の上部の各群のデータ。

f:id:Chemstat:20210314094922p:plain

ほとんどそのままなのだが、 分散分散は不偏分散なのでn-1で割ることになる。

合計

 \begin{align*}  T_A= \sum_{i=1}^n{x_{Ai}}= 3+4+5+4=16\end{align*}

T_B=5+5+4+6+7=27

T_B=3+2+6=11

平均

 \begin{align*} \bar{x}_A = \frac{T_A}{n_A} = \frac{16} {4} =4\end{align*}

 \begin{align*} \bar{x}_B = \frac{27} {5} =5.4\end{align*}

 \begin{align*} \bar{x}_C = \frac{11} {3} =3.666...\end{align*}

分散(不偏分散)

 \begin{align*} s_A^2 = \frac{\displaystyle\sum_{i=1}^n{(x_{Ai}-\bar{x}_A)^2}}{n_A-1} \scriptsize= \frac{(3-4)^2+(4-4)^2+(5-4)^2+(4-4)^2} {(4-1)} \normalsize=0.666... \end{align*}

  \begin{align*} s_B^2 = \frac{\displaystyle\sum_{i=1}^n{(x_{Bi}-\bar{x}_B)^2}}{n_B-1} \scriptsize= \frac{(5-5.4)^2+(5-5.4)^2+(4-5.4)^2+(6-5.4)^2+(7-5.4)^2} {(5-1)} \normalsize=5.2 \end{align*}

  \begin{align*} s_C^2 = \frac{\displaystyle\sum_{i=1}^n{(x_{Ci}-\bar{x}_C)^2}}{n_C-1} \scriptsize= \frac{(3-3.66...)^2+(2-3.66...)^2+(6-3.66...)^2} {(3-1)} \normalsize=4.33... \end{align*}

 

分散分析

つづいて分散分析。

f:id:Chemstat:20210315075101p:plain
比較する変動を図に入れるとこんな感じ。

f:id:Chemstat:20210316060707j:plain


グループ内変動に対してグループ間変動を比較し、グループ間の差が統計的に有意かを判定する。ちなみに実際は上図の二乗和を変動としているのでご注意ください。

変動(グループ間)

総平均 \begin{align*} \bar{x}_{total} = \frac{T_A+T_B+T_C} {n_A+n_B+n_C} \scriptsize=\frac{16+27+11}{3+4+5}\normalsize=4.5\end{align*}

Aのグループ間変動:\begin{align*} S_{1A}=(\bar{x}_A-\bar{x}_{total})^2{\times}n_A\scriptsize=(4-4.5)^2\times4\normalsize=1\end{align*}

Bのグループ間変動:\begin{align*} S_{1B}=(\bar{x}_B-\bar{x}_{total})^2{\times}n_B\scriptsize=(5.4-4.5)^2\times5\normalsize=4.05\end{align*}

Cのグループ間変動:\begin{align*} S_{1C}=(\bar{x}_C-\bar{x}_{total})^2{\times}n_C\scriptsize=(3.666...-4.5)^2\times3\normalsize=2.083...\end{align*}

総グループ間変動:S_{1total}=S_{1A}+S_{1B}+S_{1C} = 1+4.05+2.083...=7.133...

変動(グループ内) 

Aのグループ内変動:\begin{align*} S_{2A}=\sum_{i=1}^n(x_{Ai}-\bar{x}_A)^2\scriptsize=(3-4)^2+(4-4)^2+(5-4)^2+(4-4)^2\normalsize=2\end{align*}

Bのグループ内変動:\begin{align*} S_{2B}=\sum_{i=1}^n(x_{Bi}-\bar{x}_C)^2\scriptsize=(5-5.4)^2+(5-5.4)^2+(4-5.4)^2+(6-5.4)^2+(7-5.4)^2\normalsize=5.2\end{align*}

Cのグループ内変動:\begin{align*} S_{2C}=\sum_{i=1}^n(x_{Ci}-\bar{x}_C)^2\scriptsize=(3-3.666...)^2+(2-3.666...)^2+(6-3.666...)^2\normalsize=8.666...\end{align*}

総グループ内変動:S_{2total}=S_{2A}+S_{2B}+S_{2C} = 2+5.2+8.666...=15.866...

自由度

グループ間の自由度\phi_1=グループの数\phi_N-1=3-1=2

グループ内の自由度\phi_2=データ総数n_{total}-グループの数\phi_N=12-3=9

分散

グループ間の分散\begin{align*}MS_1=\frac{S_{1total}}{\phi_1}\scriptsize=\frac{7.133...}{2}\normalsize=3.566...\end{align*}

グループ内の分散\begin{align*}MS_2=\frac{S_{2total}}{\phi_2}\scriptsize=\frac{15.86...}{9}\normalsize=1.762...\end{align*}

観測された分散比

F検定に相当する。

\begin{align*}F=\frac{MS_1}{MS_1}=\frac{3.566...}{1.762...}=2.023...\end{align*}

p値

自由度\phi_1,\phi_2=2,9のF分布においてF=2.023の上側の累積確率に相当するので、0.188になる。Excelpythonで計算してもらえばよい。

F境界値

自由度\phi_1,\phi_2=2,9のF分布において上側の累積確率が5%となるF値なので、4.256...となる。こちらもExcelpythonで計算してもらえれば。

F検定

この分散分析で最終的に得られるF値、p値によってグループ間の差が統計的に有意かを調べることが出来る。ちなみに帰無仮説は「グループごとの平均値の差に差がない」である。今回のF=2.083ではp値は0.188なので、棄却域を0.05で取る場合帰無仮説は棄却されず、「グループ間に差はない」ことになる。

それぞれの関係を下図に示した。

f:id:Chemstat:20210317070430j:plain

分散分析の構造

あらためてこの分散分析の構造を見ると、

グループ間の変動:平均値の差のばらつき

グループ内の変動:データのばらつき

を比較している。一応図にしてみるとこんな感じ。

f:id:Chemstat:20210317075154j:plain

 

 

参考

統計的検定