\( \newcommand{\E}{\mathbb{E}} \newcommand{\Var}{\operatorname{Var}} \newcommand{\Cov}{\operatorname{Cov}} \newcommand{\Corr}{\operatorname{Corr}} \newcommand{\Prob}{\mathbb{P}} \newcommand{\R}{\mathbb{R}} \newcommand{\N}{\mathbb{N}} \newcommand{\iid}{\overset{\text{i.i.d.}}{\sim}} \newcommand{\dto}{\xrightarrow{d}} \newcommand{\pto}{\xrightarrow{p}} \newcommand{\diff}{\mathop{}\!\mathrm{d}} \)

Shapiro–Wilk 検定

適合度の検定
正規分布
正規性の検定。W 統計量を順序統計量の一般化最小二乗から導き、位置・尺度不変性、(X̄, S²) との独立性、n = 3 の厳密な分布、Royston の近似と検出力をまとめる。
公開

2026年9月30日

警告査読前の原稿

この記事の証明は下書きで、査読・編集の前の段階です。

この記事の範囲

1 本の標本 \(X_1,\dots,X_n\) について、次の検定を扱う。

帰無仮説 対立仮説
ある \(\mu\in\R\)、\(\sigma>0\) について \(X_1,\dots,X_n\iid N(\mu,\sigma^2)\) 正規分布ではない

平均と分散は指定しない(どの正規分布でもよい)。平均と分散を指定した分布への適合を調べるなら、Kolmogorov–Smirnov 検定のほうが直接的である。

このツールの使い方

必要なデータ

データ 形 備考
標本 \(x\) 数値の列(3〜5,000 点) 並び順は問わない(内部で並べ替える)

前提条件

  • 独立同分布:観測どうしが独立で、同じ分布に従うこと。時系列の自己相関や、平均の異なるグループの混在があると、正規でないと判定されやすい。
  • 連続分布:丸めた値やタイ(同じ値)が多いと、正規分布からのデータでも棄却されやすい(注意 を参照)。
  • 大きさ:3〜5,000 点。p 値の近似(Royston 1995)はこの範囲で検証されている。すべて同じ値だと計算できない。

出力する値

値 意味
statistic \(W\)(\(0<W\le1\)。1 に近いほど正規分布らしい)
pvalue p 値(\(W\) が小さいほど小さい)
n, mean, sd 標本の大きさ・平均・標準偏差(\(n-1\) で割る)
null_hypothesis 帰無仮説

何を示すか

\(W\) は 正規 Q-Q プロットがどれだけ直線に近いか を、順序統計量の一般化最小二乗の考え方で測る量である。 ここでは定義から次を示す。

  1. \(W\) は位置と尺度を変えても変わらず、係数ベクトルと順序統計量の相関係数の 2 乗である(したがって \(W\le1\))。
  2. 帰無仮説のもとで \(W\) は \((\bar X,S^2)\) と独立である。\(W\) の分布は \(\mu,\sigma\) によらない。
  3. \(n=3\) のとき \(W\) の分布は厳密に求まり、\(P(W\le w)=\frac6\pi\big(\arcsin\sqrt w-\frac\pi3\big)\) である。

\(n\ge4\) の分布は閉じた形にならない。API とサイトの計算で使う Royston (1995) の近似を示し、有意水準が守られていることと検出力をシミュレーションで確かめる。

W の定義

順序統計量の線形モデル

