Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

1 因子 ANOVA

1 因子 ANOVA の紹介

関数anova1を使用して、1 因子の分散分析 (ANOVA) を実行できます。1 因子 ANOVA の目的は、1 つの因子をもつ複数のグループ (レベル) のデータに、共通の平均があるかどうかを判別することです。つまり、1 因子 ANOVA を使用すると、1 つの独立変数をもつさまざまなグループは、応答変数 y に与える影響が異なるかどうかを調べることができます。ある病院で、推奨されている 2 つの新しい予約方法を採用すると、以前の予約方法の場合より患者の待ち時間が短くなるかどうかを調べようとしているとします。この場合、独立変数は予約方法、応答変数は患者の待ち時間です。

1 因子 ANOVA は、線形モデルの単純な特殊ケースです。1 因子 ANOVA のモデルは、以下の式で示されます。

y i j = α j + ε i j

以下が仮定されています。

  • yijは、i が観測番号、j が変数 y の別のグループ (レベル) を表している観測値です。yijはすべてが独立しています。

  • αjは、j 番目のグループ (レベルまたは処理) の母集団平均を表します。

  • εijは、それぞれが独立している確率的誤差です。平均が 0 で分散が一定の正規分布、つまり εij~ N(0,σ2) になっています。

このモデルは、"平均モデル" とも呼ばれます。このモデルでは、yの各列が定数 αjに誤差成分 εijを加えた値であると仮定しています。ANOVA は、この定数がすべて同じであるかどうかを判別するために役立ちます。

ANOVA では、すべてのグループで平均が等しいという仮説 ( H 0 : α 1 = α 2 = ... = α k ) を、少なくとも 1 つのグループが他と異なるという対立仮説 (少なくとも 1 つの i および j について H 1 : α i α j ) に対して検定します。anova1(y)は、各列が異なるグループを表しているが、観測値が同じ数である行列 (つまり、平衡な設計)yのデータについて、列の平均が等しいかどうかを調べます。anova1(y,group)は、ベクトルまたは行列yのデータについて、groupで指定したグループの平均が等しいかどうかを調べます。この場合,各グループ(列)の観測数は異なっていてもかまいません (不平衡な設計)。

ANOVA は、すべての標本母集団が正規分布になっているという仮定に基づいています。この仮定に多少違反していても信頼性が損なわれないことが知られています。正規性の仮定は、正規性プロット (normplot) を使用すると視覚的にチェックできます。あるいは、正規性をチェックする Statistics and Machine Learning Toolbox™ の関数のいずれかを使用して、アンダーソン・ダーリング検定 (adt)、カイ二乗適合度検定 (chi2gof)、ジャック・ベラ検定 (jbtest) またはリリーフォース検定 (lillietest) を行うこともできます。

1 因子 ANOVA 用データの準備

標本データとしてベクトルまたは行列を使用できます。

  • 標本データがベクトルyに含まれている場合、anova1(y,group)というように入力変数groupを使用してグループ化変数を指定する必要があります。

    groupは、yの各要素に対する名前が 1 つずつ含まれている数値ベクトル、logical ベクトル、categorical ベクトル、文字配列、string 配列、または文字ベクトルの cell 配列でなければなりません。関数anova1は、 対応するgroup名が同じであればy値を同じグループの一部として扱います。たとえば、以下のようにします。

    この設計は、各グループに含まれている要素の数が異なる場合 (不平衡な ANOVA) に使用します。

  • 標本データが行列yに含まれている場合、グループ情報の指定はオプションです。

    • 入力変数groupを指定しなかった場合、anova1ではyの各列が別々のグループとして扱われ、各列の母集団平均が等しいかどうかが評価されます。たとえば、以下のようにします。

      この形式の設計は、各グループに含まれている要素の数が同じ場合 (平衡な ANOVA) に使用します。

    • 入力変数groupを指定する場合、groupの各要素は、yの対応する列のグループ名を表します。関数anova1は、同じグループ名の列を同じグループの一部として扱います。たとえば、以下のようにします。

anova1は、y内の任意のNaN値を無視します。また、groupに空またはNaNの値が含まれている場合、anova1y内の対応する観測値を無視します。関数anova1は、空またはNaNの値を無視した後、各グループに同じ数の観測値がある場合、平衡型 ANOVA を実行します。そうでない場合、anova1は不平衡な ANOVA を実行します。

1 因子 ANOVA の実行

この例では、1 因子 ANOVA を実行して、複数のグループから取得したデータが共通の平均をもつかどうかを判別する方法を説明します。

標本データを読み込んで表示します。

loadhogghogg
hogg =6×524 14 11 7 19 15 7 9 7 24 21 12 7 4 19 27 17 13 7 15 33 14 12 12 10 23 16 18 18 20

このデータは、出荷された牛乳に含まれているバクテリア数に関する Hogg と Ledolter の研究 (1987) から得られたものです。行列hoggの各列は、出荷ごとの差を示しています。行は、それぞれの出荷から無作為に取り出した牛乳パック内のバクテリア数です。

バクテリア数が他より高くなっている出荷があるか検定します。既定の設定では、anova1は 2 つの図を返します。1 つは標準的な ANOVA 表、もう 1 つはグループ別のデータの箱ひげ図です。

[p,tbl,stats] = anova1(hogg);

Figure One-way ANOVA contains objects of type uicontrol.

Figure contains an axes. The axes contains 35 objects of type line.

p
p = 1.1971e-04

p値は約 0.0001 という小さい値なので、出荷ごとにバクテリア数が異なることがわかります。

箱ひげ図を見ると、平均が異なることをグラフィカルに確認できます。ただし、ノッチは平均ではなく中央値を比較しています。この表示の詳細はboxplotを参照してください。

標準的な ANOVA 表を表示します。anova1では、標準的な ANOVA 表が出力引数tblに cell 配列として格納されます。

tbl
台=4×6 cell arrayColumns 1 through 5 {'Source' } {'SS' } {'df'} {'MS' } {'F' } {'Columns'} {[ 803.0000]} {[ 4]} {[200.7500]} {[ 9.0076]} {'Error' } {[ 557.1667]} {[25]} {[ 22.2867]} {0x0 double} {'Total' } {[1.3602e+03]} {[29]} {0x0 double} {0x0 double} Column 6 {'Prob>F' } {[1.1971e-04]} {0x0 double } {0x0 double }

F統計量を変数Fstatに格納します。

Fstat = tbl{2,5}
Fstat = 9.0076

グループの平均を多重対比較するために必要な統計量を表示します。anova1では、これらの統計量は構造体statsに格納されます。

stats
stats =struct with fields:gnames: [5x1 char] n: [6 6 6 6 6] source: 'anova1' means: [23.8333 13.3333 11.6667 9.1667 17.8333] df: 25 s: 4.7209

すべてのグループで平均が等しいという帰無仮説が ANOVA により棄却されたので、多重比較を使用してどのグループの平均が他と異なるかを判別できます。多重比較検定を実行するには、入力引数としてstatsを受け入れる関数multcompareを使用します。この例では、4 つの出荷すべてで平均バクテリア数が互いに等しいという帰無仮説 H 0 : μ 1 = μ 2 = μ 3 = μ 4 anova1により棄却されます。

多重比較検定を実行し、平均バクテリア数に関して他と異なるのはどの出荷であるかを判別します。

multcompare(stats)

Figure Multiple comparison of means contains an axes. The axes with title Click on the group you want to test contains 11 objects of type line.

ans =10×61.0000 2.0000 2.4953 10.5000 18.5047 0.0059 1.0000 3.0000 4.1619 12.1667 20.1714 0.0013 1.0000 4.0000 6.6619 14.6667 22.6714 0.0001 1.0000 5.0000 -2.0047 6.0000 14.0047 0.2119 2.0000 3.0000 -6.3381 1.6667 9.6714 0.9719 2.0000 4.0000 -3.8381 4.1667 12.1714 0.5544 2.0000 5.0000 -12.5047 -4.5000 3.5047 0.4806 3.0000 4.0000 -5.5047 2.5000 10.5047 0.8876 3.0000 5.0000 -14.1714 -6.1667 1.8381 0.1905 4.0000 5.0000 -16.6714 -8.6667 -0.6619 0.0292

初めの 2 列には、どのグループの平均を比較したかが示されています。たとえば、1 行目ではグループ 1 とグループ 2 の平均を比較しています。最後の列には、検定のp値が示されています。0.0059、0.0013 および 0.0001 というp値から、1 番目の出荷の牛乳に含まれている平均バクテリア数が 2、3 および 4 番目の出荷のものと異なることがわかります。0.0292 というp値から、4 番目の出荷の牛乳に含まれている平均バクテリア数が 5 番目の出荷とは異なることがわかります。この手順では、他のグループについて平均が互いに異なるという仮説を棄却できませんでした。

図にも同じ結果が示されています。青いバーは 1 番目のグループの平均に関する比較区間を示しており、赤で示されている 2、3 および 4 番目のグループの平均に関する比較区間と重なっていません。灰色で示されている 5 番目のグループの平均に関する比較区間は、1 番目のグループの平均に関する比較区間と重なっています。したがって、1 番目と 5 番目のグループの平均は有意に異なってはいません。

計算の詳細

ANOVA では、データの変動全体を次の 2 つの成分に分割することにより、グループの平均の違いを調べます。

  • 全体的な平均に対するグループの平均の変動 y ¯ . j y ¯ .. (グループ間の変動)。ここで、 y ¯ . j はグループ j の標本平均、 y ¯ .. は全体的な標本平均です。

  • グループの平均観測値に対する各グループの観測値の変動 y i j y ¯ . j (グループ内の変動)

言い換えると、二乗和の合計 (SST) がグループ間効果に起因する二乗和 (SSR) と誤差の二乗和 (SSE) に分割されます。

i j ( y i j y ¯ .. ) 2 S S T = j n j ( y ¯ . j y ¯ .. ) 2 S S R + i j ( y i j y ¯ . j ) 2 S S E ,

ここで、njは j 番目のグループの標本サイズです (j = 1, 2, ..., k)。

次に、グループ間の変動とグループ内の変動が比較されます。グループ内の変動に対するグループ間の変動の比率が著しく大きい場合、グループの平均が有意に異なると結論づけることができます。この値は、自由度が (k - 1, N - k) の F 分布になっている検定統計量を使用すると計算できます。

F = S S R k 1 S S E N k = M S R M S E ~ F k 1 , N k ,

ここで、MSR は平均二乗処理、MSE は平均二乗誤差、k はグループの数、N は観測値の総数です。F 統計量の p 値が有意水準より小さい場合、すべてのグループの平均が等しいという帰無仮説が棄却され、他と異なるグループの平均が少なくとも 1 つは存在すると結論づけられます。最も一般的な有意水準は、0.05 と 0.01 です。

ANOVA 表

ANOVA 表には、原因別のモデルの変動性、この変動性の有意性を検定するための F 統計量、およびこの変動性の有意性を判別するための p 値が記録されます。anova1が返す p 値は、モデル方程式におけるランダム外乱 εijについての仮定によって決まります。正確な p 値を得るには、これらの外乱が独立、正規分布、および一定の分散になっている必要があります。標準的な ANOVA 表の形式は次のとおりです。

anova1は、6 つの列がある cell 配列として標準的な ANOVA 表を返します。

定義
Source 変動性の原因
SS 各原因による二乗和
df 各原因に関連付けられている自由度N が観測値の総数、k がグループの数であるとします。すると、N - k はグループ内の自由度 (Error)、k - 1 はグループ間の自由度 (Columns)、N - 1 は全体の自由度 (N - 1 = (N - k) + (k - 1)) になります。
MS 各原因の平均二乗 (比率SS/df)
F F 統計量 (平均二乗の比率)
Prob>F p 値は、F 統計量の値が検定統計量の計算値より大きくなる確率です。anova1では、F 分布の cdf からこの確率が導き出されます。

ANOVA 表の各行には、データの変動性が原因別に示されます。

行 (原因) 定義
GroupsまたはColumns グループの平均の違いによる変動性 (グループ "間" の変動性)
Error 各グループのデータ間の違いとグループの平均の違いによる変動性 (グループ "内" の変動性)
Total 全体の変動性

参照

[1] Wu, C. F. J., and M. Hamada. Experiments: Planning, Analysis, and Parameter Design Optimization, 2000.

[2] Neter, J., M. H. Kutner, C. J. Nachtsheim, and W. Wasserman. 4th ed. Applied Linear Statistical Models. Irwin Press, 1996.

参考

||

関連するトピック