トップページ | ひとつ上のページ | 目次ページ | このサイトについて | ENGLISH

分散分析

ANOVA 分散分析(ANOVA : ANalysis Of VAriance))は、 平均値に違いがあるかどうかを、ばらつきも考慮しながら判断するための方法です。 平均値の差の検定 は、他にもありますが、 分散分析は、比べたい平均値が2つより多い場合でも使えるので便利です。

分散分析は平均値の差を 検定 するために、分散を使っています。 分散を使って計算するので、「分散分析」という名前ですが、平均値の差を検定する方法です。ややこしいです。

分散分析は、 実験計画法 の分野で詳しく紹介されています。 そのせいか、分散分析が実験結果の解析方法として認知されていることもあるようです。 しかし、分散分析の本来の姿は、「2つ以上の平均値を、ばらつきも考慮して比べる方法」ですので、 実験のデータでなくても役に立ちます。

実験結果の解析で使う場合は、実験条件の違いによる平均値の差を検定するのに使われます。

分散分析の計算方法

分散分析では、まず、全体の分散を、各集団の平均値の分散と、各集団毎の分散(誤差の分散)に分けます。

次に、その2つ分散について、母分散の比の検定(F検定)をします。 それによって、平均値のばらつきが、同じ母集団から発生したものと言えるのかどうかを判断します。 つまり、このばらつきが有意であるなら、「平均値には差がある」という判断ができるようになります。

多元配置分散分析

多元配置分散分析は、因子が2つ以上ある場合の解析方法として、 実験計画法 では紹介されます。

因子が2つの場合は「二元配置分散分析」と呼ぶこともあります。

例えば、因子Aが2水準、因子Bが2水準ある時、2×2で4つのグループがあります。 4つのグループに対して、一元配置分散分析を実施しても良いのですが、 二元配置分散分析をすると、それぞれの因子の効果や交互作用効果も定量的に分析することができます。

検定 のページに、平均値の差の検定が、「目的変数(Y)が量的変数で、説明変数(X)が質的変数の場合の解析の中で、基本」と書きましたが、 特に、多元配置分散分析は、 「目的変数(Y)が量的変数で、説明変数(X)が質的変数の場合の 多変量解析 の中で、基本」とも言えます。

分散分析の注意点

ややこしくなるので 計算方法のところで特に書きませんでしたが、 分散分析では、水準毎の分散は等しい、と仮定した計算になっています。 水準毎でばらつきが違っていても、考慮されていません。

仮定が成り立っていなくても計算はできますが、解釈には注意が必要です。

ばらつきの違いの検定 を一緒に実施して、この仮定が成り立っているのかを確認することもできます。

また、分散分析をする時は、データをグラフにして、どんなデータに対して出された結果なのかを確認した方が良いです。 データが多い時は 箱ひげ図 、 少ない時は 一次元散布図 が良いです。
1次元散布図

Rの計算例

二元配置分散分析までなら、Excelのデータ分析の機能でもできます。

一元配置分散分析

R の使用例は下記になります。 (下記は、コピーペーストで、そのまま使えます。 この例では、Cドライブの「Rtest」というフォルダに、 「Data.csv」という名前でデータが入っている事を想定しています。

データは、1列目は「X」という列名でカテゴリ、2列目は「Y」という列名で数値が入っていることを想定しています。

setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T) # データを読み込み
summary(aov(Y~X,data=Data)) # 一元配置分散分析

二元配置分散分析(交互作用項なし)

データは、1列目、2列目は「X1」、「X2」という列名で水準名、3列目は「Y」という列名で数値が入っていることを想定しています。

setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T) # データを読み込み
summary(aov(Y~X1+X2,data=Data)) # 二元配置分散分析(交互作用項なし)

二元配置分散分析(交互作用項あり)

交互作用 も評価する場合は、「+」の所が、「*」になります。

交互作用項を入れる場合は、繰り返しデータが必要になります。 繰り返しデータとは、2つの因子のそれぞれの水準の組み合わせについて、複数回分のデータがあることを指します。

setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T) # データを読み込み
summary(aov(Y~X1*X2,data=Data)) # 二元配置分散分析(交互作用項あり)



順路 次は 対応のある検定

Tweet データサイエンス教室