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列)ですが、 さらに増やすことも可能です。

ABCDEFGHIJ
1データ有意水準α0.05
2XYZ
3105112101偏差平方和
4106114103XYZ
5105102109183.556241.714126.875
610010099
710511795分散分析表
898105104要因変動平方和自由度平均平方F値p値
99710998群間260.8132130.4074.960.017
10103100群内552.1452126.293
1192全体812.95823
12
13結果
14有意差あり

算出手順

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

1. パラメータの設定

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

2. 偏差平方和の算出

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

fxDEVSQ関数
DEVSQ ( 数値1, 数値2, ... )

数値1の各データと平均との差(偏差)の二乗の総和(偏差平方和)を算出する。

偏差平方和=i(xixˉ)2偏差平方和 = \sum_i (x_i - \bar{x})^2

数値2, 数値3, ... を追加することで、計算に用いるデータを増やすことができる(最大 : 数値配列255)。

数値1
: 必須
B3:C4
数値配列。
数値2 , ...
: 任意
B9:C10
数値配列。

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)
fxF.DIST.RT関数
F.DIST.RT ( x, 自由度1, 自由度2)

F分布上で、指定したF値(x)の上側累積確率(右側確率)を返す (F検定で計算したF値(x)から、p値が得られる)。

x
: 必須
4.96
F値(正の数値)。
自由度1
: 必須
2
分子側の自由度(1以上10 10 未満の数値)。
自由度2
: 必須
21
分母側の自由度(1以上10 10 未満の数値)。

4. 結果の表示

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

fxIF関数
IF ( 論理式, TRUE時の値, FALSE時の値)

論理式の値が TRUEFALSE かに応じて分岐 し、 それぞれに対応した値 (TRUE時の値 / FALSE時の値) を返す。

論理式
: 必須
A2>=0
論理値 (TRUE/FALSE) を返す条件式
TRUE時の値
: 必須
"○"
論理式が TRUE の場合に返す値。
FALSE時の値
: 任意
"×"
論理式が FALSE の場合に返す値。