Up

(非心)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.

 

 

 

Home