始める無料で始める

ペア・ブートストラップ用の関数を作る

動画で説明したとおり、ペア・ブートストラップではデータのペアをリサンプリングします。各ペアの集合に対して、ここでは np.polyfit() を使って直線を当てはめます。これを何度も繰り返して、パラメータ値のブートストラップ複製を得ます。ペア・ブートストラップを行う便利なツールとして、x,y データの集合に対してペア・ブートストラップを実行する関数を書いていきます。

この演習はコースの一部です

Pythonで学ぶ統計思考(パート2)

コースを見る

演習の手順

  • 線形回帰パラメータに対してペア・ブートストラップ推定を行う関数 draw_bs_pairs_linreg(x, y, size=1) を定義します。
    • np.arange() を使って、0 から len(x) までのインデックス配列を作ります。これをリサンプリングし、xy 配列から値を取り出すのに用います。
    • np.empty() を使って、傾きと切片の複製配列をサイズ size で初期化します。
    • 次の処理を行う for ループを書きます。
      • インデックス inds をリサンプリングします。np.random.choice() を使ってください。
      • リサンプリングしたインデックス bs_inds を使って、新しい \(x\) と \(y\) の配列 bs_xbs_y を作ります。これは xybs_inds でスライスして作成します。
      • 新しい \(x\) と \(y\) 配列に np.polyfit() を適用し、得られた傾きと切片を保存します。
    • 傾きと切片のペア・ブートストラップ複製を返します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

def draw_bs_pairs_linreg(x, y, size=1):
    """Perform pairs bootstrap for linear regression."""

    # Set up array of indices to sample from: inds
    inds = ____

    # Initialize replicates: bs_slope_reps, bs_intercept_reps
    bs_slope_reps = ____
    bs_intercept_reps = ____

    # Generate replicates
    for i in range(size):
        bs_inds = np.random.choice(____, size=____)
        bs_x, bs_y = x[____], y[____]
        bs_slope_reps[i], bs_intercept_reps[i] = ____

    return bs_slope_reps, bs_intercept_reps
コードを編集して実行