Microsoft Excel を使った統計解析     last modified:

 Microsoft Excel の統計関係の関数のオンラインヘルプは「嘘,曖昧,不親切」の 3 語に尽きます。日本語訳も悪く,ちゃんとした訳語になっていないものも多いですし,元の英語の段階で間違えている可能性もあります。そこで,以下のようなものをまとめまてみました。


以下に示す例では,


検定・区間推定

ztest(データ範囲, 定数値)

オンラインヘルプでは「z 検定の両側 P 値を返します」と書いてありますが,真っ赤な嘘です。返されるのは片側 P 値です。それに,次項の 「カイ二乗検定」は何とか許せるが,「z 検定」などという用語は一般に通用するものではない。どうも,母平均の検定もできるものらしいですね。非常に不適切な Excel のオンラインヘルプ
Excel 2004 になって,オンラインヘルプが改訂されましたが,支離滅裂であることには変わりありませんでした。曰く,
「z 検定の片側 y 値を返します。ZTEST 関数は、仮説母集団の平均を _0 とした場合に、標本平均がデータ セット (配列) の実測値の平均 (実際の標本平均) よりも大きくなる確率を返します。」
「片側 y 値」,「_0」って,何なの?
「標本平均がデータ セット (配列) の実測値の平均 (実際の標本平均) よりも大きくなる確率」って,何なの?

例:
ztest(data,5)1-normsdist((average(data)-5)/(stdev(data)/sqrt(count(data)))) と同じです。これは,母分散が未知の場合の母平均の検定もできるというものでしょう。ztest の 1 番目の引数は標本のデータで,これに基づいて標本平均を計算します。2 番目の引数は母平均値です。標準誤差として,stdev(data)/sqrt(count(data))を使うことになっています。しかし,n = count(data) が小さいときには正確には t 分布を使わなくてはなりませんから,なんの説明もなく ztest 関数を提供する Microsoft の姿勢は非難されてもしかたないでしょう。
ztest 関数は引数を 3 つ持つ場合もあります。このとき,ztest(data,5,sd)1-normsdist((average(data)-5)/(sd/sqrt(count(data)))) と同じです。つまり,ztest 関数が 3 つの引数を持つときは,3 番目の引数は母分散として解釈され,母分散が既知のときの母平均の検定もできるのでしょう(MS のアプリケーションデザインのセンスを疑います)。

chitest(観察値のデータ範囲, 期待値のデータ範囲)

いわゆる「カイ二乗検定」,正確に言えば独立性の検定を行います。例題として,独立性の検定の表 1 の例を解いてみましょう。
figure
のように,上の四角で囲んだ領域(observed)にある観察値に基づいて,下の四角で囲んだ領域(expected)にある期待値を用意しておきます。
chitest(observed,expected) は 0.033006445 を返します。これは独立性の検定の有意確率(P 値)です。

実際に使ってみると,非常に不便であることがわかります。プロならばもうちょっとましな関数を作るべきだと思います(これじゃプログラマでなくてアマグラマですね)。VBA の初心者が作ったもうちょっとましな関数の例を見てみませんか?

ttest(データ範囲1, データ範囲2, tail, type)

2 個の平均値の差の検定の結果の有意確率(P 値)を返します。
tail が 1 のときは片側検定,2 のときは両側検定を行います。
type が 1 のときは data1data2 に対して対応のある場合の平均値の差の検定,2 のときは等分散を仮定した(通常の)2 群の平均値の差の検定,3 のときは等分散ではないときの(welch の方法による)2 群の平均値の差の検定を行います。
type として,これ以外の値を指示されるとエラーになります(なんだかな)。

例:
ttest(data1,data2,2,1) は 0.167103315 を返します。
ttest(data1,data2,2,2) は 0.243094636 を返します。
ttest(data1,data2,2,3) は 0.251913001 を返します。

ftest(データ範囲1, データ範囲2)

2 群の等分散性の検定の,両側有意確率(P 値)を返します。

例:ftest(data2,data1) は 0.301543147 を返します。
重要:オンラインヘルプには「片側 P 値」と書いてありますが,それは真っ赤な嘘です。なぜなら,fdist(var(data2)/var(data1),4,4) の値は 0.150771574 になることから明らかです。


Excel 2004 になって,やっと,オンラインヘルプが修正されました。曰く,
「F 検定の結果を返します。F 検定により、配列1 と 配列2 とのデータのばらつきに有意な差が認められない両側確率が返されます。FTEST 関数を利用すると、2 つの高等学校で同じテストを実施した場合、両校の生徒の成績に有意な差が認められるかどうかを調べることができます。」
しかし,「ばらつきに有意な差が認められない両側確率」というのはいったいなんですか。
また,「両校の生徒の成績に」ではなく,「両校の生徒の成績の分散に」です。
統計学の試験なら減点ですよ,ゲイツ君。
confidence(alpha, sigma, n)

母分散が既知の場合における,母平均値の信頼区間の幅の 1/2 を返します。

例:母分散が 25(母標準偏差 sigma が 5)で,標本の大きさ n が 30,標本平均が 157.8,信頼率 95%(alpha = α = 0.05)のとき,confidence(0.05,5,30) は 1.789191494 を返します。99% 信頼区間は [157.8-1.789191494, 157.8+1.789191494] すなわち,[156.0108085, 159.5891915] となります。


Excel 2004 で,オンラインヘルプは饒舌になりました。しかし,何を言っているのか理解しようという気にもなれません。曰く,
「母集団の平均に対する信頼区間の算出に使用できる値を返します。信頼区間とは標本平均 x を中心とする両側の範囲で、x ± CONFIDENCE で表されます。たとえば、通信販売の商品に対する配達時間の標本平均を x とし、母集団の平均の範囲を x ± CONFIDENCE とします。この範囲内にある任意の母集団の平均を _0 とするとき、標本平均 x と _0 が離れるほど確率の値はαよりも大きくなり、この範囲外にある任意の母集団の平均を _0 とするとき、標本平均 x と _0 が離れるほど確率の値はαよりも小さくなります。つまり、x、標準偏差、標本数を使用して、母集団の平均を _0 と仮定し有意水準αで両側分布検定を行った場合、_0 が信頼区間にあれば仮定は認められ、信頼区間になければ仮定は却下されます。次の荷物が信頼区間内の時間に配達される確率が 1 〜αであるかどうかは、信頼区間からは推定できません。」

・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI