はじめに
標本がいくつか得られた場合にそれが無作為抽出か調べる方法をBingに尋ねたところ、あるようです.
はい、あります。それは「無作為抽出検定」と呼ばれます。この検定は、標本が無作為に抽出されたかどうかを検定するために使用されます。この検定では、標本が無作為に抽出されたという帰無仮説と、そうでないという対立仮説を設定し、帰無仮説が棄却された場合、標本が無作為に抽出されていないと判断されます (Bing)
なので、前回考察した事例において、もう1つ標本を無作為抽出した上で確認してみる.
というのが本記事の趣旨です.
メモ
Bingにチャットで相談し、以下のようなコードと出力結果を得ました.
import numpy as np
from scipy.stats import gamma
import matplotlib.pyplot as plt
# ガンマ分布のパラメータ
alpha = 2.5
beta = 10000
# サンプル数
n = 23
# 母集団のガンマ分布を描画
x = np.linspace(0, 100000, 1000)
y = gamma.pdf(x, a = alpha, scale = beta)
fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 0].set_title('Gamma Distribution')
# ガンマ分布からサンプルを生成
sample1 = gamma.rvs(alpha, scale=beta, size=n)
sample2 = gamma.rvs(alpha, scale=beta, size=n)
# ヒストグラムで可視化
axs[0, 1].hist(sample1, bins=20, alpha=0.5, label='sample1')
axs[0, 1].hist(sample2, bins=20, alpha=0.5, label='sample2')
axs[0, 1].legend(loc='upper right')
axs[0, 1].set_title('Histogram')
# 箱ひげ図で可視化
axs[1, 0].boxplot([sample1, sample2], labels=['sample1', 'sample2'])
axs[1, 0].set_title('Box Plot')
from scipy.stats import ttest_ind
# 無作為抽出検定
t, p = ttest_ind(sample1, sample2)
print('t値:', t)
print('p値:', p)
plt.show()
t値: 0.10165212329988577
p値: 0.9194946390839558
このコードの説明は次のとおりです.
このコードは、Pythonでガンマ分布を使って、2つのサンプルのt検定を行っています。ガンマ分布は、形状母数と尺度母数を指定することで定義される連続確率分布です。このコードでは、numpyとscipy.statsのライブラリを使って、ガンマ分布からサンプルを生成し、ヒストグラムや箱ひげ図で可視化しています。また、t検定にはscipy.statsのttest_ind関数を使用しています。(Bing)
無作為抽出かどうかを確認するためのt検定ということでしょうか.
という質問をさらQとして入れたところ回答は以下のとおりでした.
はい、正解です。このコードでは、2つのサンプルのt検定を行っています。t検定は、2つの平均値が等しいかどうかを検定する方法の1つで、無作為抽出検定とも呼ばれます。(Bing)
なるほど、t検定は無作為抽出検定とも呼ばれるのですね.
言われてみると確かにその通りだと思います.
漫然と統計検定2級のテキストをインプットするだけでは見落としていたようです.
毎日新しい気づきを与えてくれるBingにお礼を言いたいです.
今朝は時間がないので本メモはここまでとしたいですが、気になることがあったので質問してみました. 本記事はその回答で締めさせていただければと思います.
同一のガンマ分布から実際本当に無作為抽出した2つの標本でこの検定を何度も行うと、p値の分布は一般的には一様分布になります。 ただし、標本数が少ない場合は、p値の分布が一様分布にならないことがあります。(Bing)
