系統抽出法(系統抽出、等間隔抽出法とも呼ばれます)は、母集団の名簿を順に並べ、最初の1人だけを無作為に選んで、あとは一定の間隔ごとに標本を選ぶ方法です。1,000人から50人を選ぶなら間隔は20で、開始点が7なら7番、27番、47番…と選びます。乱数を引くのが1回で済むので手間は単純無作為抽出よりずっと少なく、内閣府の世論調査も実際にこの方法で対象者を選んでいます。
ただし、同じ系統抽出でも名簿の並び順しだいで精度は大きく変わります。この記事では定義と計算例に加えて、並び順による精度の差を計算で示し、1つの標本から誤差を出すときの落とし穴まで扱います。
まとめ:系統抽出法の要点
- 手順は「抽出間隔 k=母集団の数 N÷標本数 n を求める → 1〜k から開始点を無作為に1つ選ぶ → k ずつ足していく」の3段階
- N÷n が割り切れないときは、間隔を小数のまま使うか、名簿を環状につなぐ。整数に切り捨てると名簿の末尾が選ばれなくなる
- メリットは乱数1回・紙の名簿でも手作業で抽出できること。デメリットは並び順の周期で偏ることと、開始点が1つの標本だけでは誤差(分散)を偏りなく推定できないこと
- 名簿が調べたい値の順(年齢順・地域順など)に並んでいると精度が上がり、抽出間隔と同じ周期があると大きく下がる。計算例では単純無作為抽出の0.12倍の分散にも15.5倍の分散にもなった
- JIS Z 8101-2:2015 では、系統サンプリング(1.3.12)は「秩序だった計画に基づくサンプリング」と広く定義され、等間隔で選ぶ手続きは下位の周期的系統サンプリング(1.3.13)に当たる
系統抽出法の定義と基本の手順
12人から3人を選ぶ計算例
総務省統計局の学習サイト Data StaRt「標本抽出の諸方法」(執筆・監修は東京大学社会科学研究所の三輪哲教授)は、12人から3人を選ぶ例で手順を説明しています。
- 全体を標本数と同じ3つの区間に分ける。12÷3=4 が抽出間隔になる
- 最初の区間の4人(1〜4番)から、1人だけを単純無作為抽出で選ぶ。例では3番が当たった
- 3に間隔4を足した7番、さらに4を足した11番を選ぶ
乱数を使うのは手順2の1回だけです。開始点が1〜4のどれになるかで標本が決まるので、この例で起こりうる標本は {1,5,9}・{2,6,10}・{3,7,11}・{4,8,12} の4通りしかありません。単純無作為抽出なら12人から3人を選ぶ組合せは220通りあります。この差が、後で述べるメリットとデメリットの両方の出どころです。
JISの定義:系統サンプリングと周期的系統サンプリング
用語の正確な定義は日本産業規格にあります。JIS Z 8101-2:2015(統計-用語及び記号-第2部:統計の応用。ISO 3534-2:2006 に対応)の 1.3.12 は、系統サンプリング(同義語に系統抽出・系統抜取、英語は systematic sampling)を「秩序だった計画に基づくサンプリング」と定義しています。定義本文に「等間隔」という語はありません。固定間隔や一定時間間隔で採る話は、バルクサンプリング(粉体や液体などの採取)についての注記1に出てくるだけです。
番号を k ずつ増やして選ぶ手続きそのものは、下位用語の 1.3.13 周期的系統サンプリングです。母集団の単位を順に並べて1からNまで番号を付け、h、h+k、h+2k、…、h+(n-1)k の番号の単位を選ぶ、と規定されています。h と k は nk<N<n(k+1) かつ h<k を満たす正の整数で、h は通常1からkまでの整数からランダムに選びます。日常的に「系統抽出法」と呼ばれているのはこの 1.3.13 の手続きで、実務上は等間隔抽出法とほぼ同じ意味で使って差し支えありません。
1.3.12 の注記3は「系統サンプリングによって,サンプリングのランダム化は制限されることとなる」と書いています。前の例でいえば、起こりうる標本が220通りから4通りに減ることを指しています。
なお、標本調査の用語だけを扱う JIS Z 8101-4:2025(統計-用語及び記号-第4部:標本調査法、ISO 3534-4:2014 と一致)が2025年9月22日に制定されています。本記事の執筆時点では Z 8101-4 の条文を確認していないため、条文を確認できた Z 8101-2:2015 で説明しています。
抽出間隔の決め方と、名簿で起こる問題
N÷n が割り切れないときの扱い
1,000人から30人を選ぶと 1,000÷30=33.33… で割り切れません。JIS の条件 nk<N<n(k+1) を満たす整数は k=33 です。しかし k=33 で開始点を1〜33から選ぶと、30人目は最大でも 33+29×33=990 番目にとどまり、991〜1,000番目の10人は決して選ばれません。名簿が登録日順なら、直近に登録した人を構造的に落とすことになります。
対処は2つあります。
- 間隔を小数のまま使う:開始点を0からkの範囲の乱数で決め、k=33.33… を丸めずに足していき、各位置を切り捨てて1を足した番号を選びます。間隔は33と34が混ざりますが、末尾まで均等に届き、ちょうど n 人が選ばれます。データが電子化されている名簿向けです
- 名簿を環状につなぐ(循環系統抽出):開始点を1〜Nから選び、末尾に達したら先頭へ戻って数え続け、n 人に達したら止めます。間隔を N÷n 以下の整数(この例では33)にすれば一周する前に n 人に達するので、同じ人を2回選びません。間隔が整数なので、紙の名簿を手で数える場面に向きます
どちらの方法でも、抽出後に件数と重複の有無を確かめてください。そのうえで、開始点がとりうる値をすべてたどったときに全員が同じ確率で選ばれる規則になっているかを確認します。1回の抽出結果の最大値だけでは、末尾の人に選ばれる可能性があるかは判断できません。下の Excel と Python の例は、間隔を小数のまま使う方法です。
名簿に混ざる対象外の人の扱い
住民基本台帳から成人だけを調べたいのに未成年が当たった、取引先名簿に廃業した会社が残っていた、といった対象外の単位はよく混ざります。このとき「次の人に繰り下げる」処理をすると、対象外の人のすぐ後ろにいる人だけが選ばれやすくなります。抽出間隔が4以上の整数 k なら、対象外が3人続いた直後の人は、抽出位置が自分か前の3人のどれに当たっても選ばれるので、選ばれる確率は通常の 1/k から 4/k に上がります。
確率を揃えたいなら、対象外の割合を見込んで標本数を多めに設定して間隔を狭め、当たった対象外は除外するのが安全です。対象外が全体の1割と見込めるなら、必要数を0.9で割って切り上げた人数で間隔を計算します。これは有効な標本数の見込みを揃える目安で、実際の対象外の人数は標本ごとに変わります。
Excelでの系統抽出の手順
A2:A1001 に1,000件の名簿が空白行・重複なしで続けて入っていて、30件を選ぶ例です。途中に空白行があると COUNTA の件数と範囲がずれ、末尾の人が選ばれなくなります。
| セル | 入力内容 | 意味 |
|---|---|---|
| E1 | =COUNTA(A2:A1001) |
母集団の数 N |
| E2 | 30 |
標本数 n |
| E3 | =E1/E2 |
抽出間隔 k(小数のまま) |
| E4 | =RAND()*E3 の結果を値で貼り付け |
開始点(0以上k未満) |
| G2:G31 | 1, 2, …, 30 | 何人目か |
| H2 | =INT($E$4+(G2-1)*$E$3)+1 |
選ぶ行番号 |
| I2 | =INDEX($A$2:$A$1001,H2) |
選ばれた人 |
H2とI2を31行目までコピーすれば完成です。開始点を 0.0617 に固定して計算すると、H列は 1、34、67、…、967 となり、間隔33と34が混ざります。
注意点は E4 です。RAND は再計算のたびに値が変わるため、数式のまま置くとファイルを開くたびに標本が入れ替わります。乱数を出したら「値として貼り付け」で固定し、その値を抽出記録として残してください。
顧客名簿から毎月アンケートの対象者を選んで配信する、といった定常業務では、抽出のたびに手作業で数式を組むより、開始点・間隔・除外条件を記録しながら抽出から配信までを一続きにする仕組みが向いています。そうした仕組みはアンケート管理システムの開発として設計できます。
Pythonでの系統抽出の実装
次のコードは、開始点を0からkの範囲の一様乱数で決め、間隔を小数のまま保持します。割り切れる場合と割り切れない場合の両方を出力します。
import random
def systematic_sample(population, n, seed=None):
"""母集団リストから n 個を系統抽出する。抽出間隔は小数のまま保持する。"""
N = len(population)
if not 0 < n <= N:
raise ValueError("n は 1 以上 N 以下にしてください")
k = N / n # 抽出間隔
rng = random.Random(seed)
start = rng.uniform(0, k) # 開始点は 0 から k の範囲でランダムに決める
rows = [min(int(start + i * k), N - 1) for i in range(n)] # 丸め誤差で N 番目を超えないよう上限を付ける
return [population[j] for j in rows], k, rows
pop = ["ID%04d" % i for i in range(1, 1001)]
for n in (40, 30):
sample, k, rows = systematic_sample(pop, n, seed=20260830)
print("n=%d 抽出間隔=%.4f 件数=%d 重複=%s" % (n, k, len(sample), len(rows) != len(set(rows))))
print(" 選ばれた行番号(先頭5件):", [j + 1 for j in rows[:5]], "... 最終", rows[-1] + 1)
Python 3.9.6 での出力です。
n=40 抽出間隔=25.0000 件数=40 重複=False
選ばれた行番号(先頭5件): [2, 27, 52, 77, 102] ... 最終 977
n=30 抽出間隔=33.3333 件数=30 重複=False
選ばれた行番号(先頭5件): [2, 36, 69, 102, 136] ... 最終 969
この開始点では n=30 の最終行は969ですが、開始点が上限近くなら最終行は1,000まで届きます。間隔を33に丸めた場合の上限990の制約はありません。seed を固定しているので同じ標本を再現できます。監査や再集計に備えるなら、シード値に加えて抽出時の名簿(版と並び順)・標本数・コード・Pythonのバージョンを保存してください。名簿の並びが1行変わるだけで標本は別物になります。
系統抽出法のメリットとデメリット
| 区分 | 内容 | どんなときに効くか |
|---|---|---|
| メリット | 乱数は開始点の1回だけ | 紙の名簿を手でめくって抽出するとき |
| メリット | 標本が名簿全体に散らばる | 地域順・年齢順に並んだ名簿 |
| メリット | 並び順しだいで層化と同じ効果 | 調べたい値と並び順が関係するとき |
| メリット | 名簿がなくても到着順に数えて選べる | 来場者・通行人の調査(漏れなく数えられる場合) |
| デメリット | 周期と間隔が合うと標本平均の分散が大きくなる | 世帯名簿・曜日のあるログ・号機順 |
| デメリット | 1つの標本から誤差を偏りなく推定できない | 標準誤差や信頼区間を報告するとき |
メリットの中心は手間の少なさです。住民基本台帳のように役所で閲覧する紙の名簿では、乱数を何十回も引いて番号を探すより、決まった人数ずつ数えていくほうが速く、数え間違いも起きにくくなります。周期による偏りと誤差の推定の難しさは、どちらも「開始点を1つ決めると残りの標本がすべて決まる」という性質から来ています。N が n で割り切れて間隔 k が整数なら、起こりうる標本は k 通りしかありません。次の章で、その影響を数字で確かめます。
並び順による精度の違い:単純無作為抽出との分散比較
系統抽出の精度は、名簿の並び順によって単純無作為抽出より良くも悪くもなります。これを確かめるため、1,200人から40人(間隔30)を選ぶ場面を模擬データで計算しました。年齢順のように値が右肩上がりの名簿と、その同じ値を無作為に並べ替えた名簿、抽出間隔と同じ周期30の波をもつ別の名簿の3つを用意し、系統抽出で起こりうる30通りの標本すべての平均から分散を求めて、それぞれの名簿で単純無作為抽出したときの分散と比べています。値は生成した模擬データで、実際の調査データではありません。
import random, statistics
N, n = 1200, 40
k = int(N / n) # 抽出間隔 30
rng = random.Random(20261022)
# 年齢順の名簿を想定:番号が進むほど値が大きくなる傾向+個人差
trend = [300 + 0.25 * i + rng.gauss(0, 30) for i in range(N)]
shuffled = trend[:] # 同じ値を無作為な順に並べ替えて使う
periodic = [300 + 80 * ((i % k) - (k - 1) / 2) / k + rng.gauss(0, 30)
for i in range(N)] # 抽出間隔と同じ周期30の波
def sys_var(pop):
"""起こりうる k 通りの系統標本すべての平均を求め、その分散を返す。"""
means = [statistics.mean(pop[h::k]) for h in range(k)]
mu = statistics.mean(pop)
return sum((m - mu) ** 2 for m in means) / k
def srs_var(pop):
"""単純無作為抽出(非復元)での標本平均の分散。"""
return (1 - n / N) * statistics.variance(pop) / n
for name, pop in (("値の傾向がある並び", trend), ("周期30の並び", periodic)):
v_sys, v_srs = sys_var(pop), srs_var(pop)
print("%s: 系統抽出 %.2f / 単純無作為 %.2f = %.2f" % (name, v_sys, v_srs, v_sys / v_srs))
# 無作為な並びは並べ方しだいで値が揺れるので、1,000通りの並べ方で平均する
ratios = []
for _ in range(1000):
rng.shuffle(shuffled)
ratios.append(sys_var(shuffled) / srs_var(shuffled))
print("無作為な並び: 比の平均 %.2f(最小 %.2f・最大 %.2f)" % (statistics.mean(ratios), min(ratios), max(ratios)))
値の傾向がある並び: 系統抽出 24.37 / 単純無作為 199.44 = 0.12
周期30の並び: 系統抽出 548.74 / 単純無作為 35.37 = 15.51
無作為な並び: 比の平均 1.00(最小 0.46・最大 2.16)
結果は3つの並び順ではっきり分かれました。
- 値の傾向がある並び:分散は単純無作為抽出の0.12倍です。名簿全体に等間隔で散らばるため、若い人ばかり・高齢の人ばかりという標本が起こりません。層に分けて各層から選ぶ層化抽出に似た働きです
- 無作為な並び:比の平均は1.00で、単純無作為抽出と同じ精度です。ただし1つの並べ方に限ると0.46倍から2.16倍まで揺れます
- 周期30の並び:抽出間隔と同じ周期の波があると、分散は15.51倍に跳ね上がります。どの開始点を選んでも波の同じ位置ばかり拾うためです
周期の問題は規格自身も例を挙げて警告しています。JIS Z 8101-2:2015 の 1.3.13 注記3は、6個のヘッドをもつ機械で作られた製品から6番目・12番目・18番目を採ると、得られるサンプルが機械のアウトプットを代表するとは到底考えられない、と述べています。実務で周期が入りやすい名簿は次のとおりです。
- 世帯主・配偶者・子・子の4人世帯が続く名簿(抽出間隔4では同じ続柄ばかり拾う)
- 1日1行に集計した欠測のない日次の売上やアクセス数(抽出間隔7では同じ曜日ばかりになる)
- 号機やヘッドの順に並んだ製造データ
判断の基準は1つです。名簿の並び順を決めている変数が、調べたい値と周期的に関係していないか。関係が単調な傾向なら系統抽出はむしろ有利です。周期が疑われるなら、名簿を無作為に並べ替えてから抽出してください。間隔だけを周期と重ならない値に変えると、標本数や名簿の末尾の扱いまで変わるので、その場合は標本数と開始点の範囲も含めて設計し直します。並べ替えも設計の見直しもできない名簿では、系統抽出を使うべきではありません。
1つの標本から誤差を出すときの注意
前章の計算は、起こりうる30通りの標本をすべて並べられたので分散が出せました。実際の調査で手元にあるのは、そのうち1つだけです。米国農務省の技術報告 Replicated Sampling and an Application to List Frame Surveys(1975年)は、系統抽出の主な欠点を「標本が標本誤差の不偏推定値を与えないこと」と書いています。1つの開始点から得た標本だけでは、誤差を偏りなく計算する方法がありません。
実務では次の3つの扱いがあります。
- 単純無作為抽出とみなして計算する:最もよく使われる扱いです。名簿が無作為な並びに近ければ問題は小さく、値の傾向がある並びでは誤差を大きめに見積もりやすくなります。前章の模擬データなら、単純無作為抽出の公式による理論上の分散は199.44で、系統抽出の実際の分散24.37を大きく上回ります。周期がある名簿では逆に誤差を過小に見積もるため、この扱いは使えません
- 開始点を複数にする(反復抽出):間隔を m 倍に広げ、m 個の開始点から m 組の系統標本を選びます。m 組の推定値のばらつきから誤差を計算できるので、上の米国農務省の報告は「系統的な選び方を使いながら、標本から標本誤差の不偏推定値を得られる」点を利点に挙げています
- 隣り合う標本の差を使う(逐次差分法):選ばれた順に隣同士の差をとって分散を推定します。米国センサス局のアメリカン・コミュニティ・サーベイの設計書(2014年版)は、この考え方に基づく Successive Differences Replication を採用し、「並び順に情報がある系統標本のために設計された」と説明しています
卒業論文や調査報告で標準誤差を書く場合は、どの扱いで計算したかを明記してください。標準誤差の計算式そのものは標準誤差の求め方とエクセルの計算式|標準偏差・標本誤差との違いで解説しています。
公的統計での使われ方:内閣府の世論調査・労働力調査・家計調査
「無作為抽出」とだけ書かれた公的調査でも、実際の操作は系統抽出であることがよくあります。
内閣府「国民生活に関する世論調査(令和7年8月調査)」の標本抽出方法は、全国の満18歳以上の日本国籍を有する者から5,000人を、328市区町村350地点で選んでいます。抽出方法の名称は層化2段無作為抽出法で、全国を11地区と都市規模で計65層に分け、各地点の標本数が9から17人になるよう地点数を決めています。
各段の操作は系統抽出です。第1段の調査地点(令和2年国勢調査の調査区)は「層における令和2年国勢調査時の母集団人口÷層で算出された調査地点数」を抽出間隔として、等間隔抽出法で選びます。乱数表を使うのは層内の地点が1つの場合だけです。第2段の対象者も、「調査地点における令和2年国勢調査時の母集団人口÷調査地点抽出標本数」を間隔として、住民基本台帳から等間隔抽出法で選んでいます。
見落とされやすいのが並び順の指定です。同じページには「抽出に際しての各層内における市区町村の配列順序は、令和2年国勢調査時の市区町村コードに従った」とあります。コード順に並べて等間隔に選ぶので、同じ層の中で地点が特定の市区町村に固まらず、コード順に沿って散らばります。ページには並び順を指定した理由までは書かれていませんが、仕組みは次に挙げる労働力調査が「層化に似た効果」と呼ぶものと同じです。
総務省統計局の労働力調査は、この効果をはっきり書いています。『労働力調査の解説[第5版改訂版]』の第6章は、200調査区から10調査区を選ぶ例(抽出間隔20・抽出起番号7なら7、27、47、…、187番)で系統抽出法を説明し、「調査区を市町村ごとに並べた上で一連番号を付与すれば,標本が一部の市町村に偏ることがなくなり,層化に似た効果も期待できる」としています。住戸の抽出でも、居住者がいなかった住戸から先に番号を付けて系統抽出し、「層化と同じ効果」を狙っています。
家計調査も同じで、家計調査の標本設計の概要(令和5年)は、調査単位区の抽出で「各ブロック内から二つのクラスターを系統抽出する」と記しています。こちらは等間隔という言い換えではなく、系統抽出という語がそのまま使われています。
いずれの調査も、系統抽出を単独では使わず、層化や多段抽出と組み合わせています。層化と2段抽出の仕組みは無作為抽出法とは?層化二段無作為抽出法の仕組みと判断抽出・有意抽出との違いで詳しく扱っています。
単純無作為抽出・層化抽出・多段抽出との違い
| 抽出法 | 乱数を使う箇所 | 必要な母集団情報 | 主な弱点 |
|---|---|---|---|
| 単純無作為抽出 | 全員または標本ごと | 全員の名簿 | 作業量が大きい |
| 系統抽出 | 開始点の1回だけ | 並び順のある名簿 | 周期による偏り |
| 層化抽出 | 各層の中で | 層に分ける属性 | 層の設計に情報が要る |
| 多段抽出 | 各段で | 段ごとの単位の一覧 | 同じ標本数なら誤差が増えやすい |
| クラスター抽出 | 集落を選ぶとき | 集落の一覧 | 集落内が似ると精度低下 |
単純無作為抽出は並び順の影響を受けない代わりに、全員に乱数を割り当てて小さい順に選ぶ、番号を重複なしで n 個引くなど、標本を選ぶたびに乱数を使う作業が要ります。定義と手順は単純無作為抽出法とは?JISの定義・手順・具体例と標本平均の分散の求め方、Excel・Pythonでの操作はランダムサンプリングとは?5種類とExcel・Pythonのやり方で解説しています。
層化抽出と系統抽出は競合せず、層を作ってから各層の中で系統抽出する使い方が一般的です。JIS が層化系統サンプリング(1.3.12 注記2)を別に定義しているのもそのためです。地域を段階的に絞り込む多段抽出法とは?確率比例抽出法・層化抽出との違いを労働力調査の実例で解説や、名簿を使わないエリアサンプリングとは?名簿不要の地域抽出法の仕組み・手順・精度を解説も、内閣府の調査のように系統抽出と組み合わせて運用されます。標本調査そのものの考え方は標本調査とは?母集団との関係・身近な例とメリット・デメリットを公的データで解説にまとめています。
よくある質問
系統サンプリングとは何ですか?
系統抽出法の別名で、英語の systematic sampling の訳語です。JIS Z 8101-2:2015 の 1.3.12 では「秩序だった計画に基づくサンプリング」と定義され、系統抽出・系統抜取が同義語として並んでいます。一定間隔で選ぶ手続きは、その下位用語の周期的系統サンプリング(1.3.13)です。
等間隔抽出法と系統抽出法は同じものですか?
実務上はほぼ同じ意味です。内閣府の世論調査は「等間隔抽出法」、総務省統計局の家計調査は「系統抽出」と書いており、公的資料でも両方の表記が使われています。厳密には、間隔を小数のまま使うと間隔は33と34のように揃わないので、等間隔とは言い切れない手続きも系統抽出に含まれます。
単純無作為抽出法と系統抽出法の違いは何ですか?
選ばれ方が違います。単純無作為抽出(非復元)は、N 人から n 人を選ぶすべての組合せが等しい確率で起こるように選ぶ方法です。系統抽出は開始点を1つ決めると残りが決まり、N が n で割り切れて間隔 k が整数なら、起こりうる標本は k 通りだけです。精度は名簿の並び順しだいで、単純無作為抽出より良くも悪くもなります。
多段抽出法と層化抽出法の違いは何ですか?
層化抽出は母集団を属性で層に分け、すべての層から標本を選びます。多段抽出は、市区町村→調査区→個人のように段階を踏んで単位を絞り込み、途中の段で選ばれなかった地域からは標本を取りません。層化は誤差を小さくするため、多段は調査の手間と費用を減らすために使います。内閣府の世論調査は両方を組み合わせ、各段の中で系統抽出をしています。
無作為抽出法の具体例は?
内閣府「国民生活に関する世論調査(令和7年8月調査)」が代表例です。全国を65層に分け、第1段で350の調査地点を、第2段で5,000人の対象者を選んでいます。名称は層化2段無作為抽出法ですが、各段の具体的な操作は国勢調査の調査区と住民基本台帳に対する等間隔抽出法です(層内の調査地点が1つの場合だけ乱数表で選びます)。