Main Content

anovan

説明

p = anovan(y,group) は、ベクトル y の平均について複数因子の影響を検定する多因子 (n 因子) 分散分析 (ANOVA) の項ごとに p 値のベクトルを返します。

anovan は、標準的な ANOVA 表を示す図も表示します。

p = anovan(y,group,Name,Value) は、1 つ以上の Name,Value ペア引数で指定された追加オプションを使用して、多因子 (n 因子) ANOVA の p 値のベクトルを返します。

たとえば、どの予測子変数が連続的であるかや、どのタイプの二乗和を使用するかを指定できます。

[p,tbl] = anovan(___) は、前の構文で指定した入力引数について、(因子のラベルが含まれている) ANOVA 表を cell 配列 tbl に返します。テキスト バージョンの ANOVA 表をクリップボードにコピーするには、[編集] メニューの [テキストのコピー] を使用します。

[p,tbl,stats] = anovan(___) から返される構造体 stats を使用して、多重比較検定を実行できるようになります。これにより、どのグループ平均のペアが有意に異なるかを判別できます。このような検定を実行するには、構造体 stats を入力引数として指定し、関数 multcompare を使用します。

[p,tbl,stats,terms] = anovan(___) は、ANOVA の計算で使用する主要項と交互作用項を terms に返します。

すべて折りたたむ

標本データを読み込みます。

y = [52.7 57.5 45.9 44.5 53.0 57.0 45.9 44.0]';
g1 = [1 2 1 2 1 2 1 2]; 
g2 = {'hi';'hi';'lo';'lo';'hi';'hi';'lo';'lo'}; 
g3 = {'may';'may';'may';'may';'june';'june';'june';'june'};

y は応答ベクトル、g1g2 および g3 はグループ化変数 (因子) です。各因子には 2 つの水準があり、y のすべての観測値は因子の水準の組み合わせによって識別されます。たとえば、観測値 y(1) は、因子 g1 の水準 1、因子 g2 の水準 'hi' および因子 g3 の水準 'may' に関連付けられています。同様に、観測値 y(6) は、因子 g1 の水準 2、因子 g2 の水準 'hi' および因子 g3 の水準 'june' に関連付けられています。

すべての因子水準について応答が同じであるか検定します。

p = anovan(y,{g1,g2,g3})

Figure N-Way ANOVA contains objects of type uicontrol.

p = 3×1

    0.4174
    0.0028
    0.9140

ANOVA 表の X1X2 および X3 は、それぞれ因子 g1g2 および g3 に対応しています。0.4174 という p は、因子 g1 の水準 1 および 2 について平均応答が有意には異ならないことを示しています。同様に、0.914 という p 値は、因子 g3 の水準 'may' および 'june' について平均応答が有意には異ならないことを示しています。しかし、0.0028 という p 値は十分に小さいので、因子 g2 の 2 つの水準 'hi' および 'lo' について平均応答が有意に異なると結論づけることができます。既定の設定では、anovan は 3 つの主効果のみについて p 値を計算します。

2 因子の交互作用を検定します。今回は、変数名を指定します。

p = anovan(y,{g1 g2 g3},'model','interaction','varnames',{'g1','g2','g3'})

Figure N-Way ANOVA contains objects of type uicontrol.

p = 6×1

    0.0347
    0.0048
    0.2578
    0.0158
    0.1444
    0.5000

交互作用項は、ANOVA 表で g1*g2g1*g3 および g2*g3 によって表されています。p の初めの 3 つの項目は、主効果の p 値です。終わりの 3 つの項目は、2 次交互作用の p 値です。0.0158 という p 値は、g1g2 の交互作用が有意であることを示しています。0.1444 および 0.5 という p 値は、対応する交互作用が有意ではないことを示しています。

標本データを読み込みます。

load carbig

このデータには、406 台の自動車についての測定値が含まれています。変数 org は自動車の製造国、変数 when は自動車の製造時期を表しています。

自動車を製造した時期と国によって燃費効率がどのように変化するかを調べます。また、2 次交互作用をモデルに含めます。

p = anovan(MPG,{org when},'model',2,'varnames',{'origin','mfg date'})

Figure N-Way ANOVA contains objects of type uicontrol.

p = 3×1

    0.0000
    0.0000
    0.3059

