ランダムサンプリングは、調査者の判断を挟まず、あらかじめ定めた確率にしたがって母集団から標本を抜き出す方法です。日本語では無作為抽出と呼び、英語では random sampling と表記します。用語としては単純ですが、実務でつまずくのは「では何人選べばよいのか」「Excelでどう式を組むのか」「本当に乱数で選べているのか」という手前の三つです。この記事では定義と5種類の使い分けを整理したうえで、Excelの数式とPythonの実行可能なコード、標本数の計算根拠、そして内閣府や総務省が実際に採っている抽出手順までを扱います。
まとめ:ランダムサンプリングの要点
- 定義:定められた確率にしたがって母集団から標本を採る抽出法(JIS Z 8101-2:2015 1.3.5)。全要素が等確率になるのは単純ランダムサンプリングの場合です。
- 前提:母集団の全要素を並べた名簿(サンプリングフレーム)が必要。用意できない場面では地点を先に選ぶ手法へ切り替えます。
- 5種類:単純・層別・系統・クラスター・多段。精度で選ぶなら層別、名簿が不完全なら多段やエリア抽出。
- 標本数:信頼度95%・許容誤差5%なら385、誤差3%なら1,068。母集団の大きさより許容誤差で決まります。
- Excel:重複なしで抜くならSORTBY関数とRANDARRAY関数の組み合わせ(件数の切り出しに使うTAKE関数はExcel 2021非対応)。RANDBETWEEN関数は重複を防ぎません。
- Python:非復元はrandom.sample、復元はrandom.choices。表データはpandasのsampleでrandom_stateを固定すれば再現できます。
- 限界:無作為に選べても回答しない人の偏り(無回答バイアス)は残ります。標本数を増やしても消えません。
ランダムサンプリングの定義と「無作為抽出」との呼び分け
ランダムサンプリングは日常的に「どの要素も等しい確率で選ばれる抽出法」と説明されますが、規格上の定義はもう少し広く取られています。JIS Z 8101-2:2015(統計 用語及び記号 第2部:統計の応用、対応国際規格 ISO 3534-2:2006)の1.3.5は、ランダムサンプリング(無作為抽出、無作為抜取)を「n個のサンプリング単位の可能な組合せのそれぞれが定められた確率で採り出されるような方法で、n個のサンプリング単位からなるサンプルを母集団から採るサンプリング」と定義しています。
ここで重要なのは同項の注記です。「無限母集団又は復元サンプリングの場合には、単純ランダムサンプリングと同じ」とあり、ランダムサンプリングと単純ランダムサンプリングは規格上は同義ではありません。すべての組合せが同じ確率で選ばれる(=全要素が等確率)のは単純ランダムサンプリングの性質で、有限母集団から戻さずに抜く一般のランダムサンプリングは、確率が定まっていれば等確率でなくても該当します。層別サンプリングや多段サンプリングが「ランダムサンプリングの種類」として並ぶのは、この定義の幅があるためです。
抽出された標本そのものを指す語も規格では区別され、1.2.24が単純ランダムサンプル(単純無作為標本、simple random sample)、1.2.25がランダムサンプル(無作為標本、random sample)です。分野による呼び分けは用語の癖にすぎません。
成立には、母集団の範囲が定義されていることと、その全要素を列挙した名簿が存在することの両方が要ります。この名簿を規格ではサンプリングフレーム(標本枠、1.2.27)と呼び、「サンプリング単位の全体のリスト」と定義しています。「全国の18歳以上」と決めただけでは抽出できず、住民基本台帳のような実在のリストに到達できて初めて抽出が可能になります。同項の注記は、サンプリングフレームが目的の母集団と一致しない場合があることにも触れています。名簿から漏れている人は、どれほど厳密に乱数を引いても選ばれません。このフレームの有無が、後述する手法選択の分岐点になります。名簿を用意できない調査設計はエリアサンプリングとは?名簿不要の地域抽出法の仕組み・手順・精度を解説で扱っています。
「ランダムに選ぶ」は「適当に選ぶ」ではありません。調査員が歩いていて目についた人に声をかける方法は、時間帯と場所という条件で対象が絞られるため等確率になりません。無作為性は、選ぶ人の主観を排して乱数や抽出間隔という機械的な規則に委ねることで担保されます。
有意抽出(判断抽出・割当法)との決定的な違い
ランダムサンプリングの対義にあたるのが有意抽出(非確率抽出)です。調査者の判断で対象を選ぶ判断抽出、性年代の構成比を先に決めて集める割当法(クォータサンプリング)、集めやすい相手から集める便宜抽出がこれに含まれます。
両者の差は、精度の良し悪しではなく誤差を計算できるかどうかです。選ばれる確率が定まっている標本なら「この結果は±何ポイントの範囲に収まる」と数式で言えます。有意抽出は選ばれる確率が不明なので、標本誤差を計算する根拠がありません。世論調査の記事で見る「±3ポイント」のような表記は、無作為抽出でなければ書けない数字です。誤差の計算そのものは標本誤差とは何か?基本的な定義と統計学的な意味で解説しています。
割当法は性年代の構成比だけは母集団に一致させられるため、一見すると代表性があるように見えます。ただし各セル内部の選び方は任意であり、たとえば「30代女性100人」を集める過程で協力的な人に偏ります。回答者の構成比が合っていることと、意見の分布が母集団と一致していることは別問題です。
ランダムサンプリング5種類の使い分け
確率抽出は、サンプリングフレームの状態と求める精度で使い分けます。以下の比較表は選択の分岐に必要な条件だけを並べたものです。
| 手法 | 選び方 | 名簿の要否 | 精度 | 向く場面 |
|---|---|---|---|---|
| 単純ランダムサンプリング | 全要素から乱数で抽出 | 全体の名簿が必須 | 基準 | 名簿が揃う小規模母集団 |
| 層別サンプリング | 層ごとに抽出 | 層情報つき名簿が必須 | 単純より高い | 層ごとの傾向差が大きい |
| 系統サンプリング | 起点を乱数で決め等間隔 | 並んだ名簿が必須 | 単純とほぼ同等 | 長い名簿の機械的処理 |
| クラスターサンプリング | 集団単位で選び全数調査 | 集団の一覧のみ | 単純より低い | 訪問コスト重視 |
| 多段サンプリング | 段階的に絞る | 段階ごとの一覧のみ | 単純より低い | 全国規模の調査 |
この記事が主題にしている単純ランダムサンプリングは、母集団の全要素に通し番号を振り、乱数で番号を選ぶだけの手法です。手続きが単純で誤差の計算式も最も素直なため、他手法の精度を比べる基準になります。弱点はフレームへの依存で、数十万件の名簿を丸ごと入手しないと成立しません。
層別サンプリングは、母集団を性別や地域といった層に分けたうえで各層から抽出します。層の内部が似た性質でまとまっていれば分散が小さくなり、同じ標本数でも単純抽出より誤差が小さくなります。逆にクラスターと多段では、同じ集団に属する人が似た性質を持つ分だけ分散が増え、同じ標本数での精度は落ちます。精度を落としてもコストを優先する判断であり、この精度低下の度合いを設計効果と呼びます。
層とクラスターは、母集団を重複なく分割する点では同じ構造です。違いは設計の狙いで、JIS Z 8101-2:2015 の注記は、層が「目的とする特性に関して層内がより均一になるように」設定されるのに対し、クラスターは「クラスター間の差が小さくなるように、クラスター内のばらつきは大きくなるように」設定されると説明しています。層別で精度が上がりクラスターで下がる理由は、この設計方針の違いに由来します。
系統抽出は、抽出間隔と名簿の並び順に周期性があると偏りが生じる点に注意が必要です。手続きと注意点は系統抽出法とは?基本的な概念と統計学における役割、段階的に絞る設計は多段抽出法とは?基本的な概念と統計調査での役割で個別に扱っています。抽出法全体の位置づけを先に押さえたい場合は無作為抽出法とは何かを基礎から解説する導入ガイドから読み進めてください。
Excelでランダムサンプリングする式と関数の落とし穴
Excelには乱数を返す関数が3種類あり、それぞれ性質が違います。RAND関数はMicrosoft公式の説明どおり「0以上1未満の均等分布した実数」を返し、RANDBETWEEN関数は「指定した数値間のランダムな整数」を返します。RANDARRAY関数は乱数の配列を返す関数で、Excel for Microsoft 365、Excel 2024、Excel 2021で使えます。
重複を出さない式:SORTBYとRANDARRAYの組み合わせ
名簿がA2からA1001に並んでいるとして、そこから重複なしで50件を抜く式は次のとおりです。TAKE関数を含むためExcel for Microsoft 365またはExcel 2024が必要です。
=TAKE(SORTBY(A2:A1001, RANDARRAY(ROWS(A2:A1001))), 50)
RANDARRAY関数が名簿と同じ行数の乱数列を作り、SORTBY関数がその乱数を並べ替えキーに使って名簿をシャッフルし、TAKE関数が上から50件を取り出します。SORTBY関数はMicrosoft公式が「すべての引数が同じサイズでなければならない」と定めているため、ROWS関数で行数を合わせる部分は省略できません。名簿の行数と乱数の個数がずれると #VALUE! エラーになります。
Excel 2021ではTAKE関数が使えません(Microsoft公式の対応バージョンはExcel for Microsoft 365とExcel 2024)。その場合はSORTBY関数だけで名簿全体を並べ替え、上から50行を抽出結果として使ってください。並べ替え自体はRANDARRAY関数もSORTBY関数もExcel 2021に対応しているため成立します。
名簿の並べ替えではなく通し番号を割り当てたい場合は、SEQUENCE関数を使います。
=SORTBY(SEQUENCE(1000), RANDARRAY(1000))
RAND・RANDBETWEENで結果が変わり続ける理由と値の固定
RANDBETWEEN関数で「1から1000までの整数を50個」作って抽出しようとすると、二つの問題が起きます。
ひとつは重複です。Microsoft公式のRANDBETWEEN関数の説明に、同じ値を返さない仕組みへの言及はありません。それぞれのセルが独立に乱数を引くだけなので、50セルに同じ番号が複数出ることは普通に起こります。抽選や標本抽出で同じ人を二度選ぶのは非復元抽出の前提を壊すため、重複を許さない用途ではSORTBY方式に切り替えてください。
もうひとつは値が変わり続けることです。RAND関数もRANDBETWEEN関数も「ワークシートが計算されるたびに新しい乱数を返す」揮発性の関数で、別のセルに文字を入れただけでも抽出結果が丸ごと入れ替わります。抽出結果を記録として残すには値に固定する必要があり、Microsoft公式は数式バーで F9 を押して数式を乱数の値に変える方法を案内しています。抽出済みの範囲をコピーして値のみで貼り付ける操作でも同じ結果になります。
誰が抽出しても同じ結果を再現したい場面では、Excelの乱数関数にはシードを指定する引数がないため再現できません。監査に耐える記録が要る調査なら、次のPythonのようにシードを固定できる環境を選ぶほうが確実です。
Pythonでのランダムサンプリング(復元・非復元・層別の実装)
random.sampleとrandom.choicesの使い分け
標準ライブラリのrandomモジュールでは、非復元抽出がrandom.sample、復元抽出がrandom.choicesです。次のコードは1から100の母集団から5件を抜いたもので、Python 3.9.6で実行した結果を併記しています。
import random
random.seed(42)
print(random.sample(range(1, 101), 5))
# [82, 15, 4, 95, 36] 同じ人は二度選ばれない
random.seed(42)
print(random.sample(range(1, 101), 5))
# [82, 15, 4, 95, 36] シードが同じなら完全に再現する
random.seed(42)
print(random.choices(range(1, 101), k=5))
# [64, 3, 28, 23, 74] 重複しうる(復元抽出)
seedを同じ値で固定すれば実行のたびに同じ標本が得られるため、抽出手順を第三者が検証できます。調査報告に使用したシード値を書き添えておくと、抽出プロセスの記録として機能します。
実装上の注意を二点補足します。random.sampleに渡す母集団はシーケンスでなければなりません。集合(set)を渡す書き方はPython 3.9で非推奨となり、公式ドキュメントは「集合からリストへの自動変換はサポートされなくなった」と記載しています。3.9系ではDeprecationWarningが出るだけですが、新しい処理系ではエラーになるためlistを経由してください。第二に、このモジュールは暗号目的に使えません。公式ドキュメントは中核の生成器がメルセンヌ・ツイスタで「完全に決定論的であるため暗号用途にはまったく適さない」と明記し、セキュリティ用途にはsecretsモジュールを案内しています。当選者決定のように第三者が結果を予測できてはいけない抽選では、この警告が効いてきます。
pandasでの再現可能な抽出と層別配分
CSVや表形式のデータから行を抜くならpandasのsampleメソッドが簡潔です。以下はpandas 2.3.3で実行した結果です。
import pandas as pd
import numpy as np
df = pd.DataFrame({'id': range(1, 1001), 'score': np.arange(1000)})
print(df.sample(n=5, random_state=42)['id'].tolist())
# [522, 738, 741, 661, 412]
print(len(df.sample(frac=0.01, random_state=0)))
# 10 母集団の1%を抽出
seg = pd.DataFrame({'区分': ['A'] * 700 + ['B'] * 300, 'v': range(1000)})
out = seg.groupby('区分', group_keys=False).sample(frac=0.05, random_state=1)
print(out['区分'].value_counts().to_dict())
# {'A': 35, 'B': 15} 層の比率どおりに配分される
random_stateがシードにあたり、指定すれば再現します。層別抽出はgroupbyで層に分けてからsampleを呼ぶ形で、frac指定なら層の大きさに比例した配分になります。applyにlambdaを渡す書き方でも同じ結果になりますが、pandas 2.3.3ではグループ列の扱いについてFutureWarningが出るため、上のようにgroupbyの結果へ直接sampleを呼ぶ形が無難です。上の例では700件と300件の層から5%ずつ抜いて35件と15件になり、母集団の7対3という比率が標本でも保たれています。
抽出前にひとつ確認しておきたいのは、母集団の定義と一致しないレコードを先に除くことです。退会済みの会員IDや重複登録が名簿に混ざったままだと、正しく乱数を引いても母集団と標本がずれます。抽出は名簿の品質を超えられません。
サンプルサイズの決め方(誤差5%なら385人の根拠)
「何人集めればよいか」は、母集団の大きさではなく許容する誤差で決まります。母比率を推定する場合の標本数は、信頼度に対応する係数をz、許容誤差をe、比率をpとして次の式で求めます。
n = z^2 * p * (1 - p) / e^2
比率pが不明なときは、分散が最大になる0.5を置いて安全側に見積もります。信頼度95%(z = 1.96)で計算すると次のようになります。
| 許容誤差 | 計算値 | 必要な標本数 |
|---|---|---|
| ±5ポイント | 384.16 | 385 |
| ±3ポイント | 1067.11 | 1,068 |
| ±1ポイント | 9604.00 | 9,604 |
必要な標本数は許容誤差の2乗に反比例します。誤差を半分にすれば約4倍、5分の1にすれば約25倍が必要です。上の表では誤差5%で385人、3%で1,068人、1%では9,604人まで増えます。調査予算の議論は「何人集めるか」ではなく「何ポイントの誤差を許すか」から始めるほうが早く収束します。
母集団が有限で小さいときは有限母集団修正を掛けられます。母集団N、上の式の結果をn0として n0 ÷ (1 + (n0 – 1) ÷ N) で計算すると、誤差5%の場合はN=10,000で370、N=1,000で278まで下がります。逆に母集団が10万でも100万でも必要数はほぼ385から動きません。「母集団が大きいから標本もたくさん必要」という直感は、この式の上では成り立ちません。
ただしこの計算で小さくなるのは標本誤差だけです。回答内容の偏りや回答しない人の偏りは、標本数を増やしても減りません。
公的統計の「無作為抽出」の実像:層化と等間隔抽出の組み合わせ
ランダムサンプリングの解説記事は「乱数表や乱数ジェネレーターで選ぶ」で終わることが多いのですが、日本の代表的な公的統計が実際に採っている手順を読むと、単純ランダムサンプリングはほとんど使われていません。ここが設計を学ぶうえで最も実用的な部分です。
内閣府「国民生活に関する世論調査(令和7年8月調査)」の標本抽出方法では、母集団を全国の市区町村に居住する満18歳以上の日本国籍を有する者、標本数5,000人、地点数328市区町村350地点とし、抽出方法を層化2段無作為抽出法としています。全国を11地区に分け、都市規模で分類して第1次層を65層に設定し、令和2年国勢調査の調査区特性でさらに層化する構造です。標本数5,000は各層の推定母集団の大きさで比例配分し、1調査地点あたりの標本数が9から17に収まるように地点数を決めています。
注目したいのは抽出の実務です。同ページは、調査地点が2地点以上割り当てられた層では「層における令和2年国勢調査時の母集団人口÷層で算出された調査地点数」を抽出間隔として等間隔抽出法で調査区を選び、対象者の抽出も「調査地点における母集団人口÷調査地点抽出標本数」を抽出間隔として住民基本台帳から等間隔抽出法で選ぶと記しています。乱数表を使うのは層内の調査地点が1地点の場合だけです。つまり無作為抽出を名乗る調査の実装は、層化と系統抽出の組み合わせです。
総務省統計局「家計調査の標本設計の概要(令和5年)」も同じ構造をとります。二人以上の世帯は市町村を地方、都市階級、産業的特色、世帯主の年齢構成などで層化して抽出した後に単位区、世帯を抽出する層化3段抽出法で、層数は168、調査世帯数は8,076です。単身世帯は一般単位区673世帯と寮・寄宿舎単位区72世帯の計745世帯を抽出します。母集団情報は令和2年国勢調査に基づいています。
製造業の抜取検査では逆に、単純ランダムサンプリングが規格で明文化されています。JIS Z 9015-1:2006(計数値検査に対する抜取検査手順 第1部:ロットごとの検査に対するAQL指標型抜取検査方式)の8.1は「サンプルとして選ぶアイテムは単純ランダムサンプリング(JIS Z 8101-2 の3.12 参照)によって選ぶ」と規定し、ロットが合理的な基準でサブロットや層に分かれているときは層別サンプリングを使い、サンプル中のアイテム数を各層に比例させるよう求めます。8.3は2回または多回抜取方式について「引き続く各サンプルは(検査済みのサンプルを戻さずに)残ったロットから選ぶ」と定め、非復元抽出を明示しました。ロット検査でrandom.choicesのような復元抽出を使う設計は、この規定に反します。
無作為抽出でも消えない誤差
ここは言い切っておきます。無作為抽出は標本誤差を計算可能にするだけで、誤差そのものを消す手法ではありません。確率抽出で5,000人を選んでも、そのうち回答するのは一部です。回答した人と回答しなかった人で意見の傾向が違えば、集計結果は母集団から系統的にずれます。これは無回答誤差と呼ばれる非標本誤差で、標本数を増やしても構造的に減りません。詳細は無回答誤差とは何かを理解するための基本的な概念解説で扱っています。
回答の内容そのものに生じるずれも同様です。設問の言い回しや調査モードによって回答が動く回答誤差は、抽出方法を無作為にしても対処できません(回答誤差とは?標本誤差との違い・原因・Web調査での検知方法)。ランダムサンプリングに投資すべきかを判断するなら、「誤差の何を減らしたいのか」を先に切り分けてください。回答者の偏りが主な懸念であれば、抽出法を精緻にするより回収率と回答品質の管理に予算を回すほうが効きます。
よくある質問
ランダムサンプリングと無作為抽出は同じ意味ですか?
同じ意味です。ランダムサンプリングは英語の random sampling をカタカナにした呼び方で、無作為抽出はその訳語にあたります。公的統計の報告書では「無作為抽出」、マーケティングリサーチでは「ランダムサンプリング」が使われる傾向がありますが、指している手続きは変わりません。標本そのものを指す場合はランダムサンプル、無作為標本と呼びます。
ランダムサンプリングのメリットは何ですか?
最大の利点は、推定の誤差を数値で示せることです。選ばれる確率が分かっているため「支持率は40%、標本誤差は±3ポイント」のように精度を明記でき、結果の妥当性を第三者が検証できます。有意抽出ではこの計算ができません。加えて、調査者の好みや調査員の都合が入り込まないため標本の偏りを構造的に抑えられ、全数調査に比べて費用と期間を大幅に削れます。総務省統計局の家計調査が全国の世帯から8,076世帯で家計収支を推計できるのは、この性質によります。
ランダムサンプリングの問題点は何ですか?
三つあります。第一に、母集団の全要素を並べたサンプリングフレーム(名簿)が必要で、名簿が入手できない対象には適用できません。第二に、クラスター抽出や多段抽出と比べて対象が地理的に散らばるため、訪問調査では移動コストが膨らみます。第三に、無回答による偏りや回答内容のずれは無作為抽出では防げません。標本数を増やしても小さくなるのは標本誤差だけです。
ランダムサンプリングの事例は?
内閣府の世論調査は住民基本台帳から等間隔抽出で5,000人を選ぶ層化2段無作為抽出法、総務省統計局の家計調査は168層から市町村、単位区、世帯を選ぶ層化3段抽出法で8,076世帯を抽出しています。製造業ではJIS Z 9015-1が抜取検査のサンプルを単純ランダムサンプリングで選ぶよう規定しています。Web分野ではABテストの群分けや、機械学習の学習データと検証データの分割が該当します。
Excelでランダムサンプリングするにはどうすればよいですか?
重複なしで抜くなら SORTBY関数とRANDARRAY関数を組み合わせ、TAKE関数で必要件数を取り出します。A2からA1001の名簿から50件なら =TAKE(SORTBY(A2:A1001, RANDARRAY(ROWS(A2:A1001))), 50) です。TAKE関数はExcel for Microsoft 365とExcel 2024が対象で、Excel 2021ではSORTBY関数で全件並べ替えて上から50行を使ってください。RANDBETWEEN関数は重複を防がないため抽選には向きません。RAND関数もRANDBETWEEN関数もワークシートの再計算ごとに値が変わるので、結果は F9 で値に固定するか値のみ貼り付けで残してください。
ランダムサンプリングは英語で何と言いますか?
random sampling です。単純ランダムサンプリングは simple random sampling、層別は stratified sampling、系統抽出は systematic sampling、クラスター抽出は cluster sampling、多段抽出は multistage sampling と表記します。これらの対訳はJIS Z 8101-2:2015(統計 用語及び記号 第2部:統計の応用、対応国際規格 ISO 3534-2:2006)が各用語に併記しています。なお同規格は1999年版では「統計 用語と記号 第2部:統計的品質管理用語」という名称で、抜取検査規格JIS Z 9015-1:2006が引用しているのはこの1999年版です。