\(X_i=\mu+\sigma Z_i\)、\(Z_i\iid N(0,1)\) とし、並べ替えたものを \(X_{(1)}\le\dots\le X_{(n)}\)、\(Z_{(1)}\le\dots\le Z_{(n)}\) と書く。 \(\sigma>0\) なので並べ替えと 1 次変換は入れ替えられ、\(X_{(i)}=\mu+\sigma Z_{(i)}\) である。 標準正規の順序統計量の平均と共分散を \[ m_i=\E Z_{(i)},\qquad V_{ij}=\Cov\big(Z_{(i)},Z_{(j)}\big) \] とおくと、\(\boldsymbol x=(X_{(1)},\dots,X_{(n)})^\top\) は \[ \boldsymbol x=\mu\boldsymbol 1+\sigma\boldsymbol m+\boldsymbol\varepsilon,\qquad \E\boldsymbol\varepsilon=\boldsymbol 0,\quad \Var\boldsymbol\varepsilon=\sigma^2V \] という(誤差が相関する)線形モデルに従う。点 \((m_i,X_{(i)})\) を並べたものが正規 Q-Q プロットで、このモデルは「Q-Q プロットは傾き \(\sigma\) の直線のまわりに散らばる」ことを表す。

対称性

\(-Z_1,\dots,-Z_n\) も \(N(0,1)\) に独立に従い、その \(i\) 番目に小さい値は \(-Z_{(n+1-i)}\) である。したがって \[ \big(Z_{(1)},\dots,Z_{(n)}\big)\overset{d}{=}\big(-Z_{(n)},\dots,-Z_{(1)}\big). \] 並びを逆にする行列を \(J\)(\(J_{ij}=1\iff i+j=n+1\))とすると、これから \(J\boldsymbol m=-\boldsymbol m\)、\(JVJ=V\) が従う。 特に \(\boldsymbol 1^\top\boldsymbol m=\boldsymbol 1^\top J\boldsymbol m=-\boldsymbol 1^\top\boldsymbol m\) より \(\boldsymbol 1^\top\boldsymbol m=0\)。

σ の最良線形不偏推定量と W

一般化最小二乗(Lloyd 1952)による \(\sigma\) の最良線形不偏推定量は、\(\boldsymbol 1^\top V^{-1}\boldsymbol m=0\)(下の補題)のもとで \[ \hat\sigma=\frac{\boldsymbol m^\top V^{-1}\boldsymbol x}{\boldsymbol m^\top V^{-1}\boldsymbol m} \] となる。これを正規化した係数 \[ \boldsymbol a=\frac{V^{-1}\boldsymbol m}{\big\|V^{-1}\boldsymbol m\big\|}\qquad(\|\boldsymbol a\|=1) \] を使い、Shapiro and Wilk (1965) は \[ W=\frac{\big(\sum_{i=1}^n a_iX_{(i)}\big)^2}{\sum_{i=1}^n(X_i-\bar X)^2} \] と定義した。分子は \(\hat\sigma^2\) の定数倍、分母は \((n-1)S^2\) で、どちらも正規分布のもとでは \(\sigma^2\) の推定量である。 正規分布でなければ Q-Q プロットが曲がり、分子(直線の傾きから求めた尺度)が分母より小さくなる。

補題. \(J\boldsymbol a=-\boldsymbol a\)。特に \(a_i=-a_{n+1-i}\)、\(\sum_ia_i=0\)。

証明. \(J^2=I\) と \(JVJ=V\) から \(JV^{-1}J=V^{-1}\)、すなわち \(JV^{-1}=V^{-1}J\)。よって \(JV^{-1}\boldsymbol m=V^{-1}J\boldsymbol m=-V^{-1}\boldsymbol m\)。 \(\boldsymbol 1^\top\boldsymbol a=\boldsymbol 1^\top J\boldsymbol a=-\boldsymbol 1^\top\boldsymbol a\)(\(J\boldsymbol1=\boldsymbol1\))より和は 0。\(\square\)

定理 1(不変性と相関係数による表現)

  1. \(c\in\R\)、\(b>0\) について、\(X_i\) を \(c+bX_i\) に置き換えても \(W\) は変わらない。
  2. \(W\) は \((a_1,\dots,a_n)\) と \((X_{(1)},\dots,X_{(n)})\) の相関係数の 2 乗である。したがって \(0\le W\le1\)。

証明. 1. \(b>0\) なので順序統計量は \(c+bX_{(i)}\) になる。補題より \(\sum_ia_i(c+bX_{(i)})=b\sum_ia_iX_{(i)}\)、分母は \(b^2\) 倍になるので比は変わらない。

  1. \(\sum_ia_i=0\) だから \(\sum_ia_iX_{(i)}=\sum_ia_i(X_{(i)}-\bar X)\)、また \(\sum_i(X_i-\bar X)^2=\sum_i(X_{(i)}-\bar X)^2\)。\(\sum_ia_i^2=1\)、\(\bar a=0\) より \[ W=\frac{\big(\sum_i(a_i-\bar a)(X_{(i)}-\bar X)\big)^2}{\sum_i(a_i-\bar a)^2\,\sum_i(X_{(i)}-\bar X)^2}=\Corr\big(\boldsymbol a,\boldsymbol x\big)^2 . \] Cauchy–Schwarz の不等式から \(W\le1\)。\(\square\)

等号 \(W=1\) は \(X_{(i)}\) が \(a_i\) の 1 次式のときに限る。下限は \(W\ge na_1^2/(n-1)\) である(Shapiro and Wilk 1965, 補題 1)。

定理 2(\((\bar X,S^2)\) との独立性)

帰無仮説のもとで、\(W\) の分布は \((\mu,\sigma)\) によらず、\(W\) は \((\bar X,S^2)\) と独立である。

証明. 定理 1 の 1 で \(c=-\mu/\sigma\)、\(b=1/\sigma\) とすると \(W(X_1,\dots,X_n)=W(Z_1,\dots,Z_n)\) で、右辺の分布は母数を含まない(\(W\) は補助統計量)。 一方 \((\bar X,S^2)\) は正規分布族 \(\{N(\mu,\sigma^2)^{\otimes n}\}\) の完備十分統計量である(2 母数の指数型分布族で、自然母数の空間が \(\R^2\) の開集合を含む)。 Basu の定理(t 検定の記事 の定理 C)により、補助統計量は完備十分統計量と独立である。\(\square\)

系. \(\big(\sum_ia_iX_{(i)}\big)^2=W\cdot(n-1)S^2\) の右辺の 2 つの因子は独立なので、\(k=1,2,\dots\) について \[ \E W^k=\frac{\E\big(\sum_ia_iX_{(i)}\big)^{2k}}{\E\big((n-1)S^2\big)^k} . \] \(k=1\) では \(\E(\boldsymbol a^\top\boldsymbol x)^2=\sigma^2\big(\boldsymbol a^\top V\boldsymbol a+(\boldsymbol a^\top\boldsymbol m)^2\big)\)(\(\boldsymbol a^\top\boldsymbol 1=0\))、\(\E(n-1)S^2=(n-1)\sigma^2\) より \[ \E W=\frac{\boldsymbol a^\top V\boldsymbol a+(\boldsymbol a^\top\boldsymbol m)^2}{n-1} . \] 比の期待値が期待値の比になるのは独立性のおかげで、Shapiro and Wilk (1965) はこの方法で \(W\) の低次のモーメントを求めた。

定理 3(\(n=3\) の厳密な分布)

\(n=3\) のとき \(\boldsymbol a=(-1/\sqrt2,\,0,\,1/\sqrt2)\) で、帰無仮説のもとで \(W\) は \([3/4,1]\) に値をとり \[ P(W\le w)=\frac6\pi\Big(\arcsin\sqrt w-\frac\pi3\Big),\qquad \frac34\le w\le1 . \]

証明. 補題より \(a_2=0\)、\(a_3=-a_1\)、\(\|\boldsymbol a\|=1\) から \(\boldsymbol a\) は上の形で、\(W=(X_{(3)}-X_{(1)})^2/\big(2\sum_i(X_i-\bar X)^2\big)\) である。定理 2 より \(\mu=0,\sigma=1\) としてよい。