名前と値のペアの引数 'model',2 は、2 次交互作用を表します。交互作用項の p 値は 0.3059 という小さくない値なので、製造時期 (mfg date) の効果が製造国 (origin) の影響を受けることを示す証拠はほとんどありません。しかし、製造国と製造時期の主効果は、どちらも p 値が 0 なので有意です。

標本データを読み込みます。

y = [52.7 57.5 45.9 44.5 53.0 57.0 45.9 44.0]';
g1 = [1 2 1 2 1 2 1 2];
g2 = ["hi" "hi" "lo" "lo" "hi" "hi" "lo" "lo"];
g3 = ["may" "may" "may" "may" "june" "june" "june" "june"];

y は応答ベクトル、g1g2 および g3 はグループ化変数 (因子) です。各因子には 2 つの水準があり、y のすべての観測値は因子の水準の組み合わせによって識別されます。たとえば、観測値 y(1) は、因子 g1 の水準 1、因子 g2 の水準 hi および因子 g3 の水準 may に関連付けられています。同様に、観測値 y(6) は、因子 g1 の水準 2、因子 g2 の水準 hi および因子 g3 の水準 june に関連付けられています。

すべての因子水準について応答が同じであるか検定します。また、多重比較検定に必要な統計量も計算します。

[~,~,stats] = anovan(y,{g1 g2 g3},"Model","interaction", ...
    "Varnames",["g1","g2","g3"]);

Figure N-Way ANOVA contains objects of type uicontrol.

0.2578 という "p" 値は、因子 g3 の水準 may および june について平均応答が有意には異なっていないことを示しています。0.0347 という p 値は、因子 g1 の水準 1 および 2 について平均応答が有意に異なっていることを示しています。同様に、0.0048 という "p" 値は、因子 g2 の水準 hi および lo について平均応答が有意に異なっていることを示しています。

多重比較検定を実行し、因子 g1 および g2 についてどのグループが有意に異なるかを調べます。

[results,~,~,gnames] = multcompare(stats,"Dimension",[1 2]);

Figure Multiple comparison of population marginal means contains an axes object. The axes object with title Click on the group you want to test, xlabel 3 groups have population marginal means significantly different from g1=1,g2=hi contains 9 objects of type line. One or more of the lines displays its values using only markers

対応するグループの比較区間をクリックすると、他のグループについて検定を行うことができます。クリックしたバーは青になります。有意に異なるグループのバーは、赤になります。有意には異ならないグループのバーは、灰色になります。たとえば、g1 の水準 1g2 の水準 lo の組み合わせの比較区間をクリックすると、g1 の水準 2g2 の水準 lo の組み合わせの比較区間は重なるので灰色になります。逆に、他の比較区間は赤になり、有意に異なることを示します。

多重比較の結果と該当するグループ名を table で表示します。

tbl = array2table(results,"VariableNames", ...
    ["Group A","Group B","Lower Limit","A-B","Upper Limit","P-value"]);
tbl.("Group A")=gnames(tbl.("Group A"));
tbl.("Group B")=gnames(tbl.("Group B"))
tbl=6×6 table
       Group A           Group B        Lower Limit     A-B     Upper Limit     P-value 
    ______________    ______________    ___________    _____    ___________    _________

    {'g1=1,g2=hi'}    {'g1=2,g2=hi'}      -6.8604       -4.4      -1.9396       0.027249
    {'g1=1,g2=hi'}    {'g1=1,g2=lo'}       4.4896       6.95       9.4104       0.016983
    {'g1=1,g2=hi'}    {'g1=2,g2=lo'}       6.1396        8.6        11.06       0.013586
    {'g1=2,g2=hi'}    {'g1=1,g2=lo'}       8.8896      11.35        13.81       0.010114
    {'g1=2,g2=hi'}    {'g1=2,g2=lo'}        10.54         13        15.46      0.0087375
    {'g1=1,g2=lo'}    {'g1=2,g2=lo'}      -0.8104       1.65       4.1104        0.07375

関数 multcompare は、2 つのグループ化変数 g1 および g2 についてグループ (水準) の組み合わせを比較します。たとえば、この行列の 1 行目は、g1 の水準 1g2 の水準 hi の組み合わせが g1 の水準 2g2 の水準 hi の組み合わせと同じ平均応答値になっていることを示しています。この検定に対応する "p" 値は 0.0272 なので、平均応答が有意に異なっていることがわかります。この結果は、図からもわかります。青いバーは、g1 の水準 1g2 の水準 hi の組み合わせについて平均応答の比較区間を示しています。赤いバーは、他のグループの組み合わせについて平均応答の比較区間を示しています。どの赤いバーも青いバーと重なっていないので、g1 の水準 1g2 の水準 hi の組み合わせの平均応答が他のグループの組み合わせの平均応答と有意に異なっていることがわかります。

入力引数

すべて折りたたむ

標本データ。数値ベクトルを指定します。

データ型: single | double

グループ化変数 (y に含まれている観測値の因子と因子水準)。cell 配列を指定します。group の各セルには、y に含まれている観測値をいずれかの因子に関して識別する因子水準のリストを格納します。各セル内のリストは categorical 配列、数値ベクトル、文字行列、string 配列、または文字ベクトルが格納されている 1 列の cell 配列にすることができ、要素の数は y と同じでなければなりません。

y=[y1,y2,y3,y4,y5,,yN]g1={'A','A','C','B','B',,'D'}g2=[12131,2]g3={'hi','mid','low','mid','hi',,'low'}

既定の設定では、anovan はすべてのグループ化変数を固定効果として扱います。

たとえば、小学生の成績に対する性別、学校、教育方法の影響を調査する研究では、グループ化変数を次のように指定します。

例: {'Gender','School','Method'}

データ型: cell

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'alpha',0.01,'model','interaction','sstype',2 は、タイプ II の二乗和を使用して主効果と 2 次交互作用の 99% 信頼限界および p 値を計算するよう anovan に指定します。

信頼限界の有意水準。'alpha' と 0 ~ 1 の範囲にあるスカラー値をコンマ区切りのペアとして指定します。値が α の場合、信頼水準は 100 × (1 – α)% です。

例: 'alpha',0.01 は 99% 信頼区間に対応します。

データ型: single | double

連続予測子のインジケーターは、どのグループ化変数を、カテゴリカル予測子ではなく連続予測子として処理すべきかを表します。'continuous' とインデックスのベクトルをコンマ区切りのペアとして指定します。

たとえば、3 つのグループ化変数があり、2 番目が連続の場合、次のように指定します。

例: 'continuous',[2]

データ型: single | double

ANOVA 表を表示するためのインジケーター。'display' と、'on' または 'off' をコンマ区切りのペアとして指定します。'display''off' の場合、anovan は出力引数のみを返し、標準的な ANOVA 表を図としては表示しません。

例: 'display','off'

モデルのタイプ。'model' と次のいずれかのペアをコンマで区切って指定します。

  • 'linear''linear' モデル (既定値) は、N 主効果に対する帰無仮説について、p 値のみを計算します。

  • 'interaction''interaction' モデルでは、N 個の主効果と (N2) の 2 因子交互作用に対する帰無仮説について p 値を計算します。

  • 'full''full' は、N 主効果とすべての水準の交互作用に対する帰無仮説について、p 値を計算します。

  • 整数 ― モデル タイプとして k ≤ N である整数値の k を指定します。anovan では、k 番目の水準までのすべての交互作用水準が計算されます。たとえば、3 という値は、主効果と 2 因子および 3 因子の交互作用を意味します。k = 1 および k = 2 という値は、それぞれ 'linear' および 'interaction' を指定することと同じです。k = N という値は、'full' を指定することと同じです。

  • 項の行列 ― 項定義の行列。関数 x2fx の入力と同じ形式を使用します。すべての入力は、(高次ではない) 0 または 1 でなければなりません。

    anovan で計算する主要項と交互作用項をより詳細に制御するため、主要項と交互作用項のそれぞれについて 1 つの行がある行列を ANOVA モデルに含めるように指定できます。N 個の 0 または 1 が含まれているベクトルを使用して、各行で 1 つの項を定義します。次の表に、因子 A、B および C がある 3 因子 ANOVA のコード化を示します。

    行列の行分散分析項

    [1 0 0]

    主要項 A

    [0 1 0]

    主要項 B

    [0 0 1]

    主要項 C

    [1 1 0]

    交互作用項 AB

    [1 0 1]

    交互作用項 AC

    [0 1 1]

    交互作用項 BC

    [1 1 1]

    交互作用項 ABC

    たとえば、A、B、C という 3 つの因子がある場合に 'model',[0 1 0;0 0 1;0 1 1] を指定すると、anovan は主効果 B および C と交互作用効果 BC について検定を行います、。

    項の行列を簡単に生成するには、出力引数 terms を変更します。この出力引数では、上記の形式を使用して現在のモデルの項がコード化されています。たとえば、anovantermsに対して [0 1 0;0 0 1;0 1 1] を返した場合、交互作用 BC が有意でないとすると、model[0 1 0;0 0 1] を指定することで、主効果 B および C について ANOVA を再計算できます。

例: 'model',[0 1 0;0 0 1;0 1 1]

例: 'model','interaction'

データ型: char | string | single | double

グループ化変数間の入れ子関係。'nested' と行列 M のコンマ区切りのペアとして指定します。この行列は 0 と 1 で構成され、変数 i が変数 j で入れ子にされている場合に M(i,j) = 1 になっている必要があります。

連続変数で入れ子を指定することはできません。

たとえば、2 つのグループ化変数 District および School があり、School が District で入れ子にされている場合、この関係は次のように表すことができます。

例: 'nested',[0 0;1 0]

データ型: single | double

確率変数のインジケーターは、どのグループ化変数が変量効果をもつかを表します。'random' とインジケーターのベクトルをコンマ区切りのペアとして指定します。既定では、anovan はすべてのグループ化変数が固定効果をもつものとして扱います。

交互作用項における変数のいずれかが変量効果をもつ場合、anovan では交互作用項に変量効果があるとして扱います。

例: 'random',[3]

データ型: single | double

二乗和のタイプ。'sstype' と次のいずれかのコンマ区切りのペアとして指定します。

  • 1 ― タイプ I の二乗和。その項を、それより前に列挙された項がすでに含まれている近似に加算することで取得される、残差の二乗和における減少分です。

  • 2 ― タイプ II の二乗和。その項を、その項が含まれていない他のすべての項で構成されるモデルに加算することで取得される、残差の二乗和における減少分です。

  • 3 ― タイプ III の二乗和。その項を、他のすべての項で構成されるモデルに加算することで取得される、残差の二乗和における減少分です。ただし、それらの効果は、モデルを推定可能にする通常の "シグマ制約" に限定されます。

  • 'h' — 階層モデル。タイプ II に似ていますが、連続的な因子とカテゴリカル因子を使用して項の階層を決定します。

任意の項に対する二乗和は 2 つのモデルを比較することで決まります。主効果が含まれており交互作用は含まれていないモデルの場合、sstype の値は不均衡なデータに対する計算のみに影響を与えます。

2 つの因子およびそれらの交互作用をもつモデルを当てはめると仮定します。項は A、B、AB という順序で現れるとします。R(·) はモデルの残差二乗和を表すとします。したがって、R(A, B, AB) はモデル全体を当てはめた場合の残差二乗和、R(A) は A の主効果のみを当てはめた場合の残差二乗和、R(1) は平均値のみを当てはめた場合の残差二乗和です。3 種類の二乗和は次のようになります。

用語タイプ 1 の二乗和タイプ 2 の二乗和タイプ 3 の二乗和

A

R(1) – R(A)

R(B) – R(A, B)

R(B, AB) – R(A, B, AB)

B

R(A) – R(A, B)

R(A) – R(A, B)

R(A, AB) – R(A, B, AB)

AB

R(A, B) – R(A, B, AB)

R(A, B) – R(A, B, AB)

R(A, B) – R(A, B, AB)

タイプ 3 の二乗和のモデルには、シグマ制約が付されています。したがって、R(B, AB) を当てはめるとき、AB 効果の配列は B の各値について A で合計 0 となり、A の各値について B で合計 0 となります。

例: 'sstype','h'

データ型: single | double | char | string

グループ化変数の名前。'varnames' と文字行列、string 配列、または文字ベクトルの cell 配列から構成されるコンマ区切りのペアとして指定します。

例: 'varnames',{'Gender','City'}

データ型: char | string | cell

出力引数

すべて折りたたむ

p 値。ベクトルとして返されます。

出力ベクトル p は、指定した N 個の主効果と交互作用項に対する帰無仮説についての p 値です。要素 p(1) には、因子 A のすべての水準にある標本が同じ母集団から抽出されたという帰無仮説についての p 値が格納されます。要素 p(2) には、因子 B のすべての水準にある標本が同じ母集団から抽出されたという帰無仮説についての p 値が格納されます。他の要素も同様です。

