ユーザ用ツール

サイト用ツール


メモ:分散分析

文書の過去の版を表示しています。


分散分析のメモ

Rで各種分散分析を実行する際のメモ。

竹原卓真(2007)『SPSSのススメ1 2要因の分散分析をすべてカバー』北大路書房を参照して、Rで同じ分析結果を再現しながら勉強。

備忘録

ネストした分散分析について

ネスト構造にあるデータの分散分析では、親要素のみで分散分析をした場合と、子要素もモデルに含めて分析した場合では、親要素の平方和は変わらない。子要素を投入すると、誤差の平方和が子要素で説明できる分だけ減少し、その分が子要素の平方和となる。

ネスト構造にあるデータでは、共通の親要素の範囲内に限定して平方和を計算するようだ。Rではネストしたデータの分散分析を以下のように行う。

summary(aov(SCORE ~ A / b, dat=DATA))

この場合、Aが親要素で、Aの中にbがネストされている。この式ではRは自動的に

summary(aov(SCORE ~ A + A:b, dat=DATA))

と展開して分散分析をを実施する。つまり親要素の主効果と、親要素と子要素の交互作用の2つの変数を要因とした分散分析になる。子要素は親要素ごとに分析されるということを考えれば、親要素と子要素の交互作用がネストされたデータの子要素を示す要因であることが理解できそうである。

ところで、ネストされたデータは

親  子  SCORE
A   a   10
A   b   20
A   c   30
B   d   20
B   e   25
B   f   30
C   g   15
C   h   11
C   i   23

というデータ構造になる。このようにコーディングされたデータでは、以下の分析結果は同じになる。

summary(aov(SCORE ~ 親 + 子, dat=DATA)) #親・子を独立した変数として分析
summary(aov(SCORE ~ 親 / 子, dat=DATA)) #子が親にネストされたデータとして分析
summary(aov(SCORE ~ 親 + 親:子, dat=DATA)) #ネストされたデータの別表現

このデータでは子要素は親要素に関係なく、すべてのサンプルで異なったコードが割り当てられている。そのため平方和の計算では、親子が独立した変数として投入されても、ネストされていても同じになる。前者では親要素が同時にモデルに存在するので親要素が統制され、親要素ごとに平方和が計算される。ネストされていても同様の計算がされるので、考え方は異なってもやっている計算結果は結局同じ。

ここでデータ構造を少し変えてみよう。

親  子  SCORE
A   a   10
A   b   20
A   c   30
B   a   20
B   b   25
B   c   30
C   a   15
C   b   11
C   c   23

先のデータから少しコーディングを変更して、子要素のコードが親要素ごとに再利用するようにした。この時、子要素は親要素にネストされているものなので、子要素のコードは単独では意味がなく親要素と組み合わせて初めて一意なデータを示す。そうすると、親子を独立した変数としてモデルに投入する場合とは結果が異なってくる。

summary(aov(SCORE ~ 親 + 子, dat=DATA)) #親・子を独立した変数として分析

この場合、親子が独立した変数として投入されているので、各親要素の中にある子要素(例えばaやb)は子要素変数の同じ水準を示すことになる。しかし、ネストされているデータでは親Aの子aと親Bの子aは無関係である。親要素ごとにデータが収集された際に、親ごとに連番を与えている場合などで、このようなことが生じる。そこで、きちんとネスト関係を指示してやる。

summary(aov(SCORE ~ 親 / 子, dat=DATA)) #子が親にネストされたデータとして分析

こうすることで、子は親にネストされているものとして平方和が計算される。具体的には、子要素の平方和は親要素との交互作用で計算される。そのため、親要素をまたがって子要素のコードが重なっていても、親要素が異なれば計算上は無関係となるので、期待通りの計算結果が得られる。

メモ/分散分析.1504745763.txt.bz2 · 最終更新: 2017/09/07 09:56 by Wiki Editor

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki