無相関検定(母相関係数=0の検定)の逆
無相関検定
無相関検定は,サンプルサイズと標本相関係数を与えて,母相関係数=0 の検定を行い $p$ 値を返す。
import numpy as np
from scipy.stats import t
def rtest(n, r):
"""
引数
n: サンプルサイズ
r: 標本相関係数
戻り値
検定統計量 t0 と p 値(両側検定)のタプル
"""
t0 = abs(r)*np.sqrt(n - 2)/np.sqrt(1 - r**2)
return (t0, 2*t.sf(t0, n - 2))
サンプルサイズが 10,標本相関係数が 0.5 のときの $p$ 値(両側検定)
print(rtest(10, 0.5))
(1.6329931618554523, 0.14111328124999997)
無相関検定の逆
サンプルサイズと有意水準 $\alpha$ を与えて,無相関検定で帰無仮説が棄却される標本相関係数の下限値を求める。
無相関検定において検定統計量 $t_0$ は以下の式で与えられる。
$$
t_0 = \frac{|r|\ \sqrt{n - 2}}{\sqrt{1 - r^2}}
$$
この式を $r$ について解くと,$t$ 分布において $\Pr\{t \gt t_0\}$ となる $r$ を求めることができる。
$$
r = t_0\ \sqrt{1/(n + t_0^2 - 2)}
$$
サンプルサイズと有意水準 $\alpha$ を与えて標本相関係数の下限値を返す関数を定義する。
def threshold(n, alpha=0.05):
"""
引数
n: サンプルサイズ
alpha: 有意水準。デフォルト値は 0.05
戻り値
検定統計量 t0 と 標本相関係数の下限値のタプル
"""
t0 = t.isf(alpha/2, n - 2)
return (t0, t0*np.sqrt(1/(n + t0**2 - 2)))
サンプルサイズが 10 のときの標本相関係数の下限値を求める。
threshold(10)
(2.306004135033371, 0.6318968646917198)
得られた結果を,前述した rtest 関数で評価してみる。
rtest(10, 0.6318968646917198)
(2.306004135033371, 0.05000000001333089)
有意確率(p 値)が 0.05 になった。