logo
生物科学研究所 井口研究室
Laboratory of Biology, Okaya, Nagano, Japan
Home

Maxima も Welch 検定:等分散検定は不要

井口豊(生物科学研究所,長野県岡谷市)
最終更新:2018年11月6日

2 群の平均値の差の検定として, Welch 検定が推奨されることはウェブページ 等分散検定から t検定,ウェルチ検定,U検定への問題点 で詳しく解説した。要するに,等分散検定をした上で,等分散なら通常の t 検定,等分散でなければ Welch 検定という使い分けは妥当ではない,等分散検定をせずに Welch 検定をしよう,という趣旨なのである。Welch の意図を解説したページ(ウェルチ検定の意図とは: 非等分散が前提ではない)にも書いたが,そもそも,Welch 検定は,等分散か否かを仮定しない,という前提で考案された。非等分散の場合に使われるという前提ではないのである。

統計解析ソフト R の t.test 関数では,デフォルトで,つまり,非等分散の指定をしなくても,Welch検定を実施する。

例えば,次のような 2 群 x,y を考えて,t.test 関数で,特にオプションを指定せず,平均の差の検定を行なう。

x<- c(2, 2, 3)
y<- c(4, 8, 11)
t.test(x, y)

結果の概要は次の通りである。
Welch Two Sample t-test
t = -2.5955, df = 2.108, p-value = 0.1156

見てのとおり,デフォルトで Welch 検定を実施する。

これは,分散分析の関数 oneway.test を利用しても同じである。分散分析は,2群(2標本)以上の平均値の差の検定法である。これまた, 3 群以上,と誤って解説する大学教員さえいるので注意が必要である。 oneway.test の help解説を読むと,下部の See Also の項目に
The standard t test (t.test) as the special case for two samples
と,ちゃんと書かれている。 2 群以上の分散分析の中の特殊な場合が t 検定なのである。

前述の2群に対して,oneway.test をデフォルトで使うと,以下のようになる。

dat<- c(x, y)
grp<- rep(c(1, 2), c(3, 3))
oneway.test(dat ~ grp)

結果の概要は次の通りである。
One-way analysis of means (not assuming equal variances)
F = 6.7368, num df = 1.000, denom df = 2.108, p-value = 0.1156

当然ながら,前述の Welch 検定の p 値と一致する。それは,分母(denominator)の自由度 2.108 が Welch 検定の自由度となり,F 値の平方根(ここでは正の値としておく)
sqrt(oneway.test(dat ~ grp)$ statistic)
が,t 値に一致するからである。

つまり,t が自由度 n の t 分布に従えば,t2 = F は,自由度 (1, n) の F 分布に従う,という定理が使われている。

三重大・奥村晴彦氏が, t 検定の解説ページで,「分散が等しかろうと等しくなかろうと,最初からズバリ「等分散を仮定しない t 検定」を行うのが正しいやり方である」と断じているのは,水戸黄門的な爽快感を感じるのだが,日本の大学教員の場合,少なくとも,ネット上で,そのような断言は,そう多くない。

ここまで,R の計算について述べてきたが,ここから,タイトルどおり Maxima の計算について触れる。Maxima は,R と異なり,数式処理専門のフリーソフトであり,その意味では,統計計算は充実していない。しかし,それでもなお,t 検定程度の簡単な検定なら可能である。余談だが,前述の奥村氏が,かつて放送大学の講義で Maxima の解説をしていた。また,コクワガタの3型を統計解析した私の研究でも Maxima が使われた。

Iguchi, Y. (2013)
Male mandible trimorphism in the stag beetle Dorcus rectus (Coleoptera: Lucanidae)
European Journal of Entomology, 110: 159-163.

フリーソフトだと信用が無いかのようなトンチンカンな心配が時々聞かれるが,決してそんなことはない。私が統計解析の指導をした松延祥平さん(筑波大)は,ホヤの尾の吸収に関する研究をしたが,フリーソフト R を効果的に使い,そのことを論文にも記している。

Matsunobu S. and Sasakura Y.
Time course for tail regression during metamorphosis of the ascidian Ciona intestinalis
Developmental biology, 405(1), 71-81.

修士研究をしていた松延さんは,当初,R を全く使えず,それをインストールすることから始めた。その後,それを使いこなし,最終的には見事な分析結果を出した。しかも,これらは全て電子メールとその添付ファイルで何回も私とやり取りして生まれた結果である。

Maxima の場合,統計解析にはパッケージ stats を使う。その上で, R で使ったデータで, t 検定をデフォルトで行なってみる。

load("stats")$
x: [2, 2, 3]$
y: [4, 8, 11]$
test_means_difference(x, y);

その結果の概要は次の通りである。
method = Exact t-test. Welch approx.
distribution = [student_t, 2.108029197080292]
p_value = 0.11559643427222

言うまでも無く,Maxima もデフォルトで Welch 検定の結果なのである。デフォルトで 14 桁まで出力するのは,いかにも Maxima らしい。

t 検定というと,大学の講義では,まず等分散を仮定したt検定を教えるのだが,実際のデータ解析では,まず Welch 検定を考えるべきであることを,R や Maxima が物語っている。

Home