グループの比較に分散分析
平均はグループの違いを端的に知る強力な方法です。数学の平均点が高いクラスの子は低いクラスの子よりも良い点を取る可能性が高いでしょうし、平均得点の高いAチームと低いBチームでは対戦を重ねるほどに確実にAチームの勝ち数が増えていくでしょう。
ビジネスの世界でも売上高・在庫高・必要経費など、似たような環境にある店舗を比較するときや、新規獲得件数・ノルマ達成率といった個人成績を比較するとき、過去四半期や年間の平均値を利用することがよくあります。
これらは平均値が概ね公平であることを期待しているわけです。何(誰)が優れていて何(誰)が劣っているのかを平均値に信頼をおいて判断する。平均値を比較すれば優劣が分かる。そう考えます。
例えば、貴方がオーナーの店舗が3つあったとします。それら店舗の平均売上に違いがあると言えるのかどうか確かめたいとします。その場合、単に数ヶ月分の売上を平均して比較すれば問題ないのでしょうか。
: ------ ______________________ ------ :
: | 880 | 交通の利便性、店舗や | 6090 |・・・・・・・
・・・・| 600 | 駐車場の広さ、周辺の | 1500 |
| 500 | 人口に大差はない。 | 2900 |
| 1200 | ------
| 380 | B店舗
------ : ------
・・・・・・・| 1500 |
| 1400 |
| 1400 |
| 1900 |
------
どのようなものにも必ずばらつきがあります。希な大口注文があるかもしれないし、突発的な費用が発生するかもしれません。いくらかの数値を集めて平均すれば多少の誤差は吸収できるかもしれませんが、グループ(店舗)固有の変動まで鑑みることはできません。
たまたまの売上の変動で能力の優劣を決めたのでは問題です。ばらつきも考慮しながらも、各グループの平均値に本当に違いがあるのかどうかを判定する方法が望まれます。
2つのグループの平均値の違いを統計的に検定するには、t分布を使った母平均の差の検定を使えばよいのですが、3つ以上のグループとなるとt分布は利用できません。
グループ平均の違いを知るには
実はそのような便利な方法が存在します。名前を分散分析と言います。
分散分析はANOVA(analysis of variance)とも呼ばれ、20世紀統計学の偉人の一人であるフィッシャー(1890~1962)が確立した統計的手法です。彼は農業試験場で山済みになっていた膨大な実験データから大量の計算をこなし、分散分析に代表される革新的な仕事を成し遂げました。
フィッシャーは改良を行なうための指針として統計的数値を捉えていて、仮説検定で5%等の定数を用いて、仮説の是非を決めることに否定的でした。興味深いことにタバコと癌の発病関係もフィッシャーは認めていません。
分散分析を使った平均値の比較
3つ以上のグループの平均値に違いがあるかどうかは、以下の数式を計算すれば分かります。最終的にF値(FisherのF)が計算されますが、その値をある値と比較することで統計的に違いがあると判断できます。
まず、F値は級間変動と級内変動の比で表されます。
F = ----
Sw (級内変動)
それぞれ級間変動と級内変動の数式は以下のとおりです。Sbが級間変動、Swが級内変動です。
(∑x1) (∑x2) (∑xn) (∑xm)
------ + ------ + … + ------ - ------
N1 N2 Nn Nm
Sb = --------------------------------------
K - 1
2 2 2
2 2 2 (∑x1) (∑x2) (∑xn)
∑x1 + ∑x2 + … + ∑xn - [ ------ + ------ + … + ------ ]
N1 N2 Nn
Sw = -----------------------------------------------------------
Nm - K
なお、Kは級数(グループ数)、xiはグループ内のデータ、xmは全データ、Nmは全データ数、Niはグループ内のデータ数です。
数式は一元配置分散分析のものです。なお、級間変動のKが2の場合はχ2乗検定が使われます(グループ数が2つの場合)。また、分散分析を使うには母集団がガウス分布に従っているという前提が必要です。
分散分析を使った検定の実際
具体的に冒頭の店舗売上データを使って、計算していきましょう。上記の数式は全てrpn式に置き換えてありますので、そのまま実行すれば結果を得ることができます。
まず、『3店舗の平均売上には差がない』という仮説を立てます。統計的検定で、この仮説を棄却か保留することになります。
正確には帰無仮説と言います。
売上データですが、それぞれ"g1.txt"、"g2.txt"、"g3.txt"の3つのファイルに格納されているとします。内容は以下のとおりです。
880 1500 6090
600 1400 1500
500 1400 2900
1200 1900
380
そして、それぞれの売上データをまとめたファイルを"gm.txt"としておきます。これでデータファイルの準備は終了です。
次に上記の式を次のように置き換えます。b1、b2、b3、bm、w1、w2が計算できればF値を求めることができるわけです。
Sb = -----------------
K - 1
w1 - w2
Sw = -------
Nm - K
まず、級間変動(Sb)の数式をそれぞれの項目ごとにrpnで計算します。
>rpn @s + #s @n 1 + #n -e @s . * @n / <g2.txt >b2
>rpn @s + #s @n 1 + #n -e @s . * @n / <g3.txt >b3
>rpn @s + #s @n 1 + #n -e @s . * @n / <gm.txt >bm
これで級間変動の分子が計算できます。なお、3店舗なのでKは3です。
ファイルの"sb"に級間変動の値が格納されました。次に級内変動の数式を項目ごとに計算します。まず、分子の分です。
>paste b1 b2 b3 | rpn + + >w2
次に全データ数が12個、店舗数が3であることに注意して、級内変動を計算してみましょう。
ファイルの"sw"に級内変動の計算結果が入りました。
F分布表による検定
それでは、F値を求めてみることにします。F値は級間変動と級内変動の比ですから、以下のrpn式で簡単に計算できます。
5.64912
これが求めていたF値です。このF値と分子(級間分散)と分母(級内分散)の自由度が交差した点のF値をF分布表から読み取り、比較します。
つまり、分子(K-1)と分母(Km-K)が交差する値を読み取ります。ビジネス統計講座(推定編)を受講している人はこちらを。その他の人はインターネットで検索するといいでしょう。
実際には分子の自由度は3-1=2、分母の自由度は12-3=9です。2と9の交差点にある数値をF分布表から読み取ると4.26です。比較すると…。
従って、先ほど立てた仮説は棄却されて、店舗の平均売上には有意な差があると言えます(少なくとも1つの組み合わせで)。
使用したのは信頼度95%(5%有意水準)のF分布表です。つまり、20回に1回は間違っている可能性があります。ちなみに信頼度99%(1%有意水準)のF分布表を使うと8.02になるので、平均売上に違いがあるとは認められません。
ちなみに、C店舗の売上の6090を2400に変えた場合、F値はどうなるでしょうか。見た目には店舗間の差が縮まるように思えますが、計算すると13.15となって平均売上の違いがより明確になります。ばらつきが減少するからですね。
次は…
グループの平均値が統計的に有意な差と認められるかどうかを分散分析による検定で調べてみました。しかし、冒頭に示したように2つのグループの平均であれば母平均の差の検定を使うことができます。何も分散分析を使用する必要はありません。
例えば3つのグループABCがあるとして、それぞれAグループとBグループについて母平均の差の検定を行い、続いてBグループとCグループ、最後にCグループとAグループの検定を行なえば問題はないように思います。
ただし、この方法は禁じ手です。2つのグループ同士で検定を繰り返すと、間違って有意差判定する確率が上がってしまうのです。次は3つのグループの平均について、母平均の差の検定を繰り返した場合と分散分析を行なった場合の違いを検討してみます。結果に違いは見られるのでしょうか。
rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。
pasteは講座サポートで公開されています。