Pythonによるサンプリングの実装
メニューを表示するにはスワイプしてください
単純無作為抽出法
1234567import 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}")
random.sample(range(1, N+1), n)は母集団からn個の一意な値をランダムに選択;- 復元抽出なしで動作(重複なし);
- 母集団のすべてのメンバーが選ばれる確率は等しい。
層化抽出
123456789N_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}")
- 母集団を**サブグループ(層)**に分割
- 各サブグループから比例的にサンプルを抽出
- 主要なグループの代表性を確保
クラスターサンプリング
1234567import 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")
- 母集団をクラスター(例:教室)に分割
- 1つ以上のクラスターをランダムに選択
- 選ばれたクラスター内の全員を調査
- 全個体のリスト化が非現実的な場合に効率的
系統抽出法
123456789101112import 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]}")
- 間隔 k=nN;
- 開始点は1からkの間でランダムに選択;
- 並べられた母集団からk番目ごとに要素を選択。
手法のまとめ
- 単純無作為抽出法: すべてに等しい確率、重複なし;
- 層化抽出法: サブグループの代表性を確保;
- クラスター抽出法: グループ全体をランダムに選択;
- 系統抽出法: ランダムな開始後、一定間隔で選択。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 5. 章 6
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 5. 章 6