置換サンプリングを可視化する
置換サンプリングがどのように機能するかを視覚的に理解するために、この演習では置換サンプルを生成し、グラフで確認します。
今回も Sheffield 気象観測所のデータを使い、6月(乾燥月)と11月(多雨月)の月間降水量を比較します。分布が異なると予想されるので、同一分布だとしたらECDFが「どのように見えるか」を確かめるために置換サンプルを作成します。
データは NumPy 配列 rain_june と rain_november に格納されています。
参考までに、permutation_sample() のシグネチャは permutation_sample(data_1, data_2) で、戻り値は permuted_data[:len(data_1)], permuted_data[len(data_1):] です。ここで permuted_data = np.random.permutation(np.concatenate((data_1, data_2))) とします。
この演習はコースの一部です
Pythonで学ぶ統計思考(パート2)
演習の手順
forループを書いて、置換サンプルを50組生成し、それぞれのECDFを計算してプロットします。permutation_sample()関数を使い、rain_juneとrain_novemberから置換サンプルのペアを生成します。- あなたの
ecdf()関数を使って、2つの置換サンプルそれぞれについてECDFのxとyを生成します。 - 最初の置換サンプル(
x_1とy_1)のECDFをドットで描画します。2つ目の置換サンプル(x_2とy_2)についても同様に描画します。
- 実データ
rain_juneとrain_novemberのECDF用のxとyを生成し、それぞれcolor='red'、color='blue'のキーワード引数を使ってECDFをプロットします。 - 軸ラベルを付け、余白を2%に設定し、プロットを表示します。これらはすでに用意されているので、「回答を送信」を押すだけでプロットを確認できます!
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
for _ in ____:
# Generate permutation samples
perm_sample_1, perm_sample_2 = ____
# Compute ECDFs
x_1, y_1 = ____
x_2, y_2 = ____
# Plot ECDFs of permutation sample
_ = plt.plot(____, ____, marker='.', linestyle='none',
color='red', alpha=0.02)
_ = plt.plot(____, ____, marker='.', linestyle='none',
color='blue', alpha=0.02)
# Create and plot ECDFs from original data
x_1, y_1 = ____
x_2, y_2 = ____
_ = plt.plot(x_1, y_1, marker='.', linestyle='none', color='red')
_ = plt.plot(x_2, y_2, marker='.', linestyle='none', color='blue')
# Label axes, set margin, and show plot
plt.margins(0.02)
_ = plt.xlabel('monthly rainfall (mm)')
_ = plt.ylabel('ECDF')
plt.show()