ブートストラップ

Pythonで学ぶ推測の基礎

Paul Savala

Assistant Professor of Mathematics

ブートストラップ

  • ブートストラップ = 復元抽出によるサンプリング
    1. 無作為に標本を選ぶ
    2. 記録する
    3. データに戻す(復元)
    4. 繰り返す
  • ブートストラップ標本 = ブートストラップで生成した標本
Pythonで学ぶ推測の基礎

ノンパラメトリック信頼区間

  • stats.norm.interval のノンパラメトリック版
    • 復元抽出でサンプル
    • 検定統計量を計算
    • 記録
    • 繰り返し
  • 経験分布を作成
Pythonで学ぶ推測の基礎
salaries_df['Years of Employment']
[6, 11, 14, 3, 2, ...]
sample_1 = salaries_df['Years of Employment'].sample(n=10)

print(max(sample_1) - min(sample_1))
7
  • この処理を多数回繰り返す
  • 中央の95% = 95%ブートストラップ信頼区間
Pythonで学ぶ推測の基礎
# 統計量関数
def max_min(x):
    return max(x) - min(x)

# データ(タプル) data = (salaries_df['Years of Employment'], )
bootstrap_ci = stats.bootstrap(data, max_min, vectorized=False, n_resamples=1000)
print(bootstrap_ci)
BootstrapResult(confidence_interval=ConfidenceInterval(low=33.0, high=38.0),
standard_error=1.3843971812870597)
Pythonで学ぶ推測の基礎

正規分布ベースの信頼区間

 

  • データが正規分布である必要
  • 平均と標準誤差のみで計算
  • 推論の妥当性は正規データに限る
  • 計算が非常に速い

ブートストラップ信頼区間

 

  • 任意の分布に対応
  • 再標本化でデータから直接計算
  • あらゆるデータで妥当
  • 計算はかなり遅い
Pythonで学ぶ推測の基礎

ブートストラップの活用例

  • 非正規データで有効
    • 順位データ
    • 歪んだデータ
  • 通常の信頼区間が疑わしい値を返すとき
  • 任意の統計量に適用可能
Pythonで学ぶ推測の基礎

Passons à la pratique !

Pythonで学ぶ推測の基礎

Preparing Video For Download...