実験テキストを見ていたら、少し気になる記述があって調べ物をしたのでメモ。井口豊(2025-02-17)等分散検定から t検定,ウェルチ検定,U検定への問題点が大変参考になりました。テキストでは教育的に正規性の検定(Shapiro–Wilk検定)、等分散性の検定(F検定)、分散分析、t検定、Welchのt検定、ノンパラメトリック法(Wilcoxonの符号付き順位検定、Kruskal–Wallis検定)、そして第一種の過誤を制御する方法としてボンフェローニの方法が説明されています。教育的でよいのですが、1) 検定の多重性(と分散分析→多重比較という手順)、2) ノンパラメトリック検定について、3) 正規性の検定の必要性、の3点が気になりました。
1) 等分散性の検定(2群の場合はF検定、3群以上では分散分析(ANOVA))→F検定の結果を受けてWelchの補正を加えるか決定すること、分散分析の結果「群間で平均に有意差があれば多重比較が推奨」、という手順が書かれています。これらの手順は2つの理由でよくないです。
- F検定とt検定をそれぞれ5%の有意水準で行った場合、検定全体の有意水準を(例えば5%以内に)制御できない検定の多重性の問題が生じる。
- 分散分析で有意差がなくても、群間多重比較で有意となる場合がある。A、B、Cの3つの群を比較する場合を考えると、分散分析の帰無仮説はすべての群の母平均(\(\mu_A, \mu_B, \mu_C\))が等しい(\(\mu_A = \mu_B = \mu_C\))なのに対して、多重比較(例えばTukeyのHSD検定)の帰無仮説族(ファミリー)は\(\mu_A = \mu_B, \mu_B = \mu_C, \mu_A= \mu_C\)であり異なっているためです。
等分散であるかどうかを確かめてから,普通の t 検定を使うか,Welch の方法による t 検定にするかを決めるというのは,よくない。最初から Welch の方法による t 検定を使えばよい。(青木繁伸(2007-02-08)二群の等分散性の検定; 井口豊(2025-02-17)等分散検定から t検定,ウェルチ検定,U検定への問題点)
総じて、Welchのt検定を使うことで誤った判断を下す確率が減るため、基本的には等分散性の仮定が成り立つかに関わらずWelchのt検定の使用が推奨されている。Rのデフォルトのt検定もWelchのt検定である。(野村康之、t検定の再考1: 等分散性)
1つ目の検定の多重性の問題ですが、例えば同じ確率分布に従う2つの群について、F検定とt検定をそれぞれ有意水準5%で連続して行ったとします。この場合の帰無仮説が正しいにもかかわらずそれを誤って棄却してしまう確率(第一種の過誤、αエラー)を計算します。両検定とも正しく帰無仮説を採択する確率は\(0.95 \times 0.95 = 0.95^2\)です。両方もしくは片方の検定で誤って帰無仮説を棄却する確率は\(1 – 0.95^2 = 0.0975\)となります。元々は第一種の過誤を5%以内に抑えたかったのに、検定全体としては9.75%と10%近い値になってしまうのが検定の多重性の問題です。
2つ目について。分散分析で有意となることを前提とする多重比較法は「Fisherの制約付き最小有意差法(Fisher’s Protected Least Significant Difference)」と「Scheffeの方法」の2つ。Scheffeの方法はすべての対比(contrast)を同時に検定する方法。群のペアの比較(対比較)だけでなく、例えば群Aの平均\(\mu_A\)と群Bと群Cの平均の平均\(\frac{\mu_B + \mu_C}{2}\)など全ての組み合わせの帰無仮説を第一種の過誤の確率を制御しながら検定します。そのため、群間の比較のみに興味がある場合、F検定も分散分析を行わず、はじめからTukeyのHSD検定(等分散性を仮定する)またはそのWelchのt検定版であるGames–Howell法(等分散性を仮定しない)を使うべきです。
「用いる多重比較法の手順の中に含まれている場合のみ一元配置分散分析を行う」となる。それ以外の場合には、分散分析は不要なのではなく、行わないことが原則である。(永田靖. 多重比較法の実際 応用統計学、1998 年 27 巻 2 号 p. 93-108)
2) 標本(群)に母集団が正規分布に従わないものがある場合は、Wilcoxonの順位和検定(Mann–WhitneyのU検定と等価)やKruskal–Wallis検定といったノンパラメトリックな検定を行う旨が書かれています。これは危険です。
Mann–WhitneyのU検定(とKruskal–Wallis検定)の帰無仮説は「両標本が同じ母集団から抽出された」です。この帰無仮説はかなり厳しく、「同じ母集団から抽出された」と考えるので等分散性を前提としていて、不等分散の場合結果に影響します(粕谷英一(2001-11-04)Mann–WhitneyのU検定と不等分散のページ)。Googleで検索すると、ノンパラメトリック検定が正規性も等分散性も必要としない、との誤解が書かれている(もしくはそのように読める)記事も多いです(学会誌『化学と生物』の統計検定に関する記事でもそう読めるものがありました: 『ノンパラメトリック検定は,母集団の分布は正規分布する必要がなく,平均値や分散などのパラメータは使用しない(図29).等分散にならない場合や外れ値がある場合でも利用することができる.』統計検定を理解せずに使っている人のために II、化学と生物、Vol. 51、No. 6、2013、408–417)。
非正規分布、非等分散のデータにて適用できるノンパラメトリック検定としてはBrunner–Munzel検定(中央値に差があるかを検定する)が推奨されています(井口豊(2025-02-17)等分散検定から t検定,ウェルチ検定,U検定への問題点)。
対してt検定による2群比較の帰無仮説は「一つ目の母集団の平均値μ1が2つ目の母集団の平均値μ2と等しい」です。「平均値の差の検定」であり「中心極限定理」が効いてくるため、t検定は正規分布してないデータに対しても頑健(robust)であると言われています。ただし、正規母集団に対してはn = 2でも大丈夫なのに対して、「指数母集団の場合は,適切な結果を得るには,標本サイズが100以上必要」(井口豊(2022-12-06)小標本 t 検定の誤解:中心極限定理と一般化線形モデル)。
正規性も等分散性も成り立たない状況では、平均値の比較ならWelchのt検定、中央値の比較ならBrunner-Munzel検定が検定精度がよい傾向にある。(冨田 哲治、Brunner-Munzel検定)
Welchのt検定は非正規性に対しても非等分散性に対しても頑健なのに対して、Wilcoxonの順位和検定などは脆弱な方法であると言われます。
3) 「標本(群)ごとにShapiro–Wilk検定をおこなって各標本(群)の母集団が正規分布に従うかを検定」して、t検定かノンパラメトリックな検定かを選択する旨が書かれている。
Shapiro–Wilk検定を事前に行うことも「多重性の問題」と「サンプルサイズで検定結果は左右」されるため、推奨されていません。
群ごとや,要因の水準ごとに正規性を検定すると,何が問題なのか?ごく簡単なことで,検定の多重性が問題になるのである。(井口豊(2022-09-12)分散分析の正規性は残差を調べる:検定の多重性問題)
ではどうやって正規性を判断するかというと
基本的には、ヒストグラムを描いて釣り鐘状になっているかを観察します。経験的知見から「このデータは正規分布に従うはずだ」と思えば、正規分布として解析してもかまいません。(「いちばんやさしい、医療統計」(2024-05-07)SPSSで正規性の検定(シャピロウィルクやKolmogorov-Smirnov)を実施する方法!)
Contents
用語のおさらい
- 正規分布(せいきぶんぷ)— ガウス関数\(f(x) = e^{-x^2}\)の分布。平均\(\mu\)、分散\(\sigma^2 > 0\)の正規分布は、$$f(x) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$$
- 大数の法則(たいすうのほうそく) — 標本数を増やしていけば同一な分布から生成した確率変数の算術平均(標本平均)が母集団の平均(母平均)に収束する、という主張。
- 中心極限定理(ちゅうしんきょくげんていり)— どのような形の確率分布を持つ母集団から取られた標本でも、その標本平均の確率分布は正規分布になる、という定理。
- t検定(ティーけんてい)— 大雑把に言うと、2つの群の平均値の差を全体の標準誤差で割った値を検定統計量t $$t_0 = \frac{|\bar{X} – \bar{Y}|}{\sqrt{U_e\left(\frac{1}{m}+\frac{1}{n}\right)}}$$ として、平均値が同じ場合(帰無仮説)にこのtが従う分布、t分布を元にして得られた検定統計量がどれほど起こりづらいか、を判断する。
見ておくべき動画
KyotoU Channel(2018-01-11)臨床研究者のための生物統計学「仮説検定とP値の誤解」佐藤俊哉(医学研究科教授)
統計モデルは一連の仮定(ランダム化・ランダムサンプリングがなされている、研究計画が遵守されている、すべての解析結果が報告されている、など)で構成されている。帰無仮説はその仮定の一つに過ぎない。P値が小さいことは「たくさんある統計モデルに必要な仮定のうちどれか1つあるいは複数が間違っている」ことを意味する。決して帰無仮説だけが間違いの対象ではない。
Rを使ったシミュレーション
参考サイト: 井口豊(2022-12-06)小標本 t 検定の誤解:中心極限定理と一般化線形モデル
R 4.5.1 (macOS) を使用。
先に自分なりの結論(教訓、反省):
- Welchのt検定でも最低n = 20は必要
- n = 2や3でどうのこうのいうのは危ない。
- ノンパラメトリックな方法として代表的なMann–WhitneyのU検定(Wilcoxonの順位和検定)は比較する分布の形が大きく異なる場合は全くもって役に立たない。むしろnが増えるほど誤って帰無仮説を棄却してしまう確率が上昇する。
- 第一種の過誤の制御という観点ではノンパラメトリックな方法は脆弱かつ危険で、Welchのt検定は確かに頑健。
母集団が正規分布の場合(等分散)
Studentのt検定
k <- 100000 # 標本取り出し反復回数 n <- 4 # 標本サイズ r <- replicate(k,{ x <- rnorm(n, mean=0, sd=1) y <- rnorm(n, mean=0, sd=1) c(mean(x), t.test(x, y, var.equal = TRUE)$p.value) }) m <- r[1, ] # 平均値 p <- r[2, ] # 5%水準棄却数 reject_rate <- length(p[p<=0.05])/k # 5%水準棄却率 print (reject_rate) [1] 0.04981
p値の分布

