相関係数のシミュレーション
同じ母集団からのサンプリングであっても、相関係数はサンプリングごとに変動する。この変動の様子を理解しておくことは、追試において同じ結論が得られる可能性を予想するときに重要である。なお、相関係数については、岡本安晴「データを使いこなすための統計入門」で説明している。
シミュレーションのプログラムを、リスト1のように作成した。リスト1のプログラムファイルは、圧縮ファイルsimucorfiles.zipとしたので、ダウンロード展開すれば自由に利用できる。
サンプルは2変量正規分布から採るが、相関係数のシミュレーションであるので、正規分布の平均値は0,標準偏差は1とした。サンプリングは、母集団の相関係数とサンプルサイズを設定して行った。リスト1のプログラムを実行すると、相関係数とサンプルサイズの設定が求められる。
rho = 0.7
n = 50
上の例では、母数(パラメータ)としての相関係数0.7、サンプルサイズ50が設定されている。サンプルサイズを設定すると、計算が始まる。
2変量正規分布からのサンプリングは、次のコードで行っている。
data =
ss.multivariate_normal.rvs(mean=[0, 0], cov=[[1, rho],[rho, 1]], size=n)
得られたサンプルに対して、次のスクリプトで相関係数などを求めている。
results =
ss.pearsonr(data.T[0], data.T[1])
r = results.statistic
p = results.pvalue
vL, vU =
results.confidence_interval(0.95)
戻り値resultsに、サンプル相関係数、p値と信頼区間を求めるメソッドconfidence_intervalが含まれている。
これらの計算結果は、散布図とともに表示される(図1)。
図1
タイトルの1段目に、母集団の相関係数とサンプルサイズが表示されている。2段目に、標本相関係数、p値、95%信頼区間が表示さている。
図1のウィンドウを閉じると、端末画面にキー選択が表示される。Nキーを押してEnterキーを押すと次のシミュレーションに進み、Eキーを押してEnterキーを押すとプログラムの終了である。
rho = 0.7
n = 50
次に進む -> Nキー、 終了 -> Eキー
N or E ? N
以下に、Nキーを押してシミュレーションを繰り返した例を示す。
Eキーを押してEnterキーを押すと、プログラムは終了する。
import
scipy.stats as ss
import numpy as np
import matplotlib.pyplot as plt
rho = float(input('rho = '))
n = int(input('n = '))
while True:
#
#
データのサンプリング
#
data =
ss.multivariate_normal.rvs(mean=[0, 0], cov=[[1, rho],[rho, 1]],
size=n)
#
#
相関係数の計算
#
results =
ss.pearsonr(data.T[0], data.T[1])
r = results.statistic
p = results.pvalue
#
#
信頼区間の計算
#
vL, vU =
results.confidence_interval(0.95)
plt.scatter(data.T[0],
data.T[1])
plt.title(f'$\\rho$ =
{rho}, n = {n}\n' + \
f'r = {r:.3f}, p =
{p:.5f}, 95% CI = [{vL:.3f},
{vU:.3f}]')
plt.show()
print('次に進む -> Nキー、 終了 -> Eキー')
ck = input('N or E ? ')
if ck in ['E', 'e']:
break