たとえば、3 つの因子 A、B、C および 'model',[0 1 0;0 0 1;0 1 1] を指定した場合、出力ベクトル p には、主効果 B と C および交互作用効果 BC に関する帰無仮説の p 値がそれぞれ含まれています。

ある因子に対応する p 値が十分に小さい場合、少なくとも 1 つのグループ平均が他のグループ平均と有意に異なることがわかります。つまり、その因子による主効果があることを意味します。p 値が 0.05 または 0.01 未満の場合、一般的に有意な結果であると言えます。

ANOVA 表。cell 配列として返されます。この ANOVA 表には、7 つの列があります。

列名定義
source変動性の原因
SS各原因による二乗和
df各原因に関連付けられている自由度
MS各原因の平均二乗 (比率 SS/df)
Singular?項の特異性の指標
FF 統計量 (平均二乗の比率)
Prob>Fp 値 (F 統計量が検定統計量の計算値より大きい値になる確率)。anovan では、F 分布の cdf からこれらの確率が導き出されます。

名前と値のペアの引数 random を使用して 1 つ以上のグループ化変数をランダムとして指定した場合、ANOVA 表には次の列も含まれます。

列名定義
Type各ソースのタイプ。固定効果の場合は 'fixed'、変量効果の場合は 'random'
Expected MS平均二乗について予想される値のテキスト表現。Q(source)source の二次関数を、V(source)source の分散を表す。
MS denomF 統計量の分母。
d.f. denomF 統計量の分母の自由度。
Denom. defn.F 統計量の分母のテキスト表現。MS(source)source の平均二乗を表す。
Var. est.分散成分の推定値。
Var. lower bnd分散成分推定値の 95% 信頼区間の下限。
Var. upper bnd分散成分推定値の 95% 信頼区間の上限。

関数 multcompare による多重比較検定で使用する統計量。構造体として返されます。

anovan では、ある因子 (より一般的には項) の複数のグループ (水準) が同じ効果をもつという仮説を、異なる効果をもつグループがあるという対立仮説に対して評価します。水準のどのペアで有意差があり、どのペアで有意差がないかを確認する検定を実行した方が良い場合もあります。このような検定は、関数 multcomparestats 構造体を入力として指定することによって実行できます。

stats 構造帯には、関数 multcompare を使用して多重比較検定を行うために必要な他のフィールド数に加えて、以下のフィールドを含みます。

フィールド説明

coeffs

推定された係数

coeffnames

各係数に対する項目名

vars

各項目に対するグループ化変数値の行列

resid

当てはめられたモデルからの残差

名前と値のペアの引数 random を使用して 1 つ以上のグループ化変数をランダムとして指定した場合、構造体 stats には次のフィールドも含まれます。

フィールド説明

ems

期待された平均二乗

denom

分母の定義

rtnames

無作為な項目の名前

varest

分散成分の推定 (無作為な項目に対して 1 つ)

varci

分散成分の信頼区間

主要項と交互作用項。行列として返されます。この項は、入力 model について上記で説明した形式と同じ形式で出力行列 terms にエンコードされます。この形式で model 自体を指定した場合、同じ行列が terms に返されます。

代替機能

anovan を使用する代わりに、関数 anova を使用して anova オブジェクトを作成できます。関数 anova には次の利点があります。

  • 関数 anova では、ANOVA モデルのタイプ、二乗和のタイプ、カテゴリカルとして扱う因子を指定できます。anova では、table の予測子と応答の入力引数もサポートされます。

  • anova オブジェクトのプロパティには、anovan で返される出力に加えて以下が含まれます。

    • ANOVA モデルの式

    • 当てはめられる ANOVA モデルの係数

    • 残差

    • 因子と応答データ

  • anova オブジェクトを当てはめた後に、anova のオブジェクト関数を使用して追加の解析を実行できます。たとえば、ANOVA の平均の多重比較についての対話型プロットを作成したり、因子の各値の平均応答推定を取得したり、分散成分推定を計算したりできます。

参照

[1] Dunn, O.J., and V.A. Clark. Applied Statistics: Analysis of Variance and Regression. New York: Wiley, 1974.

[2] Goodnight, J.H., and F.M. Speed. Computing Expected Mean Squares. Cary, NC: SAS Institute, 1978.

[3] Seber, G. A. F., and A. J. Lee. Linear Regression Analysis. 2nd ed. Hoboken, NJ: Wiley-Interscience, 2003.

バージョン履歴

R2006a より前に導入