(非心)t分布のシミュレーション
データの平均値は正規分布に従い、平均値の分散はカイ二乗分布に関係づけられるとして分析が行われることがある。
平均値の検定を標準偏差(分散の平方根)との関係において行うときは、平均値が正規分布に従い、標準偏差の二乗(分散)がカイ二乗分布で表されることから、正規分布とカイ二乗分布を自由度で割った値の平方根の比の分布であるt分布が使われる。このことの簡単なシミュレーションを行ってみた。
正規分布に従う確率変数
とカイ二乗分布
に従う確率変数
が独立であらるとき、次式
は非心度、自由度
の非心t分布に従う。非心度
のときは、自由度
のt分布に従う。
いま、平均値10、分散1の正規分布に従う確率変数と、自由度5のカイ二乗分布に従う確率変数
が独立であるとして、次式
のサンプルをとりヒストグラムを描いてみる。
リスト1のスクリプトで描くと、図1のグラフを得る。
図1
赤色の曲線は、非心度10,自由度5の非心t分布のグラフである。赤色の曲線とヒストグラムがよく合っているのがわかる。
リスト1
import numpy
as np
import scipy.stats
as ss
import matplotlib.pyplot
as plt
rng = np.random.default_rng()
data_size = 1_000_000
num_w = rng.normal(loc=10,
scale=1, size=data_size)
den_v = rng.chisquare(df=5, size=data_size)
den = (den_v
/ 5) ** 0.5
T = num_w /
den
plt.hist(T, bins=np.arange(np.min(T), np.max(T)+1),
density=True)
xcoord = np.linspace(np.min(T), np.max(T), 1000)
ncts = ss.nct.pdf(xcoord,
5, 10)
plt.plot(xcoord, ncts, label='non-cenral t\n' +
r'$\delta$=10')
plt.legend()
plt.show()
上のシミュレーションにおいて、正規分布の平均を0としたものは非心度0であり、自由度5のt分布と呼ばれている。
リスト2のスクリプトでシミュレーションをおこなうと、図2のグラフを得る。
図2
リスト2
import numpy
as np
import scipy.stats
as ss
import matplotlib.pyplot
as plt
rng = np.random.default_rng()
data_size = 1_000_000
num_w = rng.normal(loc=0,
scale=1, size=data_size)
den_v = rng.chisquare(df=5, size=data_size)
den = (den_v
/ 5) ** 0.5
T = num_w /
den
plt.hist(T, bins=np.arange(np.min(T), np.max(T)+1),
density=True)
xcoord = np.linspace(np.min(T), np.max(T), 1000)
cts = ss.t.pdf(xcoord,
5)
plt.plot(xcoord, cts, label='t-distri:df=5')
plt.legend()
plt.show()
参考文献
Hogg, R. V., McKean, J. W., & Craig, A. T. (2005) Introduction to Mathematical Statistics, 6th ed. Pearson Education, Inc.