パラメトリック検定 vs ノンパラメトリック検定~中編~
こんにちは、ゆるです。パラメトリック検定 vs ノンパラメトリック検定の中編ということでいよいよノンパラメトリック検定が登場します。中編の理解には前編の内容が必要になるので、まだ読んでない方は前編から読んで頂けると嬉しいです!
今回の記事では以下の書籍を参考にしました。
前編のおさらい
前編で扱った中でも重要な項目に再度触れます。
仮説検定において、$${p<0.05}$$といったように有意となる閾値を設定すると思いますが、その意義を考察する上では第1種の過誤について考えなければなりませんでした。
分散が等しい$${2}$$つの正規分布について平均の差の検定を行う場合、$${Student}$$の$${t}$$検定を行うと実際に第1種の過誤率が$${0.05}$$に収まりそうなことをシミュレーションで確認しました。また、分散が等しくない正規分布について$${Student}$$の$${t}$$検定を行うと、$${p<0.05}$$という基準にもかかわらず第1種の過誤率が$${0.05}$$より大きくなる(=前提1に反する)こと、そしてその際には代わりに$${Welch}$$の$${t}$$検定を行うと第1種の過誤率が$${0.05}$$に近づき、多少「マシ」な検定になることを確認しました。
ノンパラメトリック検定
さて、ようやく表題の内容に切り込んでいけます。前編までは正規分布の仮定のもと、等分散性が成り立つか否かで検定を選んでいました。$${t}$$検定を行う上で母集団分布の正規分布の仮定が必要な理由は、「母集団分布の正規性」が「$${t}$$検定の際に用いる$${t}$$統計量が$${t}$$分布に従う」ための条件であるためです(詳細は以下の記事を参照)。
こういったように母集団分布に何かしら仮定して行う検定をパラメトリック検定と言います。仮定した分布というのは何かしらのパラメーター(正規分布で言うと平均と分散)を持っているので、パラメトリックと呼ばれます。パラメトリックというと正規分布のみを指すニュアンスで使用されることもありますが、より正確には分布(二項分布、ポアソン分布など)の仮定を持った検定を行うのあればそれは全てパラメトリックになります。分布を仮定できるということはその形状を特徴づけるパラメータが存在し、その「パラメータの存在」こそが「パラメトリック」の名前の由来であるためです。
一方で、ノンパラメトリック検定という言葉を聞いたことがある方も多いと思います。これは検定を行う際に母集団分布の形について仮定を置かない検定になります。では分布を仮定せずにどのような検定をおこなうのでしょうか?答えは両群から得られたすべての標本を昇順に並べ、その並び方の場合の数からどの程度稀な現象かを検定します。
正規分布以外の分布に対してStudentのt検定を行う場合
基本的に母集団分布はどんな形でもいいですが、例えば連続一様分布の場合を考えてみましょう。一例として$${-1{\leq}x{\leq}1}$$の範囲における連続一様分布を考えるとその確率密度関数は$${f(x)=1/2}$$となります。乱数を生成すると以下のようなヒストグラムとなりますが、標準正規分布と重ねると形が大きく異なるとわかります。
このプロットは以下のコードで生成可能です(乱数のためヒストグラムの形は多少変化します)。
import numpy as np
import matplotlib.pyplot as plt
#正規分布と連続一様分布に従う乱数を生成
X = np.random.normal(loc=0, scale=1, size=10000)
Y = np.random.uniform(low=-1, high=1, size=10000)
#それぞれの密度分布をヒストグラムとして重ねて表示
plt.hist(X, density=True, bins=20,alpha=0.7)
plt.hist(Y, density=True, bins=20, alpha=0.7)
plt.show()
今回は一様分布であると予め分かっており、その形を規定する$${x}$$の定義域$${a{\leq}x{\leq}b}$$のパラメータ$${a,b}$$を使用してパラメトリック検定を構成することもできるかもしれません。ただし、今回は母集団分布は正体不明の分布として扱いパラメータの推定などもできないとします。
さて前置きが長くなりましたが、連続一様分布に従う二つの分布に対して$${2}$$群の母集団分布が等しいか否かの検定を行う際に$${Student}$$の$${t}$$検定を行ってみましょう!以下のコードで第1種の過誤率がどの程度かをシミュレーションすることができます。
import numpy as np
import scipy.stats as sts
#有意になった回数を記録する変数
significant = 0
for i in range(100000):
#XとYについてn=6ずつ抽出
X = np.random.uniform(low=-1, high=1, size=6)
Y = np.random.uniform(low=-1, high=1, size=6)
#Studentのt検定の結果を格納
p = sts.ttest_ind(X, Y, equal_var=True).pvalue
#有意になった場合significantに1を足す
if p<0.05:
significant += 1
else:
pass
#第1種の過誤を犯した割合
alpha = significant/100000
print(alpha)
ゆるが実行した際には、第1種の過誤率が$${0.0534}$$となりました。何回か実行してみても$${0.05}$$より微かに大きな値を示しているのではないでしょうか。以上より、一様分布に対して$${Student}$$の$${t}$$検定を行うと第1種の過誤率が意図した通りに保たれておらず理想的な検定ではないことが分かります。
こういったときに分布の形状によらず第1種の過誤率を保ちやすい検定として$${Wilcoxon}$$の順位和検定が知られています。
Wilcoxonの順位和検定
$${Wilcoxon}$$の順位和検定、または$${Mann\text-Whitney}$$の$${U}$$検定は$${2}$$群の標本全ての標本を昇順に並べて、各群における順位の合計を計算し、その順位和がどの程度起こりづらい事象かを見るという形式の仮説検定になります。標本の値の順番のみを使用するので母集団分布の形は問いません。
今から行う検定は「$${Wilcoxon}$$の順位和検定」と「$${Mann\text-Whitney}$$の$${U}$$検定」の二通りの名称がついています。厳密にはこれら二つの検定は、順位を検定統計量に反映する方法が異なっているのですが、実質同値な検定を構成することができます。
先ほどと同様に一様分布に対して$${Mann\text-Whitney}$$の$${U}$$検定を行ってみましょう!以下のコードで実行可能です。
import numpy as np
import scipy.stats as sts
#有意になった回数を記録する変数
significant = 0
for i in range(100000):
#XとYについてn=6ずつ抽出
X = np.random.uniform(low=-1, high=1, size=6)
Y = np.random.uniform(low=-1, high=1, size=6)
#Mann-WhitneyのU検定の結果を格納
p = sts.mannwhitneyu(X, Y, method="exact").pvalue
#有意になった場合significantに1を足す
if p<0.05:
significant += 1
else:
pass
#第1種の過誤を犯した割合
alpha = significant/100000
print(alpha)
ゆるが実行した際には$${0.04141}$$となりました!先ほどの$${t}$$検定の場合とは異なり、第1種の過誤率が抑えられたと言えます。
以上より、$${Student}$$の$${t}$$検定は母集団分布が正規分布に従う場合のみ第1種の過誤率を適切にコントロールできそうであるということが分かりました。
今回は一様分布に対して$${t}$$検定を行い第1種の過誤率が$${0.05}$$を上回ってしまう事例を紹介しました。一方で正規分布以外の分布に対して$${t}$$検定を個なった場合に、第1種の過誤率が大きくなりすぎる場合だけでなく、逆に小さくなりすぎてしまう場合もあります。例えば指数分布に対してはパラメータ次第では$${t}$$検定を行った際に第1種の過誤率が$${0.05}$$を下回ります。こういった場合は、検定の枠組み上は問題ないことをしているのですが、逆に検定の検出力も大きく低下している場合が多く、理想的な検定とは言えません。
中編の最後から後編にかけては「パラメトリック検定 vs ノンパラメトリック検定」の本質となる「結局どの場合にどの検定を使用すればいいのか」という部分に触れたいと思います。
検出力
検定手法を選ぶ際には以下の方針で行うことが重要になります。
ここで先ほどから何回か新しい言葉「検出力」が出てきました。検出力の定義は以下になります。
以上の概念がなぜ重要かというと、例えばこれまでのような第1種の過誤率の議論だけからだと、「分布の仮定しなくていいノンパラメトリック検定を毎回使用すれば少なくとも第1種の過誤率を抑えられるから問題ないのではないか。そうすれば難しいことを考えなくてもいいのではないか。」という結論になってしまうためです。一方で仮説検定による意思決定は、サイエンスやビジネスにおいて、クリティカルな選択になることも珍しくありません。そういった場面で検出力を軽視すると、実験リソースの無駄使いにつながる事態を招きます。
後編ではこの検出力にフォーカスして結局どの検定を使うべきなのかについて触れていきたいと思います。
おわりに
ここまで読んでくださった方々、ありがとうございました!前編から見て頂いている方は「ようやくノンパラの検定が出てきた」とか、「これでまだ中編か」と思われる方もいるかもしれませんが、最後までお付き合いいただけけると嬉しいです!それではまた!
【更新履歴】
2024/03/24 初稿投稿