2025/4/30

エクセル関数を使った一元配置分散分析(ANOVA)のやり方【コピペ用テンプレートあり】

Thumbnail for エクセル関数を使った一元配置分散分析(ANOVA)のやり方【コピペ用テンプレートあり】

はじめに

エクセルには、アドオンの「データ分析」ツールの中に一元配置分散分析ができる機能があります。 ここではこの機能を使わず、 エクセル関数のみで算出する方法を紹介します。

下にテンプレート(セルデータサンプル)があるので、 コピペですぐに使用できます。

一元配置分散分析とは

分散分析(ANOVA, Analysis of Variance)とは、「3つ以上 の群(グループ)の母平均の間に有意差があるか」を判定する統計的仮説検定の1つです。 特に、群間で異なる因子が1種類の場合を、一元配置 分散分析と言います。

分散分析表を作成することで、p値が算出されます。

いつ使うのか?

一元配置分散分析は、以下のような場合に使用します。

  • データが量的データである。
  • データが3つ以上のグループに分かれている。
  • 各群のデータは正規分布に従う(正規性)。
  • 各群の分散は等しい(等分散性)。
  • 各群のデータは独立である(当分酸性)。

算出値の意味

仮説検定では、 p値 を算出し、 有意水準α と比較を行います。 一元配置分散分析での p値 は、=F.DIST.RT関数によって得られます。

p値有意水準α による判定は以下の通りです。

  • p値 < α のとき: 各群の母平均の間に有意な差が ある
  • p値 ≥ α のとき: 各群の母平均の間に有意な差が ない

「どの群の間に有意差があるか」はわからない

一元配置分散分析では、「いずれか or すべての群の間に有意差があるかどうか」までしかわかりません。
「どの群の間に有意差があるか」を知るには、多重比較検定を行う必要があります。

エクセルでの算出方法

以下の 全セルをコピー ボタンをクリックし、エクセルの A1 セルに貼り付けると、 J9 セルにp値(下記の場合 0.017212331)、F14セルに検定結果(下記の場合 (有意差)あり)が出力されます。

データを書き換える場合は、 A ~ C列のデータを書き換えてください。 テンプレート(サンプル)のデータは3群(3列)ですが、 さらに増やすことも可能です。

ABCDEFGHIJK
1データ有意水準α0.05
2XYZ
3105112101偏差平方和
4106114103=A2=B2=C2
5105102109=DEVSQ(A:A)=DEVSQ(B:B)=DEVSQ(C:C)
610010099
710511795分散分析表
898105104要因変動平方和自由度平均平方F値p値
99710998群間=F11-F10=COUNT(A3:C3)-1=F9/G9=H9/H10=F.DIST.RT(I9,G9,G10)
10103100群内=SUM(E5:G5)=COUNT(A:C)-COUNT(A3:C3)=F10/G10
1192全体=DEVSQ(A:C)=COUNT(A:C)-1
12
13結果
14有意差=IF(J9<=F1,"あり","なし")
15
16

算出手順

エクセルで一元配置分散分析を行うための手順は、以下の4つです。

1. パラメータの設定

有意水準αを 事前 に設定します。 0.05(5%)や 0.01(1%)が一般的です。

2. 偏差平方和の算出

データセットの各列(群)の偏差平方和を算出します。 このとき、DEVSQ()関数を使用します。

DEVSQ関数

各データとその平均との差(偏差)の二乗の総和を返す。
第2引数, 第3引数, ... を追加することで、計算に用いるデータを増やすことができる(省略可、最大引数255)。

例:=DEVSQ(A:A)

  • 第1引数 (A:A): 計算に使用する データの範囲 (必須)
  • 第2,3,...引数 : 評価に追加するデータの範囲(オプション)

3. 分散分析表の作成

データおよび手順2の結果を使用して、分散分析表を作成します。 作成手順は細かいですが、ここでp値がでます。

以下で、各列ごとに作成手順を説明します。

a. 変動平方和の列の作成

この列の各行には、以下の通りに記入します。

  • 群間 の行: =F11-F10群内 の値 - 全体 の値)
  • 群内 の行: =SUM(E5:G5)(手順2のの結果の合計)
  • 全体 の行: =DEVSQ(A:C)(データ全体の偏差平方和)
b. 自由度の列の作成

この列の各行には、以下の通りに記入します。

  • 群間 の行: =COUNT(A3:C3)-1群の数 - 1)
  • 群内 の行: =COUNT(A:C)-COUNT(A3:C3)全データ数 - 群の数
  • 全体 の行: =COUNT(A:C)-1全データ数 - 1)
c. 平均平方の列の作成

平均平方とは、変動平方和に対応する自由度で割った値です。 上記の手順aとbの結果を使用して算出します。 この列の各行には、以下の通りに記入します。

  • 群間 の行: =F9/G9群の数 - 1)
  • 群内 の行: =F10/G10全データ数 - 群の数
d. F値の算出

F値は、平均平方(手順cで算出)の比です。

  • F値: =H9/H10
e. p値の算出

ここまでに算出したF値と、データの自由度を F.DIST.RT()関数に使い、p値を算出します。

  • p値: =F.DIST.RT(I9,G9,G10)

F.DIST.RT関数

F分布で、入力したF値の右側の確率を返す。

例:=F.DIST.RT(I9,G9,G10)

  • 第1引数 (I9): F値(必須)
  • 第2引数 (G9): 分布の自由度の値1(必須)
  • 第3引数 (G10): 分布の自由度の値2(必須)

4. 結果の表示

設定した有意水準と、算出したp値を比較した結果を表示します。 ここで IF 関数を使用しています。

IF関数

第1引数の条件式を基に、返す結果を分岐させる。

  • 第1引数 = TRUEのとき: 第2引数の値を返す
  • 第1引数 = FALSEのとき: 第3引数の値を返す

例:=IF(J9<=F1,"あり","なし")

  • 第1引数 (K3<=K2): 分岐の条件式(必須)
  • 第2引数 (あり): TRUEのときに返す値(必須)
  • 第3引数 (なし): FALSEのときに返す値(オプション)