「とりあえずグラフで可視化」で済ませていませんか?ビジネスで正しく“効果を測る”ために知っておきたい正規性検定の話
仕事で施策の効果を図るのにデータ可視化だけで効果検証していませんか?
仕事でデータサイエンスを行っている中で、避けては通れないのがA/Bテストに代表される「効果検証」です。
「効果検証」には主にデータ可視化で済ます方法、統計的検定を用いる方法とベイズ統計を用いる方法の3つがあります。
私のクライアントさんたちはほとんどが効果検証をデータ可視化で済ましています。もちろんそれでもいいのですが、データ可視化は施策によって効果があったかどうかはさておいて、値が伸びているか?しか見ていません。明らかに施策開始日と値の伸びがデータ上リンクしている!という場合でも、多分正しいとは思うのですが、大きい企業になるほど、たまたま別の部署でも同時期に別の施策を行っていたとか、プレスリリースをしていたみたいなことは起こりえます。
また、仕事で何か拡販施策とかカスタマーサクセスの施策を行うので、その効果を検証したいという場合は、実際に得られるサンプル数も100以下と小サンプルになりがちです。この場合データ可視化で施策効果を図ろうにも、数が1違えば、可視化の印象もずいぶん変わってきてしまいますし、偶然、なんかそうなったという感はぬぐえません。
「本当に効果があったかどうか、よりも効果があったっぽいことを、針小棒大に宣伝し、自分たちの仲間・支持者を募ってプロジェクトを大きくしていくんだ」みたいな明確な目的と意図があるなら否定しませんが、そうでないなら、データ可視化以外の効果検証の選択肢も検討すべきです。
正規分布にデータが従っているか、を確かめる仕事における意味とは?
さて、今回はタイトルにも言う通り、正規分布に従っているか?を確かめる方法についてです。普段統計学に触れていない人にとってはすごくニッチに感じるかもしれませんが、これは結構この界隈では一般的です。
これが何か?よりもなんでそれが仕事で行われる施策の効果検証に必要かについてを理解しましょう。
皆さん「相関」という言葉は聞いたことがあるでしょうか。アプリの利用回数が伸びているとき、アプリの課金額も伸びているとか、常連さんの来客回数が減っているとき、売り上げも減っているとか、2つの異なるデータが特定の傾向をもつことを「相関」といいます。この2つのデータの間に、Aが伸びたからBが伸びたのか、Bが伸びたからAが伸びたのか、という「因果」は特定されていません(それを特定したい場合は、因果推論を行います)。
このようなケースでどれだけアプリの利用回数の増減が、アプリの課金額の増減に相関しているのか?を示すのが「相関係数」で、本当にそこには相関関係があるのか?を示すのが「相関検定」です。
相関係数、相関検定を行う方法はいくつかあり、ピアソンの相関検定やスピアマンの相関検定、あるいはケンドールの順位相関係数などが代表例です。
「え、どれ選べばいいかわからない。」
そうです、複数あるとそもそもどれを使えばいいのかわからないということが起きます。特に上3つの検定方法の選択に限って言えば、どれも2つの異なるデータが両方とも量的変数であるケースで使います。そして、一般にはピアソンの相関検定を選ぶ場面は多いですが、このピアソンの相関検定が、実は「検定しようとするデータが正規分布に従ってないと、ちゃんと検定できないかも」という条件付きなのです。
詳しい話は長くなるので別途として、ざっくりいうと、ピアソンの相関検定は「平均からのばらつき」を計算するので、外れ値がある観測データだと、外れ値にひっぱられてしまうという課題があるのです。
そこでどうすればいいかというと、今回のトピックである、「データがそもそも正規分布に従っているのか?」を先に検定しておいて、それで正規分布に従っていれば、ピアソンの相関検定を使って相関を検定するということになります。
正規分布らしさを「並び方」から見抜く統計手法
正規分布は今回のケースに限らず、統計解析の前提としてしばしば登場しますが、実際のデータが本当に正規分布に近いのかを判断するにはどうすればよいのでしょうか。
そのために使われる有名な方法の一つが「シャピロ・ウィルク検定(Shapiro–Wilk test)」です。この記事では、この検定が何をしているのか、キーワードは「並び替え」ですが、なぜ「並び替える」という処理が必要なのかを、できるだけ丁寧に説明していきます。
シャピロ・ウィルク検定の概要
まずは基本の構造を確認しましょう。
目的:与えられたデータが正規分布に従っているかどうかを検定する
帰無仮説(H₀):データは正規分布に従っている
対立仮説(H₁):データは正規分布に従っていない
手法:データからある統計量 Wを計算し、それに対応するp値を求めることで、正規性の有無を判断
検定統計量 W とは?
この検定では、以下のような形で統計量 W を定義します。

