Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Pythonへのサンプリングの実装 | 確率と統計
Pythonによるデータサイエンスのための数学

bookPythonへのサンプリングの実装

メニューを表示するにはスワイプしてください

単純無作為抽出法

1234567
import random N = 30 # population size n = 5 # sample size sample_srs = random.sample(range(1, N+1), n) print(f"Simple Random Sample: {sample_srs}")
copy
  • random.sample(range(1, N+1), n) は母集団からn個のユニークな値をランダムに選択;
  • 復元抽出なしで動作(重複なし);
  • 母集団のすべてのメンバーが選ばれる確率は等しい。

層別抽出法

123456789
N_males = 18 N_females = 12 N_total = N_males + N_females n_total = 10 n_males = round((N_males / N_total) * n_total) n_females = round((N_females / N_total) * n_total) print(f"Stratified Sample Size -> Males: {n_males}, Females: {n_females}")
copy
  • 母集団を**サブグループ(層)**に分割;
  • 各サブグループから比例的にサンプルを抽出;
  • 主要なグループの代表性を確保。

クラスターサンプリング

1234567
import random clusters = 5 students_per_cluster = 25 selected_cluster = random.randint(1, clusters) print(f"Selected cluster (classroom): {selected_cluster} containing {students_per_cluster} students")
copy
  • 母集団をクラスター(例:教室)に分割
  • 1つまたは複数のクラスターをランダムに選択
  • 選ばれたクラスター内の全員を調査
  • 全個体のリスト化が非現実的な場合に効率的

系統的サンプリング

123456789101112
import random N = 1000 n = 100 k = N // n # Sampling interval start = random.randint(1, k) # Random start sample_systematic = list(range(start, N+1, k)) print(f"Sampling interval k = {k}") print(f"Random start = {start}") print(f"First 10 samples: {sample_systematic[:10]}")
copy
  • 間隔 k=Nnk = \frac{N}{n}
  • 開始点は1からkkの間でランダムに選択
  • 並べ替えられた母集団からkk番目ごとに要素を選択

手法の概要

  • 単純無作為抽出法: すべてに等しい確率、重複なし;
  • 層化抽出法: サブグループの代表性を確保;
  • クラスター抽出法: グループ全体を無作為に選択;
  • 系統抽出法: 無作為な開始後、一定間隔で選択。
question mark

重複なしの単純無作為抽出に使用される関数はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  6
some-alt