残差 \(\boldsymbol e=(X_i-\bar X)_i\) は \(\boldsymbol 1\) に直交する平面 \(P\) への \(\boldsymbol Z\) の直交射影である。標準正規ベクトルの分布は回転で不変なので、\(\boldsymbol e/\|\boldsymbol e\|\) は \(P\) の単位円上で一様に分布する。 \(P\) の単位円は \[ \boldsymbol e/\|\boldsymbol e\|=\sqrt{\tfrac23}\,\big(\cos\theta,\ \cos(\theta-\tfrac{2\pi}3),\ \cos(\theta+\tfrac{2\pi}3)\big),\qquad \theta\in[0,2\pi) \] と書ける(3 つの余弦の和は 0、2 乗和は \(3/2\))ので、\(\theta\) は \([0,2\pi)\) 上の一様分布に従う。

\(W\) は \(\boldsymbol e\) の成分の並べ替えで変わらず、成分の入れ替えは \(\theta\mapsto\theta\pm\frac{2\pi}3\) と \(\theta\mapsto-\theta\) に対応する。これらで \([0,2\pi)\) は長さ \(\pi/3\) の 6 つの区間に移り合うので、\(\theta\in[0,\pi/3]\) で一様としてよい。 この区間では最大の成分が \(\cos\theta\)、最小の成分が \(\cos(\theta+\frac{2\pi}3)\) で、 \[ \cos\theta-\cos\big(\theta+\tfrac{2\pi}3\big)=2\sin\big(\theta+\tfrac\pi3\big)\sin\tfrac\pi3=\sqrt3\,\sin\big(\theta+\tfrac\pi3\big), \qquad W=\frac{\tfrac23\cdot3\sin^2(\theta+\frac\pi3)}{2}=\sin^2\varphi, \] ただし \(\varphi=\theta+\frac\pi3\) は \([\frac\pi3,\frac{2\pi}3]\) 上の一様分布に従う。\(\sin^2\) は \(\varphi=\frac\pi2\) について対称なので \(\varphi\in[\frac\pi3,\frac\pi2]\) で一様としてよく、そこで \(\sin\) は増加する。よって \[ P(W\le w)=P\big(\varphi\le\arcsin\sqrt w\big)=\frac{\arcsin\sqrt w-\pi/3}{\pi/2-\pi/3}=\frac6\pi\Big(\arcsin\sqrt w-\frac\pi3\Big).\qquad\square \]

\(W\) が小さいほど正規分布から遠いので、p 値は \(P(W\le w_{\text{obs}})\) である。\(n=3\) では API もこの式で p 値を計算する。

係数と p 値の計算(Royston の近似)

\(n\ge4\) では \(\boldsymbol m\) と \(V\) を厳密に求めるのが難しく、Shapiro and Wilk (1965) は \(n\le50\) の係数と分位点を表で与えた。 API は、R の shapiro.test と scipy の shapiro と同じ Royston (1992, 1995) の近似(AS R94) を使う。

係数. \(m_i\) を Blom の近似 \(\tilde m_i=\Phi^{-1}\big((i-\frac38)/(n+\frac14)\big)\) で置き換え、\(\boldsymbol a\approx\tilde{\boldsymbol m}/\|\tilde{\boldsymbol m}\|\) とする(\(V^{-1}\) を省いた形で、中央付近の係数はこれで十分正確)。 誤差が大きい両端の係数だけを \(u=1/\sqrt n\) の 5 次多項式で補正し、 \[ a_n=\tilde c_n+0.221157u-0.147981u^2-2.071190u^3+4.434685u^4-2.706056u^5, \] \(n>5\) ではさらに \(a_{n-1}\) も同様に補正する(\(\tilde c_i=\tilde m_i/\|\tilde{\boldsymbol m}\|\))。残りの係数は \(\|\boldsymbol a\|=1\) となるよう定数倍し、補題どおり \(a_i=-a_{n+1-i}\) とする。 \(\Phi^{-1}\) には Wichura (1988) の AS241(相対誤差 \(10^{-16}\) 程度)を使う。

