サンプリングと点推定

Pythonで学ぶサンプリング

James Chapman

Curriculum Manager, DataCamp

フランスの人口を推定する

フランスの地図。

国勢調査は全世帯に人数を尋ねる。

Pythonで学ぶサンプリング

フランスには多くの人がいる

人のアイコンがあるフランス地図。

国勢調査はとても高コスト!

Pythonで学ぶサンプリング

世帯のサンプリング

一部の人アイコンが強調表示されたフランス地図。

少数の世帯に聞き、統計で母集団を推定する方が安価

母集団の一部で作業することを「サンプリング」という

Pythonで学ぶサンプリング

母集団と標本

母集団は完全なデータセット

  • 人を指す必要はない
  • 通常、母集団全体は不明

 

標本は計算に使うデータの部分集合

Pythonで学ぶサンプリング

コーヒー評価データセット

total_cup_points variety country_of_origin aroma flavor aftertaste body balance
90.58 NA Ethiopia 8.67 8.83 8.67 8.50 8.42
89.92 Other Ethiopia 8.75 8.67 8.50 8.42 8.42
... ... ... ... ... ... ... ...
73.75 NA Vietnam 6.75 6.67 6.5 6.92 6.83

 

  • 各行はコーヒー1件を表す
  • 1338行
  • これを母集団として扱う
Pythonで学ぶサンプリング

得点 vs. 風味:母集団

pts_vs_flavor_pop = coffee_ratings[["total_cup_points", "flavor"]]
      total_cup_points  flavor
0                90.58    8.83
1                89.92    8.67
2                89.75    8.50
3                89.00    8.58
4                88.83    8.50
...                ...     ...
1333             78.75    7.58
1334             78.08    7.67
1335             77.17    7.33
1336             75.08    6.83
1337             73.75    6.67

[1338 rows x 2 columns]
Pythonで学ぶサンプリング

得点 vs. 風味:10行の標本

pts_vs_flavor_samp = pts_vs_flavor_pop.sample(n=10)
      total_cup_points  flavor
1088             80.33    7.17
1157             79.67    7.42
1267             76.17    7.33
506              83.00    7.67
659              82.50    7.42
817              81.92    7.50
1050             80.67    7.42
685              82.42    7.50
1027             80.92    7.25
62               85.58    8.17

[10 rows x 2 columns]
Pythonで学ぶサンプリング

Series のサンプリング(Python)

  • pandas の DataFrame/Series には .sample() を使用
cup_points_samp = coffee_ratings['total_cup_points'].sample(n=10)
1088    80.33
1157    79.67
1267    76.17
...     ... 
685     82.42
1027    80.92
62      85.58
Name: total_cup_points, dtype: float64
Pythonで学ぶサンプリング

母集団母数と点推定

母集団母数は母集団データでの計算

import numpy as np
np.mean(pts_vs_flavor_pop['total_cup_points'])
82.15120328849028

点推定(標本統計量)は標本データでの計算

np.mean(cup_points_samp)
81.31800000000001
Pythonで学ぶサンプリング

pandas での点推定

pts_vs_flavor_pop['flavor'].mean()
7.526046337817639
pts_vs_flavor_samp['flavor'].mean()
7.485000000000001
Pythonで学ぶサンプリング

Passons à la pratique !

Pythonで学ぶサンプリング

Preparing Video For Download...