Wが何を示しているかというと端的にいえば「理想÷現実」です。分子が理想を表現して、分母が現実を示しています。理想と現実が同じであれば、値は同じになるのでWは1になります。ここでいう理想というのは正規分布に従っている、ってことです。現実は実際の観測データの分布です。
ここが肝です。なんだか自分が何をしているのかよくわからなくなってきたら、一旦ここに立ち返ってください。
x(i) は、データを小さい順に並べた順序統計量※
xˉはデータの平均
ai は理想的な正規分布から得られる重み係数
※順序統計量とは、あるデータサンプルが例えば5つ与えられたとき、それを値の小さい順から大きい順に並べ方ものを言います。
なぜ分子は「理想的な正規分布のばらつき」になるのか?
分母は、各データポイントから平均の差分、つまり観測データの実際の平均からのばらつきを示すのはわかると思います。だから現実でありファクトだと言えます。
問題は、分子です。そもそも理想的な正規分布ってなんでしょうか。それは平均0・分散1の標準正規分布です。 実データが本当に平均0、分散1の標準正規分布に従っていれば、そのデータは間違いなく、正規分布に従っているっていうことができるでしょう。
しかし、これをそのまま分子にすると厄介なことが起きます。平均0・分散①の標準正規分布に従うデータを想像してみてください。
もしそこから抽出されたデータが、何の加工もされずにそのまま比較に使われるなら、つねに理想的で、分子はばらつき、つまり分散を示すので、必ず1になってしまいます。であるとするなら、Wは常に1÷(観測データのばらつき)になります。
しかし、実際にはそう単純ではありません。
上の例でも観測データの方も分散が1だったら、1÷1でWが1になるんだから、その時が理想の状態ってことなんじゃないのか?と思うかもしれません。でも実際、正規分布に従っていなくても分散が1になることは十分ありえますよね?
Wというのは、あくまで正規分布に従っているかどうかを数値的には平均との計算を交えつつ、分散という値で示しているのですが、平均と分散だけでは、「正規分布っぽさ」を実は表現しきれないのです。
シャピロ・ウィルクの重要な工夫:「並べ替え」
彼らは、「正規分布らしさ」とは、単に平均が0で分散が1であることではなく、それ以上に分布の形の対称性にあると考えました。
たとえば、データの平均が0でも、それが右に長く尾を引く非対称な分布なら、正規分布とは言いがたいですよね。
つまり、Wという分母は観測データであり、ファクトなので、これを変えることはできません。これはもう平均を用いて分散を示す定式として動かしません。
工夫をするのは分母ではなく、今「理想的な状態って分散=1よね」って状態となってしまっている方です。分散が1なら必ずしもそれが理想的な状態として正規分布に従っているか、どうかはわからない。そこには分布の形の対称性を加味できていない。ならば分布の形の対称性を加味した分散の値として理想の値を分子として表現できればいいのではないかと、シャピロとウィルクは考えました。
そして、データを昇順に並び替えることで、「分布の形」そのものをあぶり出せることを思いついたのです。詳しく見ていきます。
わかりやすくするために観測データが100人の生徒の身長という例で考えます。
そもそも分子を構築する上で、理想的な状態を定義するためのデータが今ない状態です。
このデータは標準正規分布からサンプルを100個取り出せばつくれそうなものですが、100個のサンプルだと個数が少なくて偏る可能性があります。もしこれが生徒数10人だったら10サンプルを抽出するだけだったらもっと偏りが出ると思いますよね?
なのでサンプリングするNによらず、理想的なサンプルを作るには工夫が必要です。その工夫とは、N個のサンプリングを何度も行って、平均をとるというやり方です。
なので、シャピロとウィルクは標準正規分布からサンプルを例えば100個取り出すという作業を1万回(ぐらい多い試行回数)行い、その平均をとります。平均をとって、最終的には100個のサンプルにしたいわけですが、100個のサンプルの平均をどうとりましょう?
取った順番で1番目のグループから100番目のグループをつくって平均をつくりますか?そうすると、抽出自体は無作為ですので、身長がめっちゃ高い人が最初にサンプリングされるかもしれませんし、真ん中かもしれませんし、一番小さい人かもしれません。
それによってとられる平均は、1番目のグループにせよ、100番目のグループにせよ、本当に平均身長(つまりは平均0)になってしまいます。つまり平均身長に近い100サンプルが手に入るだけになってしまい、これでは正規分布っぽさをもつデータになりません。
シャピロとウィルクがここで思いついたのが、「あ、サンプリングして並べ替えて、ランクごとで平均とればいいじゃね?」ってことでした。
毎回、100個サンプリングして、小さい順に並べ替える操作を1万回(というほど多くのサンプリング)行い、ランクごとに1万個の値の平均をとれば、それは標準正規分布からサンプリングされたデータで、正規分布っぽさを保ったデータとして抽出できそうですよね?言い換えればランク1のグループとは最も小さい値(身長)はだいたいその値になるだろうという、尤もらしい値ということです。実際に扱う値は0~1ですが、これはあくまで最終的にスケールをそろえた値としての表現なので、例でいう身長を示しているということに変わりはありません。今は、100人の身長データが仮に理想である標準正規分布からとりだれているなら、一番低い身長の人はだいたいこれくらいの身長だよねという値が取り出されたという風に解釈してください。
これが最も身長が高いサンプルまで100個あるのです。つまり、1番目に小さい値・2番目に小さい値…という各順位について、それぞれの平均をとったものが100個手元にあるのです。これが言い換えれば、理想的なデータだ!と言えますよね?

