Skip to content

Weighted ANOVA

ここでは各データに誤差がついているケースで分散分析 (analysis of variance, ANOVA) をおこなう方法を考えます. 通常の ANOVA では各データの信頼性は同じとして扱いますが, 各データに誤差が定義されている (信頼性が異なる) 場合には適切に重み付けをする必要があります.

F-distribution

ANOVA では F 値を計算して帰無仮説からの逸脱を検証します. ここで, F 値は χ² 分布に従う独立な 2 つの数の比として定義されます.

\[ F = \frac{\chi_1^2(d_1) \big/ d_1}{\chi^2_2(d_2) \big/ d_2}, \]

ここで \(\chi_i^2(d_i)\) は自由度 \(d_i\) の χ² 分布に従う確率変数です. このとき, F 値は自由度 \((d_1, d_2)\) の F 分布に従います. 以上の定義から F 分布は 0 以上の値を取る連続的な確率分布であり, 非対称な分布であることがわかります. 平均と分散はそれぞれ \(d_2 > 2\), \(d_2 > 4\) となるケースに対して以下のように定義されます.

\[ \frac{d_2}{d_2 - 2}, \quad 2 \frac{d_2^2(d_1 + d_2 - 2)}{d_1(d_2 - 2)^2(d_2 - 4)}. \]

自由度 \(d_1\), \(d_2\) が非常に大きいとき, 分母・分子はそれぞれ以下のように正規分布を用いて近似することができます.

\[ \chi^2(d_1) \big/ d_1 \sim \mathcal{N}\left(1, \sqrt{\frac{2}{d_1}} \right), \quad \chi^2(d_2) \big/ d_2 \sim \mathcal{N}\left(1, \sqrt{\frac{2}{d_2}} \right). \]

ここで F 分布の確率密度関数も以下のように近似できます.

\[ \begin{aligned} F(x) & \simeq \int \mathrm{d}r~~ \mathcal{N}\left(xr ~\middle|~ 1, \sqrt{\frac{2}{d_1}} \right) \mathcal{N}\left(r ~\middle|~ 1, \sqrt{\frac{2}{d_2}} \right) \\ & \propto \exp\left[~- \frac{1}{2} \frac{(x-1)^2}{2\left(x^2/d_2 + 1/d_1\right)} ~\right] \end{aligned} \]

ここで \(F(x)\)\(x \simeq 1\) 付近でしかほとんど値を持たないので正規分布で近似することが出来ます. 自由度が非常に大きい場合にはこちらの式で代替することができます.

\[ F(x) \approx \mathcal{N}\left(x ~\middle|~ 1, \sqrt{\frac{2}{d_1} + \frac{2}{d_2}} \right). \]

F-test of equality of variances

2 つのデータ系列 \(\{x_i\}, \{y_j\}\) が与えられたとき, その分散が等しいかどうかを考えてみます. データ系列を標準化するとそれぞれ標準正規分布に従うことが期待されます.

\[ \frac{x_i - \bar{x}}{\sigma_x} \sim \mathcal{N}(0, 1), \quad \frac{y_j - \bar{y}}{\sigma_y} \sim \mathcal{N}(0, 1) \]

よって, 各データ系列の平均からの偏差の 2 乗和は χ² 分布に従います. それぞれの自由度はデータ数から 1 を引いたものになります.

\[ \frac{1}{\sigma_x^2} \sum_i \left( {x_i - \bar{x}} \right)^2 \sim \chi^2(N_x - 1), \quad \frac{1}{\sigma_y^2} \sum_j \left( {y_j - \bar{y}} \right)^2 \sim \chi^2(N_y - 1). \]

ここで以下の量を定義します.

\[ SS_x = \frac{1}{N_x - 1} \sum_i \left( {x_i - \bar{x}} \right)^2, \quad SS_y = \frac{1}{N_y - 1} \sum_j \left( {y_j - \bar{y}} \right)^2. \]

さらに F 値を以下のように定義します.

\[ F = \frac{SS_x}{SS_y}. \]

もし, データ系列 \(\{x_i\}, \{y_j\}\) の分散が等しい場合, F は自由度 \((N_x - 1, N_y - 1)\) の F 分布に従います. 計算した F 値が分布 \(F(N_x-1, N_y-1)\) から期待される値を大きく逸脱している場合には, データ系列の分散が等しいとみなすことはできないと言うことができます.

F-test for analysis of variance

分散分析 (analysis of variance, ANOVA) とは 2 つ以上のデータ系列の平均が等しいかどうかを検定する方法です. ここでは, データ系列 \(\{x_i^k\}\) の平均について検証します. ここで \(k\) はデータ系列のインデックスを表します. ここでは測定されるデータが以下のような関係に従うことを想定します.

\[ x_i^k \sim \mathcal{N}(\mu + \tau^k, \sigma). \]

\(\tau^k\) はデータ系列に固有の作用係数です. データ系列の平均値が等しい場合には \(\tau^k = 0\) となることが期待されます. データ系列の平均とデータ全体の平均は以下のように定義されます.

\[ \bar{x}^k = \frac{1}{N_k} \sum_i x_i^k, \quad \bar{x} = \frac{1}{N} \sum_k \sum_i x_i^k, \]

