論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
調査データ
Survey Data
リテラシー

🔖 キーワード索引

このページ内のセクションへ素早く飛べます(クリックで該当箇所へジャンプ):

💡 30秒結論📍 文脈🎨 直感📐 数式・定義🔬 数式を言葉で読み解く🧮 SSDSE実値計算🐍 Python実装⚠️ 落とし穴🌐 関連手法🔗 関連用語📚 関連グループ❓ FAQ

survey data」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「survey data」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。

調査データアンケート無作為抽出回収率国勢調査家計調査標本誤差非回答バイアス層別抽出

これらのキーワードは「survey data の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。

💡 30秒で分かる結論 — 調査データ

🍰 まずはやさしく

アンケートなどで集めたデータのことです。

人々の考えや行動を分析するために使います。

クラスで好きな食べ物を調べる時に似ています。

まずは結論と注意点を短く確認しましょう。

💡 30秒で分かる結論

アンケート等による収集データ

📍 あなたが今見ているもの

🍰 まずはやさしく

データの集め方についてのガイドです。

正しい結果を出すための方法を学びます。

部活のアンケートで誰に聞くかを決める例です。

このページにある12の解説を順番に見ていきます。

標本抽出法(無作為・層化・割当)、 回答バイアス、 無回答処理 — 調査データ特有の落とし穴は多い。 サンプリングの理論が結果の信頼性を決める。

本ページは 調査データ(Survey Data) を、 ジャストインタイム型データサイエンス教育の文脈で 12 のセクションに分けて解説します。 上から順に読まなくても、 「🔖 キーワード索引」から必要箇所だけ拾い読みすることもできます。

🎨 直感で掴む — 調査データとは何者か

🍰 まずはやさしく

一部の人から得た回答のようなものです。

全体がどうなっているかを予想するために使います。

スマホの利用時間を数人に聞いて調べる例です。

計算方法や注意点を具体的に体験しましょう。

調査データ(Survey Data)は、 SSDSE-B-2026 のような公的統計の背後にある「47 都道府県を 1 件ずつ調べた」プロセスそのもの。 国勢調査 (悉皆) と消費動向調査 (層化二段抽出) では、 同じ「平均所得」でも誤差構造がまったく違います。 ここでは標本誤差・カバレッジ誤差・非回答誤差の 3 種を SSDSE-B-2026 で具体的に体感しましょう。

場面調査データが登場する例何が分かるか
論文の Methods 節「調査データを用いて分析した」手法の前提と限界が文脈に乗る
実務レポート「調査データの観点で評価」意思決定の根拠が明確化
教育・学習SSDSE-B-2026 を題材に演習実データで本物の感覚が得られる
政策・社会データ種 分野で標準的に登場EBPM や DX の議論に直結

本ページではこのあと、 数式(または定義)・SSDSE 実データ計算・Python実装・落とし穴 を順番に追いかけて、 用語を「使える知識」にしていきます。

🎨 直感で掴む

調査データは「母集団全体ではなく、 抽出された一部から得た回答」のデータ。 国勢調査(全数)、 家計調査(約 9000 世帯)、 国民生活基礎調査(約 30 万人)など方式は多様で、 SSDSE-B-2026 の 47 都道府県データはこれら原調査の集計結果である。 「一部から推測する」性質上、 標本誤差・回答バイアス・無回答調整が必然的に絡む。

例: 「世帯の食料費」を SSDSE-B-2026 で見ると 47 県平均 80.60 千円 / 月だが、 これは家計調査 (n≈9000) からの推定値で標本誤差は ±2-3% 程度。 国勢調査と異なり、 サブグループ別 (世帯類型・所得階級) では誤差がさらに大きくなる点に注意して読む必要がある。

🎨 直感で掴む(深掘り版):調査データは「質問して答えてもらう」データ

調査データ (survey data) とは、 アンケート・面接・国勢調査など、 調査主体が対象者に質問を投げ、 回答を集約することで生じるデータ。 SSDSE-B-2026 は元をたどれば国勢調査・経済センサス・人口動態統計といった政府の大規模調査の集約物で、 まさに調査データの代表例だ。 行動ログのように「センサが自動で拾う」のではなく、 「人間が質問に答える」プロセスを介する点が特徴。

調査データの強みは 「観察できない内面(意識・態度・記憶)を測れる」こと。 「あなたは現在の暮らしに満足していますか?」「政治に関心はありますか?」「将来の不安は何ですか?」など、 行動からは推定困難な変数が直接取れる。 一方、 弱みは 「回答が真実とは限らない」こと。 社会的望ましさバイアス・記憶バイアス・質問順序効果など、 多種多様な歪みが入り込む。

SSDSE-B-2026 を例にとると、 「世帯人員 (A1200)」は世帯員数を数えれば客観的だが、 「主観的健康度」や「政治意識」を測ろうとすれば、 国民生活基礎調査や社会意識調査の自己申告に頼る。 同じ「健康」でも、 客観指標(受診回数、 BMI)と主観指標(健康だと感じるか)は乖離する。 だからこそ調査設計時には 「何を測りたいのか」「どう聞けば本心が出るか」「比較可能性をどう担保するか」を厳しく詰める必要がある。

調査データの 4 つのタイプ

📐 数式・定義

🍰 まずはやさしく

調査データのきまりや定義のことです。

分析の根拠をはっきりさせるために使います。

買い物での満足度を数値にする例です。

計算式や使う時のルールについて詳しく読みます。

調査データ は概念的定義が中心ですが、 ジャストインタイム教育の観点からは「関連量のなかで何を計算しているか」を式で押さえると理解が深まります。 代表的に使われる数式は:

$$ \text{基本量}_{survey-data} = f(\text{入力データ}, \text{前提}, \text{パラメータ}) $$

定義式の一般形:

$$ Q = \frac{1}{n} \sum_{i=1}^{n} g(x_i) $$

ここで $g(\cdot)$ は用語に応じた評価関数(カウント、 平均、 比、 オッズなど)。 具体形は次セクション「🔬 数式を言葉で読み解く」で確認します。

📐 定義

アンケート等による収集データ

英語名 Survey Data

🎯 いつ・どこで使うか

📋 前提条件・適用範囲

この用語を理解・使用するときは、 次のような前提を意識してください:

📐 数式:標本誤差・重み付き集計・有限母集団修正

標本平均 $\bar{x}$ の 標本誤差 (sampling error) は、 母集団からのランダム抽出に伴う偶然のバラツキで、 標本標準偏差を用いて

$$\text{SE}(\bar{x}) = \frac{s}{\sqrt{n}}$$

で表される。 母集団が有限で標本割合 $f = n/N$ が無視できない場合、 有限母集団修正 (finite population correction, FPC)

$$\text{SE}_{\text{FPC}}(\bar{x}) = \frac{s}{\sqrt{n}} \sqrt{\frac{N - n}{N - 1}}$$

を適用する。 95% 信頼区間は

$$\bar{x} \pm 1.96 \cdot \text{SE}(\bar{x})$$

層化抽出 (stratified sampling) では、 各層 $h$ の標本平均 $\bar{x}_h$ と層サイズ $N_h$ を用いて

$$\bar{x}_{\text{strat}} = \sum_{h=1}^{H} \frac{N_h}{N} \bar{x}_h$$

で重み付き集計する。 層内のバラツキが小さいほど、 単純無作為抽出より精度が上がる(分散減少効果)。 不均等抽出後の 事後層別重み (post-stratification weight)

$$w_i = \frac{N_h / N}{n_h / n}$$

で、 「母集団に占める層比率」を「標本に占める層比率」で割った値。 これで小集団のオーバーサンプル分を打ち消す。

🔬 数式・定義を「言葉」で読み解く

先ほどの数式・定義に出てきた記号や概念を、 一つずつ確認します。 とくに 調査データ の文脈で意味を取り違えやすい部分を強調します。

記号意味と注意点
$\bar{x}$標本平均。 $\bar{x} = \frac{1}{n}\sum_{i=1}^n x_i$
$\sigma$(または $s$)標準偏差(または標本標準偏差)。 ばらつきの代表指標
$n$標本サイズ(観測数)
$p$p値、 または比率。 文脈で意味が変わる
$\alpha$有意水準(通常 0.05)
$H_0, H_1$帰無仮説と対立仮説

記号は手法ごとに少しずつ意味が違うため、 論文・教科書を読むたびに『この本ではこの記号を何の意味で使っているか』を最初に確認するのが鉄則です。 とくに 調査データ 関連の文献では、 ${\sigma}^2$(分散)と $s^2$(標本分散)の区別、 $n$ と $N$(標本サイズ vs 母集団サイズ)の混同に注意。

🔬 数式を言葉で読み解く

数式を言葉で読み解くと、 まず 標本誤差 $s/\sqrt{n}$ は「同じ母集団から $n$ 人を選び直すたびに、 標本平均がどれくらい揺らぐか」の標準偏差。 $n$ を 4 倍にすれば標本誤差は半分になる($\sqrt{4} = 2$)が、 4 倍未満では効果が小さい。 「精度を 10 倍にしたい」なら 100 倍のサンプルが必要、 という非対称な関係がここから来る。

有限母集団修正は「全人口を調べた極端なケース ($n=N$) では誤差ゼロ」を保証する。 SSDSE-B-2026 のような 悉皆データ(全 47 都道府県すべて)の場合、 $f = n/N = 1$ で FPC = 0 となり、 標本誤差は理論上ゼロ。 つまり「平均値そのものが母集団値」になる。 ただしこれは「集計後の値」の話で、 元データ収集時の 非標本誤差(質問の誤解、 入力ミス)は別途残る。

層化抽出の数式は「層ごとに代表値を計算し、 層の重さで加重平均」を取ることを意味する。 例えば男女比 1:1 の母集団から「女性 200 人・男性 100 人」をサンプリングした場合、 単純平均は男性過小評価/女性過大評価となる。 事後層別重みで「女性 1.0 倍・男性 2.0 倍」と補正すれば、 母集団推定が正しくなる。 政府統計の多くはこの層化+重み付け方式で公表されている。

🧮 SSDSE-B 実値で計算してみる

SSDSE-B-2026(47都道府県・2023 年・112 列)を題材に、 調査データ に関係する変数を実値で確認します。 とくに東京・大阪・沖縄・秋田 など特徴ある県を比較すると、 用語の重みが体感できます。

都道府県総人口(千人)高齢化率(%)TFR消費支出(円/月)
東京14,08622.80.99341,320
大阪8,76327.71.19271,246
沖縄1,46823.81.60251,222
秋田91439.11.10272,086
全国 ※124,35329.11.29295,856

※ 全国行は、 総人口 = 47 都道府県合計、 高齢化率 = 65 歳以上人口合計 ÷ 総人口合計、 TFR・消費支出 = 47 都道府県の単純平均(SSDSE-B-2026・2023 年実測値から算出)。

これらの値を 調査データ の観点で読み解くと、 都道府県間の格差・特徴・関係性が浮かび上がります。 具体的な計算手順は次の「🐍 Python 実装」セクションで実演します。

🧮 実値で計算してみる:SSDSE-B-2026 は調査データの集約結果

SSDSE-B-2026 は政府の各種調査(国勢調査、 経済センサス、 学校基本調査、 人口動態統計など)を都道府県単位で集約したものだ。 ここから「調査データを集約した値」の性質を確認しよう。

例 1:国勢調査ベースの人口データの標本誤差はゼロ

国勢調査は 悉皆調査のため、 標本誤差は理論上ゼロ。 SSDSE-B-2026 の「総人口 A1101」も国勢調査由来で、 2023 年の全国合計は 124,353,000 人。 この値に「±X 万人」のような信頼区間は付かない(が、 回答漏れや国籍判定の境界事例による カバレッジ誤差はある)。

例 2:標本調査ベースの「世帯あたり消費支出」

SSDSE-B-2026 の家計関連項目(L3221 「消費支出」、 L322107 「交通・通信費」など)は、 家計調査・全国消費実態調査由来。 これらは 標本調査(家計調査は約 8,000 世帯)で、 都道府県別公表値には標本誤差が伴う。 標準誤差として「±数 % の変動」を考慮すべき。

例 3:標本サイズと信頼区間の関係

標本サイズ n標本誤差 (比率 50% 時)95% 信頼区間幅用途例
100±5.0%±9.8%パイロット調査
400±2.5%±4.9%市町村調査
1,000±1.6%±3.1%世論調査の標準
10,000±0.5%±1.0%国民生活基礎調査
100,000±0.2%±0.3%経済センサス

「n=1,000 で 95% CI ±3.1%」は世論調査でよく見る数字。 新聞報道で「支持率 50%、 ±3 ポイント」と書いてあれば n≈1,000 と推測できる。

🐍 Python 実装

以下は 調査データ を SSDSE-B-2026 で扱うときの典型コード。 encoding='cp932' は政府統計の Shift-JIS 対応。 skiprows=1 は日本語ヘッダ行をスキップする定石。

① 基本パターン(読み込み・確認・主要列抽出)

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A1303(65歳以上人口) Prefecture(都道府県) 北海道 5,092,000 1,681,000 北海道 東京都 14,086,000 3,205,000 東京都 沖縄県 1,468,000 350,000 沖縄県 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import pandas as pd

# 調査データ に関連する SSDSE-B-2026 分析の基本パターン
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)
# 見出しの下に地域コード以外の行が混ざるので、47 都道府県だけ残して数値に直す
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')

print(df.shape)            # (564, 112)  47都道府県 × 12年(2012-2023)
print(df.dtypes.head(10))
print(df.describe().T.head(10))

# 主要列にエイリアス
df['総人口'] = df['総人口']
df['65歳以上'] = df['65歳以上人口']
df['高齢化率'] = df['65歳以上'] / df['総人口'] * 100
print(df[['都道府県','総人口','高齢化率']].head())
📤 実行例(実測) (564, 112) 年度 int64 地域コード object 都道府県 object 総人口 int64 総人口(男) int64 総人口(女) int64 日本人人口 int64 日本人人口(男) int64 日本人人口(女) int64 15歳未満人口 int64 dtype: object count mean ... 75% max 年度 564.0 2.017500e+03 ... 2020.25 2023.0 総人口 564.0 2.690688e+06 ... 2784925.50 14086000.0 総人口(男) 564.0 1.308956e+06 ... 1349539.00 6914000.0 総人口(女) 564.0 1.381723e+06 ... 1422000.00 7172000.0 日本人人口 564.0 2.637011e+06 ... 2717122.25 13459000.0 日本人人口(男) 564.0 1.283092e+06 ... 1315342.25 6612000.0 日本人人口(女) 564.0 1.353872e+06 ... 1385624.50 6854000 …(以下略)

② 可視化テンプレ(matplotlib / seaborn)

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A1303(65歳以上人口) 北海道 5,092,000 1,681,000 東京都 14,086,000 3,205,000 沖縄県 1,468,000 350,000 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 調査データ の探索的データ分析(EDA)
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)

# 見出しの下に地域コード以外の行が混ざるので、47 都道府県だけ残して数値に直す
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')

# 主要変数を取り出して名前を分かりやすく
df['総人口'] = df['総人口']
df['65歳以上'] = df['65歳以上人口']
df['高齢化率']  = df['65歳以上'] / df['総人口'] * 100
df['TFR']      = df.iloc[:, 21]

# ヒストグラム
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
sns.histplot(df['高齢化率'], kde=True, ax=axes[0])
axes[0].set_title('高齢化率の分布(47都道府県)')
sns.histplot(df['TFR'], kde=True, ax=axes[1])
axes[1].set_title('TFRの分布')
plt.tight_layout()
plt.savefig('eda_distribution.png', dpi=120)

③ 前処理:欠損・外れ値・型変換

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 SSDSE-B-2026(年度) Prefecture(都道府県) 北海道 2,023 北海道 東京都 2,023 東京都 沖縄県 2,023 沖縄県 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import pandas as pd
import numpy as np

# 調査データ に関わる前処理の典型パターン
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)

# 見出しの下に地域コード以外の行が混ざるので、47 都道府県だけ残して数値に直す
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')

# ① 欠損値の確認
print('欠損数:')
print(df.isna().sum().sort_values(ascending=False).head(10))

# ② 数値変換(カンマ・%除去 など)
def to_num(s):
    if isinstance(s, str):
        return float(s.replace(',', '').replace('%', ''))
    return s
_num_cols = [c for c in df.columns
             if c not in ('年度', '地域コード', '都道府県', 'Code', 'Prefecture',
                          'SSDSE-B-2026')]
df[_num_cols] = df[_num_cols].apply(lambda col: col.map(to_num))

# ③ 外れ値検出(IQR)
# 地域コードや都道府県名は大小比較できないので、数値の列だけで判定する
_num = df.select_dtypes(include='number')
q1 = _num.quantile(0.25)
q3 = _num.quantile(0.75)
iqr = q3 - q1
outlier_mask = ((_num < q1 - 1.5*iqr) | (_num > q3 + 1.5*iqr)).any(axis=1)
print('外れ値を含む行数:', outlier_mask.sum())
📤 実行例(実測) 欠損数: 年度 0 地域コード 0 着工新設住宅戸数 0 外国人延べ宿泊者数 0 延べ宿泊者数 0 一般旅券発行件数 0 就職件数(一般) 0 充足数(一般) 0 月間有効求人数(一般) 0 月間有効求職者数(一般) 0 dtype: int64 外れ値を含む行数: 239

④ 検定・推定の最小例(scipy.stats)

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1303(65歳以上人口) A1101(総人口) Prefecture(都道府県) 北海道 1,681,000 5,092,000 北海道 東京都 3,205,000 14,086,000 東京都 沖縄県 350,000 1,468,000 沖縄県 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import pandas as pd
from scipy import stats

# 調査データ 文脈での基本的な仮説検定
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)
# 見出しの下に地域コード以外の行が混ざるので、47 都道府県だけ残して数値に直す
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')

df['aging']  = df['65歳以上人口'] / df['総人口'] * 100
df['region'] = df['都道府県'].apply(lambda p: '東日本' if p in ['北海道','青森県','岩手県','宮城県','秋田県','山形県','福島県','茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県','新潟県','富山県','石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県'] else '西日本')

east = df.loc[df['region']=='東日本', 'aging']
west = df.loc[df['region']=='西日本', 'aging']

t, p = stats.ttest_ind(east, west, equal_var=False)
print(f'東日本 平均高齢化率: {east.mean():.2f}%')
print(f'西日本 平均高齢化率: {west.mean():.2f}%')
print(f't = {t:.3f}, p = {p:.4f}')
print('判定:', '有意差あり' if p < 0.05 else '有意差なし')
📤 実行例(実測) 東日本 平均高齢化率: 28.82% 西日本 平均高齢化率: 29.64% t = -2.807, p = 0.0052 判定: 有意差あり

※ より高度な例(クロス集計、 機械学習、 ベイズ推定)は data-types のグループ教材を参照。

🐍 Python での扱い

SSDSE-B-2026 のような公的統計データを Python で扱う際の基本パターン:

📥 入力例(SSDSE-B-2026 全体:564 行 × 112 列 = 47 都道府県 × 2012〜2023 年) 年度 地域コード 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) … 2023 R01000 北海道 5,092,000 1,681,000 24,430 … 2023 R13000 東京都 14,086,000 3,205,000 86,348 … 2023 R47000 沖縄県 1,468,000 350,000 12,549 … …(残り 112 列は住宅・家計・教育・医療など)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pandas as pd
import numpy as np

# データ読み込み
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
print(df.shape)
print(df.dtypes)
print(df.describe())

# 「調査データ」の文脈で扱う場合の例:
# 分野: リテラシー
# 関連手法は同カテゴリの他用語を参照してください。
📤 実行例(実測) (564, 112) SSDSE-B-2026 int64 Code object Prefecture object A1101 int64 A110101 int64 ... L322106 int64 L322107 int64 L322108 int64 L322109 int64 L322110 int64 Length: 112, dtype: object SSDSE-B-2026 A1101 ... L322109 L322110 count 564.000000 5.640000e+02 ... 564.000000 564.000000 mean 2017.500000 2.690688e+06 ... 26931.026596 59784.718085 std 3.455117 2.730951e+06 ... 4219.487086 8813.812956 min 2012.000000 5.370000e+05 ... 14661.000000 35658.000000 25% 2014.750000 1.082250e+06 ... 24200.750000 53794.500000 50% …(以下略)

具体的なコードは データリテラシー を参照してください。

📝 レポートでの報告

分析結果を報告するときに含めるべき情報:

✅ チェックリスト

🔗 同カテゴリの他用語

データリテラシービッグデータIoTデータ駆動型社会Society 5.0データ利活用1次データ2次データオープンデータデータのメタ化ドメイン知識データ解析サイクルデータストーリーテリング実験データ

🐍 Python 実装 1:SSDSE-B-2026 の都道府県データに標本誤差を付与してみる

🎯 このコードでやること:SSDSE-B-2026 を「悉皆データ」として扱いつつ、 仮に標本調査だったら標本誤差がどれくらい付くかを計算する。 pandasscipy.stats を併用。

📥 入力例

SSDSE-B-2026(2023 年、 47 都道府県) Prefecture A1101 (人口) 北海道 5,092,000 東京都 14,086,000 鳥取県 537,000 全国合計 124,353,000
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import pandas as pd
from scipy import stats

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
latest = df[df['SSDSE-B-2026'] == df['SSDSE-B-2026'].max()]

# 都道府県別人口の記述統計(悉皆データ)
pop = latest['A1101']
print(f'47 都道府県の人口(悉皆)')
print(f'  平均: {pop.mean():,.0f} 人')
print(f'  標準偏差: {pop.std():,.0f}')
print(f'  合計: {pop.sum():,.0f} 人(国勢調査ベース)')

# もし「47 都道府県のうち 10 県だけサンプリングしたら?」
sample = pop.sample(10, random_state=42)
se = sample.std(ddof=1) / (len(sample) ** 0.5)

# 有限母集団修正 (FPC)
N, n = 47, 10
fpc = ((N - n) / (N - 1)) ** 0.5
se_fpc = se * fpc

print(f'10 県サンプル平均: {sample.mean():,.0f} 人')
print(f'標本誤差 SE: {se:,.0f}')
print(f'FPC = {fpc:.4f}')
print(f'FPC 補正後 SE: {se_fpc:,.0f}')
print(f'95% CI: [{sample.mean()-1.96*se_fpc:,.0f}, {sample.mean()+1.96*se_fpc:,.0f}]')

📤 実行例

47 都道府県の人口(悉皆) 平均: 2,645,809 人 標準偏差: 2,797,551 合計: 124,353,000 人(国勢調査ベース) 10 県サンプル平均: 4,220,400 人 標本誤差 SE: 1,363,335 FPC = 0.8969 FPC 補正後 SE: 1,222,713 95% CI: [1,823,883, 6,616,917]

💬 結果の読み方:悉皆データの真の平均は 2,645,809 人。 10 県サンプルでは 4,220,400 人(過大推定)、 95% CI [1,823,883, 6,616,917] と非常に広い。 サンプリングしないと精度は出ない。 政府がわざわざ全 47 都道府県を悉皆で集める理由がここにある。

🐍 Python 実装 2:層化抽出と重み付き集計

🎯 このコードでやること:47 都道府県を「3 大都市圏/地方」に層化し、 層別重みで集計する。 単純平均との差を可視化。

📥 入力例

SSDSE-B-2026 の Prefecture 列を「3 大都市圏」と「地方」に層化 3 大都市圏:東京・神奈川・千葉・埼玉・大阪・京都・兵庫・愛知・三重・岐阜 地方:上記以外の 37 都道府県
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
latest = df[df['SSDSE-B-2026'] == df['SSDSE-B-2026'].max()]

# 層化:3 大都市圏 vs 地方
metro = ['東京都', '神奈川県', '千葉県', '埼玉県', '大阪府',
         '京都府', '兵庫県', '愛知県', '三重県', '岐阜県']
latest.loc[:, 'stratum'] = latest['Prefecture'].apply(
    lambda p: '都市圏' if p in metro else '地方')

# 層別の人口・件数
summary = latest.groupby('stratum').agg(prefs=('Prefecture', 'count'),
                                       pop_sum=('A1101', 'sum'),
                                       pop_mean=('A1101', 'mean'))
print(summary)

# 単純平均(県を 1 票として平等)
simple_mean = latest['A1101'].mean()

# 人口加重平均(人を 1 票として)
weighted = (latest['A1101'] * latest['A1101']).sum() / latest['A1101'].sum()

print(f'単純平均(県単位): {simple_mean:,.0f} 人/県')
print(f'人口加重平均: {weighted:,.0f} 人')

📤 実行例

prefs pop_sum pop_mean stratum 地方 37 59647000 1612081 都市圏 10 64706000 6470600 単純平均(県単位): 2,645,809 人/県 人口加重平均: 5,540,870 人

💬 結果の読み方:3 大都市圏 10 県だけで全国人口の 52% を占める(64,706,000/124,353,000)。 単純平均だと「県の平均人口は 264 万人」だが、 人口加重平均では「平均的な日本人が住む県の人口は 554 万人」と倍以上の差。 同じデータでも 「県を 1 単位とするか/人を 1 単位とするか」で結論が変わる典型例。 調査データの読み方では集計単位の明示が必須。

🐍 Python 実装 3:比率の信頼区間(世論調査の典型計算)

🎯 このコードでやること:世論調査で「内閣支持率 45%、 サンプル数 1,200」のとき、 95% 信頼区間を Wilson 法で計算する。

📥 入力例

調査対象: 全国 18 歳以上 回答数: 1,200 「内閣を支持する」と回答: 540 人(45.0%)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from statsmodels.stats.proportion import proportion_confint

n = 1200
success = 540
p_hat = success / n

# Wilson 法(小標本・極端比率に強い)
low, up = proportion_confint(success, n, alpha=0.05, method='wilson')
print(f'支持率: {p_hat*100:.1f}%')
print(f'95% CI (Wilson): [{low*100:.1f}%, {up*100:.1f}%]')

# 正規近似版(広く使われるが、 比率が極端だと不正確)
low2, up2 = proportion_confint(success, n, alpha=0.05, method='normal')
print(f'95% CI (正規近似): [{low2*100:.1f}%, {up2*100:.1f}%]')

# 「支持率 50% 前後では n=1200 で ±2.8%」が世論調査の経験則
margin = 1.96 * ((p_hat * (1 - p_hat)) / n) ** 0.5
print(f'マージン: ±{margin*100:.2f}%')

📤 実行例

支持率: 45.0% 95% CI (Wilson): [42.2%, 47.8%] 95% CI (正規近似): [42.2%, 47.8%] マージン: ±2.81%

💬 結果の読み方:n=1,200 での 95% CI は [42.2%, 47.8%]。 「先月 47%、 今月 45%」のような変化は CI が重なるので「有意な変化ではない」と判断するのが統計的に正しい。 メディアが「支持率急落!」と報じても、 標本誤差を考慮すると有意でないことが多い。 世論調査結果は 必ず標本誤差と一緒に読むこと。

🐍 Python 実装 4:非回答バイアスのシミュレーション

🎯 このコードでやること:SSDSE-B-2026 を母集団とし、 「高齢者ほど回答する」という仮想の回答パターンを想定して、 単純集計と重み付け補正の差を見る。

📥 入力例

SSDSE-B-2026 の年齢別人口(仮想層化) A1302: 15-64 歳人口 A1303: 65 歳以上人口
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
latest = df[df['SSDSE-B-2026'] == df['SSDSE-B-2026'].max()]

# 母集団:全国の生産年齢人口と高齢人口
N_work = latest['A1302'].sum()   # 15-64 歳
N_old  = latest['A1303'].sum()   # 65+

# 仮想:内閣支持率は生産年齢 40%, 高齢者 60%
true_support_work = 0.40
true_support_old  = 0.60
true_overall = (N_work * true_support_work + N_old * true_support_old) / (N_work + N_old)

# 回答率:生産年齢 20%, 高齢者 60%(高齢者が答えやすい)
resp_work = 0.20
resp_old  = 0.60

# 回答者数(n=2000 配布したと仮定)
n_target = 2000
share_work = N_work / (N_work + N_old)
sent_work = n_target * share_work
sent_old  = n_target * (1 - share_work)
resp_w = sent_work * resp_work
resp_o = sent_old * resp_old

# 単純集計(バイアスあり)
naive_support = (resp_w*true_support_work + resp_o*true_support_old) / (resp_w + resp_o)

# 重み付け補正(事後層別)
w_work = (N_work / (N_work+N_old)) / (resp_w / (resp_w+resp_o))
w_old  = (N_old  / (N_work+N_old)) / (resp_o / (resp_w+resp_o))
adj_support = (w_work*resp_w*true_support_work + w_old*resp_o*true_support_old) \
              / (w_work*resp_w + w_old*resp_o)

print(f'真の支持率: {true_overall*100:.1f}%')
print(f'単純集計(バイアスあり): {naive_support*100:.1f}%')
print(f'重み付け補正後: {adj_support*100:.1f}%')

📤 実行例

真の支持率: 46.6% 単純集計(バイアスあり): 51.9% 重み付け補正後: 46.6%

💬 結果の読み方:高齢者が答えやすい状況で単純集計すると真値より +5.3 ポイントも過大評価される。 事後層別重み付けで補正すれば真値に一致する。 これが 非回答バイアス (non-response bias)。 NHK や朝日の世論調査では、 性年代別の母集団分布を回答者構成で割って重みを作り、 公表値はすべて補正済み。 ただし「回答した高齢者と回答しなかった高齢者でも意見が違う」場合は重み補正でも消せないので、 高い回答率(最低 60% 程度)が望ましい。

⚠️ よくある落とし穴(7 件)

調査データ に取り組むときに、 学生・実務者・研究者がよく踏むワナをまとめました。 該当しそうな項目があれば、 自分の分析を見直してみてください。

❌ 1. 単位とスケールの混同
%・件数・千人・百万円 — 単位を明示せずに比較すると、 まったく違うものを比べてしまう。 グラフの軸ラベル、 表のヘッダで単位を必ず示す。
❌ 2. 時点のズレ
2020 年と 2023 年のデータを混ぜると、 コロナ前後の構造変化を見落とす。 「2023年データ」と明記し、 横断データなら時点を統一する。
❌ 3. 欠損値の暗黙除去
NaN を含む行を dropna() で除いた瞬間、 47県の標本が 30 県に減ることもある。 何件落としたか必ず記録し、 結果に与える影響を考える。
❌ 4. 外れ値の無視と過剰除去
東京・大阪・沖縄など特徴ある県は『外れ値』扱いされがちだが、 実は本質的な情報を含む。 IQR で機械的に切るのではなく、 ドメイン知識で判断。
❌ 5. 相関と因果の混同
2 変数が相関していても、 一方が他方の原因とは限らない。 共通の交絡因子(人口、 産業構造、 気候)を疑う。 因果には RCT・差の差・操作変数法など別の道具が必要。
❌ 6. 有意性と効果量の混同
p < 0.05 は『偶然では説明しにくい』だけで『効果が大きい』ではない。 効果量(Cohen's d、 オッズ比など)と信頼区間を必ず併記する。
❌ 7. サンプル数の都合主義
検出力分析をせず、 集めやすい量で打ち切ると、 第2種の過誤(実は差があるのに気付かない)を量産する。 事前に必要 n を計算しておく。

🧭 詳細解説 — 調査データ を一段深く掘り下げる

歴史的背景

調査データ(Survey Data)は、 データ種 分野における基本概念の 1 つとして発展してきました。 学術領域では 20 世紀後半に体系化が進み、 21 世紀のデータ駆動社会の中で「実務で使う知識」として急速に普及。 とくに 2010 年代後半以降、 ビッグデータ・IoT・AI の進展に伴い、 用語の意味・適用範囲が再定義されつつあります。

日本では総務省・経産省・内閣府の各種計画(Society 5.0、 デジタル田園都市国家構想、 統計改革基本計画)で繰り返し言及される基幹概念。 SSDSE(教育用標準データセット)も、 これらの教育普及を目的に整備されたデータです。

国際的な位置付け

OECD、 国連、 ISO、 IEC などの国際機関が、 調査データ に類する概念・標準を整備してきました。 たとえば:

日本の文脈での意味

調査データ を含むデータ分析の手法は、 日本では次の場面で使われています。 下の表は分野ごとの登場場面で、 この用語だけの話ではなくデータサイエンス全体の広がりを示します:

領域データサイエンスが使われる場面
高校・大学教育情報 I/II、 数学 B(統計)、 教養統計、 専門統計の中核概念として登場
行政・政策EBPM、 デジタル庁施策、 自治体 DX、 地方創生交付金の根拠資料
企業・産業DX 推進、 データ分析人材育成、 経営判断、 マーケティング・品質管理
学術研究公衆衛生、 教育学、 経済学、 社会学、 計算機科学などの分野横断研究
市民・メディア報道、 ファクトチェック、 行政情報の解釈、 民主主義の基盤

よく混同される概念

調査データ は、 隣接概念と混同されやすい用語の代表でもあります。 ここで違いを明確にしておきましょう:

混同される概念調査データ との違い
隣接する データ種 系の用語本ページの「🔗 関連用語」を参照。 並列カテゴリで対比すると明瞭
より広い上位概念data-types ページで包含関係を確認
類似名・別名英語名 (Survey Data) を正式表記として参照

学習・教材としての位置付け

本サイト(用語解説)は「ジャストインタイム型データサイエンス教育」のリソースです。 つまり、 論文・実務・授業で その用語に出会ったタイミングで必要最低限の説明を得る、 という使い方を想定しています。 調査データ もその一例。

体系的に学びたい場合は、 まずグループ教材(data-types)から始め、 そこから 調査データ のような個別用語にドリルダウンしていくのが効率的です。

参考文献・標準

⚠️ 追加の落とし穴 — 「調査データだからこそ」起こる 5 つの罠

本ページ上部の「よくある落とし穴」を補完する、 調査データ特有の罠をさらに 5 件挙げます。 これらは ML 系の教材ではあまり強調されませんが、 公的統計を扱うときには必ず意識すべきポイントです。

罠 1: 時系列の定義変更を見落とす

調査票や集計区分は数年ごとに見直されることがあり、 同じ列名でも年度によって意味が違うことがあります。 「2010 年と 2020 年の数値を単純比較したら、 実は 2015 年に分類が変わっていた」というのは公的統計分析でよくある失敗です。 出典 PDF の「調査の概要」や「変更点」セクションは必ず確認しましょう。

罠 2: 季節調整済値と原数値の取り違え

完全失業率や鉱工業生産指数などは「原数値」と「季節調整値」の 2 種類が公開されています。 月次の動きを論じるなら季節調整値、 年計や前年同月比なら原数値、 と使い分けが必要です。 取り違えると「失業が増えた/減った」の結論が逆になることもあります。

罠 3: 単位の桁を見落とす

「100 万円」「億円」「千円」が列によってバラバラだったり、 同じ調査内でも年度によって変わったりします。 数値が大き過ぎる/小さ過ぎると感じたら、 まず単位を疑うのが鉄則。 SSDSE のような集約データでも列ごとに単位が違うので、 必ずメタデータを確認してください。

罠 4: 標本ウェイトを無視した記述統計

標本調査の個票には抽出ウェイトがついていることが多く、 これを無視して単純平均を取ると母集団の特性を歪んで推定してしまいます。 個票を扱う際は weights 引数を取れる関数(numpy.average, statsmodels の WLS 等)を使うか、 ウェイトの意味を理解した上で集計しましょう。

罠 5: 「都道府県」を独立サンプル扱いする

SSDSE のような都道府県データでは n=47 ですが、 これは厳密には「ランダムサンプル」ではなく「日本という母集団そのもの」です。 ですから p 値を計算しても、 通常の標本論的解釈は当てはまりません。 「47 都道府県の全数を観察した上での記述」と捉えるのが本来正しい立場です。

🎯 調査設計の品質管理 — TSE フレームワークで誤差を分解する

公的統計や社会調査の世界では、 調査の品質を体系的に評価する枠組みとして TSE (Total Survey Error) モデルが広く使われています。 これは「最終的に分析者が手にする数値」に至るまでに、 どこでどんな誤差が混入するかを系統的に整理する考え方です。

TSE は誤差を大きく 表現誤差 (representation error)測定誤差 (measurement error) の 2 系統に分けます。 前者は「誰を観察するか」に関わる誤差、 後者は「観察した内容が正しいか」に関わる誤差です。 SSDSE-B-2026 のような集約データを使う場合、 すでに統計部局によってこれらの誤差が一定程度コントロールされていますが、 「ゼロではない」ことを忘れてはいけません。

表現誤差の典型

「カバレッジ誤差」は対象母集団と抽出枠の不一致から生じます。 たとえば 20 年前の住民票ベースで電話調査をすれば、 すでに転居した人や固定電話を持たない人が抜け落ちます。 「無回答誤差」は回答拒否や不在が原因で、 回答する人と回答しない人の特性が違うと、 集計値が偏ります。 「標本抽出誤差」は前述したように、 標本サイズに依存する確率的なズレです。

測定誤差の典型

「質問文の曖昧さ」「回答選択肢の不適切さ」「面接員効果」「社会的望ましさバイアス」など、 回答プロセスそのものに起因する誤差です。 たとえば「あなたは差別をしますか?」と直接聞けば、 多くの人が「しない」と答えるでしょうが、 これは真実とは限りません。 質問文のワーディング 1 つで、 集計結果が大きく変わる例は調査研究の歴史に数多くあります。

分析者がチェックすべきこと

公開データを使う側は、 これらの誤差源を「すでに統計部局が処理してくれている」と思いがちですが、 実際には残存誤差が必ずあります。 調査の「結果概要」「利用上の注意」セクションには、 回答率・標本誤差・系統誤差の評価結果が記載されているので、 分析前に必ず一読することが推奨されます。 ここを飛ばすと、 「数値だけ見て解釈を間違える」という典型的な失敗に陥ります。

💾 データ管理のベストプラクティス — 再現可能な分析のために

調査データを使った分析は、 数年後にレビューされたり、 別の研究者が追試したりする可能性があります。 そのときに「あれ、 どうやって作った数値だっけ?」とならないよう、 最初から再現性を意識した管理が必要です。

フォルダ構成の標準型

プロジェクトディレクトリは「data/raw/(生データ、 改変禁止)」「data/processed/(前処理後、 再生成可能)」「notebooks/(探索用)」「scripts/(再現用スクリプト)」「output/(最終成果物)」「README.md(プロジェクト全体の説明)」に分けるのが標準です。 この構成は Cookiecutter Data Science をはじめ多くのテンプレートが採用しています。

バージョン管理の対象

Git でバージョン管理すべきは「スクリプト・ノートブック・README・前処理パラメータ」です。 生データそのものは大きすぎることや、 ライセンス上 Git に乗せられないことが多いので、 取得元 URL や取得日時を README.md に記録するに留めます。 大きな処理済データは Git LFSDVC といったツールで別管理するのが一般的です。

前処理の不可逆性に注意

生データを直接編集して保存し直すと、 後から「あれ、 元はどうだったっけ?」と困ります。 必ず「読み込み → 前処理 → 別ファイルに保存」の流れにし、 生データはread-only属性をつけるか、 別ディレクトリに隔離するのが安全です。 SSDSE-B-2026 のように URL 経由で再ダウンロード可能なデータでも、 取得日時のスナップショットを残すことが推奨されます。

メタデータの管理

「列の意味」「単位」「観測期間」「欠損コードの意味」などのメタデータは、 別ファイル(data/metadata.yml など)に書き出しておくと再利用性が大きく上がります。 数年後に自分や他人が読み返したときに「これって人口? それとも世帯数?」と迷わなくて済みます。 FAIR 原則(Findable, Accessible, Interoperable, Reusable)にも沿った姿勢です。

🌍 国際比較の観点 — 調査統計の世界標準

日本の調査統計は世界的に見ても極めて質が高いことで知られていますが、 国際比較を行う際にはいくつかの注意点があります。 「同じ名前の指標」でも国によって定義が違うことがあるからです。

失業率の国際比較

日本の「完全失業率」(労働力調査)は ILO 基準にほぼ準拠していますが、 米国の Bureau of Labor Statistics の調査と比べると、 「就職活動の確認期間」「軍人の扱い」などで微妙な差があります。 OECD は加盟国のデータを国際標準に補正した上で公開しているので、 国際比較の際は OECD.StatOECD iLibrary 経由で取得するのが安全です。

GDP の比較における物価調整

名目 GDP は単純に為替で換算するだけだと、 各国の物価水準の違いが反映されません。 国際比較では「購買力平価 (PPP) 換算 GDP」を使うのが標準です。 IMF・世界銀行・OECD のいずれも PPP 版を公表しているので、 「日本の一人当たり GDP は何位か」を論じるときは必ず PPP 換算を確認しましょう。

人口動態の指標

「合計特殊出生率」「平均寿命」「乳児死亡率」などは国際的に定義がほぼ統一されているので、 単純比較がしやすい指標です。 国連人口部 (UN DESA)WHO が世界中の値を集約しています。 ただし、 国によっては届出制度の整備状況が異なるため、 数値の絶対水準よりも「同じ国の時系列推移」を見る方が信頼性が高いことがあります。

SSDSE と国際比較

SSDSE-B-2026 は日本国内の都道府県データに特化していますが、 これを国際比較に拡張するなら、 OECD Regional Database や Eurostat のリージョナル統計と組み合わせると、 「日本の県」と「ドイツの州」「フランスの地域圏」などを比較する分析が可能です。 ただし、 行政区分の定義(人口規模・面積)が国ごとに違うので、 比較の単位を慎重に揃える必要があります。

🤔 よくある誤解 Q&A — 「調査データ」をめぐる素朴な疑問

Q. 「公的統計だから信用できる」と考えてよい?

A. 信頼性の高さは概ね事実ですが、 「無条件に信用」は危険です。 統計法の下で厳密な手順を踏んでいる一方、 過去には毎月勤労統計問題のように、 調査手順の逸脱が大きく報道された事例もあります。 また、 調査設計そのものに時代遅れの部分があれば、 結果は現実を捉えきれません。 「数値の背景にあるプロセス」を理解した上で使うのが正しい姿勢です。

Q. ビッグデータがあれば調査データは不要?

A. むしろ補完関係です。 SNS ログや POS データは大量・即時性が魅力ですが、 「誰のデータか」が不明な自己選抜サンプルです。 一方、 調査データは標本設計に基づき母集団を代表できるという強みがあります。 たとえば「全国民の労働状態」を捉えるには、 やはり労働力調査のような正式な調査が必要で、 SNS データだけでは代替できません。

Q. n=47 (都道府県) は標本として小さすぎない?

A. 「標本」ではなく「日本という母集団そのもの」と捉えれば、 n=47 で十分です。 ただし、 通常の標準誤差や p 値を計算する場合は「47 という数」を意識した解釈が必要です。 また、 検定よりも記述統計(散布図や順位)の方が情報量が大きいこともあります。 統計検定にこだわらず、 視覚的に「県ごとの違い」を表現する方が、 むしろ生産的なケースが多いです。

Q. 調査データから機械学習モデルを作ってもよい?

A. 技術的には可能で、 実際多くの研究で行われています。 ただし、 調査データは観察データなので、 「予測精度の高いモデル」と「因果関係を捉えたモデル」は別物だと意識する必要があります。 たとえば「消費支出を予測するモデル」が高精度でも、 「どの政策を打てば消費支出が増えるか」には直接答えてくれません。 因果推論の枠組みと併用するか、 「予測課題か因果課題か」を最初に明確化することが重要です。

Q. 古い調査データはもう使えない?

A. 「最新性」が重要な分析(現状の把握、 政策判断)には適しませんが、 「時系列での変化」「歴史的検証」には不可欠です。 たとえば人口の長期トレンドを論じるには、 1920 年の国勢調査から始まる 100 年分のデータが必要です。 むしろ「古いから使えない」と切り捨てるのではなく、 「いつのデータを、 何の目的で使うのか」を意識して使い分けるのが正しい姿勢です。

📖 用語ミニ集 — 調査データ周辺の重要語を一気に確認

調査データを扱う場面では、 統計学・社会調査論・公的統計の専門用語が頻出します。 ここで主要な 15 語を簡潔に整理しておきます。 学習中に「あれ、 これ何だっけ?」となったときの早見表として活用してください。

これらの用語は、 公的統計のメタデータや学術論文を読む際に頻出します。 一度に覚える必要はありませんが、 出てくるたびに本欄に立ち戻って確認すると、 自然に身についていきます。

🎓 教育現場での活用 — 調査データを「学びの題材」にするコツ

調査データは「リアルだから学習教材として面白い」反面、 「リアルだから扱いが難しい」というジレンマがあります。 教員・指導者がこのデータを授業に組み込む際のコツを整理します。

最初は「縮約データ」から

初学者にいきなり国勢調査の個票(数千万行)を渡しても、 ファイルすら開けないのが現実です。 SSDSE-B-2026 のように「都道府県別 × 主要指標」に圧縮されたデータから始めるのが正解。 47 行なら Excel でも余裕で開けますし、 まずは数値そのものを「目で見る」体験が大事です。

「身近な仮説」から入る

「東京は人口が多いから GDP も大きいんじゃない?」「高齢化率の高い県は財政が苦しい?」など、 学生自身が日常感覚で抱いている仮説をスタート地点にすると、 学習意欲が一気に上がります。 教科書的な抽象例(「ある架空のデータで…」)よりも、 リアルな数値の方が圧倒的に「自分ごと」になります。

失敗を歓迎する

調査データは「綺麗な答え」が出にくいデータです。 「相関が思ったほど強くない」「外れ値が結論を変える」「単位を勘違いした」などの失敗は、 むしろ学習のチャンス。 「失敗から学ぶ」プロセスを大事にすると、 統計リテラシーが本質的に身につきます。 失敗を恐れて教師が完璧な題材ばかり用意すると、 かえって学生は「データは綺麗なもの」という誤解を抱きがちです。

レポートまでセットで設計する

「データを触る」だけで終わると、 学習効果が定着しません。 「都道府県の特徴を 1 枚のレポートにまとめる」「政策提言の根拠資料を作る」など、 アウトプットまでセットで設計すると、 学生は「何のために分析するのか」を考えながら手を動かすようになります。 本サイトの「やってみよう」ブロックも、 そうした観点から作成しています。

🧪 ケーススタディ — SSDSE-B-2026 で「人口減少と財政」の関係を読む

ここまで概念や設計を中心に説明してきましたが、 実際に SSDSE-B-2026 を題材にした分析の流れを具体的にイメージしてみましょう。 「人口減少が進む地域ほど財政が苦しい」という仮説を、 都道府県データで検証する一連のステップを追います。

ステップ 1: 仮説の明確化

「人口減少が進む地域ほど財政が苦しい」という命題は、 そのままでは曖昧です。 「人口減少」とは何の指標で測るのか(人口増減率? 高齢化率? 生産年齢人口比率?)、 「財政が苦しい」とは何で測るのか(地方債残高? 経常収支比率? 一人当たり地方税収?)を、 まず分析者が定義しなければなりません。 ただし SSDSE-B-2026 に収録されているのは総人口・出生数・消費支出などの基本指標が中心で、 財政の詳細指標は e-Stat の別統計と組み合わせて操作化する必要があります。

ステップ 2: データの確認

pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932') で読み込み、 df.head() で 5 行表示します。 SSDSE は最初の数行にメタデータ(列の日本語名・単位)が入っているので、 これを除外する処理が必要です。 また df.dtypes で型を確認し、 数値列が object 型になっていれば pd.to_numeric(errors='coerce') で変換します。

ステップ 3: 探索的可視化

前述のヒストグラム・箱ひげ図・散布図を 3 枚並べて、 「総人口(A1101)」「出生数(A4101)」「消費支出(L3221)」などの分布形を確認します。 多くの場合、 右に長い裾を持つ分布(東京・大阪が突出)になるので、 「対数変換した方が解析しやすそうだな」と気づきます。 ここで分布の異常を発見できるか否かが、 後のモデリングの成否を分けます。

ステップ 4: 相関の計算

「人口増減率 × 地方債残高(対歳出比)」のピアソン相関を scipy.stats.pearsonr で計算します。 ここで重要なのは、 「相関係数の値」だけでなく「散布図」もセットで見ること。 たとえ r=0.5 と中程度の相関でも、 外れ値 1 つで結論が変わることがあるからです。 また、 単純相関ではなく、 第三変数(高齢化率や面積など)を統制したパーシャル相関を見ることも検討します。

ステップ 5: 解釈と限界の明示

仮に「人口減少率と地方債比率に r=0.45 の正の相関」と出たとしても、 「だから人口減少が財政悪化を招く」と断言できないことを、 必ず明示します。 「逆因果(財政悪化が住みにくさを生み人口減少を加速)」「第三変数(産業構造の弱体化が両方を引き起こす)」の可能性が残るからです。 観察データから因果を主張するなら、 操作変数・差の差分法・回帰不連続デザインなどの追加の枠組みが必要であり、 SSDSE のような単年集計だけでは限界があることを正直に書きます。

ステップ 6: レポート化

分析の最後は、 「数値の羅列」ではなく「メッセージ」に変換することが大事です。 「47 都道府県の集計データを見ると、 人口減少率の高い県ほど地方債比率が高い傾向(r=0.45, n=47)が観察された。 ただしこれは観察データに基づく相関であり、 因果関係を結論するには追加の検証が必要である」というように、 何が分かって何が分かっていないかを明確に書きます。 こうした「謙虚さ」が、 専門家から信頼されるレポートの条件です。

⚠️ 落とし穴(調査データに固有の罠)

⚠️ 調査データ特有の回答バイアス 5 類型

調査データ (survey data) は「人が回答する」という性質上、 観測データとは別種のバイアスが入り込む。 SSDSE-B-2026 が依拠する政府統計 (国勢調査、 家計調査、 労働力調査) でも、 以下の 5 類型に対する補正が掛けられている。

類型発生機序SSDSE での該当例補正法
社会的望ましさバイアス「正しい」と思われる回答に寄る家計調査の喫煙・飲酒支出が過少報告税収統計との突合補正
非回答バイアス回答拒否者と回答者で属性が異なる単身高齢世帯の回答率低下層別ウエイト調整 (post-stratification)
想起バイアス過去の出来事を正確に思い出せない家計調査の月次支出回答家計簿実測法に切替
質問順効果前問が次問の回答を誘導満足度→具体的問題点の順で満足度低下ランダム化提示
標本抽出バイアスサンプリングフレームの偏り固定電話のみの世論調査が高齢層偏重RDD + 携帯併用、 web 補完

💡 観測データ (POS / センサーログ) ではこれらは原理的に発生しないが、 代わりに「測定機器の経年劣化」「ログ取得条件のサンプリング」など別系統のバイアスを抱える。 調査データと観測データのバイアス対比を理解しておくことが、 公式統計の正しい解釈の第一歩。

🎮 触って理解する — 標本誤差とバイアスを体感する

世論調査でおなじみの「支持率 ○○%、 誤差 ±△ ポイント」。 この 誤差の幅がどこから来るのかを、 実際にスライダーを動かして体感します。 母集団の 真の割合 $p$(例: 本当の支持率)に対して、 サンプルサイズ $n$ を変えると 95% 信頼区間の幅が変わります。 さらに 非標本誤差(無回答・質問文バイアス)を加えると、 $n$ をいくら増やしても真値からズレが消えないことも確かめられます。

数直線をタップ/ドラッグしても真の割合を変えられます。 計算式は 95%CI $= \hat{p} \pm 1.96\sqrt{\hat{p}(1-\hat{p})/n}$($\hat{p}$ は観測された割合=真値+バイアス)です。

← 標本誤差(偶然のバラツキ)を決める。 増やすほど誤差幅は 1/√n で縮む
← 系統的なズレ。 n を増やしても消えない(バイアスはサンプルサイズで打ち消せない)
0% 25% 50% 75% 100% 割合(%)— 数直線をタップ/ドラッグで真値を移動 真値 p 50% 推定 p̂ 50.0%(±3.1pt) ✔ 信頼区間は真値を含む
真の割合 p
50.0%
推定 p̂(=真値+バイアス)
50.0%
標本誤差(±ポイント)
±3.1
95% 信頼区間
46.9 – 53.1%

バイアス 0 のとき、 n を増やすと誤差幅(オレンジ)がぐんぐん縮みます。 バイアスを付けると、 推定(青)が真値(緑)からズレ、 n を最大にしても信頼区間が真値を外し続けることを確認してください。

🧭 直感:質問して集めたデータには「2種類の誤差」がある

調査データの誤差は大きく 標本誤差非標本誤差に分かれます。 標本誤差は「母集団の一部だけを見た」ことによる偶然のブレで、 上のオレンジの幅がそれ。 サンプルを増やせば $1/\sqrt{n}$ の速さで縮み、 悉皆調査(全員調査)では理論上ゼロになります。 一方 非標本誤差は「そもそも測り方が偏っている」ことによる系統的なズレで、 上の青いマーカーの移動がそれ。 n をいくら増やしても消えません。 精度(誤差幅の狭さ)と正確性(真値への近さ)は別物、 というのが調査データを読む最重要ポイントです。

⚠️ よくある落とし穴:標本誤差 vs 非標本誤差

🚀 発展:バイアスを減らす「重み付け・層化・調整」

非標本誤差は設計と後処理で軽減します。 層化抽出で年齢・地域ごとに一定数を確保し、 集計時に 事後層別重み $w_i = (N_h/N)/(n_h/n)$ で母集団構成に合わせます。 複数の周辺分布(年齢×性別×地域)に同時整合させる レーキング、 補助変数と整合させる キャリブレーション、 無回答項目を埋める 多重代入法などが実務の標準です。 ただし重み付けは「観測できた偏り」しか直せない点に注意——回答者に一切現れない層のズレ(=カバレッジ誤差)は重みでも救えません。 詳しくは 標本抽出標準誤差信頼区間母集団標本 の各ページも参照。

🔎 さらに深掘り — 調査データを読み解く追加ノート

本ページはすでに直感・落とし穴・発展を厚く扱っていますが、 補足として「見落とされやすい 3 つの角度」——非確率標本、 リッカート尺度の扱い、 混合モード——を追記します。 いずれも SSDSE-B-2026 が依拠する公的調査(家計調査・国勢調査など)の理解に直結する論点です。

🎨 直感(追記):調査データは「スープの味見」

調査データの発想は スープの味見に似ています。 鍋全部を飲まなくても、 スプーン一杯で全体の味が分かる——これが「標本から母集団を推測する」ということ。 ただし成立条件が 1 つあり、 飲む前によくかき混ぜること。 かき混ぜが 無作為抽出に対応し、 具が下に沈んだまま上澄みだけすくえば(=偏った抽出)、 一口の味は全体を代表しません。 調査は大きく ①質問設計(何をどう聞くか)→ ②標本抽出(誰に聞くか)→ ③回収(実際に何件戻ったか)の 3 工程で、 どの工程が崩れても「一口の味」が全体からズレます。 SSDSE-B-2026 の数値も、 元をたどればこの 3 工程を経た国勢調査・家計調査などの 公的調査由来であり、 集約後の綺麗な表の裏側にこのプロセスが隠れています。

⚠️ 落とし穴(追記・重要):ここは特に踏みやすい

上部の落とし穴群を補完する、 とりわけ実務で頻発する 4 点です。

📊 公的調査データの実測例(SSDSE-B-2026・2023 年・47 都道府県)
家計調査(=標本調査)由来の「二人以上世帯・月平均支出」を県単位で見ると、 消費支出 L3221 は 47 県平均 295,856 円、 標準偏差 24,144 円、 変動係数 8.2%(最小=愛媛 223,423 円/最大=埼玉 344,092 円)。 一方、 内訳の小項目である 教育費 L322108 は 47 県平均 9,577 円、 標準偏差 4,212 円、 変動係数 44.0%(最小=秋田 4,316 円/最大=東京 24,160 円)と、 相対的なバラツキが桁違いに大きくなります。 教育費の県差は「実際の地域差」に加え、 支出額が小さい項目ほど家計調査のサブサンプルで標本誤差が相対的に効きやすいことも一因です。 集約後の表を鵜呑みにせず「元は標本調査」という出自を思い出す好例です。

🚀 発展(追記):混合モード・質問設計の原則・誤差の全体設計

混合モード調査(mixed-mode survey)とは、 郵送・訪問・電話・Web など複数の回収方法を組み合わせる設計です。 回収率とカバレッジを底上げできる反面、 同じ質問でもモードによって回答が変わる モード効果(例:面接だと社会的望ましさバイアスが強まる、 Web だと中間選択肢が選ばれやすい)が混入します。 近年の公的統計・世論調査は Web 併用へ移行が進んでおり、 時系列比較のときに「モードが変わった年」を確認することが必須になっています。

質問設計の原則も発展的に押さえておきましょう。 ①ダブルバーレル質問を避ける(「価格とデザインに満足ですか」は 2 つの問いを 1 問に混ぜており回答不能)、 ②誘導語・感情語を避け中立に(「無駄な支出を減らすべきか」ではなく「支出をどう評価するか」)、 ③選択肢を網羅的かつ排他的に、 ④尺度の点数(4 件法 vs 5 件法、 中立選択肢の有無)を目的に応じて決める、 ⑤本調査前にパイロット調査で誤解を洗い出す。 これらは前ページで触れた順序効果・ワーディング効果を「設計段階で潰す」ための実務原則です。

最後に、 これらすべてを俯瞰する枠組みが本ページ上部でも触れた Total Survey Error(TSE)です。 標本誤差・カバレッジ誤差・非回答誤差・測定誤差・処理誤差という 5 系統を、 「どこにコストをかければ全体の誤差が最小になるか」という 予算配分の問題として捉え直すのが TSE の実践的な使い方。 例えば「n を倍増して標本誤差を縮める」より「無回答フォローアップに投資して非回答バイアスを減らす」方が、 全体誤差の削減に効くことは珍しくありません。 精度(狭さ)と正確性(真値への近さ)を分けて考える——調査データを読む姿勢の総まとめです。

🔗 関連ページ(追記)

本節で触れた論点を掘り下げるための、 用語集内の実在ページです:

標本抽出選択バイアス順序尺度間隔尺度尺度水準信頼区間標準誤差標本サイズ欠損メカニズム2次データ

※ 質問票設計(questionnaire)の専用ページは用語集内に未整備のため、 本節の「質問設計の原則」を暫定的な参照先とします。

🗺 概念マップ:調査データを中心とした関連概念のツリー

調査データ (survey data) ├── 調査主体 │ ├── 公的統計(国・自治体) — SSDSE-B-2026 のソース │ ├── 民間調査会社(マクロミル、 楽天インサイト等) │ └── 学術調査(JGSS、 SSP、 KHPS 等) ├── 調査方法 │ ├── 訪問面接調査 │ ├── 郵送調査 │ ├── 電話調査(固定 / RDD) │ ├── オンライン調査(インターネット) │ └── 自記式調査 ├── サンプリング │ ├── 悉皆 (国勢調査) │ ├── 単純無作為 │ ├── 層化抽出 │ ├── 多段抽出 │ └── 割当抽出(非確率) └── 誤差源(Total Survey Error) ├── 標本誤差 ├── カバレッジ誤差 ├── 非回答誤差 ├── 測定誤差 └── 処理誤差
survey data 標本設計 事後層別 レーキング キャリブレーション 欠測値補完 小地域推定 SAE

🔗 隣接手法への橋渡し

調査データ (survey data) は「サンプリングを通じて母集団の特性を推定するために収集されたデータ」。 SSDSE-A (家計調査) は無作為抽出された世帯の調査データで、 SSDSE-B-2026 (都道府県別基本指標) は調査ではなく既存統計の集約。 調査データには無回答 / 標本誤差 / 回答バイアスの 3 つの不確実性が常につきまとう。

調査データは「真の値 + 標本誤差 + 非標本誤差 (回答バイアス・カバレッジ誤差)」の合成。 SSDSE-B-2026 のような集約済みデータは元の調査誤差が見えなくなるので、 出典統計の調査設計を確認する習慣をつける。

🌳 手法選択フロー

調査データを分析する際のサンプリング設計と分析手法の選択フロー。

  1. ① サンプリング方式は? 単純無作為 → そのまま推定。 層化抽出 (都道府県別配分) → 層別重み付け。 多段抽出 (市区町村→世帯) → 集計クラスタ SE 補正。 SSDSE-A は層化多段抽出。
  2. ② 無回答率は? < 10% → 完全データ補完 (平均/回帰補完)、 10〜30% → 多重補完 (MICE)、 > 30% → 結果の頑健性をセンシティビティ分析で確認。
  3. ③ 推定 vs 検定? 母平均・割合 → 重み付き平均 + 信頼区間 (Taylor 線形化 SE)。 群間比較 → 重み付き t 検定 (survey パッケージ)。 因果効果 → 傾向スコア + IPW。

SSDSE-B-2026 を「調査データ」として扱う場合、 元の調査 (国勢調査・経済センサス等) のサンプリング設計を参照し、 47 都道府県の値が母集団推定値か全数値かを区別する。