始める無料で始める

置換サンプリングを可視化する

置換サンプリングがどのように機能するかを視覚的に理解するために、この演習では置換サンプルを生成し、グラフで確認します。

今回も Sheffield 気象観測所のデータを使い、6月(乾燥月)と11月(多雨月)の月間降水量を比較します。分布が異なると予想されるので、同一分布だとしたらECDFが「どのように見えるか」を確かめるために置換サンプルを作成します。

データは NumPy 配列 rain_junerain_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_junerain_november から置換サンプルのペアを生成します。
    • あなたの ecdf() 関数を使って、2つの置換サンプルそれぞれについてECDFの xy を生成します。
    • 最初の置換サンプル(x_1y_1)のECDFをドットで描画します。2つ目の置換サンプル(x_2y_2)についても同様に描画します。
  • 実データ rain_junerain_november のECDF用の xy を生成し、それぞれ 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()
コードを編集して実行