ここで \(N_k\) はデータ系列 \(k\) のデータ数, \(N = \sum_k N_k\) は全データ数を表します. ANOVA ではデータ系列内の分散 (二乗和, sum of squares) とデータ系列間の分散を評価します. データ系列 \(k\) の内部分散の合計値は以下の式で定義されます.

\[ SS_W = \sum_k \sum_i \left( x_i^k - \bar{x}^k \right)^2. \]

仮定したモデルが正しい場合には \(x_i^k - \bar{x}^k \sim \mathcal{N}(0, \sigma)\) となります. よって \(SS_W\) を適切にスケールすることで χ² 分布に従うことが期待されます. データの総数は \(N\) 個ですが, \(K\) 系列の平均値を推定しているため, 自由度は \(N - K\) になります.

同様にデータ系列間の分散を計算します. ここでは各データ系列の値をすべてデータ系列の平均値で置き換えると以下のように定義することができます.

\[ SS_B = \sum_k \sum_i \left( \bar{x}^k - \bar{x} \right)^2 = \sum_k N_k \left( \bar{x}^k - \bar{x} \right)^2. \]

\(\bar{x}^k\) の推定には \(N_k\) 個のデータを使用しているため, \(\tau^k = 0\) であれば \(\sqrt{N_k}(\bar{x}^k - \bar{x}) \sim \mathcal{N}(0, \sigma)\) となることが期待されます. よって, \(SS_B\) も適切にスケールすることで χ² 分布に従うことが期待されます. データ系列の個数 \(K\) と全体の平均の分を考慮して自由度は \(K - 1\) になります.

以上の定義から, 以下のように F 値を定義すると \(\tau^k = 0\) のときに自由度が \((K-1, N-K)\) の F 分布に従うことが期待されます.

\[ F = \frac{SS_B \big/ (K - 1)}{SS_W \big/ (N - K)}. \]

この F 値が分布 \(F(K-1, N-K)\) から期待される値を大きく逸脱している場合には, データ系列の平均値が等しいとみなすことはできないと言うことができます.

Weighted ANOVA

通常の ANOVA ではサンプルの分散が等しいと仮定して計算をしていました. 分散が等しいという仮定が成立していれば, 実際の分散の値に関わらず検定ができるという点で有用ですが, 実際の測定では測定によって信頼性が大きく異なることが考えられます. ここではデータ系列 \(\{x_i^k\}\) が以下のような関係に従うことを想定します.

\[ x_i^k \sim \mathcal{N}(\mu + \tau^k, \sigma_i^k). \]

\(\sigma_i^k\) はデータ \(x_i^k\) の測定誤差を表します. こうしたデータを扱うときには, 誤差で適切に重み付けをおこなう必要があります. 重みを \(w_i^k\) としたとき, データ系列 \(k\), およびデータ全体の重み付き平均は以下のように定義されます.

\[ \bar{x}^k = \frac{\sum_i w_i^k x_i^k}{\sum_i w_i^k}, \quad \bar{x} = \frac{\sum_k \sum_i w_i^k x_i^k}{\sum_k \sum_i w_i^k}. \]

ここで, 重み \(w_i^k\) を以下のように定義することで重み付き平均の分散を最小にすることができます (ラグランジュの未定乗数法をもちいると比較的簡単に導出できます). 以下では重みとしてこの定義を採用します.

\[ w_i^k = \frac{1}{(\sigma_i^k)^2}. \]

データ系列内の重み付き分散 \(SS_W\) は以下のように定義されます.

\[ SS_W = \sum_k \sum_i w_i^k \left( x_i^k - \bar{x}^k \right)^2. \]

仮定したモデルが適切であれば \(\sqrt{w_i^k}(x_i^k - \bar{x}^k) \sim \mathcal{N}(0, 1)\) となります. よって, \(SS_W\) は χ² 分布に従うことが期待されます. 全データ数 \(N\) に対して, \(K\) 系列の平均値を推定しているため, 自由度は \(N - K\) になります.

データ系列間の重み付き分散 \(SS_B\) は以下のように定義されます.

\[ SS_B = \sum_k \sum_i w_i^k \left( \bar{x}^k - \bar{x} \right)^2. \]

\(\bar{x}^k\) の分散は \(1 \big/ \sum_i w_i^k\) によって与えられます. よって, \(\tau^k = 0\) であれば \(\sqrt{\sum_i w_i^k}(\bar{x}^k - \bar{x}) \sim \mathcal{N}(0, 1)\) となることが期待されます. よって, \(SS_B\) も χ² 分布に従うことが期待されます. データ系列の個数 \(K\) と全体の平均の分を考慮して自由度は \(K - 1\) になります.

以上の定義から, 以下のように F 値を定義すると \(\tau^k = 0\) のときに自由度が \((K-1, N-K)\) の F 分布に従うことが期待されます.

\[ F = \frac{SS_B \big/ (K - 1)}{SS_W \big/ (N - K)}. \]

このようにデータ系列の信頼性が異なっている場合にも ANOVA を定義することができました. ただし, この計算では各データの信頼性が適切に計算されていることを前提としています. もし, 誤差推定に問題がある場合には, 各系列の平均値に違いがなくても計算した値が F 分布から期待される範囲を逸脱してしまう可能性もあります. 重み付きの ANOVA をおこなうときには, 各データの誤差推定が適切におこなわれていることが重要な適用条件になります.