Welchのt検定
k <- 100000 # 標本取り出し反復回数 n <- 4 # 標本サイズ r <- replicate(k,{ x <- rnorm(n, mean=0, sd=1) y <- rnorm(n, mean=0, sd=1) c(mean(x), t.test(x, y, var.equal = FALSE)$p.value) }) m <- r[1, ] # 平均値 p <- r[2, ] # 5%水準棄却数 reject_rate <- length(p[p<=0.05])/k # 5%水準棄却率 print (reject_rate) [1] 0.0413
p値の分布

Mann–WhitneyのU検定
k <- 100000 # 標本取り出し反復回数 n <- 4 # 標本サイズ r <- replicate(k,{ x <- rnorm(n, mean=0, sd=1) #平均0、標準偏差1の正規分布からランダムサンプリング y <- rnorm(n, mean=0, sd=1) c(mean(x), wilcox.test(x, y)$p.value) }) m <- r[1, ] # 平均値 p <- r[2, ] # 5%水準棄却数 reject_rate <- length(p[p<=0.05])/k # 5%水準棄却率 print (reject_rate) [1] 0.02919
p値の分布

結果
同一の確率分布からn個の標本を2回取り出して2つの群に差があるかを検定する (p値を計算する)、を10万回繰り返してp ≦ 0.05となった確率。
5%水準棄却率 | |||
n | Studentのt検定 | Welchのt検定 | Mann–WhitneyのU検定 |
2 | 0.05012 | 0.02321 | 0 |
3 | 0.05059 | 0.03456 | 0 |
4 | 0.04981 | 0.0413 | 0.02919 |
5 | 0.04999 | 0.04404 | 0.03144 |
6 | 0.5104 | 0.04493 | 0.04067 |
7 | 0.04942 | 0.0475 | 0.03808 |
8 | 0.04975 | 0.04699 | 0.05012 |
9 | 0.04983 | 0.04841 | 0.03832 |
10 | 0.5097 | 0.04846 | 0.04357 |
20 | 0.04845 | 0.05003 | 0.04874 |
30 | 0.05017 | 0.04939 | 0.05059 |
40 | 0.04979 | 0.04889 | 0.05027 |
50 | 0.04945 | 0.05065 | 0.04892 |
60 | 0.04934 | 0.04954 | 0.05057 |
70 | 0.0502 | 0.0482 | 0.05015 |
80 | 0.05082 | 0.05107 | 0.05006 |
90 | 0.05024 | 0.04976 | 0.05034 |
100 | 0.04899 | 0.04974 | 0.04987 |
モデル通りなのでStudentのt検定はn = 2でも正確です。他の2つはn数が少ない時は第一種の過誤の確率(帰無仮説が正しいにもかかわらずそれを誤って棄却してしまう確率)が低いです。Welchのt検定はおおむねn ≧ 20、Mann–WhitneyのU検定はn ≧ 30で値が安定しています。
母集団が正規分布でない場合(二峰分布)(等分散)
ピークが2つあるフタコブラクダのような分布(二峰分布)を考えます(参考: 備忘録 a record of inner life(2015-02-23)Rでの分布作成と自作分布に従う乱数生成)。
fx <- function(x) dnorm(x, mean=2, sd = 1) gx <- function(x) dnorm(x, mean=-2, sd= 2) hx <- function(x) 1/2*(fx(x)+gx(x)) plot(hx, xlim=c(-10,10))

