ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

1 因子 ANOVA

1 因子 ANOVA の紹介

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

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

yij=αj+εij

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

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

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

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

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

ANOVA では、すべてのグループで平均が等しいという仮説を、少なくとも 1 つのグループが他と異なるという対立仮説に対して検定します。

H0:α1=α2=...=αkH1:not all group means are equal

anova1(y) は、各列が異なるグループを表しているが、観測値が同じ数である行列 (つまり、平衡な設計) y のデータについて、列の平均が等しいかどうかを調べます。anova1(y,group) は、ベクトルまたは行列 y のデータの場合、group で指定したグループの平均が等しいかどうかを調べます。この場合、各グループ (列) の観測数は異なっていてもかまいません (不平衡な設計)。

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

1 因子 ANOVA 用データの準備

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

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

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

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

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

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

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

    • 入力変数 group を指定する場合、groupy の各列に対する名前が 1 つずつ含まれている文字配列、string 配列、または文字ベクトルの cell 配列でなければなりません。関数 anova1 は、同じグループ名の列を同じグループの一部として扱います。たとえば、以下のようにします。

空または NaN 値の要素が group に含まれている場合、anova1 では対応する y の観測値が無視されます。

1 因子 ANOVA の実行

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

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

load hogg
hogg
hogg = 6×5

    24    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);

p
p = 1.1971e-04

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

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

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

tbl
tbl = 4x6 cell array
  Columns 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 つの出荷すべてで平均バクテリア数が互いに等しいという帰無仮説 H0:μ1=μ2=μ3=μ4anova1 により棄却されます。

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

multcompare(stats)

ans = 10×6

    1.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¯.jy¯.. (グループ間の変動)。ここで、y¯.j はグループ j の標本平均、y¯.. は全体的な標本平均です。

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

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

ij(yijy¯..)2SST=jnj(y¯.jy¯..)2SSR+ij(yijy¯.j)2SSE,

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

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

F=SSRk1SSENk=MSRMSE~Fk1,Nk,

ここで、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)
FF 統計量 (平均二乗の比率)
Prob>Fp 値は、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.

参考

| |

関連するトピック