これを100個の値別々に扱うのはめんどくさいので、100個の値をもつベクトル m とします。
別の言い方をすれば、ベクトルmとは正規分布に従うと仮定したときの、各順位の「期待値」です。
並べ替えによって生じる「ズレ」をどう捉えるか?
さて、これで理想を定義できているのでよさそうのですが、問題があります。それは、「並べ替え」という意図的な行動をとったことで、元々のデータに「順位による依存関係」というものが生じてしまっているという点です。
「順位による依存関係」とは、具体的には、たとえば「1番目に小さい値」と「5番目に大きい値」は、明確な負の相関を持ちます。この「順位による依存関係」によって分散が1である、という理想の状態をよりリアルな値として変化させていきます。つまりズレが生じるのです。
こうした生じてしまった「順位による依存関係」も組み込まなければリアルな理想的な状態を数値として表現したいです。これは共分散行列 V として表現可能です。
V:各順位の間のばらつきと相関(共分散)
共分散行列 V:並び替えに伴って生じる順位間の「ばらつき構造」
この1万サンプル分の並び替えデータから、共分散行列 Vを作成します。
■ まずは「共分散」って何?
共分散は、2つの変数がどのように一緒に変動しているかを示す統計量です。
▶ 例:ある学校で100人の生徒がいたとします
それぞれの生徒について、次の2つの値を調べたとします。
身長(cm)
体重(kg)
ここで気になるのは、
身長が高い人は体重も重い傾向があるのか?
それとも関係ないのか?
という「2つの変数の関係性」です。
このとき、共分散という指標を使えば、
正の値 → 身長と体重が一緒に増減している
負の値 → 身長が高いと体重は低くなるなど逆の関係
0 に近い → 無関係に近い
という具合に、変数同士の連動の度合いを定量的に表現できます。
共分散行列をどう作るか?
1万サンプルの並び替えデータを、各順位が1変数とみなされる100次元のデータと考えます。
例えば、
1番目(最小)と2番目の値が「一緒に高くなったり低くなったり」していれば → 正の共分散
逆に動いていれば → 負の共分散
無関係であれば → 0付近の共分散
すると、100個の順位 × 100個の順位の組み合わせに対して共分散を求めるため、100×100の共分散行列が得られます。

なぜ共分散が生まれるのか?
元々、標準正規分布から得たサンプルは独立です。しかし、前述の通り、並べ替えをすることで「順位」という構造が入り込み、相関が生じるようになります。
例えば:
サンプル内で極端に小さい値が1位になると、2位の値も比較的小さくなる傾向が出る
最大値の近辺では逆の傾向が出る
このような、順位間に生じる系統的な連動性(ばらつき構造)をすべての組み合わせで計算し共分散行列 Vとして表現するのです。
シャピロ・ウィルク検定における役割
この共分散行列 V を使って、正規分布に従っていると仮定したときの「理想的な順序統計量」ベクトル m を調整(ばらつき構造を加味)し、係数ベクトル a を作ります:
この2つを使って、重み係数 a を次のように計算します:

実際はもう少し簡約化された形で計算されますが、概念的にはこのような意味です。この a を、実際のデータを並べ替えたもの(順序統計量)と内積をとってシャピロ・ウィルク統計量 W の分子を計算します。
こうして得られる統計量 W の意味
分子:観測データの順序統計量×理想的な正規分布に従っていれば、ばらつきはこうなるであろうという情報を加味した重み係数 a=観測データが理想的な正規分布に従っていれば現れるばらつきの期待値
分母:実際のデータのばらつき(分散)
つまり、「理想的な正規分布のパターンに、どれだけ沿っているか」を測るのが W です。
W が1に近ければ正規性が高く、0に近ければ正規性が低いということになります。
まとめ
最後に、ここまでの内容をコンパクトにまとめます。
シャピロ・ウィルク検定は、データの正規性(分布の形)を検定する方法
「正規分布らしさ」とは、平均や分散だけではなく、分布の形の対称性にもある
データを昇順に並べて順序統計量を使うことで、分布の形を捉える
標準正規分布から得られる理想的な順序統計量(ベクトル m)と、それに対応する共分散行列 Vを使って、理想的なばらつきを計算
実データと理想パターンとの整合度を表す統計量 W を求め、p値を通じて正規性を評価する
このように、シャピロ・ウィルク検定は単に「平均や分散を見る」だけでなく、「値の並び方のパターンそのものが正規分布っぽいかどうか」を見抜く、非常に賢い方法なのです。