$$h(x) = \frac{1}{2}\left(\frac{1}{\sqrt{2\pi 1^2}}\exp\left(-\frac{(x-2)^2}{2\times 1^2}\right) + \frac{1}{\sqrt{2\pi 2^2}}\exp\left(-\frac{(x+2)^2}{2\times 2^2}\right)\right)\;\;\;(-10 < x < 10)$$という分布に従う乱数を生成します(参考: 乱数Tips大全(2004-01-14)棄却法による乱数の作り方)。
myrand <- function(x) { y <- c() i <- 1 while (i <= x) { u <- runif(1) # 一様分布からの乱数生成 v <- runif(1,-10,10) w <- hx(v)/0.3 if (u < w){ y <- append(y, v) i <- i+1 } } return(y) }
結果(二峰分布)
5%水準棄却率 | |||
n | Studentのt検定 | Welchのt検定 | Mann–WhitneyのU検定 |
2 | 0.06412 | 0.03159 | 0 |
3 | 0.05416 | 0.0378 | 0 |
4 | 0.05186 | 0.0386 | 0.02903 |
5 | 0.05066 | 0.04235 | 0.3167 |
6 | 0.05317 | 0.04427 | 0.04131 |
7 | 0.05143 | 0.04655 | 0.03748 |
8 | 0.05117 | 0.04831 | 0.0502 |
9 | 0.05075 | 0.04865 | 0.03999 |
10 | 0.05224 | 0.04889 | 0.04317 |
20 | 0.05087 | 0.04944 | 0.0492 |
30 | 0.04999 | 0.04898 | 0.05071 |
40 | 0.05004 | 0.04958 | 0.04987 |
50 | 0.04907 | 0.05007 | 0.04913 |
60 | 0.04973 | 0.05102 | 0.04896 |
70 | 0.0507 | 0.04947 | 0.04822 |
80 | 0.05108 | 0.0495 | 0.04966 |
90 | 0.05016 | 0.04983 | 0.04975 |
100 | 0.05063 | 0.04968 | 0.04878 |
母集団の片方が正規分布でない場合(二峰分布)
以下のような正規分布(赤)と二峰分布(黒)から取出した標本同士を比べます。

※注意書き
このような標本が取れたときに、まず考えてほしいのはこれらの標本は本当に比較するべきか、ということである。特に二峰分布のほうは、もしかしたら分けられるべき標本が混じっている可能性も考えるべきである。なにも考えずにただ検定するのは良い手とは言えない。(野村康之. Brunner-Munzel検定)
5%水準棄却率 | |||
n | Studentのt検定 | Welchのt検定 | Mann–WhitneyのU検定 |
2 | 0.09888 | 0.04859 | 0 |
3 | 0.10786 | 0.08199 | 0 |
4 | 0.09623 | 0.08372 | 0.06325 |
5 | 0.0827 | 0.07315 | 0.05605 |
6 | 0.07439 | 0.06804 | 0.0574 |
7 | 0.0723 | 0.06359 | 0.07345 |
8 | 0.06735 | 0.06174 | 0.08358 |
9 | 0.06505 | 0.05893 | 0.07089 |
10 | 0.06399 | 0.05903 | 0.08386 |
20 | 0.05663 | 0.05369 | 0.1107 |
30 | 0.05363 | 0.0525 | 0.13456 |
40 | 0.05371 | 0.05193 | 0.15399 |
50 | 0.05201 | 0.05032 | 0.17493 |
60 | 0.05266 | 0.05315 | 0.19635 |
70 | 0.05169 | 0.04962 | 0.21546 |
80 | 0.05188 | 0.05155 | 0.23806 |
90 | 0.05183 | 0.04997 | 0.25626 |
100 | 0.0522 | 0.05032 | 0.27582 |
母集団が正規分布でない場合: 二峰分布 vs. コーシー分布
コーシー分布は以下のような裾が重い関数です。
$$ f(x;x_0,\gamma) = \frac{1}{\pi}\frac{\gamma}{(x-x_0)^2 + \gamma^2} $$
裾が重く、期待値と分散が計算できません(\(x_0\)は最頻値、\(\gamma\)は半値半幅を与える値)。関数形はローレンツ関数とも呼ばれる形で、フーリエ変換NMRの勉強をしている時に片側指数関数のフーリエ変換が複素ローレンツ関数となる(つまりNMRピークの形状はローレンツ関数ということ)ので馴染があります。
x <- seq(-10,10,by=0.1) plot(dcauchy, -10, 10, n=1001, col='red') #コーシー分布(赤) lines(x, hx(x),col="black") #フタコブ分布(黒)

k <- 100000 N = c(2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100) for (n in N){ r <- replicate(k,{ x <- myrand(n) y <- rcauchy(n) # コーシー分布に従う乱数発生 c(mean(x), mean(y), t.test(x, y, var.equal=TRUE)$p.value) }) m <- r[1,] p <- r[3,] reject_rate <- length(p[p<=0.05])/k # 5%水準棄却率 print(n) print(reject_rate) }
結果(二峰分布とコーシー分布)
5%水準棄却率 | ||||
n | Studentのt検定 | Welchのt検定 | Mann–WhitneyのU検定 | Brunner–Menzel検定 |
2 | 0.06123 | 0.03007 | 0 | 0.35868 |
3 | 0.05921 | 0.04252 | 0 | 0.12227 |
4 | 0.049 | 0.03999 | 0.04217 | 0.06768 |
5 | 0.04399 | 0.03709 | 0.03969 | 0.07925 |
6 | 0.03881 | 0.03345 | 0.05023 | 0.06813 |
7 | 0.03627 | 0.03327 | 0.04951 | 0.06312 |
8 | 0.03615 | 0.03138 | 0.06096 | 0.06449 |
9 | 0.03367 | 0.03047 | 0.05204 | 0.06222 |
10 | 0.03342 | 0.02977 | 0.05697 | 0.06373 |
20 | 0.02933 | 0.02661 | 0.07293 | 0.06824 |
30 | 0.02776 | 0.02695 | 0.08275 | 0.07652 |
40 | 0.02662 | 0.02555 | 0.09228 | 0.08316 |
50 | 0.02531 | 0.02464 | 0.10031 | 0.0897 |
60 | 0.02519 | 0.02456 | 0.10849 | 0.09897 |
70 | 0.02444 | 0.02405 | 0.11873 | 0.10759 |
80 | 0.02441 | 0.02401 | 0.12666 | 0.11499 |
90 | 0.02444 | 0.02302 | 0.13748 | 0.12469 |
100 | 0.02375 | 0.02377 | 0.14521 | 0.13281 |
母集団が正規分布で分散が異なる場合
正規分布(平均0、標準偏差=1、赤)vs. 正規分布(平均値=0、標準偏差=3、黒)

5%水準棄却率 | |||
n | Studentのt検定 | Welchのt検定 | Mann–WhitneyのU検定 |
2 | 0.07343 | 0.03688 | 0 |
3 | 0.07413 | 0.05227 | 0 |
4 | 0.07121 | 0.05398 | 0.04841 |
5 | 0.06767 | 0.05187 | 0.04509 |
6 | 0.06437 | 0.05248 | 0.0494 |
7 | 0.06227 | 0.05126 | 0.054 |
8 | 0.06005 | 0.0508 | 0.0671 |
9 | 0.0599 | 0.05179 | 0.05365 |
10 | 0.06025 | 0.05017 | 0.0605 |
20 | 0.05343 | 0.05068 | 0.06728 |
30 | 0.05162 | 0.05059 | 0.06818 |
40 | 0.05231 | 0.05047 | 0.06974 |
50 | 0.05168 | 0.05018 | 0.06915 |
60 | 0.05254 | 0.04984 | 0.06906 |
70 | 0.05084 | 0.05022 | 0.0694 |
80 | 0.04975 | 0.04894 | 0.06913 |
90 | 0.0505 | 0.05116 | 0.06784 |
100 | 0.0503 | 0.05021 | 0.06722 |
Studentのt検定はnが小さいと棄却率が高い。Welchのt検定は理論通り不等分散の場合でも大丈夫。Mann–WhitneyのU検定は不等分散の場合は使えない。
母集団が正規分布で平均値と分散が異なる場合
正規分布(平均=2、標準偏差=1、赤)vs. 正規分布(平均値=-2、標準偏差=2、黒)

5%水準棄却率 | |||
n | Studentのt検定 | Welchのt検定 | Mann–WhitneyのU検定 |
2 | 0.33953 | 0.17356 | 0 |
3 | 0.65711 | 0.52291 | 0 |
4 | 0.84024 | 0.763 | 0.72658 |
5 | 0.93334 | 0.89805 | 0.85389 |
6 | 0.97257 | 0.9586 | 0.93726 |
7 | 0.98925 | 0.98559 | 0.97254 |
8 | 0.99611 | 0.99421 | 0.99056 |
9 | 0.99856 | 0.99836 | 0.99487 |
10 | 0.99956 | 0.99936 | 0.99832 |
20 | 1 | 1 | 1 |
30 | 1 | 1 | 1 |
40 | 1 | 1 | 1 |
50 | 1 | 1 | 1 |
60 | 1 | 1 | 1 |
70 | 1 | 1 | 1 |
80 | 1 | 1 | 1 |
90 | 1 | 1 | 1 |
100 | 1 | 1 | 1 |
参考文献
1) 永田靖・吉田道弘(1997).統計的多重比較法の基礎 サイエンティスト社