p 値. \(1-W\) の対数を正規分布で近似する。

\(n\) 変換 \(y\) 平均 \(\mu_n\) 標準偏差 \(\sigma_n\)
4〜11 \(-\log\big(\gamma-\log(1-W)\big)\)、\(\gamma=-2.273+0.459n\) \(0.5440-0.39978n+0.025054n^2-0.0006714n^3\) \(\exp(1.3822-0.77857n+0.062767n^2-0.0020322n^3)\)
12〜5000 \(\log(1-W)\) \(-1.5861-0.31082\ell-0.083751\ell^2+0.0038915\ell^3\) \(\exp(-0.4803-0.082676\ell+0.0030302\ell^2)\)

(\(\ell=\log n\))とし、p 値は \(P\big(N(\mu_n,\sigma_n^2)>y\big)\)。\(n\le11\) で \(\log(1-W)\ge\gamma\) となる極端な場合は、近似の範囲外なので R・scipy と同じく p 値を \(10^{-99}\) とする。 \(1-W\) は、\(s_a=\sum_i(a_i-\bar a)^2\)、\(s_x=\sum_i(X_{(i)}-\bar X)^2\)、\(s_{ax}=\sum_i(a_i-\bar a)(X_{(i)}-\bar X)\) として(定理 1 の 2)\(\big(\sqrt{s_as_x}-s_{ax}\big)\big(\sqrt{s_as_x}+s_{ax}\big)/(s_as_x)\) の形で直接求め、\(W\approx1\) での桁落ちを避けている。

API の結果は scipy と 2003 項目(\(n=3\)〜\(5000\)、正規・t・一様・指数・対数正規・タイの多いデータ・平均が大きく分散が小さいデータ)で、相対誤差 \(10^{-9}\) 以内で一致することを確かめている。

有意水準は守られるか

近似がうまくいっていれば、帰無仮説のもとで p 値は一様分布に従い、棄却率は有意水準に一致する。

コード
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

plt.rcParams["font.family"] = ["Hiragino Sans", "sans-serif"]
rng = np.random.default_rng(0)
reps = 40000
ns = [3, 4, 5, 7, 10, 15, 20, 30, 50, 100, 200, 500, 1000]
alphas = [0.01, 0.05, 0.10]
rate = {a: [] for a in alphas}
for n in ns:
    x = rng.normal(size=(reps, n))
    p = np.array([stats.shapiro(r).pvalue for r in x])
    for a in alphas:
        rate[a].append((p < a).mean())
fig, ax = plt.subplots()
for a in alphas:
    half = 1.96 * np.sqrt(a * (1 - a) / reps)
    ax.fill_between(ns, a - half, a + half, color="gray", alpha=0.25, lw=0)
    ax.plot(ns, rate[a], "o-", label=f"α = {a}")
ax.set_xscale("log")
ax.set_xlabel("標本の大きさ n")
ax.set_xticks(ns, [str(n) for n in ns])
ax.set_ylabel("実際の棄却率")
ax.legend(loc="upper left", bbox_to_anchor=(0, 0.84), ncols=3)
plt.show()
図 1: 正規分布からの標本で、p 値が有意水準を下回った割合(各 n で 4 万回)。灰色の帯は二項分布の 95% の範囲。

\(n=3\) は厳密、\(n\ge4\) でもどの有意水準でも棄却率はほぼ α に一致する。

検出力

正規分布でない標本をどれだけ見抜けるかを、同じく平均・分散を指定しない Lilliefors 検定(推定した正規分布との Kolmogorov–Smirnov 距離)と比べる。

コード
from statsmodels.stats.diagnostic import lilliefors

alts = {
    "t 分布(自由度 5)": lambda size: rng.standard_t(5, size=size),
    "一様分布": lambda size: rng.uniform(size=size),
    "指数分布": lambda size: rng.exponential(size=size),
    "混合 0.9N(0,1)+0.1N(3,1)": lambda size: rng.normal(size=size) + 3 * (rng.uniform(size=size) < 0.1),
}
ns = [10, 20, 30, 50, 100, 200]
reps = 4000
fig, ax = plt.subplots()
for name, gen in alts.items():
    sw, lf = [], []
    for n in ns:
        x = gen((reps, n))
        sw.append(np.mean([stats.shapiro(r).pvalue < 0.05 for r in x]))
        lf.append(np.mean([lilliefors(r, pvalmethod="table")[1] < 0.05 for r in x]))
    line, = ax.plot(ns, sw, "o-", label=name)
    ax.plot(ns, lf, "s--", color=line.get_color(), alpha=0.7)
ax.set_xscale("log")
ax.set_xticks(ns, [str(n) for n in ns])
ax.set_xlabel("標本の大きさ n")
ax.set_ylabel("検出力")
ax.legend(fontsize=9)
plt.show()
図 2: α = 0.05 での検出力(各点 4000 回)。実線が Shapiro–Wilk、破線が Lilliefors 検定。

どの対立仮説でも Shapiro–Wilk のほうが検出力が高い。裾の重さ(t 分布)や短さ(一様分布)のように、分布の中央ではなく両端に現れるずれは、Q-Q プロットの両端の傾きとして \(W\) に強く効く。 一方で、\(n=20\) では t 分布(自由度 5)や一様分布を 2 割程度しか見抜けない。有意でないことは、正規分布であることの証拠にはならない。

注意

  • 大きな標本. \(n\) が数千になると、実用上問題にならない小さなずれでも p 値はほぼ 0 になる。t 検定のように中心極限定理で頑健な手法の前提を確かめるなら、p 値より Q-Q プロットの形を見るほうがよい。
  • タイと丸め. 値が少数の種類に丸められていると、Q-Q プロットが階段状になり \(W\) が下がる。正規分布からのデータでも、測定単位が標準偏差に比べて粗いと棄却されやすい。
  • 検定を重ねる問題. 「正規性の検定で有意でなければ t 検定、有意なら順位検定」のように結果で次の検定を選ぶと、全体の第一種の過誤率は名目の α と一致しない。
  • 残差に使う場合. 回帰の残差は独立でも同分布でもないので、帰無分布は厳密には成り立たない。目安として使う。

試してみる

同じ計算は noisymoon API の POST /v1/tests/shapiro から呼び出せる。\(W\) と p 値は R の shapiro.test、scipy の shapiro と一致する。

requests.post("https://api.noisymoon.jp/v1/tests/shapiro", headers={"X-API-Key": KEY},
              json={"x": list(x)}).json()

参考文献

  • Shapiro, S. S. and Wilk, M. B. (1965). An analysis of variance test for normality (complete samples). Biometrika, 52, 591–611.
  • Lloyd, E. H. (1952). Least-squares estimation of location and scale parameters using order statistics. Biometrika, 39, 88–95.
  • Blom, G. (1958). Statistical Estimates and Transformed Beta-Variables. Wiley.
  • Royston, P. (1992). Approximating the Shapiro–Wilk W-test for non-normality. Statistics and Computing, 2, 117–119.
  • Royston, P. (1995). Remark AS R94: A remark on algorithm AS 181: The W-test for normality. Applied Statistics, 44, 547–551.
  • Wichura, M. J. (1988). Algorithm AS 241: The percentage points of the normal distribution. Applied Statistics, 37, 477–484.
  • Lehmann, E. L. and Romano, J. P. (2022). Testing Statistical Hypotheses, 4th ed. Springer. 定理 5.1.2(Basu)。